@hasna/connectors 1.4.1 → 1.4.3

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 (499) hide show
  1. package/bin/index.js +1271 -317
  2. package/bin/mcp.js +524 -211
  3. package/bin/serve.js +1208 -256
  4. package/connectors/adobe/package.json +1 -1
  5. package/connectors/aitableai/package.json +1 -1
  6. package/connectors/alchemy/package.json +1 -1
  7. package/connectors/alerty/package.json +1 -1
  8. package/connectors/alienvault/package.json +1 -1
  9. package/connectors/alphamoon/package.json +1 -1
  10. package/connectors/alttextai/package.json +1 -1
  11. package/connectors/amadeus/package.json +1 -1
  12. package/connectors/amadeus/src/api/client.ts +6 -6
  13. package/connectors/amadeus/src/cli/index.ts +6 -6
  14. package/connectors/amadeus/src/utils/output.ts +5 -5
  15. package/connectors/amazon/package.json +1 -1
  16. package/connectors/amilia/package.json +1 -1
  17. package/connectors/amqpsender/package.json +1 -1
  18. package/connectors/announcekit/package.json +1 -1
  19. package/connectors/anthropic/.env.example +1 -1
  20. package/connectors/anyscale/package.json +1 -1
  21. package/connectors/apiary/package.json +1 -1
  22. package/connectors/apiflash/package.json +1 -1
  23. package/connectors/apitemplateio/package.json +1 -1
  24. package/connectors/apptivegrid/package.json +1 -1
  25. package/connectors/assemblyai/package.json +1 -1
  26. package/connectors/autom/package.json +1 -1
  27. package/connectors/automizy/package.json +1 -1
  28. package/connectors/autopilot/package.json +1 -1
  29. package/connectors/awscognito/package.json +1 -1
  30. package/connectors/bamboohr/package.json +1 -1
  31. package/connectors/bannerbear/package.json +1 -1
  32. package/connectors/baseten/package.json +1 -1
  33. package/connectors/box/package.json +1 -1
  34. package/connectors/brevo/package.json +1 -1
  35. package/connectors/calendly/package.json +1 -1
  36. package/connectors/cerebras/package.json +1 -1
  37. package/connectors/chargebee/package.json +1 -1
  38. package/connectors/clearbit/package.json +1 -1
  39. package/connectors/clickbank/README.md +2 -2
  40. package/connectors/cloudflare-workers/package.json +1 -1
  41. package/connectors/coda/package.json +1 -1
  42. package/connectors/coingecko/package.json +1 -1
  43. package/connectors/convertkit/package.json +1 -1
  44. package/connectors/customerio/package.json +1 -1
  45. package/connectors/databricks/package.json +1 -1
  46. package/connectors/datadog/package.json +1 -1
  47. package/connectors/datasoap/README.md +2 -2
  48. package/connectors/datasoap/package.json +1 -1
  49. package/connectors/datumbox/README.md +2 -2
  50. package/connectors/datumbox/package.json +1 -1
  51. package/connectors/dayschedule/README.md +2 -2
  52. package/connectors/dayschedule/package.json +1 -1
  53. package/connectors/deepgram/package.json +1 -1
  54. package/connectors/deepinfra/README.md +2 -2
  55. package/connectors/deepinfra/package.json +1 -1
  56. package/connectors/deepl/README.md +2 -2
  57. package/connectors/deepl/package.json +1 -1
  58. package/connectors/deepseek/package.json +1 -1
  59. package/connectors/demio/README.md +2 -2
  60. package/connectors/demio/package.json +1 -1
  61. package/connectors/descript/README.md +2 -2
  62. package/connectors/descript/package.json +1 -1
  63. package/connectors/detrack/README.md +2 -2
  64. package/connectors/detrack/package.json +1 -1
  65. package/connectors/devcycle/README.md +2 -2
  66. package/connectors/devcycle/package.json +1 -1
  67. package/connectors/dhl/README.md +2 -2
  68. package/connectors/dhl/package.json +1 -1
  69. package/connectors/docusign/package.json +1 -1
  70. package/connectors/dropbox/package.json +1 -1
  71. package/connectors/fal/package.json +1 -1
  72. package/connectors/fathom/package.json +1 -1
  73. package/connectors/fireworks/package.json +1 -1
  74. package/connectors/gitlab/package.json +1 -1
  75. package/connectors/googlechat/README.md +1 -2
  76. package/connectors/googledrive/src/api/client.ts +5 -5
  77. package/connectors/googledrive/src/api/files.ts +11 -11
  78. package/connectors/googledrive/src/api/folders.ts +2 -2
  79. package/connectors/googledrive/src/cli/index.ts +4 -4
  80. package/connectors/googledrive/src/utils/output.ts +3 -3
  81. package/connectors/googleforms/README.md +1 -2
  82. package/connectors/googleperspective/README.md +1 -2
  83. package/connectors/grafana/package.json +1 -1
  84. package/connectors/growbots/README.md +2 -2
  85. package/connectors/growbots/package.json +1 -1
  86. package/connectors/gumroad/package.json +1 -1
  87. package/connectors/gupshup/README.md +2 -2
  88. package/connectors/gupshup/package.json +1 -1
  89. package/connectors/guru/README.md +2 -2
  90. package/connectors/guru/package.json +1 -1
  91. package/connectors/hackernews/README.md +2 -2
  92. package/connectors/hackernews/package.json +1 -1
  93. package/connectors/halopsa/README.md +2 -2
  94. package/connectors/halopsa/package.json +1 -1
  95. package/connectors/handwrytten/README.md +2 -2
  96. package/connectors/handwrytten/package.json +1 -1
  97. package/connectors/hansei/README.md +2 -2
  98. package/connectors/hansei/package.json +1 -1
  99. package/connectors/harrypotterapi/README.md +2 -2
  100. package/connectors/harrypotterapi/package.json +1 -1
  101. package/connectors/harvest/README.md +2 -2
  102. package/connectors/harvest/package.json +1 -1
  103. package/connectors/headlesstesting/README.md +2 -2
  104. package/connectors/headlesstesting/package.json +1 -1
  105. package/connectors/homeassistant/package.json +1 -1
  106. package/connectors/klaviyo/package.json +1 -1
  107. package/connectors/lemonsqueezy/package.json +1 -1
  108. package/connectors/lighthouse/src/api/index.ts +1 -1
  109. package/connectors/linkedin/package.json +1 -1
  110. package/connectors/linkish/README.md +2 -2
  111. package/connectors/linkish/package.json +1 -1
  112. package/connectors/liveagent/README.md +2 -2
  113. package/connectors/liveagent/package.json +1 -1
  114. package/connectors/localazy/README.md +2 -2
  115. package/connectors/localazy/package.json +1 -1
  116. package/connectors/loginradius/README.md +2 -2
  117. package/connectors/loginradius/package.json +1 -1
  118. package/connectors/lokalise/README.md +2 -2
  119. package/connectors/lokalise/package.json +1 -1
  120. package/connectors/lonescale/README.md +2 -2
  121. package/connectors/lonescale/package.json +1 -1
  122. package/connectors/lucidchart/README.md +2 -2
  123. package/connectors/lucidchart/package.json +1 -1
  124. package/connectors/luma/package.json +1 -1
  125. package/connectors/magento2/README.md +2 -2
  126. package/connectors/magento2/package.json +1 -1
  127. package/connectors/mailcheck/README.md +2 -2
  128. package/connectors/mailcheck/package.json +1 -1
  129. package/connectors/mailchimp/package.json +1 -1
  130. package/connectors/mailerlite/README.md +2 -2
  131. package/connectors/mailerlite/package.json +1 -1
  132. package/connectors/mailersend/README.md +2 -2
  133. package/connectors/mailersend/package.json +1 -1
  134. package/connectors/mailify/README.md +2 -2
  135. package/connectors/mailify/package.json +1 -1
  136. package/connectors/mailjet/README.md +2 -2
  137. package/connectors/mailjet/package.json +1 -1
  138. package/connectors/mailmodo/README.md +2 -2
  139. package/connectors/mailmodo/package.json +1 -1
  140. package/connectors/malcore/README.md +2 -2
  141. package/connectors/malcore/package.json +1 -1
  142. package/connectors/mandrill/README.md +2 -2
  143. package/connectors/mandrill/package.json +1 -1
  144. package/connectors/marcomrobot/README.md +2 -2
  145. package/connectors/marcomrobot/package.json +1 -1
  146. package/connectors/marketingmasterio/README.md +2 -2
  147. package/connectors/marketingmasterio/package.json +1 -1
  148. package/connectors/marketplacer/README.md +2 -2
  149. package/connectors/marketplacer/package.json +1 -1
  150. package/connectors/marketstack/README.md +2 -2
  151. package/connectors/marketstack/package.json +1 -1
  152. package/connectors/matrix/README.md +1 -1
  153. package/connectors/matrix/package.json +1 -1
  154. package/connectors/mattermost/README.md +1 -1
  155. package/connectors/mattermost/package.json +1 -1
  156. package/connectors/mautic/README.md +1 -1
  157. package/connectors/mautic/package.json +1 -1
  158. package/connectors/mav/README.md +1 -1
  159. package/connectors/mav/package.json +1 -1
  160. package/connectors/maverick/README.md +1 -1
  161. package/connectors/maverick/package.json +1 -1
  162. package/connectors/mem/README.md +1 -1
  163. package/connectors/mem/package.json +1 -1
  164. package/connectors/messagebird/package.json +1 -1
  165. package/connectors/metabase/README.md +1 -1
  166. package/connectors/metabase/package.json +1 -1
  167. package/connectors/miro/package.json +1 -1
  168. package/connectors/mocean/package.json +1 -1
  169. package/connectors/modal/package.json +1 -1
  170. package/connectors/monday/package.json +1 -1
  171. package/connectors/monicacrm/package.json +1 -1
  172. package/connectors/moonclerk/package.json +1 -1
  173. package/connectors/moonmail/package.json +1 -1
  174. package/connectors/morph/package.json +1 -1
  175. package/connectors/mqtt/package.json +1 -1
  176. package/connectors/msg91/package.json +1 -1
  177. package/connectors/mubert/package.json +1 -1
  178. package/connectors/murf/package.json +1 -1
  179. package/connectors/mux/package.json +1 -1
  180. package/connectors/netlify/package.json +1 -1
  181. package/connectors/okta/package.json +1 -1
  182. package/connectors/paddle/package.json +1 -1
  183. package/connectors/perplexity/package.json +1 -1
  184. package/connectors/pinterest/package.json +1 -1
  185. package/connectors/pipedrive/package.json +1 -1
  186. package/connectors/plaid/package.json +1 -1
  187. package/connectors/quickchart/README.md +2 -2
  188. package/connectors/quintadb/README.md +2 -2
  189. package/connectors/rabbitmq/README.md +2 -2
  190. package/connectors/radar/README.md +2 -2
  191. package/connectors/raindrop/README.md +2 -2
  192. package/connectors/rapid7insightvm/README.md +2 -2
  193. package/connectors/raventools/README.md +2 -2
  194. package/connectors/rawgvideogamesdatabase/README.md +2 -2
  195. package/connectors/rdstationcrm/README.md +2 -2
  196. package/connectors/readai/README.md +2 -2
  197. package/connectors/roboflow/package.json +1 -1
  198. package/connectors/runway/package.json +1 -1
  199. package/connectors/sendgrid/package.json +1 -1
  200. package/connectors/shuffler/package.json +1 -1
  201. package/connectors/sierrainteractive/package.json +1 -1
  202. package/connectors/sifter/package.json +1 -1
  203. package/connectors/signaturit/package.json +1 -1
  204. package/connectors/signl4/package.json +1 -1
  205. package/connectors/simpleem/package.json +1 -1
  206. package/connectors/simplehash/package.json +1 -1
  207. package/connectors/simplekpi/package.json +1 -1
  208. package/connectors/simplelocalize/package.json +1 -1
  209. package/connectors/simplero/package.json +1 -1
  210. package/connectors/smartrecruiters/package.json +1 -1
  211. package/connectors/smtp2go/package.json +1 -1
  212. package/connectors/snowflake/package.json +1 -1
  213. package/connectors/sparkpost/package.json +1 -1
  214. package/connectors/split-in-batches/CLAUDE.md +1 -1
  215. package/connectors/split-in-batches/README.md +1 -1
  216. package/connectors/split-in-batches/src/api/client.test.ts +16 -17
  217. package/connectors/split-in-batches/src/api/client.ts +4 -3
  218. package/connectors/split-in-batches/src/cli/index.ts +1 -1
  219. package/connectors/split-io/package.json +1 -1
  220. package/connectors/split-io/src/api/client.test.ts +20 -0
  221. package/connectors/split-io/src/cli/index.ts +9 -9
  222. package/connectors/spreadsheet-file/.env.example +1 -1
  223. package/connectors/spreadsheet-file/CLAUDE.md +2 -2
  224. package/connectors/spreadsheet-file/README.md +3 -3
  225. package/connectors/spreadsheet-file/src/api/client.test.ts +8 -9
  226. package/connectors/spreadsheet-file/src/api/client.ts +4 -3
  227. package/connectors/spreadsheet-file/src/cli/index.ts +1 -1
  228. package/connectors/sprinklr/package.json +1 -1
  229. package/connectors/sprout-social/package.json +1 -1
  230. package/connectors/square/package.json +1 -1
  231. package/connectors/sse-trigger/.env.example +1 -1
  232. package/connectors/sse-trigger/CLAUDE.md +2 -2
  233. package/connectors/sse-trigger/README.md +1 -1
  234. package/connectors/sse-trigger/package.json +1 -1
  235. package/connectors/sse-trigger/src/api/client.test.ts +12 -8
  236. package/connectors/sse-trigger/src/api/client.ts +4 -3
  237. package/connectors/sse-trigger/src/api/index.ts +1 -1
  238. package/connectors/sse-trigger/src/cli/index.ts +1 -1
  239. package/connectors/sse-trigger/src/index.ts +1 -1
  240. package/connectors/stability-api-platform/AGENTS.md +2 -2
  241. package/connectors/stability-api-platform/CLAUDE.md +1 -1
  242. package/connectors/stability-api-platform/README.md +2 -2
  243. package/connectors/stability-api-platform/src/api/client.test.ts +17 -12
  244. package/connectors/stability-api-platform/src/api/client.ts +4 -3
  245. package/connectors/stability-api-platform/src/api/index.ts +0 -1
  246. package/connectors/stability-api-platform/src/cli/index.ts +1 -1
  247. package/connectors/stability-api-platform/src/index.ts +0 -1
  248. package/connectors/standout/package.json +1 -1
  249. package/connectors/statuspage/package.json +1 -1
  250. package/connectors/stop-and-error/.env.example +1 -1
  251. package/connectors/stop-and-error/CLAUDE.md +1 -1
  252. package/connectors/stop-and-error/README.md +1 -1
  253. package/connectors/stop-and-error/src/api/client.test.ts +12 -8
  254. package/connectors/stop-and-error/src/api/client.ts +4 -3
  255. package/connectors/stop-and-error/src/cli/index.ts +2 -2
  256. package/connectors/stoplight/package.json +1 -1
  257. package/connectors/stoplight-api-platform/package.json +1 -1
  258. package/connectors/strand-ai/CLAUDE.md +1 -1
  259. package/connectors/stripe-financial-connections/.env.example +1 -1
  260. package/connectors/stripe-financial-connections/CLAUDE.md +2 -2
  261. package/connectors/stripe-financial-connections/package.json +1 -1
  262. package/connectors/stripe-financial-connections/src/api/client.test.ts +34 -0
  263. package/connectors/stripe-financial-connections/src/api/client.ts +4 -3
  264. package/connectors/stripe-financial-connections/src/cli/index.ts +1 -1
  265. package/connectors/stripe-terminal/package.json +1 -1
  266. package/connectors/stytch/package.json +1 -1
  267. package/connectors/sucuri-api-platform/.env.example +1 -1
  268. package/connectors/sucuri-api-platform/CLAUDE.md +1 -1
  269. package/connectors/sucuri-api-platform/README.md +2 -2
  270. package/connectors/sucuri-api-platform/src/api/client.test.ts +9 -7
  271. package/connectors/sucuri-api-platform/src/api/client.ts +4 -3
  272. package/connectors/sucuri-api-platform/src/api/index.ts +1 -1
  273. package/connectors/sucuri-api-platform/src/cli/index.ts +1 -1
  274. package/connectors/sucuri-api-platform/src/index.ts +1 -1
  275. package/connectors/sumo-logic/package.json +1 -1
  276. package/connectors/supabase/package.json +1 -1
  277. package/connectors/supabase-api-platform/package.json +1 -1
  278. package/connectors/sysdig/package.json +1 -1
  279. package/connectors/tableau/package.json +1 -1
  280. package/connectors/takecareos/README.md +2 -2
  281. package/connectors/takecareos/package.json +1 -1
  282. package/connectors/telegram/src/api/bot.ts +20 -0
  283. package/connectors/telegram/src/api/client.ts +32 -0
  284. package/connectors/telegram/src/api/files.test.ts +103 -0
  285. package/connectors/telegram/src/api/index.ts +1 -0
  286. package/connectors/telegram/src/api/messages.test.ts +8 -2
  287. package/connectors/telegram/src/cli/files.test.ts +40 -0
  288. package/connectors/telegram/src/cli/files.ts +38 -0
  289. package/connectors/telegram/src/cli/index.ts +27 -30
  290. package/connectors/telegram/src/cli/updates.test.ts +176 -0
  291. package/connectors/telegram/src/cli/updates.ts +95 -0
  292. package/connectors/telegram/src/index.ts +1 -0
  293. package/connectors/telegram/src/types/index.ts +13 -0
  294. package/connectors/terraform-cloud/package.json +1 -1
  295. package/connectors/tettra-api-platform/CLAUDE.md +1 -1
  296. package/connectors/tettra-api-platform/README.md +2 -2
  297. package/connectors/tettra-api-platform/src/api/client.test.ts +7 -8
  298. package/connectors/tettra-api-platform/src/api/client.ts +4 -3
  299. package/connectors/tettra-api-platform/src/api/index.ts +1 -1
  300. package/connectors/tettra-api-platform/src/cli/index.ts +1 -1
  301. package/connectors/tettra-api-platform/src/index.ts +1 -1
  302. package/connectors/textit/package.json +1 -1
  303. package/connectors/thousandeyes/package.json +1 -1
  304. package/connectors/ticket-tailor/package.json +1 -1
  305. package/connectors/ticketsource/package.json +1 -1
  306. package/connectors/tiktokads/README.md +1 -1
  307. package/connectors/time-saved/package.json +1 -1
  308. package/connectors/tipalti/package.json +1 -1
  309. package/connectors/together-api-platform/.env.example +1 -1
  310. package/connectors/together-api-platform/CLAUDE.md +1 -1
  311. package/connectors/together-api-platform/README.md +1 -1
  312. package/connectors/together-api-platform/src/api/client.test.ts +11 -7
  313. package/connectors/together-api-platform/src/api/client.ts +4 -4
  314. package/connectors/together-api-platform/src/api/index.ts +1 -1
  315. package/connectors/together-api-platform/src/cli/index.ts +1 -1
  316. package/connectors/together-api-platform/src/index.ts +1 -1
  317. package/connectors/tomtom/AGENTS.md +1 -1
  318. package/connectors/totp/package.json +1 -1
  319. package/connectors/traverse/package.json +1 -1
  320. package/connectors/travo-ai/package.json +1 -1
  321. package/connectors/travo-real-estate/CLAUDE.md +1 -1
  322. package/connectors/travo-real-estate/README.md +1 -1
  323. package/connectors/travo-real-estate/src/api/client.test.ts +20 -16
  324. package/connectors/travo-real-estate/src/api/client.ts +4 -3
  325. package/connectors/travo-real-estate/src/utils/config.ts +2 -4
  326. package/connectors/tray-api-platform/CLAUDE.md +1 -1
  327. package/connectors/tray-api-platform/src/api/client.test.ts +17 -13
  328. package/connectors/tray-api-platform/src/api/client.ts +4 -3
  329. package/connectors/tray-api-platform/src/api/index.ts +1 -1
  330. package/connectors/tray-api-platform/src/cli/index.ts +1 -1
  331. package/connectors/tray-api-platform/src/index.ts +0 -1
  332. package/connectors/trigger-dev/package.json +1 -1
  333. package/connectors/trigger-dev-api-platform/package.json +1 -1
  334. package/connectors/turbot-pipes/package.json +1 -1
  335. package/connectors/turso/package.json +1 -1
  336. package/connectors/turso-api-platform/CLAUDE.md +1 -1
  337. package/connectors/turso-api-platform/README.md +2 -2
  338. package/connectors/turso-api-platform/package.json +1 -1
  339. package/connectors/turso-api-platform/src/api/client.test.ts +17 -13
  340. package/connectors/turso-api-platform/src/api/client.ts +4 -3
  341. package/connectors/turso-api-platform/src/cli/index.ts +2 -2
  342. package/connectors/twilio-api-platform/CLAUDE.md +1 -1
  343. package/connectors/twilio-api-platform/src/api/client.test.ts +11 -11
  344. package/connectors/twilio-api-platform/src/api/client.ts +4 -3
  345. package/connectors/twilio-api-platform/src/api/index.ts +1 -1
  346. package/connectors/twilio-api-platform/src/cli/index.ts +1 -1
  347. package/connectors/twilio-api-platform/src/index.ts +1 -1
  348. package/connectors/tyk-api-platform/.env.example +1 -1
  349. package/connectors/tyk-api-platform/CLAUDE.md +2 -2
  350. package/connectors/tyk-api-platform/README.md +1 -1
  351. package/connectors/tyk-api-platform/package.json +1 -1
  352. package/connectors/tyk-api-platform/src/api/client.test.ts +14 -15
  353. package/connectors/tyk-api-platform/src/api/client.ts +4 -3
  354. package/connectors/tyk-api-platform/src/api/index.ts +1 -1
  355. package/connectors/tyk-api-platform/src/cli/index.ts +1 -1
  356. package/connectors/tyk-api-platform/src/index.ts +1 -1
  357. package/connectors/umami/package.json +1 -1
  358. package/connectors/unifold/package.json +1 -1
  359. package/connectors/unione/package.json +1 -1
  360. package/connectors/uniprot/README.md +1 -1
  361. package/connectors/uniswap-api/package.json +1 -1
  362. package/connectors/ups/package.json +1 -1
  363. package/connectors/usereframe/package.json +1 -1
  364. package/connectors/vanta/package.json +1 -1
  365. package/connectors/vector-legal/.env.example +1 -1
  366. package/connectors/vector-legal/AGENTS.md +1 -1
  367. package/connectors/vector-legal/CLAUDE.md +1 -1
  368. package/connectors/vector-legal/README.md +1 -1
  369. package/connectors/vector-legal/src/api/client.test.ts +9 -5
  370. package/connectors/vector-legal/src/api/client.ts +4 -3
  371. package/connectors/vector-legal/src/api/index.ts +1 -1
  372. package/connectors/vector-legal/src/cli/index.ts +2 -2
  373. package/connectors/vector-legal/src/index.ts +0 -1
  374. package/connectors/vector-legal-api/CLAUDE.md +1 -1
  375. package/connectors/vector-legal-api/README.md +2 -2
  376. package/connectors/vector-legal-api/src/api/client.test.ts +12 -7
  377. package/connectors/vector-legal-api/src/api/client.ts +4 -3
  378. package/connectors/vector-legal-api/src/api/index.ts +1 -1
  379. package/connectors/vector-legal-api/src/cli/index.ts +1 -1
  380. package/connectors/vector-legal-api/src/index.ts +1 -2
  381. package/connectors/vela/package.json +1 -1
  382. package/connectors/velum-data-quality/.env.example +1 -1
  383. package/connectors/velum-data-quality/CLAUDE.md +1 -1
  384. package/connectors/velum-data-quality/src/api/client.test.ts +15 -16
  385. package/connectors/velum-data-quality/src/api/client.ts +4 -3
  386. package/connectors/velum-data-quality/src/api/index.ts +1 -1
  387. package/connectors/velum-data-quality/src/cli/index.ts +1 -1
  388. package/connectors/velum-data-quality/src/index.ts +0 -1
  389. package/connectors/velum-labs/package.json +1 -1
  390. package/connectors/vercel/package.json +1 -1
  391. package/connectors/vercel-api-platform/.env.example +1 -1
  392. package/connectors/vercel-api-platform/CLAUDE.md +2 -2
  393. package/connectors/vercel-api-platform/README.md +2 -2
  394. package/connectors/vercel-api-platform/src/api/client.test.ts +27 -6
  395. package/connectors/vercel-api-platform/src/api/client.ts +4 -3
  396. package/connectors/vercel-api-platform/src/api/index.ts +1 -1
  397. package/connectors/vercel-api-platform/src/cli/index.ts +2 -2
  398. package/connectors/vercel-api-platform/src/index.ts +0 -1
  399. package/connectors/vercel-blob/package.json +1 -1
  400. package/connectors/vercel-blob-platform/package.json +1 -1
  401. package/connectors/vercel-edge-config/package.json +1 -1
  402. package/connectors/vercel-edge-config-platform/package.json +1 -1
  403. package/connectors/veriphone/README.md +2 -2
  404. package/connectors/vertex-ai/package.json +1 -1
  405. package/connectors/vidyard/package.json +1 -1
  406. package/connectors/vonage/package.json +1 -1
  407. package/connectors/voygr/package.json +1 -1
  408. package/connectors/wait/package.json +1 -1
  409. package/connectors/walmart-marketplace/package.json +1 -1
  410. package/connectors/wato/package.json +1 -1
  411. package/connectors/wave-accounting/CLAUDE.md +1 -1
  412. package/connectors/wave-accounting/package.json +1 -1
  413. package/connectors/wave-accounting/src/utils/auth.ts +1 -1
  414. package/connectors/wayco/package.json +1 -1
  415. package/connectors/weaviate-api-platform/CLAUDE.md +1 -1
  416. package/connectors/weaviate-api-platform/src/api/client.test.ts +32 -7
  417. package/connectors/weaviate-api-platform/src/api/client.ts +4 -3
  418. package/connectors/weaviate-api-platform/src/api/index.ts +1 -1
  419. package/connectors/weaviate-api-platform/src/cli/index.ts +1 -1
  420. package/connectors/weaviate-api-platform/src/index.ts +1 -1
  421. package/connectors/webpagetest/package.json +1 -1
  422. package/connectors/weezevent/package.json +1 -1
  423. package/connectors/wikipedia/src/api/client.ts +1 -1
  424. package/connectors/wildcard/package.json +1 -1
  425. package/connectors/windmill/package.json +1 -1
  426. package/connectors/wise/package.json +1 -1
  427. package/connectors/withai/package.json +1 -1
  428. package/connectors/wiz/CLAUDE.md +1 -1
  429. package/connectors/wiz/package.json +1 -1
  430. package/connectors/wordfence/package.json +1 -1
  431. package/connectors/wordfence-api-platform/package.json +1 -1
  432. package/connectors/workflow-trigger/.env.example +1 -1
  433. package/connectors/workflow-trigger/CLAUDE.md +1 -1
  434. package/connectors/workflow-trigger/README.md +1 -1
  435. package/connectors/workflow-trigger/src/api/client.test.ts +10 -6
  436. package/connectors/workflow-trigger/src/api/client.ts +4 -3
  437. package/connectors/workflow-trigger/src/cli/index.ts +1 -1
  438. package/connectors/workos/package.json +1 -1
  439. package/connectors/write-binary-file/CLAUDE.md +1 -1
  440. package/connectors/write-binary-file/README.md +1 -1
  441. package/connectors/write-binary-file/package.json +1 -1
  442. package/connectors/write-binary-file/src/api/client.test.ts +16 -12
  443. package/connectors/write-binary-file/src/api/client.ts +4 -3
  444. package/connectors/write-binary-file/src/api/index.ts +1 -1
  445. package/connectors/write-binary-file/src/index.ts +1 -1
  446. package/connectors/wubookratechecker/src/api/client.test.ts +34 -0
  447. package/connectors/wubookratechecker/src/api/client.ts +3 -1
  448. package/connectors/wubookratechecker/src/api/index.ts +1 -1
  449. package/connectors/wubookratechecker/src/types/index.ts +1 -1
  450. package/connectors/xai/.env.example +1 -1
  451. package/connectors/xai-api-platform/.env.example +1 -1
  452. package/connectors/xai-api-platform/CLAUDE.md +1 -1
  453. package/connectors/xai-api-platform/README.md +1 -1
  454. package/connectors/xai-api-platform/src/api/client.test.ts +34 -9
  455. package/connectors/xai-api-platform/src/api/client.ts +4 -3
  456. package/connectors/xai-api-platform/src/api/index.ts +1 -1
  457. package/connectors/xai-api-platform/src/cli/index.ts +1 -1
  458. package/connectors/xai-api-platform/src/index.ts +1 -1
  459. package/connectors/xai-api-platform/src/utils/config.ts +3 -4
  460. package/connectors/xai-grok/.env.example +1 -1
  461. package/connectors/xai-grok/src/api/client.test.ts +3 -3
  462. package/connectors/xai-grok/src/cli/index.ts +1 -1
  463. package/connectors/xai-grok/src/utils/config.ts +1 -1
  464. package/connectors/ynab/package.json +1 -1
  465. package/connectors/you-com/README.md +2 -2
  466. package/connectors/you-com/package.json +1 -1
  467. package/connectors/yousign/package.json +1 -1
  468. package/connectors/zapier-api-platform/CLAUDE.md +1 -1
  469. package/connectors/zapier-api-platform/README.md +1 -1
  470. package/connectors/zapier-api-platform/src/api/client.test.ts +19 -14
  471. package/connectors/zapier-api-platform/src/api/client.ts +4 -3
  472. package/connectors/zapier-api-platform/src/api/index.ts +1 -1
  473. package/connectors/zapier-api-platform/src/cli/index.ts +1 -1
  474. package/connectors/zapier-api-platform/src/index.ts +1 -1
  475. package/connectors/zendesk/.env.example +4 -4
  476. package/connectors/zendesk/CLAUDE.md +1 -3
  477. package/connectors/zendesk/Makefile +18 -5
  478. package/connectors/zendesk/README.md +3 -8
  479. package/connectors/zendesk/SCAFFOLD.md +6 -5
  480. package/connectors/zerosettle/package.json +1 -1
  481. package/connectors/zoho-bigin/CLAUDE.md +1 -1
  482. package/connectors/zoho-campaigns/package.json +1 -1
  483. package/connectors/zoho-sign/package.json +1 -1
  484. package/connectors/zoho-subscriptions/CLAUDE.md +1 -1
  485. package/connectors/zohoprojects/CLAUDE.md +1 -1
  486. package/connectors/zolvo/package.json +1 -1
  487. package/connectors/zoom-api/package.json +1 -1
  488. package/connectors/zymbly/README.md +2 -2
  489. package/connectors/zymbly/package.json +1 -1
  490. package/dashboard/dist/assets/index-8uoGZF7B.js +280 -0
  491. package/dashboard/dist/index.html +1 -1
  492. package/dist/db/locks.d.ts +1 -1
  493. package/dist/index.js +17 -15
  494. package/dist/lib/connector-resolver.d.ts +1 -1
  495. package/dist/lib/llm.d.ts +1 -1
  496. package/dist/lib/open-browser.d.ts +18 -0
  497. package/dist/lib/open-browser.test.d.ts +1 -0
  498. package/package.json +6 -4
  499. package/dashboard/dist/assets/index-DlEljRrW.js +0 -285
