@hasna/connectors 0.4.0 → 0.4.2

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 (390) hide show
  1. package/bin/index.js +189 -2
  2. package/bin/mcp.js +176 -1
  3. package/bin/serve.js +175 -0
  4. package/connectors/connect-airtable/.env.example +11 -0
  5. package/connectors/connect-airtable/CLAUDE.md +121 -0
  6. package/connectors/connect-airtable/README.md +193 -0
  7. package/connectors/connect-airtable/package.json +50 -0
  8. package/connectors/connect-airtable/src/api/client.ts +139 -0
  9. package/connectors/connect-airtable/src/api/index.ts +405 -0
  10. package/connectors/connect-airtable/src/cli/index.ts +637 -0
  11. package/connectors/connect-airtable/src/index.ts +20 -0
  12. package/connectors/connect-airtable/src/types/index.ts +349 -0
  13. package/connectors/connect-airtable/src/utils/config.ts +197 -0
  14. package/connectors/connect-airtable/tsconfig.json +16 -0
  15. package/connectors/connect-amplitude/.env.example +11 -0
  16. package/connectors/connect-amplitude/CLAUDE.md +121 -0
  17. package/connectors/connect-amplitude/README.md +193 -0
  18. package/connectors/connect-amplitude/package.json +51 -0
  19. package/connectors/connect-amplitude/src/api/client.ts +144 -0
  20. package/connectors/connect-amplitude/src/api/index.ts +215 -0
  21. package/connectors/connect-amplitude/src/cli/index.ts +532 -0
  22. package/connectors/connect-amplitude/src/index.ts +22 -0
  23. package/connectors/connect-amplitude/src/types/index.ts +329 -0
  24. package/connectors/connect-amplitude/src/utils/config.ts +208 -0
  25. package/connectors/connect-amplitude/tsconfig.json +16 -0
  26. package/connectors/connect-calendly/.env.example +11 -0
  27. package/connectors/connect-calendly/CLAUDE.md +272 -0
  28. package/connectors/connect-calendly/README.md +193 -0
  29. package/connectors/connect-calendly/package.json +51 -0
  30. package/connectors/connect-calendly/scripts/release.ts +179 -0
  31. package/connectors/connect-calendly/src/api/client.ts +213 -0
  32. package/connectors/connect-calendly/src/api/example.ts +48 -0
  33. package/connectors/connect-calendly/src/api/index.ts +51 -0
  34. package/connectors/connect-calendly/src/cli/index.ts +254 -0
  35. package/connectors/connect-calendly/src/index.ts +103 -0
  36. package/connectors/connect-calendly/src/types/index.ts +237 -0
  37. package/connectors/connect-calendly/src/utils/auth.ts +274 -0
  38. package/connectors/connect-calendly/src/utils/bulk.ts +212 -0
  39. package/connectors/connect-calendly/src/utils/config.ts +326 -0
  40. package/connectors/connect-calendly/src/utils/output.ts +175 -0
  41. package/connectors/connect-calendly/src/utils/settings.ts +114 -0
  42. package/connectors/connect-calendly/src/utils/storage.ts +198 -0
  43. package/connectors/connect-calendly/tsconfig.json +16 -0
  44. package/connectors/connect-convertkit/.env.example +11 -0
  45. package/connectors/connect-convertkit/CLAUDE.md +272 -0
  46. package/connectors/connect-convertkit/README.md +193 -0
  47. package/connectors/connect-convertkit/package.json +51 -0
  48. package/connectors/connect-convertkit/scripts/release.ts +179 -0
  49. package/connectors/connect-convertkit/src/api/client.ts +213 -0
  50. package/connectors/connect-convertkit/src/api/example.ts +48 -0
  51. package/connectors/connect-convertkit/src/api/index.ts +51 -0
  52. package/connectors/connect-convertkit/src/cli/index.ts +254 -0
  53. package/connectors/connect-convertkit/src/index.ts +103 -0
  54. package/connectors/connect-convertkit/src/types/index.ts +237 -0
  55. package/connectors/connect-convertkit/src/utils/auth.ts +274 -0
  56. package/connectors/connect-convertkit/src/utils/bulk.ts +212 -0
  57. package/connectors/connect-convertkit/src/utils/config.ts +326 -0
  58. package/connectors/connect-convertkit/src/utils/output.ts +175 -0
  59. package/connectors/connect-convertkit/src/utils/settings.ts +114 -0
  60. package/connectors/connect-convertkit/src/utils/storage.ts +198 -0
  61. package/connectors/connect-convertkit/tsconfig.json +16 -0
  62. package/connectors/connect-crisp/.env.example +11 -0
  63. package/connectors/connect-crisp/CLAUDE.md +272 -0
  64. package/connectors/connect-crisp/README.md +193 -0
  65. package/connectors/connect-crisp/package.json +51 -0
  66. package/connectors/connect-crisp/scripts/release.ts +179 -0
  67. package/connectors/connect-crisp/src/api/client.ts +213 -0
  68. package/connectors/connect-crisp/src/api/example.ts +48 -0
  69. package/connectors/connect-crisp/src/api/index.ts +51 -0
  70. package/connectors/connect-crisp/src/cli/index.ts +254 -0
  71. package/connectors/connect-crisp/src/index.ts +103 -0
  72. package/connectors/connect-crisp/src/types/index.ts +237 -0
  73. package/connectors/connect-crisp/src/utils/auth.ts +274 -0
  74. package/connectors/connect-crisp/src/utils/bulk.ts +212 -0
  75. package/connectors/connect-crisp/src/utils/config.ts +326 -0
  76. package/connectors/connect-crisp/src/utils/output.ts +175 -0
  77. package/connectors/connect-crisp/src/utils/settings.ts +114 -0
  78. package/connectors/connect-crisp/src/utils/storage.ts +198 -0
  79. package/connectors/connect-crisp/tsconfig.json +16 -0
  80. package/connectors/connect-docusign/.env.example +11 -0
  81. package/connectors/connect-docusign/CLAUDE.md +128 -0
  82. package/connectors/connect-docusign/README.md +193 -0
  83. package/connectors/connect-docusign/package.json +52 -0
  84. package/connectors/connect-docusign/src/api/client.ts +133 -0
  85. package/connectors/connect-docusign/src/api/index.ts +178 -0
  86. package/connectors/connect-docusign/src/cli/index.ts +381 -0
  87. package/connectors/connect-docusign/src/index.ts +23 -0
  88. package/connectors/connect-docusign/src/types/index.ts +208 -0
  89. package/connectors/connect-docusign/src/utils/config.ts +125 -0
  90. package/connectors/connect-docusign/src/utils/output.ts +119 -0
  91. package/connectors/connect-docusign/tsconfig.json +16 -0
  92. package/connectors/connect-drift/.env.example +11 -0
  93. package/connectors/connect-drift/CLAUDE.md +272 -0
  94. package/connectors/connect-drift/README.md +193 -0
  95. package/connectors/connect-drift/package.json +51 -0
  96. package/connectors/connect-drift/scripts/release.ts +179 -0
  97. package/connectors/connect-drift/src/api/client.ts +213 -0
  98. package/connectors/connect-drift/src/api/example.ts +48 -0
  99. package/connectors/connect-drift/src/api/index.ts +51 -0
  100. package/connectors/connect-drift/src/cli/index.ts +254 -0
  101. package/connectors/connect-drift/src/index.ts +103 -0
  102. package/connectors/connect-drift/src/types/index.ts +237 -0
  103. package/connectors/connect-drift/src/utils/auth.ts +274 -0
  104. package/connectors/connect-drift/src/utils/bulk.ts +212 -0
  105. package/connectors/connect-drift/src/utils/config.ts +326 -0
  106. package/connectors/connect-drift/src/utils/output.ts +175 -0
  107. package/connectors/connect-drift/src/utils/settings.ts +114 -0
  108. package/connectors/connect-drift/src/utils/storage.ts +198 -0
  109. package/connectors/connect-drift/tsconfig.json +16 -0
  110. package/connectors/connect-freshdesk/.env.example +11 -0
  111. package/connectors/connect-freshdesk/CLAUDE.md +272 -0
  112. package/connectors/connect-freshdesk/README.md +193 -0
  113. package/connectors/connect-freshdesk/package.json +51 -0
  114. package/connectors/connect-freshdesk/scripts/release.ts +179 -0
  115. package/connectors/connect-freshdesk/src/api/client.ts +213 -0
  116. package/connectors/connect-freshdesk/src/api/example.ts +48 -0
  117. package/connectors/connect-freshdesk/src/api/index.ts +51 -0
  118. package/connectors/connect-freshdesk/src/cli/index.ts +254 -0
  119. package/connectors/connect-freshdesk/src/index.ts +103 -0
  120. package/connectors/connect-freshdesk/src/types/index.ts +237 -0
  121. package/connectors/connect-freshdesk/src/utils/auth.ts +274 -0
  122. package/connectors/connect-freshdesk/src/utils/bulk.ts +212 -0
  123. package/connectors/connect-freshdesk/src/utils/config.ts +326 -0
  124. package/connectors/connect-freshdesk/src/utils/output.ts +175 -0
  125. package/connectors/connect-freshdesk/src/utils/settings.ts +114 -0
  126. package/connectors/connect-freshdesk/src/utils/storage.ts +198 -0
  127. package/connectors/connect-freshdesk/tsconfig.json +16 -0
  128. package/connectors/connect-gumroad/.env.example +11 -0
  129. package/connectors/connect-gumroad/CLAUDE.md +272 -0
  130. package/connectors/connect-gumroad/README.md +193 -0
  131. package/connectors/connect-gumroad/package.json +51 -0
  132. package/connectors/connect-gumroad/scripts/release.ts +179 -0
  133. package/connectors/connect-gumroad/src/api/client.ts +213 -0
  134. package/connectors/connect-gumroad/src/api/example.ts +48 -0
  135. package/connectors/connect-gumroad/src/api/index.ts +51 -0
  136. package/connectors/connect-gumroad/src/cli/index.ts +254 -0
  137. package/connectors/connect-gumroad/src/index.ts +103 -0
  138. package/connectors/connect-gumroad/src/types/index.ts +237 -0
  139. package/connectors/connect-gumroad/src/utils/auth.ts +274 -0
  140. package/connectors/connect-gumroad/src/utils/bulk.ts +212 -0
  141. package/connectors/connect-gumroad/src/utils/config.ts +326 -0
  142. package/connectors/connect-gumroad/src/utils/output.ts +175 -0
  143. package/connectors/connect-gumroad/src/utils/settings.ts +114 -0
  144. package/connectors/connect-gumroad/src/utils/storage.ts +198 -0
  145. package/connectors/connect-gumroad/tsconfig.json +16 -0
  146. package/connectors/connect-hubspot/.env.example +11 -0
  147. package/connectors/connect-hubspot/CLAUDE.md +128 -0
  148. package/connectors/connect-hubspot/README.md +193 -0
  149. package/connectors/connect-hubspot/package.json +52 -0
  150. package/connectors/connect-hubspot/src/api/client.ts +136 -0
  151. package/connectors/connect-hubspot/src/api/index.ts +379 -0
  152. package/connectors/connect-hubspot/src/cli/index.ts +589 -0
  153. package/connectors/connect-hubspot/src/index.ts +21 -0
  154. package/connectors/connect-hubspot/src/types/index.ts +285 -0
  155. package/connectors/connect-hubspot/src/utils/config.ts +205 -0
  156. package/connectors/connect-hubspot/src/utils/output.ts +119 -0
  157. package/connectors/connect-hubspot/tsconfig.json +16 -0
  158. package/connectors/connect-intercom/.env.example +11 -0
  159. package/connectors/connect-intercom/CLAUDE.md +131 -0
  160. package/connectors/connect-intercom/README.md +193 -0
  161. package/connectors/connect-intercom/package.json +52 -0
  162. package/connectors/connect-intercom/src/api/client.ts +132 -0
  163. package/connectors/connect-intercom/src/api/index.ts +366 -0
  164. package/connectors/connect-intercom/src/cli/index.ts +831 -0
  165. package/connectors/connect-intercom/src/index.ts +21 -0
  166. package/connectors/connect-intercom/src/types/index.ts +650 -0
  167. package/connectors/connect-intercom/src/utils/config.ts +157 -0
  168. package/connectors/connect-intercom/src/utils/output.ts +119 -0
  169. package/connectors/connect-intercom/tsconfig.json +16 -0
  170. package/connectors/connect-lemonsqueezy/.env.example +11 -0
  171. package/connectors/connect-lemonsqueezy/CLAUDE.md +128 -0
  172. package/connectors/connect-lemonsqueezy/README.md +193 -0
  173. package/connectors/connect-lemonsqueezy/package.json +52 -0
  174. package/connectors/connect-lemonsqueezy/src/api/client.ts +133 -0
  175. package/connectors/connect-lemonsqueezy/src/api/index.ts +502 -0
  176. package/connectors/connect-lemonsqueezy/src/cli/index.ts +723 -0
  177. package/connectors/connect-lemonsqueezy/src/index.ts +21 -0
  178. package/connectors/connect-lemonsqueezy/src/types/index.ts +353 -0
  179. package/connectors/connect-lemonsqueezy/src/utils/config.ts +205 -0
  180. package/connectors/connect-lemonsqueezy/src/utils/output.ts +119 -0
  181. package/connectors/connect-lemonsqueezy/tsconfig.json +16 -0
  182. package/connectors/connect-linkedin/.env.example +11 -0
  183. package/connectors/connect-linkedin/CLAUDE.md +124 -0
  184. package/connectors/connect-linkedin/README.md +193 -0
  185. package/connectors/connect-linkedin/package.json +52 -0
  186. package/connectors/connect-linkedin/src/api/client.ts +132 -0
  187. package/connectors/connect-linkedin/src/api/index.ts +313 -0
  188. package/connectors/connect-linkedin/src/cli/index.ts +548 -0
  189. package/connectors/connect-linkedin/src/index.ts +21 -0
  190. package/connectors/connect-linkedin/src/types/index.ts +472 -0
  191. package/connectors/connect-linkedin/src/utils/config.ts +157 -0
  192. package/connectors/connect-linkedin/src/utils/output.ts +119 -0
  193. package/connectors/connect-linkedin/tsconfig.json +16 -0
  194. package/connectors/connect-mailchimp/.env.example +11 -0
  195. package/connectors/connect-mailchimp/CLAUDE.md +127 -0
  196. package/connectors/connect-mailchimp/README.md +193 -0
  197. package/connectors/connect-mailchimp/package.json +52 -0
  198. package/connectors/connect-mailchimp/src/api/client.ts +162 -0
  199. package/connectors/connect-mailchimp/src/api/index.ts +580 -0
  200. package/connectors/connect-mailchimp/src/cli/index.ts +822 -0
  201. package/connectors/connect-mailchimp/src/index.ts +23 -0
  202. package/connectors/connect-mailchimp/src/types/index.ts +585 -0
  203. package/connectors/connect-mailchimp/src/utils/config.ts +208 -0
  204. package/connectors/connect-mailchimp/src/utils/output.ts +119 -0
  205. package/connectors/connect-mailchimp/tsconfig.json +16 -0
  206. package/connectors/connect-mongodb/.env.example +11 -0
  207. package/connectors/connect-mongodb/CLAUDE.md +272 -0
  208. package/connectors/connect-mongodb/README.md +193 -0
  209. package/connectors/connect-mongodb/package.json +51 -0
  210. package/connectors/connect-mongodb/scripts/release.ts +179 -0
  211. package/connectors/connect-mongodb/src/api/client.ts +213 -0
  212. package/connectors/connect-mongodb/src/api/example.ts +48 -0
  213. package/connectors/connect-mongodb/src/api/index.ts +51 -0
  214. package/connectors/connect-mongodb/src/cli/index.ts +254 -0
  215. package/connectors/connect-mongodb/src/index.ts +103 -0
  216. package/connectors/connect-mongodb/src/types/index.ts +237 -0
  217. package/connectors/connect-mongodb/src/utils/auth.ts +274 -0
  218. package/connectors/connect-mongodb/src/utils/bulk.ts +212 -0
  219. package/connectors/connect-mongodb/src/utils/config.ts +326 -0
  220. package/connectors/connect-mongodb/src/utils/output.ts +175 -0
  221. package/connectors/connect-mongodb/src/utils/settings.ts +114 -0
  222. package/connectors/connect-mongodb/src/utils/storage.ts +198 -0
  223. package/connectors/connect-mongodb/tsconfig.json +16 -0
  224. package/connectors/connect-netlify/.env.example +11 -0
  225. package/connectors/connect-netlify/CLAUDE.md +170 -0
  226. package/connectors/connect-netlify/README.md +193 -0
  227. package/connectors/connect-netlify/package.json +53 -0
  228. package/connectors/connect-netlify/src/api/client.ts +132 -0
  229. package/connectors/connect-netlify/src/api/index.ts +533 -0
  230. package/connectors/connect-netlify/src/cli/index.ts +985 -0
  231. package/connectors/connect-netlify/src/index.ts +22 -0
  232. package/connectors/connect-netlify/src/types/index.ts +423 -0
  233. package/connectors/connect-netlify/src/utils/config.ts +171 -0
  234. package/connectors/connect-netlify/src/utils/output.ts +119 -0
  235. package/connectors/connect-netlify/tsconfig.json +16 -0
  236. package/connectors/connect-paypal/.env.example +11 -0
  237. package/connectors/connect-paypal/CLAUDE.md +128 -0
  238. package/connectors/connect-paypal/README.md +193 -0
  239. package/connectors/connect-paypal/package.json +51 -0
  240. package/connectors/connect-paypal/src/api/client.ts +182 -0
  241. package/connectors/connect-paypal/src/api/index.ts +235 -0
  242. package/connectors/connect-paypal/src/cli/index.ts +559 -0
  243. package/connectors/connect-paypal/src/index.ts +23 -0
  244. package/connectors/connect-paypal/src/types/index.ts +377 -0
  245. package/connectors/connect-paypal/src/utils/config.ts +125 -0
  246. package/connectors/connect-paypal/src/utils/output.ts +119 -0
  247. package/connectors/connect-paypal/tsconfig.json +16 -0
  248. package/connectors/connect-pinterest/.env.example +11 -0
  249. package/connectors/connect-pinterest/CLAUDE.md +115 -0
  250. package/connectors/connect-pinterest/README.md +193 -0
  251. package/connectors/connect-pinterest/package.json +52 -0
  252. package/connectors/connect-pinterest/src/api/client.ts +125 -0
  253. package/connectors/connect-pinterest/src/api/index.ts +203 -0
  254. package/connectors/connect-pinterest/src/cli/index.ts +653 -0
  255. package/connectors/connect-pinterest/src/index.ts +21 -0
  256. package/connectors/connect-pinterest/src/types/index.ts +268 -0
  257. package/connectors/connect-pinterest/src/utils/config.ts +157 -0
  258. package/connectors/connect-pinterest/src/utils/output.ts +119 -0
  259. package/connectors/connect-pinterest/tsconfig.json +16 -0
  260. package/connectors/connect-posthog/.env.example +11 -0
  261. package/connectors/connect-posthog/CLAUDE.md +272 -0
  262. package/connectors/connect-posthog/README.md +193 -0
  263. package/connectors/connect-posthog/package.json +51 -0
  264. package/connectors/connect-posthog/scripts/release.ts +179 -0
  265. package/connectors/connect-posthog/src/api/client.ts +213 -0
  266. package/connectors/connect-posthog/src/api/example.ts +48 -0
  267. package/connectors/connect-posthog/src/api/index.ts +51 -0
  268. package/connectors/connect-posthog/src/cli/index.ts +254 -0
  269. package/connectors/connect-posthog/src/index.ts +103 -0
  270. package/connectors/connect-posthog/src/types/index.ts +237 -0
  271. package/connectors/connect-posthog/src/utils/auth.ts +274 -0
  272. package/connectors/connect-posthog/src/utils/bulk.ts +212 -0
  273. package/connectors/connect-posthog/src/utils/config.ts +326 -0
  274. package/connectors/connect-posthog/src/utils/output.ts +175 -0
  275. package/connectors/connect-posthog/src/utils/settings.ts +114 -0
  276. package/connectors/connect-posthog/src/utils/storage.ts +198 -0
  277. package/connectors/connect-posthog/tsconfig.json +16 -0
  278. package/connectors/connect-salesforce/.env.example +11 -0
  279. package/connectors/connect-salesforce/CLAUDE.md +128 -0
  280. package/connectors/connect-salesforce/README.md +193 -0
  281. package/connectors/connect-salesforce/package.json +53 -0
  282. package/connectors/connect-salesforce/src/api/client.ts +150 -0
  283. package/connectors/connect-salesforce/src/api/index.ts +367 -0
  284. package/connectors/connect-salesforce/src/cli/index.ts +594 -0
  285. package/connectors/connect-salesforce/src/index.ts +21 -0
  286. package/connectors/connect-salesforce/src/types/index.ts +292 -0
  287. package/connectors/connect-salesforce/src/utils/config.ts +208 -0
  288. package/connectors/connect-salesforce/src/utils/output.ts +119 -0
  289. package/connectors/connect-salesforce/tsconfig.json +16 -0
  290. package/connectors/connect-segment/.env.example +11 -0
  291. package/connectors/connect-segment/CLAUDE.md +272 -0
  292. package/connectors/connect-segment/README.md +193 -0
  293. package/connectors/connect-segment/package.json +51 -0
  294. package/connectors/connect-segment/scripts/release.ts +179 -0
  295. package/connectors/connect-segment/src/api/client.ts +213 -0
  296. package/connectors/connect-segment/src/api/example.ts +48 -0
  297. package/connectors/connect-segment/src/api/index.ts +51 -0
  298. package/connectors/connect-segment/src/cli/index.ts +254 -0
  299. package/connectors/connect-segment/src/index.ts +103 -0
  300. package/connectors/connect-segment/src/types/index.ts +237 -0
  301. package/connectors/connect-segment/src/utils/auth.ts +274 -0
  302. package/connectors/connect-segment/src/utils/bulk.ts +212 -0
  303. package/connectors/connect-segment/src/utils/config.ts +326 -0
  304. package/connectors/connect-segment/src/utils/output.ts +175 -0
  305. package/connectors/connect-segment/src/utils/settings.ts +114 -0
  306. package/connectors/connect-segment/src/utils/storage.ts +198 -0
  307. package/connectors/connect-segment/tsconfig.json +16 -0
  308. package/connectors/connect-sendgrid/.env.example +11 -0
  309. package/connectors/connect-sendgrid/CLAUDE.md +125 -0
  310. package/connectors/connect-sendgrid/README.md +193 -0
  311. package/connectors/connect-sendgrid/package.json +53 -0
  312. package/connectors/connect-sendgrid/src/api/client.ts +137 -0
  313. package/connectors/connect-sendgrid/src/api/index.ts +588 -0
  314. package/connectors/connect-sendgrid/src/cli/index.ts +764 -0
  315. package/connectors/connect-sendgrid/src/index.ts +21 -0
  316. package/connectors/connect-sendgrid/src/types/index.ts +403 -0
  317. package/connectors/connect-sendgrid/src/utils/config.ts +197 -0
  318. package/connectors/connect-sendgrid/src/utils/output.ts +119 -0
  319. package/connectors/connect-sendgrid/tsconfig.json +16 -0
  320. package/connectors/connect-supabase/.env.example +11 -0
  321. package/connectors/connect-supabase/CLAUDE.md +132 -0
  322. package/connectors/connect-supabase/README.md +193 -0
  323. package/connectors/connect-supabase/package.json +52 -0
  324. package/connectors/connect-supabase/src/api/client.ts +231 -0
  325. package/connectors/connect-supabase/src/api/index.ts +439 -0
  326. package/connectors/connect-supabase/src/cli/index.ts +691 -0
  327. package/connectors/connect-supabase/src/index.ts +24 -0
  328. package/connectors/connect-supabase/src/types/index.ts +215 -0
  329. package/connectors/connect-supabase/src/utils/config.ts +219 -0
  330. package/connectors/connect-supabase/tsconfig.json +16 -0
  331. package/connectors/connect-vercel/.env.example +11 -0
  332. package/connectors/connect-vercel/CLAUDE.md +142 -0
  333. package/connectors/connect-vercel/README.md +193 -0
  334. package/connectors/connect-vercel/package.json +52 -0
  335. package/connectors/connect-vercel/src/api/client.ts +139 -0
  336. package/connectors/connect-vercel/src/api/index.ts +384 -0
  337. package/connectors/connect-vercel/src/cli/index.ts +740 -0
  338. package/connectors/connect-vercel/src/index.ts +24 -0
  339. package/connectors/connect-vercel/src/types/index.ts +350 -0
  340. package/connectors/connect-vercel/src/utils/config.ts +182 -0
  341. package/connectors/connect-vercel/src/utils/output.ts +119 -0
  342. package/connectors/connect-vercel/tsconfig.json +16 -0
  343. package/connectors/connect-zendesk/.env.example +10 -0
  344. package/connectors/connect-zendesk/.github/workflows/deploy.yml +51 -0
  345. package/connectors/connect-zendesk/CLAUDE.md +78 -0
  346. package/connectors/connect-zendesk/Makefile +129 -0
  347. package/connectors/connect-zendesk/README.md +295 -0
  348. package/connectors/connect-zendesk/SCAFFOLD.md +178 -0
  349. package/connectors/connect-zendesk/nginx-connector.conf +218 -0
  350. package/connectors/connect-zendesk/nginx.conf +61 -0
  351. package/connectors/connect-zendesk/package.json +71 -0
  352. package/connectors/connect-zendesk/scripts/init.sh +62 -0
  353. package/connectors/connect-zendesk/scripts/publish.ts +210 -0
  354. package/connectors/connect-zendesk/server/index.js +142 -0
  355. package/connectors/connect-zendesk/src/api/automations.ts +95 -0
  356. package/connectors/connect-zendesk/src/api/brands.ts +80 -0
  357. package/connectors/connect-zendesk/src/api/bulk.ts +838 -0
  358. package/connectors/connect-zendesk/src/api/client.test.ts +315 -0
  359. package/connectors/connect-zendesk/src/api/client.ts +173 -0
  360. package/connectors/connect-zendesk/src/api/example.ts +59 -0
  361. package/connectors/connect-zendesk/src/api/groups.ts +60 -0
  362. package/connectors/connect-zendesk/src/api/index.test.ts +111 -0
  363. package/connectors/connect-zendesk/src/api/index.ts +131 -0
  364. package/connectors/connect-zendesk/src/api/macros.ts +124 -0
  365. package/connectors/connect-zendesk/src/api/organizations.ts +85 -0
  366. package/connectors/connect-zendesk/src/api/slas.ts +80 -0
  367. package/connectors/connect-zendesk/src/api/ticket-fields.ts +98 -0
  368. package/connectors/connect-zendesk/src/api/tickets.test.ts +215 -0
  369. package/connectors/connect-zendesk/src/api/tickets.ts +103 -0
  370. package/connectors/connect-zendesk/src/api/triggers.test.ts +204 -0
  371. package/connectors/connect-zendesk/src/api/triggers.ts +125 -0
  372. package/connectors/connect-zendesk/src/api/users.test.ts +180 -0
  373. package/connectors/connect-zendesk/src/api/users.ts +108 -0
  374. package/connectors/connect-zendesk/src/api/views.test.ts +223 -0
  375. package/connectors/connect-zendesk/src/api/views.ts +145 -0
  376. package/connectors/connect-zendesk/src/api/webhooks.test.ts +208 -0
  377. package/connectors/connect-zendesk/src/api/webhooks.ts +118 -0
  378. package/connectors/connect-zendesk/src/cli/index.ts +1478 -0
  379. package/connectors/connect-zendesk/src/index.ts +36 -0
  380. package/connectors/connect-zendesk/src/server/index.ts +204 -0
  381. package/connectors/connect-zendesk/src/types/index.ts +910 -0
  382. package/connectors/connect-zendesk/src/utils/config.test.ts +193 -0
  383. package/connectors/connect-zendesk/src/utils/config.ts +526 -0
  384. package/connectors/connect-zendesk/src/utils/export.ts +338 -0
  385. package/connectors/connect-zendesk/src/utils/logger.ts +105 -0
  386. package/connectors/connect-zendesk/src/utils/output.test.ts +137 -0
  387. package/connectors/connect-zendesk/src/utils/output.ts +119 -0
  388. package/connectors/connect-zendesk/tsconfig.json +31 -0
  389. package/dist/index.js +175 -0
  390. package/package.json +1 -1
