@hasna/connectors 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 (1269) hide show
  1. package/README.md +304 -0
  2. package/bin/index.js +5281 -0
  3. package/connectors/connect-anthropic/.env.example +4 -0
  4. package/connectors/connect-anthropic/.npmrc.example +2 -0
  5. package/connectors/connect-anthropic/AGENTS.md +97 -0
  6. package/connectors/connect-anthropic/CLAUDE.md +97 -0
  7. package/connectors/connect-anthropic/GEMINI.md +97 -0
  8. package/connectors/connect-anthropic/README.md +106 -0
  9. package/connectors/connect-anthropic/package.json +60 -0
  10. package/connectors/connect-anthropic/src/api/client.ts +122 -0
  11. package/connectors/connect-anthropic/src/api/index.ts +51 -0
  12. package/connectors/connect-anthropic/src/api/messages.ts +109 -0
  13. package/connectors/connect-anthropic/src/cli/index.ts +336 -0
  14. package/connectors/connect-anthropic/src/index.ts +24 -0
  15. package/connectors/connect-anthropic/src/types/index.ts +198 -0
  16. package/connectors/connect-anthropic/src/utils/config.ts +208 -0
  17. package/connectors/connect-anthropic/src/utils/output.ts +119 -0
  18. package/connectors/connect-anthropic/tsconfig.json +16 -0
  19. package/connectors/connect-aws/.env.example +11 -0
  20. package/connectors/connect-aws/.npmrc.example +2 -0
  21. package/connectors/connect-aws/AGENTS.md +145 -0
  22. package/connectors/connect-aws/CLAUDE.md +145 -0
  23. package/connectors/connect-aws/GEMINI.md +145 -0
  24. package/connectors/connect-aws/README.md +131 -0
  25. package/connectors/connect-aws/package.json +51 -0
  26. package/connectors/connect-aws/src/api/client.ts +349 -0
  27. package/connectors/connect-aws/src/api/dynamodb.ts +542 -0
  28. package/connectors/connect-aws/src/api/index.ts +71 -0
  29. package/connectors/connect-aws/src/api/lambda.ts +326 -0
  30. package/connectors/connect-aws/src/api/s3.ts +305 -0
  31. package/connectors/connect-aws/src/cli/index.ts +614 -0
  32. package/connectors/connect-aws/src/index.ts +28 -0
  33. package/connectors/connect-aws/src/types/index.ts +276 -0
  34. package/connectors/connect-aws/src/utils/config.ts +230 -0
  35. package/connectors/connect-aws/src/utils/output.ts +119 -0
  36. package/connectors/connect-aws/tsconfig.json +16 -0
  37. package/connectors/connect-brandsight/.env.example +8 -0
  38. package/connectors/connect-brandsight/.npmrc.example +2 -0
  39. package/connectors/connect-brandsight/AGENTS.md +128 -0
  40. package/connectors/connect-brandsight/CLAUDE.md +128 -0
  41. package/connectors/connect-brandsight/GEMINI.md +128 -0
  42. package/connectors/connect-brandsight/README.md +129 -0
  43. package/connectors/connect-brandsight/package.json +56 -0
  44. package/connectors/connect-brandsight/src/api/client.ts +171 -0
  45. package/connectors/connect-brandsight/src/api/domains.ts +387 -0
  46. package/connectors/connect-brandsight/src/api/example.ts +59 -0
  47. package/connectors/connect-brandsight/src/api/index.ts +50 -0
  48. package/connectors/connect-brandsight/src/cli/index.ts +775 -0
  49. package/connectors/connect-brandsight/src/index.ts +11 -0
  50. package/connectors/connect-brandsight/src/types/index.ts +197 -0
  51. package/connectors/connect-brandsight/src/utils/config.ts +244 -0
  52. package/connectors/connect-brandsight/src/utils/contacts.ts +204 -0
  53. package/connectors/connect-brandsight/src/utils/output.ts +119 -0
  54. package/connectors/connect-brandsight/tsconfig.json +29 -0
  55. package/connectors/connect-browseruse/.env.example +7 -0
  56. package/connectors/connect-browseruse/.npmrc.example +2 -0
  57. package/connectors/connect-browseruse/AGENTS.md +172 -0
  58. package/connectors/connect-browseruse/CLAUDE.md +172 -0
  59. package/connectors/connect-browseruse/GEMINI.md +172 -0
  60. package/connectors/connect-browseruse/README.md +153 -0
  61. package/connectors/connect-browseruse/package.json +52 -0
  62. package/connectors/connect-browseruse/src/api/billing.ts +32 -0
  63. package/connectors/connect-browseruse/src/api/browsers.ts +50 -0
  64. package/connectors/connect-browseruse/src/api/client.ts +168 -0
  65. package/connectors/connect-browseruse/src/api/files.ts +70 -0
  66. package/connectors/connect-browseruse/src/api/index.ts +95 -0
  67. package/connectors/connect-browseruse/src/api/profiles.ts +59 -0
  68. package/connectors/connect-browseruse/src/api/sessions.ts +88 -0
  69. package/connectors/connect-browseruse/src/api/skills.ts +194 -0
  70. package/connectors/connect-browseruse/src/api/tasks.ts +127 -0
  71. package/connectors/connect-browseruse/src/cli/index.ts +888 -0
  72. package/connectors/connect-browseruse/src/index.ts +35 -0
  73. package/connectors/connect-browseruse/src/types/index.ts +312 -0
  74. package/connectors/connect-browseruse/src/utils/config.ts +212 -0
  75. package/connectors/connect-browseruse/src/utils/output.ts +119 -0
  76. package/connectors/connect-browseruse/tsconfig.json +16 -0
  77. package/connectors/connect-cloudflare/.env.example +10 -0
  78. package/connectors/connect-cloudflare/.npmrc.example +2 -0
  79. package/connectors/connect-cloudflare/AGENTS.md +84 -0
  80. package/connectors/connect-cloudflare/CLAUDE.md +84 -0
  81. package/connectors/connect-cloudflare/GEMINI.md +84 -0
  82. package/connectors/connect-cloudflare/README.md +94 -0
  83. package/connectors/connect-cloudflare/package.json +59 -0
  84. package/connectors/connect-cloudflare/scripts/init.sh +62 -0
  85. package/connectors/connect-cloudflare/src/api/accounts.ts +352 -0
  86. package/connectors/connect-cloudflare/src/api/analytics.ts +638 -0
  87. package/connectors/connect-cloudflare/src/api/bulk.ts +1104 -0
  88. package/connectors/connect-cloudflare/src/api/cache.ts +192 -0
  89. package/connectors/connect-cloudflare/src/api/client.ts +201 -0
  90. package/connectors/connect-cloudflare/src/api/dns.ts +109 -0
  91. package/connectors/connect-cloudflare/src/api/firewall.ts +405 -0
  92. package/connectors/connect-cloudflare/src/api/index.ts +150 -0
  93. package/connectors/connect-cloudflare/src/api/kv.ts +171 -0
  94. package/connectors/connect-cloudflare/src/api/pages.ts +241 -0
  95. package/connectors/connect-cloudflare/src/api/r2.ts +270 -0
  96. package/connectors/connect-cloudflare/src/api/ssl.ts +416 -0
  97. package/connectors/connect-cloudflare/src/api/workers.ts +235 -0
  98. package/connectors/connect-cloudflare/src/api/zones.ts +121 -0
  99. package/connectors/connect-cloudflare/src/cli/index.ts +1644 -0
  100. package/connectors/connect-cloudflare/src/index.ts +21 -0
  101. package/connectors/connect-cloudflare/src/types/index.ts +754 -0
  102. package/connectors/connect-cloudflare/src/utils/config.ts +365 -0
  103. package/connectors/connect-cloudflare/src/utils/output.ts +119 -0
  104. package/connectors/connect-cloudflare/tsconfig.json +29 -0
  105. package/connectors/connect-discord/.env.example +9 -0
  106. package/connectors/connect-discord/.npmrc.example +2 -0
  107. package/connectors/connect-discord/AGENTS.md +187 -0
  108. package/connectors/connect-discord/CLAUDE.md +187 -0
  109. package/connectors/connect-discord/GEMINI.md +187 -0
  110. package/connectors/connect-discord/README.md +158 -0
  111. package/connectors/connect-discord/package.json +55 -0
  112. package/connectors/connect-discord/src/api/channels.ts +451 -0
  113. package/connectors/connect-discord/src/api/client.ts +147 -0
  114. package/connectors/connect-discord/src/api/commands.ts +212 -0
  115. package/connectors/connect-discord/src/api/gateway.ts +27 -0
  116. package/connectors/connect-discord/src/api/guilds.ts +434 -0
  117. package/connectors/connect-discord/src/api/index.ts +82 -0
  118. package/connectors/connect-discord/src/api/invites.ts +27 -0
  119. package/connectors/connect-discord/src/api/users.ts +66 -0
  120. package/connectors/connect-discord/src/api/webhooks.ts +188 -0
  121. package/connectors/connect-discord/src/cli/index.ts +788 -0
  122. package/connectors/connect-discord/src/index.ts +35 -0
  123. package/connectors/connect-discord/src/types/index.ts +545 -0
  124. package/connectors/connect-discord/src/utils/config.ts +219 -0
  125. package/connectors/connect-discord/src/utils/output.ts +119 -0
  126. package/connectors/connect-discord/tsconfig.json +16 -0
  127. package/connectors/connect-docker/.env.example +11 -0
  128. package/connectors/connect-docker/.npmrc.example +2 -0
  129. package/connectors/connect-docker/AGENTS.md +112 -0
  130. package/connectors/connect-docker/CLAUDE.md +112 -0
  131. package/connectors/connect-docker/GEMINI.md +112 -0
  132. package/connectors/connect-docker/README.md +97 -0
  133. package/connectors/connect-docker/package.json +57 -0
  134. package/connectors/connect-docker/src/api/client.ts +181 -0
  135. package/connectors/connect-docker/src/api/example.ts +79 -0
  136. package/connectors/connect-docker/src/api/index.ts +63 -0
  137. package/connectors/connect-docker/src/cli/index.ts +318 -0
  138. package/connectors/connect-docker/src/index.ts +30 -0
  139. package/connectors/connect-docker/src/types/index.ts +172 -0
  140. package/connectors/connect-docker/src/utils/config.ts +238 -0
  141. package/connectors/connect-docker/src/utils/output.ts +119 -0
  142. package/connectors/connect-docker/tsconfig.json +16 -0
  143. package/connectors/connect-e2b/.env.example +7 -0
  144. package/connectors/connect-e2b/.npmrc.example +2 -0
  145. package/connectors/connect-e2b/AGENTS.md +126 -0
  146. package/connectors/connect-e2b/CLAUDE.md +126 -0
  147. package/connectors/connect-e2b/GEMINI.md +126 -0
  148. package/connectors/connect-e2b/README.md +135 -0
  149. package/connectors/connect-e2b/package.json +51 -0
  150. package/connectors/connect-e2b/src/api/client.ts +150 -0
  151. package/connectors/connect-e2b/src/api/code.ts +188 -0
  152. package/connectors/connect-e2b/src/api/filesystem.ts +168 -0
  153. package/connectors/connect-e2b/src/api/index.ts +131 -0
  154. package/connectors/connect-e2b/src/api/sandbox.ts +91 -0
  155. package/connectors/connect-e2b/src/cli/index.ts +481 -0
  156. package/connectors/connect-e2b/src/index.ts +28 -0
  157. package/connectors/connect-e2b/src/types/index.ts +136 -0
  158. package/connectors/connect-e2b/src/utils/config.ts +231 -0
  159. package/connectors/connect-e2b/src/utils/output.ts +119 -0
  160. package/connectors/connect-e2b/tsconfig.json +16 -0
  161. package/connectors/connect-elevenlabs/.env.example +15 -0
  162. package/connectors/connect-elevenlabs/.npmrc.example +2 -0
  163. package/connectors/connect-elevenlabs/AGENTS.md +80 -0
  164. package/connectors/connect-elevenlabs/CLAUDE.md +80 -0
  165. package/connectors/connect-elevenlabs/GEMINI.md +80 -0
  166. package/connectors/connect-elevenlabs/README.md +98 -0
  167. package/connectors/connect-elevenlabs/package.json +57 -0
  168. package/connectors/connect-elevenlabs/src/api/client.ts +175 -0
  169. package/connectors/connect-elevenlabs/src/api/history.ts +103 -0
  170. package/connectors/connect-elevenlabs/src/api/index.ts +101 -0
  171. package/connectors/connect-elevenlabs/src/api/models.ts +49 -0
  172. package/connectors/connect-elevenlabs/src/api/sound-effects.ts +62 -0
  173. package/connectors/connect-elevenlabs/src/api/sts.ts +109 -0
  174. package/connectors/connect-elevenlabs/src/api/stt.ts +93 -0
  175. package/connectors/connect-elevenlabs/src/api/tts.ts +175 -0
  176. package/connectors/connect-elevenlabs/src/api/user.ts +43 -0
  177. package/connectors/connect-elevenlabs/src/api/voices.ts +169 -0
  178. package/connectors/connect-elevenlabs/src/cli/index.ts +739 -0
  179. package/connectors/connect-elevenlabs/src/index.ts +40 -0
  180. package/connectors/connect-elevenlabs/src/types/index.ts +432 -0
  181. package/connectors/connect-elevenlabs/src/utils/config.ts +242 -0
  182. package/connectors/connect-elevenlabs/src/utils/output.ts +119 -0
  183. package/connectors/connect-elevenlabs/tsconfig.json +16 -0
  184. package/connectors/connect-exa/.npmrc.example +2 -0
  185. package/connectors/connect-exa/AGENTS.md +76 -0
  186. package/connectors/connect-exa/CLAUDE.md +76 -0
  187. package/connectors/connect-exa/GEMINI.md +76 -0
  188. package/connectors/connect-exa/README.md +94 -0
  189. package/connectors/connect-exa/package.json +59 -0
  190. package/connectors/connect-exa/src/api/answer.ts +150 -0
  191. package/connectors/connect-exa/src/api/client.ts +171 -0
  192. package/connectors/connect-exa/src/api/contents.ts +150 -0
  193. package/connectors/connect-exa/src/api/context.ts +84 -0
  194. package/connectors/connect-exa/src/api/index.ts +77 -0
  195. package/connectors/connect-exa/src/api/research.ts +154 -0
  196. package/connectors/connect-exa/src/api/search.ts +153 -0
  197. package/connectors/connect-exa/src/api/similar.ts +138 -0
  198. package/connectors/connect-exa/src/api/team.ts +165 -0
  199. package/connectors/connect-exa/src/api/websets.ts +228 -0
  200. package/connectors/connect-exa/src/cli/index.ts +813 -0
  201. package/connectors/connect-exa/src/index.ts +32 -0
  202. package/connectors/connect-exa/src/types/index.ts +410 -0
  203. package/connectors/connect-exa/src/utils/config.ts +336 -0
  204. package/connectors/connect-exa/src/utils/output.ts +119 -0
  205. package/connectors/connect-exa/tsconfig.json +21 -0
  206. package/connectors/connect-figma/.npmrc.example +2 -0
  207. package/connectors/connect-figma/AGENTS.md +185 -0
  208. package/connectors/connect-figma/CLAUDE.md +185 -0
  209. package/connectors/connect-figma/GEMINI.md +185 -0
  210. package/connectors/connect-figma/README.md +164 -0
  211. package/connectors/connect-figma/package.json +50 -0
  212. package/connectors/connect-figma/src/api/client.ts +111 -0
  213. package/connectors/connect-figma/src/api/comments.ts +114 -0
  214. package/connectors/connect-figma/src/api/components.ts +82 -0
  215. package/connectors/connect-figma/src/api/devresources.ts +78 -0
  216. package/connectors/connect-figma/src/api/files.ts +132 -0
  217. package/connectors/connect-figma/src/api/index.ts +86 -0
  218. package/connectors/connect-figma/src/api/projects.ts +36 -0
  219. package/connectors/connect-figma/src/api/styles.ts +46 -0
  220. package/connectors/connect-figma/src/api/teams.ts +17 -0
  221. package/connectors/connect-figma/src/api/users.ts +16 -0
  222. package/connectors/connect-figma/src/api/variables.ts +73 -0
  223. package/connectors/connect-figma/src/api/webhooks.ts +97 -0
  224. package/connectors/connect-figma/src/cli/index.ts +960 -0
  225. package/connectors/connect-figma/src/index.ts +34 -0
  226. package/connectors/connect-figma/src/types/index.ts +593 -0
  227. package/connectors/connect-figma/src/utils/config.ts +197 -0
  228. package/connectors/connect-figma/src/utils/output.ts +119 -0
  229. package/connectors/connect-figma/tsconfig.json +16 -0
  230. package/connectors/connect-firecrawl/.env.example +7 -0
  231. package/connectors/connect-firecrawl/.npmrc.example +2 -0
  232. package/connectors/connect-firecrawl/AGENTS.md +104 -0
  233. package/connectors/connect-firecrawl/CLAUDE.md +104 -0
  234. package/connectors/connect-firecrawl/GEMINI.md +104 -0
  235. package/connectors/connect-firecrawl/README.md +95 -0
  236. package/connectors/connect-firecrawl/package.json +51 -0
  237. package/connectors/connect-firecrawl/src/api/client.ts +123 -0
  238. package/connectors/connect-firecrawl/src/api/crawl.ts +93 -0
  239. package/connectors/connect-firecrawl/src/api/index.ts +61 -0
  240. package/connectors/connect-firecrawl/src/api/map.ts +51 -0
  241. package/connectors/connect-firecrawl/src/api/scrape.ts +71 -0
  242. package/connectors/connect-firecrawl/src/api/search.ts +61 -0
  243. package/connectors/connect-firecrawl/src/cli/index.ts +432 -0
  244. package/connectors/connect-firecrawl/src/index.ts +24 -0
  245. package/connectors/connect-firecrawl/src/types/index.ts +216 -0
  246. package/connectors/connect-firecrawl/src/utils/config.ts +208 -0
  247. package/connectors/connect-firecrawl/src/utils/output.ts +119 -0
  248. package/connectors/connect-firecrawl/tsconfig.json +16 -0
  249. package/connectors/connect-github/.env.example +11 -0
  250. package/connectors/connect-github/.npmrc.example +2 -0
  251. package/connectors/connect-github/AGENTS.md +150 -0
  252. package/connectors/connect-github/CLAUDE.md +150 -0
  253. package/connectors/connect-github/GEMINI.md +150 -0
  254. package/connectors/connect-github/README.md +126 -0
  255. package/connectors/connect-github/package.json +49 -0
  256. package/connectors/connect-github/src/api/client.ts +137 -0
  257. package/connectors/connect-github/src/api/index.ts +62 -0
  258. package/connectors/connect-github/src/api/issues.ts +186 -0
  259. package/connectors/connect-github/src/api/pulls.ts +284 -0
  260. package/connectors/connect-github/src/api/repos.ts +155 -0
  261. package/connectors/connect-github/src/api/users.ts +139 -0
  262. package/connectors/connect-github/src/cli/index.ts +732 -0
  263. package/connectors/connect-github/src/index.ts +24 -0
  264. package/connectors/connect-github/src/types/index.ts +497 -0
  265. package/connectors/connect-github/src/utils/config.ts +208 -0
  266. package/connectors/connect-github/src/utils/output.ts +119 -0
  267. package/connectors/connect-github/tsconfig.json +16 -0
  268. package/connectors/connect-gmail/.env.example +8 -0
  269. package/connectors/connect-gmail/.npmrc.example +2 -0
  270. package/connectors/connect-gmail/AGENTS.md +79 -0
  271. package/connectors/connect-gmail/CLAUDE.md +79 -0
  272. package/connectors/connect-gmail/GEMINI.md +79 -0
  273. package/connectors/connect-gmail/README.md +97 -0
  274. package/connectors/connect-gmail/package.json +58 -0
  275. package/connectors/connect-gmail/src/api/attachments.ts +141 -0
  276. package/connectors/connect-gmail/src/api/bulk.ts +661 -0
  277. package/connectors/connect-gmail/src/api/client.ts +131 -0
  278. package/connectors/connect-gmail/src/api/drafts.ts +198 -0
  279. package/connectors/connect-gmail/src/api/export.ts +312 -0
  280. package/connectors/connect-gmail/src/api/filters.ts +127 -0
  281. package/connectors/connect-gmail/src/api/index.ts +63 -0
  282. package/connectors/connect-gmail/src/api/labels.ts +123 -0
  283. package/connectors/connect-gmail/src/api/messages.ts +527 -0
  284. package/connectors/connect-gmail/src/api/profile.ts +72 -0
  285. package/connectors/connect-gmail/src/api/threads.ts +85 -0
  286. package/connectors/connect-gmail/src/cli/index.ts +2143 -0
  287. package/connectors/connect-gmail/src/index.ts +30 -0
  288. package/connectors/connect-gmail/src/types/index.ts +202 -0
  289. package/connectors/connect-gmail/src/utils/auth.ts +247 -0
  290. package/connectors/connect-gmail/src/utils/config.ts +466 -0
  291. package/connectors/connect-gmail/src/utils/contacts.ts +147 -0
  292. package/connectors/connect-gmail/src/utils/markdown.ts +110 -0
  293. package/connectors/connect-gmail/src/utils/output.ts +119 -0
  294. package/connectors/connect-gmail/src/utils/settings.ts +87 -0
  295. package/connectors/connect-gmail/tsconfig.json +16 -0
  296. package/connectors/connect-google/.env.example +10 -0
  297. package/connectors/connect-google/.npmrc.example +2 -0
  298. package/connectors/connect-google/AGENTS.md +76 -0
  299. package/connectors/connect-google/CLAUDE.md +76 -0
  300. package/connectors/connect-google/GEMINI.md +76 -0
  301. package/connectors/connect-google/README.md +94 -0
  302. package/connectors/connect-google/package.json +60 -0
  303. package/connectors/connect-google/src/api/calendar.ts +339 -0
  304. package/connectors/connect-google/src/api/client.ts +201 -0
  305. package/connectors/connect-google/src/api/docs.ts +372 -0
  306. package/connectors/connect-google/src/api/drive.ts +370 -0
  307. package/connectors/connect-google/src/api/gmail.ts +338 -0
  308. package/connectors/connect-google/src/api/index.ts +66 -0
  309. package/connectors/connect-google/src/api/sheets.ts +343 -0
  310. package/connectors/connect-google/src/cli/index.ts +1232 -0
  311. package/connectors/connect-google/src/index.ts +27 -0
  312. package/connectors/connect-google/src/types/index.ts +1893 -0
  313. package/connectors/connect-google/src/utils/config.ts +248 -0
  314. package/connectors/connect-google/src/utils/output.ts +119 -0
  315. package/connectors/connect-google/tsconfig.json +21 -0
  316. package/connectors/connect-googlecalendar/.npmrc.example +2 -0
  317. package/connectors/connect-googlecalendar/AGENTS.md +117 -0
  318. package/connectors/connect-googlecalendar/CLAUDE.md +117 -0
  319. package/connectors/connect-googlecalendar/GEMINI.md +117 -0
  320. package/connectors/connect-googlecalendar/README.md +97 -0
  321. package/connectors/connect-googlecalendar/package.json +57 -0
  322. package/connectors/connect-googlecalendar/src/api/calendars.ts +106 -0
  323. package/connectors/connect-googlecalendar/src/api/client.ts +266 -0
  324. package/connectors/connect-googlecalendar/src/api/events.ts +266 -0
  325. package/connectors/connect-googlecalendar/src/api/index.ts +96 -0
  326. package/connectors/connect-googlecalendar/src/cli/index.ts +819 -0
  327. package/connectors/connect-googlecalendar/src/index.ts +30 -0
  328. package/connectors/connect-googlecalendar/src/types/index.ts +347 -0
  329. package/connectors/connect-googlecalendar/src/utils/config.ts +251 -0
  330. package/connectors/connect-googlecalendar/src/utils/output.ts +119 -0
  331. package/connectors/connect-googlecalendar/tsconfig.json +16 -0
  332. package/connectors/connect-googlecloud/.env.example +11 -0
  333. package/connectors/connect-googlecloud/.npmrc.example +2 -0
  334. package/connectors/connect-googlecloud/AGENTS.md +110 -0
  335. package/connectors/connect-googlecloud/CLAUDE.md +110 -0
  336. package/connectors/connect-googlecloud/GEMINI.md +110 -0
  337. package/connectors/connect-googlecloud/README.md +96 -0
  338. package/connectors/connect-googlecloud/package.json +56 -0
  339. package/connectors/connect-googlecloud/src/api/client.ts +208 -0
  340. package/connectors/connect-googlecloud/src/api/index.ts +53 -0
  341. package/connectors/connect-googlecloud/src/api/projects.ts +75 -0
  342. package/connectors/connect-googlecloud/src/cli/index.ts +305 -0
  343. package/connectors/connect-googlecloud/src/index.ts +28 -0
  344. package/connectors/connect-googlecloud/src/types/index.ts +100 -0
  345. package/connectors/connect-googlecloud/src/utils/config.ts +232 -0
  346. package/connectors/connect-googlecloud/src/utils/output.ts +119 -0
  347. package/connectors/connect-googlecloud/tsconfig.json +16 -0
  348. package/connectors/connect-googlecontacts/.npmrc.example +2 -0
  349. package/connectors/connect-googlecontacts/AGENTS.md +181 -0
  350. package/connectors/connect-googlecontacts/CLAUDE.md +181 -0
  351. package/connectors/connect-googlecontacts/GEMINI.md +181 -0
  352. package/connectors/connect-googlecontacts/README.md +117 -0
  353. package/connectors/connect-googlecontacts/package.json +56 -0
  354. package/connectors/connect-googlecontacts/src/api/client.ts +306 -0
  355. package/connectors/connect-googlecontacts/src/api/contacts.ts +236 -0
  356. package/connectors/connect-googlecontacts/src/api/index.ts +99 -0
  357. package/connectors/connect-googlecontacts/src/cli/index.ts +654 -0
  358. package/connectors/connect-googlecontacts/src/index.ts +34 -0
  359. package/connectors/connect-googlecontacts/src/types/index.ts +254 -0
  360. package/connectors/connect-googlecontacts/src/utils/config.ts +337 -0
  361. package/connectors/connect-googlecontacts/src/utils/output.ts +119 -0
  362. package/connectors/connect-googlecontacts/tsconfig.json +16 -0
  363. package/connectors/connect-googledocs/.env.example +11 -0
  364. package/connectors/connect-googledocs/.npmrc.example +2 -0
  365. package/connectors/connect-googledocs/AGENTS.md +130 -0
  366. package/connectors/connect-googledocs/CLAUDE.md +130 -0
  367. package/connectors/connect-googledocs/GEMINI.md +130 -0
  368. package/connectors/connect-googledocs/README.md +112 -0
  369. package/connectors/connect-googledocs/package.json +50 -0
  370. package/connectors/connect-googledocs/src/api/client.ts +159 -0
  371. package/connectors/connect-googledocs/src/api/content.ts +219 -0
  372. package/connectors/connect-googledocs/src/api/documents.ts +52 -0
  373. package/connectors/connect-googledocs/src/api/index.ts +65 -0
  374. package/connectors/connect-googledocs/src/api/styles.ts +386 -0
  375. package/connectors/connect-googledocs/src/cli/index.ts +364 -0
  376. package/connectors/connect-googledocs/src/index.ts +24 -0
  377. package/connectors/connect-googledocs/src/types/index.ts +767 -0
  378. package/connectors/connect-googledocs/src/utils/config.ts +208 -0
  379. package/connectors/connect-googledocs/src/utils/output.ts +119 -0
  380. package/connectors/connect-googledocs/tsconfig.json +16 -0
  381. package/connectors/connect-googledrive/.npmrc.example +2 -0
  382. package/connectors/connect-googledrive/AGENTS.md +76 -0
  383. package/connectors/connect-googledrive/CLAUDE.md +76 -0
  384. package/connectors/connect-googledrive/GEMINI.md +76 -0
  385. package/connectors/connect-googledrive/README.md +94 -0
  386. package/connectors/connect-googledrive/package.json +55 -0
  387. package/connectors/connect-googledrive/src/api/client.ts +216 -0
  388. package/connectors/connect-googledrive/src/api/drives.ts +186 -0
  389. package/connectors/connect-googledrive/src/api/files.ts +305 -0
  390. package/connectors/connect-googledrive/src/api/folders.ts +133 -0
  391. package/connectors/connect-googledrive/src/api/index.ts +47 -0
  392. package/connectors/connect-googledrive/src/api/storage.ts +48 -0
  393. package/connectors/connect-googledrive/src/api/trash.ts +47 -0
  394. package/connectors/connect-googledrive/src/cli/index.ts +933 -0
  395. package/connectors/connect-googledrive/src/index.ts +30 -0
  396. package/connectors/connect-googledrive/src/types/index.ts +378 -0
  397. package/connectors/connect-googledrive/src/utils/auth.ts +207 -0
  398. package/connectors/connect-googledrive/src/utils/config.ts +440 -0
  399. package/connectors/connect-googledrive/src/utils/output.ts +135 -0
  400. package/connectors/connect-googledrive/tsconfig.json +25 -0
  401. package/connectors/connect-googlegemini/.env.example +7 -0
  402. package/connectors/connect-googlegemini/.npmrc.example +2 -0
  403. package/connectors/connect-googlegemini/AGENTS.md +184 -0
  404. package/connectors/connect-googlegemini/CLAUDE.md +184 -0
  405. package/connectors/connect-googlegemini/GEMINI.md +184 -0
  406. package/connectors/connect-googlegemini/README.md +143 -0
  407. package/connectors/connect-googlegemini/package.json +55 -0
  408. package/connectors/connect-googlegemini/src/api/client.ts +219 -0
  409. package/connectors/connect-googlegemini/src/api/embeddings.ts +142 -0
  410. package/connectors/connect-googlegemini/src/api/files.ts +152 -0
  411. package/connectors/connect-googlegemini/src/api/generate.ts +187 -0
  412. package/connectors/connect-googlegemini/src/api/images.ts +216 -0
  413. package/connectors/connect-googlegemini/src/api/index.ts +103 -0
  414. package/connectors/connect-googlegemini/src/api/models.ts +102 -0
  415. package/connectors/connect-googlegemini/src/api/speech.ts +195 -0
  416. package/connectors/connect-googlegemini/src/api/video.ts +224 -0
  417. package/connectors/connect-googlegemini/src/cli/index.ts +702 -0
  418. package/connectors/connect-googlegemini/src/index.ts +34 -0
  419. package/connectors/connect-googlegemini/src/types/index.ts +324 -0
  420. package/connectors/connect-googlegemini/src/utils/config.ts +139 -0
  421. package/connectors/connect-googlegemini/src/utils/output.ts +169 -0
  422. package/connectors/connect-googlegemini/tsconfig.json +15 -0
  423. package/connectors/connect-googlemaps/.npmrc.example +2 -0
  424. package/connectors/connect-googlemaps/AGENTS.md +143 -0
  425. package/connectors/connect-googlemaps/CLAUDE.md +143 -0
  426. package/connectors/connect-googlemaps/GEMINI.md +143 -0
  427. package/connectors/connect-googlemaps/README.md +152 -0
  428. package/connectors/connect-googlemaps/package.json +29 -0
  429. package/connectors/connect-googlemaps/src/api/index.ts +315 -0
  430. package/connectors/connect-googlemaps/src/cli/index.ts +423 -0
  431. package/connectors/connect-googlemaps/src/index.ts +3 -0
  432. package/connectors/connect-googlemaps/src/types/index.ts +268 -0
  433. package/connectors/connect-googlemaps/src/utils/config.ts +59 -0
  434. package/connectors/connect-googlemaps/src/utils/output.ts +178 -0
  435. package/connectors/connect-googlemaps/tsconfig.json +17 -0
  436. package/connectors/connect-googlesheets/.env.example +15 -0
  437. package/connectors/connect-googlesheets/.npmrc.example +2 -0
  438. package/connectors/connect-googlesheets/AGENTS.md +144 -0
  439. package/connectors/connect-googlesheets/CLAUDE.md +144 -0
  440. package/connectors/connect-googlesheets/GEMINI.md +144 -0
  441. package/connectors/connect-googlesheets/README.md +124 -0
  442. package/connectors/connect-googlesheets/package.json +51 -0
  443. package/connectors/connect-googlesheets/src/api/client.ts +230 -0
  444. package/connectors/connect-googlesheets/src/api/index.ts +113 -0
  445. package/connectors/connect-googlesheets/src/api/sheets.ts +249 -0
  446. package/connectors/connect-googlesheets/src/api/spreadsheets.ts +150 -0
  447. package/connectors/connect-googlesheets/src/api/values.ts +209 -0
  448. package/connectors/connect-googlesheets/src/cli/index.ts +544 -0
  449. package/connectors/connect-googlesheets/src/index.ts +32 -0
  450. package/connectors/connect-googlesheets/src/types/index.ts +764 -0
  451. package/connectors/connect-googlesheets/src/utils/config.ts +289 -0
  452. package/connectors/connect-googlesheets/src/utils/output.ts +119 -0
  453. package/connectors/connect-googlesheets/tsconfig.json +16 -0
  454. package/connectors/connect-googletasks/.env.example +6 -0
  455. package/connectors/connect-googletasks/.npmrc.example +2 -0
  456. package/connectors/connect-googletasks/AGENTS.md +122 -0
  457. package/connectors/connect-googletasks/CLAUDE.md +122 -0
  458. package/connectors/connect-googletasks/GEMINI.md +122 -0
  459. package/connectors/connect-googletasks/README.md +131 -0
  460. package/connectors/connect-googletasks/package.json +50 -0
  461. package/connectors/connect-googletasks/src/api/index.ts +321 -0
  462. package/connectors/connect-googletasks/src/cli/index.ts +542 -0
  463. package/connectors/connect-googletasks/src/index.ts +42 -0
  464. package/connectors/connect-googletasks/src/types/index.ts +167 -0
  465. package/connectors/connect-googletasks/src/utils/config.ts +287 -0
  466. package/connectors/connect-googletasks/src/utils/output.ts +145 -0
  467. package/connectors/connect-googletasks/tsconfig.json +16 -0
  468. package/connectors/connect-hedra/.env.example +7 -0
  469. package/connectors/connect-hedra/.npmrc.example +2 -0
  470. package/connectors/connect-hedra/AGENTS.md +101 -0
  471. package/connectors/connect-hedra/CLAUDE.md +101 -0
  472. package/connectors/connect-hedra/GEMINI.md +101 -0
  473. package/connectors/connect-hedra/README.md +95 -0
  474. package/connectors/connect-hedra/package.json +57 -0
  475. package/connectors/connect-hedra/src/api/characters.ts +44 -0
  476. package/connectors/connect-hedra/src/api/client.ts +136 -0
  477. package/connectors/connect-hedra/src/api/index.ts +57 -0
  478. package/connectors/connect-hedra/src/api/projects.ts +44 -0
  479. package/connectors/connect-hedra/src/api/voices.ts +23 -0
  480. package/connectors/connect-hedra/src/cli/index.ts +314 -0
  481. package/connectors/connect-hedra/src/index.ts +24 -0
  482. package/connectors/connect-hedra/src/types/index.ts +103 -0
  483. package/connectors/connect-hedra/src/utils/config.ts +211 -0
  484. package/connectors/connect-hedra/src/utils/output.ts +119 -0
  485. package/connectors/connect-hedra/tsconfig.json +16 -0
  486. package/connectors/connect-heygen/.env.example +11 -0
  487. package/connectors/connect-heygen/.npmrc.example +2 -0
  488. package/connectors/connect-heygen/AGENTS.md +102 -0
  489. package/connectors/connect-heygen/CLAUDE.md +102 -0
  490. package/connectors/connect-heygen/GEMINI.md +102 -0
  491. package/connectors/connect-heygen/README.md +96 -0
  492. package/connectors/connect-heygen/package.json +57 -0
  493. package/connectors/connect-heygen/src/api/client.ts +134 -0
  494. package/connectors/connect-heygen/src/api/example.ts +48 -0
  495. package/connectors/connect-heygen/src/api/index.ts +49 -0
  496. package/connectors/connect-heygen/src/cli/index.ts +242 -0
  497. package/connectors/connect-heygen/src/index.ts +24 -0
  498. package/connectors/connect-heygen/src/types/index.ts +69 -0
  499. package/connectors/connect-heygen/src/utils/config.ts +209 -0
  500. package/connectors/connect-heygen/src/utils/output.ts +119 -0
  501. package/connectors/connect-heygen/tsconfig.json +16 -0
  502. package/connectors/connect-huggingface/.env.example +10 -0
  503. package/connectors/connect-huggingface/.npmrc.example +2 -0
  504. package/connectors/connect-huggingface/AGENTS.md +113 -0
  505. package/connectors/connect-huggingface/CLAUDE.md +113 -0
  506. package/connectors/connect-huggingface/GEMINI.md +113 -0
  507. package/connectors/connect-huggingface/README.md +97 -0
  508. package/connectors/connect-huggingface/package.json +57 -0
  509. package/connectors/connect-huggingface/src/api/client.ts +136 -0
  510. package/connectors/connect-huggingface/src/api/example.ts +48 -0
  511. package/connectors/connect-huggingface/src/api/index.ts +49 -0
  512. package/connectors/connect-huggingface/src/cli/index.ts +243 -0
  513. package/connectors/connect-huggingface/src/index.ts +24 -0
  514. package/connectors/connect-huggingface/src/types/index.ts +69 -0
  515. package/connectors/connect-huggingface/src/utils/config.ts +211 -0
  516. package/connectors/connect-huggingface/src/utils/output.ts +119 -0
  517. package/connectors/connect-huggingface/tsconfig.json +16 -0
  518. package/connectors/connect-icons8/.env.example +7 -0
  519. package/connectors/connect-icons8/.npmrc.example +2 -0
  520. package/connectors/connect-icons8/AGENTS.md +101 -0
  521. package/connectors/connect-icons8/CLAUDE.md +101 -0
  522. package/connectors/connect-icons8/GEMINI.md +101 -0
  523. package/connectors/connect-icons8/README.md +95 -0
  524. package/connectors/connect-icons8/package.json +55 -0
  525. package/connectors/connect-icons8/src/api/client.ts +137 -0
  526. package/connectors/connect-icons8/src/api/example.ts +64 -0
  527. package/connectors/connect-icons8/src/api/index.ts +48 -0
  528. package/connectors/connect-icons8/src/cli/index.ts +286 -0
  529. package/connectors/connect-icons8/src/index.ts +24 -0
  530. package/connectors/connect-icons8/src/types/index.ts +114 -0
  531. package/connectors/connect-icons8/src/utils/config.ts +211 -0
  532. package/connectors/connect-icons8/src/utils/output.ts +119 -0
  533. package/connectors/connect-icons8/tsconfig.json +16 -0
  534. package/connectors/connect-maropost/.env.example +13 -0
  535. package/connectors/connect-maropost/.npmrc.example +2 -0
  536. package/connectors/connect-maropost/AGENTS.md +110 -0
  537. package/connectors/connect-maropost/CLAUDE.md +110 -0
  538. package/connectors/connect-maropost/GEMINI.md +110 -0
  539. package/connectors/connect-maropost/README.md +96 -0
  540. package/connectors/connect-maropost/package.json +51 -0
  541. package/connectors/connect-maropost/src/api/campaigns.ts +129 -0
  542. package/connectors/connect-maropost/src/api/client.ts +162 -0
  543. package/connectors/connect-maropost/src/api/contacts.ts +128 -0
  544. package/connectors/connect-maropost/src/api/index.ts +91 -0
  545. package/connectors/connect-maropost/src/api/journeys.ts +60 -0
  546. package/connectors/connect-maropost/src/api/lists.ts +80 -0
  547. package/connectors/connect-maropost/src/api/reports.ts +123 -0
  548. package/connectors/connect-maropost/src/api/transactional.ts +109 -0
  549. package/connectors/connect-maropost/src/cli/index.ts +958 -0
  550. package/connectors/connect-maropost/src/index.ts +33 -0
  551. package/connectors/connect-maropost/src/types/index.ts +340 -0
  552. package/connectors/connect-maropost/src/utils/config.ts +213 -0
  553. package/connectors/connect-maropost/src/utils/output.ts +119 -0
  554. package/connectors/connect-maropost/tsconfig.json +16 -0
  555. package/connectors/connect-mercury/.env.example +5 -0
  556. package/connectors/connect-mercury/.npmrc.example +2 -0
  557. package/connectors/connect-mercury/AGENTS.md +137 -0
  558. package/connectors/connect-mercury/CLAUDE.md +137 -0
  559. package/connectors/connect-mercury/GEMINI.md +137 -0
  560. package/connectors/connect-mercury/README.md +146 -0
  561. package/connectors/connect-mercury/package.json +60 -0
  562. package/connectors/connect-mercury/src/api/accounts.ts +79 -0
  563. package/connectors/connect-mercury/src/api/attachments.ts +24 -0
  564. package/connectors/connect-mercury/src/api/categories.ts +40 -0
  565. package/connectors/connect-mercury/src/api/client.ts +134 -0
  566. package/connectors/connect-mercury/src/api/credit.ts +38 -0
  567. package/connectors/connect-mercury/src/api/customers.ts +53 -0
  568. package/connectors/connect-mercury/src/api/events.ts +63 -0
  569. package/connectors/connect-mercury/src/api/index.ts +97 -0
  570. package/connectors/connect-mercury/src/api/invoices.ts +102 -0
  571. package/connectors/connect-mercury/src/api/organization.ts +88 -0
  572. package/connectors/connect-mercury/src/api/recipients.ts +84 -0
  573. package/connectors/connect-mercury/src/api/transactions.ts +128 -0
  574. package/connectors/connect-mercury/src/api/transfers.ts +96 -0
  575. package/connectors/connect-mercury/src/api/treasury.ts +82 -0
  576. package/connectors/connect-mercury/src/api/webhooks.ts +90 -0
  577. package/connectors/connect-mercury/src/cli/index.ts +1263 -0
  578. package/connectors/connect-mercury/src/index.ts +33 -0
  579. package/connectors/connect-mercury/src/types/index.ts +505 -0
  580. package/connectors/connect-mercury/src/utils/config.ts +393 -0
  581. package/connectors/connect-mercury/src/utils/output.ts +119 -0
  582. package/connectors/connect-mercury/tsconfig.json +16 -0
  583. package/connectors/connect-meta/.npmrc.example +2 -0
  584. package/connectors/connect-meta/AGENTS.md +76 -0
  585. package/connectors/connect-meta/CLAUDE.md +76 -0
  586. package/connectors/connect-meta/GEMINI.md +76 -0
  587. package/connectors/connect-meta/README.md +94 -0
  588. package/connectors/connect-meta/package.json +61 -0
  589. package/connectors/connect-meta/src/api/accounts.ts +120 -0
  590. package/connectors/connect-meta/src/api/ads.ts +274 -0
  591. package/connectors/connect-meta/src/api/adsets.ts +263 -0
  592. package/connectors/connect-meta/src/api/audiences.ts +392 -0
  593. package/connectors/connect-meta/src/api/business.ts +495 -0
  594. package/connectors/connect-meta/src/api/campaigns.ts +191 -0
  595. package/connectors/connect-meta/src/api/catalogs.ts +500 -0
  596. package/connectors/connect-meta/src/api/client.ts +154 -0
  597. package/connectors/connect-meta/src/api/creatives.ts +357 -0
  598. package/connectors/connect-meta/src/api/index.ts +100 -0
  599. package/connectors/connect-meta/src/api/insights.ts +357 -0
  600. package/connectors/connect-meta/src/api/instagram.ts +449 -0
  601. package/connectors/connect-meta/src/api/pages.ts +330 -0
  602. package/connectors/connect-meta/src/api/pixels.ts +408 -0
  603. package/connectors/connect-meta/src/cli/index.ts +1585 -0
  604. package/connectors/connect-meta/src/index.ts +44 -0
  605. package/connectors/connect-meta/src/types/index.ts +1523 -0
  606. package/connectors/connect-meta/src/utils/config.ts +458 -0
  607. package/connectors/connect-meta/src/utils/output.ts +152 -0
  608. package/connectors/connect-meta/tsconfig.json +18 -0
  609. package/connectors/connect-midjourney/.env.example +13 -0
  610. package/connectors/connect-midjourney/.npmrc.example +2 -0
  611. package/connectors/connect-midjourney/AGENTS.md +104 -0
  612. package/connectors/connect-midjourney/CLAUDE.md +104 -0
  613. package/connectors/connect-midjourney/GEMINI.md +104 -0
  614. package/connectors/connect-midjourney/README.md +96 -0
  615. package/connectors/connect-midjourney/package.json +57 -0
  616. package/connectors/connect-midjourney/src/api/client.ts +143 -0
  617. package/connectors/connect-midjourney/src/api/imagine.ts +84 -0
  618. package/connectors/connect-midjourney/src/api/index.ts +50 -0
  619. package/connectors/connect-midjourney/src/cli/index.ts +343 -0
  620. package/connectors/connect-midjourney/src/index.ts +24 -0
  621. package/connectors/connect-midjourney/src/types/index.ts +98 -0
  622. package/connectors/connect-midjourney/src/utils/config.ts +219 -0
  623. package/connectors/connect-midjourney/src/utils/output.ts +119 -0
  624. package/connectors/connect-midjourney/tsconfig.json +16 -0
  625. package/connectors/connect-mistral/.env.example +4 -0
  626. package/connectors/connect-mistral/.npmrc.example +2 -0
  627. package/connectors/connect-mistral/AGENTS.md +100 -0
  628. package/connectors/connect-mistral/CLAUDE.md +100 -0
  629. package/connectors/connect-mistral/GEMINI.md +100 -0
  630. package/connectors/connect-mistral/README.md +109 -0
  631. package/connectors/connect-mistral/package.json +60 -0
  632. package/connectors/connect-mistral/src/api/chat.ts +113 -0
  633. package/connectors/connect-mistral/src/api/client.ts +122 -0
  634. package/connectors/connect-mistral/src/api/embeddings.ts +52 -0
  635. package/connectors/connect-mistral/src/api/index.ts +62 -0
  636. package/connectors/connect-mistral/src/cli/index.ts +371 -0
  637. package/connectors/connect-mistral/src/index.ts +24 -0
  638. package/connectors/connect-mistral/src/types/index.ts +183 -0
  639. package/connectors/connect-mistral/src/utils/config.ts +208 -0
  640. package/connectors/connect-mistral/src/utils/output.ts +119 -0
  641. package/connectors/connect-mistral/tsconfig.json +16 -0
  642. package/connectors/connect-mixpanel/.env.example +8 -0
  643. package/connectors/connect-mixpanel/.npmrc.example +2 -0
  644. package/connectors/connect-mixpanel/AGENTS.md +178 -0
  645. package/connectors/connect-mixpanel/CLAUDE.md +178 -0
  646. package/connectors/connect-mixpanel/GEMINI.md +178 -0
  647. package/connectors/connect-mixpanel/README.md +149 -0
  648. package/connectors/connect-mixpanel/package.json +54 -0
  649. package/connectors/connect-mixpanel/src/api/client.ts +352 -0
  650. package/connectors/connect-mixpanel/src/api/engage.ts +209 -0
  651. package/connectors/connect-mixpanel/src/api/export.ts +122 -0
  652. package/connectors/connect-mixpanel/src/api/funnels.ts +136 -0
  653. package/connectors/connect-mixpanel/src/api/index.ts +97 -0
  654. package/connectors/connect-mixpanel/src/api/insights.ts +198 -0
  655. package/connectors/connect-mixpanel/src/api/retention.ts +139 -0
  656. package/connectors/connect-mixpanel/src/api/track.ts +69 -0
  657. package/connectors/connect-mixpanel/src/cli/index.ts +678 -0
  658. package/connectors/connect-mixpanel/src/index.ts +32 -0
  659. package/connectors/connect-mixpanel/src/types/index.ts +262 -0
  660. package/connectors/connect-mixpanel/src/utils/config.ts +255 -0
  661. package/connectors/connect-mixpanel/src/utils/output.ts +119 -0
  662. package/connectors/connect-mixpanel/tsconfig.json +16 -0
  663. package/connectors/connect-notion/.env.example +10 -0
  664. package/connectors/connect-notion/.npmrc.example +2 -0
  665. package/connectors/connect-notion/AGENTS.md +75 -0
  666. package/connectors/connect-notion/CLAUDE.md +211 -0
  667. package/connectors/connect-notion/GEMINI.md +54 -0
  668. package/connectors/connect-notion/README.md +244 -0
  669. package/connectors/connect-notion/package.json +56 -0
  670. package/connectors/connect-notion/src/api/blocks.ts +463 -0
  671. package/connectors/connect-notion/src/api/bulk.ts +614 -0
  672. package/connectors/connect-notion/src/api/client.ts +127 -0
  673. package/connectors/connect-notion/src/api/comments.ts +142 -0
  674. package/connectors/connect-notion/src/api/databases.ts +652 -0
  675. package/connectors/connect-notion/src/api/export.ts +487 -0
  676. package/connectors/connect-notion/src/api/index.ts +72 -0
  677. package/connectors/connect-notion/src/api/pages.ts +465 -0
  678. package/connectors/connect-notion/src/api/search.ts +202 -0
  679. package/connectors/connect-notion/src/api/users.ts +99 -0
  680. package/connectors/connect-notion/src/cli/index.ts +1666 -0
  681. package/connectors/connect-notion/src/index.ts +16 -0
  682. package/connectors/connect-notion/src/types/index.ts +723 -0
  683. package/connectors/connect-notion/src/utils/auth.ts +186 -0
  684. package/connectors/connect-notion/src/utils/config.ts +434 -0
  685. package/connectors/connect-notion/src/utils/output.ts +119 -0
  686. package/connectors/connect-notion/tsconfig.json +29 -0
  687. package/connectors/connect-openai/.env.example +4 -0
  688. package/connectors/connect-openai/.npmrc.example +2 -0
  689. package/connectors/connect-openai/AGENTS.md +77 -0
  690. package/connectors/connect-openai/CLAUDE.md +77 -0
  691. package/connectors/connect-openai/GEMINI.md +77 -0
  692. package/connectors/connect-openai/README.md +95 -0
  693. package/connectors/connect-openai/package.json +61 -0
  694. package/connectors/connect-openai/src/api/chat.ts +134 -0
  695. package/connectors/connect-openai/src/api/client.ts +128 -0
  696. package/connectors/connect-openai/src/api/embeddings.ts +57 -0
  697. package/connectors/connect-openai/src/api/images.ts +75 -0
  698. package/connectors/connect-openai/src/api/index.ts +67 -0
  699. package/connectors/connect-openai/src/cli/index.ts +459 -0
  700. package/connectors/connect-openai/src/index.ts +26 -0
  701. package/connectors/connect-openai/src/types/index.ts +241 -0
  702. package/connectors/connect-openai/src/utils/config.ts +219 -0
  703. package/connectors/connect-openai/src/utils/output.ts +119 -0
  704. package/connectors/connect-openai/tsconfig.json +16 -0
  705. package/connectors/connect-openweathermap/.env.example +2 -0
  706. package/connectors/connect-openweathermap/.npmrc.example +2 -0
  707. package/connectors/connect-openweathermap/AGENTS.md +106 -0
  708. package/connectors/connect-openweathermap/CLAUDE.md +106 -0
  709. package/connectors/connect-openweathermap/GEMINI.md +106 -0
  710. package/connectors/connect-openweathermap/README.md +115 -0
  711. package/connectors/connect-openweathermap/package.json +52 -0
  712. package/connectors/connect-openweathermap/src/api/client.ts +76 -0
  713. package/connectors/connect-openweathermap/src/api/index.ts +24 -0
  714. package/connectors/connect-openweathermap/src/api/weather.ts +108 -0
  715. package/connectors/connect-openweathermap/src/cli/index.ts +470 -0
  716. package/connectors/connect-openweathermap/src/index.ts +33 -0
  717. package/connectors/connect-openweathermap/src/types/index.ts +275 -0
  718. package/connectors/connect-openweathermap/src/utils/config.ts +82 -0
  719. package/connectors/connect-openweathermap/src/utils/output.ts +106 -0
  720. package/connectors/connect-openweathermap/tsconfig.json +16 -0
  721. package/connectors/connect-pandadoc/.env.example +13 -0
  722. package/connectors/connect-pandadoc/.npmrc.example +2 -0
  723. package/connectors/connect-pandadoc/AGENTS.md +76 -0
  724. package/connectors/connect-pandadoc/CLAUDE.md +76 -0
  725. package/connectors/connect-pandadoc/GEMINI.md +76 -0
  726. package/connectors/connect-pandadoc/README.md +94 -0
  727. package/connectors/connect-pandadoc/package.json +57 -0
  728. package/connectors/connect-pandadoc/src/api/catalogs.ts +58 -0
  729. package/connectors/connect-pandadoc/src/api/client.ts +169 -0
  730. package/connectors/connect-pandadoc/src/api/contacts.ts +58 -0
  731. package/connectors/connect-pandadoc/src/api/content-library.ts +57 -0
  732. package/connectors/connect-pandadoc/src/api/documents.ts +263 -0
  733. package/connectors/connect-pandadoc/src/api/folders.ts +58 -0
  734. package/connectors/connect-pandadoc/src/api/forms.ts +37 -0
  735. package/connectors/connect-pandadoc/src/api/index.ts +83 -0
  736. package/connectors/connect-pandadoc/src/api/members.ts +42 -0
  737. package/connectors/connect-pandadoc/src/api/templates.ts +61 -0
  738. package/connectors/connect-pandadoc/src/api/webhooks.ts +81 -0
  739. package/connectors/connect-pandadoc/src/cli/index.ts +1212 -0
  740. package/connectors/connect-pandadoc/src/index.ts +39 -0
  741. package/connectors/connect-pandadoc/src/types/index.ts +454 -0
  742. package/connectors/connect-pandadoc/src/utils/config.ts +259 -0
  743. package/connectors/connect-pandadoc/src/utils/output.ts +119 -0
  744. package/connectors/connect-pandadoc/tsconfig.json +16 -0
  745. package/connectors/connect-quo/.env.example +7 -0
  746. package/connectors/connect-quo/.npmrc.example +2 -0
  747. package/connectors/connect-quo/AGENTS.md +76 -0
  748. package/connectors/connect-quo/CLAUDE.md +76 -0
  749. package/connectors/connect-quo/GEMINI.md +76 -0
  750. package/connectors/connect-quo/README.md +94 -0
  751. package/connectors/connect-quo/package.json +58 -0
  752. package/connectors/connect-quo/src/api/calls.ts +64 -0
  753. package/connectors/connect-quo/src/api/client.ts +133 -0
  754. package/connectors/connect-quo/src/api/contacts.ts +57 -0
  755. package/connectors/connect-quo/src/api/conversations.ts +45 -0
  756. package/connectors/connect-quo/src/api/custom-fields.ts +17 -0
  757. package/connectors/connect-quo/src/api/index.ts +76 -0
  758. package/connectors/connect-quo/src/api/messages.ts +50 -0
  759. package/connectors/connect-quo/src/api/phone-numbers.ts +24 -0
  760. package/connectors/connect-quo/src/api/users.ts +24 -0
  761. package/connectors/connect-quo/src/api/webhooks.ts +121 -0
  762. package/connectors/connect-quo/src/cli/index.ts +713 -0
  763. package/connectors/connect-quo/src/index.ts +32 -0
  764. package/connectors/connect-quo/src/types/index.ts +361 -0
  765. package/connectors/connect-quo/src/utils/config.ts +242 -0
  766. package/connectors/connect-quo/src/utils/output.ts +119 -0
  767. package/connectors/connect-quo/tsconfig.json +16 -0
  768. package/connectors/connect-reddit/.npmrc.example +2 -0
  769. package/connectors/connect-reddit/AGENTS.md +176 -0
  770. package/connectors/connect-reddit/CLAUDE.md +176 -0
  771. package/connectors/connect-reddit/GEMINI.md +176 -0
  772. package/connectors/connect-reddit/README.md +160 -0
  773. package/connectors/connect-reddit/package.json +50 -0
  774. package/connectors/connect-reddit/src/api/client.ts +299 -0
  775. package/connectors/connect-reddit/src/api/comments.ts +268 -0
  776. package/connectors/connect-reddit/src/api/index.ts +113 -0
  777. package/connectors/connect-reddit/src/api/posts.ts +298 -0
  778. package/connectors/connect-reddit/src/api/search.ts +235 -0
  779. package/connectors/connect-reddit/src/api/subreddits.ts +279 -0
  780. package/connectors/connect-reddit/src/api/users.ts +403 -0
  781. package/connectors/connect-reddit/src/cli/index.ts +766 -0
  782. package/connectors/connect-reddit/src/index.ts +36 -0
  783. package/connectors/connect-reddit/src/types/index.ts +295 -0
  784. package/connectors/connect-reddit/src/utils/config.ts +281 -0
  785. package/connectors/connect-reddit/src/utils/output.ts +138 -0
  786. package/connectors/connect-reddit/tsconfig.json +16 -0
  787. package/connectors/connect-reducto/.npmrc.example +2 -0
  788. package/connectors/connect-reducto/AGENTS.md +136 -0
  789. package/connectors/connect-reducto/CLAUDE.md +136 -0
  790. package/connectors/connect-reducto/GEMINI.md +136 -0
  791. package/connectors/connect-reducto/README.md +145 -0
  792. package/connectors/connect-reducto/package.json +48 -0
  793. package/connectors/connect-reducto/src/api/index.ts +362 -0
  794. package/connectors/connect-reducto/src/cli/index.ts +582 -0
  795. package/connectors/connect-reducto/src/index.ts +48 -0
  796. package/connectors/connect-reducto/src/types/index.ts +204 -0
  797. package/connectors/connect-reducto/src/utils/config.ts +144 -0
  798. package/connectors/connect-reducto/src/utils/output.ts +256 -0
  799. package/connectors/connect-reducto/tsconfig.json +18 -0
  800. package/connectors/connect-resend/.npmrc.example +2 -0
  801. package/connectors/connect-resend/AGENTS.md +76 -0
  802. package/connectors/connect-resend/CLAUDE.md +76 -0
  803. package/connectors/connect-resend/GEMINI.md +76 -0
  804. package/connectors/connect-resend/README.md +94 -0
  805. package/connectors/connect-resend/package.json +58 -0
  806. package/connectors/connect-resend/src/api/api-keys.ts +41 -0
  807. package/connectors/connect-resend/src/api/audiences.ts +46 -0
  808. package/connectors/connect-resend/src/api/broadcasts.ts +65 -0
  809. package/connectors/connect-resend/src/api/client.ts +132 -0
  810. package/connectors/connect-resend/src/api/contacts.ts +64 -0
  811. package/connectors/connect-resend/src/api/domains.ts +64 -0
  812. package/connectors/connect-resend/src/api/emails.ts +66 -0
  813. package/connectors/connect-resend/src/api/index.ts +77 -0
  814. package/connectors/connect-resend/src/api/templates.ts +65 -0
  815. package/connectors/connect-resend/src/api/webhooks.ts +55 -0
  816. package/connectors/connect-resend/src/cli/index.ts +1029 -0
  817. package/connectors/connect-resend/src/index.ts +32 -0
  818. package/connectors/connect-resend/src/types/index.ts +327 -0
  819. package/connectors/connect-resend/src/utils/config.ts +228 -0
  820. package/connectors/connect-resend/src/utils/output.ts +119 -0
  821. package/connectors/connect-resend/tsconfig.json +21 -0
  822. package/connectors/connect-revolut/.npmrc.example +2 -0
  823. package/connectors/connect-revolut/AGENTS.md +162 -0
  824. package/connectors/connect-revolut/CLAUDE.md +162 -0
  825. package/connectors/connect-revolut/GEMINI.md +162 -0
  826. package/connectors/connect-revolut/README.md +145 -0
  827. package/connectors/connect-revolut/package.json +54 -0
  828. package/connectors/connect-revolut/src/api/accounts.ts +46 -0
  829. package/connectors/connect-revolut/src/api/cards.ts +87 -0
  830. package/connectors/connect-revolut/src/api/client.ts +128 -0
  831. package/connectors/connect-revolut/src/api/counterparties.ts +64 -0
  832. package/connectors/connect-revolut/src/api/exchange.ts +87 -0
  833. package/connectors/connect-revolut/src/api/index.ts +85 -0
  834. package/connectors/connect-revolut/src/api/payments.ts +64 -0
  835. package/connectors/connect-revolut/src/api/transactions.ts +62 -0
  836. package/connectors/connect-revolut/src/cli/index.ts +674 -0
  837. package/connectors/connect-revolut/src/index.ts +32 -0
  838. package/connectors/connect-revolut/src/types/index.ts +306 -0
  839. package/connectors/connect-revolut/src/utils/config.ts +212 -0
  840. package/connectors/connect-revolut/src/utils/output.ts +77 -0
  841. package/connectors/connect-revolut/tsconfig.json +16 -0
  842. package/connectors/connect-sedo/.env.example +7 -0
  843. package/connectors/connect-sedo/.npmrc.example +2 -0
  844. package/connectors/connect-sedo/AGENTS.md +111 -0
  845. package/connectors/connect-sedo/CLAUDE.md +111 -0
  846. package/connectors/connect-sedo/GEMINI.md +111 -0
  847. package/connectors/connect-sedo/README.md +112 -0
  848. package/connectors/connect-sedo/package.json +54 -0
  849. package/connectors/connect-sedo/src/api/client.ts +139 -0
  850. package/connectors/connect-sedo/src/api/domains.ts +246 -0
  851. package/connectors/connect-sedo/src/api/index.ts +30 -0
  852. package/connectors/connect-sedo/src/cli/index.ts +490 -0
  853. package/connectors/connect-sedo/src/index.ts +18 -0
  854. package/connectors/connect-sedo/src/types/index.ts +104 -0
  855. package/connectors/connect-sedo/src/utils/config.ts +234 -0
  856. package/connectors/connect-sedo/src/utils/output.ts +62 -0
  857. package/connectors/connect-sedo/tsconfig.json +29 -0
  858. package/connectors/connect-sentry/.env.example +10 -0
  859. package/connectors/connect-sentry/.npmrc.example +2 -0
  860. package/connectors/connect-sentry/AGENTS.md +102 -0
  861. package/connectors/connect-sentry/CLAUDE.md +102 -0
  862. package/connectors/connect-sentry/GEMINI.md +102 -0
  863. package/connectors/connect-sentry/README.md +96 -0
  864. package/connectors/connect-sentry/package.json +55 -0
  865. package/connectors/connect-sentry/src/api/client.ts +136 -0
  866. package/connectors/connect-sentry/src/api/example.ts +48 -0
  867. package/connectors/connect-sentry/src/api/index.ts +49 -0
  868. package/connectors/connect-sentry/src/cli/index.ts +242 -0
  869. package/connectors/connect-sentry/src/index.ts +24 -0
  870. package/connectors/connect-sentry/src/types/index.ts +69 -0
  871. package/connectors/connect-sentry/src/utils/config.ts +210 -0
  872. package/connectors/connect-sentry/src/utils/output.ts +119 -0
  873. package/connectors/connect-sentry/tsconfig.json +16 -0
  874. package/connectors/connect-shadcn/.env.example +5 -0
  875. package/connectors/connect-shadcn/.npmrc.example +2 -0
  876. package/connectors/connect-shadcn/AGENTS.md +104 -0
  877. package/connectors/connect-shadcn/CLAUDE.md +104 -0
  878. package/connectors/connect-shadcn/GEMINI.md +104 -0
  879. package/connectors/connect-shadcn/README.md +94 -0
  880. package/connectors/connect-shadcn/package.json +55 -0
  881. package/connectors/connect-shadcn/src/api/client.ts +91 -0
  882. package/connectors/connect-shadcn/src/api/components.ts +146 -0
  883. package/connectors/connect-shadcn/src/api/index.ts +50 -0
  884. package/connectors/connect-shadcn/src/cli/index.ts +320 -0
  885. package/connectors/connect-shadcn/src/index.ts +22 -0
  886. package/connectors/connect-shadcn/src/types/index.ts +89 -0
  887. package/connectors/connect-shadcn/src/utils/config.ts +208 -0
  888. package/connectors/connect-shadcn/src/utils/output.ts +119 -0
  889. package/connectors/connect-shadcn/tsconfig.json +16 -0
  890. package/connectors/connect-shopify/.npmrc.example +2 -0
  891. package/connectors/connect-shopify/AGENTS.md +170 -0
  892. package/connectors/connect-shopify/CLAUDE.md +170 -0
  893. package/connectors/connect-shopify/GEMINI.md +170 -0
  894. package/connectors/connect-shopify/README.md +153 -0
  895. package/connectors/connect-shopify/package.json +29 -0
  896. package/connectors/connect-shopify/src/api/client.ts +163 -0
  897. package/connectors/connect-shopify/src/api/collections.ts +322 -0
  898. package/connectors/connect-shopify/src/api/customers.ts +239 -0
  899. package/connectors/connect-shopify/src/api/index.ts +89 -0
  900. package/connectors/connect-shopify/src/api/inventory.ts +236 -0
  901. package/connectors/connect-shopify/src/api/orders.ts +367 -0
  902. package/connectors/connect-shopify/src/api/products.ts +252 -0
  903. package/connectors/connect-shopify/src/api/shop.ts +50 -0
  904. package/connectors/connect-shopify/src/cli/index.ts +870 -0
  905. package/connectors/connect-shopify/src/index.ts +35 -0
  906. package/connectors/connect-shopify/src/types/index.ts +262 -0
  907. package/connectors/connect-shopify/src/utils/config.ts +240 -0
  908. package/connectors/connect-shopify/src/utils/output.ts +119 -0
  909. package/connectors/connect-shopify/tsconfig.json +17 -0
  910. package/connectors/connect-snap/.npmrc.example +2 -0
  911. package/connectors/connect-snap/AGENTS.md +76 -0
  912. package/connectors/connect-snap/CLAUDE.md +76 -0
  913. package/connectors/connect-snap/GEMINI.md +76 -0
  914. package/connectors/connect-snap/README.md +94 -0
  915. package/connectors/connect-snap/package.json +62 -0
  916. package/connectors/connect-snap/src/api/accounts.ts +81 -0
  917. package/connectors/connect-snap/src/api/ads.ts +102 -0
  918. package/connectors/connect-snap/src/api/adsquads.ts +130 -0
  919. package/connectors/connect-snap/src/api/audiences.ts +208 -0
  920. package/connectors/connect-snap/src/api/campaigns.ts +92 -0
  921. package/connectors/connect-snap/src/api/catalogs.ts +313 -0
  922. package/connectors/connect-snap/src/api/client.ts +324 -0
  923. package/connectors/connect-snap/src/api/conversions.ts +403 -0
  924. package/connectors/connect-snap/src/api/creatives.ts +232 -0
  925. package/connectors/connect-snap/src/api/index.ts +124 -0
  926. package/connectors/connect-snap/src/api/leads.ts +299 -0
  927. package/connectors/connect-snap/src/api/media.ts +246 -0
  928. package/connectors/connect-snap/src/api/organizations.ts +30 -0
  929. package/connectors/connect-snap/src/api/pixels.ts +215 -0
  930. package/connectors/connect-snap/src/api/stats.ts +305 -0
  931. package/connectors/connect-snap/src/api/targeting.ts +255 -0
  932. package/connectors/connect-snap/src/cli/index.ts +1810 -0
  933. package/connectors/connect-snap/src/index.ts +52 -0
  934. package/connectors/connect-snap/src/types/index.ts +1226 -0
  935. package/connectors/connect-snap/src/utils/config.ts +509 -0
  936. package/connectors/connect-snap/src/utils/output.ts +139 -0
  937. package/connectors/connect-snap/tsconfig.json +16 -0
  938. package/connectors/connect-stabilityai/.npmrc.example +2 -0
  939. package/connectors/connect-stabilityai/AGENTS.md +76 -0
  940. package/connectors/connect-stabilityai/CLAUDE.md +76 -0
  941. package/connectors/connect-stabilityai/GEMINI.md +76 -0
  942. package/connectors/connect-stabilityai/README.md +94 -0
  943. package/connectors/connect-stabilityai/package.json +63 -0
  944. package/connectors/connect-stabilityai/src/api/3d.ts +99 -0
  945. package/connectors/connect-stabilityai/src/api/client.ts +238 -0
  946. package/connectors/connect-stabilityai/src/api/edit.ts +130 -0
  947. package/connectors/connect-stabilityai/src/api/engines.ts +41 -0
  948. package/connectors/connect-stabilityai/src/api/image-to-image.ts +150 -0
  949. package/connectors/connect-stabilityai/src/api/index.ts +81 -0
  950. package/connectors/connect-stabilityai/src/api/inpaint.ts +153 -0
  951. package/connectors/connect-stabilityai/src/api/outpaint.ts +117 -0
  952. package/connectors/connect-stabilityai/src/api/text-to-image.ts +181 -0
  953. package/connectors/connect-stabilityai/src/api/upscale.ts +113 -0
  954. package/connectors/connect-stabilityai/src/api/user.ts +24 -0
  955. package/connectors/connect-stabilityai/src/cli/index.ts +859 -0
  956. package/connectors/connect-stabilityai/src/index.ts +37 -0
  957. package/connectors/connect-stabilityai/src/types/index.ts +315 -0
  958. package/connectors/connect-stabilityai/src/utils/config.ts +340 -0
  959. package/connectors/connect-stabilityai/src/utils/output.ts +119 -0
  960. package/connectors/connect-stabilityai/tsconfig.json +21 -0
  961. package/connectors/connect-stripe/.env.example +10 -0
  962. package/connectors/connect-stripe/.npmrc.example +2 -0
  963. package/connectors/connect-stripe/AGENTS.md +204 -0
  964. package/connectors/connect-stripe/CLAUDE.md +204 -0
  965. package/connectors/connect-stripe/GEMINI.md +204 -0
  966. package/connectors/connect-stripe/README.md +181 -0
  967. package/connectors/connect-stripe/package.json +55 -0
  968. package/connectors/connect-stripe/src/api/balance.ts +28 -0
  969. package/connectors/connect-stripe/src/api/billing-portal.ts +64 -0
  970. package/connectors/connect-stripe/src/api/charges.ts +65 -0
  971. package/connectors/connect-stripe/src/api/checkout-sessions.ts +55 -0
  972. package/connectors/connect-stripe/src/api/client.ts +190 -0
  973. package/connectors/connect-stripe/src/api/coupons.ts +52 -0
  974. package/connectors/connect-stripe/src/api/customers.ts +65 -0
  975. package/connectors/connect-stripe/src/api/events.ts +28 -0
  976. package/connectors/connect-stripe/src/api/index.ts +118 -0
  977. package/connectors/connect-stripe/src/api/invoice-items.ts +52 -0
  978. package/connectors/connect-stripe/src/api/invoices.ts +102 -0
  979. package/connectors/connect-stripe/src/api/payment-intents.ts +81 -0
  980. package/connectors/connect-stripe/src/api/payment-links.ts +57 -0
  981. package/connectors/connect-stripe/src/api/payment-methods.ts +59 -0
  982. package/connectors/connect-stripe/src/api/prices.ts +57 -0
  983. package/connectors/connect-stripe/src/api/products.ts +65 -0
  984. package/connectors/connect-stripe/src/api/promotion-codes.ts +44 -0
  985. package/connectors/connect-stripe/src/api/subscription-items.ts +53 -0
  986. package/connectors/connect-stripe/src/api/subscriptions.ts +73 -0
  987. package/connectors/connect-stripe/src/api/webhooks.ts +52 -0
  988. package/connectors/connect-stripe/src/cli/index.ts +1995 -0
  989. package/connectors/connect-stripe/src/index.ts +44 -0
  990. package/connectors/connect-stripe/src/types/index.ts +2147 -0
  991. package/connectors/connect-stripe/src/utils/config.ts +220 -0
  992. package/connectors/connect-stripe/src/utils/output.ts +119 -0
  993. package/connectors/connect-stripe/tsconfig.json +16 -0
  994. package/connectors/connect-stripeatlas/.env.example +11 -0
  995. package/connectors/connect-stripeatlas/.npmrc.example +2 -0
  996. package/connectors/connect-stripeatlas/AGENTS.md +102 -0
  997. package/connectors/connect-stripeatlas/CLAUDE.md +102 -0
  998. package/connectors/connect-stripeatlas/GEMINI.md +102 -0
  999. package/connectors/connect-stripeatlas/README.md +95 -0
  1000. package/connectors/connect-stripeatlas/package.json +57 -0
  1001. package/connectors/connect-stripeatlas/src/api/client.ts +77 -0
  1002. package/connectors/connect-stripeatlas/src/api/example.ts +60 -0
  1003. package/connectors/connect-stripeatlas/src/api/index.ts +65 -0
  1004. package/connectors/connect-stripeatlas/src/cli/index.ts +270 -0
  1005. package/connectors/connect-stripeatlas/src/index.ts +29 -0
  1006. package/connectors/connect-stripeatlas/src/types/index.ts +93 -0
  1007. package/connectors/connect-stripeatlas/src/utils/config.ts +228 -0
  1008. package/connectors/connect-stripeatlas/src/utils/output.ts +119 -0
  1009. package/connectors/connect-stripeatlas/tsconfig.json +16 -0
  1010. package/connectors/connect-substack/.env.example +4 -0
  1011. package/connectors/connect-substack/.npmrc.example +2 -0
  1012. package/connectors/connect-substack/AGENTS.md +168 -0
  1013. package/connectors/connect-substack/CLAUDE.md +168 -0
  1014. package/connectors/connect-substack/GEMINI.md +168 -0
  1015. package/connectors/connect-substack/README.md +146 -0
  1016. package/connectors/connect-substack/package.json +51 -0
  1017. package/connectors/connect-substack/src/api/client.ts +147 -0
  1018. package/connectors/connect-substack/src/api/comments.ts +68 -0
  1019. package/connectors/connect-substack/src/api/index.ts +77 -0
  1020. package/connectors/connect-substack/src/api/posts.ts +135 -0
  1021. package/connectors/connect-substack/src/api/publication.ts +126 -0
  1022. package/connectors/connect-substack/src/api/stats.ts +113 -0
  1023. package/connectors/connect-substack/src/api/subscribers.ts +97 -0
  1024. package/connectors/connect-substack/src/cli/index.ts +531 -0
  1025. package/connectors/connect-substack/src/index.ts +31 -0
  1026. package/connectors/connect-substack/src/types/index.ts +257 -0
  1027. package/connectors/connect-substack/src/utils/config.ts +208 -0
  1028. package/connectors/connect-substack/src/utils/output.ts +143 -0
  1029. package/connectors/connect-substack/tsconfig.json +16 -0
  1030. package/connectors/connect-tiktok/.npmrc.example +2 -0
  1031. package/connectors/connect-tiktok/AGENTS.md +76 -0
  1032. package/connectors/connect-tiktok/CLAUDE.md +76 -0
  1033. package/connectors/connect-tiktok/GEMINI.md +76 -0
  1034. package/connectors/connect-tiktok/README.md +94 -0
  1035. package/connectors/connect-tiktok/package.json +60 -0
  1036. package/connectors/connect-tiktok/src/api/adgroups.ts +144 -0
  1037. package/connectors/connect-tiktok/src/api/ads.ts +160 -0
  1038. package/connectors/connect-tiktok/src/api/advertisers.ts +104 -0
  1039. package/connectors/connect-tiktok/src/api/audiences.ts +246 -0
  1040. package/connectors/connect-tiktok/src/api/business.ts +273 -0
  1041. package/connectors/connect-tiktok/src/api/campaigns.ts +116 -0
  1042. package/connectors/connect-tiktok/src/api/catalogs.ts +326 -0
  1043. package/connectors/connect-tiktok/src/api/client.ts +137 -0
  1044. package/connectors/connect-tiktok/src/api/creatives.ts +293 -0
  1045. package/connectors/connect-tiktok/src/api/events.ts +314 -0
  1046. package/connectors/connect-tiktok/src/api/identity.ts +255 -0
  1047. package/connectors/connect-tiktok/src/api/index.ts +105 -0
  1048. package/connectors/connect-tiktok/src/api/pixels.ts +188 -0
  1049. package/connectors/connect-tiktok/src/api/reports.ts +290 -0
  1050. package/connectors/connect-tiktok/src/api/targeting.ts +326 -0
  1051. package/connectors/connect-tiktok/src/cli/index.ts +1329 -0
  1052. package/connectors/connect-tiktok/src/index.ts +39 -0
  1053. package/connectors/connect-tiktok/src/types/index.ts +1052 -0
  1054. package/connectors/connect-tiktok/src/utils/config.ts +419 -0
  1055. package/connectors/connect-tiktok/src/utils/output.ts +136 -0
  1056. package/connectors/connect-tiktok/tsconfig.json +16 -0
  1057. package/connectors/connect-tinker/.env.example +8 -0
  1058. package/connectors/connect-tinker/.npmrc.example +2 -0
  1059. package/connectors/connect-tinker/AGENTS.md +189 -0
  1060. package/connectors/connect-tinker/CLAUDE.md +189 -0
  1061. package/connectors/connect-tinker/GEMINI.md +189 -0
  1062. package/connectors/connect-tinker/README.md +157 -0
  1063. package/connectors/connect-tinker/package.json +55 -0
  1064. package/connectors/connect-tinker/src/api/client.ts +146 -0
  1065. package/connectors/connect-tinker/src/api/index.ts +100 -0
  1066. package/connectors/connect-tinker/src/api/sampling.ts +163 -0
  1067. package/connectors/connect-tinker/src/api/state.ts +147 -0
  1068. package/connectors/connect-tinker/src/api/training.ts +152 -0
  1069. package/connectors/connect-tinker/src/cli/index.ts +775 -0
  1070. package/connectors/connect-tinker/src/index.ts +28 -0
  1071. package/connectors/connect-tinker/src/types/index.ts +287 -0
  1072. package/connectors/connect-tinker/src/utils/config.ts +230 -0
  1073. package/connectors/connect-tinker/src/utils/output.ts +139 -0
  1074. package/connectors/connect-tinker/tsconfig.json +16 -0
  1075. package/connectors/connect-twilio/.npmrc.example +2 -0
  1076. package/connectors/connect-twilio/AGENTS.md +76 -0
  1077. package/connectors/connect-twilio/CLAUDE.md +76 -0
  1078. package/connectors/connect-twilio/GEMINI.md +76 -0
  1079. package/connectors/connect-twilio/README.md +94 -0
  1080. package/connectors/connect-twilio/package.json +72 -0
  1081. package/connectors/connect-twilio/src/api/accounts.ts +352 -0
  1082. package/connectors/connect-twilio/src/api/calls.ts +120 -0
  1083. package/connectors/connect-twilio/src/api/client.ts +181 -0
  1084. package/connectors/connect-twilio/src/api/conversations.ts +313 -0
  1085. package/connectors/connect-twilio/src/api/index.ts +91 -0
  1086. package/connectors/connect-twilio/src/api/lookup.ts +271 -0
  1087. package/connectors/connect-twilio/src/api/messages.ts +107 -0
  1088. package/connectors/connect-twilio/src/api/numbers.ts +152 -0
  1089. package/connectors/connect-twilio/src/api/verify.ts +213 -0
  1090. package/connectors/connect-twilio/src/api/video.ts +305 -0
  1091. package/connectors/connect-twilio/src/cli/index.ts +1093 -0
  1092. package/connectors/connect-twilio/src/index.ts +34 -0
  1093. package/connectors/connect-twilio/src/types/index.ts +983 -0
  1094. package/connectors/connect-twilio/src/utils/config.ts +424 -0
  1095. package/connectors/connect-twilio/src/utils/output.ts +119 -0
  1096. package/connectors/connect-twilio/tsconfig.json +16 -0
  1097. package/connectors/connect-uspto/.env.example +13 -0
  1098. package/connectors/connect-uspto/.npmrc.example +2 -0
  1099. package/connectors/connect-uspto/AGENTS.md +80 -0
  1100. package/connectors/connect-uspto/CLAUDE.md +80 -0
  1101. package/connectors/connect-uspto/GEMINI.md +80 -0
  1102. package/connectors/connect-uspto/README.md +98 -0
  1103. package/connectors/connect-uspto/package.json +54 -0
  1104. package/connectors/connect-uspto/src/api/browser.ts +335 -0
  1105. package/connectors/connect-uspto/src/api/client.ts +186 -0
  1106. package/connectors/connect-uspto/src/api/index.ts +104 -0
  1107. package/connectors/connect-uspto/src/api/patents.ts +290 -0
  1108. package/connectors/connect-uspto/src/api/ptab.ts +150 -0
  1109. package/connectors/connect-uspto/src/api/trademarks.ts +302 -0
  1110. package/connectors/connect-uspto/src/cli/index.ts +713 -0
  1111. package/connectors/connect-uspto/src/index.ts +26 -0
  1112. package/connectors/connect-uspto/src/types/index.ts +302 -0
  1113. package/connectors/connect-uspto/src/utils/config.ts +235 -0
  1114. package/connectors/connect-uspto/src/utils/output.ts +119 -0
  1115. package/connectors/connect-uspto/tsconfig.json +16 -0
  1116. package/connectors/connect-webflow/.npmrc.example +2 -0
  1117. package/connectors/connect-webflow/AGENTS.md +193 -0
  1118. package/connectors/connect-webflow/CLAUDE.md +193 -0
  1119. package/connectors/connect-webflow/GEMINI.md +193 -0
  1120. package/connectors/connect-webflow/README.md +173 -0
  1121. package/connectors/connect-webflow/package.json +29 -0
  1122. package/connectors/connect-webflow/src/api/assets.ts +89 -0
  1123. package/connectors/connect-webflow/src/api/client.ts +121 -0
  1124. package/connectors/connect-webflow/src/api/collections.ts +46 -0
  1125. package/connectors/connect-webflow/src/api/forms.ts +75 -0
  1126. package/connectors/connect-webflow/src/api/index.ts +93 -0
  1127. package/connectors/connect-webflow/src/api/items.ts +141 -0
  1128. package/connectors/connect-webflow/src/api/orders.ts +89 -0
  1129. package/connectors/connect-webflow/src/api/pages.ts +76 -0
  1130. package/connectors/connect-webflow/src/api/products.ts +160 -0
  1131. package/connectors/connect-webflow/src/api/sites.ts +41 -0
  1132. package/connectors/connect-webflow/src/api/users.ts +81 -0
  1133. package/connectors/connect-webflow/src/cli/index.ts +1048 -0
  1134. package/connectors/connect-webflow/src/index.ts +35 -0
  1135. package/connectors/connect-webflow/src/types/index.ts +488 -0
  1136. package/connectors/connect-webflow/src/utils/config.ts +208 -0
  1137. package/connectors/connect-webflow/src/utils/output.ts +119 -0
  1138. package/connectors/connect-webflow/tsconfig.json +17 -0
  1139. package/connectors/connect-wix/.npmrc.example +2 -0
  1140. package/connectors/connect-wix/AGENTS.md +181 -0
  1141. package/connectors/connect-wix/CLAUDE.md +181 -0
  1142. package/connectors/connect-wix/GEMINI.md +181 -0
  1143. package/connectors/connect-wix/README.md +163 -0
  1144. package/connectors/connect-wix/package.json +29 -0
  1145. package/connectors/connect-wix/src/api/bookings.ts +575 -0
  1146. package/connectors/connect-wix/src/api/client.ts +147 -0
  1147. package/connectors/connect-wix/src/api/contacts.ts +308 -0
  1148. package/connectors/connect-wix/src/api/index.ts +90 -0
  1149. package/connectors/connect-wix/src/api/inventory.ts +195 -0
  1150. package/connectors/connect-wix/src/api/members.ts +172 -0
  1151. package/connectors/connect-wix/src/api/orders.ts +415 -0
  1152. package/connectors/connect-wix/src/api/products.ts +453 -0
  1153. package/connectors/connect-wix/src/api/sites.ts +77 -0
  1154. package/connectors/connect-wix/src/cli/index.ts +1009 -0
  1155. package/connectors/connect-wix/src/index.ts +35 -0
  1156. package/connectors/connect-wix/src/types/index.ts +786 -0
  1157. package/connectors/connect-wix/src/utils/config.ts +219 -0
  1158. package/connectors/connect-wix/src/utils/output.ts +119 -0
  1159. package/connectors/connect-wix/tsconfig.json +17 -0
  1160. package/connectors/connect-x/.env.example +11 -0
  1161. package/connectors/connect-x/.npmrc.example +2 -0
  1162. package/connectors/connect-x/AGENTS.md +84 -0
  1163. package/connectors/connect-x/CLAUDE.md +84 -0
  1164. package/connectors/connect-x/GEMINI.md +84 -0
  1165. package/connectors/connect-x/README.md +102 -0
  1166. package/connectors/connect-x/package.json +59 -0
  1167. package/connectors/connect-x/src/api/client.ts +392 -0
  1168. package/connectors/connect-x/src/api/index.ts +171 -0
  1169. package/connectors/connect-x/src/api/media.ts +323 -0
  1170. package/connectors/connect-x/src/api/oauth.ts +408 -0
  1171. package/connectors/connect-x/src/api/oauth1.ts +351 -0
  1172. package/connectors/connect-x/src/api/tweets.ts +339 -0
  1173. package/connectors/connect-x/src/api/users.ts +259 -0
  1174. package/connectors/connect-x/src/cli/index.ts +1205 -0
  1175. package/connectors/connect-x/src/index.ts +92 -0
  1176. package/connectors/connect-x/src/types/index.ts +230 -0
  1177. package/connectors/connect-x/src/utils/config.ts +496 -0
  1178. package/connectors/connect-x/src/utils/output.ts +119 -0
  1179. package/connectors/connect-x/tsconfig.json +16 -0
  1180. package/connectors/connect-xads/.env.example +11 -0
  1181. package/connectors/connect-xads/.npmrc.example +2 -0
  1182. package/connectors/connect-xads/AGENTS.md +183 -0
  1183. package/connectors/connect-xads/CLAUDE.md +183 -0
  1184. package/connectors/connect-xads/GEMINI.md +183 -0
  1185. package/connectors/connect-xads/README.md +161 -0
  1186. package/connectors/connect-xads/package.json +52 -0
  1187. package/connectors/connect-xads/src/api/accounts.ts +70 -0
  1188. package/connectors/connect-xads/src/api/analytics.ts +165 -0
  1189. package/connectors/connect-xads/src/api/audiences.ts +143 -0
  1190. package/connectors/connect-xads/src/api/campaigns.ts +113 -0
  1191. package/connectors/connect-xads/src/api/client.ts +315 -0
  1192. package/connectors/connect-xads/src/api/index.ts +91 -0
  1193. package/connectors/connect-xads/src/api/line-items.ts +126 -0
  1194. package/connectors/connect-xads/src/api/media.ts +96 -0
  1195. package/connectors/connect-xads/src/api/promoted-tweets.ts +97 -0
  1196. package/connectors/connect-xads/src/api/targeting.ts +165 -0
  1197. package/connectors/connect-xads/src/cli/index.ts +1036 -0
  1198. package/connectors/connect-xads/src/index.ts +41 -0
  1199. package/connectors/connect-xads/src/types/index.ts +474 -0
  1200. package/connectors/connect-xads/src/utils/config.ts +176 -0
  1201. package/connectors/connect-xads/src/utils/output.ts +177 -0
  1202. package/connectors/connect-xads/tsconfig.json +15 -0
  1203. package/connectors/connect-xai/.env.example +4 -0
  1204. package/connectors/connect-xai/.npmrc.example +2 -0
  1205. package/connectors/connect-xai/AGENTS.md +97 -0
  1206. package/connectors/connect-xai/CLAUDE.md +97 -0
  1207. package/connectors/connect-xai/GEMINI.md +97 -0
  1208. package/connectors/connect-xai/README.md +106 -0
  1209. package/connectors/connect-xai/package.json +60 -0
  1210. package/connectors/connect-xai/src/api/chat.ts +114 -0
  1211. package/connectors/connect-xai/src/api/client.ts +122 -0
  1212. package/connectors/connect-xai/src/api/index.ts +58 -0
  1213. package/connectors/connect-xai/src/cli/index.ts +330 -0
  1214. package/connectors/connect-xai/src/index.ts +24 -0
  1215. package/connectors/connect-xai/src/types/index.ts +172 -0
  1216. package/connectors/connect-xai/src/utils/config.ts +208 -0
  1217. package/connectors/connect-xai/src/utils/output.ts +119 -0
  1218. package/connectors/connect-xai/tsconfig.json +16 -0
  1219. package/connectors/connect-youtube/.npmrc.example +2 -0
  1220. package/connectors/connect-youtube/AGENTS.md +76 -0
  1221. package/connectors/connect-youtube/CLAUDE.md +76 -0
  1222. package/connectors/connect-youtube/GEMINI.md +76 -0
  1223. package/connectors/connect-youtube/README.md +94 -0
  1224. package/connectors/connect-youtube/package.json +61 -0
  1225. package/connectors/connect-youtube/src/api/analytics.ts +364 -0
  1226. package/connectors/connect-youtube/src/api/captions.ts +196 -0
  1227. package/connectors/connect-youtube/src/api/categories.ts +107 -0
  1228. package/connectors/connect-youtube/src/api/channels.ts +149 -0
  1229. package/connectors/connect-youtube/src/api/client.ts +278 -0
  1230. package/connectors/connect-youtube/src/api/commentThreads.ts +215 -0
  1231. package/connectors/connect-youtube/src/api/comments.ts +179 -0
  1232. package/connectors/connect-youtube/src/api/index.ts +113 -0
  1233. package/connectors/connect-youtube/src/api/live.ts +480 -0
  1234. package/connectors/connect-youtube/src/api/members.ts +119 -0
  1235. package/connectors/connect-youtube/src/api/playlistItems.ts +184 -0
  1236. package/connectors/connect-youtube/src/api/playlists.ts +174 -0
  1237. package/connectors/connect-youtube/src/api/search.ts +222 -0
  1238. package/connectors/connect-youtube/src/api/subscriptions.ts +164 -0
  1239. package/connectors/connect-youtube/src/api/thumbnails.ts +73 -0
  1240. package/connectors/connect-youtube/src/api/videos.ts +217 -0
  1241. package/connectors/connect-youtube/src/api/watermarks.ts +110 -0
  1242. package/connectors/connect-youtube/src/cli/index.ts +1768 -0
  1243. package/connectors/connect-youtube/src/index.ts +41 -0
  1244. package/connectors/connect-youtube/src/types/index.ts +1207 -0
  1245. package/connectors/connect-youtube/src/utils/auth.ts +236 -0
  1246. package/connectors/connect-youtube/src/utils/config.ts +529 -0
  1247. package/connectors/connect-youtube/src/utils/output.ts +157 -0
  1248. package/connectors/connect-youtube/tsconfig.json +16 -0
  1249. package/connectors/connect-zoom/.npmrc.example +2 -0
  1250. package/connectors/connect-zoom/AGENTS.md +164 -0
  1251. package/connectors/connect-zoom/CLAUDE.md +164 -0
  1252. package/connectors/connect-zoom/GEMINI.md +164 -0
  1253. package/connectors/connect-zoom/README.md +145 -0
  1254. package/connectors/connect-zoom/package.json +51 -0
  1255. package/connectors/connect-zoom/src/api/client.ts +177 -0
  1256. package/connectors/connect-zoom/src/api/index.ts +81 -0
  1257. package/connectors/connect-zoom/src/api/meetings.ts +126 -0
  1258. package/connectors/connect-zoom/src/api/recordings.ts +129 -0
  1259. package/connectors/connect-zoom/src/api/reports.ts +178 -0
  1260. package/connectors/connect-zoom/src/api/users.ts +52 -0
  1261. package/connectors/connect-zoom/src/api/webinars.ts +115 -0
  1262. package/connectors/connect-zoom/src/cli/index.ts +735 -0
  1263. package/connectors/connect-zoom/src/index.ts +26 -0
  1264. package/connectors/connect-zoom/src/types/index.ts +311 -0
  1265. package/connectors/connect-zoom/src/utils/config.ts +241 -0
  1266. package/connectors/connect-zoom/src/utils/output.ts +119 -0
  1267. package/connectors/connect-zoom/tsconfig.json +16 -0
  1268. package/dist/index.js +580 -0
  1269. package/package.json +68 -0