@@ -50,6 +50,6 @@
50
50
  },
51
51
  "repository": {
52
52
  "type": "git",
53
- "url": "git+https://github.com/hasna/open-connectors.git"
53
+ "url": "git+https://github.com/hasna/apps.git"
54
54
  }
55
55
  }
@@ -29,7 +29,7 @@ bun test
29
29
  ## Authentication
30
30
 
31
31
  - **Bearer token (dev):** Full-access token from Wave developer portal
32
- - **OAuth2 (production):** Scopes per https://developer.waveapps.com/hc/en-us/articles/360032818132-OAuth-Scopes
32
+ - **OAuth2 (production):** Scopes per the Wave OAuth scopes documentation (developer.waveapps.com)
33
33
 
34
34
  Auth type: `oauth` / `bearer`
35
35
 
@@ -56,6 +56,6 @@
56
56
  },
57
57
  "repository": {
58
58
  "type": "git",
59
- "url": "git+https://github.com/hasna/open-connectors.git"
59
+ "url": "git+https://github.com/hasna/apps.git"
60
60
  }
61
61
  }
@@ -6,7 +6,7 @@ const DEFAULT_AUTH_URL = 'https://api.waveapps.com/oauth2/authorize/';
6
6
  const DEFAULT_TOKEN_URL = 'https://api.waveapps.com/oauth2/token/';
