@hasna/connectors 1.4.5 → 1.4.6

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 (1191) hide show
  1. package/README.md +57 -15
  2. package/bin/index.js +1891 -1526
  3. package/bin/mcp.js +610 -307
  4. package/bin/serve.js +800 -1156
  5. package/connectors/3scribe/package.json +1 -1
  6. package/connectors/7todos/package.json +1 -1
  7. package/connectors/ably/package.json +1 -1
  8. package/connectors/abstract/package.json +1 -1
  9. package/connectors/abuselpdb/package.json +1 -1
  10. package/connectors/accelo/package.json +1 -1
  11. package/connectors/accredible/package.json +1 -1
  12. package/connectors/accurai/package.json +1 -1
  13. package/connectors/accuranker/package.json +1 -1
  14. package/connectors/acquire/package.json +1 -1
  15. package/connectors/actionnetwork/package.json +1 -1
  16. package/connectors/activecampaign/package.json +1 -1
  17. package/connectors/activetrail/package.json +1 -1
  18. package/connectors/adalo/package.json +1 -1
  19. package/connectors/adobe/package.json +1 -1
  20. package/connectors/adroll/package.json +1 -1
  21. package/connectors/affinity/package.json +1 -1
  22. package/connectors/agent/package.json +1 -1
  23. package/connectors/agilecrm/package.json +1 -1
  24. package/connectors/aiagenttool/package.json +1 -1
  25. package/connectors/airbrake/package.json +1 -1
  26. package/connectors/airnow/package.json +1 -1
  27. package/connectors/airtable/package.json +1 -1
  28. package/connectors/airtop/package.json +1 -1
  29. package/connectors/aitableai/package.json +1 -1
  30. package/connectors/alchemy/package.json +1 -1
  31. package/connectors/alerty/package.json +1 -1
  32. package/connectors/alienvault/package.json +1 -1
  33. package/connectors/alphamoon/package.json +1 -1
  34. package/connectors/alttextai/package.json +1 -1
  35. package/connectors/amadeus/package.json +1 -1
  36. package/connectors/amazon/package.json +1 -1
  37. package/connectors/amilia/package.json +1 -1
  38. package/connectors/amplitude/package.json +1 -1
  39. package/connectors/amqpsender/package.json +1 -1
  40. package/connectors/announcekit/package.json +1 -1
  41. package/connectors/anthropic/package.json +1 -1
  42. package/connectors/anyscale/package.json +1 -1
  43. package/connectors/apiary/package.json +1 -1
  44. package/connectors/apiflash/package.json +1 -1
  45. package/connectors/apitemplateio/package.json +1 -1
  46. package/connectors/apptivegrid/package.json +1 -1
  47. package/connectors/arxiv/package.json +1 -1
  48. package/connectors/asana/package.json +1 -1
  49. package/connectors/assemblyai/package.json +1 -1
  50. package/connectors/auth0/package.json +1 -1
  51. package/connectors/autom/package.json +1 -1
  52. package/connectors/automizy/package.json +1 -1
  53. package/connectors/autopilot/package.json +1 -1
  54. package/connectors/aws/package.json +1 -1
  55. package/connectors/awscognito/package.json +1 -1
  56. package/connectors/azureaisearchvectorstore/package.json +1 -1
  57. package/connectors/azurecosmosdb/package.json +1 -1
  58. package/connectors/azureopenaichatmodel/package.json +1 -1
  59. package/connectors/azurestorage/package.json +1 -1
  60. package/connectors/badgermaps/package.json +1 -1
  61. package/connectors/bamboohr/package.json +1 -1
  62. package/connectors/bandwidth/package.json +1 -1
  63. package/connectors/bannerbear/package.json +1 -1
  64. package/connectors/baserow/package.json +1 -1
  65. package/connectors/baseten/package.json +1 -1
  66. package/connectors/beeminder/package.json +1 -1
  67. package/connectors/benchmarkemail/package.json +1 -1
  68. package/connectors/betterproposals/package.json +1 -1
  69. package/connectors/bigcartel/package.json +1 -1
  70. package/connectors/bigdatacloud/package.json +1 -1
  71. package/connectors/bigml/package.json +1 -1
  72. package/connectors/bitly/package.json +1 -1
  73. package/connectors/bitrix24/package.json +1 -1
  74. package/connectors/bitwarden/package.json +1 -1
  75. package/connectors/blaze/package.json +1 -1
  76. package/connectors/blockchainexchange/package.json +1 -1
  77. package/connectors/bloock/package.json +1 -1
  78. package/connectors/bluesky/package.json +1 -1
  79. package/connectors/bot9/package.json +1 -1
  80. package/connectors/botbaba/package.json +1 -1
  81. package/connectors/botifier/package.json +1 -1
  82. package/connectors/botiumbox/package.json +1 -1
  83. package/connectors/botsonic/package.json +1 -1
  84. package/connectors/botstar/package.json +1 -1
  85. package/connectors/box/package.json +1 -1
  86. package/connectors/brainpodai/package.json +1 -1
  87. package/connectors/brandblast/package.json +1 -1
  88. package/connectors/brandfetch/package.json +1 -1
  89. package/connectors/brandmentions/package.json +1 -1
  90. package/connectors/brandsight/package.json +1 -1
  91. package/connectors/breezyhr/package.json +1 -1
  92. package/connectors/brevo/package.json +1 -1
  93. package/connectors/brex/package.json +1 -1
  94. package/connectors/browseai/package.json +1 -1
  95. package/connectors/browserless/package.json +1 -1
  96. package/connectors/browserstack/package.json +1 -1
  97. package/connectors/browseruse/package.json +1 -1
  98. package/connectors/bubble/package.json +1 -1
  99. package/connectors/bugbug/package.json +1 -1
  100. package/connectors/bugfender/package.json +1 -1
  101. package/connectors/bugherd/package.json +1 -1
  102. package/connectors/bugpilot/package.json +1 -1
  103. package/connectors/bugreplay/package.json +1 -1
  104. package/connectors/bugshot/package.json +1 -1
  105. package/connectors/buildkite/package.json +1 -1
  106. package/connectors/bunnycdn/package.json +1 -1
  107. package/connectors/calendarhero/package.json +1 -1
  108. package/connectors/calendly/package.json +1 -1
  109. package/connectors/canvas/package.json +1 -1
  110. package/connectors/capsule/package.json +1 -1
  111. package/connectors/carbonblack/package.json +1 -1
  112. package/connectors/cerebras/package.json +1 -1
  113. package/connectors/chaindesk/package.json +1 -1
  114. package/connectors/chargebee/package.json +1 -1
  115. package/connectors/chargeover/package.json +1 -1
  116. package/connectors/chargify/package.json +1 -1
  117. package/connectors/chatbase/package.json +1 -1
  118. package/connectors/chatling/package.json +1 -1
  119. package/connectors/chatmasters/package.json +1 -1
  120. package/connectors/chatrace/package.json +1 -1
  121. package/connectors/chatsonic/package.json +1 -1
  122. package/connectors/chekhub/package.json +1 -1
  123. package/connectors/chromavectorstore/package.json +1 -1
  124. package/connectors/circleci/package.json +1 -1
  125. package/connectors/ciscomeraki/package.json +1 -1
  126. package/connectors/ciscosecureendpoint/package.json +1 -1
  127. package/connectors/ciscoumbrella/package.json +1 -1
  128. package/connectors/ciscowebex/package.json +1 -1
  129. package/connectors/citrixadc/package.json +1 -1
  130. package/connectors/clappia/package.json +1 -1
  131. package/connectors/clarifai/package.json +1 -1
  132. package/connectors/clearbit/package.json +1 -1
  133. package/connectors/cleverreach/package.json +1 -1
  134. package/connectors/clickbank/package.json +1 -1
  135. package/connectors/clicksendsms/package.json +1 -1
  136. package/connectors/clickup/package.json +1 -1
  137. package/connectors/clockify/package.json +1 -1
  138. package/connectors/cloozo/package.json +1 -1
  139. package/connectors/cloud66/package.json +1 -1
  140. package/connectors/cloudboost/package.json +1 -1
  141. package/connectors/cloudconvert/package.json +1 -1
  142. package/connectors/cloudflare/package.json +1 -1
  143. package/connectors/cloudflare-workers/package.json +1 -1
  144. package/connectors/cloudlayer/package.json +1 -1
  145. package/connectors/cloudshare/package.json +1 -1
  146. package/connectors/cloze/package.json +1 -1
  147. package/connectors/cockpit/package.json +1 -1
  148. package/connectors/coda/package.json +1 -1
  149. package/connectors/codeclimate/package.json +1 -1
  150. package/connectors/codefresh/package.json +1 -1
  151. package/connectors/cody/package.json +1 -1
  152. package/connectors/cohere/package.json +1 -1
  153. package/connectors/coinbase/package.json +1 -1
  154. package/connectors/coingecko/package.json +1 -1
  155. package/connectors/collegefootballdata/package.json +1 -1
  156. package/connectors/configcat/package.json +1 -1
  157. package/connectors/confluence/package.json +1 -1
  158. package/connectors/confluent/package.json +1 -1
  159. package/connectors/connect-twocaptcha/package.json +1 -1
  160. package/connectors/connect-voxel-energy/package.json +1 -1
  161. package/connectors/contactout/package.json +1 -1
  162. package/connectors/contentful/package.json +1 -1
  163. package/connectors/convertapi/package.json +1 -1
  164. package/connectors/convertkit/package.json +1 -1
  165. package/connectors/convi/package.json +1 -1
  166. package/connectors/copper/package.json +1 -1
  167. package/connectors/copyai/package.json +1 -1
  168. package/connectors/corsizio/package.json +1 -1
  169. package/connectors/cortex/package.json +1 -1
  170. package/connectors/cradlai/package.json +1 -1
  171. package/connectors/craftdraft/package.json +1 -1
  172. package/connectors/cratedb/package.json +1 -1
  173. package/connectors/crisp/package.json +1 -1
  174. package/connectors/cronly/package.json +1 -1
  175. package/connectors/crossmint/package.json +1 -1
  176. package/connectors/crowddev/package.json +1 -1
  177. package/connectors/crowdin/package.json +1 -1
  178. package/connectors/crowdpower/package.json +1 -1
  179. package/connectors/crowdstrike/package.json +1 -1
  180. package/connectors/cryptolens/package.json +1 -1
  181. package/connectors/currents/package.json +1 -1
  182. package/connectors/customerio/package.json +1 -1
  183. package/connectors/customeriq/package.json +1 -1
  184. package/connectors/daffy/package.json +1 -1
  185. package/connectors/danteai/package.json +1 -1
  186. package/connectors/darkskyapi/package.json +1 -1
  187. package/connectors/dasha/package.json +1 -1
  188. package/connectors/databox/package.json +1 -1
  189. package/connectors/databricks/package.json +1 -1
  190. package/connectors/datadog/package.json +1 -1
  191. package/connectors/datarobot/package.json +1 -1
  192. package/connectors/datasoap/package.json +1 -1
  193. package/connectors/datumbox/package.json +1 -1
  194. package/connectors/dayschedule/package.json +1 -1
  195. package/connectors/deepgram/package.json +1 -1
  196. package/connectors/deepinfra/package.json +1 -1
  197. package/connectors/deepl/package.json +1 -1
  198. package/connectors/deepseek/package.json +1 -1
  199. package/connectors/demio/package.json +1 -1
  200. package/connectors/descript/package.json +1 -1
  201. package/connectors/detrack/package.json +1 -1
  202. package/connectors/devcycle/package.json +1 -1
  203. package/connectors/dhl/package.json +1 -1
  204. package/connectors/dialzara/package.json +1 -1
  205. package/connectors/diddoai/package.json +1 -1
  206. package/connectors/diffy/package.json +1 -1
  207. package/connectors/digicert/package.json +1 -1
  208. package/connectors/digitalocean/package.json +1 -1
  209. package/connectors/discord/package.json +1 -1
  210. package/connectors/discourse/package.json +1 -1
  211. package/connectors/disqus/package.json +1 -1
  212. package/connectors/dockcerts/package.json +1 -1
  213. package/connectors/docker/package.json +1 -1
  214. package/connectors/docparser/package.json +1 -1
  215. package/connectors/docsbotai/package.json +1 -1
  216. package/connectors/docupilot/package.json +1 -1
  217. package/connectors/docusign/package.json +1 -1
  218. package/connectors/docuwriter/package.json +1 -1
  219. package/connectors/dokan/package.json +1 -1
  220. package/connectors/domo/package.json +1 -1
  221. package/connectors/draftable/package.json +1 -1
  222. package/connectors/drift/package.json +1 -1
  223. package/connectors/dropbox/package.json +1 -1
  224. package/connectors/dropcontact/package.json +1 -1
  225. package/connectors/droxy/package.json +1 -1
  226. package/connectors/dynatrace/package.json +1 -1
  227. package/connectors/e2b/package.json +1 -1
  228. package/connectors/eartho/package.json +1 -1
  229. package/connectors/easyship/package.json +1 -1
  230. package/connectors/echowin/package.json +1 -1
  231. package/connectors/ecwid/package.json +1 -1
  232. package/connectors/edenai/package.json +1 -1
  233. package/connectors/egoi/package.json +1 -1
  234. package/connectors/elasticsearch/package.json +1 -1
  235. package/connectors/elasticsecurity/package.json +1 -1
  236. package/connectors/elevenlabs/package.json +1 -1
  237. package/connectors/elmah/package.json +1 -1
  238. package/connectors/embedai/package.json +1 -1
  239. package/connectors/emelia/package.json +1 -1
  240. package/connectors/empsing/package.json +1 -1
  241. package/connectors/engati/package.json +1 -1
  242. package/connectors/enormail/package.json +1 -1
  243. package/connectors/enterpret/package.json +1 -1
  244. package/connectors/envoy/package.json +1 -1
  245. package/connectors/epo/package.json +1 -1
  246. package/connectors/erpnext/package.json +1 -1
  247. package/connectors/esendex/package.json +1 -1
  248. package/connectors/evervault/package.json +1 -1
  249. package/connectors/evolphinzoom/package.json +1 -1
  250. package/connectors/exa/package.json +1 -1
  251. package/connectors/f5bigip/package.json +1 -1
  252. package/connectors/fal/package.json +1 -1
  253. package/connectors/faraday/package.json +1 -1
  254. package/connectors/faros/package.json +1 -1
  255. package/connectors/fastbots/package.json +1 -1
  256. package/connectors/fathom/package.json +1 -1
  257. package/connectors/figma/package.json +1 -1
  258. package/connectors/filemaker/package.json +1 -1
  259. package/connectors/filescan/package.json +1 -1
  260. package/connectors/firecrawl/README.md +10 -0
  261. package/connectors/firecrawl/package.json +1 -1
  262. package/connectors/firecrawl/src/cli/extraction.test.ts +46 -0
  263. package/connectors/firecrawl/src/cli/extraction.ts +36 -0
  264. package/connectors/firecrawl/src/cli/index.ts +5 -0
  265. package/connectors/fireworks/package.json +1 -1
  266. package/connectors/firmao/package.json +1 -1
  267. package/connectors/fitbit/package.json +1 -1
  268. package/connectors/flagship/package.json +1 -1
  269. package/connectors/float/package.json +1 -1
  270. package/connectors/flotiq/package.json +1 -1
  271. package/connectors/flow/package.json +1 -1
  272. package/connectors/fluentsupport/package.json +1 -1
  273. package/connectors/focuster/package.json +1 -1
  274. package/connectors/formcarry/package.json +1 -1
  275. package/connectors/formdesk/package.json +1 -1
  276. package/connectors/formsite/package.json +1 -1
  277. package/connectors/formsonfire/package.json +1 -1
  278. package/connectors/formstackdocuments/package.json +1 -1
  279. package/connectors/fortinetfortigate/package.json +1 -1
  280. package/connectors/foursquare/package.json +1 -1
  281. package/connectors/freedictionary/package.json +1 -1
  282. package/connectors/freshdesk/package.json +1 -1
  283. package/connectors/freshping/package.json +1 -1
  284. package/connectors/freshservice/package.json +1 -1
  285. package/connectors/freshworkscrm/package.json +1 -1
  286. package/connectors/fullcontact/package.json +1 -1
  287. package/connectors/fusioo/package.json +1 -1
  288. package/connectors/gali/package.json +1 -1
  289. package/connectors/gatekeeper/package.json +1 -1
  290. package/connectors/genderapi/package.json +1 -1
  291. package/connectors/getresponse/package.json +1 -1
  292. package/connectors/getscreenshot/package.json +1 -1
  293. package/connectors/ghost/package.json +1 -1
  294. package/connectors/giphy/package.json +1 -1
  295. package/connectors/gitea/package.json +1 -1
  296. package/connectors/github/package.json +1 -1
  297. package/connectors/gitlab/package.json +1 -1
  298. package/connectors/gleap/package.json +1 -1
  299. package/connectors/gmail/package.json +1 -1
  300. package/connectors/gocanvas/package.json +1 -1
  301. package/connectors/godaddy/package.json +1 -1
  302. package/connectors/gong/package.json +1 -1
  303. package/connectors/google/package.json +1 -1
  304. package/connectors/googleads/package.json +1 -1
  305. package/connectors/googleanalytics/package.json +1 -1
  306. package/connectors/googlebigquery/package.json +1 -1
  307. package/connectors/googlebooks/package.json +1 -1
  308. package/connectors/googlebusinessprofile/package.json +1 -1
  309. package/connectors/googlecalendar/package.json +1 -1
  310. package/connectors/googlechat/package.json +1 -1
  311. package/connectors/googlecloud/package.json +1 -1
  312. package/connectors/googlecontacts/package.json +1 -1
  313. package/connectors/googledocs/package.json +1 -1
  314. package/connectors/googledrive/package.json +1 -1
  315. package/connectors/googleforms/package.json +1 -1
  316. package/connectors/googlegemini/package.json +1 -1
  317. package/connectors/googlemaps/package.json +1 -1
  318. package/connectors/googleperspective/package.json +1 -1
  319. package/connectors/googlephotos/package.json +1 -1
  320. package/connectors/googlesheets/package.json +1 -1
  321. package/connectors/googleslides/package.json +1 -1
  322. package/connectors/googletables/package.json +1 -1
  323. package/connectors/googletasks/package.json +1 -1
  324. package/connectors/googletranslate/package.json +1 -1
  325. package/connectors/googlevertexai/package.json +1 -1
  326. package/connectors/gotify/package.json +1 -1
  327. package/connectors/gotowebinar/package.json +1 -1
  328. package/connectors/gptea/package.json +1 -1
  329. package/connectors/grafana/package.json +1 -1
  330. package/connectors/grain/package.json +1 -1
  331. package/connectors/gravityforms/package.json +1 -1
  332. package/connectors/grist/package.json +1 -1
  333. package/connectors/groq/package.json +1 -1
  334. package/connectors/growbots/package.json +1 -1
  335. package/connectors/gumroad/package.json +1 -1
  336. package/connectors/gupshup/package.json +1 -1
  337. package/connectors/guru/package.json +1 -1
  338. package/connectors/hackernews/package.json +1 -1
  339. package/connectors/halopsa/package.json +1 -1
  340. package/connectors/handwrytten/package.json +1 -1
  341. package/connectors/hansei/package.json +1 -1
  342. package/connectors/harrypotterapi/package.json +1 -1
  343. package/connectors/harvest/package.json +1 -1
  344. package/connectors/headlesstesting/package.json +1 -1
  345. package/connectors/hedra/package.json +1 -1
  346. package/connectors/helcim/package.json +1 -1
  347. package/connectors/hellosign/package.json +1 -1
  348. package/connectors/helpscout/package.json +1 -1
  349. package/connectors/heygen/package.json +1 -1
  350. package/connectors/heysummit/package.json +1 -1
  351. package/connectors/highlevel/package.json +1 -1
  352. package/connectors/homeassistant/package.json +1 -1
  353. package/connectors/hubplanner/package.json +1 -1
  354. package/connectors/hubspot/package.json +1 -1
  355. package/connectors/huggingface/package.json +1 -1
  356. package/connectors/humanticai/package.json +1 -1
  357. package/connectors/hunter/package.json +1 -1
  358. package/connectors/hybridanalysis/package.json +1 -1
  359. package/connectors/iauditorbysafetyculture/package.json +1 -1
  360. package/connectors/icons8/package.json +1 -1
  361. package/connectors/idealpostcodes/package.json +1 -1
  362. package/connectors/idealspot/package.json +1 -1
  363. package/connectors/ideogram/package.json +1 -1
  364. package/connectors/ideta/package.json +1 -1
  365. package/connectors/imessage/package.json +1 -1
  366. package/connectors/imgbb/package.json +1 -1
  367. package/connectors/imgur/package.json +1 -1
  368. package/connectors/impervawaf/package.json +1 -1
  369. package/connectors/impira/package.json +1 -1
  370. package/connectors/industryselect/package.json +1 -1
  371. package/connectors/influxdbcloud/package.json +1 -1
  372. package/connectors/infolobby/package.json +1 -1
  373. package/connectors/instabot/package.json +1 -1
  374. package/connectors/instabug/package.json +1 -1
  375. package/connectors/intakeq/package.json +1 -1
  376. package/connectors/intercom/package.json +1 -1
  377. package/connectors/invoiced/package.json +1 -1
  378. package/connectors/invoiceninja/package.json +1 -1
  379. package/connectors/ip2location/package.json +1 -1
  380. package/connectors/ipinfo/package.json +1 -1
  381. package/connectors/ipregistry/package.json +1 -1
  382. package/connectors/irisdfir/package.json +1 -1
  383. package/connectors/isn/package.json +1 -1
  384. package/connectors/iterable/package.json +1 -1
  385. package/connectors/jama/package.json +1 -1
  386. package/connectors/jasper/package.json +1 -1
  387. package/connectors/jenkins/package.json +1 -1
  388. package/connectors/jinaai/package.json +1 -1
  389. package/connectors/jira/package.json +1 -1
  390. package/connectors/kadoa/package.json +1 -1
  391. package/connectors/kafka/package.json +1 -1
  392. package/connectors/kaggle/package.json +1 -1
  393. package/connectors/kanbantool/package.json +1 -1
  394. package/connectors/karbon/package.json +1 -1
  395. package/connectors/keap/package.json +1 -1
  396. package/connectors/keygen/package.json +1 -1
  397. package/connectors/keyzy/package.json +1 -1
  398. package/connectors/kibana/package.json +1 -1
  399. package/connectors/kitemaker/package.json +1 -1
  400. package/connectors/klaviyo/package.json +1 -1
  401. package/connectors/klazify/package.json +1 -1
  402. package/connectors/kling/package.json +1 -1
  403. package/connectors/knack/package.json +1 -1
  404. package/connectors/knowbe4/package.json +1 -1
  405. package/connectors/kobotoolbox/package.json +1 -1
  406. package/connectors/kraftful/package.json +1 -1
  407. package/connectors/lagrowthmachine/package.json +1 -1
  408. package/connectors/lambdatest/package.json +1 -1
  409. package/connectors/landbot/package.json +1 -1
  410. package/connectors/laposta/package.json +1 -1
  411. package/connectors/launch27/package.json +1 -1
  412. package/connectors/launchdarkly/package.json +1 -1
  413. package/connectors/ldap/package.json +1 -1
  414. package/connectors/leadboxer/package.json +1 -1
  415. package/connectors/leadpops/package.json +1 -1
  416. package/connectors/lemlist/package.json +1 -1
  417. package/connectors/lemonsqueezy/package.json +1 -1
  418. package/connectors/leonardo/package.json +1 -1
  419. package/connectors/lepton/package.json +1 -1
  420. package/connectors/letsenhance/package.json +1 -1
  421. package/connectors/libraria/package.json +1 -1
  422. package/connectors/lighthouse/package.json +1 -1
  423. package/connectors/limego/package.json +1 -1
  424. package/connectors/line/package.json +1 -1
  425. package/connectors/linear/package.json +1 -1
  426. package/connectors/lingvanex/package.json +1 -1
  427. package/connectors/linkedin/package.json +1 -1
  428. package/connectors/linkish/package.json +1 -1
  429. package/connectors/linode/package.json +1 -1
  430. package/connectors/liveagent/package.json +1 -1
  431. package/connectors/localazy/package.json +1 -1
  432. package/connectors/loginradius/package.json +1 -1
  433. package/connectors/lokalise/package.json +1 -1
  434. package/connectors/lonescale/package.json +1 -1
  435. package/connectors/lucidchart/package.json +1 -1
  436. package/connectors/luma/package.json +1 -1
  437. package/connectors/magento2/package.json +1 -1
  438. package/connectors/mailcheck/package.json +1 -1
  439. package/connectors/mailchimp/package.json +1 -1
  440. package/connectors/mailerlite/package.json +1 -1
  441. package/connectors/mailersend/package.json +1 -1
  442. package/connectors/mailgun/package.json +1 -1
  443. package/connectors/mailify/package.json +1 -1
  444. package/connectors/mailjet/package.json +1 -1
  445. package/connectors/mailmodo/package.json +1 -1
  446. package/connectors/malcore/package.json +1 -1
  447. package/connectors/mandrill/package.json +1 -1
  448. package/connectors/marcomrobot/package.json +1 -1
  449. package/connectors/marketingmasterio/package.json +1 -1
  450. package/connectors/marketplacer/package.json +1 -1
  451. package/connectors/marketstack/package.json +1 -1
  452. package/connectors/maropost/package.json +1 -1
  453. package/connectors/mastodon/package.json +1 -1
  454. package/connectors/matrix/package.json +1 -1
  455. package/connectors/mattermost/package.json +1 -1
  456. package/connectors/mautic/package.json +1 -1
  457. package/connectors/mav/package.json +1 -1
  458. package/connectors/maverick/package.json +1 -1
  459. package/connectors/medium/package.json +1 -1
  460. package/connectors/mem/package.json +1 -1
  461. package/connectors/mercury/package.json +1 -1
  462. package/connectors/messagebird/package.json +1 -1
  463. package/connectors/meta/package.json +1 -1
  464. package/connectors/metabase/package.json +1 -1
  465. package/connectors/mews/package.json +1 -1
  466. package/connectors/microsoftazuremonitor/package.json +1 -1
  467. package/connectors/microsoftdynamics365businesscentralapi/package.json +1 -1
  468. package/connectors/microsoftdynamicscrm/package.json +1 -1
  469. package/connectors/microsoftentraid/package.json +1 -1
  470. package/connectors/microsoftentraidazureactivedirectory/package.json +1 -1
  471. package/connectors/microsoftexcel/package.json +1 -1
  472. package/connectors/microsoftgraphsecurity/package.json +1 -1
  473. package/connectors/microsoftonedrive/package.json +1 -1
  474. package/connectors/microsoftoutlook/package.json +1 -1
  475. package/connectors/microsoftsharepoint/package.json +1 -1
  476. package/connectors/microsoftsql/package.json +1 -1
  477. package/connectors/microsoftteams/package.json +1 -1
  478. package/connectors/microsoftteamsadmin/package.json +1 -1
  479. package/connectors/microsofttodo/package.json +1 -1
  480. package/connectors/midjourney/package.json +1 -1
  481. package/connectors/miestro/package.json +1 -1
  482. package/connectors/mindee/package.json +1 -1
  483. package/connectors/minimax/package.json +1 -1
  484. package/connectors/miro/package.json +1 -1
  485. package/connectors/misp/package.json +1 -1
  486. package/connectors/missive/package.json +1 -1
  487. package/connectors/mist/package.json +1 -1
  488. package/connectors/mistral/package.json +1 -1
  489. package/connectors/mixpanel/package.json +1 -1
  490. package/connectors/mocean/package.json +1 -1
  491. package/connectors/modal/package.json +1 -1
  492. package/connectors/monday/package.json +1 -1
  493. package/connectors/mongodb/package.json +1 -1
  494. package/connectors/monicacrm/package.json +1 -1
  495. package/connectors/moonclerk/package.json +1 -1
  496. package/connectors/moonmail/package.json +1 -1
  497. package/connectors/morph/package.json +1 -1
  498. package/connectors/mqtt/package.json +1 -1
  499. package/connectors/msg91/package.json +1 -1
  500. package/connectors/mubert/package.json +1 -1
  501. package/connectors/murf/package.json +1 -1
  502. package/connectors/mux/package.json +1 -1
  503. package/connectors/mxtoolbox/package.json +1 -1
  504. package/connectors/myaskai/package.json +1 -1
  505. package/connectors/myphoner/package.json +1 -1
  506. package/connectors/mysql/package.json +1 -1
  507. package/connectors/namecheap/package.json +1 -1
  508. package/connectors/nanonetsocr/package.json +1 -1
  509. package/connectors/nasa/package.json +1 -1
  510. package/connectors/ncscale/package.json +1 -1
  511. package/connectors/netlify/package.json +1 -1
  512. package/connectors/nextcloud/package.json +1 -1
  513. package/connectors/nightfallai/package.json +1 -1
  514. package/connectors/ninox/package.json +1 -1
  515. package/connectors/nmkr/package.json +1 -1
  516. package/connectors/nocodb/package.json +1 -1
  517. package/connectors/notion/package.json +1 -1
  518. package/connectors/npm/package.json +1 -1
  519. package/connectors/nuclia/package.json +1 -1
  520. package/connectors/nusiiproposals/package.json +1 -1
  521. package/connectors/nyckel/package.json +1 -1
  522. package/connectors/nyota/package.json +1 -1
  523. package/connectors/occasion/package.json +1 -1
  524. package/connectors/ocrspace/package.json +1 -1
  525. package/connectors/octoai/package.json +1 -1
  526. package/connectors/odoo/package.json +1 -1
  527. package/connectors/offalerts/package.json +1 -1
  528. package/connectors/okta/package.json +1 -1
  529. package/connectors/ollama/package.json +1 -1
  530. package/connectors/omeda/package.json +1 -1
  531. package/connectors/omniconvert/package.json +1 -1
  532. package/connectors/omnimind/package.json +1 -1
  533. package/connectors/on2air/package.json +1 -1
  534. package/connectors/oneai/package.json +1 -1
  535. package/connectors/onesimpleapi/package.json +1 -1
  536. package/connectors/onfleet/package.json +1 -1
  537. package/connectors/openai/AGENTS.md +0 -1
  538. package/connectors/openai/README.md +3 -3
  539. package/connectors/openai/package.json +3 -2
  540. package/connectors/opencti/package.json +1 -1
  541. package/connectors/openthesaurus/package.json +1 -1
  542. package/connectors/openweathermap/package.json +1 -1
  543. package/connectors/opnformerlyomise/package.json +1 -1
  544. package/connectors/oracledatabase/package.json +1 -1
  545. package/connectors/orbit/package.json +1 -1
  546. package/connectors/orderdesk/package.json +1 -1
  547. package/connectors/ortto/package.json +1 -1
  548. package/connectors/oura/package.json +1 -1
  549. package/connectors/paddle/package.json +1 -1
  550. package/connectors/pagerduty/package.json +1 -1
  551. package/connectors/pandadoc/package.json +1 -1
  552. package/connectors/paperform/package.json +1 -1
  553. package/connectors/papyrs/package.json +1 -1
  554. package/connectors/parsehub/package.json +1 -1
  555. package/connectors/parseprompt/package.json +1 -1
  556. package/connectors/passcreator/package.json +1 -1
  557. package/connectors/passslot/package.json +1 -1
  558. package/connectors/patentsview/package.json +1 -1
  559. package/connectors/patreon/package.json +1 -1
  560. package/connectors/paymo/package.json +1 -1
  561. package/connectors/paypal/package.json +1 -1
  562. package/connectors/peekalink/package.json +1 -1
  563. package/connectors/perplexity/package.json +1 -1
  564. package/connectors/persio/package.json +1 -1
  565. package/connectors/personalai/package.json +1 -1
  566. package/connectors/phantombuster/package.json +1 -1
  567. package/connectors/philipshue/package.json +1 -1
  568. package/connectors/phrase/package.json +1 -1
  569. package/connectors/pika/package.json +1 -1
  570. package/connectors/pinata/package.json +1 -1
  571. package/connectors/pinboard/package.json +1 -1
  572. package/connectors/pinterest/package.json +1 -1
  573. package/connectors/pipedrive/package.json +1 -1
  574. package/connectors/pipefy/package.json +1 -1
  575. package/connectors/pirateweather/package.json +1 -1
  576. package/connectors/pitchly/package.json +1 -1
  577. package/connectors/pivotaltracker/package.json +1 -1
  578. package/connectors/plaid/package.json +1 -1
  579. package/connectors/planviewleankit/package.json +1 -1
  580. package/connectors/planyoonlinebooking/package.json +1 -1
  581. package/connectors/platformly/package.json +1 -1
  582. package/connectors/playht/package.json +1 -1
  583. package/connectors/plecto/package.json +1 -1
  584. package/connectors/plivo/package.json +1 -1
  585. package/connectors/postgres/package.json +1 -1
  586. package/connectors/posthog/package.json +1 -1
  587. package/connectors/practitest/package.json +1 -1
  588. package/connectors/predisai/package.json +1 -1
  589. package/connectors/prodia/package.json +1 -1
  590. package/connectors/producthunt/package.json +1 -1
  591. package/connectors/profitwell/package.json +1 -1
  592. package/connectors/projectbubbleproprofsproject/package.json +1 -1
  593. package/connectors/prompthub/package.json +1 -1
  594. package/connectors/prospeai/package.json +1 -1
  595. package/connectors/pulsetic/package.json +1 -1
  596. package/connectors/pushbullet/package.json +1 -1
  597. package/connectors/pushcut/package.json +1 -1
  598. package/connectors/pusher/package.json +1 -1
  599. package/connectors/pushover/package.json +1 -1
  600. package/connectors/qradar/package.json +1 -1
  601. package/connectors/qualaroo/package.json +1 -1
  602. package/connectors/qualys/package.json +1 -1
  603. package/connectors/quentn/package.json +1 -1
  604. package/connectors/questdb/package.json +1 -1
  605. package/connectors/quickbase/package.json +1 -1
  606. package/connectors/quickbooksonline/package.json +1 -1
  607. package/connectors/quickchart/package.json +1 -1
  608. package/connectors/quintadb/package.json +1 -1
  609. package/connectors/quo/package.json +1 -1
  610. package/connectors/rabbitmq/package.json +1 -1
  611. package/connectors/radar/package.json +1 -1
  612. package/connectors/raindrop/package.json +1 -1
  613. package/connectors/rapid7insightvm/package.json +1 -1
  614. package/connectors/raventools/package.json +1 -1
  615. package/connectors/rawgvideogamesdatabase/package.json +1 -1
  616. package/connectors/rdstationcrm/package.json +1 -1
  617. package/connectors/readai/package.json +1 -1
  618. package/connectors/realphonevalidation/package.json +1 -1
  619. package/connectors/recharge/package.json +1 -1
  620. package/connectors/recordedfuture/package.json +1 -1
  621. package/connectors/redash/package.json +1 -1
  622. package/connectors/reddit/package.json +1 -1
  623. package/connectors/redis/package.json +1 -1
  624. package/connectors/reducto/package.json +1 -1
  625. package/connectors/relevanceai/package.json +1 -1
  626. package/connectors/relinkurlshortener/package.json +1 -1
  627. package/connectors/relysia/package.json +1 -1
  628. package/connectors/replicate/package.json +1 -1
  629. package/connectors/reply/package.json +1 -1
  630. package/connectors/replyio/package.json +1 -1
  631. package/connectors/resemble/package.json +1 -1
  632. package/connectors/resend/package.json +1 -1
  633. package/connectors/retable/package.json +1 -1
  634. package/connectors/reversecontact/package.json +1 -1
  635. package/connectors/revolut/package.json +1 -1
  636. package/connectors/rewardful/package.json +1 -1
  637. package/connectors/ritekit/package.json +1 -1
  638. package/connectors/roboflow/package.json +1 -1
  639. package/connectors/robolytix/package.json +1 -1
  640. package/connectors/roboresponseai/package.json +1 -1
  641. package/connectors/rocketchat/package.json +1 -1
  642. package/connectors/rollbar/package.json +1 -1
  643. package/connectors/rootly/package.json +1 -1
  644. package/connectors/route4me/package.json +1 -1
  645. package/connectors/rundeck/package.json +1 -1
  646. package/connectors/runpod/package.json +1 -1
  647. package/connectors/runway/package.json +1 -1
  648. package/connectors/s3/package.json +1 -1
  649. package/connectors/salesforce/package.json +1 -1
  650. package/connectors/salesmaa/package.json +1 -1
  651. package/connectors/salesmate/package.json +1 -1
  652. package/connectors/salesmsg/package.json +1 -1
  653. package/connectors/salesrocks/package.json +1 -1
  654. package/connectors/salessimplify/package.json +1 -1
  655. package/connectors/samsungsmartthings/package.json +1 -1
  656. package/connectors/scrapeitcloud/package.json +1 -1
  657. package/connectors/scrapeninja/package.json +1 -1
  658. package/connectors/screenshotone/package.json +1 -1
  659. package/connectors/seamlessai/package.json +1 -1
  660. package/connectors/searchandsave/package.json +1 -1
  661. package/connectors/searxng/package.json +1 -1
  662. package/connectors/seatable/package.json +1 -1
  663. package/connectors/securityscorecard/package.json +1 -1
  664. package/connectors/sedo/package.json +1 -1
  665. package/connectors/segment/package.json +1 -1
  666. package/connectors/sekoia/package.json +1 -1
  667. package/connectors/sellix/package.json +1 -1
  668. package/connectors/semblyai/package.json +1 -1
  669. package/connectors/sendgrid/package.json +1 -1
  670. package/connectors/sendy/package.json +1 -1
  671. package/connectors/sentry/package.json +1 -1
  672. package/connectors/servicenow/package.json +1 -1
  673. package/connectors/shadcn/package.json +1 -1
  674. package/connectors/sharlyai/package.json +1 -1
  675. package/connectors/shiphero/package.json +1 -1
  676. package/connectors/shipstation/package.json +1 -1
  677. package/connectors/shopify/package.json +1 -1
  678. package/connectors/shortio/package.json +1 -1
  679. package/connectors/shuffler/package.json +1 -1
  680. package/connectors/sierrainteractive/package.json +1 -1
  681. package/connectors/sifter/package.json +1 -1
  682. package/connectors/signaturit/package.json +1 -1
  683. package/connectors/signl4/package.json +1 -1
  684. package/connectors/simpleem/package.json +1 -1
  685. package/connectors/simplehash/package.json +1 -1
  686. package/connectors/simplekpi/package.json +1 -1
  687. package/connectors/simplelocalize/package.json +1 -1
  688. package/connectors/simplero/package.json +1 -1
  689. package/connectors/simpletexting/package.json +1 -1
  690. package/connectors/sitecreatorio/package.json +1 -1
  691. package/connectors/sitespeakai/package.json +1 -1
  692. package/connectors/slack/package.json +1 -1
  693. package/connectors/smaily/package.json +1 -1
  694. package/connectors/smartreach/package.json +1 -1
  695. package/connectors/smartrecruiters/package.json +1 -1
  696. package/connectors/smartsheet/package.json +1 -1
  697. package/connectors/smartsuite/package.json +1 -1
  698. package/connectors/smile-io/package.json +1 -1
  699. package/connectors/smol-machines/package.json +1 -1
  700. package/connectors/sms77/package.json +1 -1
  701. package/connectors/smsit/package.json +1 -1
  702. package/connectors/smsmagic/package.json +1 -1
  703. package/connectors/smtp2go/package.json +1 -1
  704. package/connectors/snap/package.json +1 -1
  705. package/connectors/snapdocs/package.json +1 -1
  706. package/connectors/snatchbot/package.json +1 -1
  707. package/connectors/snipcart/package.json +1 -1
  708. package/connectors/snov-io/package.json +1 -1
  709. package/connectors/snowflake/package.json +1 -1
  710. package/connectors/solcast/package.json +1 -1
  711. package/connectors/solvedata/package.json +1 -1
  712. package/connectors/sonarqube/package.json +1 -1
  713. package/connectors/sparkpost/package.json +1 -1
  714. package/connectors/speakeasy-api/package.json +1 -1
  715. package/connectors/specific/package.json +1 -1
  716. package/connectors/specter/package.json +1 -1
  717. package/connectors/speechify/package.json +1 -1
  718. package/connectors/spike/package.json +1 -1
  719. package/connectors/split-in-batches/package.json +1 -1
  720. package/connectors/split-io/package.json +1 -1
  721. package/connectors/splunk/package.json +1 -1
  722. package/connectors/splunk-cloud/package.json +1 -1
  723. package/connectors/spondyr/package.json +1 -1
  724. package/connectors/sponge/package.json +1 -1
  725. package/connectors/spontit/package.json +1 -1
  726. package/connectors/sportsdata/package.json +1 -1
  727. package/connectors/spotify/package.json +1 -1
  728. package/connectors/spotify-ads/package.json +1 -1
  729. package/connectors/spotpay/package.json +1 -1
  730. package/connectors/spreadsheet-file/package.json +1 -1
  731. package/connectors/sprig/package.json +1 -1
  732. package/connectors/sprinklr/package.json +1 -1
  733. package/connectors/sprout-social/package.json +1 -1
  734. package/connectors/spydra/package.json +1 -1
  735. package/connectors/square/package.json +1 -1
  736. package/connectors/squarespace/package.json +1 -1
  737. package/connectors/squid/package.json +1 -1
  738. package/connectors/sse-trigger/package.json +1 -1
  739. package/connectors/ssh/package.json +1 -1
  740. package/connectors/sslmatecertspotterapi/package.json +1 -1
  741. package/connectors/stability-api-platform/package.json +1 -1
  742. package/connectors/stabilityai/package.json +1 -1
  743. package/connectors/stablebrowse/package.json +1 -1
  744. package/connectors/stackadapt/package.json +1 -1
  745. package/connectors/stackby/package.json +1 -1
  746. package/connectors/stackexchange/package.json +1 -1
  747. package/connectors/stage/package.json +1 -1
  748. package/connectors/stagehand/package.json +1 -1
  749. package/connectors/stainlessapi/package.json +1 -1
  750. package/connectors/stammerai/package.json +1 -1
  751. package/connectors/stampedio/package.json +1 -1
  752. package/connectors/standard-signal/package.json +1 -1
  753. package/connectors/standout/package.json +1 -1
  754. package/connectors/starton/package.json +1 -1
  755. package/connectors/statsig/package.json +1 -1
  756. package/connectors/statuscake/package.json +1 -1
  757. package/connectors/statuspage/package.json +1 -1
  758. package/connectors/steel-dev/package.json +1 -1
  759. package/connectors/sticky-note/package.json +1 -1
  760. package/connectors/stilta/package.json +1 -1
  761. package/connectors/stitch-data/package.json +1 -1
  762. package/connectors/stop-and-error/package.json +1 -1
  763. package/connectors/stoplight/package.json +1 -1
  764. package/connectors/stoplight-api-platform/package.json +1 -1
  765. package/connectors/storyblok/package.json +1 -1
  766. package/connectors/strand-ai/package.json +1 -1
  767. package/connectors/strapi/package.json +1 -1
  768. package/connectors/strava/package.json +1 -1
  769. package/connectors/streak/package.json +1 -1
  770. package/connectors/streamable/package.json +1 -1
  771. package/connectors/stripe/package.json +1 -1
  772. package/connectors/stripe-billing-advanced/package.json +1 -1
  773. package/connectors/stripe-connect-platform/package.json +1 -1
  774. package/connectors/stripe-financial-connections/package.json +1 -1
  775. package/connectors/stripe-issuing/package.json +1 -1
  776. package/connectors/stripe-reporting-advanced/package.json +1 -1
  777. package/connectors/stripe-sigma/package.json +1 -1
  778. package/connectors/stripe-tax-advanced/package.json +1 -1
  779. package/connectors/stripe-terminal/package.json +1 -1
  780. package/connectors/stripe-webhooks-advanced/package.json +1 -1
  781. package/connectors/stripeapps/package.json +1 -1
  782. package/connectors/stripeatlas/package.json +1 -1
  783. package/connectors/stripecapital/package.json +1 -1
  784. package/connectors/stripeclimate/package.json +1 -1
  785. package/connectors/stripeidentity/package.json +1 -1
  786. package/connectors/stripetreasury/package.json +1 -1
  787. package/connectors/studiobyai21labs/package.json +1 -1
  788. package/connectors/stytch/package.json +1 -1
  789. package/connectors/substack/package.json +1 -1
  790. package/connectors/sucuri/package.json +1 -1
  791. package/connectors/sucuri-api-platform/package.json +1 -1
  792. package/connectors/sugarcrm/package.json +1 -1
  793. package/connectors/suitedash/package.json +1 -1
  794. package/connectors/sumo-logic/package.json +1 -1
  795. package/connectors/suno/package.json +1 -1
  796. package/connectors/supabase/package.json +1 -1
  797. package/connectors/supabase-api-platform/package.json +1 -1
  798. package/connectors/supadata/package.json +1 -1
  799. package/connectors/supernormal/package.json +1 -1
  800. package/connectors/superpowered/package.json +1 -1
  801. package/connectors/superset/package.json +1 -1
  802. package/connectors/supportbee/package.json +1 -1
  803. package/connectors/supportivekoala/package.json +1 -1
  804. package/connectors/surtrdefensesystems/package.json +1 -1
  805. package/connectors/surveysparrow/package.json +1 -1
  806. package/connectors/survicate/package.json +1 -1
  807. package/connectors/swagup/package.json +1 -1
  808. package/connectors/switchboard/package.json +1 -1
  809. package/connectors/syncly/package.json +1 -1
  810. package/connectors/syncromsp/package.json +1 -1
  811. package/connectors/synphony/package.json +1 -1
  812. package/connectors/synthesia/package.json +1 -1
  813. package/connectors/syntheticsciences/package.json +1 -1
  814. package/connectors/syntropy/package.json +1 -1
  815. package/connectors/sysdig/package.json +1 -1
  816. package/connectors/tableau/package.json +1 -1
  817. package/connectors/taboola/package.json +1 -1
  818. package/connectors/taiga/package.json +1 -1
  819. package/connectors/takecareos/package.json +1 -1
  820. package/connectors/talend-api-platform/package.json +1 -1
  821. package/connectors/talentlms/package.json +1 -1
  822. package/connectors/talkdesk/package.json +1 -1
  823. package/connectors/talknotes/package.json +1 -1
  824. package/connectors/tapfiliate/package.json +1 -1
  825. package/connectors/tave/package.json +1 -1
  826. package/connectors/tdameritrade/package.json +1 -1
  827. package/connectors/teachable/package.json +1 -1
  828. package/connectors/teamdeck/package.json +1 -1
  829. package/connectors/teamgate/package.json +1 -1
  830. package/connectors/teamtailor/package.json +1 -1
  831. package/connectors/teamup/package.json +1 -1
  832. package/connectors/teamwork/package.json +1 -1
  833. package/connectors/teknoir/package.json +1 -1
  834. package/connectors/telegram/package.json +1 -1
  835. package/connectors/teleport/package.json +1 -1
  836. package/connectors/telnyx/package.json +1 -1
  837. package/connectors/telnyx/src/utils/config.ts +1 -1
  838. package/connectors/tenable/package.json +1 -1
  839. package/connectors/tenor/package.json +1 -1
  840. package/connectors/tensorboard/package.json +1 -1
  841. package/connectors/tepali/package.json +1 -1
  842. package/connectors/terminal-use/package.json +1 -1
  843. package/connectors/terminus/package.json +1 -1
  844. package/connectors/terraform-cloud/package.json +1 -1
  845. package/connectors/testerarmy/package.json +1 -1
  846. package/connectors/testim/package.json +1 -1
  847. package/connectors/testmo/package.json +1 -1
  848. package/connectors/testmonitor/package.json +1 -1
  849. package/connectors/testrail/package.json +1 -1
  850. package/connectors/testrigor/package.json +1 -1
  851. package/connectors/tettra/package.json +1 -1
  852. package/connectors/tettra-api-platform/package.json +1 -1
  853. package/connectors/textcortex/package.json +1 -1
  854. package/connectors/textcortexai/package.json +1 -1
  855. package/connectors/textgain/package.json +1 -1
  856. package/connectors/textit/package.json +1 -1
  857. package/connectors/textkit/package.json +1 -1
  858. package/connectors/textmagic/package.json +1 -1
  859. package/connectors/textrazor/package.json +1 -1
  860. package/connectors/textsidekick/package.json +1 -1
  861. package/connectors/thankster/package.json +1 -1
  862. package/connectors/the-company-company/package.json +1 -1
  863. package/connectors/the-hive-project/package.json +1 -1
  864. package/connectors/the-token-company/package.json +1 -1
  865. package/connectors/the-trade-desk/package.json +1 -1
  866. package/connectors/thecustomerfactor/package.json +1 -1
  867. package/connectors/thehive/package.json +1 -1
  868. package/connectors/thehive5/package.json +1 -1
  869. package/connectors/theleap/package.json +1 -1
  870. package/connectors/thoughtfulgpt/package.json +1 -1
  871. package/connectors/thoughtspot/package.json +1 -1
  872. package/connectors/thousandeyes/package.json +1 -1
  873. package/connectors/thrivecart/package.json +1 -1
  874. package/connectors/ticket-tailor/package.json +1 -1
  875. package/connectors/ticketbud/package.json +1 -1
  876. package/connectors/ticketmaster/package.json +1 -1
  877. package/connectors/ticketsource/package.json +1 -1
  878. package/connectors/ticktick/package.json +1 -1
  879. package/connectors/tidbcloud/package.json +1 -1
  880. package/connectors/tidio/package.json +1 -1
  881. package/connectors/tierion/package.json +1 -1
  882. package/connectors/tiktok/package.json +1 -1
  883. package/connectors/tiktok-events-api/package.json +1 -1
  884. package/connectors/tiktokads/package.json +1 -1
  885. package/connectors/tilda/package.json +1 -1
  886. package/connectors/time-saved/package.json +1 -1
  887. package/connectors/timelinesai/package.json +1 -1
  888. package/connectors/timescaledb/package.json +1 -1
  889. package/connectors/timetonic/package.json +1 -1
  890. package/connectors/tines/package.json +1 -1
  891. package/connectors/tinker/package.json +1 -1
  892. package/connectors/tinybird/package.json +1 -1
  893. package/connectors/tinypng/package.json +1 -1
  894. package/connectors/tinyurl/package.json +1 -1
  895. package/connectors/tipalti/package.json +1 -1
  896. package/connectors/tisane/package.json +1 -1
  897. package/connectors/tisanelabs/package.json +1 -1
  898. package/connectors/tito/package.json +1 -1
  899. package/connectors/toast-pos/package.json +1 -1
  900. package/connectors/todoist/package.json +1 -1
  901. package/connectors/together/package.json +1 -1
  902. package/connectors/together-api-platform/package.json +1 -1
  903. package/connectors/toggl/package.json +1 -1
  904. package/connectors/toggl-track/package.json +1 -1
  905. package/connectors/tokenmetrics/package.json +1 -1
  906. package/connectors/toket/package.json +1 -1
  907. package/connectors/tomtom/package.json +1 -1
  908. package/connectors/topaz-labs/package.json +1 -1
  909. package/connectors/totalis/package.json +1 -1
  910. package/connectors/totango/package.json +1 -1
  911. package/connectors/totp/package.json +1 -1
  912. package/connectors/trackjs/package.json +1 -1
  913. package/connectors/trackvia/package.json +1 -1
  914. package/connectors/transform/package.json +1 -1
  915. package/connectors/transifex/package.json +1 -1
  916. package/connectors/transload/package.json +1 -1
  917. package/connectors/traverse/package.json +1 -1
  918. package/connectors/travisci/package.json +1 -1
  919. package/connectors/travo/package.json +1 -1
  920. package/connectors/travo-ai/package.json +1 -1
  921. package/connectors/travo-real-estate/package.json +1 -1
  922. package/connectors/tray-api-platform/package.json +1 -1
  923. package/connectors/trellistech/package.json +1 -1
  924. package/connectors/trellixepo/package.json +1 -1
  925. package/connectors/trello/package.json +1 -1
  926. package/connectors/trengo/package.json +1 -1
  927. package/connectors/trevorio/package.json +1 -1
  928. package/connectors/tricentis/package.json +1 -1
  929. package/connectors/trigger-dev/package.json +1 -1
  930. package/connectors/trigger-dev-api-platform/package.json +1 -1
  931. package/connectors/triggercmd/package.json +1 -1
  932. package/connectors/triple-whale/package.json +1 -1
  933. package/connectors/truelayer/package.json +1 -1
  934. package/connectors/trustpilot/package.json +1 -1
  935. package/connectors/trustpilot-business/package.json +1 -1
  936. package/connectors/trybloom/package.json +1 -1
  937. package/connectors/trycardinal-ai/package.json +1 -1
  938. package/connectors/tryprism/package.json +1 -1
  939. package/connectors/tumblr/package.json +1 -1
  940. package/connectors/turbohire/package.json +1 -1
  941. package/connectors/turbot-pipes/package.json +1 -1
  942. package/connectors/turso/package.json +1 -1
  943. package/connectors/turso-api-platform/package.json +1 -1
  944. package/connectors/tuskr/package.json +1 -1
  945. package/connectors/tuulio/package.json +1 -1
  946. package/connectors/twake/package.json +1 -1
  947. package/connectors/twelve-data/package.json +1 -1
  948. package/connectors/twilio/package.json +1 -1
  949. package/connectors/twilio/src/utils/config.ts +1 -1
  950. package/connectors/twilio-api-platform/package.json +1 -1
  951. package/connectors/twist/package.json +1 -1
  952. package/connectors/twitch/package.json +1 -1
  953. package/connectors/tyk/package.json +1 -1
  954. package/connectors/tyk-api-platform/package.json +1 -1
  955. package/connectors/typeform/package.json +1 -1
  956. package/connectors/typesense/package.json +1 -1
  957. package/connectors/typless/package.json +1 -1
  958. package/connectors/udio/package.json +1 -1
  959. package/connectors/ultimate-ai/package.json +1 -1
  960. package/connectors/umami/package.json +1 -1
  961. package/connectors/unbounce/package.json +1 -1
  962. package/connectors/unifold/package.json +1 -1
  963. package/connectors/unione/package.json +1 -1
  964. package/connectors/uniprot/package.json +1 -1
  965. package/connectors/unisender/package.json +1 -1
  966. package/connectors/unisson/package.json +1 -1
  967. package/connectors/uniswap-api/package.json +1 -1
  968. package/connectors/unit/package.json +1 -1
  969. package/connectors/unleash/package.json +1 -1
  970. package/connectors/unleashedsoftware/package.json +1 -1
  971. package/connectors/unpaywall/package.json +1 -1
  972. package/connectors/upcloud/package.json +1 -1
  973. package/connectors/updown-io/package.json +1 -1
  974. package/connectors/upkeep/package.json +1 -1
  975. package/connectors/uplead/package.json +1 -1
  976. package/connectors/uploadcare/package.json +1 -1
  977. package/connectors/uproc/package.json +1 -1
  978. package/connectors/ups/package.json +1 -1
  979. package/connectors/upstash/package.json +1 -1
  980. package/connectors/upstash-api-platform/package.json +1 -1
  981. package/connectors/uptimerobot/package.json +1 -1
  982. package/connectors/uptimetoolbox/package.json +1 -1
  983. package/connectors/urlscanio/package.json +1 -1
  984. package/connectors/usebidflow/package.json +1 -1
  985. package/connectors/usecrow/package.json +1 -1
  986. package/connectors/usereframe/package.json +1 -1
  987. package/connectors/userflow/package.json +1 -1
  988. package/connectors/userlens/package.json +1 -1
  989. package/connectors/userlist/package.json +1 -1
  990. package/connectors/userpilot/package.json +1 -1
  991. package/connectors/uservoice/package.json +1 -1
  992. package/connectors/usps/package.json +1 -1
  993. package/connectors/uspto/package.json +1 -1
  994. package/connectors/v0/package.json +1 -1
  995. package/connectors/valence/package.json +1 -1
  996. package/connectors/valgo/package.json +1 -1
  997. package/connectors/vanta/package.json +1 -1
  998. package/connectors/vapi/package.json +1 -1
  999. package/connectors/vault/package.json +1 -1
  1000. package/connectors/vector-legal/package.json +1 -1
  1001. package/connectors/vector-legal-api/package.json +1 -1
  1002. package/connectors/vectorshift/package.json +1 -1
  1003. package/connectors/vela/package.json +1 -1
  1004. package/connectors/velum-data-quality/package.json +1 -1
  1005. package/connectors/velum-labs/package.json +1 -1
  1006. package/connectors/venafi/package.json +1 -1
  1007. package/connectors/veo/package.json +1 -1
  1008. package/connectors/veracode/package.json +1 -1
  1009. package/connectors/vercel/package.json +1 -1
  1010. package/connectors/vercel-ai-gateway/package.json +1 -1
  1011. package/connectors/vercel-api-platform/package.json +1 -1
  1012. package/connectors/vercel-blob/package.json +1 -1
  1013. package/connectors/vercel-blob-platform/package.json +1 -1
  1014. package/connectors/vercel-edge-config/package.json +1 -1
  1015. package/connectors/vercel-edge-config-platform/package.json +1 -1
  1016. package/connectors/verdex/package.json +1 -1
  1017. package/connectors/verifalia/package.json +1 -1
  1018. package/connectors/veriphone/package.json +1 -1
  1019. package/connectors/vero/package.json +1 -1
  1020. package/connectors/vertex-ai/package.json +1 -1
  1021. package/connectors/vidyard/package.json +1 -1
  1022. package/connectors/vimeo/package.json +1 -1
  1023. package/connectors/virustotal/package.json +1 -1
  1024. package/connectors/visibl-semiconductors/package.json +1 -1
  1025. package/connectors/vitally/package.json +1 -1
  1026. package/connectors/vivenu/package.json +1 -1
  1027. package/connectors/vivifyscrum/package.json +1 -1
  1028. package/connectors/voiceflow/package.json +1 -1
  1029. package/connectors/voicit/package.json +1 -1
  1030. package/connectors/voltair/package.json +1 -1
  1031. package/connectors/vonage/package.json +1 -1
  1032. package/connectors/voquill/package.json +1 -1
  1033. package/connectors/vowel/package.json +1 -1
  1034. package/connectors/voygr/package.json +1 -1
  1035. package/connectors/vultr/package.json +1 -1
  1036. package/connectors/vwo/package.json +1 -1
  1037. package/connectors/waboxapp/package.json +1 -1
  1038. package/connectors/wait/package.json +1 -1
  1039. package/connectors/wakatime/package.json +1 -1
  1040. package/connectors/walmart-marketplace/package.json +1 -1
  1041. package/connectors/wandb/package.json +1 -1
  1042. package/connectors/wappalyzer/package.json +1 -1
  1043. package/connectors/watchsignals/package.json +1 -1
  1044. package/connectors/wati/package.json +1 -1
  1045. package/connectors/wato/package.json +1 -1
  1046. package/connectors/wave-accounting/package.json +1 -1
  1047. package/connectors/wavelineextract/package.json +1 -1
  1048. package/connectors/wayco/package.json +1 -1
  1049. package/connectors/weaviate/package.json +1 -1
  1050. package/connectors/weaviate-api-platform/package.json +1 -1
  1051. package/connectors/webengage/package.json +1 -1
  1052. package/connectors/webex/package.json +1 -1
  1053. package/connectors/webexbycisco/package.json +1 -1
  1054. package/connectors/webflow/package.json +1 -1
  1055. package/connectors/webhook/package.json +1 -1
  1056. package/connectors/webhooks/package.json +1 -1
  1057. package/connectors/webinarjam/package.json +1 -1
  1058. package/connectors/webpagetest/package.json +1 -1
  1059. package/connectors/webscraperio/package.json +1 -1
  1060. package/connectors/weezevent/package.json +1 -1
  1061. package/connectors/weights-biases/package.json +1 -1
  1062. package/connectors/wekan/package.json +1 -1
  1063. package/connectors/whal3s/package.json +1 -1
  1064. package/connectors/whatconverts/package.json +1 -1
  1065. package/connectors/whatsapp/package.json +1 -1
  1066. package/connectors/whatsapp-cloud-api/package.json +1 -1
  1067. package/connectors/wideframe/package.json +1 -1
  1068. package/connectors/wikipedia/package.json +1 -1
  1069. package/connectors/wildcard/package.json +1 -1
  1070. package/connectors/windmill/package.json +1 -1
  1071. package/connectors/windmill-api-platform/package.json +1 -1
  1072. package/connectors/wipo/package.json +1 -1
  1073. package/connectors/wise/package.json +1 -1
  1074. package/connectors/wistia/package.json +1 -1
  1075. package/connectors/withai/package.json +1 -1
  1076. package/connectors/wix/package.json +1 -1
  1077. package/connectors/wiz/package.json +1 -1
  1078. package/connectors/wizychat/package.json +1 -1
  1079. package/connectors/wolframoralpha/package.json +1 -1
  1080. package/connectors/wonderchat/package.json +1 -1
  1081. package/connectors/wondercraft/package.json +1 -1
  1082. package/connectors/woocommerce/package.json +1 -1
  1083. package/connectors/woodpecker/package.json +1 -1
  1084. package/connectors/woodpeckerco/package.json +1 -1
  1085. package/connectors/wordfence/package.json +1 -1
  1086. package/connectors/wordfence-api-platform/package.json +1 -1
  1087. package/connectors/wordpress/package.json +1 -1
  1088. package/connectors/workable/package.json +1 -1
  1089. package/connectors/workast/package.json +1 -1
  1090. package/connectors/workato/package.json +1 -1
  1091. package/connectors/workato-api-platform/package.json +1 -1
  1092. package/connectors/workboard/package.json +1 -1
  1093. package/connectors/workflow-trigger/package.json +1 -1
  1094. package/connectors/workos/package.json +1 -1
  1095. package/connectors/woxo/package.json +1 -1
  1096. package/connectors/wrike/package.json +1 -1
  1097. package/connectors/write-binary-file/package.json +1 -1
  1098. package/connectors/writesonic/package.json +1 -1
  1099. package/connectors/wubookratechecker/package.json +1 -1
  1100. package/connectors/wufoo/package.json +1 -1
  1101. package/connectors/x/package.json +1 -1
  1102. package/connectors/xads/package.json +1 -1
  1103. package/connectors/xai/package.json +1 -1
  1104. package/connectors/xai-api-platform/package.json +1 -1
  1105. package/connectors/xai-grok/package.json +1 -1
  1106. package/connectors/xata/package.json +1 -1
  1107. package/connectors/xero/package.json +1 -1
  1108. package/connectors/xml/package.json +1 -1
  1109. package/connectors/xray/package.json +1 -1
  1110. package/connectors/xtractly/package.json +1 -1
  1111. package/connectors/ybug/package.json +1 -1
  1112. package/connectors/ycode/package.json +1 -1
  1113. package/connectors/yesware/package.json +1 -1
  1114. package/connectors/ynab/package.json +1 -1
  1115. package/connectors/yodiz/package.json +1 -1
  1116. package/connectors/yotpo/package.json +1 -1
  1117. package/connectors/you-com/package.json +1 -1
  1118. package/connectors/youart/package.json +1 -1
  1119. package/connectors/yourls/package.json +1 -1
  1120. package/connectors/yousearch/package.json +1 -1
  1121. package/connectors/yousign/package.json +1 -1
  1122. package/connectors/youtube/package.json +2 -1
  1123. package/connectors/youtube/src/cli/index.test.ts +65 -0
  1124. package/connectors/youtube/src/cli/index.ts +6 -3
  1125. package/connectors/zabbix/package.json +1 -1
  1126. package/connectors/zammad/package.json +1 -1
  1127. package/connectors/zapier-api-platform/package.json +1 -1
  1128. package/connectors/zatanna/package.json +1 -1
  1129. package/connectors/zendesk/package.json +1 -1
  1130. package/connectors/zendesk/server/index.js +1 -1
  1131. package/connectors/zendesk/src/server/index.ts +1 -1
  1132. package/connectors/zenodo/package.json +1 -1
  1133. package/connectors/zenrows/package.json +1 -1
  1134. package/connectors/zenserp/package.json +1 -1
  1135. package/connectors/zerobounce/package.json +1 -1
  1136. package/connectors/zerosettle/package.json +1 -1
  1137. package/connectors/zerotier/package.json +1 -1
  1138. package/connectors/zhipu-ai/package.json +1 -1
  1139. package/connectors/zibra-labs/package.json +1 -1
  1140. package/connectors/zipkin/package.json +1 -1
  1141. package/connectors/zoho/package.json +1 -1
  1142. package/connectors/zoho-analytics/package.json +1 -1
  1143. package/connectors/zoho-bigin/package.json +1 -1
  1144. package/connectors/zoho-campaigns/package.json +1 -1
  1145. package/connectors/zoho-cliq/package.json +1 -1
  1146. package/connectors/zoho-creator/package.json +1 -1
  1147. package/connectors/zoho-inventory/package.json +1 -1
  1148. package/connectors/zoho-meeting/package.json +1 -1
  1149. package/connectors/zoho-people/package.json +1 -1
  1150. package/connectors/zoho-sign/package.json +1 -1
  1151. package/connectors/zoho-subscriptions/package.json +1 -1
  1152. package/connectors/zoho-survey/package.json +1 -1
  1153. package/connectors/zohobookings/package.json +1 -1
  1154. package/connectors/zohobooks/package.json +1 -1
  1155. package/connectors/zohocrm/package.json +1 -1
  1156. package/connectors/zohodesk/package.json +1 -1
  1157. package/connectors/zohoforms/package.json +1 -1
  1158. package/connectors/zohoprojects/package.json +1 -1
  1159. package/connectors/zohorecruit/package.json +1 -1
  1160. package/connectors/zohovault/package.json +1 -1
  1161. package/connectors/zohoworkdrive/package.json +1 -1
  1162. package/connectors/zolvo/package.json +1 -1
  1163. package/connectors/zonkafeedback/package.json +1 -1
  1164. package/connectors/zoom/package.json +1 -1
  1165. package/connectors/zoom-api/package.json +1 -1
  1166. package/connectors/zoominfo/package.json +1 -1
  1167. package/connectors/zotero/package.json +1 -1
  1168. package/connectors/zscalerzia/package.json +1 -1
  1169. package/connectors/zulip/package.json +1 -1
  1170. package/connectors/zymbly/package.json +1 -1
  1171. package/dist/index.js +127 -132
  1172. package/dist/lib/paths.d.ts +9 -0
  1173. package/dist/lib/strip.d.ts +1 -0
  1174. package/dist/sdk/fixtures/platform-connectors.d.ts +20 -0
  1175. package/dist/sdk/index.d.ts +696 -0
  1176. package/dist/sdk/index.js +508 -0
  1177. package/dist/sdk/index.test.d.ts +1 -0
  1178. package/dist/sdk/platform-contract.test.d.ts +1 -0
  1179. package/dist/server/auth.d.ts +1 -1
  1180. package/dist/server/index.d.ts +1 -1
  1181. package/dist/server/serve-auth.d.ts +54 -0
  1182. package/dist/server/serve-auth.test.d.ts +1 -0
  1183. package/dist/server/serve.d.ts +18 -6
  1184. package/dist/server/server-auth-gate.test.d.ts +1 -0
  1185. package/package.json +13 -11
  1186. package/dashboard/dist/assets/index-8uoGZF7B.js +0 -280
  1187. package/dashboard/dist/assets/index-D7ZVhmHr.css +0 -1
  1188. package/dashboard/dist/index.html +0 -13
  1189. package/dashboard/dist/logo.jpg +0 -0
  1190. package/dist/server/dashboard.d.ts +0 -5
  1191. /package/dist/{server/dashboard.test.d.ts → sdk/bundle-boundary.test.d.ts} +0 -0