@@ -0,0 +1,349 @@
1
+ // Airtable Connector Types
2
+
3
+ // ============================================
4
+ // Configuration
5
+ // ============================================
6
+
7
+ export interface AirtableConfig {
8
+ accessToken: string;
9
+ }
10
+
11
+ // ============================================
12
+ // Common Types
13
+ // ============================================
14
+
15
+ export type OutputFormat = 'json' | 'pretty';
16
+
17
+ export type FieldType =
18
+ | 'singleLineText'
19
+ | 'email'
20
+ | 'url'
21
+ | 'multilineText'
22
+ | 'number'
23
+ | 'percent'
24
+ | 'currency'
25
+ | 'singleSelect'
26
+ | 'multipleSelects'
27
+ | 'singleCollaborator'
28
+ | 'multipleCollaborators'
29
+ | 'multipleRecordLinks'
30
+ | 'date'
31
+ | 'dateTime'
32
+ | 'phoneNumber'
33
+ | 'multipleAttachments'
34
+ | 'checkbox'
35
+ | 'formula'
36
+ | 'createdTime'
37
+ | 'rollup'
38
+ | 'count'
39
+ | 'lookup'
40
+ | 'multipleLookupValues'
41
+ | 'autoNumber'
42
+ | 'barcode'
43
+ | 'rating'
44
+ | 'richText'
45
+ | 'duration'
46
+ | 'lastModifiedTime'
47
+ | 'createdBy'
48
+ | 'lastModifiedBy'
49
+ | 'button'
50
+ | 'externalSyncSource'
51
+ | 'aiText';
52
+
53
+ // ============================================
54
+ // Base Types
55
+ // ============================================
56
+
57
+ export interface Base {
58
+ id: string;
59
+ name: string;
60
+ permissionLevel: 'none' | 'read' | 'comment' | 'edit' | 'create';
61
+ }
62
+
63
+ export interface ListBasesResult {
64
+ bases: Base[];
65
+ offset?: string;
66
+ }
67
+
68
+ export interface BaseSchema {
69
+ tables: Table[];
70
+ }
71
+
72
+ // ============================================
73
+ // Table Types
74
+ // ============================================
75
+
76
+ export interface Table {
77
+ id: string;
78
+ name: string;
79
+ description?: string;
80
+ primaryFieldId: string;
81
+ fields: Field[];
82
+ views: View[];
83
+ }
84
+
85
+ export interface Field {
86
+ id: string;
87
+ name: string;
88
+ type: FieldType;
89
+ description?: string;
90
+ options?: FieldOptions;
91
+ }
92
+
93
+ export interface FieldOptions {
94
+ // Single/Multi select options
95
+ choices?: SelectChoice[];
96
+ // Number options
97
+ precision?: number;
98
+ // Currency options
99
+ symbol?: string;
100
+ // Linked record options
101
+ linkedTableId?: string;
102
+ inverseLinkFieldId?: string;
103
+ prefersSingleRecordLink?: boolean;
104
+ // Formula options
105
+ formula?: string;
106
+ result?: { type: FieldType };
107
+ // Rollup options
108
+ recordLinkFieldId?: string;
109
+ fieldIdInLinkedTable?: string;
110
+ referencedFieldIds?: string[];
111
+ // Date options
112
+ dateFormat?: { name: string; format: string };
113
+ timeFormat?: { name: string; format: string };
114
+ timeZone?: string;
115
+ // Rating options
116
+ max?: number;
117
+ icon?: string;
118
+ color?: string;
119
+ // Duration options
120
+ durationFormat?: string;
121
+ // Other options
122
+ [key: string]: unknown;
123
+ }
124
+
125
+ export interface SelectChoice {
126
+ id?: string;
127
+ name: string;
128
+ color?: string;
129
+ }
130
+
131
+ export interface View {
132
+ id: string;
133
+ name: string;
134
+ type: 'grid' | 'form' | 'calendar' | 'gallery' | 'kanban' | 'timeline' | 'block';
135
+ }
136
+
137
+ // ============================================
138
+ // Record Types
139
+ // ============================================
140
+
141
+ export interface Record {
142
+ id: string;
143
+ createdTime: string;
144
+ fields: RecordFields;
145
+ }
146
+
147
+ export type RecordFields = { [fieldNameOrId: string]: FieldValue };
148
+
149
+ export type FieldValue =
150
+ | string
151
+ | number
152
+ | boolean
153
+ | null
154
+ | undefined
155
+ | string[]
156
+ | Attachment[]
157
+ | Collaborator
158
+ | Collaborator[]
159
+ | RecordLink
160
+ | RecordLink[]
161
+ | { [key: string]: unknown };
162
+
163
+ export interface Attachment {
164
+ id: string;
165
+ url: string;
166
+ filename: string;
167
+ size: number;
168
+ type: string;
169
+ width?: number;
170
+ height?: number;
171
+ thumbnails?: {
172
+ small?: Thumbnail;
173
+ large?: Thumbnail;
174
+ full?: Thumbnail;
175
+ };
176
+ }
177
+
178
+ export interface Thumbnail {
179
+ url: string;
180
+ width: number;
181
+ height: number;
182
+ }
183
+
184
+ export interface Collaborator {
185
+ id: string;
186
+ email: string;
187
+ name?: string;
188
+ }
189
+
190
+ export interface RecordLink {
191
+ id: string;
192
+ name?: string;
193
+ }
194
+
195
+ export interface ListRecordsResult {
196
+ records: Record[];
197
+ offset?: string;
198
+ }
199
+
200
+ export interface CreateRecordResult {
201
+ id: string;
202
+ createdTime: string;
203
+ fields: RecordFields;
204
+ }
205
+
206
+ export interface UpdateRecordResult {
207
+ id: string;
208
+ createdTime: string;
209
+ fields: RecordFields;
210
+ }
211
+
212
+ export interface DeleteRecordResult {
213
+ deleted: boolean;
214
+ id: string;
215
+ }
216
+
217
+ export interface BatchCreateResult {
218
+ records: CreateRecordResult[];
219
+ }
220
+
221
+ export interface BatchUpdateResult {
222
+ records: UpdateRecordResult[];
223
+ }
224
+
225
+ export interface BatchDeleteResult {
226
+ records: DeleteRecordResult[];
227
+ }
228
+
229
+ // ============================================
230
+ // Comment Types
231
+ // ============================================
232
+
233
+ export interface Comment {
234
+ id: string;
235
+ author: {
236
+ id: string;
237
+ email: string;
238
+ name?: string;
239
+ };
240
+ createdTime: string;
241
+ text: string;
242
+ mentioned?: { [userId: string]: string };
243
+ }
244
+
245
+ export interface ListCommentsResult {
246
+ comments: Comment[];
247
+ offset?: string;
248
+ }
249
+
250
+ // ============================================
251
+ // Webhook Types
252
+ // ============================================
253
+
254
+ export interface Webhook {
255
+ id: string;
256
+ macSecretBase64: string;
257
+ notificationUrl?: string;
258
+ cursorForNextPayload?: number;
259
+ areNotificationsEnabled: boolean;
260
+ isHookEnabled: boolean;
261
+ expirationTime?: string;
262
+ specification: WebhookSpecification;
263
+ }
264
+
265
+ export interface WebhookSpecification {
266
+ options: {
267
+ filters: {
268
+ dataTypes?: ('tableData' | 'tableFields' | 'tableMetadata')[];
269
+ recordChangeScope?: string;
270
+ watchDataInFieldIds?: string[];
271
+ watchSchemasOfFieldIds?: string[];
272
+ sourceOptions?: {
273
+ formSubmission?: {
274
+ viewId: string;
275
+ };
276
+ };
277
+ };
278
+ includes?: {
279
+ includePreviousCellValues?: boolean;
280
+ includePreviousFieldDefinitions?: boolean;
281
+ };
282
+ };
283
+ }
284
+
285
+ export interface ListWebhooksResult {
286
+ webhooks: Webhook[];
287
+ }
288
+
289
+ export interface WebhookPayload {
290
+ timestamp: string;
291
+ baseTransactionNumber: number;
292
+ payloadFormat: 'v0';
293
+ actionMetadata: {
294
+ source: 'client' | 'automation' | 'formSubmission' | 'publicApi' | 'sync' | 'system';
295
+ sourceMetadata?: {
296
+ user?: { id: string; email: string; name?: string };
297
+ automation?: { id: string; name?: string };
298
+ view?: { id: string; name?: string };
299
+ };
300
+ };
301
+ changedTablesById: { [tableId: string]: TableChange };
302
+ createdTablesById?: { [tableId: string]: CreatedTable };
303
+ destroyedTableIds?: string[];
304
+ }
305
+
306
+ export interface TableChange {
307
+ changedRecordsById?: { [recordId: string]: RecordChange };
308
+ createdRecordsById?: { [recordId: string]: { cellValuesByFieldId: RecordFields; createdTime: string } };
309
+ destroyedRecordIds?: string[];
310
+ changedFieldsById?: { [fieldId: string]: { current: Field; previous?: Field } };
311
+ createdFieldsById?: { [fieldId: string]: Field };
312
+ destroyedFieldIds?: string[];
313
+ changedMetadata?: { current: { name?: string; description?: string }; previous?: { name?: string; description?: string } };
314
+ }
315
+
316
+ export interface RecordChange {
317
+ current: { cellValuesByFieldId: RecordFields };
318
+ previous?: { cellValuesByFieldId: RecordFields };
319
+ unchanged?: { cellValuesByFieldId: RecordFields };
320
+ }
321
+
322
+ export interface CreatedTable {
323
+ metadata: { name: string; description?: string };
324
+ fieldsById: { [fieldId: string]: Field };
325
+ recordsById: { [recordId: string]: { cellValuesByFieldId: RecordFields; createdTime: string } };
326
+ }
327
+
328
+ // ============================================
329
+ // API Error Types
330
+ // ============================================
331
+
332
+ export interface AirtableErrorResponse {
333
+ error?: {
334
+ type: string;
335
+ message: string;
336
+ };
337
+ }
338
+
339
+ export class AirtableApiError extends Error {
340
+ public readonly statusCode: number;
341
+ public readonly errorType?: string;
342
+
343
+ constructor(message: string, statusCode: number, errorType?: string) {
344
+ super(message);
345
+ this.name = 'AirtableApiError';
346
+ this.statusCode = statusCode;
347
+ this.errorType = errorType;
348
+ }
349
+ }
@@ -0,0 +1,197 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, rmSync } from 'fs';
2
+ import { homedir } from 'os';
3
+ import { join } from 'path';
4
+
5
+ const CONNECTOR_NAME = 'connect-airtable';
6
+ const DEFAULT_PROFILE = 'default';
7
+
8
+ export interface ProfileConfig {
9
+ accessToken?: string;
10
+ }
11
+
12
+ // Store for --profile flag override (set by CLI before commands run)
13
+ let profileOverride: string | undefined;
14
+
15
+ // Config directory: ~/.connect/{connector-name}/
16
+ const CONFIG_DIR = join(homedir(), '.connect', CONNECTOR_NAME);
17
+ const PROFILES_DIR = join(CONFIG_DIR, 'profiles');
18
+ const CURRENT_PROFILE_FILE = join(CONFIG_DIR, 'current_profile');
19
+
20
+ // ============================================
21
+ // Profile Management
22
+ // ============================================
23
+
24
+ export function setProfileOverride(profile: string | undefined): void {
25
+ profileOverride = profile;
26
+ }
27
+
28
+ export function ensureConfigDir(): void {
29
+ if (!existsSync(CONFIG_DIR)) {
30
+ mkdirSync(CONFIG_DIR, { recursive: true });
31
+ }
32
+ if (!existsSync(PROFILES_DIR)) {
33
+ mkdirSync(PROFILES_DIR, { recursive: true });
34
+ }
35
+ }
36
+
37
+ function getProfilePath(profile: string): string {
38
+ return join(PROFILES_DIR, `${profile}.json`);
39
+ }
40
+
41
+ /**
42
+ * Get the current active profile name
43
+ */
44
+ export function getCurrentProfile(): string {
45
+ if (profileOverride) {
46
+ return profileOverride;
47
+ }
48
+
49
+ ensureConfigDir();
50
+
51
+ if (existsSync(CURRENT_PROFILE_FILE)) {
52
+ try {
53
+ const profile = readFileSync(CURRENT_PROFILE_FILE, 'utf-8').trim();
54
+ if (profile && profileExists(profile)) {
55
+ return profile;
56
+ }
57
+ } catch {
58
+ // Fall through to default
59
+ }
60
+ }
61
+
62
+ return DEFAULT_PROFILE;
63
+ }
64
+
65
+ /**
66
+ * Set the current active profile
67
+ */
68
+ export function setCurrentProfile(profile: string): void {
69
+ ensureConfigDir();
70
+
71
+ if (!profileExists(profile) && profile !== DEFAULT_PROFILE) {
72
+ throw new Error(`Profile "${profile}" does not exist`);
73
+ }
74
+
75
+ writeFileSync(CURRENT_PROFILE_FILE, profile);
76
+ }
77
+
78
+ /**
79
+ * Check if a profile exists
80
+ */
81
+ export function profileExists(profile: string): boolean {
82
+ return existsSync(getProfilePath(profile));
83
+ }
84
+
85
+ /**
86
+ * List all available profiles
87
+ */
88
+ export function listProfiles(): string[] {
89
+ ensureConfigDir();
90
+
91
+ if (!existsSync(PROFILES_DIR)) {
92
+ return [];
93
+ }
94
+
95
+ return readdirSync(PROFILES_DIR)
96
+ .filter(f => f.endsWith('.json'))
97
+ .map(f => f.replace('.json', ''))
98
+ .sort();
99
+ }
100
+
101
+ /**
102
+ * Create a new profile
103
+ */
104
+ export function createProfile(profile: string, config: ProfileConfig = {}): boolean {
105
+ ensureConfigDir();
106
+
107
+ if (profileExists(profile)) {
108
+ return false;
109
+ }
110
+
111
+ // Validate profile name
112
+ if (!/^[a-zA-Z0-9_-]+$/.test(profile)) {
113
+ throw new Error('Profile name can only contain letters, numbers, hyphens, and underscores');
114
+ }
115
+
116
+ writeFileSync(getProfilePath(profile), JSON.stringify(config, null, 2));
117
+ return true;
118
+ }
119
+
120
+ /**
121
+ * Delete a profile
122
+ */
123
+ export function deleteProfile(profile: string): boolean {
124
+ if (profile === DEFAULT_PROFILE) {
125
+ return false;
126
+ }
127
+
128
+ if (!profileExists(profile)) {
129
+ return false;
130
+ }
131
+
132
+ // Switch to default if deleting current profile
133
+ if (getCurrentProfile() === profile) {
134
+ setCurrentProfile(DEFAULT_PROFILE);
135
+ }
136
+
137
+ rmSync(getProfilePath(profile));
138
+ return true;
139
+ }
140
+
141
+ /**
142
+ * Load profile config
143
+ */
144
+ export function loadProfile(profile?: string): ProfileConfig {
145
+ ensureConfigDir();
146
+ const profileName = profile || getCurrentProfile();
147
+ const profilePath = getProfilePath(profileName);
148
+
149
+ if (!existsSync(profilePath)) {
150
+ return {};
151
+ }
152
+
153
+ try {
154
+ return JSON.parse(readFileSync(profilePath, 'utf-8'));
155
+ } catch {
156
+ return {};
157
+ }
158
+ }
159
+
160
+ /**
161
+ * Save profile config
162
+ */
163
+ export function saveProfile(config: ProfileConfig, profile?: string): void {
164
+ ensureConfigDir();
165
+ const profileName = profile || getCurrentProfile();
166
+ writeFileSync(getProfilePath(profileName), JSON.stringify(config, null, 2));
167
+ }
168
+
169
+ // ============================================
170
+ // Access Token Management
171
+ // ============================================
172
+
173
+ export function getAccessToken(): string | undefined {
174
+ return process.env.AIRTABLE_ACCESS_TOKEN || process.env.AIRTABLE_API_KEY || loadProfile().accessToken;
175
+ }
176
+
177
+ export function setAccessToken(accessToken: string): void {
178
+ const config = loadProfile();
179
+ config.accessToken = accessToken;
180
+ saveProfile(config);
181
+ }
182
+
183
+ // ============================================
184
+ // Utility Functions
185
+ // ============================================
186
+
187
+ export function clearConfig(): void {
188
+ saveProfile({});
189
+ }
190
+
191
+ export function getConfigDir(): string {
192
+ return CONFIG_DIR;
193
+ }
194
+
195
+ export function getActiveProfileName(): string {
196
+ return getCurrentProfile();
197
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "esModuleInterop": true,
7
+ "strict": true,
8
+ "skipLibCheck": true,
9
+ "declaration": true,
10
+ "outDir": "./dist",
11
+ "rootDir": "./src",
12
+ "types": ["bun-types"]
13
+ },
14
+ "include": ["src/**/*"],
15
+ "exclude": ["node_modules", "dist", "bin"]
16
+ }
@@ -0,0 +1,11 @@
1
+ # API Credentials
2
+ # TODO: Update variable names and instructions for your API
3
+ # Example: PERPLEXITY_API_KEY, OPENAI_API_KEY, etc.
4
+
5
+ CONNECTOR_API_KEY=your-api-key-here
6
+
7
+ # Optional: API secret (if your API requires it)
8
+ # CONNECTOR_API_SECRET=your-api-secret-here
9
+
10
+ # Optional: Custom base URL (if needed)
11
+ # CONNECTOR_BASE_URL=https://api.example.com
@@ -0,0 +1,121 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ connect-amplitude is a TypeScript connector for the Amplitude Analytics API. It provides a CLI and library for tracking events, searching users, managing cohorts, and accessing analytics data.
8
+
9
+ ## Build & Run Commands
10
+
11
+ ```bash
12
+ # Install dependencies
13
+ bun install
14
+
15
+ # Run CLI in development
16
+ bun run dev
17
+
18
+ # Build for distribution
19
+ bun run build
20
+
21
+ # Type check
22
+ bun run typecheck
23
+
24
+ # Run specific commands
25
+ bun run dev auth status
26
+ bun run dev events track --type "test" --user "user123"
27
+ bun run dev users search "user123"
28
+ bun run dev cohorts list
29
+ ```
30
+
31
+ ## Code Style
32
+
33
+ - TypeScript with strict mode
34
+ - ESM modules (type: module)
35
+ - Use async/await for all async operations
36
+ - Minimal dependencies: commander, chalk only
37
+ - Type annotations required everywhere
38
+ - Use interfaces for all API types
39
+
40
+ ## Project Structure
41
+
42
+ ```
43
+ src/
44
+ ├── api/
45
+ │ ├── client.ts # HTTP client with Basic Auth
46
+ │ └── index.ts # Amplitude API wrapper
47
+ ├── cli/
48
+ │ └── index.ts # CLI commands
49
+ ├── types/
50
+ │ └── index.ts # Type definitions
51
+ ├── utils/
52
+ │ └── config.ts # Multi-profile configuration
53
+ └── index.ts # Library exports
54
+ ```
55
+
56
+ ## API Authentication
57
+
58
+ Amplitude uses Basic Auth with API Key and Secret Key:
59
+ - `Authorization: Basic base64(apiKey:secretKey)`
60
+
61
+ Two API endpoints:
62
+ - `amplitude.com/api/2` - Most API operations
63
+ - `api2.amplitude.com/2` - Batch event uploads
64
+
65
+ ## Key Patterns
66
+
67
+ ### Multi-Profile Configuration
68
+
69
+ Profiles stored in `~/.connect/connect-amplitude/profiles/`:
70
+ - Each profile is a separate JSON file
71
+ - `current_profile` file tracks active profile
72
+ - `--profile` flag overrides for single command
73
+ - Environment variables override profile config
74
+
75
+ ### API Categories
76
+
77
+ - **Events**: Track and upload events (batch)
78
+ - **Users**: Search users, get user activity
79
+ - **Cohorts**: List cohorts, get membership
80
+ - **Charts**: Query chart data
81
+ - **Taxonomy**: Event types, event properties, user properties
82
+
83
+ ## Environment Variables
84
+
85
+ | Variable | Description |
86
+ |----------|-------------|
87
+ | `AMPLITUDE_API_KEY` | API key |
88
+ | `AMPLITUDE_SECRET_KEY` | Secret key |
89
+
90
+ ## CLI Commands
91
+
92
+ - `auth set-key/set-secret/status/clear` - Authentication
93
+ - `profile list/use/create/delete/show` - Profile management
94
+ - `events track` - Track events
95
+ - `users search/activity` - User operations
96
+ - `cohorts list/get/members` - Cohort operations
97
+ - `charts get` - Chart data
98
+ - `taxonomy events/event-properties/user-properties` - Taxonomy
99
+
100
+ ## Data Storage
101
+
102
+ ```
103
+ ~/.connect/connect-amplitude/
104
+ ├── current_profile # Active profile name
105
+ └── profiles/
106
+ ├── default.json # Default profile
107
+ └── {name}.json # Named profiles
108
+ ```
109
+
110
+ Profile JSON structure:
111
+ ```json
112
+ {
113
+ "apiKey": "your-api-key",
114
+ "secretKey": "your-secret-key"
115
+ }
116
+ ```
117
+
118
+ ## Dependencies
119
+
120
+ - commander: CLI framework
121
+ - chalk: Terminal styling