7
7
 
8
8
  // Wave OAuth scopes for accounting/invoicing operations
9
- // https://developer.waveapps.com/hc/en-us/articles/360032818132-OAuth-Scopes
9
+ // (see developer.waveapps.com OAuth scopes documentation)
10
10
  const DEFAULT_SCOPES = [
11
11
  'business:read',
12
12
  'invoice:read',
@@ -47,6 +47,6 @@
47
47
  },
48
48
  "repository": {
49
49
  "type": "git",
50
- "url": "git+https://github.com/hasna/open-connectors.git"
50
+ "url": "git+https://github.com/hasna/apps.git"
51
51
  }
52
52
  }
@@ -23,7 +23,7 @@ Bearer token via `Authorization: Bearer <api_key>` header.
23
23
  ## Base URL
24
24
 
25
25
  ```
26
- https://api.weaviateapiplatform.com/v1
26
+ configured.example.com/v1
27
27
  ```
28
28
 
29
29
  Override with profile `baseUrl` or `WEAVIATE_API_PLATFORM_BASE_URL`.
@@ -1,5 +1,6 @@
1
1
  import { afterEach, describe, expect, test } from 'bun:test';
2
- import { Connector, DEFAULT_BASE_URL } from './index';
2
+ import { ConnectorClient } from './client';
3
+ import { Connector } from './index';
3
4
 