package/bin/mcp.js CHANGED
@@ -4999,87 +4999,72 @@ Commands:
4999
4999
  });
5000
5000
  });
5001
5001
 
5002
- // ../../node_modules/.bun/@hasna+paths@0.1.0/node_modules/@hasna/paths/dist/index.js
5002
+ // src/lib/paths.ts
5003
+ import { existsSync as existsSync2 } from "fs";
5003
5004
  import { homedir } from "os";
5004
- import { join as join2 } from "path";
5005
- function assertApp(app) {
5005
+ import { join as join2, resolve } from "path";
5006
+ import { homedir as pathsResolverHomedir } from "os";
5007
+ import { join as pathsResolverJoin } from "path";
5008
+ function pathsResolverAssertApp(app) {
5006
5009
  if (typeof app !== "string" || app.length === 0) {
5007
5010
  throw new TypeError("paths: app must be a non-empty string");
5008
5011
  }
5009
- if (!APP_SLUG_RE.test(app)) {
5012
+ if (!PATHS_RESOLVER_APP_SLUG_RE.test(app)) {
5010
5013
  throw new TypeError(`paths: invalid app slug "${app}" \u2014 expected lowercase kebab-case ([a-z0-9]+(-[a-z0-9]+)*)`);
5011
5014
  }
5012
5015
  }
5013
- function envOf(options) {
5014
- return options.env ?? process.env;
5015
- }
5016
- function envValue(options, kind) {
5017
- const value = envOf(options)[KIND_ENV[kind]];
5018
- return typeof value === "string" && value.length > 0 ? value : undefined;
5019
- }
5020
- function isMacOS(platform) {
5021
- return platform === "darwin";
5016
+ function pathsResolverAssertKind(kind) {
5017
+ if (!Object.keys(PATHS_RESOLVER_KIND_ENV).includes(kind)) {
5018
+ throw new TypeError(`paths: invalid path kind "${kind}" \u2014 expected one of ${Object.keys(PATHS_RESOLVER_KIND_ENV).join(", ")}`);
5019
+ }
5022
5020
  }
5023
- function baseDir(kind, options) {
5024
- const override = envValue(options, kind);
5025
- if (override)
5021
+ function pathsResolverBaseDir(kind, options) {
5022
+ pathsResolverAssertKind(kind);
5023
+ const env = options.env ?? process.env;
5024
+ const override = env[PATHS_RESOLVER_KIND_ENV[kind]];
5025
+ if (typeof override === "string" && override.length > 0)
5026
5026
  return override;
5027
- const home = options.home ?? homedir();
5027
+ const home = options.home ?? pathsResolverHomedir();
5028
5028
  const platform = options.platform ?? process.platform;
5029
- if (isMacOS(platform)) {
5029
+ if (platform === "darwin") {
5030
5030
  switch (kind) {
5031
5031
  case "config":
5032
5032
  case "data":
5033
- return join2(home, "Library", "Application Support", "Hasna");
5033
+ return pathsResolverJoin(home, "Library", "Application Support", "Hasna");
5034
5034
  case "cache":
5035
- return join2(home, "Library", "Caches", "Hasna");
5035
+ return pathsResolverJoin(home, "Library", "Caches", "Hasna");
5036
5036
  case "state":
5037
- return join2(home, "Library", "Logs", "Hasna");
5037
+ return pathsResolverJoin(home, "Library", "Logs", "Hasna");
5038
5038
  }
5039
5039
  }
5040
5040
  switch (kind) {
5041
5041
  case "config":
5042
- return join2(home, ".config", "hasna");
5042
+ return pathsResolverJoin(home, ".config", "hasna");
5043
5043
  case "data":
5044
- return join2(home, ".local", "share", "hasna");
5044
+ return pathsResolverJoin(home, ".local", "share", "hasna");
5045
5045
  case "state":
5046
- return join2(home, ".local", "state", "hasna");
5046
+ return pathsResolverJoin(home, ".local", "state", "hasna");
5047
5047
  case "cache":
5048
- return join2(home, ".cache", "hasna");
5048
+ return pathsResolverJoin(home, ".cache", "hasna");
5049
5049
  }
5050
5050
  }
5051
- function resolvePath(kind, options) {
5052
- assertApp(options.app);
5053
- const appSegment = options.internal === true ? join2("internal", options.app) : options.app;
5054
- return join2(baseDir(kind, options), appSegment);
5051
+ function pathsResolverResolve(kind, options) {
5052
+ pathsResolverAssertApp(options.app);
5053
+ const appSegment = options.internal === true ? pathsResolverJoin("internal", options.app) : options.app;
5054
+ return pathsResolverJoin(pathsResolverBaseDir(kind, options), appSegment);
5055
5055
  }
5056
5056
  function dataDir(options) {
5057
- return resolvePath("data", options);
5057
+ return pathsResolverResolve("data", options);
5058
5058
  }
5059
- var KIND_ENV, APP_SLUG_RE;
5060
- var init_dist = __esm(() => {
5061
- KIND_ENV = {
5062
- config: "HASNA_CONFIG_HOME",
5063
- data: "HASNA_DATA_HOME",
5064
- state: "HASNA_STATE_HOME",
5065
- cache: "HASNA_CACHE_HOME"
5066
- };
5067
- APP_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
5068
- });
5069
-
5070
- // src/lib/paths.ts
5071
- import { existsSync as existsSync2 } from "fs";
5072
- import { homedir as homedir2 } from "os";
5073
- import { join as join3, resolve } from "path";
5074
5059
  function envOr(name, fallback) {
5075
5060
  const value = process.env[name]?.trim();
5076
5061
  return value ? value : fallback;
5077
5062
  }
5078
5063
  function effectiveHome() {
5079
- return process.env["HOME"] || process.env["USERPROFILE"] || homedir2();
5064
+ return process.env["HOME"] || process.env["USERPROFILE"] || homedir();
5080
5065
  }
5081
5066
  function legacyHomeDir() {
5082
- return join3(effectiveHome(), ".hasna", "connectors");
5067
+ return join2(effectiveHome(), ".hasna", "connectors");
5083
5068
  }
5084
5069
  function resolverHome() {
5085
5070
  return dataDir({
@@ -5091,7 +5076,7 @@ function adoptResolverHome(resolved, env = process.env) {
5091
5076
  const dataOverride = env.HASNA_DATA_HOME;
5092
5077
  if (typeof dataOverride === "string" && dataOverride.trim().length > 0)
5093
5078
  return true;
5094
- return existsSync2(join3(resolved, "connectors.db"));
5079
+ return existsSync2(join2(resolved, "connectors.db"));
5095
5080
  }
5096
5081
  function exactConnectorsHome() {
5097
5082
  const home = envOr("HASNA_CONNECTORS_DIR", "");
@@ -5104,13 +5089,20 @@ function connectorsHome() {
5104
5089
  const resolved = resolverHome();
5105
5090
  return adoptResolverHome(resolved) ? resolve(resolved) : resolve(legacyHomeDir());
5106
5091
  }
5092
+ var PATHS_RESOLVER_KIND_ENV, PATHS_RESOLVER_APP_SLUG_RE;
5107
5093
  var init_paths = __esm(() => {
5108
- init_dist();
5094
+ PATHS_RESOLVER_KIND_ENV = {
5095
+ config: "HASNA_CONFIG_HOME",
5096
+ data: "HASNA_DATA_HOME",
5097
+ state: "HASNA_STATE_HOME",
5098
+ cache: "HASNA_CACHE_HOME"
5099
+ };
5100
+ PATHS_RESOLVER_APP_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
5109
5101
  });
5110
5102
 
5111
5103
  // src/core/connectors/gmail.ts
5112
5104
  import { existsSync as existsSync3, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
5113
- import { basename, join as join4 } from "path";
5105
+ import { basename, join as join3 } from "path";
5114
5106
  async function modifyMessage(profile, messageId, addLabelIds, removeLabelIds) {
5115
5107
  return requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}/modify`, {}, {
5116
5108
  method: "POST",
@@ -5147,7 +5139,7 @@ async function replyToMessage(profile, messageId, input) {
5147
5139
  }
5148
5140
  async function downloadAttachments(profile, input) {
5149
5141
  const messageId = getMessageId(input);
5150
- const outputDir = input.dir ?? input.outputDir ?? join4(configDirs()[0], "attachments", messageId);
5142
+ const outputDir = input.dir ?? input.outputDir ?? join3(configDirs()[0], "attachments", messageId);
5151
5143
  mkdirSync(outputDir, { recursive: true });
5152
5144
  const attachments = input.attachmentId && input.filename ? [{
5153
5145
  attachmentId: input.attachmentId,
@@ -5159,7 +5151,7 @@ async function downloadAttachments(profile, input) {
5159
5151
  for (const attachment of attachments) {
5160
5152
  const data = await requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}/attachments/${encodeURIComponent(attachment.attachmentId)}`, {});
5161
5153
  const filename = safeFilename(attachment.filename);
5162
- const path = join4(outputDir, filename);
5154
+ const path = join3(outputDir, filename);
5163
5155
  const buffer = Buffer.from(data.data, "base64url");
5164
5156
  writeFileSync(path, buffer);
5165
5157
  downloaded.push({
@@ -5275,8 +5267,8 @@ async function refreshAccessToken(profile, currentTokens) {
5275
5267
  }
5276
5268
  function listProfiles() {
5277
5269
  const profiles = new Set;
5278
- for (const baseDir2 of configDirs()) {
5279
- const profilesDir = join4(baseDir2, "profiles");
5270
+ for (const baseDir of configDirs()) {
5271
+ const profilesDir = join3(baseDir, "profiles");
5280
5272
  if (!existsSync3(profilesDir))
5281
5273
  continue;
5282
5274
  for (const entry of readdirSync(profilesDir, { withFileTypes: true })) {
@@ -5293,10 +5285,10 @@ function loadCredentials(profile) {
5293
5285
  const envClientSecret = process.env.GMAIL_CLIENT_SECRET ?? process.env.GOOGLE_CLIENT_SECRET;
5294
5286
  if (envClientId && envClientSecret)
5295
5287
  return { clientId: envClientId, clientSecret: envClientSecret };
5296
- for (const baseDir2 of configDirs()) {
5288
+ for (const baseDir of configDirs()) {
5297
5289
  const credentials = {
5298
- ...readJson(join4(baseDir2, "credentials.json")),
5299
- ...readJson(join4(baseDir2, "profiles", profile, "config.json"))
5290
+ ...readJson(join3(baseDir, "credentials.json")),
5291
+ ...readJson(join3(baseDir, "profiles", profile, "config.json"))
5300
5292
  };
5301
5293
  if (credentials.clientId || credentials.clientSecret)
5302
5294
  return credentials;
@@ -5304,28 +5296,28 @@ function loadCredentials(profile) {
5304
5296
  return {};
5305
5297
  }
5306
5298
  function loadTokens(profile) {
5307
- for (const baseDir2 of configDirs()) {
5308
- const fromProfile = readJson(join4(baseDir2, "profiles", profile, "tokens.json"));
5299
+ for (const baseDir of configDirs()) {
5300
+ const fromProfile = readJson(join3(baseDir, "profiles", profile, "tokens.json"));
5309
5301
  if (fromProfile)
5310
5302
  return fromProfile;
5311
- const flat = readJson(join4(baseDir2, "profiles", `${profile}.json`));
5303
+ const flat = readJson(join3(baseDir, "profiles", `${profile}.json`));
5312
5304
  if (flat)
5313
5305
  return flat.tokens ?? (flat.accessToken || flat.refreshToken ? flat : null);
5314
5306
  }
5315
5307
  return null;
5316
5308
  }
5317
5309
  function saveTokens(profile, tokens) {
5318
- const baseDir2 = configDirs().find((dir) => existsSync3(dir)) ?? configDirs()[0];
5319
- const profileDir = join4(baseDir2, "profiles", profile);
5310
+ const baseDir = configDirs().find((dir) => existsSync3(dir)) ?? configDirs()[0];
5311
+ const profileDir = join3(baseDir, "profiles", profile);
5320
5312
  mkdirSync(profileDir, { recursive: true });
5321
- writeFileSync(join4(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
5313
+ writeFileSync(join3(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
5322
5314
  }
5323
5315
  function configDirs() {
5324
5316
  const explicit = process.env.HASNA_GMAIL_CONNECTOR_DIR ?? process.env.GMAIL_CONNECTOR_DIR;
5325
5317
  if (explicit)
5326
5318
  return [explicit];
5327
- const baseDir2 = connectorsHome();
5328
- return [join4(baseDir2, "gmail"), join4(baseDir2, "connect-gmail")];
5319
+ const baseDir = connectorsHome();
5320
+ return [join3(baseDir, "gmail"), join3(baseDir, "connect-gmail")];
5329
5321
  }
5330
5322
  function readJson(path) {
5331
5323
  if (!existsSync3(path))
@@ -5580,7 +5572,7 @@ var init_gmail = __esm(() => {
5580
5572
 
5581
5573
  // src/core/connectors/googledrive.ts
5582
5574
  import { existsSync as existsSync4, mkdirSync as mkdirSync2, readFileSync as readFileSync2, readdirSync as readdirSync2, writeFileSync as writeFileSync2 } from "fs";
5583
- import { basename as basename2, join as join5 } from "path";
5575
+ import { basename as basename2, join as join4 } from "path";
5584
5576
  async function requestJson2(profile, path, params) {
5585
5577
  const response = await request(profile, path, params);
5586
5578
  const text = await response.text();
@@ -5647,8 +5639,8 @@ async function refreshAccessToken2(profile, currentTokens) {
5647
5639
  }
5648
5640
  function listProfiles2() {
5649
5641
  const profiles = new Set;
5650
- for (const baseDir2 of configDirs2()) {
5651
- const profilesDir = join5(baseDir2, "profiles");
5642
+ for (const baseDir of configDirs2()) {
5643
+ const profilesDir = join4(baseDir, "profiles");
5652
5644
  if (!existsSync4(profilesDir))
5653
5645
  continue;
5654
5646
  for (const entry of readdirSync2(profilesDir, { withFileTypes: true })) {
@@ -5694,10 +5686,10 @@ function loadCredentials2(profile) {
5694
5686
  const envClientSecret = process.env.GOOGLE_CLIENT_SECRET;
5695
5687
  if (envClientId && envClientSecret)
5696
5688
  return { clientId: envClientId, clientSecret: envClientSecret };
5697
- for (const baseDir2 of configDirs2()) {
5689
+ for (const baseDir of configDirs2()) {
5698
5690
  const credentials = {
5699
- ...readJson2(join5(baseDir2, "credentials.json")),
5700
- ...readJson2(join5(baseDir2, "profiles", profile, "config.json"))
5691
+ ...readJson2(join4(baseDir, "credentials.json")),
5692
+ ...readJson2(join4(baseDir, "profiles", profile, "config.json"))
5701
5693
  };
5702
5694
  if (credentials.clientId || credentials.clientSecret)
5703
5695
  return credentials;
@@ -5705,28 +5697,28 @@ function loadCredentials2(profile) {
5705
5697
  return {};
5706
5698
  }
5707
5699
  function loadTokens2(profile) {
5708
- for (const baseDir2 of configDirs2()) {
5709
- const fromProfile = readJson2(join5(baseDir2, "profiles", profile, "tokens.json"));
5700
+ for (const baseDir of configDirs2()) {
5701
+ const fromProfile = readJson2(join4(baseDir, "profiles", profile, "tokens.json"));
5710
5702
  if (fromProfile)
5711
5703
  return fromProfile;
5712
- const flat = readJson2(join5(baseDir2, "profiles", `${profile}.json`));
5704
+ const flat = readJson2(join4(baseDir, "profiles", `${profile}.json`));
5713
5705
  if (flat)
5714
5706
  return flat.tokens ?? (flat.accessToken || flat.refreshToken ? flat : null);
5715
5707
  }
5716
5708
  return null;
5717
5709
  }
5718
5710
  function saveTokens2(profile, tokens) {
5719
- const baseDir2 = configDirs2().find((dir) => existsSync4(dir)) ?? configDirs2()[0];
5720
- const profileDir = join5(baseDir2, "profiles", profile);
5711
+ const baseDir = configDirs2().find((dir) => existsSync4(dir)) ?? configDirs2()[0];
5712
+ const profileDir = join4(baseDir, "profiles", profile);
5721
5713
  mkdirSync2(profileDir, { recursive: true });
5722
- writeFileSync2(join5(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
5714
+ writeFileSync2(join4(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
5723
5715
  }
5724
5716
  function configDirs2() {
5725
5717
  const explicit = process.env.HASNA_GOOGLE_DRIVE_CONNECTOR_DIR ?? process.env.GOOGLE_DRIVE_CONNECTOR_DIR;
5726
5718
  if (explicit)
5727
5719
  return [explicit];
5728
- const baseDir2 = connectorsHome();
5729
- return [join5(baseDir2, "googledrive"), join5(baseDir2, "connect-googledrive")];
5720
+ const baseDir = connectorsHome();
5721
+ return [join4(baseDir, "googledrive"), join4(baseDir, "connect-googledrive")];
5730
5722
  }
5731
5723
  function readJson2(path) {
5732
5724
  if (!existsSync4(path))
@@ -5913,7 +5905,7 @@ var package_default;
5913
5905
  var init_package = __esm(() => {
5914
5906
  package_default = {
5915
5907
  name: "@hasna/connectors",
5916
- version: "1.4.5",
5908
+ version: "1.4.6",
5917
5909
  description: "Open source connector library - Install API connectors with a single command",
5918
5910
  type: "module",
5919
5911
  bin: {
@@ -5924,7 +5916,6 @@ var init_package = __esm(() => {
5924
5916
  files: [
5925
5917
  "bin/",
5926
5918
  "dist/",
5927
- "dashboard/dist/",
5928
5919
  "connectors/",
5929
5920
  "README.md",
5930
5921
  "!connectors/**/.test-home/**",
@@ -5944,20 +5935,23 @@ var init_package = __esm(() => {
5944
5935
  "./social": {
5945
5936
  import: "./dist/social/index.js",
5946
5937
  types: "./dist/.types/src/social/index.d.ts"
5938
+ },
5939
+ "./sdk": {
5940
+ types: "./dist/sdk/index.d.ts",
5941
+ import: "./dist/sdk/index.js",
5942
+ default: "./dist/sdk/index.js"
5947
5943
  }
5948
5944
  },
5949
5945
  main: "./dist/index.js",
5950
5946
  types: "./dist/index.d.ts",
5951
5947
  scripts: {
5952
- build: "cd dashboard && bun run build && cd .. && bun build ./src/cli/index.tsx --outdir ./bin --target bun --external ink --external react --external chalk --external conf --external @hasna/events && bun build ./src/mcp/index.ts --outfile ./bin/mcp.js --target bun && bun build ./src/server/index.ts --outfile ./bin/serve.js --target bun && bun build ./src/index.ts --outdir ./dist --target bun && bun build ./src/social/index.ts --outfile ./dist/social/index.js --target bun && tsc --emitDeclarationOnly --outDir ./dist && tsc -p tsconfig.social.json",
5953
- "build:dashboard": "cd dashboard && bun run build",
5954
- postinstall: 'mkdir -p $HOME/.hasna/connectors 2>/dev/null || true; [ "$SKIP_DASHBOARD" = "1" ] || [ ! -f dashboard/package.json ] || [ -d dashboard/node_modules ] || (cd dashboard && bun install)',
5948
+ build: "bun build ./src/cli/index.tsx --outdir ./bin --target bun --external ink --external react --external chalk --external conf --external @hasna/events && bun build ./src/mcp/index.ts --outfile ./bin/mcp.js --target bun && bun build ./src/server/index.ts --outfile ./bin/serve.js --target bun && bun build ./src/index.ts --outdir ./dist --target bun && bun build ./src/social/index.ts --outfile ./dist/social/index.js --target bun && bun build ./src/sdk/index.ts --outfile ./dist/sdk/index.js --target bun && tsc --emitDeclarationOnly --outDir ./dist && tsc -p tsconfig.social.json",
5949
+ postinstall: "mkdir -p $HOME/.hasna/connectors 2>/dev/null || true",
5955
5950
  dev: "bun run ./src/cli/index.tsx",
5956
5951
  "check:package-secrets": "bun run scripts/check-package-secrets.ts",
5957
5952
  typecheck: "tsc --noEmit && tsc -p tsconfig.social.json --noEmit",
5958
5953
  test: "bun run build && bun test",
5959
5954
  "secrets:scan:npmrc": "bun run scripts/scan-npmrc-auth.mjs",
5960
- "sdk:build": "cd sdk && bun run build",
5961
5955
  prepublishOnly: "bun run secrets:scan:npmrc && bun run build && bun run check:package-secrets && bun test",
5962
5956
  prepack: "bun run build && bun run check:package-secrets"
5963
5957
  },
@@ -5977,7 +5971,7 @@ var init_package = __esm(() => {
5977
5971
  author: "Hasna",
5978
5972
  license: "Apache-2.0",
5979
5973
  devDependencies: {
5980
- "@types/bun": "latest",
5974
+ "@types/bun": "1.3.14",
5981
5975
  "@types/react": "^18.2.0",
5982
5976
  "ink-testing-library": "^4.0.0",
5983
5977
  typescript: "^5",
@@ -5985,7 +5979,6 @@ var init_package = __esm(() => {
5985
5979
  },
5986
5980
  dependencies: {
5987
5981
  "@hasna/events": "0.1.8",
5988
- "@hasna/paths": "0.1.0",
5989
5982
  "@modelcontextprotocol/sdk": "^1.26.0",
5990
5983
  chalk: "^5.3.0",
5991
5984
  commander: "^12.1.0",
@@ -6008,11 +6001,12 @@ var init_package = __esm(() => {
6008
6001
  },
6009
6002
  repository: {
6010
6003
  type: "git",
6011
- url: "git+https://github.com/hasna/connectors.git"
6004
+ url: "https://github.com/hasna/apps.git",
6005
+ directory: "apps/connectors"
6012
6006
  },
6013
- homepage: "https://github.com/hasna/connectors#readme",
6007
+ homepage: "https://github.com/hasna/apps/tree/main/apps/connectors#readme",
6014
6008
  bugs: {
6015
- url: "https://github.com/hasna/connectors/issues"
6009
+ url: "https://github.com/hasna/apps/issues"
6016
6010
  }
6017
6011
  };
6018
6012
  });
@@ -6086,7 +6080,7 @@ __export(exports_database, {
6086
6080
  closeDatabase: () => closeDatabase,
6087
6081
  SqliteAdapter: () => SqliteAdapter
6088
6082
  });
6089
- import { dirname as dirname2, join as join6 } from "path";
6083
+ import { dirname as dirname2, join as join5 } from "path";
6090
6084
  import { mkdirSync as mkdirSync3, existsSync as existsSync5, readdirSync as readdirSync3, copyFileSync, statSync } from "fs";
6091
6085
  function mergeDirectoryContents(sourceDir, targetDir) {
6092
6086
  if (!existsSync5(sourceDir)) {
@@ -6094,8 +6088,8 @@ function mergeDirectoryContents(sourceDir, targetDir) {
6094
6088
  }
6095
6089
  mkdirSync3(targetDir, { recursive: true });
6096
6090
  for (const entry of readdirSync3(sourceDir)) {
6097
- const sourcePath = join6(sourceDir, entry);
6098
- const targetPath = join6(targetDir, entry);
6091
+ const sourcePath = join5(sourceDir, entry);
6092
+ const targetPath = join5(targetDir, entry);
6099
6093
  try {
6100
6094
  const sourceStat = statSync(sourcePath);
6101
6095
  if (sourceStat.isDirectory()) {
@@ -6111,7 +6105,7 @@ function mergeDirectoryContents(sourceDir, targetDir) {
6111
6105
  function getConnectorsHome() {
6112
6106
  const newDir = connectorsHome();
6113
6107
  const home = effectiveHome();
6114
- const legacyDirs = [join6(home, ".connectors"), join6(home, ".connect")];
6108
+ const legacyDirs = [join5(home, ".connectors"), join5(home, ".connect")];
6115
6109
  mkdirSync3(newDir, { recursive: true });
6116
6110
  for (const legacyDir of legacyDirs) {
6117
6111
  try {
@@ -6261,12 +6255,12 @@ var init_database = __esm(() => {
6261
6255
  init_sqlite_adapter();
6262
6256
  init_paths();
6263
6257
  DB_DIR = getConnectorsHome();
6264
- DB_PATH = join6(DB_DIR, "connectors.db");
6258
+ DB_PATH = join5(DB_DIR, "connectors.db");
6265
6259
  });
6266
6260
 
6267
6261
  // src/lib/connector-resolver.ts
6268
6262
  import { existsSync as existsSync6, readdirSync as readdirSync4, statSync as statSync2 } from "fs";
6269
- import { join as join7 } from "path";
6263
+ import { join as join6 } from "path";
6270
6264
  function stripLegacyPrefix(name) {
6271
6265
  return name.startsWith(LEGACY_CONNECTOR_PREFIX) ? name.slice(LEGACY_CONNECTOR_PREFIX.length) : name;
6272
6266
  }
@@ -6309,7 +6303,7 @@ function connectorPackageDirNames(name) {
6309
6303
  function resolveConnectorPackagePath(connectorsDir, name) {
6310
6304
  const resolution = resolveConnectorName(name);
6311
6305
  const dirNames = connectorPackageDirNames(name);
6312
- const checkedPaths = dirNames.map((dirName) => join7(connectorsDir, dirName));
6306
+ const checkedPaths = dirNames.map((dirName) => join6(connectorsDir, dirName));
6313
6307
  const existingPath = checkedPaths.find((path) => existsSync6(path)) ?? null;
6314
6308
  const existingDirName = existingPath ? dirNames[checkedPaths.indexOf(existingPath)] : null;
6315
6309
  return {
@@ -6329,8 +6323,8 @@ function getConnectorPackagePath(connectorsDir, name) {
6329
6323
  function resolveConnectorConfigPaths(name, connectorsHome2 = getConnectorsHome()) {
6330
6324
  const resolution = resolveConnectorName(name);
6331
6325
  const preferredDirName = resolution.canonicalName || resolution.legacyName;
6332
- const preferredPath = join7(connectorsHome2, preferredDirName);
6333
- const legacyPath = join7(connectorsHome2, resolution.legacyName);
6326
+ const preferredPath = join6(connectorsHome2, preferredDirName);
6327
+ const legacyPath = join6(connectorsHome2, resolution.legacyName);
6334
6328
  const paths = preferredPath === legacyPath ? [preferredPath] : [preferredPath, legacyPath];
6335
6329
  const existingPaths = paths.filter((path) => existsSync6(path));
6336
6330
  return {
@@ -6369,7 +6363,7 @@ import {
6369
6363
  statSync as statSync3,
6370
6364
  writeFileSync as writeFileSync3
6371
6365
  } from "fs";
6372
- import { join as join8 } from "path";
6366
+ import { join as join7 } from "path";
6373
6367
  function buildRootHelp(specs) {
6374
6368
  const lines = [
6375
6369
  "Usage: connect-imessage [options] [command]",
@@ -6420,11 +6414,11 @@ function getConfigReadDirs() {
6420
6414
  return getConnectorConfigReadDirs(CONNECTOR_NAME);
6421
6415
  }
6422
6416
  function getProfilesDir() {
6423
- return join8(getConfigDir(), "profiles");
6417
+ return join7(getConfigDir(), "profiles");
6424
6418
  }
6425
6419
  function getCurrentProfile() {
6426
6420
  for (const configDir of getConfigReadDirs()) {
6427
- const currentProfileFile = join8(configDir, "current_profile");
6421
+ const currentProfileFile = join7(configDir, "current_profile");
6428
6422
  if (!existsSync7(currentProfileFile))
6429
6423
  continue;
6430
6424
  try {
@@ -6438,16 +6432,16 @@ function getCurrentProfile() {
6438
6432
  function setCurrentProfile(profile) {
6439
6433
  const configDir = getConfigDir();
6440
6434
  mkdirSync4(configDir, { recursive: true });
6441
- writeFileSync3(join8(configDir, "current_profile"), profile);
6435
+ writeFileSync3(join7(configDir, "current_profile"), profile);
6442
6436
  }
6443
6437
  function getFlatProfilePath(profile) {
6444
- return join8(getProfilesDir(), `${profile}.json`);
6438
+ return join7(getProfilesDir(), `${profile}.json`);
6445
6439
  }
6446
6440
  function getFlatProfileReadPaths(profile) {
6447
- return getConfigReadDirs().map((dir) => join8(dir, "profiles", `${profile}.json`));
6441
+ return getConfigReadDirs().map((dir) => join7(dir, "profiles", `${profile}.json`));
6448
6442
  }
6449
6443
  function getDirectoryProfileReadPaths(profile) {
6450
- return getConfigReadDirs().map((dir) => join8(dir, "profiles", profile, "config.json"));
6444
+ return getConfigReadDirs().map((dir) => join7(dir, "profiles", profile, "config.json"));
6451
6445
  }
6452
6446
  function loadJsonFile(path) {
6453
6447
  try {
@@ -6484,17 +6478,17 @@ function profileExists(profile) {
6484
6478
  if (profile === "default") {
6485
6479
  return true;
6486
6480
  }
6487
- return getFlatProfileReadPaths(profile).some((path) => existsSync7(path)) || getConfigReadDirs().some((dir) => existsSync7(join8(dir, "profiles", profile)));
6481
+ return getFlatProfileReadPaths(profile).some((path) => existsSync7(path)) || getConfigReadDirs().some((dir) => existsSync7(join7(dir, "profiles", profile)));
6488
6482
  }
6489
6483
  function listProfiles3() {
6490
6484
  const seen = new Set(["default"]);
6491
6485
  for (const configDir of getConfigReadDirs()) {
6492
- const profilesDir = join8(configDir, "profiles");
6486
+ const profilesDir = join7(configDir, "profiles");
6493
6487
  if (!existsSync7(profilesDir))
6494
6488
  continue;
6495
6489
  try {
6496
6490
  for (const entry of readdirSync5(profilesDir)) {
6497
- const fullPath = join8(profilesDir, entry);
6491
+ const fullPath = join7(profilesDir, entry);
6498
6492
  const stat = statSync3(fullPath);
6499
6493
  if (stat.isDirectory()) {
6500
6494
  seen.add(entry);
@@ -6516,7 +6510,7 @@ function createProfile(profile, config2 = {}) {
6516
6510
  }
6517
6511
  function clearProfile(profile = getCurrentProfile()) {
6518
6512
  const flatPath = getFlatProfilePath(profile);
6519
- const directoryPath = join8(getProfilesDir(), profile);
6513
+ const directoryPath = join7(getProfilesDir(), profile);
6520
6514
  if (existsSync7(flatPath)) {
6521
6515
  rmSync(flatPath);
6522
6516
  }
@@ -7153,7 +7147,7 @@ API Key authentication is optional and depends on the bridge deployment. A bridg
7153
7147
 
7154
7148
  ## Data Storage
7155
7149
 
7156
- Connector state is stored under \`~/.hasna/connectors/imessage/\`. Profiles are read from both \`profiles/<name>.json\` and \`profiles/<name>/config.json\` so the connector stays compatible with the shared dashboard auth helpers while remaining fully internal to the one-product repo.
7150
+ Connector state is stored under \`~/.hasna/connectors/imessage/\`. Profiles are read from both \`profiles/<name>.json\` and \`profiles/<name>/config.json\` so the connector stays compatible with the shared auth helpers while remaining fully internal to the one-product repo.
7157
7151
  `, commandInputSchema, conversationListInputSchema, conversationGetInputSchema, messageListInputSchema, messageSendInputSchema, messageReplyInputSchema, imessageConnector;
7158
7152
  var init_imessage = __esm(() => {
7159
7153
  init_package();
@@ -7447,14 +7441,14 @@ var init_imessage = __esm(() => {
7447
7441
 
7448
7442
  // src/core/connectors/stripe.ts
7449
7443
  import { existsSync as existsSync8 } from "fs";
7450
- import { dirname as dirname3, join as join9 } from "path";
7444
+ import { dirname as dirname3, join as join8 } from "path";
7451
7445
  import { fileURLToPath as fileURLToPath2, pathToFileURL as pathToFileURL2 } from "url";
7452
7446
  function resolveStripeConnectorDir() {
7453
7447
  const candidates = [
7454
- join9(__dirname3, "..", "..", "..", "connectors", "stripe"),
7455
- join9(__dirname3, "..", "..", "connectors", "stripe"),
7456
- join9(__dirname3, "..", "connectors", "stripe"),
7457
- join9(process.cwd(), "connectors", "stripe")
7448
+ join8(__dirname3, "..", "..", "..", "connectors", "stripe"),
7449
+ join8(__dirname3, "..", "..", "connectors", "stripe"),
7450
+ join8(__dirname3, "..", "connectors", "stripe"),
7451
+ join8(process.cwd(), "connectors", "stripe")
7458
7452
  ];
7459
7453
  for (const candidate of candidates) {
7460
7454
  if (existsSync8(candidate)) {
@@ -7505,10 +7499,10 @@ function buildCommandHelp2(spec) {
7505
7499
  `);
7506
7500
  }
7507
7501
  async function loadStripeApiModule() {
7508
- return await import(pathToFileURL2(join9(CONNECTOR_DIR2, "src", "api", "index.ts")).href);
7502
+ return await import(pathToFileURL2(join8(CONNECTOR_DIR2, "src", "api", "index.ts")).href);
7509
7503
  }
7510
7504
  async function loadStripeConfigModule() {
7511
- return await import(pathToFileURL2(join9(CONNECTOR_DIR2, "src", "utils", "config.ts")).href);
7505
+ return await import(pathToFileURL2(join8(CONNECTOR_DIR2, "src", "utils", "config.ts")).href);
7512
7506
  }
7513
7507
  function extractGlobalArgs3(args) {
7514
7508
  const remaining = [];
@@ -11345,13 +11339,32 @@ var require_data = __commonJS((exports, module) => {
11345
11339
  };
11346
11340
  });
11347
11341
 
11348
- // ../../node_modules/.bun/fast-uri@3.1.5/node_modules/fast-uri/lib/utils.js
11342
+ // ../../node_modules/.bun/fast-uri@3.1.7/node_modules/fast-uri/lib/utils.js
11349
11343
  var require_utils = __commonJS((exports, module) => {
11350
11344
  var isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu);
11351
11345
  var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);
11346
+ var isPort = RegExp.prototype.test.bind(/^\d*$/u);
11352
11347
  var isHexPair = RegExp.prototype.test.bind(/^[\da-f]{2}$/iu);
11353
11348
  var isUnreserved = RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu);
11354
- var isPathCharacter = RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);
11349
+ var isPathCharacter = RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u);
11350
+ var isQueryFragmentCharacter = RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u);
11351
+ var isUserinfoCharacter = RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u);
11352
+ var BYTE_HEX = new Array(256);
11353
+ {
11354
+ const HEX_DIGITS = "0123456789ABCDEF";
11355
+ for (let i = 0;i < 256; i++) {
11356
+ BYTE_HEX[i] = "%" + HEX_DIGITS[i >> 4] + HEX_DIGITS[i & 15];
11357
+ }
11358
+ }
11359
+ function percentEncodeNonAscii(cp) {
11360
+ if (cp < 2048) {
11361
+ return BYTE_HEX[192 | cp >> 6] + BYTE_HEX[128 | cp & 63];
11362
+ }
11363
+ if (cp < 65536) {
11364
+ return BYTE_HEX[224 | cp >> 12] + BYTE_HEX[128 | cp >> 6 & 63] + BYTE_HEX[128 | cp & 63];
11365
+ }
11366
+ return BYTE_HEX[240 | cp >> 18] + BYTE_HEX[128 | cp >> 12 & 63] + BYTE_HEX[128 | cp >> 6 & 63] + BYTE_HEX[128 | cp & 63];
11367
+ }
11355
11368
  function stringArrayToHexStripped(input) {
11356
11369
  let acc = "";
11357
11370
  let code = 0;
@@ -11376,91 +11389,122 @@ var require_utils = __commonJS((exports, module) => {
11376
11389
  }
11377
11390
  return acc;
11378
11391
  }
11392
+ var isHextet = RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/);
11393
+ var isIPvFuture = RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/);
11394
+ var isZoneCharacter = RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/);
11379
11395
  var nonSimpleDomain = RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);
11380
- function consumeIsZone(buffer) {
11381
- buffer.length = 0;
11382
- return true;
11383
- }
11384
- function consumeHextets(buffer, address, output) {
11385
- if (buffer.length) {
11386
- const hex = stringArrayToHexStripped(buffer);
11387
- if (hex !== "") {
11388
- address.push(hex);
11389
- } else {
11390
- output.error = true;
11391
- return false;
11396
+ function isZoneIdentifier(zone) {
11397
+ if (zone.length === 0)
11398
+ return false;
11399
+ for (let i = 0;i < zone.length; i++) {
11400
+ if (isZoneCharacter(zone[i]))
11401
+ continue;
11402
+ if (zone[i] === "%" && i + 2 < zone.length && isHexPair(zone.slice(i + 1, i + 3))) {
11403
+ i += 2;
11404
+ continue;
11392
11405
  }
11393
- buffer.length = 0;
11406
+ return false;
11394
11407
  }
11395
11408
  return true;
11396
11409
  }
11397
- function getIPV6(input) {
11398
- let tokenCount = 0;
11399
- const output = { error: false, address: "", zone: "" };
11400
- const address = [];
11401
- const buffer = [];
11402
- let endipv6Encountered = false;
11403
- let endIpv6 = false;
11404
- let consume = consumeHextets;
11405
- for (let i = 0;i < input.length; i++) {
11406
- const cursor = input[i];
11407
- if (cursor === "[" || cursor === "]") {
11408
- continue;
11409
- }
11410
- if (cursor === ":") {
11411
- if (endipv6Encountered === true) {
11412
- endIpv6 = true;
11413
- }
11414
- if (!consume(buffer, address, output)) {
11415
- break;
11410
+ function compressIPv6ZeroRun(hextets) {
11411
+ let bestStart = -1;
11412
+ let bestLength = 0;
11413
+ let runStart = -1;
11414
+ let runLength = 0;
11415
+ for (let i = 0;i < hextets.length; i++) {
11416
+ if (hextets[i] === "0") {
11417
+ if (runStart === -1)
11418
+ runStart = i;
11419
+ runLength++;
11420
+ if (runLength > bestLength) {
11421
+ bestLength = runLength;
11422
+ bestStart = runStart;
11416
11423
  }
11417
- if (++tokenCount > 7) {
11418
- output.error = true;
11419
- break;
11420
- }
11421
- if (i > 0 && input[i - 1] === ":") {
11422
- endipv6Encountered = true;
11423
- }
11424
- address.push(":");
11425
- continue;
11426
- } else if (cursor === "%") {
11427
- if (!consume(buffer, address, output)) {
11428
- break;
11429
- }
11430
- consume = consumeIsZone;
11431
11424
  } else {
11432
- buffer.push(cursor);
11433
- continue;
11425
+ runStart = -1;
11426
+ runLength = 0;
11434
11427
  }
11435
11428
  }
11436
- if (buffer.length) {
11437
- if (consume === consumeIsZone) {
11438
- output.zone = buffer.join("");
11439
- } else if (endIpv6) {
11440
- address.push(buffer.join(""));
11441
- } else {
11442
- address.push(stringArrayToHexStripped(buffer));
11429
+ if (bestLength < 2)
11430
+ return hextets.join(":");
11431
+ const head = hextets.slice(0, bestStart).join(":");
11432
+ const tail = hextets.slice(bestStart + bestLength).join(":");
11433
+ return head + "::" + tail;
11434
+ }
11435
+ function normalizeIPv6Address(input) {
11436
+ const compression = input.indexOf("::");
11437
+ if (compression !== -1 && input.indexOf("::", compression + 1) !== -1)
11438
+ return;
11439
+ const left = compression === -1 ? input.split(":") : input.slice(0, compression).split(":");
11440
+ const right = compression === -1 ? [] : input.slice(compression + 2).split(":");
11441
+ if (compression !== -1) {
11442
+ if (left.length === 1 && left[0] === "")
11443
+ left.length = 0;
11444
+ if (right.length === 1 && right[0] === "")
11445
+ right.length = 0;
11446
+ }
11447
+ const parts = left.concat(right);
11448
+ let hextetCount = 0;
11449
+ for (let i = 0;i < parts.length; i++) {
11450
+ const part = parts[i];
11451
+ if (part === "")
11452
+ return;
11453
+ if (part.indexOf(".") !== -1) {
11454
+ if (i !== parts.length - 1 || compression !== -1 && right.length === 0 || !isIPv4(part))
11455
+ return;
11456
+ hextetCount += 2;
11457
+ continue;
11443
11458
  }
11459
+ if (!isHextet(part))
11460
+ return;
11461
+ parts[i] = parseInt(part, 16).toString(16);
11462
+ hextetCount++;
11444
11463
  }
11445
- output.address = address.join("");
11446
- return output;
11464
+ if (compression === -1) {
11465
+ if (hextetCount !== 8)
11466
+ return;
11467
+ return compressIPv6ZeroRun(parts);
11468
+ }
11469
+ if (hextetCount >= 8)
11470
+ return;
11471
+ const expanded = parts.slice(0, left.length);
11472
+ for (let i = hextetCount;i < 8; i++)
11473
+ expanded.push("0");
11474
+ for (let i = left.length;i < parts.length; i++)
11475
+ expanded.push(parts[i]);
11476
+ return compressIPv6ZeroRun(expanded);
11447
11477
  }
11448
11478
  function normalizeIPv6(host) {
11449
- if (findToken(host, ":") < 2) {
11450
- return { host, isIPV6: false };
11451
- }
11452
- const ipv62 = getIPV6(host);
11453
- if (!ipv62.error) {
11454
- let newHost = ipv62.address;
11455
- let escapedHost = ipv62.address;
11456
- if (ipv62.zone) {
11457
- newHost += "%" + ipv62.zone;
11458
- escapedHost += "%25" + ipv62.zone;
11459
- }
11460
- return { host: newHost, isIPV6: true, escapedHost };
11461
- } else {
11462
- return { host, isIPV6: false };
11463
- }
11479
+ const bracketed = host[0] === "[" && host[host.length - 1] === "]";
11480
+ const hasBracket = host[0] === "[" || host[host.length - 1] === "]";
11481
+ if (hasBracket && !bracketed)
11482
+ return { host, isIPV6: false, error: true };
11483
+ let input = bracketed ? host.slice(1, -1) : host;
11484
+ if (bracketed && isIPvFuture(input)) {
11485
+ input = input.toLowerCase();
11486
+ return { host: `[${input}]`, escapedHost: input, isIPV6: false, isIPVFuture: true };
11487
+ }
11488
+ if (findToken(input, ":") < 2) {
11489
+ return { host, isIPV6: false, error: bracketed };
11490
+ }
11491
+ let zoneIdentifier = "";
11492
+ const zoneSeparator = input.indexOf("%");
11493
+ if (zoneSeparator !== -1) {
11494
+ const separatorLength = input.slice(zoneSeparator, zoneSeparator + 3).toLowerCase() === "%25" ? 3 : 1;
11495
+ zoneIdentifier = input.slice(zoneSeparator + separatorLength);
11496
+ if (!isZoneIdentifier(zoneIdentifier))
11497
+ return { host, isIPV6: false, error: true };
11498
+ input = input.slice(0, zoneSeparator);
11499
+ }
11500
+ const address = normalizeIPv6Address(input);
11501
+ if (address === undefined)
11502
+ return { host, isIPV6: false, error: true };
11503
+ return {
11504
+ host: address + (zoneIdentifier ? "%" + zoneIdentifier : ""),
11505
+ escapedHost: address + (zoneIdentifier ? "%25" + zoneIdentifier : ""),
11506
+ isIPV6: true
11507
+ };
11464
11508
  }
11465
11509
  function findToken(str, token) {
11466
11510
  let ind = 0;
@@ -11580,7 +11624,8 @@ var require_utils = __commonJS((exports, module) => {
11580
11624
  function normalizePathEncoding(input) {
11581
11625
  let output = "";
11582
11626
  for (let i = 0;i < input.length; i++) {
11583
- if (input[i] === "%" && i + 2 < input.length) {
11627
+ const ch = input[i];
11628
+ if (ch === "%" && i + 2 < input.length) {
11584
11629
  const hex = input.slice(i + 1, i + 3);
11585
11630
  if (isHexPair(hex)) {
11586
11631
  const normalizedHex = hex.toUpperCase();
@@ -11594,10 +11639,152 @@ var require_utils = __commonJS((exports, module) => {
11594
11639
  continue;
11595
11640
  }
11596
11641
  }
11597
- if (isPathCharacter(input[i])) {
11598
- output += input[i];
11642
+ if (isPathCharacter(ch)) {
11643
+ output += ch;
11599
11644
  } else {
11600
- output += escape(input[i]);
11645
+ const code = input.charCodeAt(i);
11646
+ if (code < 128) {
11647
+ output += isEscapeSafe(code) ? ch : BYTE_HEX[code];
11648
+ } else if (code < 55296 || code > 57343) {
11649
+ output += percentEncodeNonAscii(code);
11650
+ } else if (code <= 56319 && i + 1 < input.length) {
11651
+ const low = input.charCodeAt(i + 1);
11652
+ if (low >= 56320 && low <= 57343) {
11653
+ output += percentEncodeNonAscii(65536 + (code - 55296 << 10) + (low - 56320));
11654
+ i++;
11655
+ } else {
11656
+ output += percentEncodeNonAscii(65533);
11657
+ }
11658
+ } else {
11659
+ output += percentEncodeNonAscii(65533);
11660
+ }
11661
+ }
11662
+ }
11663
+ return output;
11664
+ }
11665
+ function serializePathEncoding(input, pathNoScheme = false) {
11666
+ let output = "";
11667
+ let firstSegment = pathNoScheme && input[0] !== "/";
11668
+ for (let i = 0;i < input.length; i++) {
11669
+ const ch = input[i];
11670
+ if (ch === "%" && i + 2 < input.length) {
11671
+ const hex = input.slice(i + 1, i + 3);
11672
+ if (isHexPair(hex)) {
11673
+ output += "%" + hex.toUpperCase();
11674
+ i += 2;
11675
+ continue;
11676
+ }
11677
+ }
11678
+ if (ch === "/") {
11679
+ firstSegment = false;
11680
+ }
11681
+ if (isPathCharacter(ch) && (ch !== ":" || !firstSegment)) {
11682
+ output += ch;
11683
+ } else {
11684
+ const code = input.charCodeAt(i);
11685
+ if (code < 128) {
11686
+ output += BYTE_HEX[code];
11687
+ } else if (code < 55296 || code > 57343) {
11688
+ output += percentEncodeNonAscii(code);
11689
+ } else if (code <= 56319 && i + 1 < input.length) {
11690
+ const low = input.charCodeAt(i + 1);
11691
+ if (low >= 56320 && low <= 57343) {
11692
+ output += percentEncodeNonAscii(65536 + (code - 55296 << 10) + (low - 56320));
11693
+ i++;
11694
+ } else {
11695
+ output += percentEncodeNonAscii(65533);
11696
+ }
11697
+ } else {
11698
+ output += percentEncodeNonAscii(65533);
11699
+ }
11700
+ }
11701
+ }
11702
+ return output;
11703
+ }
11704
+ function encodeComponent(input, isAllowed) {
11705
+ let output = "";
11706
+ for (let i = 0;i < input.length; i++) {
11707
+ const ch = input[i];
11708
+ if (ch === "%" && i + 2 < input.length) {
11709
+ const hex = input.slice(i + 1, i + 3);
11710
+ if (isHexPair(hex)) {
11711
+ output += "%" + hex.toUpperCase();
11712
+ i += 2;
11713
+ continue;
11714
+ }
11715
+ }
11716
+ if (isAllowed(ch)) {
11717
+ output += ch;
11718
+ } else {
11719
+ const code = input.charCodeAt(i);
11720
+ if (code < 128) {
11721
+ output += BYTE_HEX[code];
11722
+ } else if (code < 55296 || code > 57343) {
11723
+ output += percentEncodeNonAscii(code);
11724
+ } else if (code <= 56319 && i + 1 < input.length) {
11725
+ const low = input.charCodeAt(i + 1);
11726
+ if (low >= 56320 && low <= 57343) {
11727
+ output += percentEncodeNonAscii(65536 + (code - 55296 << 10) + (low - 56320));
11728
+ i++;
11729
+ } else {
11730
+ output += percentEncodeNonAscii(65533);
11731
+ }
11732
+ } else {
11733
+ output += percentEncodeNonAscii(65533);
11734
+ }
11735
+ }
11736
+ }
11737
+ return output;
11738
+ }
11739
+ function encodeUserinfo(input) {
11740
+ return encodeComponent(input, isUserinfoCharacter);
11741
+ }
11742
+ function encodeQuery(input) {
11743
+ return encodeComponent(input, isQueryFragmentCharacter);
11744
+ }
11745
+ function encodeFragment(input) {
11746
+ return encodeComponent(input, isQueryFragmentCharacter);
11747
+ }
11748
+ function isEscapeSafe(cp) {
11749
+ return cp >= 48 && cp <= 57 || cp >= 65 && cp <= 90 || cp >= 97 && cp <= 122 || cp === 42 || cp === 43 || cp === 45 || cp === 46 || cp === 47 || cp === 64 || cp === 95;
11750
+ }
11751
+ function normalizeQueryFragmentEncoding(input) {
11752
+ let output = "";
11753
+ for (let i = 0;i < input.length; i++) {
11754
+ const ch = input[i];
11755
+ if (ch === "%" && i + 2 < input.length) {
11756
+ const hex = input.slice(i + 1, i + 3);
11757
+ if (isHexPair(hex)) {
11758
+ const normalizedHex = hex.toUpperCase();
11759
+ const decoded = String.fromCharCode(parseInt(normalizedHex, 16));
11760
+ if (isUnreserved(decoded)) {
11761
+ output += decoded;
11762
+ } else {
11763
+ output += "%" + normalizedHex;
11764
+ }
11765
+ i += 2;
11766
+ continue;
11767
+ }
11768
+ }
11769
+ if (isQueryFragmentCharacter(ch)) {
11770
+ output += ch;
11771
+ } else {
11772
+ const code = input.charCodeAt(i);
11773
+ if (code < 128) {
11774
+ output += isEscapeSafe(code) ? ch : BYTE_HEX[code];
11775
+ } else if (code < 55296 || code > 57343) {
11776
+ output += percentEncodeNonAscii(code);
11777
+ } else if (code <= 56319 && i + 1 < input.length) {
11778
+ const low = input.charCodeAt(i + 1);
11779
+ if (low >= 56320 && low <= 57343) {
11780
+ output += percentEncodeNonAscii(65536 + (code - 55296 << 10) + (low - 56320));
11781
+ i++;
11782
+ } else {
11783
+ output += percentEncodeNonAscii(65533);
11784
+ }
11785
+ } else {
11786
+ output += percentEncodeNonAscii(65533);
11787
+ }
11601
11788
  }
11602
11789
  }
11603
11790
  return output;
@@ -11620,14 +11807,18 @@ var require_utils = __commonJS((exports, module) => {
11620
11807
  function recomposeAuthority(component) {
11621
11808
  const uriTokens = [];
11622
11809
  if (component.userinfo !== undefined) {
11623
- uriTokens.push(component.userinfo);
11810
+ uriTokens.push(encodeUserinfo(component.userinfo));
11624
11811
  uriTokens.push("@");
11625
11812
  }
11626
11813
  if (component.host !== undefined) {
11627
- let host = unescape(component.host);
11814
+ let host = component.host;
11628
11815
  if (!isIPv4(host)) {
11629
- const ipV6res = normalizeIPv6(host);
11630
- if (ipV6res.isIPV6 === true) {
11816
+ let ipV6res = normalizeIPv6(host);
11817
+ if (ipV6res.isIPV6 !== true && ipV6res.isIPVFuture !== true) {
11818
+ host = normalizePercentEncoding(host, true);
11819
+ ipV6res = normalizeIPv6(host);
11820
+ }
11821
+ if (ipV6res.isIPV6 === true || ipV6res.isIPVFuture === true) {
11631
11822
  host = `[${ipV6res.escapedHost}]`;
11632
11823
  } else {
11633
11824
  host = reescapeHostDelimiters(host, false);
@@ -11636,8 +11827,12 @@ var require_utils = __commonJS((exports, module) => {
11636
11827
  uriTokens.push(host);
11637
11828
  }
11638
11829
  if (typeof component.port === "number" || typeof component.port === "string") {
11830
+ const port = String(component.port);
11831
+ if (!isPort(port)) {
11832
+ throw new TypeError("URI port is malformed.");
11833
+ }
11639
11834
  uriTokens.push(":");
11640
- uriTokens.push(String(component.port));
11835
+ uriTokens.push(port);
11641
11836
  }
11642
11837
  return uriTokens.length ? uriTokens.join("") : undefined;
11643
11838
  }
@@ -11647,6 +11842,11 @@ var require_utils = __commonJS((exports, module) => {
11647
11842
  reescapeHostDelimiters,
11648
11843
  normalizePercentEncoding,
11649
11844
  normalizePathEncoding,
11845
+ serializePathEncoding,
11846
+ normalizeQueryFragmentEncoding,
11847
+ encodeUserinfo,
11848
+ encodeQuery,
11849
+ encodeFragment,
11650
11850
  escapePreservingEscapes,
11651
11851
  removeDotSegments,
11652
11852
  isIPv4,
@@ -11656,10 +11856,10 @@ var require_utils = __commonJS((exports, module) => {
11656
11856
  };
11657
11857
  });
11658
11858
 
11659
- // ../../node_modules/.bun/fast-uri@3.1.5/node_modules/fast-uri/lib/schemes.js
11859
+ // ../../node_modules/.bun/fast-uri@3.1.7/node_modules/fast-uri/lib/schemes.js
11660
11860
  var require_schemes = __commonJS((exports, module) => {
11661
11861
  var { isUUID } = require_utils();
11662
- var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;
11862
+ var URN_REG = /^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu;
11663
11863
  var supportedSchemeNames = [
11664
11864
  "http",
11665
11865
  "https",
@@ -11714,9 +11914,10 @@ var require_schemes = __commonJS((exports, module) => {
11714
11914
  wsComponent.secure = undefined;
11715
11915
  }
11716
11916
  if (wsComponent.resourceName) {
11717
- const [path, query] = wsComponent.resourceName.split("?");
11917
+ const queryIndex = wsComponent.resourceName.indexOf("?");
11918
+ const path = queryIndex === -1 ? wsComponent.resourceName : wsComponent.resourceName.slice(0, queryIndex);
11718
11919
  wsComponent.path = path && path !== "/" ? path : undefined;
11719
- wsComponent.query = query;
11920
+ wsComponent.query = queryIndex === -1 ? undefined : wsComponent.resourceName.slice(queryIndex + 1);
11720
11921
  wsComponent.resourceName = undefined;
11721
11922
  }
11722
11923
  wsComponent.fragment = undefined;
@@ -11728,7 +11929,7 @@ var require_schemes = __commonJS((exports, module) => {
11728
11929
  return urnComponent;
11729
11930
  }
11730
11931
  const matches = urnComponent.path.match(URN_REG);
11731
- if (matches) {
11932
+ if (matches && matches[0] === urnComponent.path) {
11732
11933
  const scheme = options.scheme || urnComponent.scheme || "urn";
11733
11934
  urnComponent.nid = matches[1].toLowerCase();
11734
11935
  urnComponent.nss = matches[2];
@@ -11830,10 +12031,19 @@ var require_schemes = __commonJS((exports, module) => {
11830
12031
  };
11831
12032
  });
11832
12033
 
11833
- // ../../node_modules/.bun/fast-uri@3.1.5/node_modules/fast-uri/index.js
12034
+ // ../../node_modules/.bun/fast-uri@3.1.7/node_modules/fast-uri/index.js
11834
12035
  var require_fast_uri = __commonJS((exports, module) => {
11835
- var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require_utils();
12036
+ var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, serializePathEncoding, normalizeQueryFragmentEncoding, encodeQuery, encodeFragment, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require_utils();
11836
12037
  var { SCHEMES, getSchemeHandler } = require_schemes();
12038
+ var VALID_SCHEME = /^[A-Za-z][A-Za-z0-9+.-]*$/u;
12039
+ var MALFORMED_SCHEME_ERROR = "URI scheme is malformed.";
12040
+ function decodeValidScheme(scheme) {
12041
+ const decodedScheme = unescape(String(scheme));
12042
+ if (!VALID_SCHEME.test(decodedScheme)) {
12043
+ throw new TypeError(MALFORMED_SCHEME_ERROR);
12044
+ }
12045
+ return decodedScheme;
12046
+ }
11837
12047
  function normalize(uri, options) {
11838
12048
  if (typeof uri === "string") {
11839
12049
  uri = normalizeString(uri, options);
@@ -11844,12 +12054,34 @@ var require_fast_uri = __commonJS((exports, module) => {
11844
12054
  }
11845
12055
  function resolve2(baseURI, relativeURI, options) {
11846
12056
  const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
11847
- const { parsed: baseParsed, malformedAuthorityOrPort: baseMalformed } = parseWithStatus(baseURI, schemelessOptions);
11848
- const { parsed: relativeParsed, malformedAuthorityOrPort: relativeMalformed } = parseWithStatus(relativeURI, schemelessOptions);
11849
- if (baseMalformed || relativeMalformed) {
12057
+ const {
12058
+ parsed: baseParsed,
12059
+ malformedAuthorityOrPort: baseMalformed,
12060
+ malformedPercentEncoding: baseMalformedPercentEncoding,
12061
+ malformedSchemeSpecific: baseMalformedSchemeSpecific,
12062
+ malformedHost: baseMalformedHost,
12063
+ malformedScheme: baseMalformedScheme
12064
+ } = parseWithStatus(baseURI, schemelessOptions);
12065
+ const {
12066
+ parsed: relativeParsed,
12067
+ malformedAuthorityOrPort: relativeMalformed,
12068
+ malformedPercentEncoding: relativeMalformedPercentEncoding,
12069
+ malformedSchemeSpecific: relativeMalformedSchemeSpecific,
12070
+ malformedHost: relativeMalformedHost,
12071
+ malformedScheme: relativeMalformedScheme
12072
+ } = parseWithStatus(relativeURI, schemelessOptions);
12073
+ if (baseMalformed || relativeMalformed || baseMalformedPercentEncoding || relativeMalformedPercentEncoding || baseMalformedSchemeSpecific || relativeMalformedSchemeSpecific || baseMalformedHost || relativeMalformedHost || baseMalformedScheme || relativeMalformedScheme) {
11850
12074
  throw new Error(baseParsed.error || relativeParsed.error || "URI is malformed.");
11851
12075
  }
11852
12076
  const resolved = resolveComponent(baseParsed, relativeParsed, schemelessOptions, true);
12077
+ const resolvedSchemeHandler = getSchemeHandler(options && options.scheme || resolved.scheme);
12078
+ const resolvedHost = resolved.host;
12079
+ const resolvedHostIsIP = resolvedHost !== undefined && resolvedHost !== "" && (isIPv4(resolvedHost) || normalizeIPv6(resolvedHost).isIPV6);
12080
+ canonicalizeHost(resolved, options || {}, resolvedSchemeHandler, resolvedHostIsIP);
12081
+ const encodedASCIIHost = resolvedHost && resolvedHost.indexOf("%") !== -1 && !/\P{ASCII}/u.test(resolvedHost);
12082
+ if (resolved.error && !encodedASCIIHost) {
12083
+ throw new Error(resolved.error);
12084
+ }
11853
12085
  schemelessOptions.skipEscape = true;
11854
12086
  return serialize(resolved, schemelessOptions);
11855
12087
  }
@@ -11909,7 +12141,7 @@ var require_fast_uri = __commonJS((exports, module) => {
11909
12141
  function equal(uriA, uriB, options) {
11910
12142
  const normalizedA = normalizeComparableURI(uriA, options);
11911
12143
  const normalizedB = normalizeComparableURI(uriB, options);
11912
- return normalizedA !== undefined && normalizedB !== undefined && normalizedA.toLowerCase() === normalizedB.toLowerCase();
12144
+ return normalizedA !== undefined && normalizedB !== undefined && normalizedA === normalizedB;
11913
12145
  }
11914
12146
  function serialize(cmpts, opts) {
11915
12147
  const component = {
@@ -11930,20 +12162,23 @@ var require_fast_uri = __commonJS((exports, module) => {
11930
12162
  };
11931
12163
  const options = Object.assign({}, opts);
11932
12164
  const uriTokens = [];
12165
+ if (component.scheme) {
12166
+ component.scheme = decodeValidScheme(component.scheme);
12167
+ }
11933
12168
  const schemeHandler = getSchemeHandler(options.scheme || component.scheme);
11934
12169
  if (schemeHandler && schemeHandler.serialize)
11935
12170
  schemeHandler.serialize(component, options);
12171
+ const hasAuthority = component.userinfo !== undefined || component.host !== undefined || component.port !== undefined;
12172
+ const pathNoScheme = !options.skipEscape && component.scheme === undefined && !hasAuthority;
11936
12173
  if (component.path !== undefined) {
11937
12174
  if (!options.skipEscape) {
11938
- component.path = escapePreservingEscapes(component.path);
11939
- if (component.scheme !== undefined) {
11940
- component.path = component.path.split("%3A").join(":");
11941
- }
12175
+ component.path = serializePathEncoding(component.path, pathNoScheme);
11942
12176
  } else {
11943
12177
  component.path = normalizePercentEncoding(component.path);
11944
12178
  }
11945
12179
  }
11946
12180
  if (options.reference !== "suffix" && component.scheme) {
12181
+ component.scheme = decodeValidScheme(component.scheme);
11947
12182
  uriTokens.push(component.scheme, ":");
11948
12183
  }
11949
12184
  const authority = recomposeAuthority(component);
@@ -11961,16 +12196,19 @@ var require_fast_uri = __commonJS((exports, module) => {
11961
12196
  if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {
11962
12197
  s = removeDotSegments(s);
11963
12198
  }
12199
+ if (pathNoScheme) {
12200
+ s = serializePathEncoding(s, true);
12201
+ }
11964
12202
  if (authority === undefined && s[0] === "/" && s[1] === "/") {
11965
12203
  s = "/%2F" + s.slice(2);
11966
12204
  }
11967
12205
  uriTokens.push(s);
11968
12206
  }
11969
12207
  if (component.query !== undefined) {
11970
- uriTokens.push("?", component.query);
12208
+ uriTokens.push("?", encodeQuery(component.query));
11971
12209
  }
11972
12210
  if (component.fragment !== undefined) {
11973
- uriTokens.push("#", component.fragment);
12211
+ uriTokens.push("#", encodeFragment(component.fragment));
11974
12212
  }
11975
12213
  return uriTokens.join("");
11976
12214
  }
@@ -11986,6 +12224,36 @@ var require_fast_uri = __commonJS((exports, module) => {
11986
12224
  }
11987
12225
  return;
11988
12226
  }
12227
+ function hasMalformedPercentEncoding(component) {
12228
+ if (component === undefined)
12229
+ return false;
12230
+ let percent = component.indexOf("%");
12231
+ while (percent !== -1) {
12232
+ if (percent + 2 >= component.length || !/^[\da-f]{2}$/iu.test(component.slice(percent + 1, percent + 3))) {
12233
+ return true;
12234
+ }
12235
+ percent = component.indexOf("%", percent + 3);
12236
+ }
12237
+ return false;
12238
+ }
12239
+ function isIPLiteral(host) {
12240
+ return host[0] === "[" && host[host.length - 1] === "]";
12241
+ }
12242
+ function hasMalformedComponentPercentEncoding(matches) {
12243
+ const host = matches[4];
12244
+ return hasMalformedPercentEncoding(matches[3]) || host !== undefined && !isIPLiteral(host) && hasMalformedPercentEncoding(host) || hasMalformedPercentEncoding(matches[6]) || hasMalformedPercentEncoding(matches[7]) || hasMalformedPercentEncoding(matches[8]);
12245
+ }
12246
+ function canonicalizeHost(parsed, options, schemeHandler, isIP) {
12247
+ if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport) && parsed.host && !isIPLiteral(parsed.host) && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP === false && nonSimpleDomain(parsed.host)) {
12248
+ try {
12249
+ parsed.host = new URL("http://" + parsed.host).hostname;
12250
+ } catch (e) {
12251
+ parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e;
12252
+ return true;
12253
+ }
12254
+ }
12255
+ return false;
12256
+ }
11989
12257
  function parseWithStatus(uri, opts) {
11990
12258
  const options = Object.assign({}, opts);
11991
12259
  const parsed = {
@@ -11998,6 +12266,11 @@ var require_fast_uri = __commonJS((exports, module) => {
11998
12266
  fragment: undefined
11999
12267
  };
12000
12268
  let malformedAuthorityOrPort = false;
12269
+ let malformedPercentEncoding = false;
12270
+ let malformedSchemeSpecific = false;
12271
+ let malformedHost = false;
12272
+ let malformedIPLiteral = false;
12273
+ let malformedScheme = false;
12001
12274
  let isIP = false;
12002
12275
  if (options.reference === "suffix") {
12003
12276
  if (options.scheme) {
@@ -12034,6 +12307,19 @@ var require_fast_uri = __commonJS((exports, module) => {
12034
12307
  parsed.path = matches[6] || "";
12035
12308
  parsed.query = matches[7];
12036
12309
  parsed.fragment = matches[8];
12310
+ if (parsed.scheme !== undefined) {
12311
+ const decodedScheme = unescape(parsed.scheme);
12312
+ if (VALID_SCHEME.test(decodedScheme)) {
12313
+ parsed.scheme = decodedScheme.toLowerCase();
12314
+ } else {
12315
+ parsed.error = parsed.error || MALFORMED_SCHEME_ERROR;
12316
+ malformedScheme = true;
12317
+ }
12318
+ }
12319
+ malformedPercentEncoding = hasMalformedComponentPercentEncoding(matches);
12320
+ if (malformedPercentEncoding) {
12321
+ parsed.error = parsed.error || "URI contains malformed percent-encoding.";
12322
+ }
12037
12323
  if (isNaN(parsed.port)) {
12038
12324
  parsed.port = matches[5];
12039
12325
  }
@@ -12045,9 +12331,16 @@ var require_fast_uri = __commonJS((exports, module) => {
12045
12331
  if (parsed.host) {
12046
12332
  const ipv4result = isIPv4(parsed.host);
12047
12333
  if (ipv4result === false) {
12334
+ const bracketedIPLiteral = isIPLiteral(parsed.host);
12335
+ const hasIPLiteralBracket = parsed.host.indexOf("[") !== -1 || parsed.host.indexOf("]") !== -1;
12048
12336
  const ipv6result = normalizeIPv6(parsed.host);
12049
- parsed.host = ipv6result.host.toLowerCase();
12050
- isIP = ipv6result.isIPV6;
12337
+ isIP = ipv6result.isIPV6 || ipv6result.isIPVFuture === true;
12338
+ malformedIPLiteral = hasIPLiteralBracket && (!bracketedIPLiteral || ipv6result.error === true);
12339
+ parsed.host = isIP ? ipv6result.host : ipv6result.host.toLowerCase();
12340
+ if (malformedIPLiteral) {
12341
+ parsed.error = parsed.error || "URI host is malformed.";
12342
+ malformedAuthorityOrPort = true;
12343
+ }
12051
12344
  } else {
12052
12345
  isIP = true;
12053
12346
  }
@@ -12065,42 +12358,36 @@ var require_fast_uri = __commonJS((exports, module) => {
12065
12358
  parsed.error = parsed.error || "URI is not a " + options.reference + " reference.";
12066
12359
  }
12067
12360
  const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme);
12068
- if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {
12069
- if (parsed.host && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP === false && nonSimpleDomain(parsed.host)) {
12070
- try {
12071
- parsed.host = new URL("http://" + parsed.host).hostname;
12072
- } catch (e) {
12073
- parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e;
12074
- }
12075
- }
12361
+ if (!malformedIPLiteral) {
12362
+ malformedHost = canonicalizeHost(parsed, options, schemeHandler, isIP);
12076
12363
  }
12077
12364
  if (!schemeHandler || schemeHandler && !schemeHandler.skipNormalize) {
12078
12365
  if (uri.indexOf("%") !== -1) {
12079
- if (parsed.scheme !== undefined) {
12080
- parsed.scheme = unescape(parsed.scheme);
12081
- }
12082
- if (parsed.host !== undefined) {
12083
- parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP);
12366
+ if (parsed.host !== undefined && !malformedIPLiteral) {
12367
+ const host = isIP ? parsed.host : normalizePercentEncoding(parsed.host, true);
12368
+ parsed.host = reescapeHostDelimiters(host, isIP);
12084
12369
  }
12085
12370
  }
12086
12371
  if (parsed.path) {
12087
12372
  parsed.path = normalizePathEncoding(parsed.path);
12088
12373
  }
12374
+ if (parsed.query) {
12375
+ parsed.query = normalizeQueryFragmentEncoding(parsed.query);
12376
+ }
12089
12377
  if (parsed.fragment) {
12090
- try {
12091
- parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment));
12092
- } catch {
12093
- parsed.error = parsed.error || "URI malformed";
12094
- }
12378
+ parsed.fragment = normalizeQueryFragmentEncoding(parsed.fragment);
12095
12379
  }
12096
12380
  }
12097
12381
  if (schemeHandler && schemeHandler.parse) {
12098
12382
  schemeHandler.parse(parsed, options);
12383
+ if (schemeHandler === SCHEMES.urn && parsed.nid === undefined) {
12384
+ malformedSchemeSpecific = true;
12385
+ }
12099
12386
  }
12100
12387
  } else {
12101
12388
  parsed.error = parsed.error || "URI can not be parsed.";
12102
12389
  }
12103
- return { parsed, malformedAuthorityOrPort };
12390
+ return { parsed, malformedAuthorityOrPort, malformedPercentEncoding, malformedSchemeSpecific, malformedHost, malformedScheme };
12104
12391
  }
12105
12392
  function parse6(uri, opts) {
12106
12393
  return parseWithStatus(uri, opts).parsed;
@@ -12109,20 +12396,28 @@ var require_fast_uri = __commonJS((exports, module) => {
12109
12396
  return normalizeStringWithStatus(uri, opts).normalized;
12110
12397
  }
12111
12398
  function normalizeStringWithStatus(uri, opts) {
12112
- const { parsed, malformedAuthorityOrPort } = parseWithStatus(uri, opts);
12399
+ const { parsed, malformedAuthorityOrPort, malformedPercentEncoding, malformedSchemeSpecific, malformedHost, malformedScheme } = parseWithStatus(uri, opts);
12113
12400
  return {
12114
- normalized: malformedAuthorityOrPort ? uri : serialize(parsed, opts),
12115
- malformedAuthorityOrPort
12401
+ normalized: malformedAuthorityOrPort || malformedPercentEncoding || malformedSchemeSpecific || malformedHost || malformedScheme ? uri : serialize(parsed, opts),
12402
+ malformedAuthorityOrPort,
12403
+ malformedPercentEncoding,
12404
+ malformedSchemeSpecific,
12405
+ malformedHost,
12406
+ malformedScheme
12116
12407
  };
12117
12408
  }
12118
12409
  function normalizeComparableURI(uri, opts) {
12119
- if (typeof uri === "string") {
12120
- const { normalized, malformedAuthorityOrPort } = normalizeStringWithStatus(uri, opts);
12121
- return malformedAuthorityOrPort ? undefined : normalized;
12410
+ if (typeof uri !== "string" && typeof uri !== "object") {
12411
+ return;
12122
12412
  }
12123
- if (typeof uri === "object") {
12124
- return serialize(uri, opts);
12413
+ let value;
12414
+ try {
12415
+ value = typeof uri === "string" ? uri : serialize(uri, opts);
12416
+ } catch {
12417
+ return;
12125
12418
  }
12419
+ const { normalized, malformedAuthorityOrPort, malformedPercentEncoding, malformedSchemeSpecific, malformedHost, malformedScheme } = normalizeStringWithStatus(value, opts);
12420
+ return malformedAuthorityOrPort || malformedPercentEncoding || malformedSchemeSpecific || malformedHost || malformedScheme ? undefined : normalized;
12126
12421
  }
12127
12422
  var fastUri = {
12128
12423
  SCHEMES,
@@ -14940,9 +15235,9 @@ __export(exports_llm, {
14940
15235
  LLMClient: () => LLMClient
14941
15236
  });
14942
15237
  import { existsSync as existsSync10, readFileSync as readFileSync5, writeFileSync as writeFileSync4, mkdirSync as mkdirSync5 } from "fs";
14943
- import { join as join11 } from "path";
15238
+ import { join as join10 } from "path";
14944
15239
  function getLlmConfigPath() {
14945
- return join11(getConnectorsHome(), "llm.json");
15240
+ return join10(getConnectorsHome(), "llm.json");
14946
15241
  }
14947
15242
  function getLlmConfig() {
14948
15243
  const path = getLlmConfigPath();
@@ -15077,25 +15372,25 @@ __export(exports_installer, {
15077
15372
  connectorExists: () => connectorExists
15078
15373
  });
15079
15374
  import { existsSync as existsSync11, mkdirSync as mkdirSync6, readFileSync as readFileSync6, writeFileSync as writeFileSync5, readdirSync as readdirSync6, statSync as statSync4, rmSync as rmSync2 } from "fs";
15080
- import { join as join12, dirname as dirname5 } from "path";
15375
+ import { join as join11, dirname as dirname5 } from "path";
15081
15376
  import { fileURLToPath as fileURLToPath4 } from "url";
15082
15377
  function resolveConnectorsDir() {
15083
- const fromBin = join12(__dirname4, "..", "connectors");
15378
+ const fromBin = join11(__dirname4, "..", "connectors");
15084
15379
  if (existsSync11(fromBin))
15085
15380
  return fromBin;
15086
- const fromSrc = join12(__dirname4, "..", "..", "connectors");
15381
+ const fromSrc = join11(__dirname4, "..", "..", "connectors");
15087
15382
  if (existsSync11(fromSrc))
15088
15383
  return fromSrc;
15089
15384
  return fromBin;
15090
15385
  }
15091
15386
  function getProjectConnectorsDir(targetDir) {
15092
- return join12(targetDir, PROJECT_CONNECTORS_DIRNAME);
15387
+ return join11(targetDir, PROJECT_CONNECTORS_DIRNAME);
15093
15388
  }
15094
15389
  function getEnablementManifestPath(targetDir) {
15095
- return join12(getProjectConnectorsDir(targetDir), ENABLEMENT_MANIFEST_FILENAME);
15390
+ return join11(getProjectConnectorsDir(targetDir), ENABLEMENT_MANIFEST_FILENAME);
15096
15391
  }
15097
15392
  function getLegacyInstallPath(targetDir, name) {
15098
- return join12(getProjectConnectorsDir(targetDir), legacyConnectorName(name));
15393
+ return join11(getProjectConnectorsDir(targetDir), legacyConnectorName(name));
15099
15394
  }
15100
15395
  function loadEnablementManifest(targetDir) {
15101
15396
  const manifestPath = getEnablementManifestPath(targetDir);
@@ -15123,7 +15418,7 @@ function getLegacyInstalledConnectors(targetDir) {
15123
15418
  return [];
15124
15419
  }
15125
15420
  return readdirSync6(connectorsDir).filter((entry) => {
15126
- const fullPath = join12(connectorsDir, entry);
15421
+ const fullPath = join11(connectorsDir, entry);
15127
15422
  return entry.startsWith("connect-") && statSync4(fullPath).isDirectory();
15128
15423
  }).map((entry) => entry.replace("connect-", "")).sort();
15129
15424
  }
@@ -15132,7 +15427,7 @@ function getEnabledConnectors(targetDir) {
15132
15427
  return [...new Set([...manifestConnectors, ...getLegacyInstalledConnectors(targetDir)])].sort();
15133
15428
  }
15134
15429
  function updateConnectorsIndex(connectorsDir, connectors18) {
15135
- const indexPath = join12(connectorsDir, ENABLEMENT_INDEX_FILENAME);
15430
+ const indexPath = join11(connectorsDir, ENABLEMENT_INDEX_FILENAME);
15136
15431
  const connectorList = connectors18.map((connector) => ` "${connector}",`).join(`
15137
15432
  `);
15138
15433
  const content = `/**
@@ -15236,7 +15531,7 @@ function parseConnectorDocs(raw) {
15236
15531
  function getConnectorDocs(name) {
15237
15532
  const normalizedName = normalizeConnectorName(name);
15238
15533
  const connectorPath = getConnectorPath(normalizedName);
15239
- const claudeMdPath = join12(connectorPath, "CLAUDE.md");
15534
+ const claudeMdPath = join11(connectorPath, "CLAUDE.md");
15240
15535
  if (existsSync11(claudeMdPath)) {
15241
15536
  return parseConnectorDocs(readFileSync6(claudeMdPath, "utf-8"));
15242
15537
  }
@@ -15432,7 +15727,7 @@ var init_lock = __esm(() => {
15432
15727
 
15433
15728
  // src/server/auth.ts
15434
15729
  import { chmodSync, existsSync as existsSync13, readFileSync as readFileSync7, writeFileSync as writeFileSync6, mkdirSync as mkdirSync8, readdirSync as readdirSync7, rmSync as rmSync3, statSync as statSync6 } from "fs";
15435
- import { join as join13 } from "path";
15730
+ import { join as join12 } from "path";
15436
15731
  function getAuthType(name) {
15437
15732
  name = normalizeConnectorName(name);
15438
15733
  const docs = getConnectorDocs(name);
@@ -15469,7 +15764,7 @@ function writePrivateJson(path, data) {
15469
15764
  function getCurrentProfile2(name) {
15470
15765
  name = normalizeConnectorName(name);
15471
15766
  for (const configDir of getConnectorConfigReadDirs2(name)) {
15472
- const currentProfileFile = join13(configDir, "current_profile");
15767
+ const currentProfileFile = join12(configDir, "current_profile");
15473
15768
  if (existsSync13(currentProfileFile)) {
15474
15769
  try {
15475
15770
  return readFileSync7(currentProfileFile, "utf-8").trim() || "default";
@@ -15483,13 +15778,13 @@ function getCurrentProfile2(name) {
15483
15778
  function loadProfileConfigFromDir(configDir, profile) {
15484
15779
  let flatConfig = {};
15485
15780
  let dirConfig = {};
15486
- const profileFile = join13(configDir, "profiles", `${profile}.json`);
15781
+ const profileFile = join12(configDir, "profiles", `${profile}.json`);
15487
15782
  if (existsSync13(profileFile)) {
15488
15783
  try {
15489
15784
  flatConfig = JSON.parse(readFileSync7(profileFile, "utf-8"));
15490
15785
  } catch {}
15491
15786
  }
15492
- const profileDirConfig = join13(configDir, "profiles", profile, "config.json");
15787
+ const profileDirConfig = join12(configDir, "profiles", profile, "config.json");
15493
15788
  if (existsSync13(profileDirConfig)) {
15494
15789
  try {
15495
15790
  dirConfig = JSON.parse(readFileSync7(profileDirConfig, "utf-8"));
@@ -15510,7 +15805,7 @@ function loadTokens3(name) {
15510
15805
  name = normalizeConnectorName(name);
15511
15806
  const profile = getCurrentProfile2(name);
15512
15807
  for (const configDir of getConnectorConfigReadDirs2(name)) {
15513
- const tokensFile = join13(configDir, "profiles", profile, "tokens.json");
15808
+ const tokensFile = join12(configDir, "profiles", profile, "tokens.json");
15514
15809
  if (existsSync13(tokensFile)) {
15515
15810
  try {
15516
15811
  return JSON.parse(readFileSync7(tokensFile, "utf-8"));
@@ -15644,7 +15939,7 @@ function _saveApiKey(name, key, field) {
15644
15939
  const profile = getCurrentProfile2(name);
15645
15940
  const keyField = field || guessKeyField(name);
15646
15941
  if (keyField === "clientId" || keyField === "clientSecret") {
15647
- const credentialsFile = join13(configDir, "credentials.json");
15942
+ const credentialsFile = join12(configDir, "credentials.json");
15648
15943
  ensurePrivateDir(configDir);
15649
15944
  let creds = {};
15650
15945
  if (existsSync13(credentialsFile)) {
@@ -15656,9 +15951,9 @@ function _saveApiKey(name, key, field) {
15656
15951
  writePrivateJson(credentialsFile, creds);
15657
15952
  return;
15658
15953
  }
15659
- const profilesDir = join13(configDir, "profiles");
15660
- const profileFile = join13(profilesDir, `${profile}.json`);
15661
- const profileDir = join13(profilesDir, profile);
15954
+ const profilesDir = join12(configDir, "profiles");
15955
+ const profileFile = join12(profilesDir, `${profile}.json`);
15956
+ const profileDir = join12(profilesDir, profile);
15662
15957
  if (existsSync13(profileFile)) {
15663
15958
  let config2 = {};
15664
15959
  try {
@@ -15671,7 +15966,7 @@ function _saveApiKey(name, key, field) {
15671
15966
  return;
15672
15967
  }
15673
15968
  if (existsSync13(profileDir)) {
15674
- const configFile = join13(profileDir, "config.json");
15969
+ const configFile = join12(profileDir, "config.json");
15675
15970
  let config2 = {};
15676
15971
  if (existsSync13(configFile)) {
15677
15972
  try {
@@ -15688,7 +15983,7 @@ function _saveApiKey(name, key, field) {
15688
15983
  ensurePrivateDir(configDir);
15689
15984
  ensurePrivateDir(profilesDir);
15690
15985
  ensurePrivateDir(profileDir);
15691
- writePrivateJson(join13(profileDir, "config.json"), { [keyField]: key });
15986
+ writePrivateJson(join12(profileDir, "config.json"), { [keyField]: key });
15692
15987
  }
15693
15988
  function guessKeyField(name) {
15694
15989
  name = normalizeConnectorName(name);
@@ -15710,7 +16005,7 @@ function guessKeyField(name) {
15710
16005
  function getOAuthConfig(name) {
15711
16006
  name = normalizeConnectorName(name);
15712
16007
  for (const configDir of getConnectorConfigReadDirs2(name)) {
15713
- const credentialsFile = join13(configDir, "credentials.json");
16008
+ const credentialsFile = join12(configDir, "credentials.json");
15714
16009
  if (existsSync13(credentialsFile)) {
15715
16010
  try {
15716
16011
  const creds = JSON.parse(readFileSync7(credentialsFile, "utf-8"));
@@ -15728,12 +16023,12 @@ function saveOAuthTokens(name, tokens) {
15728
16023
  name = normalizeConnectorName(name);
15729
16024
  const configDir = getConnectorConfigDir2(name);
15730
16025
  const profile = getCurrentProfile2(name);
15731
- const profilesDir = join13(configDir, "profiles");
15732
- const profileDir = join13(profilesDir, profile);
16026
+ const profilesDir = join12(configDir, "profiles");
16027
+ const profileDir = join12(profilesDir, profile);
15733
16028
  ensurePrivateDir(configDir);
15734
16029
  ensurePrivateDir(profilesDir);
15735
16030
  ensurePrivateDir(profileDir);
15736
- const tokensFile = join13(profileDir, "tokens.json");
16031
+ const tokensFile = join12(profileDir, "tokens.json");
15737
16032
  writePrivateJson(tokensFile, tokens);
15738
16033
  }
15739
16034
  async function refreshOAuthToken(name) {
@@ -15842,14 +16137,14 @@ __export(exports_runner, {
15842
16137
  buildConnectorOperationArgs: () => buildConnectorOperationArgs
15843
16138
  });
15844
16139
  import { existsSync as existsSync15, readdirSync as readdirSync8 } from "fs";
15845
- import { join as join15, dirname as dirname6 } from "path";
16140
+ import { join as join14, dirname as dirname6 } from "path";
15846
16141
  import { fileURLToPath as fileURLToPath5 } from "url";
15847
16142
  import { spawn as spawn2 } from "child_process";
15848
16143
  function resolveConnectorsDir2() {
15849
- const fromBin = join15(__dirname5, "..", "connectors");
16144
+ const fromBin = join14(__dirname5, "..", "connectors");
15850
16145
  if (existsSync15(fromBin))
15851
16146
  return fromBin;
15852
- const fromSrc = join15(__dirname5, "..", "..", "connectors");
16147
+ const fromSrc = join14(__dirname5, "..", "..", "connectors");
15853
16148
  if (existsSync15(fromSrc))
15854
16149
  return fromSrc;
15855
16150
  return fromBin;
@@ -15918,7 +16213,7 @@ function buildEnvWithCredentials(connectorName, baseEnv) {
15918
16213
  function getConnectorCliPath(name) {
15919
16214
  const safeName = normalizeConnectorName(name).replace(/[^a-z0-9-]/g, "");
15920
16215
  const connectorDir = getConnectorPackagePath(CONNECTORS_DIR2, safeName);
15921
- const cliPath = join15(connectorDir, "src", "cli", "index.ts");
16216
+ const cliPath = join14(connectorDir, "src", "cli", "index.ts");
15922
16217
  if (existsSync15(cliPath))
15923
16218
  return cliPath;
15924
16219
  return null;
@@ -16335,7 +16630,7 @@ var require_content_type = __commonJS((exports) => {
16335
16630
  }
16336
16631
  });
16337
16632
 
16338
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
16633
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
16339
16634
  import process2 from "process";
16340
16635
 
16341
16636
  // ../../node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/core.js
@@ -20793,7 +21088,7 @@ function preprocess(fn, schema) {
20793
21088
  // ../../node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/external.js
20794
21089
  config(en_default());
20795
21090
 
20796
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js
21091
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js
20797
21092
  var LATEST_PROTOCOL_VERSION = "2025-11-25";
20798
21093
  var DEFAULT_NEGOTIATED_PROTOCOL_VERSION = "2025-03-26";
20799
21094
  var SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION, "2025-06-18", "2025-03-26", "2024-11-05", "2024-10-07"];
@@ -21640,7 +21935,7 @@ class UrlElicitationRequiredError extends McpError {
21640
21935
  }
21641
21936
  }
21642
21937
 
21643
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
21938
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
21644
21939
  var STDIO_DEFAULT_MAX_BUFFER_SIZE = 10 * 1024 * 1024;
21645
21940
 
21646
21941
  class ReadBuffer {
@@ -21680,7 +21975,7 @@ function serializeMessage(message) {
21680
21975
  `;
21681
21976
  }
21682
21977
 
21683
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
21978
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
21684
21979
  class StdioServerTransport {
21685
21980
  constructor(_stdin = process2.stdin, _stdout = process2.stdout, options) {
21686
21981
  this._stdin = _stdin;
@@ -21746,7 +22041,7 @@ class StdioServerTransport {
21746
22041
  // src/lib/registry.ts
21747
22042
  init_builtins();
21748
22043
  import { existsSync as existsSync9, readFileSync as readFileSync4 } from "fs";
21749
- import { join as join10, dirname as dirname4 } from "path";
22044
+ import { join as join9, dirname as dirname4 } from "path";
21750
22045
  import { fileURLToPath as fileURLToPath3 } from "url";
21751
22046
 
21752
22047
  // src/lib/fuzzy.ts
@@ -30179,15 +30474,15 @@ function loadConnectorVersions() {
30179
30474
  versionsLoaded = true;
30180
30475
  const thisDir = dirname4(fileURLToPath3(import.meta.url));
30181
30476
  const candidates = [
30182
- join10(thisDir, "..", "connectors"),
30183
- join10(thisDir, "..", "..", "connectors")
30477
+ join9(thisDir, "..", "connectors"),
30478
+ join9(thisDir, "..", "..", "connectors")
30184
30479
  ];
30185
30480
  const connectorsDir = candidates.find((d) => existsSync9(d));
30186
30481
  if (!connectorsDir)
30187
30482
  return;
30188
30483
  for (const connector of CONNECTORS) {
30189
30484
  try {
30190
- const pkgPath = join10(getConnectorPackagePath(connectorsDir, connector.name), "package.json");
30485
+ const pkgPath = join9(getConnectorPackagePath(connectorsDir, connector.name), "package.json");
30191
30486
  if (existsSync9(pkgPath)) {
30192
30487
  const pkg = JSON.parse(readFileSync4(pkgPath, "utf-8"));
30193
30488
  connector.version = pkg.version || "0.0.0";
@@ -30245,7 +30540,7 @@ function object2(shape, params) {
30245
30540
  };
30246
30541
  return new ZodMiniObject(def);
30247
30542
  }
30248
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js
30543
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js
30249
30544
  function isZ4Schema(s) {
30250
30545
  const schema = s;
30251
30546
  return !!schema._zod;
@@ -30406,7 +30701,7 @@ function getLiteralValue(schema) {
30406
30701
  return;
30407
30702
  }
30408
30703
 
30409
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js
30704
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js
30410
30705
  function isTerminal(status) {
30411
30706
  return status === "completed" || status === "failed" || status === "cancelled";
30412
30707
  }
@@ -31647,7 +31942,7 @@ var zodToJsonSchema = (schema, options) => {
31647
31942
  }
31648
31943
  return combined;
31649
31944
  };
31650
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
31945
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
31651
31946
  function mapMiniTarget(t) {
31652
31947
  if (!t)
31653
31948
  return "draft-7";
@@ -31689,7 +31984,7 @@ function parseWithCompat(schema, data) {
31689
31984
  return result.data;
31690
31985
  }
31691
31986
 
31692
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js
31987
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js
31693
31988
  var DEFAULT_REQUEST_TIMEOUT_MSEC = 60000;
31694
31989
 
31695
31990
  class Protocol {
@@ -32530,7 +32825,7 @@ function mergeCapabilities(base, additional) {
32530
32825
  return result;
32531
32826
  }
32532
32827
 
32533
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js
32828
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js
32534
32829
  var import_ajv = __toESM(require_ajv(), 1);
32535
32830
  var import_ajv_formats = __toESM(require_dist(), 1);
32536
32831
  function createDefaultAjvInstance() {
@@ -32570,7 +32865,7 @@ class AjvJsonSchemaValidator {
32570
32865
  }
32571
32866
  }
32572
32867
 
32573
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js
32868
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js
32574
32869
  class ExperimentalServerTasks {
32575
32870
  constructor(_server) {
32576
32871
  this._server = _server;
@@ -32648,7 +32943,7 @@ class ExperimentalServerTasks {
32648
32943
  }
32649
32944
  }
32650
32945
 
32651
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js
32946
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js
32652
32947
  function assertToolsCallTaskCapability(requests, method, entityName) {
32653
32948
  if (!requests) {
32654
32949
  throw new Error(`${entityName} does not support task creation (required for ${method})`);
@@ -32683,7 +32978,7 @@ function assertClientRequestTaskCapability(requests, method, entityName) {
32683
32978
  }
32684
32979
  }
32685
32980
 
32686
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js
32981
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js
32687
32982
  class Server extends Protocol {
32688
32983
  constructor(_serverInfo, options) {
32689
32984
  super(options);
@@ -33007,7 +33302,7 @@ class Server extends Protocol {
33007
33302
  }
33008
33303
  }
33009
33304
 
33010
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js
33305
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js
33011
33306
  var COMPLETABLE_SYMBOL = Symbol.for("mcp.completable");
33012
33307
  function isCompletable(schema) {
33013
33308
  return !!schema && typeof schema === "object" && COMPLETABLE_SYMBOL in schema;
@@ -33021,7 +33316,7 @@ var McpZodTypeKind;
33021
33316
  McpZodTypeKind2["Completable"] = "McpCompletable";
33022
33317
  })(McpZodTypeKind || (McpZodTypeKind = {}));
33023
33318
 
33024
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js
33319
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js
33025
33320
  var TOOL_NAME_REGEX = /^[A-Za-z0-9._-]{1,128}$/;
33026
33321
  function validateToolName(name) {
33027
33322
  const warnings = [];
@@ -33079,7 +33374,7 @@ function validateAndWarnToolName(name) {
33079
33374
  return result.isValid;
33080
33375
  }
33081
33376
 
33082
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js
33377
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js
33083
33378
  class ExperimentalMcpServerTasks {
33084
33379
  constructor(_mcpServer) {
33085
33380
  this._mcpServer = _mcpServer;
@@ -33094,7 +33389,7 @@ class ExperimentalMcpServerTasks {
33094
33389
  }
33095
33390
  }
33096
33391
 
33097
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js
33392
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js
33098
33393
  init_zod();
33099
33394
 
33100
33395
  class McpServer {
@@ -33828,7 +34123,8 @@ var STRIP_PROMPT = `You are a data extraction assistant. Your job is to take raw
33828
34123
 
33829
34124
  Rules:
33830
34125
  - Return valid JSON only (no markdown, no explanation)
33831
- - Remove pagination metadata, rate limit headers, empty fields, null values
34126
+ - Preserve pagination and continuation metadata exactly (count, total, limit, cursor, nextCursor, next_cursor, hasMore, has_more, complete)
34127
+ - Remove rate limit headers, empty fields, and null values that are not continuation markers
33832
34128
  - Keep all meaningful data fields
33833
34129
  - If the input is already minimal, return it unchanged
33834
34130
  - If input is not JSON, extract key facts as a JSON object
@@ -33855,6 +34151,7 @@ init_package();
33855
34151
 
33856
34152
  // src/mcp/tools/discovery.ts
33857
34153
  init_zod();
34154
+ init_package();
33858
34155
 
33859
34156
  // src/lib/compact-output.ts
33860
34157
  var DEFAULT_MCP_LIMIT = 20;
@@ -33939,7 +34236,7 @@ function registerDiscoveryTools(server, stripped) {
33939
34236
  description: "Search connectors by name or keyword.",
33940
34237
  inputSchema: {
33941
34238
  query: exports_external.string(),
33942
- limit: exports_external.number().optional(),
34239
+ limit: exports_external.number().int().min(1).max(100).optional(),
33943
34240
  verbose: exports_external.boolean().optional()
33944
34241
  }
33945
34242
  }, async ({ query, limit, verbose }) => {
@@ -34010,13 +34307,19 @@ function registerDiscoveryTools(server, stripped) {
34010
34307
  description: c.description,
34011
34308
  tags: c.tags
34012
34309
  })) : page.items.map((c) => compactConnector(c, 120));
34013
- return stripped(JSON.stringify({
34310
+ const compactMode = compact === true || !verbose && compact !== false;
34311
+ return { content: [{ type: "text", text: JSON.stringify({
34014
34312
  connectors: data,
34015
34313
  total: connectors18.length,
34016
34314
  count: data.length,
34315
+ limit: page.limit,
34316
+ cursor: String(page.offset),
34017
34317
  nextCursor: page.nextOffset === null ? null : String(page.nextOffset),
34318
+ hasMore: page.nextOffset !== null,
34319
+ compact: compactMode,
34320
+ catalogVersion: package_default.version,
34018
34321
  hint: page.nextOffset === null ? "Use verbose=true or compact=false for full connector metadata." : `Call again with cursor="${page.nextOffset}", or use verbose=true / compact=false for full connector metadata.`
34019
- }, null, 2));
34322
+ }) }] };
34020
34323
  });
34021
34324
  server.registerTool("connector_docs", {
34022
34325
  title: "Connector Documentation",
@@ -34263,7 +34566,7 @@ init_auth();
34263
34566
  init_database();
34264
34567
  init_connector_resolver();
34265
34568
  import { existsSync as existsSync14, readFileSync as readFileSync8 } from "fs";
34266
- import { join as join14 } from "path";
34569
+ import { join as join13 } from "path";
34267
34570
  import { spawn } from "child_process";
34268
34571
  function registerAuthTools(server, stripped) {
34269
34572
  server.registerTool("connector_auth_status", {
@@ -34399,10 +34702,10 @@ function registerAuthTools(server, stripped) {
34399
34702
  const oauthUrl = `http://localhost:${serverPort}/oauth/${name}/start`;
34400
34703
  if (noBrowser) {
34401
34704
  const connectorsHome2 = getConnectorsHome();
34402
- const tokenPaths = getConnectorConfigReadDirs(name, connectorsHome2).map((dir) => join14(dir, "profiles", "default", "tokens.json"));
34705
+ const tokenPaths = getConnectorConfigReadDirs(name, connectorsHome2).map((dir) => join13(dir, "profiles", "default", "tokens.json"));
34403
34706
  let serverRunning = false;
34404
34707
  try {
34405
- await fetch(`http://localhost:${serverPort}/api/connectors`);
34708
+ await fetch(`http://localhost:${serverPort}/health`);
34406
34709
  serverRunning = true;
34407
34710
  } catch {}
34408
34711
  if (!serverRunning) {
@@ -35419,7 +35722,7 @@ function buildServer() {
35419
35722
  return server;
35420
35723
  }
35421
35724
 
35422
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js
35725
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js
35423
35726
  var import_content_type = __toESM(require_content_type(), 1);
35424
35727
  function mediaTypeEssence(header) {
35425
35728
  if (!header) {
@@ -35442,7 +35745,7 @@ function isJsonContentType(header) {
35442
35745
  return mediaTypeEssence(header) === "application/json";
35443
35746
  }
35444
35747
 
35445
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js
35748
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js
35446
35749
  var DEFAULT_SSE_KEEP_ALIVE_MS = 15000;
35447
35750
  var MAX_TIMER_DELAY_MS = 2 ** 31 - 1;
35448
35751
  function armSseKeepAlive(intervalMs, onTick) {
@@ -35454,7 +35757,7 @@ function armSseKeepAlive(intervalMs, onTick) {
35454
35757
  return timer;
35455
35758
  }
35456
35759
 
35457
- // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js
35760
+ // ../../node_modules/.bun/@modelcontextprotocol+sdk@1.30.0+2b91fc17bf64bdfd/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js
35458
35761
  class WebStandardStreamableHTTPServerTransport {
35459
35762
  constructor(options = {}) {
35460
35763
  this._started = false;