@hasna/connectors 0.4.2 → 0.5.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 (423) hide show
  1. package/bin/index.js +204 -1
  2. package/bin/mcp.js +204 -1
  3. package/bin/serve.js +203 -0
  4. package/connectors/connect-ably/.env.example +11 -0
  5. package/connectors/connect-ably/CLAUDE.md +111 -0
  6. package/connectors/connect-ably/README.md +193 -0
  7. package/connectors/connect-ably/package.json +54 -0
  8. package/connectors/connect-ably/scripts/release.ts +179 -0
  9. package/connectors/connect-ably/src/api/channels.ts +33 -0
  10. package/connectors/connect-ably/src/api/client.ts +203 -0
  11. package/connectors/connect-ably/src/api/index.ts +59 -0
  12. package/connectors/connect-ably/src/api/messages.ts +48 -0
  13. package/connectors/connect-ably/src/api/presence.ts +39 -0
  14. package/connectors/connect-ably/src/api/stats.ts +29 -0
  15. package/connectors/connect-ably/src/cli/index.ts +397 -0
  16. package/connectors/connect-ably/src/index.ts +102 -0
  17. package/connectors/connect-ably/src/types/index.ts +294 -0
  18. package/connectors/connect-ably/src/utils/auth.ts +274 -0
  19. package/connectors/connect-ably/src/utils/bulk.ts +212 -0
  20. package/connectors/connect-ably/src/utils/config.ts +323 -0
  21. package/connectors/connect-ably/src/utils/output.ts +175 -0
  22. package/connectors/connect-ably/src/utils/settings.ts +114 -0
  23. package/connectors/connect-ably/src/utils/storage.ts +198 -0
  24. package/connectors/connect-ably/tsconfig.json +16 -0
  25. package/connectors/connect-assemblyai/.env.example +11 -0
  26. package/connectors/connect-assemblyai/CLAUDE.md +128 -0
  27. package/connectors/connect-assemblyai/README.md +193 -0
  28. package/connectors/connect-assemblyai/package.json +50 -0
  29. package/connectors/connect-assemblyai/src/api/client.ts +192 -0
  30. package/connectors/connect-assemblyai/src/api/index.ts +71 -0
  31. package/connectors/connect-assemblyai/src/cli/index.ts +384 -0
  32. package/connectors/connect-assemblyai/src/index.ts +19 -0
  33. package/connectors/connect-assemblyai/src/types/index.ts +277 -0
  34. package/connectors/connect-assemblyai/src/utils/config.ts +103 -0
  35. package/connectors/connect-assemblyai/src/utils/output.ts +119 -0
  36. package/connectors/connect-assemblyai/tsconfig.json +16 -0
  37. package/connectors/connect-baseten/.env.example +11 -0
  38. package/connectors/connect-baseten/CLAUDE.md +128 -0
  39. package/connectors/connect-baseten/README.md +193 -0
  40. package/connectors/connect-baseten/package.json +51 -0
  41. package/connectors/connect-baseten/src/api/client.ts +71 -0
  42. package/connectors/connect-baseten/src/api/index.ts +40 -0
  43. package/connectors/connect-baseten/src/cli/index.ts +244 -0
  44. package/connectors/connect-baseten/src/index.ts +19 -0
  45. package/connectors/connect-baseten/src/types/index.ts +55 -0
  46. package/connectors/connect-baseten/src/utils/config.ts +103 -0
  47. package/connectors/connect-baseten/src/utils/output.ts +119 -0
  48. package/connectors/connect-baseten/tsconfig.json +16 -0
  49. package/connectors/connect-box/.env.example +11 -0
  50. package/connectors/connect-box/CLAUDE.md +272 -0
  51. package/connectors/connect-box/README.md +193 -0
  52. package/connectors/connect-box/package.json +51 -0
  53. package/connectors/connect-box/scripts/release.ts +179 -0
  54. package/connectors/connect-box/src/api/client.ts +213 -0
  55. package/connectors/connect-box/src/api/example.ts +48 -0
  56. package/connectors/connect-box/src/api/index.ts +51 -0
  57. package/connectors/connect-box/src/cli/index.ts +254 -0
  58. package/connectors/connect-box/src/index.ts +103 -0
  59. package/connectors/connect-box/src/types/index.ts +237 -0
  60. package/connectors/connect-box/src/utils/auth.ts +274 -0
  61. package/connectors/connect-box/src/utils/bulk.ts +212 -0
  62. package/connectors/connect-box/src/utils/config.ts +326 -0
  63. package/connectors/connect-box/src/utils/output.ts +175 -0
  64. package/connectors/connect-box/src/utils/settings.ts +114 -0
  65. package/connectors/connect-box/src/utils/storage.ts +198 -0
  66. package/connectors/connect-box/tsconfig.json +16 -0
  67. package/connectors/connect-cerebras/.env.example +11 -0
  68. package/connectors/connect-cerebras/CLAUDE.md +128 -0
  69. package/connectors/connect-cerebras/README.md +193 -0
  70. package/connectors/connect-cerebras/package.json +51 -0
  71. package/connectors/connect-cerebras/src/api/client.ts +64 -0
  72. package/connectors/connect-cerebras/src/api/index.ts +32 -0
  73. package/connectors/connect-cerebras/src/cli/index.ts +244 -0
  74. package/connectors/connect-cerebras/src/index.ts +19 -0
  75. package/connectors/connect-cerebras/src/types/index.ts +65 -0
  76. package/connectors/connect-cerebras/src/utils/config.ts +103 -0
  77. package/connectors/connect-cerebras/src/utils/output.ts +119 -0
  78. package/connectors/connect-cerebras/tsconfig.json +16 -0
  79. package/connectors/connect-clearbit/.env.example +11 -0
  80. package/connectors/connect-clearbit/CLAUDE.md +272 -0
  81. package/connectors/connect-clearbit/README.md +193 -0
  82. package/connectors/connect-clearbit/package.json +51 -0
  83. package/connectors/connect-clearbit/scripts/release.ts +179 -0
  84. package/connectors/connect-clearbit/src/api/client.ts +213 -0
  85. package/connectors/connect-clearbit/src/api/example.ts +48 -0
  86. package/connectors/connect-clearbit/src/api/index.ts +51 -0
  87. package/connectors/connect-clearbit/src/cli/index.ts +254 -0
  88. package/connectors/connect-clearbit/src/index.ts +103 -0
  89. package/connectors/connect-clearbit/src/types/index.ts +237 -0
  90. package/connectors/connect-clearbit/src/utils/auth.ts +274 -0
  91. package/connectors/connect-clearbit/src/utils/bulk.ts +212 -0
  92. package/connectors/connect-clearbit/src/utils/config.ts +326 -0
  93. package/connectors/connect-clearbit/src/utils/output.ts +175 -0
  94. package/connectors/connect-clearbit/src/utils/settings.ts +114 -0
  95. package/connectors/connect-clearbit/src/utils/storage.ts +198 -0
  96. package/connectors/connect-clearbit/tsconfig.json +16 -0
  97. package/connectors/connect-coda/.env.example +11 -0
  98. package/connectors/connect-coda/CLAUDE.md +272 -0
  99. package/connectors/connect-coda/README.md +193 -0
  100. package/connectors/connect-coda/package.json +51 -0
  101. package/connectors/connect-coda/scripts/release.ts +179 -0
  102. package/connectors/connect-coda/src/api/client.ts +213 -0
  103. package/connectors/connect-coda/src/api/example.ts +48 -0
  104. package/connectors/connect-coda/src/api/index.ts +51 -0
  105. package/connectors/connect-coda/src/cli/index.ts +254 -0
  106. package/connectors/connect-coda/src/index.ts +103 -0
  107. package/connectors/connect-coda/src/types/index.ts +237 -0
  108. package/connectors/connect-coda/src/utils/auth.ts +274 -0
  109. package/connectors/connect-coda/src/utils/bulk.ts +212 -0
  110. package/connectors/connect-coda/src/utils/config.ts +326 -0
  111. package/connectors/connect-coda/src/utils/output.ts +175 -0
  112. package/connectors/connect-coda/src/utils/settings.ts +114 -0
  113. package/connectors/connect-coda/src/utils/storage.ts +198 -0
  114. package/connectors/connect-coda/tsconfig.json +16 -0
  115. package/connectors/connect-cohere/.env.example +11 -0
  116. package/connectors/connect-cohere/CLAUDE.md +128 -0
  117. package/connectors/connect-cohere/README.md +193 -0
  118. package/connectors/connect-cohere/package.json +53 -0
  119. package/connectors/connect-cohere/src/api/client.ts +109 -0
  120. package/connectors/connect-cohere/src/api/index.ts +59 -0
  121. package/connectors/connect-cohere/src/cli/index.ts +255 -0
  122. package/connectors/connect-cohere/src/index.ts +19 -0
  123. package/connectors/connect-cohere/src/types/index.ts +132 -0
  124. package/connectors/connect-cohere/src/utils/config.ts +197 -0
  125. package/connectors/connect-cohere/src/utils/output.ts +119 -0
  126. package/connectors/connect-cohere/tsconfig.json +16 -0
  127. package/connectors/connect-deepgram/.env.example +11 -0
  128. package/connectors/connect-deepgram/CLAUDE.md +128 -0
  129. package/connectors/connect-deepgram/README.md +193 -0
  130. package/connectors/connect-deepgram/package.json +51 -0
  131. package/connectors/connect-deepgram/src/api/client.ts +235 -0
  132. package/connectors/connect-deepgram/src/api/index.ts +57 -0
  133. package/connectors/connect-deepgram/src/cli/index.ts +339 -0
  134. package/connectors/connect-deepgram/src/index.ts +19 -0
  135. package/connectors/connect-deepgram/src/types/index.ts +232 -0
  136. package/connectors/connect-deepgram/src/utils/config.ts +103 -0
  137. package/connectors/connect-deepgram/src/utils/output.ts +119 -0
  138. package/connectors/connect-deepgram/tsconfig.json +16 -0
  139. package/connectors/connect-deepseek/.env.example +11 -0
  140. package/connectors/connect-deepseek/CLAUDE.md +128 -0
  141. package/connectors/connect-deepseek/README.md +193 -0
  142. package/connectors/connect-deepseek/package.json +51 -0
  143. package/connectors/connect-deepseek/src/api/client.ts +108 -0
  144. package/connectors/connect-deepseek/src/api/index.ts +36 -0
  145. package/connectors/connect-deepseek/src/cli/index.ts +167 -0
  146. package/connectors/connect-deepseek/src/index.ts +19 -0
  147. package/connectors/connect-deepseek/src/types/index.ts +72 -0
  148. package/connectors/connect-deepseek/src/utils/config.ts +103 -0
  149. package/connectors/connect-deepseek/src/utils/output.ts +119 -0
  150. package/connectors/connect-deepseek/tsconfig.json +16 -0
  151. package/connectors/connect-dropbox/.env.example +11 -0
  152. package/connectors/connect-dropbox/CLAUDE.md +119 -0
  153. package/connectors/connect-dropbox/README.md +193 -0
  154. package/connectors/connect-dropbox/package.json +51 -0
  155. package/connectors/connect-dropbox/src/api/client.ts +222 -0
  156. package/connectors/connect-dropbox/src/api/index.ts +395 -0
  157. package/connectors/connect-dropbox/src/cli/index.ts +627 -0
  158. package/connectors/connect-dropbox/src/index.ts +20 -0
  159. package/connectors/connect-dropbox/src/types/index.ts +516 -0
  160. package/connectors/connect-dropbox/src/utils/config.ts +197 -0
  161. package/connectors/connect-dropbox/tsconfig.json +16 -0
  162. package/connectors/connect-fal/.env.example +11 -0
  163. package/connectors/connect-fal/CLAUDE.md +128 -0
  164. package/connectors/connect-fal/README.md +193 -0
  165. package/connectors/connect-fal/package.json +51 -0
  166. package/connectors/connect-fal/src/api/client.ts +172 -0
  167. package/connectors/connect-fal/src/api/index.ts +55 -0
  168. package/connectors/connect-fal/src/cli/index.ts +341 -0
  169. package/connectors/connect-fal/src/index.ts +19 -0
  170. package/connectors/connect-fal/src/types/index.ts +135 -0
  171. package/connectors/connect-fal/src/utils/config.ts +103 -0
  172. package/connectors/connect-fal/src/utils/output.ts +119 -0
  173. package/connectors/connect-fal/tsconfig.json +16 -0
  174. package/connectors/connect-fireworks/.env.example +11 -0
  175. package/connectors/connect-fireworks/CLAUDE.md +128 -0
  176. package/connectors/connect-fireworks/README.md +193 -0
  177. package/connectors/connect-fireworks/package.json +51 -0
  178. package/connectors/connect-fireworks/src/api/client.ts +63 -0
  179. package/connectors/connect-fireworks/src/api/index.ts +36 -0
  180. package/connectors/connect-fireworks/src/cli/index.ts +244 -0
  181. package/connectors/connect-fireworks/src/index.ts +19 -0
  182. package/connectors/connect-fireworks/src/types/index.ts +70 -0
  183. package/connectors/connect-fireworks/src/utils/config.ts +103 -0
  184. package/connectors/connect-fireworks/src/utils/output.ts +119 -0
  185. package/connectors/connect-fireworks/tsconfig.json +16 -0
  186. package/connectors/connect-groq/.env.example +11 -0
  187. package/connectors/connect-groq/CLAUDE.md +128 -0
  188. package/connectors/connect-groq/README.md +193 -0
  189. package/connectors/connect-groq/package.json +52 -0
  190. package/connectors/connect-groq/src/api/client.ts +108 -0
  191. package/connectors/connect-groq/src/api/index.ts +36 -0
  192. package/connectors/connect-groq/src/cli/index.ts +171 -0
  193. package/connectors/connect-groq/src/index.ts +19 -0
  194. package/connectors/connect-groq/src/types/index.ts +69 -0
  195. package/connectors/connect-groq/src/utils/config.ts +103 -0
  196. package/connectors/connect-groq/src/utils/output.ts +119 -0
  197. package/connectors/connect-groq/tsconfig.json +16 -0
  198. package/connectors/connect-linode/.env.example +11 -0
  199. package/connectors/connect-linode/CLAUDE.md +272 -0
  200. package/connectors/connect-linode/README.md +193 -0
  201. package/connectors/connect-linode/package.json +51 -0
  202. package/connectors/connect-linode/scripts/release.ts +179 -0
  203. package/connectors/connect-linode/src/api/client.ts +213 -0
  204. package/connectors/connect-linode/src/api/example.ts +48 -0
  205. package/connectors/connect-linode/src/api/index.ts +51 -0
  206. package/connectors/connect-linode/src/cli/index.ts +254 -0
  207. package/connectors/connect-linode/src/index.ts +103 -0
  208. package/connectors/connect-linode/src/types/index.ts +237 -0
  209. package/connectors/connect-linode/src/utils/auth.ts +274 -0
  210. package/connectors/connect-linode/src/utils/bulk.ts +212 -0
  211. package/connectors/connect-linode/src/utils/config.ts +326 -0
  212. package/connectors/connect-linode/src/utils/output.ts +175 -0
  213. package/connectors/connect-linode/src/utils/settings.ts +114 -0
  214. package/connectors/connect-linode/src/utils/storage.ts +198 -0
  215. package/connectors/connect-linode/tsconfig.json +16 -0
  216. package/connectors/connect-luma/.env.example +11 -0
  217. package/connectors/connect-luma/CLAUDE.md +128 -0
  218. package/connectors/connect-luma/README.md +193 -0
  219. package/connectors/connect-luma/package.json +53 -0
  220. package/connectors/connect-luma/src/api/client.ts +85 -0
  221. package/connectors/connect-luma/src/api/index.ts +44 -0
  222. package/connectors/connect-luma/src/cli/index.ts +300 -0
  223. package/connectors/connect-luma/src/index.ts +19 -0
  224. package/connectors/connect-luma/src/types/index.ts +60 -0
  225. package/connectors/connect-luma/src/utils/config.ts +103 -0
  226. package/connectors/connect-luma/src/utils/output.ts +119 -0
  227. package/connectors/connect-luma/tsconfig.json +16 -0
  228. package/connectors/connect-mailgun/.env.example +11 -0
  229. package/connectors/connect-mailgun/CLAUDE.md +272 -0
  230. package/connectors/connect-mailgun/README.md +193 -0
  231. package/connectors/connect-mailgun/package.json +51 -0
  232. package/connectors/connect-mailgun/scripts/release.ts +179 -0
  233. package/connectors/connect-mailgun/src/api/client.ts +213 -0
  234. package/connectors/connect-mailgun/src/api/example.ts +48 -0
  235. package/connectors/connect-mailgun/src/api/index.ts +51 -0
  236. package/connectors/connect-mailgun/src/cli/index.ts +254 -0
  237. package/connectors/connect-mailgun/src/index.ts +103 -0
  238. package/connectors/connect-mailgun/src/types/index.ts +237 -0
  239. package/connectors/connect-mailgun/src/utils/auth.ts +274 -0
  240. package/connectors/connect-mailgun/src/utils/bulk.ts +212 -0
  241. package/connectors/connect-mailgun/src/utils/config.ts +326 -0
  242. package/connectors/connect-mailgun/src/utils/output.ts +175 -0
  243. package/connectors/connect-mailgun/src/utils/settings.ts +114 -0
  244. package/connectors/connect-mailgun/src/utils/storage.ts +198 -0
  245. package/connectors/connect-mailgun/tsconfig.json +16 -0
  246. package/connectors/connect-messagebird/.env.example +11 -0
  247. package/connectors/connect-messagebird/CLAUDE.md +272 -0
  248. package/connectors/connect-messagebird/README.md +193 -0
  249. package/connectors/connect-messagebird/package.json +51 -0
  250. package/connectors/connect-messagebird/scripts/release.ts +179 -0
  251. package/connectors/connect-messagebird/src/api/client.ts +213 -0
  252. package/connectors/connect-messagebird/src/api/example.ts +48 -0
  253. package/connectors/connect-messagebird/src/api/index.ts +51 -0
  254. package/connectors/connect-messagebird/src/cli/index.ts +254 -0
  255. package/connectors/connect-messagebird/src/index.ts +103 -0
  256. package/connectors/connect-messagebird/src/types/index.ts +237 -0
  257. package/connectors/connect-messagebird/src/utils/auth.ts +274 -0
  258. package/connectors/connect-messagebird/src/utils/bulk.ts +212 -0
  259. package/connectors/connect-messagebird/src/utils/config.ts +326 -0
  260. package/connectors/connect-messagebird/src/utils/output.ts +175 -0
  261. package/connectors/connect-messagebird/src/utils/settings.ts +114 -0
  262. package/connectors/connect-messagebird/src/utils/storage.ts +198 -0
  263. package/connectors/connect-messagebird/tsconfig.json +16 -0
  264. package/connectors/connect-miro/.env.example +11 -0
  265. package/connectors/connect-miro/CLAUDE.md +272 -0
  266. package/connectors/connect-miro/README.md +193 -0
  267. package/connectors/connect-miro/package.json +51 -0
  268. package/connectors/connect-miro/scripts/release.ts +179 -0
  269. package/connectors/connect-miro/src/api/client.ts +213 -0
  270. package/connectors/connect-miro/src/api/example.ts +48 -0
  271. package/connectors/connect-miro/src/api/index.ts +51 -0
  272. package/connectors/connect-miro/src/cli/index.ts +254 -0
  273. package/connectors/connect-miro/src/index.ts +103 -0
  274. package/connectors/connect-miro/src/types/index.ts +237 -0
  275. package/connectors/connect-miro/src/utils/auth.ts +274 -0
  276. package/connectors/connect-miro/src/utils/bulk.ts +212 -0
  277. package/connectors/connect-miro/src/utils/config.ts +326 -0
  278. package/connectors/connect-miro/src/utils/output.ts +175 -0
  279. package/connectors/connect-miro/src/utils/settings.ts +114 -0
  280. package/connectors/connect-miro/src/utils/storage.ts +198 -0
  281. package/connectors/connect-miro/tsconfig.json +16 -0
  282. package/connectors/connect-modal/.env.example +11 -0
  283. package/connectors/connect-modal/CLAUDE.md +128 -0
  284. package/connectors/connect-modal/README.md +193 -0
  285. package/connectors/connect-modal/package.json +51 -0
  286. package/connectors/connect-modal/src/api/client.ts +119 -0
  287. package/connectors/connect-modal/src/api/index.ts +69 -0
  288. package/connectors/connect-modal/src/cli/index.ts +224 -0
  289. package/connectors/connect-modal/src/index.ts +21 -0
  290. package/connectors/connect-modal/src/types/index.ts +60 -0
  291. package/connectors/connect-modal/src/utils/config.ts +114 -0
  292. package/connectors/connect-modal/src/utils/output.ts +119 -0
  293. package/connectors/connect-modal/tsconfig.json +16 -0
  294. package/connectors/connect-monday/.env.example +11 -0
  295. package/connectors/connect-monday/CLAUDE.md +128 -0
  296. package/connectors/connect-monday/README.md +193 -0
  297. package/connectors/connect-monday/package.json +52 -0
  298. package/connectors/connect-monday/src/api/client.ts +59 -0
  299. package/connectors/connect-monday/src/api/index.ts +539 -0
  300. package/connectors/connect-monday/src/cli/index.ts +479 -0
  301. package/connectors/connect-monday/src/index.ts +19 -0
  302. package/connectors/connect-monday/src/types/index.ts +274 -0
  303. package/connectors/connect-monday/src/utils/config.ts +197 -0
  304. package/connectors/connect-monday/src/utils/output.ts +119 -0
  305. package/connectors/connect-monday/tsconfig.json +16 -0
  306. package/connectors/connect-perplexity/.env.example +4 -0
  307. package/connectors/connect-perplexity/CLAUDE.md +156 -0
  308. package/connectors/connect-perplexity/README.md +184 -0
  309. package/connectors/connect-perplexity/package.json +58 -0
  310. package/connectors/connect-perplexity/scripts/publish.ts +210 -0
  311. package/connectors/connect-perplexity/src/api/client.ts +119 -0
  312. package/connectors/connect-perplexity/src/api/example.ts +118 -0
  313. package/connectors/connect-perplexity/src/api/index.ts +48 -0
  314. package/connectors/connect-perplexity/src/cli/index.ts +421 -0
  315. package/connectors/connect-perplexity/src/index.ts +24 -0
  316. package/connectors/connect-perplexity/src/types/index.ts +140 -0
  317. package/connectors/connect-perplexity/src/utils/config.ts +208 -0
  318. package/connectors/connect-perplexity/src/utils/output.ts +119 -0
  319. package/connectors/connect-perplexity/tsconfig.json +16 -0
  320. package/connectors/connect-pipedrive/.env.example +11 -0
  321. package/connectors/connect-pipedrive/CLAUDE.md +128 -0
  322. package/connectors/connect-pipedrive/README.md +193 -0
  323. package/connectors/connect-pipedrive/package.json +52 -0
  324. package/connectors/connect-pipedrive/src/api/client.ts +121 -0
  325. package/connectors/connect-pipedrive/src/api/index.ts +306 -0
  326. package/connectors/connect-pipedrive/src/cli/index.ts +824 -0
  327. package/connectors/connect-pipedrive/src/index.ts +19 -0
  328. package/connectors/connect-pipedrive/src/types/index.ts +335 -0
  329. package/connectors/connect-pipedrive/src/utils/config.ts +171 -0
  330. package/connectors/connect-pipedrive/src/utils/output.ts +119 -0
  331. package/connectors/connect-pipedrive/tsconfig.json +16 -0
  332. package/connectors/connect-pusher/.env.example +11 -0
  333. package/connectors/connect-pusher/CLAUDE.md +272 -0
  334. package/connectors/connect-pusher/README.md +193 -0
  335. package/connectors/connect-pusher/package.json +51 -0
  336. package/connectors/connect-pusher/scripts/release.ts +179 -0
  337. package/connectors/connect-pusher/src/api/client.ts +213 -0
  338. package/connectors/connect-pusher/src/api/example.ts +48 -0
  339. package/connectors/connect-pusher/src/api/index.ts +51 -0
  340. package/connectors/connect-pusher/src/cli/index.ts +254 -0
  341. package/connectors/connect-pusher/src/index.ts +103 -0
  342. package/connectors/connect-pusher/src/types/index.ts +237 -0
  343. package/connectors/connect-pusher/src/utils/auth.ts +274 -0
  344. package/connectors/connect-pusher/src/utils/bulk.ts +212 -0
  345. package/connectors/connect-pusher/src/utils/config.ts +326 -0
  346. package/connectors/connect-pusher/src/utils/output.ts +175 -0
  347. package/connectors/connect-pusher/src/utils/settings.ts +114 -0
  348. package/connectors/connect-pusher/src/utils/storage.ts +198 -0
  349. package/connectors/connect-pusher/tsconfig.json +16 -0
  350. package/connectors/connect-replicate/.env.example +11 -0
  351. package/connectors/connect-replicate/CLAUDE.md +128 -0
  352. package/connectors/connect-replicate/README.md +193 -0
  353. package/connectors/connect-replicate/package.json +51 -0
  354. package/connectors/connect-replicate/src/api/client.ts +109 -0
  355. package/connectors/connect-replicate/src/api/index.ts +71 -0
  356. package/connectors/connect-replicate/src/cli/index.ts +250 -0
  357. package/connectors/connect-replicate/src/index.ts +19 -0
  358. package/connectors/connect-replicate/src/types/index.ts +85 -0
  359. package/connectors/connect-replicate/src/utils/config.ts +103 -0
  360. package/connectors/connect-replicate/src/utils/output.ts +119 -0
  361. package/connectors/connect-replicate/tsconfig.json +16 -0
  362. package/connectors/connect-roboflow/.env.example +11 -0
  363. package/connectors/connect-roboflow/CLAUDE.md +272 -0
  364. package/connectors/connect-roboflow/README.md +193 -0
  365. package/connectors/connect-roboflow/package.json +51 -0
  366. package/connectors/connect-roboflow/scripts/release.ts +179 -0
  367. package/connectors/connect-roboflow/src/api/client.ts +213 -0
  368. package/connectors/connect-roboflow/src/api/example.ts +48 -0
  369. package/connectors/connect-roboflow/src/api/index.ts +51 -0
  370. package/connectors/connect-roboflow/src/cli/index.ts +254 -0
  371. package/connectors/connect-roboflow/src/index.ts +103 -0
  372. package/connectors/connect-roboflow/src/types/index.ts +237 -0
  373. package/connectors/connect-roboflow/src/utils/auth.ts +274 -0
  374. package/connectors/connect-roboflow/src/utils/bulk.ts +212 -0
  375. package/connectors/connect-roboflow/src/utils/config.ts +326 -0
  376. package/connectors/connect-roboflow/src/utils/output.ts +175 -0
  377. package/connectors/connect-roboflow/src/utils/settings.ts +114 -0
  378. package/connectors/connect-roboflow/src/utils/storage.ts +198 -0
  379. package/connectors/connect-roboflow/tsconfig.json +16 -0
  380. package/connectors/connect-runway/.env.example +11 -0
  381. package/connectors/connect-runway/CLAUDE.md +128 -0
  382. package/connectors/connect-runway/README.md +193 -0
  383. package/connectors/connect-runway/package.json +52 -0
  384. package/connectors/connect-runway/src/api/client.ts +78 -0
  385. package/connectors/connect-runway/src/api/index.ts +40 -0
  386. package/connectors/connect-runway/src/cli/index.ts +283 -0
  387. package/connectors/connect-runway/src/index.ts +19 -0
  388. package/connectors/connect-runway/src/types/index.ts +52 -0
  389. package/connectors/connect-runway/src/utils/config.ts +103 -0
  390. package/connectors/connect-runway/src/utils/output.ts +119 -0
  391. package/connectors/connect-runway/tsconfig.json +16 -0
  392. package/connectors/connect-together/.env.example +11 -0
  393. package/connectors/connect-together/CLAUDE.md +128 -0
  394. package/connectors/connect-together/README.md +193 -0
  395. package/connectors/connect-together/package.json +52 -0
  396. package/connectors/connect-together/src/api/client.ts +106 -0
  397. package/connectors/connect-together/src/api/index.ts +47 -0
  398. package/connectors/connect-together/src/cli/index.ts +228 -0
  399. package/connectors/connect-together/src/index.ts +19 -0
  400. package/connectors/connect-together/src/types/index.ts +91 -0
  401. package/connectors/connect-together/src/utils/config.ts +142 -0
  402. package/connectors/connect-together/src/utils/output.ts +119 -0
  403. package/connectors/connect-together/tsconfig.json +16 -0
  404. package/connectors/connect-vonage/.env.example +11 -0
  405. package/connectors/connect-vonage/CLAUDE.md +272 -0
  406. package/connectors/connect-vonage/README.md +193 -0
  407. package/connectors/connect-vonage/package.json +51 -0
  408. package/connectors/connect-vonage/scripts/release.ts +179 -0
  409. package/connectors/connect-vonage/src/api/client.ts +213 -0
  410. package/connectors/connect-vonage/src/api/example.ts +48 -0
  411. package/connectors/connect-vonage/src/api/index.ts +51 -0
  412. package/connectors/connect-vonage/src/cli/index.ts +254 -0
  413. package/connectors/connect-vonage/src/index.ts +103 -0
  414. package/connectors/connect-vonage/src/types/index.ts +237 -0
  415. package/connectors/connect-vonage/src/utils/auth.ts +274 -0
  416. package/connectors/connect-vonage/src/utils/bulk.ts +212 -0
  417. package/connectors/connect-vonage/src/utils/config.ts +326 -0
  418. package/connectors/connect-vonage/src/utils/output.ts +175 -0
  419. package/connectors/connect-vonage/src/utils/settings.ts +114 -0
  420. package/connectors/connect-vonage/src/utils/storage.ts +198 -0
  421. package/connectors/connect-vonage/tsconfig.json +16 -0
  422. package/dist/index.js +203 -0
  423. package/package.json +1 -1