4
5
  const realFetch = globalThis.fetch;
5
6
 
@@ -44,25 +45,25 @@ afterEach(() => {
44
45
  describe('WeaviateApiPlatform client', () => {
45
46
  test('uses bearer auth and default base URL for listItems', async () => {
46
47
  const recorded = installFetch();
47
- const client = new Connector({ apiKey: 'test-api-key' });
48
+ const client = new Connector({ apiKey: 'test-api-key', baseUrl: 'https://configured.example.com/v1' });
48
49
  await client.listItems();
49
- expect(recorded[0].url).toBe(`${DEFAULT_BASE_URL}/items`);
50
+ expect(recorded[0].url).toBe(`https://configured.example.com/v1/items`);
50
51
  expect(recorded[0].method).toBe('GET');
51
52
  expect(recorded[0].headers.authorization || recorded[0].headers.Authorization).toBe('Bearer test-api-key');
52
53
  });
53
54
 
54
55
  test('encodes item IDs in getItem path', async () => {
55
56
  const recorded = installFetch();
56
- const client = new Connector({ apiKey: 'test-api-key' });
57
+ const client = new Connector({ apiKey: 'test-api-key', baseUrl: 'https://configured.example.com/v1' });
57
58
  await client.getItem('item/with/slash');
58
- expect(recorded[0].url).toBe(`${DEFAULT_BASE_URL}/items/${encodeURIComponent('item/with/slash')}`);
59
+ expect(recorded[0].url).toBe(`https://configured.example.com/v1/items/${encodeURIComponent('item/with/slash')}`);
59
60
  });
60
61
 
61
62
  test('posts search body to /search', async () => {
62
63
  const recorded = installFetch();
63
- const client = new Connector({ apiKey: 'test-api-key' });
64
+ const client = new Connector({ apiKey: 'test-api-key', baseUrl: 'https://configured.example.com/v1' });
64
65
  await client.search({ query: 'hello', limit: 5 });
65
- expect(recorded[0].url).toBe(`${DEFAULT_BASE_URL}/search`);
66
+ expect(recorded[0].url).toBe(`https://configured.example.com/v1/search`);
66
67
  expect(recorded[0].method).toBe('POST');
67
68
  expect(recorded[0].body).toBe(JSON.stringify({ query: 'hello', limit: 5 }));
68
69
  });
@@ -80,4 +81,28 @@ describe('WeaviateApiPlatform client', () => {
80
81
  test('requires API key', () => {
81
82
  expect(() => new Connector({})).toThrow('API key is required');
82
83
  });
84
+
85
+ test('refuses to send without a configured base URL (no default endpoint)', () => {
86
+ expect(() => new ConnectorClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
87
+ });
88
+
89
+ test('sends the API key only to the configured base URL', async () => {
90
+ const recorded: string[] = [];
91
+ globalThis.fetch = (async (input: string | URL | Request, init?: RequestInit) => {
92
+ recorded.push(typeof input === 'string' ? input : input.toString());
93
+ return {
94
+ ok: true,
95
+ status: 200,
96
+ statusText: 'OK',
97
+ headers: new Headers({ 'content-type': 'application/json' }),
98
+ async text() { return JSON.stringify({ ok: true }); },
99
+ async json() { return { ok: true }; },
100
+ } as Response;
101
+ }) as typeof fetch;
102
+ const client = new ConnectorClient({ apiKey: 'test-key', baseUrl: 'https://configured.example.com/v1' });
103
+ await client.request('/ping');
104
+ expect(recorded).toHaveLength(1);
105
+ expect(recorded[0].startsWith('https://configured.example.com/v1/')).toBe(true);
106
+ expect(recorded[0]).not.toContain('api.weaviateapiplatform.com');
107
+ });
83
108
  });
@@ -1,8 +1,6 @@
1
1
  import type { ConnectorConfig, RawRequestOptions } from '../types';
2
2
  import { ConnectorApiError, parseApiError } from '../types';
3
3
 
4
- export const DEFAULT_BASE_URL = 'https://api.weaviateapiplatform.com/v1';
5
-
6
4
  export interface RequestOptions {
7
5
  method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
8
6
  params?: Record<string, string | number | boolean | undefined>;
@@ -22,7 +20,10 @@ export class ConnectorClient {
22
20
  throw new Error('Weaviate API Platform API key is required');
23
21
  }
24
22
  this.apiKey = key;
25
- this.baseUrl = (config.baseUrl || DEFAULT_BASE_URL).replace(/\/$/, '');
23
+ if (!config.baseUrl) {
24
+ throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
25
+ }
26
+ this.baseUrl = config.baseUrl.replace(/\/$/, '');
26
27
  }
27
28
 
28
29
  getBaseUrl(): string {
@@ -56,4 +56,4 @@ export class Connector {
56
56
  }
57
57
  }
58
58
 
59
- export { ConnectorClient, DEFAULT_BASE_URL } from './client';
59
+ export { ConnectorClient } from './client';
@@ -166,7 +166,7 @@ configCmd.command('show').description('Show current configuration').action(() =>
166
166
  console.log(chalk.bold(`Active Profile: ${profileName}`));
167
167
  info(`Config directory: ${getConfigDir()}`);
168
168
  info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
169
- info(`Base URL: ${baseUrl || chalk.gray('https://api.weaviateapiplatform.com/v1 (default)')}`);
169
+ info(`Base URL: ${baseUrl || chalk.gray('none configured')}`);
170
170
  });
171
171
 
172
172
  configCmd.command('clear').description('Clear configuration for active profile').action(() => {
@@ -1,6 +1,6 @@
1
1
  // Weaviate API Platform Connector
2
2
 
3
- export { Connector, ConnectorClient, DEFAULT_BASE_URL } from './api';
3
+ export { Connector, ConnectorClient } from './api';
4
4
  export * from './types';
5
5
 
6
6
  export {
@@ -47,6 +47,6 @@
47
47
  },
48
48
  "repository": {
49
49
  "type": "git",
50
- "url": "git+https://github.com/hasna/open-connectors.git"
50
+ "url": "git+https://github.com/hasna/apps.git"
51
51
  }
52
52
  }
@@ -42,6 +42,6 @@
42
42
  },
43
43
  "repository": {
44
44
  "type": "git",
45
- "url": "git+https://github.com/hasna/open-connectors.git"
45
+ "url": "git+https://github.com/hasna/apps.git"
46
46
  }
47
47
  }
@@ -8,7 +8,7 @@ export class WikipediaClient {
8
8
 
9
9
  constructor(config: WikipediaConfig = {}) {
10
10
  this.lang = config.language || 'en';
11
- this.userAgent = config.userAgent || 'open-connectors/1.0 (https://github.com/hasna/open-connectors)';
11
+ this.userAgent = config.userAgent || 'hasna-connectors/1.0 (https://github.com/hasna/apps)';
12
12
  this.baseUrl = config.baseUrl || `https://${this.lang}.wikipedia.org`;
13
13
  }
14
14
 
@@ -53,6 +53,6 @@
53
53
  },
54
54
  "repository": {
55
55
  "type": "git",
56
- "url": "git+https://github.com/hasna/open-connectors.git"
56
+ "url": "git+https://github.com/hasna/apps.git"
57
57
  }
58
58
  }
@@ -46,6 +46,6 @@
46
46
  },
47
47
  "repository": {
48
48
  "type": "git",
49
- "url": "git+https://github.com/hasna/open-connectors.git"
49
+ "url": "git+https://github.com/hasna/apps.git"
50
50
  }
51
51
  }