@@ -0,0 +1,1995 @@
1
+ #!/usr/bin/env bun
2
+ import { Command } from 'commander';
3
+ import chalk from 'chalk';
4
+ import { Connector } from '../api';
5
+ import {
6
+ getApiKey,
7
+ setApiKey,
8
+ getAccountId,
9
+ setAccountId,
10
+ clearConfig,
11
+ getConfigDir,
12
+ setProfileOverride,
13
+ getCurrentProfile,
14
+ setCurrentProfile,
15
+ listProfiles,
16
+ createProfile,
17
+ deleteProfile,
18
+ profileExists,
19
+ loadProfile,
20
+ } from '../utils/config';
21
+ import type { OutputFormat } from '../utils/output';
22
+ import { success, error, info, print, warn } from '../utils/output';
23
+
24
+ // Stripe connector name and version
25
+ const CONNECTOR_NAME = 'connect-stripe';
26
+ const VERSION = '0.1.0';
27
+
28
+ const program = new Command();
29
+
30
+ program
31
+ .name(CONNECTOR_NAME)
32
+ .description('Stripe API connector CLI')
33
+ .version(VERSION)
34
+ .option('-k, --api-key <key>', 'API key (overrides config)')
35
+ .option('-f, --format <format>', 'Output format (json, pretty)', 'pretty')
36
+ .option('-p, --profile <profile>', 'Use a specific profile')
37
+ .hook('preAction', (thisCommand) => {
38
+ const opts = thisCommand.opts();
39
+ // Set profile override before any command runs
40
+ if (opts.profile) {
41
+ if (!profileExists(opts.profile)) {
42
+ error(`Profile "${opts.profile}" does not exist. Create it with "${CONNECTOR_NAME} profile create ${opts.profile}"`);
43
+ process.exit(1);
44
+ }
45
+ setProfileOverride(opts.profile);
46
+ }
47
+ // Set API key from flag if provided
48
+ if (opts.apiKey) {
49
+ process.env.STRIPE_API_KEY = opts.apiKey;
50
+ }
51
+ });
52
+
53
+ // Helper to get output format
54
+ function getFormat(cmd: Command): OutputFormat {
55
+ const parent = cmd.parent;
56
+ return (parent?.opts().format || 'pretty') as OutputFormat;
57
+ }
58
+
59
+ // Helper to get authenticated client
60
+ function getClient(): Connector {
61
+ const apiKey = getApiKey();
62
+ if (!apiKey) {
63
+ error(`No API key configured. Run "${CONNECTOR_NAME} config set-key <key>" or set STRIPE_API_KEY environment variable.`);
64
+ process.exit(1);
65
+ }
66
+ const accountId = getAccountId();
67
+ return new Connector({ apiKey, accountId });
68
+ }
69
+
70
+ // ============================================
71
+ // Profile Commands
72
+ // ============================================
73
+ const profileCmd = program
74
+ .command('profile')
75
+ .description('Manage configuration profiles');
76
+
77
+ profileCmd
78
+ .command('list')
79
+ .description('List all profiles')
80
+ .action(() => {
81
+ const profiles = listProfiles();
82
+ const current = getCurrentProfile();
83
+
84
+ if (profiles.length === 0) {
85
+ info('No profiles found. Use "profile create <name>" to create one.');
86
+ return;
87
+ }
88
+
89
+ success(`Profiles:`);
90
+ profiles.forEach(p => {
91
+ const isActive = p === current ? chalk.green(' (active)') : '';
92
+ console.log(` ${p}${isActive}`);
93
+ });
94
+ });
95
+
96
+ profileCmd
97
+ .command('use <name>')
98
+ .description('Switch to a profile')
99
+ .action((name: string) => {
100
+ if (!profileExists(name)) {
101
+ error(`Profile "${name}" does not exist. Create it with "profile create ${name}"`);
102
+ process.exit(1);
103
+ }
104
+ setCurrentProfile(name);
105
+ success(`Switched to profile: ${name}`);
106
+ });
107
+
108
+ profileCmd
109
+ .command('create <name>')
110
+ .description('Create a new profile')
111
+ .option('--api-key <key>', 'API key')
112
+ .option('--use', 'Switch to this profile after creation')
113
+ .action((name: string, opts) => {
114
+ if (profileExists(name)) {
115
+ error(`Profile "${name}" already exists`);
116
+ process.exit(1);
117
+ }
118
+
119
+ createProfile(name, {
120
+ apiKey: opts.apiKey,
121
+ });
122
+ success(`Profile "${name}" created`);
123
+
124
+ if (opts.use) {
125
+ setCurrentProfile(name);
126
+ info(`Switched to profile: ${name}`);
127
+ }
128
+ });
129
+
130
+ profileCmd
131
+ .command('delete <name>')
132
+ .description('Delete a profile')
133
+ .action((name: string) => {
134
+ if (name === 'default') {
135
+ error('Cannot delete the default profile');
136
+ process.exit(1);
137
+ }
138
+ if (deleteProfile(name)) {
139
+ success(`Profile "${name}" deleted`);
140
+ } else {
141
+ error(`Profile "${name}" not found`);
142
+ process.exit(1);
143
+ }
144
+ });
145
+
146
+ profileCmd
147
+ .command('show [name]')
148
+ .description('Show profile configuration')
149
+ .action((name?: string) => {
150
+ const profileName = name || getCurrentProfile();
151
+ const config = loadProfile(profileName);
152
+ const active = getCurrentProfile();
153
+ const isOrgKey = config.apiKey?.startsWith('sk_org_');
154
+
155
+ console.log(chalk.bold(`Profile: ${profileName}${profileName === active ? chalk.green(' (active)') : ''}`));
156
+ info(`API Key: ${config.apiKey ? `${config.apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
157
+ if (isOrgKey || config.accountId) {
158
+ info(`Account ID: ${config.accountId || chalk.yellow('not set')}`);
159
+ }
160
+ });
161
+
162
+ // ============================================
163
+ // Config Commands
164
+ // ============================================
165
+ const configCmd = program
166
+ .command('config')
167
+ .description('Manage CLI configuration (for active profile)');
168
+
169
+ configCmd
170
+ .command('set-key <apiKey>')
171
+ .description('Set API key')
172
+ .action((apiKey: string) => {
173
+ setApiKey(apiKey);
174
+ success(`API key saved to profile: ${getCurrentProfile()}`);
175
+ });
176
+
177
+ configCmd
178
+ .command('set-account <accountId>')
179
+ .description('Set account ID (required for org API keys)')
180
+ .action((accountId: string) => {
181
+ if (!accountId.startsWith('acct_')) {
182
+ warn('Account ID should start with "acct_"');
183
+ }
184
+ setAccountId(accountId);
185
+ success(`Account ID saved to profile: ${getCurrentProfile()}`);
186
+ });
187
+
188
+ configCmd
189
+ .command('show')
190
+ .description('Show current configuration')
191
+ .action(() => {
192
+ const profileName = getCurrentProfile();
193
+ const apiKey = getApiKey();
194
+ const accountId = getAccountId();
195
+ const isOrgKey = apiKey?.startsWith('sk_org_');
196
+
197
+ console.log(chalk.bold(`Active Profile: ${profileName}`));
198
+ info(`Config directory: ${getConfigDir()}`);
199
+ info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
200
+ if (isOrgKey) {
201
+ info(`Account ID: ${accountId || chalk.yellow('not set (required for org keys)')}`);
202
+ } else if (accountId) {
203
+ info(`Account ID: ${accountId}`);
204
+ }
205
+ });
206
+
207
+ configCmd
208
+ .command('clear')
209
+ .description('Clear configuration for active profile')
210
+ .action(() => {
211
+ clearConfig();
212
+ success(`Configuration cleared for profile: ${getCurrentProfile()}`);
213
+ });
214
+
215
+ // ============================================
216
+ // Balance Commands
217
+ // ============================================
218
+ program
219
+ .command('balance')
220
+ .description('Get account balance')
221
+ .action(async function(this: Command) {
222
+ try {
223
+ const client = getClient();
224
+ const result = await client.balance.get();
225
+ print(result, getFormat(this));
226
+ } catch (err) {
227
+ error(String(err));
228
+ process.exit(1);
229
+ }
230
+ });
231
+
232
+ // ============================================
233
+ // Products Commands
234
+ // ============================================
235
+ const productsCmd = program
236
+ .command('products')
237
+ .description('Manage products');
238
+
239
+ productsCmd
240
+ .command('list')
241
+ .description('List all products')
242
+ .option('-l, --limit <number>', 'Maximum number of products', '10')
243
+ .option('--active <boolean>', 'Filter by active status')
244
+ .option('--starting-after <id>', 'Cursor for pagination')
245
+ .action(async function(this: Command, opts) {
246
+ try {
247
+ const client = getClient();
248
+ const result = await client.products.list({
249
+ limit: parseInt(opts.limit),
250
+ active: opts.active === 'true' ? true : opts.active === 'false' ? false : undefined,
251
+ starting_after: opts.startingAfter,
252
+ });
253
+ print(result, getFormat(this));
254
+ } catch (err) {
255
+ error(String(err));
256
+ process.exit(1);
257
+ }
258
+ });
259
+
260
+ productsCmd
261
+ .command('get <id>')
262
+ .description('Get a product by ID')
263
+ .action(async function(this: Command, id: string) {
264
+ try {
265
+ const client = getClient();
266
+ const result = await client.products.get(id);
267
+ print(result, getFormat(this));
268
+ } catch (err) {
269
+ error(String(err));
270
+ process.exit(1);
271
+ }
272
+ });
273
+
274
+ productsCmd
275
+ .command('create')
276
+ .description('Create a product')
277
+ .requiredOption('-n, --name <name>', 'Product name')
278
+ .option('-d, --description <text>', 'Product description')
279
+ .option('--active <boolean>', 'Whether product is active', 'true')
280
+ .option('--metadata <json>', 'Metadata as JSON')
281
+ .action(async function(this: Command, opts) {
282
+ try {
283
+ const client = getClient();
284
+ const result = await client.products.create({
285
+ name: opts.name,
286
+ description: opts.description,
287
+ active: opts.active === 'true',
288
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
289
+ });
290
+ success('Product created');
291
+ print(result, getFormat(this));
292
+ } catch (err) {
293
+ error(String(err));
294
+ process.exit(1);
295
+ }
296
+ });
297
+
298
+ productsCmd
299
+ .command('update <id>')
300
+ .description('Update a product')
301
+ .option('-n, --name <name>', 'Product name')
302
+ .option('-d, --description <text>', 'Product description')
303
+ .option('--active <boolean>', 'Whether product is active')
304
+ .option('--metadata <json>', 'Metadata as JSON')
305
+ .action(async function(this: Command, id: string, opts) {
306
+ try {
307
+ const client = getClient();
308
+ const result = await client.products.update(id, {
309
+ name: opts.name,
310
+ description: opts.description,
311
+ active: opts.active === 'true' ? true : opts.active === 'false' ? false : undefined,
312
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
313
+ });
314
+ success('Product updated');
315
+ print(result, getFormat(this));
316
+ } catch (err) {
317
+ error(String(err));
318
+ process.exit(1);
319
+ }
320
+ });
321
+
322
+ productsCmd
323
+ .command('delete <id>')
324
+ .description('Delete a product')
325
+ .action(async function(this: Command, id: string) {
326
+ try {
327
+ const client = getClient();
328
+ const result = await client.products.del(id);
329
+ success('Product deleted');
330
+ print(result, getFormat(this));
331
+ } catch (err) {
332
+ error(String(err));
333
+ process.exit(1);
334
+ }
335
+ });
336
+
337
+ productsCmd
338
+ .command('search')
339
+ .description('Search products')
340
+ .requiredOption('-q, --query <query>', 'Search query')
341
+ .option('-l, --limit <number>', 'Maximum results')
342
+ .action(async function(this: Command, opts) {
343
+ try {
344
+ const client = getClient();
345
+ const result = await client.products.search(opts.query, {
346
+ limit: opts.limit ? parseInt(opts.limit) : undefined,
347
+ });
348
+ print(result, getFormat(this));
349
+ } catch (err) {
350
+ error(String(err));
351
+ process.exit(1);
352
+ }
353
+ });
354
+
355
+ // ============================================
356
+ // Prices Commands
357
+ // ============================================
358
+ const pricesCmd = program
359
+ .command('prices')
360
+ .description('Manage prices');
361
+
362
+ pricesCmd
363
+ .command('list')
364
+ .description('List all prices')
365
+ .option('-l, --limit <number>', 'Maximum number of prices', '10')
366
+ .option('--product <id>', 'Filter by product ID')
367
+ .option('--active <boolean>', 'Filter by active status')
368
+ .option('--type <type>', 'Filter by type (one_time, recurring)')
369
+ .option('--starting-after <id>', 'Cursor for pagination')
370
+ .action(async function(this: Command, opts) {
371
+ try {
372
+ const client = getClient();
373
+ const result = await client.prices.list({
374
+ limit: parseInt(opts.limit),
375
+ product: opts.product,
376
+ active: opts.active === 'true' ? true : opts.active === 'false' ? false : undefined,
377
+ type: opts.type as 'one_time' | 'recurring' | undefined,
378
+ starting_after: opts.startingAfter,
379
+ });
380
+ print(result, getFormat(this));
381
+ } catch (err) {
382
+ error(String(err));
383
+ process.exit(1);
384
+ }
385
+ });
386
+
387
+ pricesCmd
388
+ .command('get <id>')
389
+ .description('Get a price by ID')
390
+ .action(async function(this: Command, id: string) {
391
+ try {
392
+ const client = getClient();
393
+ const result = await client.prices.get(id);
394
+ print(result, getFormat(this));
395
+ } catch (err) {
396
+ error(String(err));
397
+ process.exit(1);
398
+ }
399
+ });
400
+
401
+ pricesCmd
402
+ .command('create')
403
+ .description('Create a price')
404
+ .requiredOption('--product <id>', 'Product ID')
405
+ .requiredOption('--currency <currency>', 'Currency code (usd, eur, etc.)')
406
+ .option('--unit-amount <cents>', 'Amount in cents')
407
+ .option('--recurring-interval <interval>', 'Recurring interval (day, week, month, year)')
408
+ .option('--recurring-interval-count <count>', 'Interval count')
409
+ .option('--active <boolean>', 'Whether price is active', 'true')
410
+ .option('--nickname <name>', 'Price nickname')
411
+ .option('--metadata <json>', 'Metadata as JSON')
412
+ .action(async function(this: Command, opts) {
413
+ try {
414
+ const client = getClient();
415
+ const result = await client.prices.create({
416
+ product: opts.product,
417
+ currency: opts.currency,
418
+ unit_amount: opts.unitAmount ? parseInt(opts.unitAmount) : undefined,
419
+ active: opts.active === 'true',
420
+ nickname: opts.nickname,
421
+ recurring: opts.recurringInterval ? {
422
+ interval: opts.recurringInterval as 'day' | 'week' | 'month' | 'year',
423
+ interval_count: opts.recurringIntervalCount ? parseInt(opts.recurringIntervalCount) : undefined,
424
+ } : undefined,
425
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
426
+ });
427
+ success('Price created');
428
+ print(result, getFormat(this));
429
+ } catch (err) {
430
+ error(String(err));
431
+ process.exit(1);
432
+ }
433
+ });
434
+
435
+ pricesCmd
436
+ .command('update <id>')
437
+ .description('Update a price')
438
+ .option('--active <boolean>', 'Whether price is active')
439
+ .option('--nickname <name>', 'Price nickname')
440
+ .option('--metadata <json>', 'Metadata as JSON')
441
+ .action(async function(this: Command, id: string, opts) {
442
+ try {
443
+ const client = getClient();
444
+ const result = await client.prices.update(id, {
445
+ active: opts.active === 'true' ? true : opts.active === 'false' ? false : undefined,
446
+ nickname: opts.nickname,
447
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
448
+ });
449
+ success('Price updated');
450
+ print(result, getFormat(this));
451
+ } catch (err) {
452
+ error(String(err));
453
+ process.exit(1);
454
+ }
455
+ });
456
+
457
+ pricesCmd
458
+ .command('search')
459
+ .description('Search prices')
460
+ .requiredOption('-q, --query <query>', 'Search query')
461
+ .option('-l, --limit <number>', 'Maximum results')
462
+ .action(async function(this: Command, opts) {
463
+ try {
464
+ const client = getClient();
465
+ const result = await client.prices.search(opts.query, {
466
+ limit: opts.limit ? parseInt(opts.limit) : undefined,
467
+ });
468
+ print(result, getFormat(this));
469
+ } catch (err) {
470
+ error(String(err));
471
+ process.exit(1);
472
+ }
473
+ });
474
+
475
+ // ============================================
476
+ // Customers Commands
477
+ // ============================================
478
+ const customersCmd = program
479
+ .command('customers')
480
+ .description('Manage customers');
481
+
482
+ customersCmd
483
+ .command('list')
484
+ .description('List all customers')
485
+ .option('-l, --limit <number>', 'Maximum number of customers', '10')
486
+ .option('--email <email>', 'Filter by email')
487
+ .option('--starting-after <id>', 'Cursor for pagination')
488
+ .action(async function(this: Command, opts) {
489
+ try {
490
+ const client = getClient();
491
+ const result = await client.customers.list({
492
+ limit: parseInt(opts.limit),
493
+ email: opts.email,
494
+ starting_after: opts.startingAfter,
495
+ });
496
+ print(result, getFormat(this));
497
+ } catch (err) {
498
+ error(String(err));
499
+ process.exit(1);
500
+ }
501
+ });
502
+
503
+ customersCmd
504
+ .command('get <id>')
505
+ .description('Get a customer by ID')
506
+ .action(async function(this: Command, id: string) {
507
+ try {
508
+ const client = getClient();
509
+ const result = await client.customers.get(id);
510
+ print(result, getFormat(this));
511
+ } catch (err) {
512
+ error(String(err));
513
+ process.exit(1);
514
+ }
515
+ });
516
+
517
+ customersCmd
518
+ .command('create')
519
+ .description('Create a customer')
520
+ .option('-e, --email <email>', 'Customer email')
521
+ .option('-n, --name <name>', 'Customer name')
522
+ .option('--phone <phone>', 'Customer phone')
523
+ .option('-d, --description <text>', 'Customer description')
524
+ .option('--metadata <json>', 'Metadata as JSON')
525
+ .action(async function(this: Command, opts) {
526
+ try {
527
+ const client = getClient();
528
+ const result = await client.customers.create({
529
+ email: opts.email,
530
+ name: opts.name,
531
+ phone: opts.phone,
532
+ description: opts.description,
533
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
534
+ });
535
+ success('Customer created');
536
+ print(result, getFormat(this));
537
+ } catch (err) {
538
+ error(String(err));
539
+ process.exit(1);
540
+ }
541
+ });
542
+
543
+ customersCmd
544
+ .command('update <id>')
545
+ .description('Update a customer')
546
+ .option('-e, --email <email>', 'Customer email')
547
+ .option('-n, --name <name>', 'Customer name')
548
+ .option('--phone <phone>', 'Customer phone')
549
+ .option('-d, --description <text>', 'Customer description')
550
+ .option('--metadata <json>', 'Metadata as JSON')
551
+ .action(async function(this: Command, id: string, opts) {
552
+ try {
553
+ const client = getClient();
554
+ const result = await client.customers.update(id, {
555
+ email: opts.email,
556
+ name: opts.name,
557
+ phone: opts.phone,
558
+ description: opts.description,
559
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
560
+ });
561
+ success('Customer updated');
562
+ print(result, getFormat(this));
563
+ } catch (err) {
564
+ error(String(err));
565
+ process.exit(1);
566
+ }
567
+ });
568
+
569
+ customersCmd
570
+ .command('delete <id>')
571
+ .description('Delete a customer')
572
+ .action(async function(this: Command, id: string) {
573
+ try {
574
+ const client = getClient();
575
+ const result = await client.customers.del(id);
576
+ success('Customer deleted');
577
+ print(result, getFormat(this));
578
+ } catch (err) {
579
+ error(String(err));
580
+ process.exit(1);
581
+ }
582
+ });
583
+
584
+ customersCmd
585
+ .command('search')
586
+ .description('Search customers')
587
+ .requiredOption('-q, --query <query>', 'Search query')
588
+ .option('-l, --limit <number>', 'Maximum results')
589
+ .action(async function(this: Command, opts) {
590
+ try {
591
+ const client = getClient();
592
+ const result = await client.customers.search(opts.query, {
593
+ limit: opts.limit ? parseInt(opts.limit) : undefined,
594
+ });
595
+ print(result, getFormat(this));
596
+ } catch (err) {
597
+ error(String(err));
598
+ process.exit(1);
599
+ }
600
+ });
601
+
602
+ // ============================================
603
+ // Subscriptions Commands
604
+ // ============================================
605
+ const subscriptionsCmd = program
606
+ .command('subscriptions')
607
+ .description('Manage subscriptions');
608
+
609
+ subscriptionsCmd
610
+ .command('list')
611
+ .description('List all subscriptions')
612
+ .option('-l, --limit <number>', 'Maximum number of subscriptions', '10')
613
+ .option('--customer <id>', 'Filter by customer ID')
614
+ .option('--price <id>', 'Filter by price ID')
615
+ .option('--status <status>', 'Filter by status (active, canceled, past_due, etc.)')
616
+ .option('--starting-after <id>', 'Cursor for pagination')
617
+ .action(async function(this: Command, opts) {
618
+ try {
619
+ const client = getClient();
620
+ const result = await client.subscriptions.list({
621
+ limit: parseInt(opts.limit),
622
+ customer: opts.customer,
623
+ price: opts.price,
624
+ status: opts.status,
625
+ starting_after: opts.startingAfter,
626
+ });
627
+ print(result, getFormat(this));
628
+ } catch (err) {
629
+ error(String(err));
630
+ process.exit(1);
631
+ }
632
+ });
633
+
634
+ subscriptionsCmd
635
+ .command('get <id>')
636
+ .description('Get a subscription by ID')
637
+ .action(async function(this: Command, id: string) {
638
+ try {
639
+ const client = getClient();
640
+ const result = await client.subscriptions.get(id);
641
+ print(result, getFormat(this));
642
+ } catch (err) {
643
+ error(String(err));
644
+ process.exit(1);
645
+ }
646
+ });
647
+
648
+ subscriptionsCmd
649
+ .command('create')
650
+ .description('Create a subscription')
651
+ .requiredOption('--customer <id>', 'Customer ID')
652
+ .requiredOption('--price <id>', 'Price ID')
653
+ .option('--quantity <number>', 'Quantity')
654
+ .option('--trial-period-days <days>', 'Trial period in days')
655
+ .option('--cancel-at-period-end <boolean>', 'Cancel at period end')
656
+ .option('--metadata <json>', 'Metadata as JSON')
657
+ .action(async function(this: Command, opts) {
658
+ try {
659
+ const client = getClient();
660
+ const result = await client.subscriptions.create({
661
+ customer: opts.customer,
662
+ items: [{ price: opts.price, quantity: opts.quantity ? parseInt(opts.quantity) : undefined }],
663
+ trial_period_days: opts.trialPeriodDays ? parseInt(opts.trialPeriodDays) : undefined,
664
+ cancel_at_period_end: opts.cancelAtPeriodEnd === 'true',
665
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
666
+ });
667
+ success('Subscription created');
668
+ print(result, getFormat(this));
669
+ } catch (err) {
670
+ error(String(err));
671
+ process.exit(1);
672
+ }
673
+ });
674
+
675
+ subscriptionsCmd
676
+ .command('update <id>')
677
+ .description('Update a subscription')
678
+ .option('--cancel-at-period-end <boolean>', 'Cancel at period end')
679
+ .option('--proration-behavior <behavior>', 'Proration behavior (always_invoice, create_prorations, none)')
680
+ .option('--metadata <json>', 'Metadata as JSON')
681
+ .action(async function(this: Command, id: string, opts) {
682
+ try {
683
+ const client = getClient();
684
+ const result = await client.subscriptions.update(id, {
685
+ cancel_at_period_end: opts.cancelAtPeriodEnd === 'true' ? true : opts.cancelAtPeriodEnd === 'false' ? false : undefined,
686
+ proration_behavior: opts.prorationBehavior,
687
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
688
+ });
689
+ success('Subscription updated');
690
+ print(result, getFormat(this));
691
+ } catch (err) {
692
+ error(String(err));
693
+ process.exit(1);
694
+ }
695
+ });
696
+
697
+ subscriptionsCmd
698
+ .command('cancel <id>')
699
+ .description('Cancel a subscription')
700
+ .option('--prorate', 'Prorate the cancellation')
701
+ .option('--invoice-now', 'Invoice now for prorated amount')
702
+ .action(async function(this: Command, id: string, opts) {
703
+ try {
704
+ const client = getClient();
705
+ const result = await client.subscriptions.cancel(id, {
706
+ prorate: opts.prorate,
707
+ invoice_now: opts.invoiceNow,
708
+ });
709
+ success('Subscription canceled');
710
+ print(result, getFormat(this));
711
+ } catch (err) {
712
+ error(String(err));
713
+ process.exit(1);
714
+ }
715
+ });
716
+
717
+ subscriptionsCmd
718
+ .command('resume <id>')
719
+ .description('Resume a paused subscription')
720
+ .option('--proration-behavior <behavior>', 'Proration behavior')
721
+ .action(async function(this: Command, id: string, opts) {
722
+ try {
723
+ const client = getClient();
724
+ const result = await client.subscriptions.resume(id, {
725
+ proration_behavior: opts.prorationBehavior,
726
+ });
727
+ success('Subscription resumed');
728
+ print(result, getFormat(this));
729
+ } catch (err) {
730
+ error(String(err));
731
+ process.exit(1);
732
+ }
733
+ });
734
+
735
+ subscriptionsCmd
736
+ .command('search')
737
+ .description('Search subscriptions')
738
+ .requiredOption('-q, --query <query>', 'Search query')
739
+ .option('-l, --limit <number>', 'Maximum results')
740
+ .action(async function(this: Command, opts) {
741
+ try {
742
+ const client = getClient();
743
+ const result = await client.subscriptions.search(opts.query, {
744
+ limit: opts.limit ? parseInt(opts.limit) : undefined,
745
+ });
746
+ print(result, getFormat(this));
747
+ } catch (err) {
748
+ error(String(err));
749
+ process.exit(1);
750
+ }
751
+ });
752
+
753
+ // ============================================
754
+ // Payment Intents Commands
755
+ // ============================================
756
+ const paymentIntentsCmd = program
757
+ .command('payment-intents')
758
+ .description('Manage payment intents');
759
+
760
+ paymentIntentsCmd
761
+ .command('list')
762
+ .description('List all payment intents')
763
+ .option('-l, --limit <number>', 'Maximum number of payment intents', '10')
764
+ .option('--customer <id>', 'Filter by customer ID')
765
+ .option('--starting-after <id>', 'Cursor for pagination')
766
+ .action(async function(this: Command, opts) {
767
+ try {
768
+ const client = getClient();
769
+ const result = await client.paymentIntents.list({
770
+ limit: parseInt(opts.limit),
771
+ customer: opts.customer,
772
+ starting_after: opts.startingAfter,
773
+ });
774
+ print(result, getFormat(this));
775
+ } catch (err) {
776
+ error(String(err));
777
+ process.exit(1);
778
+ }
779
+ });
780
+
781
+ paymentIntentsCmd
782
+ .command('get <id>')
783
+ .description('Get a payment intent by ID')
784
+ .action(async function(this: Command, id: string) {
785
+ try {
786
+ const client = getClient();
787
+ const result = await client.paymentIntents.get(id);
788
+ print(result, getFormat(this));
789
+ } catch (err) {
790
+ error(String(err));
791
+ process.exit(1);
792
+ }
793
+ });
794
+
795
+ paymentIntentsCmd
796
+ .command('create')
797
+ .description('Create a payment intent')
798
+ .requiredOption('--amount <cents>', 'Amount in cents')
799
+ .requiredOption('--currency <currency>', 'Currency code')
800
+ .option('--customer <id>', 'Customer ID')
801
+ .option('--payment-method <id>', 'Payment method ID')
802
+ .option('--capture-method <method>', 'Capture method (automatic, manual)')
803
+ .option('--confirm', 'Confirm the payment intent')
804
+ .option('-d, --description <text>', 'Description')
805
+ .option('--metadata <json>', 'Metadata as JSON')
806
+ .action(async function(this: Command, opts) {
807
+ try {
808
+ const client = getClient();
809
+ const result = await client.paymentIntents.create({
810
+ amount: parseInt(opts.amount),
811
+ currency: opts.currency,
812
+ customer: opts.customer,
813
+ payment_method: opts.paymentMethod,
814
+ capture_method: opts.captureMethod,
815
+ confirm: opts.confirm,
816
+ description: opts.description,
817
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
818
+ });
819
+ success('Payment intent created');
820
+ print(result, getFormat(this));
821
+ } catch (err) {
822
+ error(String(err));
823
+ process.exit(1);
824
+ }
825
+ });
826
+
827
+ paymentIntentsCmd
828
+ .command('update <id>')
829
+ .description('Update a payment intent')
830
+ .option('--amount <cents>', 'Amount in cents')
831
+ .option('--customer <id>', 'Customer ID')
832
+ .option('--payment-method <id>', 'Payment method ID')
833
+ .option('-d, --description <text>', 'Description')
834
+ .option('--metadata <json>', 'Metadata as JSON')
835
+ .action(async function(this: Command, id: string, opts) {
836
+ try {
837
+ const client = getClient();
838
+ const result = await client.paymentIntents.update(id, {
839
+ amount: opts.amount ? parseInt(opts.amount) : undefined,
840
+ customer: opts.customer,
841
+ payment_method: opts.paymentMethod,
842
+ description: opts.description,
843
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
844
+ });
845
+ success('Payment intent updated');
846
+ print(result, getFormat(this));
847
+ } catch (err) {
848
+ error(String(err));
849
+ process.exit(1);
850
+ }
851
+ });
852
+
853
+ paymentIntentsCmd
854
+ .command('confirm <id>')
855
+ .description('Confirm a payment intent')
856
+ .option('--payment-method <id>', 'Payment method ID')
857
+ .action(async function(this: Command, id: string, opts) {
858
+ try {
859
+ const client = getClient();
860
+ const result = await client.paymentIntents.confirm(id, {
861
+ payment_method: opts.paymentMethod,
862
+ });
863
+ success('Payment intent confirmed');
864
+ print(result, getFormat(this));
865
+ } catch (err) {
866
+ error(String(err));
867
+ process.exit(1);
868
+ }
869
+ });
870
+
871
+ paymentIntentsCmd
872
+ .command('cancel <id>')
873
+ .description('Cancel a payment intent')
874
+ .option('--reason <reason>', 'Cancellation reason (abandoned, duplicate, fraudulent, requested_by_customer)')
875
+ .action(async function(this: Command, id: string, opts) {
876
+ try {
877
+ const client = getClient();
878
+ const result = await client.paymentIntents.cancel(id, {
879
+ cancellation_reason: opts.reason,
880
+ });
881
+ success('Payment intent canceled');
882
+ print(result, getFormat(this));
883
+ } catch (err) {
884
+ error(String(err));
885
+ process.exit(1);
886
+ }
887
+ });
888
+
889
+ paymentIntentsCmd
890
+ .command('capture <id>')
891
+ .description('Capture a payment intent')
892
+ .option('--amount-to-capture <cents>', 'Amount to capture in cents')
893
+ .action(async function(this: Command, id: string, opts) {
894
+ try {
895
+ const client = getClient();
896
+ const result = await client.paymentIntents.capture(id, {
897
+ amount_to_capture: opts.amountToCapture ? parseInt(opts.amountToCapture) : undefined,
898
+ });
899
+ success('Payment intent captured');
900
+ print(result, getFormat(this));
901
+ } catch (err) {
902
+ error(String(err));
903
+ process.exit(1);
904
+ }
905
+ });
906
+
907
+ paymentIntentsCmd
908
+ .command('search')
909
+ .description('Search payment intents')
910
+ .requiredOption('-q, --query <query>', 'Search query')
911
+ .option('-l, --limit <number>', 'Maximum results')
912
+ .action(async function(this: Command, opts) {
913
+ try {
914
+ const client = getClient();
915
+ const result = await client.paymentIntents.search(opts.query, {
916
+ limit: opts.limit ? parseInt(opts.limit) : undefined,
917
+ });
918
+ print(result, getFormat(this));
919
+ } catch (err) {
920
+ error(String(err));
921
+ process.exit(1);
922
+ }
923
+ });
924
+
925
+ // ============================================
926
+ // Payment Methods Commands
927
+ // ============================================
928
+ const paymentMethodsCmd = program
929
+ .command('payment-methods')
930
+ .description('Manage payment methods');
931
+
932
+ paymentMethodsCmd
933
+ .command('list')
934
+ .description('List payment methods for a customer')
935
+ .requiredOption('--customer <id>', 'Customer ID')
936
+ .requiredOption('--type <type>', 'Payment method type (card, us_bank_account, etc.)')
937
+ .option('-l, --limit <number>', 'Maximum number of payment methods', '10')
938
+ .option('--starting-after <id>', 'Cursor for pagination')
939
+ .action(async function(this: Command, opts) {
940
+ try {
941
+ const client = getClient();
942
+ const result = await client.paymentMethods.list({
943
+ customer: opts.customer,
944
+ type: opts.type,
945
+ limit: parseInt(opts.limit),
946
+ starting_after: opts.startingAfter,
947
+ });
948
+ print(result, getFormat(this));
949
+ } catch (err) {
950
+ error(String(err));
951
+ process.exit(1);
952
+ }
953
+ });
954
+
955
+ paymentMethodsCmd
956
+ .command('get <id>')
957
+ .description('Get a payment method by ID')
958
+ .action(async function(this: Command, id: string) {
959
+ try {
960
+ const client = getClient();
961
+ const result = await client.paymentMethods.get(id);
962
+ print(result, getFormat(this));
963
+ } catch (err) {
964
+ error(String(err));
965
+ process.exit(1);
966
+ }
967
+ });
968
+
969
+ paymentMethodsCmd
970
+ .command('attach <id>')
971
+ .description('Attach a payment method to a customer')
972
+ .requiredOption('--customer <id>', 'Customer ID')
973
+ .action(async function(this: Command, id: string, opts) {
974
+ try {
975
+ const client = getClient();
976
+ const result = await client.paymentMethods.attach(id, {
977
+ customer: opts.customer,
978
+ });
979
+ success('Payment method attached');
980
+ print(result, getFormat(this));
981
+ } catch (err) {
982
+ error(String(err));
983
+ process.exit(1);
984
+ }
985
+ });
986
+
987
+ paymentMethodsCmd
988
+ .command('detach <id>')
989
+ .description('Detach a payment method from a customer')
990
+ .action(async function(this: Command, id: string) {
991
+ try {
992
+ const client = getClient();
993
+ const result = await client.paymentMethods.detach(id);
994
+ success('Payment method detached');
995
+ print(result, getFormat(this));
996
+ } catch (err) {
997
+ error(String(err));
998
+ process.exit(1);
999
+ }
1000
+ });
1001
+
1002
+ // ============================================
1003
+ // Charges Commands
1004
+ // ============================================
1005
+ const chargesCmd = program
1006
+ .command('charges')
1007
+ .description('Manage charges');
1008
+
1009
+ chargesCmd
1010
+ .command('list')
1011
+ .description('List all charges')
1012
+ .option('-l, --limit <number>', 'Maximum number of charges', '10')
1013
+ .option('--customer <id>', 'Filter by customer ID')
1014
+ .option('--payment-intent <id>', 'Filter by payment intent ID')
1015
+ .option('--starting-after <id>', 'Cursor for pagination')
1016
+ .action(async function(this: Command, opts) {
1017
+ try {
1018
+ const client = getClient();
1019
+ const result = await client.charges.list({
1020
+ limit: parseInt(opts.limit),
1021
+ customer: opts.customer,
1022
+ payment_intent: opts.paymentIntent,
1023
+ starting_after: opts.startingAfter,
1024
+ });
1025
+ print(result, getFormat(this));
1026
+ } catch (err) {
1027
+ error(String(err));
1028
+ process.exit(1);
1029
+ }
1030
+ });
1031
+
1032
+ chargesCmd
1033
+ .command('get <id>')
1034
+ .description('Get a charge by ID')
1035
+ .action(async function(this: Command, id: string) {
1036
+ try {
1037
+ const client = getClient();
1038
+ const result = await client.charges.get(id);
1039
+ print(result, getFormat(this));
1040
+ } catch (err) {
1041
+ error(String(err));
1042
+ process.exit(1);
1043
+ }
1044
+ });
1045
+
1046
+ chargesCmd
1047
+ .command('create')
1048
+ .description('Create a charge')
1049
+ .requiredOption('--amount <cents>', 'Amount in cents')
1050
+ .requiredOption('--currency <currency>', 'Currency code')
1051
+ .option('--customer <id>', 'Customer ID')
1052
+ .option('--source <id>', 'Source ID (card, bank account)')
1053
+ .option('--capture <boolean>', 'Capture the charge', 'true')
1054
+ .option('-d, --description <text>', 'Description')
1055
+ .option('--metadata <json>', 'Metadata as JSON')
1056
+ .action(async function(this: Command, opts) {
1057
+ try {
1058
+ const client = getClient();
1059
+ const result = await client.charges.create({
1060
+ amount: parseInt(opts.amount),
1061
+ currency: opts.currency,
1062
+ customer: opts.customer,
1063
+ source: opts.source,
1064
+ capture: opts.capture === 'true',
1065
+ description: opts.description,
1066
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1067
+ });
1068
+ success('Charge created');
1069
+ print(result, getFormat(this));
1070
+ } catch (err) {
1071
+ error(String(err));
1072
+ process.exit(1);
1073
+ }
1074
+ });
1075
+
1076
+ chargesCmd
1077
+ .command('update <id>')
1078
+ .description('Update a charge')
1079
+ .option('--customer <id>', 'Customer ID')
1080
+ .option('-d, --description <text>', 'Description')
1081
+ .option('--metadata <json>', 'Metadata as JSON')
1082
+ .action(async function(this: Command, id: string, opts) {
1083
+ try {
1084
+ const client = getClient();
1085
+ const result = await client.charges.update(id, {
1086
+ customer: opts.customer,
1087
+ description: opts.description,
1088
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1089
+ });
1090
+ success('Charge updated');
1091
+ print(result, getFormat(this));
1092
+ } catch (err) {
1093
+ error(String(err));
1094
+ process.exit(1);
1095
+ }
1096
+ });
1097
+
1098
+ chargesCmd
1099
+ .command('capture <id>')
1100
+ .description('Capture an uncaptured charge')
1101
+ .option('--amount <cents>', 'Amount to capture in cents')
1102
+ .action(async function(this: Command, id: string, opts) {
1103
+ try {
1104
+ const client = getClient();
1105
+ const result = await client.charges.capture(id, {
1106
+ amount: opts.amount ? parseInt(opts.amount) : undefined,
1107
+ });
1108
+ success('Charge captured');
1109
+ print(result, getFormat(this));
1110
+ } catch (err) {
1111
+ error(String(err));
1112
+ process.exit(1);
1113
+ }
1114
+ });
1115
+
1116
+ chargesCmd
1117
+ .command('search')
1118
+ .description('Search charges')
1119
+ .requiredOption('-q, --query <query>', 'Search query')
1120
+ .option('-l, --limit <number>', 'Maximum results')
1121
+ .action(async function(this: Command, opts) {
1122
+ try {
1123
+ const client = getClient();
1124
+ const result = await client.charges.search(opts.query, {
1125
+ limit: opts.limit ? parseInt(opts.limit) : undefined,
1126
+ });
1127
+ print(result, getFormat(this));
1128
+ } catch (err) {
1129
+ error(String(err));
1130
+ process.exit(1);
1131
+ }
1132
+ });
1133
+
1134
+ // ============================================
1135
+ // Invoices Commands
1136
+ // ============================================
1137
+ const invoicesCmd = program
1138
+ .command('invoices')
1139
+ .description('Manage invoices');
1140
+
1141
+ invoicesCmd
1142
+ .command('list')
1143
+ .description('List all invoices')
1144
+ .option('-l, --limit <number>', 'Maximum number of invoices', '10')
1145
+ .option('--customer <id>', 'Filter by customer ID')
1146
+ .option('--subscription <id>', 'Filter by subscription ID')
1147
+ .option('--status <status>', 'Filter by status (draft, open, paid, uncollectible, void)')
1148
+ .option('--starting-after <id>', 'Cursor for pagination')
1149
+ .action(async function(this: Command, opts) {
1150
+ try {
1151
+ const client = getClient();
1152
+ const result = await client.invoices.list({
1153
+ limit: parseInt(opts.limit),
1154
+ customer: opts.customer,
1155
+ subscription: opts.subscription,
1156
+ status: opts.status,
1157
+ starting_after: opts.startingAfter,
1158
+ });
1159
+ print(result, getFormat(this));
1160
+ } catch (err) {
1161
+ error(String(err));
1162
+ process.exit(1);
1163
+ }
1164
+ });
1165
+
1166
+ invoicesCmd
1167
+ .command('get <id>')
1168
+ .description('Get an invoice by ID')
1169
+ .action(async function(this: Command, id: string) {
1170
+ try {
1171
+ const client = getClient();
1172
+ const result = await client.invoices.get(id);
1173
+ print(result, getFormat(this));
1174
+ } catch (err) {
1175
+ error(String(err));
1176
+ process.exit(1);
1177
+ }
1178
+ });
1179
+
1180
+ invoicesCmd
1181
+ .command('create')
1182
+ .description('Create an invoice')
1183
+ .option('--customer <id>', 'Customer ID')
1184
+ .option('--auto-advance <boolean>', 'Auto-finalize the invoice')
1185
+ .option('--collection-method <method>', 'Collection method (charge_automatically, send_invoice)')
1186
+ .option('--days-until-due <days>', 'Days until due (for send_invoice)')
1187
+ .option('-d, --description <text>', 'Description')
1188
+ .option('--metadata <json>', 'Metadata as JSON')
1189
+ .action(async function(this: Command, opts) {
1190
+ try {
1191
+ const client = getClient();
1192
+ const result = await client.invoices.create({
1193
+ customer: opts.customer,
1194
+ auto_advance: opts.autoAdvance === 'true' ? true : opts.autoAdvance === 'false' ? false : undefined,
1195
+ collection_method: opts.collectionMethod,
1196
+ days_until_due: opts.daysUntilDue ? parseInt(opts.daysUntilDue) : undefined,
1197
+ description: opts.description,
1198
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1199
+ });
1200
+ success('Invoice created');
1201
+ print(result, getFormat(this));
1202
+ } catch (err) {
1203
+ error(String(err));
1204
+ process.exit(1);
1205
+ }
1206
+ });
1207
+
1208
+ invoicesCmd
1209
+ .command('update <id>')
1210
+ .description('Update an invoice')
1211
+ .option('--auto-advance <boolean>', 'Auto-finalize the invoice')
1212
+ .option('-d, --description <text>', 'Description')
1213
+ .option('--metadata <json>', 'Metadata as JSON')
1214
+ .action(async function(this: Command, id: string, opts) {
1215
+ try {
1216
+ const client = getClient();
1217
+ const result = await client.invoices.update(id, {
1218
+ auto_advance: opts.autoAdvance === 'true' ? true : opts.autoAdvance === 'false' ? false : undefined,
1219
+ description: opts.description,
1220
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1221
+ });
1222
+ success('Invoice updated');
1223
+ print(result, getFormat(this));
1224
+ } catch (err) {
1225
+ error(String(err));
1226
+ process.exit(1);
1227
+ }
1228
+ });
1229
+
1230
+ invoicesCmd
1231
+ .command('delete <id>')
1232
+ .description('Delete a draft invoice')
1233
+ .action(async function(this: Command, id: string) {
1234
+ try {
1235
+ const client = getClient();
1236
+ const result = await client.invoices.del(id);
1237
+ success('Invoice deleted');
1238
+ print(result, getFormat(this));
1239
+ } catch (err) {
1240
+ error(String(err));
1241
+ process.exit(1);
1242
+ }
1243
+ });
1244
+
1245
+ invoicesCmd
1246
+ .command('finalize <id>')
1247
+ .description('Finalize a draft invoice')
1248
+ .option('--auto-advance <boolean>', 'Auto-advance to send')
1249
+ .action(async function(this: Command, id: string, opts) {
1250
+ try {
1251
+ const client = getClient();
1252
+ const result = await client.invoices.finalize(id, {
1253
+ auto_advance: opts.autoAdvance === 'true' ? true : opts.autoAdvance === 'false' ? false : undefined,
1254
+ });
1255
+ success('Invoice finalized');
1256
+ print(result, getFormat(this));
1257
+ } catch (err) {
1258
+ error(String(err));
1259
+ process.exit(1);
1260
+ }
1261
+ });
1262
+
1263
+ invoicesCmd
1264
+ .command('pay <id>')
1265
+ .description('Pay an invoice')
1266
+ .option('--payment-method <id>', 'Payment method ID')
1267
+ .option('--forgive', 'Forgive any uncollectible invoice items')
1268
+ .option('--off-session', 'Use off-session confirmation')
1269
+ .action(async function(this: Command, id: string, opts) {
1270
+ try {
1271
+ const client = getClient();
1272
+ const result = await client.invoices.pay(id, {
1273
+ payment_method: opts.paymentMethod,
1274
+ forgive: opts.forgive,
1275
+ off_session: opts.offSession,
1276
+ });
1277
+ success('Invoice paid');
1278
+ print(result, getFormat(this));
1279
+ } catch (err) {
1280
+ error(String(err));
1281
+ process.exit(1);
1282
+ }
1283
+ });
1284
+
1285
+ invoicesCmd
1286
+ .command('send <id>')
1287
+ .description('Send an invoice to customer')
1288
+ .action(async function(this: Command, id: string) {
1289
+ try {
1290
+ const client = getClient();
1291
+ const result = await client.invoices.send(id);
1292
+ success('Invoice sent');
1293
+ print(result, getFormat(this));
1294
+ } catch (err) {
1295
+ error(String(err));
1296
+ process.exit(1);
1297
+ }
1298
+ });
1299
+
1300
+ invoicesCmd
1301
+ .command('void <id>')
1302
+ .description('Void an invoice')
1303
+ .action(async function(this: Command, id: string) {
1304
+ try {
1305
+ const client = getClient();
1306
+ const result = await client.invoices.void(id);
1307
+ success('Invoice voided');
1308
+ print(result, getFormat(this));
1309
+ } catch (err) {
1310
+ error(String(err));
1311
+ process.exit(1);
1312
+ }
1313
+ });
1314
+
1315
+ invoicesCmd
1316
+ .command('mark-uncollectible <id>')
1317
+ .description('Mark an invoice as uncollectible')
1318
+ .action(async function(this: Command, id: string) {
1319
+ try {
1320
+ const client = getClient();
1321
+ const result = await client.invoices.markUncollectible(id);
1322
+ success('Invoice marked as uncollectible');
1323
+ print(result, getFormat(this));
1324
+ } catch (err) {
1325
+ error(String(err));
1326
+ process.exit(1);
1327
+ }
1328
+ });
1329
+
1330
+ invoicesCmd
1331
+ .command('search')
1332
+ .description('Search invoices')
1333
+ .requiredOption('-q, --query <query>', 'Search query')
1334
+ .option('-l, --limit <number>', 'Maximum results')
1335
+ .action(async function(this: Command, opts) {
1336
+ try {
1337
+ const client = getClient();
1338
+ const result = await client.invoices.search(opts.query, {
1339
+ limit: opts.limit ? parseInt(opts.limit) : undefined,
1340
+ });
1341
+ print(result, getFormat(this));
1342
+ } catch (err) {
1343
+ error(String(err));
1344
+ process.exit(1);
1345
+ }
1346
+ });
1347
+
1348
+ // ============================================
1349
+ // Invoice Items Commands
1350
+ // ============================================
1351
+ const invoiceItemsCmd = program
1352
+ .command('invoice-items')
1353
+ .description('Manage invoice items');
1354
+
1355
+ invoiceItemsCmd
1356
+ .command('list')
1357
+ .description('List all invoice items')
1358
+ .option('-l, --limit <number>', 'Maximum number of items', '10')
1359
+ .option('--customer <id>', 'Filter by customer ID')
1360
+ .option('--invoice <id>', 'Filter by invoice ID')
1361
+ .option('--pending', 'Only show pending items')
1362
+ .option('--starting-after <id>', 'Cursor for pagination')
1363
+ .action(async function(this: Command, opts) {
1364
+ try {
1365
+ const client = getClient();
1366
+ const result = await client.invoiceItems.list({
1367
+ limit: parseInt(opts.limit),
1368
+ customer: opts.customer,
1369
+ invoice: opts.invoice,
1370
+ pending: opts.pending,
1371
+ starting_after: opts.startingAfter,
1372
+ });
1373
+ print(result, getFormat(this));
1374
+ } catch (err) {
1375
+ error(String(err));
1376
+ process.exit(1);
1377
+ }
1378
+ });
1379
+
1380
+ invoiceItemsCmd
1381
+ .command('get <id>')
1382
+ .description('Get an invoice item by ID')
1383
+ .action(async function(this: Command, id: string) {
1384
+ try {
1385
+ const client = getClient();
1386
+ const result = await client.invoiceItems.get(id);
1387
+ print(result, getFormat(this));
1388
+ } catch (err) {
1389
+ error(String(err));
1390
+ process.exit(1);
1391
+ }
1392
+ });
1393
+
1394
+ invoiceItemsCmd
1395
+ .command('create')
1396
+ .description('Create an invoice item')
1397
+ .requiredOption('--customer <id>', 'Customer ID')
1398
+ .option('--amount <cents>', 'Amount in cents')
1399
+ .option('--currency <currency>', 'Currency code')
1400
+ .option('--price <id>', 'Price ID')
1401
+ .option('--quantity <number>', 'Quantity')
1402
+ .option('--invoice <id>', 'Invoice ID to add item to')
1403
+ .option('-d, --description <text>', 'Description')
1404
+ .option('--metadata <json>', 'Metadata as JSON')
1405
+ .action(async function(this: Command, opts) {
1406
+ try {
1407
+ const client = getClient();
1408
+ const result = await client.invoiceItems.create({
1409
+ customer: opts.customer,
1410
+ amount: opts.amount ? parseInt(opts.amount) : undefined,
1411
+ currency: opts.currency,
1412
+ price: opts.price,
1413
+ quantity: opts.quantity ? parseInt(opts.quantity) : undefined,
1414
+ invoice: opts.invoice,
1415
+ description: opts.description,
1416
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1417
+ });
1418
+ success('Invoice item created');
1419
+ print(result, getFormat(this));
1420
+ } catch (err) {
1421
+ error(String(err));
1422
+ process.exit(1);
1423
+ }
1424
+ });
1425
+
1426
+ invoiceItemsCmd
1427
+ .command('update <id>')
1428
+ .description('Update an invoice item')
1429
+ .option('--amount <cents>', 'Amount in cents')
1430
+ .option('--quantity <number>', 'Quantity')
1431
+ .option('-d, --description <text>', 'Description')
1432
+ .option('--metadata <json>', 'Metadata as JSON')
1433
+ .action(async function(this: Command, id: string, opts) {
1434
+ try {
1435
+ const client = getClient();
1436
+ const result = await client.invoiceItems.update(id, {
1437
+ amount: opts.amount ? parseInt(opts.amount) : undefined,
1438
+ quantity: opts.quantity ? parseInt(opts.quantity) : undefined,
1439
+ description: opts.description,
1440
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1441
+ });
1442
+ success('Invoice item updated');
1443
+ print(result, getFormat(this));
1444
+ } catch (err) {
1445
+ error(String(err));
1446
+ process.exit(1);
1447
+ }
1448
+ });
1449
+
1450
+ invoiceItemsCmd
1451
+ .command('delete <id>')
1452
+ .description('Delete an invoice item')
1453
+ .action(async function(this: Command, id: string) {
1454
+ try {
1455
+ const client = getClient();
1456
+ const result = await client.invoiceItems.del(id);
1457
+ success('Invoice item deleted');
1458
+ print(result, getFormat(this));
1459
+ } catch (err) {
1460
+ error(String(err));
1461
+ process.exit(1);
1462
+ }
1463
+ });
1464
+
1465
+ // ============================================
1466
+ // Coupons Commands
1467
+ // ============================================
1468
+ const couponsCmd = program
1469
+ .command('coupons')
1470
+ .description('Manage coupons');
1471
+
1472
+ couponsCmd
1473
+ .command('list')
1474
+ .description('List all coupons')
1475
+ .option('-l, --limit <number>', 'Maximum number of coupons', '10')
1476
+ .option('--starting-after <id>', 'Cursor for pagination')
1477
+ .action(async function(this: Command, opts) {
1478
+ try {
1479
+ const client = getClient();
1480
+ const result = await client.coupons.list({
1481
+ limit: parseInt(opts.limit),
1482
+ starting_after: opts.startingAfter,
1483
+ });
1484
+ print(result, getFormat(this));
1485
+ } catch (err) {
1486
+ error(String(err));
1487
+ process.exit(1);
1488
+ }
1489
+ });
1490
+
1491
+ couponsCmd
1492
+ .command('get <id>')
1493
+ .description('Get a coupon by ID')
1494
+ .action(async function(this: Command, id: string) {
1495
+ try {
1496
+ const client = getClient();
1497
+ const result = await client.coupons.get(id);
1498
+ print(result, getFormat(this));
1499
+ } catch (err) {
1500
+ error(String(err));
1501
+ process.exit(1);
1502
+ }
1503
+ });
1504
+
1505
+ couponsCmd
1506
+ .command('create')
1507
+ .description('Create a coupon')
1508
+ .requiredOption('--duration <duration>', 'Duration (forever, once, repeating)')
1509
+ .option('--id <id>', 'Custom coupon ID')
1510
+ .option('--percent-off <percent>', 'Percent off (0-100)')
1511
+ .option('--amount-off <cents>', 'Amount off in cents')
1512
+ .option('--currency <currency>', 'Currency for amount off')
1513
+ .option('--duration-in-months <months>', 'Duration in months (for repeating)')
1514
+ .option('--max-redemptions <number>', 'Maximum redemptions')
1515
+ .option('-n, --name <name>', 'Coupon name')
1516
+ .option('--redeem-by <timestamp>', 'Redeem by timestamp')
1517
+ .option('--metadata <json>', 'Metadata as JSON')
1518
+ .action(async function(this: Command, opts) {
1519
+ try {
1520
+ const client = getClient();
1521
+ const result = await client.coupons.create({
1522
+ duration: opts.duration as 'forever' | 'once' | 'repeating',
1523
+ id: opts.id,
1524
+ percent_off: opts.percentOff ? parseFloat(opts.percentOff) : undefined,
1525
+ amount_off: opts.amountOff ? parseInt(opts.amountOff) : undefined,
1526
+ currency: opts.currency,
1527
+ duration_in_months: opts.durationInMonths ? parseInt(opts.durationInMonths) : undefined,
1528
+ max_redemptions: opts.maxRedemptions ? parseInt(opts.maxRedemptions) : undefined,
1529
+ name: opts.name,
1530
+ redeem_by: opts.redeemBy ? parseInt(opts.redeemBy) : undefined,
1531
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1532
+ });
1533
+ success('Coupon created');
1534
+ print(result, getFormat(this));
1535
+ } catch (err) {
1536
+ error(String(err));
1537
+ process.exit(1);
1538
+ }
1539
+ });
1540
+
1541
+ couponsCmd
1542
+ .command('update <id>')
1543
+ .description('Update a coupon')
1544
+ .option('-n, --name <name>', 'Coupon name')
1545
+ .option('--metadata <json>', 'Metadata as JSON')
1546
+ .action(async function(this: Command, id: string, opts) {
1547
+ try {
1548
+ const client = getClient();
1549
+ const result = await client.coupons.update(id, {
1550
+ name: opts.name,
1551
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1552
+ });
1553
+ success('Coupon updated');
1554
+ print(result, getFormat(this));
1555
+ } catch (err) {
1556
+ error(String(err));
1557
+ process.exit(1);
1558
+ }
1559
+ });
1560
+
1561
+ couponsCmd
1562
+ .command('delete <id>')
1563
+ .description('Delete a coupon')
1564
+ .action(async function(this: Command, id: string) {
1565
+ try {
1566
+ const client = getClient();
1567
+ const result = await client.coupons.del(id);
1568
+ success('Coupon deleted');
1569
+ print(result, getFormat(this));
1570
+ } catch (err) {
1571
+ error(String(err));
1572
+ process.exit(1);
1573
+ }
1574
+ });
1575
+
1576
+ // ============================================
1577
+ // Events Commands
1578
+ // ============================================
1579
+ const eventsCmd = program
1580
+ .command('events')
1581
+ .description('View events');
1582
+
1583
+ eventsCmd
1584
+ .command('list')
1585
+ .description('List all events')
1586
+ .option('-l, --limit <number>', 'Maximum number of events', '10')
1587
+ .option('--type <type>', 'Filter by event type (e.g., invoice.paid)')
1588
+ .option('--starting-after <id>', 'Cursor for pagination')
1589
+ .action(async function(this: Command, opts) {
1590
+ try {
1591
+ const client = getClient();
1592
+ const result = await client.events.list({
1593
+ limit: parseInt(opts.limit),
1594
+ type: opts.type,
1595
+ starting_after: opts.startingAfter,
1596
+ });
1597
+ print(result, getFormat(this));
1598
+ } catch (err) {
1599
+ error(String(err));
1600
+ process.exit(1);
1601
+ }
1602
+ });
1603
+
1604
+ eventsCmd
1605
+ .command('get <id>')
1606
+ .description('Get an event by ID')
1607
+ .action(async function(this: Command, id: string) {
1608
+ try {
1609
+ const client = getClient();
1610
+ const result = await client.events.get(id);
1611
+ print(result, getFormat(this));
1612
+ } catch (err) {
1613
+ error(String(err));
1614
+ process.exit(1);
1615
+ }
1616
+ });
1617
+
1618
+ // ============================================
1619
+ // Webhooks Commands
1620
+ // ============================================
1621
+ const webhooksCmd = program
1622
+ .command('webhooks')
1623
+ .description('Manage webhook endpoints');
1624
+
1625
+ webhooksCmd
1626
+ .command('list')
1627
+ .description('List all webhook endpoints')
1628
+ .option('-l, --limit <number>', 'Maximum number of endpoints', '10')
1629
+ .option('--starting-after <id>', 'Cursor for pagination')
1630
+ .action(async function(this: Command, opts) {
1631
+ try {
1632
+ const client = getClient();
1633
+ const result = await client.webhooks.list({
1634
+ limit: parseInt(opts.limit),
1635
+ starting_after: opts.startingAfter,
1636
+ });
1637
+ print(result, getFormat(this));
1638
+ } catch (err) {
1639
+ error(String(err));
1640
+ process.exit(1);
1641
+ }
1642
+ });
1643
+
1644
+ webhooksCmd
1645
+ .command('get <id>')
1646
+ .description('Get a webhook endpoint by ID')
1647
+ .action(async function(this: Command, id: string) {
1648
+ try {
1649
+ const client = getClient();
1650
+ const result = await client.webhooks.get(id);
1651
+ print(result, getFormat(this));
1652
+ } catch (err) {
1653
+ error(String(err));
1654
+ process.exit(1);
1655
+ }
1656
+ });
1657
+
1658
+ webhooksCmd
1659
+ .command('create')
1660
+ .description('Create a webhook endpoint')
1661
+ .requiredOption('--url <url>', 'Webhook endpoint URL')
1662
+ .requiredOption('--events <events>', 'Comma-separated list of events (e.g., invoice.paid,customer.created)')
1663
+ .option('-d, --description <text>', 'Description')
1664
+ .option('--metadata <json>', 'Metadata as JSON')
1665
+ .action(async function(this: Command, opts) {
1666
+ try {
1667
+ const client = getClient();
1668
+ const result = await client.webhooks.create({
1669
+ url: opts.url,
1670
+ enabled_events: opts.events.split(',').map((e: string) => e.trim()),
1671
+ description: opts.description,
1672
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1673
+ });
1674
+ success('Webhook endpoint created');
1675
+ print(result, getFormat(this));
1676
+ } catch (err) {
1677
+ error(String(err));
1678
+ process.exit(1);
1679
+ }
1680
+ });
1681
+
1682
+ webhooksCmd
1683
+ .command('update <id>')
1684
+ .description('Update a webhook endpoint')
1685
+ .option('--url <url>', 'Webhook endpoint URL')
1686
+ .option('--events <events>', 'Comma-separated list of events')
1687
+ .option('--disabled <boolean>', 'Disable the webhook')
1688
+ .option('-d, --description <text>', 'Description')
1689
+ .option('--metadata <json>', 'Metadata as JSON')
1690
+ .action(async function(this: Command, id: string, opts) {
1691
+ try {
1692
+ const client = getClient();
1693
+ const result = await client.webhooks.update(id, {
1694
+ url: opts.url,
1695
+ enabled_events: opts.events ? opts.events.split(',').map((e: string) => e.trim()) : undefined,
1696
+ disabled: opts.disabled === 'true' ? true : opts.disabled === 'false' ? false : undefined,
1697
+ description: opts.description,
1698
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1699
+ });
1700
+ success('Webhook endpoint updated');
1701
+ print(result, getFormat(this));
1702
+ } catch (err) {
1703
+ error(String(err));
1704
+ process.exit(1);
1705
+ }
1706
+ });
1707
+
1708
+ webhooksCmd
1709
+ .command('delete <id>')
1710
+ .description('Delete a webhook endpoint')
1711
+ .action(async function(this: Command, id: string) {
1712
+ try {
1713
+ const client = getClient();
1714
+ const result = await client.webhooks.del(id);
1715
+ success('Webhook endpoint deleted');
1716
+ print(result, getFormat(this));
1717
+ } catch (err) {
1718
+ error(String(err));
1719
+ process.exit(1);
1720
+ }
1721
+ });
1722
+
1723
+ // ============================================
1724
+ // Checkout Sessions Commands
1725
+ // ============================================
1726
+ const checkoutCmd = program
1727
+ .command('checkout')
1728
+ .description('Manage checkout sessions (generate payment links)');
1729
+
1730
+ checkoutCmd
1731
+ .command('create')
1732
+ .description('Create a checkout session and get payment URL')
1733
+ .requiredOption('--mode <mode>', 'Session mode (payment, subscription, setup)')
1734
+ .option('--price <id>', 'Price ID for line item')
1735
+ .option('--quantity <number>', 'Quantity', '1')
1736
+ .option('--customer <id>', 'Customer ID')
1737
+ .option('--customer-email <email>', 'Customer email')
1738
+ .option('--success-url <url>', 'Redirect URL after success')
1739
+ .option('--cancel-url <url>', 'Redirect URL on cancel')
1740
+ .option('--allow-promotion-codes', 'Allow promotion codes')
1741
+ .option('--metadata <json>', 'Metadata as JSON')
1742
+ .action(async function(this: Command, opts) {
1743
+ try {
1744
+ const client = getClient();
1745
+ const result = await client.checkoutSessions.create({
1746
+ mode: opts.mode as 'payment' | 'subscription' | 'setup',
1747
+ line_items: opts.price ? [{ price: opts.price, quantity: parseInt(opts.quantity) }] : undefined,
1748
+ customer: opts.customer,
1749
+ customer_email: opts.customerEmail,
1750
+ success_url: opts.successUrl,
1751
+ cancel_url: opts.cancelUrl,
1752
+ allow_promotion_codes: opts.allowPromotionCodes,
1753
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1754
+ });
1755
+ success('Checkout session created');
1756
+ if (result.url) {
1757
+ info(`Payment URL: ${result.url}`);
1758
+ }
1759
+ print(result, getFormat(this));
1760
+ } catch (err) {
1761
+ error(String(err));
1762
+ process.exit(1);
1763
+ }
1764
+ });
1765
+
1766
+ checkoutCmd
1767
+ .command('get <id>')
1768
+ .description('Get a checkout session by ID')
1769
+ .action(async function(this: Command, id: string) {
1770
+ try {
1771
+ const client = getClient();
1772
+ const result = await client.checkoutSessions.get(id);
1773
+ print(result, getFormat(this));
1774
+ } catch (err) {
1775
+ error(String(err));
1776
+ process.exit(1);
1777
+ }
1778
+ });
1779
+
1780
+ checkoutCmd
1781
+ .command('list')
1782
+ .description('List all checkout sessions')
1783
+ .option('-l, --limit <number>', 'Maximum number of sessions', '10')
1784
+ .option('--customer <id>', 'Filter by customer ID')
1785
+ .option('--status <status>', 'Filter by status (open, complete, expired)')
1786
+ .option('--payment-intent <id>', 'Filter by payment intent ID')
1787
+ .option('--subscription <id>', 'Filter by subscription ID')
1788
+ .option('--starting-after <id>', 'Cursor for pagination')
1789
+ .action(async function(this: Command, opts) {
1790
+ try {
1791
+ const client = getClient();
1792
+ const result = await client.checkoutSessions.list({
1793
+ limit: parseInt(opts.limit),
1794
+ customer: opts.customer,
1795
+ status: opts.status,
1796
+ payment_intent: opts.paymentIntent,
1797
+ subscription: opts.subscription,
1798
+ starting_after: opts.startingAfter,
1799
+ });
1800
+ print(result, getFormat(this));
1801
+ } catch (err) {
1802
+ error(String(err));
1803
+ process.exit(1);
1804
+ }
1805
+ });
1806
+
1807
+ checkoutCmd
1808
+ .command('expire <id>')
1809
+ .description('Expire an open checkout session')
1810
+ .action(async function(this: Command, id: string) {
1811
+ try {
1812
+ const client = getClient();
1813
+ const result = await client.checkoutSessions.expire(id);
1814
+ success('Checkout session expired');
1815
+ print(result, getFormat(this));
1816
+ } catch (err) {
1817
+ error(String(err));
1818
+ process.exit(1);
1819
+ }
1820
+ });
1821
+
1822
+ // ============================================
1823
+ // Payment Links Commands
1824
+ // ============================================
1825
+ const paymentLinksCmd = program
1826
+ .command('payment-links')
1827
+ .description('Manage reusable payment links');
1828
+
1829
+ paymentLinksCmd
1830
+ .command('create')
1831
+ .description('Create a reusable payment link')
1832
+ .requiredOption('--price <id>', 'Price ID')
1833
+ .option('--quantity <number>', 'Quantity', '1')
1834
+ .option('--allow-promotion-codes', 'Allow promotion codes')
1835
+ .option('--after-completion-type <type>', 'After completion type (hosted_confirmation, redirect)')
1836
+ .option('--after-completion-url <url>', 'Redirect URL after completion')
1837
+ .option('--metadata <json>', 'Metadata as JSON')
1838
+ .action(async function(this: Command, opts) {
1839
+ try {
1840
+ const client = getClient();
1841
+ const result = await client.paymentLinks.create({
1842
+ line_items: [{ price: opts.price, quantity: parseInt(opts.quantity) }],
1843
+ allow_promotion_codes: opts.allowPromotionCodes,
1844
+ after_completion: opts.afterCompletionType ? {
1845
+ type: opts.afterCompletionType as 'hosted_confirmation' | 'redirect',
1846
+ redirect: opts.afterCompletionUrl ? { url: opts.afterCompletionUrl } : undefined,
1847
+ } : undefined,
1848
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1849
+ });
1850
+ success('Payment link created');
1851
+ info(`Payment URL: ${result.url}`);
1852
+ print(result, getFormat(this));
1853
+ } catch (err) {
1854
+ error(String(err));
1855
+ process.exit(1);
1856
+ }
1857
+ });
1858
+
1859
+ paymentLinksCmd
1860
+ .command('get <id>')
1861
+ .description('Get a payment link by ID')
1862
+ .action(async function(this: Command, id: string) {
1863
+ try {
1864
+ const client = getClient();
1865
+ const result = await client.paymentLinks.get(id);
1866
+ print(result, getFormat(this));
1867
+ } catch (err) {
1868
+ error(String(err));
1869
+ process.exit(1);
1870
+ }
1871
+ });
1872
+
1873
+ paymentLinksCmd
1874
+ .command('list')
1875
+ .description('List all payment links')
1876
+ .option('-l, --limit <number>', 'Maximum number of links', '10')
1877
+ .option('--active <boolean>', 'Filter by active status')
1878
+ .option('--starting-after <id>', 'Cursor for pagination')
1879
+ .action(async function(this: Command, opts) {
1880
+ try {
1881
+ const client = getClient();
1882
+ const result = await client.paymentLinks.list({
1883
+ limit: parseInt(opts.limit),
1884
+ active: opts.active === 'true' ? true : opts.active === 'false' ? false : undefined,
1885
+ starting_after: opts.startingAfter,
1886
+ });
1887
+ print(result, getFormat(this));
1888
+ } catch (err) {
1889
+ error(String(err));
1890
+ process.exit(1);
1891
+ }
1892
+ });
1893
+
1894
+ paymentLinksCmd
1895
+ .command('update <id>')
1896
+ .description('Update a payment link')
1897
+ .option('--active <boolean>', 'Set active status (false to deactivate)')
1898
+ .option('--metadata <json>', 'Metadata as JSON')
1899
+ .action(async function(this: Command, id: string, opts) {
1900
+ try {
1901
+ const client = getClient();
1902
+ const result = await client.paymentLinks.update(id, {
1903
+ active: opts.active === 'true' ? true : opts.active === 'false' ? false : undefined,
1904
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
1905
+ });
1906
+ success('Payment link updated');
1907
+ print(result, getFormat(this));
1908
+ } catch (err) {
1909
+ error(String(err));
1910
+ process.exit(1);
1911
+ }
1912
+ });
1913
+
1914
+ paymentLinksCmd
1915
+ .command('deactivate <id>')
1916
+ .description('Deactivate a payment link')
1917
+ .action(async function(this: Command, id: string) {
1918
+ try {
1919
+ const client = getClient();
1920
+ const result = await client.paymentLinks.update(id, { active: false });
1921
+ success('Payment link deactivated');
1922
+ print(result, getFormat(this));
1923
+ } catch (err) {
1924
+ error(String(err));
1925
+ process.exit(1);
1926
+ }
1927
+ });
1928
+
1929
+ // ============================================
1930
+ // Billing Portal Commands
1931
+ // ============================================
1932
+ const billingPortalCmd = program
1933
+ .command('billing-portal')
1934
+ .description('Manage customer billing portal');
1935
+
1936
+ billingPortalCmd
1937
+ .command('create-session')
1938
+ .description('Create a billing portal session URL for a customer')
1939
+ .requiredOption('--customer <id>', 'Customer ID')
1940
+ .option('--return-url <url>', 'URL to return to after portal')
1941
+ .option('--configuration <id>', 'Portal configuration ID')
1942
+ .action(async function(this: Command, opts) {
1943
+ try {
1944
+ const client = getClient();
1945
+ const result = await client.billingPortal.createSession({
1946
+ customer: opts.customer,
1947
+ return_url: opts.returnUrl,
1948
+ configuration: opts.configuration,
1949
+ });
1950
+ success('Billing portal session created');
1951
+ info(`Portal URL: ${result.url}`);
1952
+ print(result, getFormat(this));
1953
+ } catch (err) {
1954
+ error(String(err));
1955
+ process.exit(1);
1956
+ }
1957
+ });
1958
+
1959
+ billingPortalCmd
1960
+ .command('list-configurations')
1961
+ .description('List billing portal configurations')
1962
+ .option('-l, --limit <number>', 'Maximum number of configurations', '10')
1963
+ .option('--active <boolean>', 'Filter by active status')
1964
+ .option('--starting-after <id>', 'Cursor for pagination')
1965
+ .action(async function(this: Command, opts) {
1966
+ try {
1967
+ const client = getClient();
1968
+ const result = await client.billingPortal.listConfigurations({
1969
+ limit: parseInt(opts.limit),
1970
+ active: opts.active === 'true' ? true : opts.active === 'false' ? false : undefined,
1971
+ starting_after: opts.startingAfter,
1972
+ });
1973
+ print(result, getFormat(this));
1974
+ } catch (err) {
1975
+ error(String(err));
1976
+ process.exit(1);
1977
+ }
1978
+ });
1979
+
1980
+ billingPortalCmd
1981
+ .command('get-configuration <id>')
1982
+ .description('Get a billing portal configuration')
1983
+ .action(async function(this: Command, id: string) {
1984
+ try {
1985
+ const client = getClient();
1986
+ const result = await client.billingPortal.getConfiguration(id);
1987
+ print(result, getFormat(this));
1988
+ } catch (err) {
1989
+ error(String(err));
1990
+ process.exit(1);
1991
+ }
1992
+ });
1993
+
1994
+ // Parse and execute
1995
+ program.parse();