@@ -0,0 +1,156 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ connect-perplexity is a TypeScript CLI and library for Perplexity AI's API. It provides chat completions with web search grounding, supporting multiple Sonar models with citation tracking.
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
+ # Example commands
25
+ bun run dev ask "What is AI?"
26
+ bun run dev chat search "latest news"
27
+ bun run dev models
28
+ ```
29
+
30
+ ## Code Style
31
+
32
+ - TypeScript with strict mode
33
+ - ESM modules (type: module)
34
+ - Use async/await for all async operations
35
+ - Minimal dependencies: commander, chalk only
36
+ - Type annotations required everywhere
37
+ - Use interfaces for all API types
38
+
39
+ ## Project Structure
40
+
41
+ ```
42
+ src/
43
+ ├── api/
44
+ │ ├── client.ts # HTTP client for Perplexity API
45
+ │ ├── example.ts # ChatApi - chat completions
46
+ │ └── index.ts # Main Perplexity class
47
+ ├── cli/
48
+ │ └── index.ts # CLI commands (ask, search, chat, config, profile)
49
+ ├── types/
50
+ │ └── index.ts # Perplexity API types
51
+ ├── utils/
52
+ │ ├── config.ts # Multi-profile configuration
53
+ │ └── output.ts # CLI output formatting
54
+ └── index.ts # Library exports
55
+ ```
56
+
57
+ ## Key Types
58
+
59
+ ```typescript
60
+ // Models available
61
+ type PerplexityModel =
62
+ | 'sonar'
63
+ | 'sonar-pro'
64
+ | 'sonar-reasoning'
65
+ | 'sonar-reasoning-pro'
66
+ | 'sonar-deep-research';
67
+
68
+ // Chat message structure
69
+ interface ChatMessage {
70
+ role: 'system' | 'user' | 'assistant';
71
+ content: string;
72
+ }
73
+
74
+ // Response includes citations
75
+ interface ChatCompletionResponse {
76
+ choices: ChatCompletionChoice[];
77
+ usage: ChatCompletionUsage;
78
+ citations?: string[]; // Source URLs
79
+ search_results?: SearchResult[];
80
+ }
81
+ ```
82
+
83
+ ## API Patterns
84
+
85
+ ### ChatApi Methods
86
+
87
+ - `create(messages, options)` - Full chat completion with message history
88
+ - `ask(question, options)` - Simple question/answer
89
+ - `search(query, options)` - Web search with answer
90
+ - `research(topic, options)` - Deep research (uses sonar-deep-research)
91
+ - `reason(prompt, options)` - Reasoning task (uses sonar-reasoning-pro)
92
+
93
+ ### Options
94
+
95
+ ```typescript
96
+ interface ChatOptions {
97
+ model?: PerplexityModel;
98
+ maxTokens?: number;
99
+ temperature?: number;
100
+ searchRecencyFilter?: 'month' | 'week' | 'day' | 'hour';
101
+ systemPrompt?: string;
102
+ // ...more
103
+ }
104
+ ```
105
+
106
+ ## Environment Variables
107
+
108
+ | Variable | Description |
109
+ |----------|-------------|
110
+ | `PERPLEXITY_API_KEY` | API key (overrides profile) |
111
+
112
+ ## Data Storage
113
+
114
+ ```
115
+ ~/.connect/connect-perplexity/
116
+ ├── current_profile # Active profile name
117
+ └── profiles/
118
+ ├── default.json # Default profile
119
+ └── {name}.json # Named profiles
120
+ ```
121
+
122
+ Profile JSON:
123
+ ```json
124
+ {
125
+ "apiKey": "pplx-xxx",
126
+ "defaultModel": "sonar-pro"
127
+ }
128
+ ```
129
+
130
+ ## CLI Commands
131
+
132
+ ```bash
133
+ # Quick commands
134
+ connect-perplexity ask <question>
135
+ connect-perplexity search <query>
136
+ connect-perplexity models
137
+
138
+ # Chat commands
139
+ connect-perplexity chat ask <question> [-m model] [-t temp] [--recency hour|day|week|month]
140
+ connect-perplexity chat search <query> [--recency]
141
+ connect-perplexity chat research <topic>
142
+ connect-perplexity chat reason <prompt>
143
+
144
+ # Config
145
+ connect-perplexity config set-key <key>
146
+ connect-perplexity config set-model <model>
147
+ connect-perplexity config show
148
+
149
+ # Profiles
150
+ connect-perplexity profile list|use|create|delete|show
151
+ ```
152
+
153
+ ## Dependencies
154
+
155
+ - commander: CLI framework
156
+ - chalk: Terminal styling
@@ -0,0 +1,184 @@
1
+ # connect-perplexity
2
+
3
+ A TypeScript CLI and library for interacting with Perplexity AI's API. Chat completions with web search grounding.
4
+
5
+ ## Features
6
+
7
+ - Chat completions with web search grounding
8
+ - Multiple Sonar models (sonar, sonar-pro, sonar-reasoning, sonar-deep-research)
9
+ - Citations and source tracking
10
+ - Multi-profile configuration (switch between different API keys)
11
+ - Pretty and JSON output formats
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ # Install globally
17
+ bun add -g @hasna/connect-perplexity
18
+
19
+ # Or install locally
20
+ bun add @hasna/connect-perplexity
21
+ ```
22
+
23
+ ## Setup
24
+
25
+ ### Get API Key
26
+
27
+ 1. Go to [Perplexity AI Settings](https://www.perplexity.ai/settings/api)
28
+ 2. Create an API key
29
+ 3. Set it in the CLI:
30
+
31
+ ```bash
32
+ connect-perplexity config set-key pplx-xxxxx
33
+
34
+ # Or use environment variable
35
+ export PERPLEXITY_API_KEY=pplx-xxxxx
36
+ ```
37
+
38
+ ## CLI Usage
39
+
40
+ ### Quick Commands
41
+
42
+ ```bash
43
+ # Ask a question
44
+ connect-perplexity ask "What is quantum computing?"
45
+
46
+ # Search the web
47
+ connect-perplexity search "latest AI news 2026"
48
+
49
+ # List available models
50
+ connect-perplexity models
51
+ ```
52
+
53
+ ### Chat Commands
54
+
55
+ ```bash
56
+ # Ask with specific model
57
+ connect-perplexity chat ask "Explain neural networks" -m sonar-pro
58
+
59
+ # Search with recency filter
60
+ connect-perplexity chat search "Bitcoin price" --recency day
61
+
62
+ # Deep research on a topic
63
+ connect-perplexity chat research "Climate change solutions"
64
+
65
+ # Reasoning task
66
+ connect-perplexity chat reason "If all A are B, and all B are C, what can we conclude?"
67
+ ```
68
+
69
+ ### Profile Management
70
+
71
+ ```bash
72
+ # Create profiles for different API keys
73
+ connect-perplexity profile create work --api-key pplx-xxx --use
74
+ connect-perplexity profile create personal --api-key pplx-yyy
75
+
76
+ # Switch profiles
77
+ connect-perplexity profile use work
78
+
79
+ # Use profile for single command
80
+ connect-perplexity -p personal ask "Hello"
81
+
82
+ # List profiles
83
+ connect-perplexity profile list
84
+ ```
85
+
86
+ ### Configuration
87
+
88
+ ```bash
89
+ # Set API key
90
+ connect-perplexity config set-key <key>
91
+
92
+ # Set default model
93
+ connect-perplexity config set-model sonar-pro
94
+
95
+ # Show configuration
96
+ connect-perplexity config show
97
+ ```
98
+
99
+ ## Library Usage
100
+
101
+ ```typescript
102
+ import { Perplexity } from '@hasna/connect-perplexity';
103
+
104
+ // Create client
105
+ const perplexity = new Perplexity({ apiKey: 'pplx-xxx' });
106
+
107
+ // Or from environment
108
+ const perplexity = Perplexity.fromEnv(); // Uses PERPLEXITY_API_KEY
109
+
110
+ // Ask a question
111
+ const response = await perplexity.chat.ask('What is quantum computing?');
112
+ console.log(response.choices[0].message.content);
113
+
114
+ // With options
115
+ const response = await perplexity.chat.ask('Explain AI', {
116
+ model: 'sonar-pro',
117
+ temperature: 0.7,
118
+ maxTokens: 1000,
119
+ });
120
+
121
+ // Search the web
122
+ const search = await perplexity.chat.search('latest AI news');
123
+ console.log(search.citations); // Array of source URLs
124
+
125
+ // Deep research
126
+ const research = await perplexity.chat.research('Climate change impacts');
127
+
128
+ // Reasoning
129
+ const reason = await perplexity.chat.reason('Solve this logic puzzle...');
130
+
131
+ // Full chat with messages
132
+ const chat = await perplexity.chat.create([
133
+ { role: 'system', content: 'You are a helpful assistant.' },
134
+ { role: 'user', content: 'Hello!' },
135
+ ], { model: 'sonar' });
136
+ ```
137
+
138
+ ## Models
139
+
140
+ | Model | Description |
141
+ |-------|-------------|
142
+ | `sonar` | Standard model for general queries |
143
+ | `sonar-pro` | Enhanced model with better accuracy |
144
+ | `sonar-reasoning` | Optimized for reasoning tasks |
145
+ | `sonar-reasoning-pro` | Enhanced reasoning model |
146
+ | `sonar-deep-research` | Comprehensive research model |
147
+
148
+ ## Environment Variables
149
+
150
+ | Variable | Description |
151
+ |----------|-------------|
152
+ | `PERPLEXITY_API_KEY` | API key (overrides profile config) |
153
+
154
+ ## Data Storage
155
+
156
+ Configuration stored in `~/.connect/connect-perplexity/`:
157
+
158
+ ```
159
+ ~/.connect/connect-perplexity/
160
+ ├── current_profile # Active profile name
161
+ └── profiles/
162
+ ├── default.json # Default profile
163
+ └── {name}.json # Named profiles
164
+ ```
165
+
166
+ ## Development
167
+
168
+ ```bash
169
+ # Install dependencies
170
+ bun install
171
+
172
+ # Run CLI in development
173
+ bun run dev
174
+
175
+ # Build
176
+ bun run build
177
+
178
+ # Type check
179
+ bun run typecheck
180
+ ```
181
+
182
+ ## License
183
+
184
+ MIT
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@hasna/connect-perplexity",
3
+ "version": "0.0.2",
4
+ "description": "Perplexity AI API connector CLI - Chat completions with web search grounding",
5
+ "type": "module",
6
+ "bin": {
7
+ "connect-perplexity": "./bin/index.js"
8
+ },
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "scripts": {
18
+ "build": "bun build ./src/index.ts --outdir ./dist --target bun && bun build ./src/cli/index.ts --outdir ./bin --target bun",
19
+ "dev": "bun run ./src/cli/index.ts",
20
+ "typecheck": "tsc --noEmit",
21
+ "prepublishOnly": "bun run build",
22
+ "release": "bun run ./scripts/publish.ts",
23
+ "release:patch": "bun run ./scripts/publish.ts patch",
24
+ "release:minor": "bun run ./scripts/publish.ts minor",
25
+ "release:major": "bun run ./scripts/publish.ts major",
26
+ "release:dry": "bun run ./scripts/publish.ts --dry-run"
27
+ },
28
+ "keywords": [
29
+ "perplexity",
30
+ "ai",
31
+ "llm",
32
+ "chat",
33
+ "search",
34
+ "sonar",
35
+ "api",
36
+ "connector",
37
+ "cli",
38
+ "typescript",
39
+ "bun"
40
+ ],
41
+ "author": "Hasna",
42
+ "license": "Apache-2.0",
43
+ "devDependencies": {
44
+ "@types/bun": "latest",
45
+ "typescript": "^5"
46
+ },
47
+ "dependencies": {
48
+ "commander": "^12.1.0",
49
+ "chalk": "^5.3.0"
50
+ },
51
+ "engines": {
52
+ "bun": ">=1.0.0"
53
+ },
54
+ "repository": {
55
+ "type": "git",
56
+ "url": "git+https://github.com/hasna/open-connectors.git"
57
+ }
58
+ }
@@ -0,0 +1,210 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Auto-versioning publish script
4
+ * - Fetches current npm version
5
+ * - Auto-bumps patch version if local version <= npm version
6
+ * - Creates git tag
7
+ * - Publishes to npm
8
+ */
9
+
10
+ import { $ } from 'bun';
11
+ import { readFileSync, writeFileSync } from 'fs';
12
+ import { join } from 'path';
13
+
14
+ interface PackageJson {
15
+ name: string;
16
+ version: string;
17
+ [key: string]: unknown;
18
+ }
19
+
20
+ type BumpType = 'patch' | 'minor' | 'major';
21
+
22
+ function parseVersion(version: string): { major: number; minor: number; patch: number } {
23
+ const [major, minor, patch] = version.split('.').map(Number);
24
+ return { major, minor, patch };
25
+ }
26
+
27
+ function bumpVersion(version: string, type: BumpType = 'patch'): string {
28
+ const { major, minor, patch } = parseVersion(version);
29
+
30
+ switch (type) {
31
+ case 'major':
32
+ return `${major + 1}.0.0`;
33
+ case 'minor':
34
+ return `${major}.${minor + 1}.0`;
35
+ case 'patch':
36
+ default:
37
+ return `${major}.${minor}.${patch + 1}`;
38
+ }
39
+ }
40
+
41
+ function compareVersions(a: string, b: string): number {
42
+ const vA = parseVersion(a);
43
+ const vB = parseVersion(b);
44
+
45
+ if (vA.major !== vB.major) return vA.major - vB.major;
46
+ if (vA.minor !== vB.minor) return vA.minor - vB.minor;
47
+ return vA.patch - vB.patch;
48
+ }
49
+
50
+ async function getNpmVersion(packageName: string): Promise<string | null> {
51
+ try {
52
+ const result = await $`npm view ${packageName} version 2>/dev/null`.text();
53
+ return result.trim() || null;
54
+ } catch {
55
+ return null;
56
+ }
57
+ }
58
+
59
+ async function hasUncommittedChanges(): Promise<boolean> {
60
+ try {
61
+ const result = await $`git status --porcelain`.text();
62
+ return result.trim().length > 0;
63
+ } catch {
64
+ return false;
65
+ }
66
+ }
67
+
68
+ async function isGitRepo(): Promise<boolean> {
69
+ try {
70
+ await $`git rev-parse --git-dir 2>/dev/null`.text();
71
+ return true;
72
+ } catch {
73
+ return false;
74
+ }
75
+ }
76
+
77
+ async function createGitTag(version: string, packageName: string): Promise<boolean> {
78
+ const tagName = `${packageName}@${version}`;
79
+
80
+ try {
81
+ // Check if tag already exists
82
+ const existingTags = await $`git tag -l ${tagName}`.text();
83
+ if (existingTags.trim()) {
84
+ console.log(`⚠️ Tag ${tagName} already exists, skipping tag creation`);
85
+ return true;
86
+ }
87
+
88
+ await $`git tag -a ${tagName} -m "Release ${tagName}"`;
89
+ console.log(`✅ Created git tag: ${tagName}`);
90
+ return true;
91
+ } catch (error) {
92
+ console.error(`❌ Failed to create git tag: ${error}`);
93
+ return false;
94
+ }
95
+ }
96
+
97
+ async function commitVersionBump(version: string, packageName: string): Promise<boolean> {
98
+ try {
99
+ await $`git add package.json`;
100
+ await $`git commit -m "chore(${packageName}): bump version to ${version}"`;
101
+ console.log(`✅ Committed version bump`);
102
+ return true;
103
+ } catch (error) {
104
+ console.error(`❌ Failed to commit: ${error}`);
105
+ return false;
106
+ }
107
+ }
108
+
109
+ async function main() {
110
+ const args = process.argv.slice(2);
111
+ const bumpType = (args.find(a => ['patch', 'minor', 'major'].includes(a)) || 'patch') as BumpType;
112
+ const skipGit = args.includes('--skip-git');
113
+ const dryRun = args.includes('--dry-run');
114
+ const force = args.includes('--force');
115
+
116
+ // Read package.json
117
+ const pkgPath = join(process.cwd(), 'package.json');
118
+ const pkg: PackageJson = JSON.parse(readFileSync(pkgPath, 'utf-8'));
119
+
120
+ console.log(`\n📦 Publishing ${pkg.name}\n`);
121
+
122
+ // Get current npm version
123
+ const npmVersion = await getNpmVersion(pkg.name);
124
+ let newVersion = pkg.version;
125
+
126
+ if (npmVersion) {
127
+ console.log(`📌 Current npm version: ${npmVersion}`);
128
+ console.log(`📌 Local version: ${pkg.version}`);
129
+
130
+ // Check if we need to bump
131
+ if (compareVersions(pkg.version, npmVersion) <= 0) {
132
+ newVersion = bumpVersion(npmVersion, bumpType);
133
+ console.log(`🔄 Auto-bumping to: ${newVersion}`);
134
+ } else {
135
+ console.log(`✅ Local version is ahead, using: ${pkg.version}`);
136
+ }
137
+ } else {
138
+ console.log(`📌 Package not yet published to npm`);
139
+ console.log(`📌 Using local version: ${pkg.version}`);
140
+ }
141
+
142
+ // Update package.json if version changed
143
+ if (newVersion !== pkg.version) {
144
+ if (dryRun) {
145
+ console.log(`\n🧪 DRY RUN: Would update version to ${newVersion}`);
146
+ } else {
147
+ pkg.version = newVersion;
148
+ writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
149
+ console.log(`✅ Updated package.json to version ${newVersion}`);
150
+ }
151
+ }
152
+
153
+ // Git operations
154
+ const isGit = await isGitRepo();
155
+
156
+ if (isGit && !skipGit) {
157
+ const hasChanges = await hasUncommittedChanges();
158
+
159
+ if (hasChanges && newVersion !== pkg.version) {
160
+ if (dryRun) {
161
+ console.log(`🧪 DRY RUN: Would commit version bump`);
162
+ } else {
163
+ await commitVersionBump(newVersion, pkg.name.replace('@hasna/', ''));
164
+ }
165
+ }
166
+
167
+ if (dryRun) {
168
+ console.log(`🧪 DRY RUN: Would create tag ${pkg.name}@${newVersion}`);
169
+ } else {
170
+ await createGitTag(newVersion, pkg.name.replace('@hasna/', ''));
171
+ }
172
+ }
173
+
174
+ // Build
175
+ console.log(`\n🔨 Building...`);
176
+ if (!dryRun) {
177
+ await $`bun run build`;
178
+ } else {
179
+ console.log(`🧪 DRY RUN: Would run build`);
180
+ }
181
+
182
+ // Publish
183
+ console.log(`\n🚀 Publishing to npm...`);
184
+ if (dryRun) {
185
+ console.log(`🧪 DRY RUN: Would publish ${pkg.name}@${newVersion}`);
186
+ } else {
187
+ try {
188
+ await $`npm publish`;
189
+ console.log(`\n✅ Successfully published ${pkg.name}@${newVersion}`);
190
+ } catch (error) {
191
+ console.error(`\n❌ Publish failed: ${error}`);
192
+ process.exit(1);
193
+ }
194
+ }
195
+
196
+ // Push tags
197
+ if (isGit && !skipGit && !dryRun) {
198
+ console.log(`\n📤 Pushing tags to remote...`);
199
+ try {
200
+ await $`git push --tags`;
201
+ console.log(`✅ Pushed tags to remote`);
202
+ } catch {
203
+ console.log(`⚠️ Could not push tags (no remote or not configured)`);
204
+ }
205
+ }
206
+
207
+ console.log(`\n✨ Done!\n`);
208
+ }
209
+
210
+ main().catch(console.error);