@@ -47,6 +47,6 @@
47
47
  },
48
48
  "repository": {
49
49
  "type": "git",
50
- "url": "git+https://github.com/hasna/open-connectors.git"
50
+ "url": "git+https://github.com/hasna/apps.git"
51
51
  }
52
52
  }
@@ -49,6 +49,6 @@
49
49
  },
50
50
  "repository": {
51
51
  "type": "git",
52
- "url": "git+https://github.com/hasna/open-connectors.git"
52
+ "url": "git+https://github.com/hasna/apps.git"
53
53
  }
54
54
  }
@@ -1,6 +1,6 @@
1
1
  # CLAUDE.md
2
2
 
3
- Guidance for working with the Wiz connector in open-connectors.
3
+ Guidance for working with the Wiz connector in the connectors monorepo.
4
4
 
5
5
  ## Overview
6
6
 
@@ -48,6 +48,6 @@
48
48
  },
49
49
  "repository": {
50
50
  "type": "git",
51
- "url": "git+https://github.com/hasna/open-connectors.git"
51
+ "url": "git+https://github.com/hasna/apps.git"
52
52
  }
53
53
  }
@@ -46,6 +46,6 @@
46
46
  },
47
47
  "repository": {
48
48
  "type": "git",
49
- "url": "git+https://github.com/hasna/open-connectors.git"
49
+ "url": "git+https://github.com/hasna/apps.git"
50
50
  }
51
51
  }
@@ -47,6 +47,6 @@
47
47
  },
48
48
  "repository": {
49
49
  "type": "git",
50
- "url": "git+https://github.com/hasna/open-connectors.git"
50
+ "url": "git+https://github.com/hasna/apps.git"
51
51
  }
52
52
  }
@@ -1,5 +1,5 @@
1
1
  # WorkflowTrigger API credentials (placeholders only)
2
2
  WORKFLOW_TRIGGER_API_KEY=your-api-key-here
3
3
 
4
- # Optional: override API base URL (default: https://api.workflow-trigger.com/v1)
4
+ # Optional: override API base URL (no default - must be configured)
5
5
  # WORKFLOW_TRIGGER_BASE_URL=https://api.workflow-trigger.com/v1
@@ -56,7 +56,7 @@ src/
56
56
 
57
57
  ## API Details
58
58
 
59
- - **Base URL**: `https://api.workflow-trigger.com/v1` (override with `WORKFLOW_TRIGGER_BASE_URL`)
59
+ - **Base URL**: no default (must be configured) (override with `WORKFLOW_TRIGGER_BASE_URL`)
60
60
  - **Auth**: Bearer token (`Authorization: Bearer <api_key>`)
61
61
  - **Endpoints**:
62
62
  - `GET /triggers` - List triggers
@@ -13,7 +13,7 @@ bun install
13
13
  ```bash
14
14
  export WORKFLOW_TRIGGER_API_KEY=your-api-key
15
15
  # optional:
16
- export WORKFLOW_TRIGGER_BASE_URL=https://api.workflow-trigger.com/v1
16
+ export WORKFLOW_TRIGGER_BASE_URL=https://configured.example.com/v1
17
17
  ```
18
18
 
19
19
  Or use the CLI profile:
@@ -54,22 +54,22 @@ describe('WorkflowTrigger API client', () => {
54
54
 
55
55
  test('list triggers uses Bearer auth and GET /triggers', async () => {
56
56
  const recorded = installFetch(() => ({ data: [] }));
57
- const client = new ConnectorClient({ apiKey: 'test-key' });
57
+ const client = new ConnectorClient({ apiKey: 'test-key', baseUrl: 'https://configured.example.com/v1' });
58
58
  await client.get('/triggers');
59
59
 
60
60
  expect(recorded).toHaveLength(1);
61
- expect(recorded[0].url).toBe('https://api.workflow-trigger.com/v1/triggers');
61
+ expect(recorded[0].url).toBe('https://configured.example.com/v1/triggers');
62
62
  expect(recorded[0].method).toBe('GET');
63
63
  expect(recorded[0].headers.Authorization || recorded[0].headers.authorization).toBe('Bearer test-key');
64
64
  });
65
65
 
66
66
  test('get trigger encodes ID in path', async () => {
67
67
  const recorded = installFetch(() => ({ id: 'item-1' }));
68
- const connector = new Connector({ apiKey: 'workflow-trigger-key' });
68
+ const connector = new Connector({ apiKey: 'workflow-trigger-key', baseUrl: 'https://configured.example.com/v1' });
69
69
  await connector.triggers.get('item-1');
70
70
 
71
71
  expect(recorded).toHaveLength(1);
72
- expect(recorded[0].url).toBe('https://api.workflow-trigger.com/v1/triggers/item-1');
72
+ expect(recorded[0].url).toBe('https://configured.example.com/v1/triggers/item-1');
73
73
  expect(recorded[0].headers.Authorization || recorded[0].headers.authorization).toBe('Bearer workflow-trigger-key');
74
74
  });
75
75
 
@@ -86,10 +86,14 @@ describe('WorkflowTrigger API client', () => {
86
86
 
87
87
  test('search posts to /search', async () => {
88
88
  const recorded = installFetch(() => ({ results: [] }));
89
- const connector = new Connector({ apiKey: 'key' });
89
+ const connector = new Connector({ apiKey: 'key', baseUrl: 'https://configured.example.com/v1' });
90
90
  await connector.search.search({ query: 'test' });
91
91
 
92
- expect(recorded[0].url).toBe('https://api.workflow-trigger.com/v1/search');
92
+ expect(recorded[0].url).toBe('https://configured.example.com/v1/search');
93
93
  expect(recorded[0].method).toBe('POST');
94
94
  });
95
+
96
+ test('refuses to send without a configured base URL (no default endpoint)', () => {
97
+ expect(() => new ConnectorClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
98
+ });
95
99
  });
@@ -2,8 +2,6 @@ import type { ConnectorConfig } from '../types';
2
2
  import { ConnectorApiError, parseApiError } from '../types';
3
3
  import type { RawRequestParams } from '../types';
4
4
 
5
- const DEFAULT_BASE_URL = 'https://api.workflow-trigger.com/v1';
6
-
7
5
  export interface RequestOptions {
8
6
  method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
9
7
  params?: Record<string, string | number | boolean | undefined>;
@@ -23,7 +21,10 @@ export class ConnectorClient {
23
21
  throw new Error('WorkflowTrigger API key is required');
24
22
  }
25
23
  this.apiKey = key;
26
- this.baseUrl = config.baseUrl || DEFAULT_BASE_URL;
24
+ if (!config.baseUrl) {
25
+ throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
26
+ }
27
+ this.baseUrl = config.baseUrl;
27
28
  }
28
29
 
29
30
  private buildUrl(path: string, params?: Record<string, string | number | boolean | undefined>): string {
@@ -204,7 +204,7 @@ configCmd
204
204
  console.log(chalk.bold(`Active Profile: ${profileName}`));
205
205
  info(`Config directory: ${getConfigDir()}`);
206
206
  info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
207
- info(`Base URL: ${baseUrl || chalk.gray('default (https://api.workflow-trigger.com/v1)')}`);
207
+ info(`Base URL: ${baseUrl || chalk.gray('none configured')}`);
208
208
  });
209
209
 
210
210
  configCmd
@@ -49,6 +49,6 @@
49
49
  },
50
50
  "repository": {
51
51
  "type": "git",
52
- "url": "git+https://github.com/hasna/open-connectors.git"
52
+ "url": "git+https://github.com/hasna/apps.git"
53
53
  }
54
54
  }
@@ -19,7 +19,7 @@ bun run typecheck
19
19
 
20
20
  API key bearer auth. Set via profile config, `WRITE_BINARY_FILE_API_KEY`, or `--api-key`.
21
21
 
22
- Default base URL: `https://api.write-binary-file.com/v1`
22
+ Default base URL: none (must be configured)
23
23
 
24
24
  ## API Surface
25
25
 
@@ -1,6 +1,6 @@
1
1
  # connect-write-binary-file
2
2
 
3
- TypeScript connector and CLI for the [Write Binary File](https://api.write-binary-file.com) REST API.
3
+ TypeScript connector and CLI for the [Write Binary File](configured.example.com/v1) REST API.
4
4
 
5
5
  ## Features
6
6
 
@@ -46,6 +46,6 @@
46
46
  },
47
47
  "repository": {
48
48
  "type": "git",
49
- "url": "git+https://github.com/hasna/open-connectors.git"
49
+ "url": "git+https://github.com/hasna/apps.git"
50
50
  }
51
51
  }
@@ -1,5 +1,5 @@
1
1
  import { afterEach, describe, expect, test } from 'bun:test';
2
- import { DEFAULT_BASE_URL, WriteBinaryFileClient } from './client';
2
+ import { WriteBinaryFileClient } from './client';
3
3
 
4
4
  const realFetch = globalThis.fetch;
5
5
 
@@ -36,46 +36,50 @@ afterEach(() => {
36
36
  describe('WriteBinaryFileClient transport', () => {
37
37
  test('listFiles uses bearer auth and default base URL', async () => {
38
38
  const recorded = installFetch();
39
- const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key' });
39
+ const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key', baseUrl: 'https://configured.example.com/v1' });
40
40
  await client.listFiles();
41
- expect(recorded[0].url).toBe(`${DEFAULT_BASE_URL}/files`);
41
+ expect(recorded[0].url).toBe(`https://configured.example.com/v1/files`);
42
42
  expect(recorded[0].method).toBe('GET');
43
43
  expect(recorded[0].headers.get('Authorization')).toBe('Bearer write-binary-file-key');
44
44
  });
45
45
 
46
46
  test('getFile encodes file id in path', async () => {
47
47
  const recorded = installFetch();
48
- const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key' });
48
+ const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key', baseUrl: 'https://configured.example.com/v1' });
49
49
  await client.getFile('item-1');
50
- expect(recorded[0].url).toBe(`${DEFAULT_BASE_URL}/files/item-1`);
50
+ expect(recorded[0].url).toBe(`https://configured.example.com/v1/files/item-1`);
51
51
  expect(recorded[0].headers.get('Authorization')).toBe('Bearer write-binary-file-key');
52
52
  });
53
53
 
54
54
  test('createFile posts JSON body', async () => {
55
55
  const recorded = installFetch();
56
- const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key' });
56
+ const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key', baseUrl: 'https://configured.example.com/v1' });
57
57
  await client.createFile({ name: 'demo.bin' });
58
- expect(recorded[0].url).toBe(`${DEFAULT_BASE_URL}/files`);
58
+ expect(recorded[0].url).toBe(`https://configured.example.com/v1/files`);
59
59
  expect(recorded[0].method).toBe('POST');
60
60
  });
61
61
 
62
62
  test('search posts to /search', async () => {
63
63
  const recorded = installFetch();
64
- const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key' });
64
+ const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key', baseUrl: 'https://configured.example.com/v1' });
65
65
  await client.search({ q: 'report' });
66
- expect(recorded[0].url).toBe(`${DEFAULT_BASE_URL}/search`);
66
+ expect(recorded[0].url).toBe(`https://configured.example.com/v1/search`);
67
67
  expect(recorded[0].method).toBe('POST');
68
68
  });
69
69
 
70
70
  test('rawRequest honors custom path and method', async () => {
71
71
  const recorded = installFetch();
72
- const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key' });
72
+ const client = new WriteBinaryFileClient({ apiKey: 'write-binary-file-key', baseUrl: 'https://configured.example.com/v1' });
73
73
  await client.rawRequest({ path: '/events', method: 'GET', query: { limit: 5 } });
74
- expect(recorded[0].url).toBe(`${DEFAULT_BASE_URL}/events?limit=5`);
74
+ expect(recorded[0].url).toBe(`https://configured.example.com/v1/events?limit=5`);
75
75
  expect(recorded[0].method).toBe('GET');
76
76
  });
77
77
 
78
78
  test('requires api key', () => {
79
- expect(() => new WriteBinaryFileClient({ apiKey: '' })).toThrow('API key is required');
79
+ expect(() => new WriteBinaryFileClient({ apiKey: '', baseUrl: 'https://configured.example.com/v1' })).toThrow('API key is required');
80
+ });
81
+
82
+ test('refuses to send without a configured base URL (no default endpoint)', () => {
83
+ expect(() => new WriteBinaryFileClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
80
84
  });
81
85
  });
@@ -6,8 +6,6 @@ import {
6
6
  type WriteBinaryFileConfig,
7
7
  } from '../types';
8
8
 
9
- export const DEFAULT_BASE_URL = 'https://api.write-binary-file.com/v1';
10
-
11
9
  export function encodePathSegment(value: string): string {
12
10
  return encodeURIComponent(value);
13
11
  }
@@ -32,7 +30,10 @@ export class WriteBinaryFileClient {
32
30
  throw new Error('API key is required');
33
31
  }
34
32
  this.apiKey = config.apiKey;
35
- this.baseUrl = (config.baseUrl || DEFAULT_BASE_URL).replace(/\/$/, '');
33
+ if (!config.baseUrl) {
34
+ throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
35
+ }
36
+ this.baseUrl = config.baseUrl.replace(/\/$/, '');
36
37
  }
37
38
 
38
39
  private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {
@@ -53,4 +53,4 @@ export class WriteBinaryFile {
53
53
  }
54
54
  }
55
55
 
56
- export { WriteBinaryFileClient, DEFAULT_BASE_URL, encodePathSegment } from './client';
56
+ export { WriteBinaryFileClient, encodePathSegment } from './client';
@@ -2,7 +2,7 @@
2
2
 
3
3
  export { WriteBinaryFile } from './api';
4
4
  export * from './types';
5
- export { WriteBinaryFileClient, DEFAULT_BASE_URL, encodePathSegment } from './api';
5
+ export { WriteBinaryFileClient, encodePathSegment } from './api';
6
6
 
7
7
  export {
8
8
  getApiKey,
@@ -0,0 +1,34 @@
1
+ import { afterEach, describe, expect, test } from 'bun:test';
2
+ import { WuBookrateClient } from './client';
3
+
4
+ const realFetch = globalThis.fetch;
5
+
6
+ afterEach(() => {
7
+ globalThis.fetch = realFetch;
8
+ });
9
+
10
+ describe('WuBookrateClient transport', () => {
11
+ test('refuses to send without a configured base URL (no default endpoint)', () => {
12
+ expect(() => new WuBookrateClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
13
+ });
14
+
15
+ test('sends the API key only to the configured base URL', async () => {
16
+ const recorded: string[] = [];
17
+ globalThis.fetch = (async (input: string | URL | Request, init?: RequestInit) => {
18
+ recorded.push(typeof input === 'string' ? input : input.toString());
19
+ return {
20
+ ok: true,
21
+ status: 200,
22
+ statusText: 'OK',
23
+ headers: new Headers({ 'content-type': 'application/json' }),
24
+ async text() { return JSON.stringify({ ok: true }); },
25
+ async json() { return { ok: true }; },
26
+ } as Response;
27
+ }) as typeof fetch;
28
+ const client = new WuBookrateClient({ apiKey: 'test-key', baseUrl: 'https://configured.example.com/v1' });
29
+ await client.request('/ping');
30
+ expect(recorded).toHaveLength(1);
31
+ expect(recorded[0].startsWith('https://configured.example.com/v1/')).toBe(true);
32
+ expect(recorded[0]).not.toContain('api.wubookratechecker.com');
33
+ });
34
+ });
@@ -3,11 +3,13 @@ import { WuBookrateApiError } from '../types';
3
3
 
4
4
  export class WuBookrateClient {
5
5
  private readonly apiKey: string;
6
- private readonly baseUrl = 'https://api.wubookratechecker.com/v1';
6
+ private readonly baseUrl: string;
7
7
 
8
8
  constructor(config: WuBookrateConfig) {
9
9
  if (!config.apiKey) throw new Error('Wu Bookrate Checker apiKey is required');
10
+ if (!config.baseUrl) throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
10
11
  this.apiKey = config.apiKey;
12
+ this.baseUrl = config.baseUrl;
11
13
  }
12
14
 
13
15
  async request<T>(path: string, params?: Record<string, string | number | undefined>): Promise<T> {
@@ -9,7 +9,7 @@ export class WuBookrateChecker {
9
9
  static fromEnv(): WuBookrateChecker {
10
10
  const apiKey = process.env.WUBOOKRATE_API_KEY;
11
11
  if (!apiKey) throw new Error('WUBOOKRATE_API_KEY is required');
12
- return new WuBookrateChecker({ apiKey });
12
+ return new WuBookrateChecker({ apiKey, baseUrl: process.env.WUBOOKRATE_BASE_URL });
13
13
  }
14
14
 
15
15
  async lookupByISBN(isbn: string): Promise<WBBook> { return this.client.request<WBBook>(`/books/${isbn}`); }
@@ -1,4 +1,4 @@
1
- export interface WuBookrateConfig { apiKey: string; }
1
+ export interface WuBookrateConfig { apiKey: string; baseUrl?: string; }
2
2
 
3
3
  export interface WBBook { isbn: string; title: string; author: string; publisher: string; published_date: string; average_rating: number; ratings_count: number; image_url: string; }
4
4
  export interface WBReview { source: string; rating: number; review_count: number; url: string; }
@@ -1,4 +1,4 @@
1
1
  # xAI API Key
2
2
  # Get your API key from: https://console.x.ai/
3
3
 
4
- XAI_API_KEY=xai-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4
+ XAI_API_KEY=your-api-key-here
@@ -3,5 +3,5 @@
3
3
 
4
4
  XAI_API_PLATFORM_API_KEY=
5
5
 
6
- # Optional: override the API base URL (default: https://api.xaiapiplatform.com/v1)
6
+ # Optional: override the API base URL (no default - must be configured)
7
7
  # XAI_API_PLATFORM_BASE_URL=https://api.xaiapiplatform.com/v1
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code when working with the Xai API Platfor
4
4
 
5
5
  ## Project Overview
6
6
 
7
- `connect-xai-api-platform` is a TypeScript CLI and library for the Xai API Platform REST API at `https://api.xaiapiplatform.com/v1`. It is **distinct** from `connect-xai` (Grok at `api.x.ai`).
7
+ `connect-xai-api-platform` is a TypeScript CLI and library for the Xai API Platform REST API at `configured.example.com/v1`. It is **distinct** from `connect-xai` (Grok at `api.x.ai`).
8
8
 
9
9
  ## Build & Run Commands
10
10