@hasna/connectors 1.3.2 → 1.3.5

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 (1557) hide show
  1. package/bin/index.js +2123 -248
  2. package/bin/mcp.js +1722 -176
  3. package/bin/serve.js +1252 -128
  4. package/connectors/connect-aiagenttool/src/api/client.ts +18 -205
  5. package/connectors/connect-aiagenttool/src/api/index.ts +32 -43
  6. package/connectors/connect-aiagenttool/src/types/index.ts +7 -233
  7. package/connectors/connect-airbrake/src/api/client.ts +25 -208
  8. package/connectors/connect-airbrake/src/api/index.ts +31 -44
  9. package/connectors/connect-airbrake/src/types/index.ts +10 -233
  10. package/connectors/connect-airnow/src/api/client.ts +16 -204
  11. package/connectors/connect-airnow/src/api/index.ts +32 -43
  12. package/connectors/connect-airnow/src/types/index.ts +5 -233
  13. package/connectors/connect-airtop/src/api/client.ts +18 -205
  14. package/connectors/connect-airtop/src/api/index.ts +35 -41
  15. package/connectors/connect-airtop/src/types/index.ts +9 -233
  16. package/connectors/connect-aitableai/src/api/client.ts +18 -205
  17. package/connectors/connect-aitableai/src/api/index.ts +35 -43
  18. package/connectors/connect-aitableai/src/types/index.ts +10 -233
  19. package/connectors/connect-alchemy/src/api/client.ts +33 -207
  20. package/connectors/connect-alchemy/src/api/index.ts +38 -44
  21. package/connectors/connect-alchemy/src/types/index.ts +13 -235
  22. package/connectors/connect-alerty/src/api/client.ts +18 -205
  23. package/connectors/connect-alerty/src/api/index.ts +29 -44
  24. package/connectors/connect-alerty/src/types/index.ts +9 -233
  25. package/connectors/connect-alienvault/src/api/client.ts +18 -205
  26. package/connectors/connect-alienvault/src/api/index.ts +34 -44
  27. package/connectors/connect-alienvault/src/types/index.ts +9 -233
  28. package/connectors/connect-alphamoon/src/api/client.ts +19 -206
  29. package/connectors/connect-alphamoon/src/api/index.ts +30 -42
  30. package/connectors/connect-alphamoon/src/types/index.ts +10 -233
  31. package/connectors/connect-alttextai/src/api/client.ts +18 -205
  32. package/connectors/connect-alttextai/src/api/index.ts +20 -43
  33. package/connectors/connect-alttextai/src/types/index.ts +7 -233
  34. package/connectors/connect-amadeus/src/api/client.ts +2 -2
  35. package/connectors/connect-amilia/src/api/client.ts +26 -211
  36. package/connectors/connect-amilia/src/api/index.ts +27 -44
  37. package/connectors/connect-amilia/src/types/index.ts +9 -233
  38. package/connectors/connect-amqpsender/src/api/client.ts +35 -212
  39. package/connectors/connect-amqpsender/src/api/index.ts +35 -42
  40. package/connectors/connect-amqpsender/src/types/index.ts +8 -233
  41. package/connectors/connect-announcekit/src/api/client.ts +19 -206
  42. package/connectors/connect-announcekit/src/api/index.ts +30 -43
  43. package/connectors/connect-announcekit/src/types/index.ts +8 -233
  44. package/connectors/connect-anthropic/src/api/messages.ts +2 -2
  45. package/connectors/connect-apiary/src/api/client.ts +19 -206
  46. package/connectors/connect-apiary/src/api/index.ts +23 -44
  47. package/connectors/connect-apiary/src/types/index.ts +9 -233
  48. package/connectors/connect-apiflash/src/api/client.ts +19 -204
  49. package/connectors/connect-apiflash/src/api/index.ts +48 -43
  50. package/connectors/connect-apiflash/src/types/index.ts +29 -235
  51. package/connectors/connect-apitemplateio/src/api/client.ts +18 -205
  52. package/connectors/connect-apitemplateio/src/api/index.ts +27 -43
  53. package/connectors/connect-apitemplateio/src/types/index.ts +8 -233
  54. package/connectors/connect-apptivegrid/src/api/client.ts +19 -205
  55. package/connectors/connect-apptivegrid/src/api/index.ts +32 -43
  56. package/connectors/connect-apptivegrid/src/types/index.ts +9 -233
  57. package/connectors/connect-arxiv/CLAUDE.md +80 -0
  58. package/connectors/connect-arxiv/package.json +23 -0
  59. package/connectors/connect-arxiv/src/api/client.ts +203 -0
  60. package/connectors/connect-arxiv/src/api/index.ts +47 -0
  61. package/connectors/connect-arxiv/src/cli/index.ts +229 -0
  62. package/connectors/connect-arxiv/src/index.ts +4 -0
  63. package/connectors/connect-arxiv/src/types/index.ts +40 -0
  64. package/connectors/connect-arxiv/src/utils/config.ts +71 -0
  65. package/connectors/connect-arxiv/src/utils/output.ts +28 -0
  66. package/connectors/connect-arxiv/tsconfig.json +16 -0
  67. package/connectors/connect-auth0/src/api/client.ts +20 -206
  68. package/connectors/connect-auth0/src/api/index.ts +47 -45
  69. package/connectors/connect-auth0/src/types/index.ts +9 -233
  70. package/connectors/connect-autom/src/api/client.ts +18 -205
  71. package/connectors/connect-autom/src/api/index.ts +33 -43
  72. package/connectors/connect-autom/src/types/index.ts +8 -233
  73. package/connectors/connect-automizy/src/api/client.ts +19 -206
  74. package/connectors/connect-automizy/src/api/index.ts +37 -45
  75. package/connectors/connect-automizy/src/types/index.ts +10 -233
  76. package/connectors/connect-autopilot/src/api/client.ts +18 -205
  77. package/connectors/connect-autopilot/src/api/index.ts +34 -42
  78. package/connectors/connect-autopilot/src/types/index.ts +8 -233
  79. package/connectors/connect-azureaisearchvectorstore/src/api/client.ts +21 -204
  80. package/connectors/connect-azureaisearchvectorstore/src/api/index.ts +31 -41
  81. package/connectors/connect-azureaisearchvectorstore/src/types/index.ts +9 -233
  82. package/connectors/connect-azurecosmosdb/src/api/client.ts +32 -204
  83. package/connectors/connect-azurecosmosdb/src/api/index.ts +42 -43
  84. package/connectors/connect-azurecosmosdb/src/types/index.ts +9 -233
  85. package/connectors/connect-botstar/src/api/client.ts +19 -206
  86. package/connectors/connect-botstar/src/api/index.ts +36 -43
  87. package/connectors/connect-botstar/src/types/index.ts +9 -233
  88. package/connectors/connect-brandsight/bun.lock +32 -0
  89. package/connectors/connect-brandsight/package.json +9 -11
  90. package/connectors/connect-brandsight/src/api/brandsight.test.ts +324 -0
  91. package/connectors/connect-brandsight/src/api/client.ts +48 -144
  92. package/connectors/connect-brandsight/src/api/index.ts +25 -21
  93. package/connectors/connect-brandsight/src/api/intelligence.ts +82 -0
  94. package/connectors/connect-brandsight/src/api/monitoring.ts +93 -0
  95. package/connectors/connect-brandsight/src/cli/index.ts +83 -587
  96. package/connectors/connect-brandsight/src/index.ts +20 -5
  97. package/connectors/connect-brandsight/src/types/index.ts +33 -148
  98. package/connectors/connect-brandsight/src/utils/config.ts +93 -165
  99. package/connectors/connect-brandsight/tsconfig.json +9 -22
  100. package/connectors/connect-breezyhr/src/api/client.ts +19 -206
  101. package/connectors/connect-breezyhr/src/api/index.ts +40 -41
  102. package/connectors/connect-breezyhr/src/types/index.ts +9 -233
  103. package/connectors/connect-browseai/src/api/client.ts +18 -205
  104. package/connectors/connect-browseai/src/api/index.ts +22 -43
  105. package/connectors/connect-browseai/src/types/index.ts +6 -233
  106. package/connectors/connect-browserless/src/api/client.ts +20 -203
  107. package/connectors/connect-browserless/src/api/index.ts +32 -43
  108. package/connectors/connect-browserless/src/types/index.ts +8 -233
  109. package/connectors/connect-browserstack/src/api/client.ts +19 -206
  110. package/connectors/connect-browserstack/src/api/index.ts +28 -43
  111. package/connectors/connect-browserstack/src/types/index.ts +8 -233
  112. package/connectors/connect-bugbug/src/api/client.ts +18 -205
  113. package/connectors/connect-bugbug/src/api/index.ts +27 -42
  114. package/connectors/connect-bugbug/src/types/index.ts +9 -233
  115. package/connectors/connect-bugherd/src/api/client.ts +24 -211
  116. package/connectors/connect-bugherd/src/api/index.ts +33 -43
  117. package/connectors/connect-bugherd/src/types/index.ts +8 -233
  118. package/connectors/connect-bugreplay/src/api/client.ts +18 -205
  119. package/connectors/connect-bugreplay/src/api/index.ts +24 -43
  120. package/connectors/connect-bugreplay/src/types/index.ts +7 -233
  121. package/connectors/connect-buildkite/src/api/client.ts +19 -206
  122. package/connectors/connect-buildkite/src/api/index.ts +37 -43
  123. package/connectors/connect-buildkite/src/types/index.ts +8 -233
  124. package/connectors/connect-bunnycdn/src/api/client.ts +18 -207
  125. package/connectors/connect-bunnycdn/src/api/index.ts +29 -44
  126. package/connectors/connect-bunnycdn/src/types/index.ts +7 -233
  127. package/connectors/connect-carbonblack/src/api/client.ts +19 -205
  128. package/connectors/connect-carbonblack/src/api/index.ts +34 -43
  129. package/connectors/connect-carbonblack/src/types/index.ts +9 -233
  130. package/connectors/connect-chargify/src/api/client.ts +21 -204
  131. package/connectors/connect-chargify/src/api/index.ts +49 -42
  132. package/connectors/connect-chargify/src/types/index.ts +8 -233
  133. package/connectors/connect-chatling/src/api/client.ts +18 -205
  134. package/connectors/connect-chatling/src/api/index.ts +35 -42
  135. package/connectors/connect-chatling/src/types/index.ts +8 -233
  136. package/connectors/connect-chekhub/src/api/client.ts +19 -206
  137. package/connectors/connect-chekhub/src/api/index.ts +33 -44
  138. package/connectors/connect-chekhub/src/types/index.ts +9 -233
  139. package/connectors/connect-chromavectorstore/src/api/client.ts +28 -206
  140. package/connectors/connect-chromavectorstore/src/api/index.ts +41 -44
  141. package/connectors/connect-chromavectorstore/src/types/index.ts +7 -233
  142. package/connectors/connect-ciscoumbrella/src/api/client.ts +24 -207
  143. package/connectors/connect-ciscoumbrella/src/api/index.ts +33 -43
  144. package/connectors/connect-ciscoumbrella/src/types/index.ts +8 -233
  145. package/connectors/connect-clicksendsms/src/api/client.ts +19 -206
  146. package/connectors/connect-clicksendsms/src/api/index.ts +32 -43
  147. package/connectors/connect-clicksendsms/src/types/index.ts +9 -233
  148. package/connectors/connect-cloudboost/src/api/client.ts +23 -208
  149. package/connectors/connect-cloudboost/src/api/index.ts +36 -43
  150. package/connectors/connect-cloudboost/src/types/index.ts +9 -233
  151. package/connectors/connect-cloudlayer/src/api/client.ts +20 -209
  152. package/connectors/connect-cloudlayer/src/api/index.ts +25 -42
  153. package/connectors/connect-cloudlayer/src/types/index.ts +8 -233
  154. package/connectors/connect-cody/src/api/client.ts +19 -205
  155. package/connectors/connect-cody/src/api/index.ts +23 -42
  156. package/connectors/connect-cody/src/types/index.ts +6 -233
  157. package/connectors/connect-confluent/src/api/client.ts +21 -205
  158. package/connectors/connect-confluent/src/api/index.ts +36 -43
  159. package/connectors/connect-confluent/src/types/index.ts +9 -233
  160. package/connectors/connect-convertapi/src/api/client.ts +17 -205
  161. package/connectors/connect-convertapi/src/api/index.ts +20 -44
  162. package/connectors/connect-convertapi/src/types/index.ts +7 -233
  163. package/connectors/connect-copper/src/api/client.ts +20 -205
  164. package/connectors/connect-copper/src/api/index.ts +38 -42
  165. package/connectors/connect-copper/src/types/index.ts +8 -233
  166. package/connectors/connect-cortex/src/api/client.ts +19 -206
  167. package/connectors/connect-cortex/src/api/index.ts +33 -43
  168. package/connectors/connect-cortex/src/types/index.ts +10 -233
  169. package/connectors/connect-craftdraft/src/api/client.ts +18 -205
  170. package/connectors/connect-craftdraft/src/api/index.ts +27 -43
  171. package/connectors/connect-craftdraft/src/types/index.ts +7 -233
  172. package/connectors/connect-crisp/src/api/client.ts +24 -207
  173. package/connectors/connect-crisp/src/api/index.ts +34 -42
  174. package/connectors/connect-crisp/src/types/index.ts +7 -233
  175. package/connectors/connect-crossmint/src/api/client.ts +20 -208
  176. package/connectors/connect-crossmint/src/api/index.ts +29 -43
  177. package/connectors/connect-crossmint/src/types/index.ts +7 -233
  178. package/connectors/connect-crowddev/src/api/client.ts +18 -204
  179. package/connectors/connect-crowddev/src/api/index.ts +23 -43
  180. package/connectors/connect-crowddev/src/types/index.ts +8 -233
  181. package/connectors/connect-crowdpower/src/api/client.ts +18 -205
  182. package/connectors/connect-crowdpower/src/api/index.ts +28 -44
  183. package/connectors/connect-crowdpower/src/types/index.ts +9 -233
  184. package/connectors/connect-cryptolens/src/api/client.ts +20 -211
  185. package/connectors/connect-cryptolens/src/api/index.ts +34 -44
  186. package/connectors/connect-cryptolens/src/types/index.ts +7 -233
  187. package/connectors/connect-customerio/src/api/client.ts +37 -211
  188. package/connectors/connect-customerio/src/api/index.ts +34 -44
  189. package/connectors/connect-customerio/src/types/index.ts +9 -233
  190. package/connectors/connect-daffy/src/api/client.ts +18 -205
  191. package/connectors/connect-daffy/src/api/index.ts +25 -42
  192. package/connectors/connect-daffy/src/types/index.ts +8 -233
  193. package/connectors/connect-datasoap/src/api/client.ts +18 -205
  194. package/connectors/connect-datasoap/src/api/index.ts +28 -42
  195. package/connectors/connect-datasoap/src/types/index.ts +8 -233
  196. package/connectors/connect-dayschedule/src/api/client.ts +18 -205
  197. package/connectors/connect-dayschedule/src/api/index.ts +25 -43
  198. package/connectors/connect-dayschedule/src/types/index.ts +8 -233
  199. package/connectors/connect-deepl/src/api/client.ts +46 -185
  200. package/connectors/connect-deepl/src/api/index.ts +18 -40
  201. package/connectors/connect-deepl/src/api/translate.ts +98 -0
  202. package/connectors/connect-deepl/src/types/index.ts +33 -217
  203. package/connectors/connect-demio/src/api/client.ts +19 -204
  204. package/connectors/connect-demio/src/api/index.ts +29 -42
  205. package/connectors/connect-demio/src/types/index.ts +7 -233
  206. package/connectors/connect-dhl/src/api/client.ts +22 -201
  207. package/connectors/connect-dhl/src/api/index.ts +23 -42
  208. package/connectors/connect-dhl/src/types/index.ts +10 -233
  209. package/connectors/connect-docsbotai/src/api/client.ts +21 -206
  210. package/connectors/connect-docsbotai/src/api/index.ts +55 -39
  211. package/connectors/connect-docsbotai/src/types/index.ts +7 -233
  212. package/connectors/connect-drift/src/api/client.ts +19 -203
  213. package/connectors/connect-drift/src/api/index.ts +41 -42
  214. package/connectors/connect-drift/src/types/index.ts +7 -233
  215. package/connectors/connect-dropcontact/src/api/client.ts +21 -209
  216. package/connectors/connect-dropcontact/src/api/index.ts +23 -42
  217. package/connectors/connect-dropcontact/src/types/index.ts +8 -233
  218. package/connectors/connect-eartho/src/api/client.ts +21 -206
  219. package/connectors/connect-eartho/src/api/index.ts +24 -44
  220. package/connectors/connect-eartho/src/types/index.ts +6 -233
  221. package/connectors/connect-echowin/src/api/client.ts +18 -205
  222. package/connectors/connect-echowin/src/api/index.ts +29 -43
  223. package/connectors/connect-echowin/src/types/index.ts +8 -233
  224. package/connectors/connect-ecwid/src/api/client.ts +20 -205
  225. package/connectors/connect-ecwid/src/api/index.ts +36 -42
  226. package/connectors/connect-ecwid/src/types/index.ts +9 -233
  227. package/connectors/connect-elasticsearch/src/api/client.ts +29 -204
  228. package/connectors/connect-elasticsearch/src/api/index.ts +40 -41
  229. package/connectors/connect-elasticsearch/src/types/index.ts +9 -233
  230. package/connectors/connect-emelia/src/api/client.ts +23 -199
  231. package/connectors/connect-emelia/src/api/index.ts +60 -41
  232. package/connectors/connect-emelia/src/types/index.ts +24 -220
  233. package/connectors/connect-engati/src/api/client.ts +20 -205
  234. package/connectors/connect-engati/src/api/index.ts +31 -42
  235. package/connectors/connect-engati/src/types/index.ts +9 -233
  236. package/connectors/connect-erpnext/src/api/client.ts +21 -204
  237. package/connectors/connect-erpnext/src/api/index.ts +34 -43
  238. package/connectors/connect-erpnext/src/types/index.ts +6 -233
  239. package/connectors/connect-evervault/src/api/client.ts +22 -211
  240. package/connectors/connect-evervault/src/api/index.ts +28 -42
  241. package/connectors/connect-evervault/src/types/index.ts +9 -233
  242. package/connectors/connect-faros/src/api/client.ts +18 -204
  243. package/connectors/connect-faros/src/api/index.ts +31 -43
  244. package/connectors/connect-faros/src/types/index.ts +9 -233
  245. package/connectors/connect-fastbots/src/api/client.ts +18 -205
  246. package/connectors/connect-fastbots/src/api/index.ts +31 -42
  247. package/connectors/connect-fastbots/src/types/index.ts +8 -233
  248. package/connectors/connect-flagship/src/api/client.ts +24 -209
  249. package/connectors/connect-flagship/src/api/index.ts +24 -42
  250. package/connectors/connect-flagship/src/types/index.ts +7 -233
  251. package/connectors/connect-float/src/api/client.ts +19 -206
  252. package/connectors/connect-float/src/api/index.ts +38 -42
  253. package/connectors/connect-float/src/types/index.ts +9 -233
  254. package/connectors/connect-flotiq/src/api/client.ts +18 -205
  255. package/connectors/connect-flotiq/src/api/index.ts +38 -42
  256. package/connectors/connect-flotiq/src/types/index.ts +9 -233
  257. package/connectors/connect-formcarry/src/api/client.ts +20 -210
  258. package/connectors/connect-formcarry/src/api/index.ts +25 -46
  259. package/connectors/connect-formcarry/src/types/index.ts +5 -235
  260. package/connectors/connect-formdesk/src/api/client.ts +19 -204
  261. package/connectors/connect-formdesk/src/api/index.ts +23 -44
  262. package/connectors/connect-formdesk/src/types/index.ts +7 -233
  263. package/connectors/connect-formsonfire/src/api/client.ts +18 -205
  264. package/connectors/connect-formsonfire/src/api/index.ts +21 -44
  265. package/connectors/connect-formsonfire/src/types/index.ts +8 -233
  266. package/connectors/connect-fortinetfortigate/src/api/client.ts +19 -205
  267. package/connectors/connect-fortinetfortigate/src/api/index.ts +33 -43
  268. package/connectors/connect-fortinetfortigate/src/types/index.ts +8 -233
  269. package/connectors/connect-freedictionary/src/api/client.ts +11 -205
  270. package/connectors/connect-freedictionary/src/api/index.ts +29 -42
  271. package/connectors/connect-freedictionary/src/types/index.ts +5 -233
  272. package/connectors/connect-freshworkscrm/src/api/client.ts +18 -204
  273. package/connectors/connect-freshworkscrm/src/api/index.ts +41 -41
  274. package/connectors/connect-freshworkscrm/src/types/index.ts +8 -233
  275. package/connectors/connect-fusioo/src/api/client.ts +19 -206
  276. package/connectors/connect-fusioo/src/api/index.ts +29 -43
  277. package/connectors/connect-fusioo/src/types/index.ts +8 -233
  278. package/connectors/connect-genderapi/src/api/client.ts +14 -205
  279. package/connectors/connect-genderapi/src/api/index.ts +23 -42
  280. package/connectors/connect-genderapi/src/types/index.ts +5 -233
  281. package/connectors/connect-ghost/src/api/client.ts +45 -211
  282. package/connectors/connect-ghost/src/api/index.ts +38 -43
  283. package/connectors/connect-ghost/src/types/index.ts +9 -233
  284. package/connectors/connect-gitea/src/api/client.ts +19 -205
  285. package/connectors/connect-gitea/src/api/index.ts +39 -43
  286. package/connectors/connect-gitea/src/types/index.ts +9 -233
  287. package/connectors/connect-github/src/api/client.ts +11 -0
  288. package/connectors/connect-github/src/api/commits.ts +169 -0
  289. package/connectors/connect-github/src/api/index.ts +12 -0
  290. package/connectors/connect-github/src/api/releases.ts +158 -0
  291. package/connectors/connect-github/src/api/workflows.ts +169 -0
  292. package/connectors/connect-github/src/types/index.ts +190 -0
  293. package/connectors/connect-gmail/src/cli/index.ts +3 -32
  294. package/connectors/connect-godaddy/package.json +4 -1
  295. package/connectors/connect-godaddy/src/api/client.ts +16 -49
  296. package/connectors/connect-godaddy/src/api/dns.ts +65 -0
  297. package/connectors/connect-godaddy/src/api/domains.ts +51 -0
  298. package/connectors/connect-godaddy/src/api/godaddy.test.ts +623 -0
  299. package/connectors/connect-godaddy/src/api/index.ts +57 -32
  300. package/connectors/connect-godaddy/src/cli/index.ts +200 -57
  301. package/connectors/connect-godaddy/src/index.ts +10 -66
  302. package/connectors/connect-godaddy/src/types/index.ts +87 -121
  303. package/connectors/connect-godaddy/src/utils/config.ts +16 -153
  304. package/connectors/connect-googleads/src/api/adGroups.ts +3 -3
  305. package/connectors/connect-googleads/src/api/ads.ts +3 -3
  306. package/connectors/connect-googleads/src/api/campaigns.ts +4 -4
  307. package/connectors/connect-googleads/src/api/client.ts +1 -1
  308. package/connectors/connect-googleads/src/api/keywords.ts +6 -6
  309. package/connectors/connect-googlebigquery/src/api/client.ts +24 -204
  310. package/connectors/connect-googlebigquery/src/api/index.ts +39 -42
  311. package/connectors/connect-googlebigquery/src/types/index.ts +8 -233
  312. package/connectors/connect-googletranslate/src/api/client.ts +20 -204
  313. package/connectors/connect-googletranslate/src/api/index.ts +22 -43
  314. package/connectors/connect-googletranslate/src/types/index.ts +9 -233
  315. package/connectors/connect-gotowebinar/src/api/client.ts +24 -207
  316. package/connectors/connect-gotowebinar/src/api/index.ts +36 -43
  317. package/connectors/connect-gotowebinar/src/types/index.ts +7 -233
  318. package/connectors/connect-gptea/src/api/client.ts +20 -209
  319. package/connectors/connect-gptea/src/api/index.ts +23 -42
  320. package/connectors/connect-gptea/src/types/index.ts +6 -233
  321. package/connectors/connect-grain/src/api/client.ts +19 -206
  322. package/connectors/connect-grain/src/api/index.ts +29 -43
  323. package/connectors/connect-grain/src/types/index.ts +8 -233
  324. package/connectors/connect-grist/src/api/client.ts +18 -204
  325. package/connectors/connect-grist/src/api/index.ts +27 -43
  326. package/connectors/connect-grist/src/types/index.ts +10 -233
  327. package/connectors/connect-handwrytten/src/api/client.ts +18 -205
  328. package/connectors/connect-handwrytten/src/api/index.ts +23 -43
  329. package/connectors/connect-handwrytten/src/types/index.ts +8 -233
  330. package/connectors/connect-harrypotterapi/src/api/client.ts +9 -206
  331. package/connectors/connect-harrypotterapi/src/api/index.ts +15 -45
  332. package/connectors/connect-harrypotterapi/src/types/index.ts +5 -233
  333. package/connectors/connect-helcim/src/api/client.ts +20 -210
  334. package/connectors/connect-helcim/src/api/index.ts +38 -43
  335. package/connectors/connect-helcim/src/types/index.ts +15 -228
  336. package/connectors/connect-heysummit/src/api/client.ts +22 -209
  337. package/connectors/connect-heysummit/src/api/index.ts +23 -44
  338. package/connectors/connect-heysummit/src/types/index.ts +8 -233
  339. package/connectors/connect-hubplanner/src/api/client.ts +18 -205
  340. package/connectors/connect-hubplanner/src/api/index.ts +33 -42
  341. package/connectors/connect-hubplanner/src/types/index.ts +8 -233
  342. package/connectors/connect-huggingface/src/api/client.ts +5 -0
  343. package/connectors/connect-huggingface/src/api/datasets.ts +73 -0
  344. package/connectors/connect-huggingface/src/api/index.ts +17 -19
  345. package/connectors/connect-huggingface/src/api/inference.ts +199 -0
  346. package/connectors/connect-huggingface/src/api/models.ts +66 -0
  347. package/connectors/connect-huggingface/src/api/spaces.ts +42 -0
  348. package/connectors/connect-huggingface/src/cli/index.ts +148 -36
  349. package/connectors/connect-hunter/src/api/client.ts +14 -205
  350. package/connectors/connect-hunter/src/api/index.ts +25 -42
  351. package/connectors/connect-hunter/src/types/index.ts +8 -233
  352. package/connectors/connect-hybridanalysis/src/api/client.ts +24 -204
  353. package/connectors/connect-hybridanalysis/src/api/index.ts +24 -43
  354. package/connectors/connect-hybridanalysis/src/types/index.ts +7 -233
  355. package/connectors/connect-ideta/src/api/client.ts +18 -205
  356. package/connectors/connect-ideta/src/api/index.ts +25 -42
  357. package/connectors/connect-ideta/src/types/index.ts +8 -233
  358. package/connectors/connect-invoiced/src/api/client.ts +19 -208
  359. package/connectors/connect-invoiced/src/api/index.ts +22 -49
  360. package/connectors/connect-invoiced/src/types/index.ts +5 -237
  361. package/connectors/connect-ip2location/src/api/client.ts +14 -205
  362. package/connectors/connect-ip2location/src/api/index.ts +20 -43
  363. package/connectors/connect-ip2location/src/types/index.ts +5 -233
  364. package/connectors/connect-ipinfo/src/api/client.ts +16 -206
  365. package/connectors/connect-ipinfo/src/api/index.ts +21 -47
  366. package/connectors/connect-ipinfo/src/types/index.ts +6 -233
  367. package/connectors/connect-jasper/src/api/client.ts +18 -202
  368. package/connectors/connect-jasper/src/api/index.ts +41 -43
  369. package/connectors/connect-jasper/src/types/index.ts +7 -233
  370. package/connectors/connect-jenkins/src/api/client.ts +25 -205
  371. package/connectors/connect-jenkins/src/api/index.ts +38 -43
  372. package/connectors/connect-jenkins/src/types/index.ts +8 -233
  373. package/connectors/connect-jinaai/src/api/client.ts +21 -204
  374. package/connectors/connect-jinaai/src/api/index.ts +23 -42
  375. package/connectors/connect-jinaai/src/types/index.ts +9 -233
  376. package/connectors/connect-jira/src/api/client.ts +57 -0
  377. package/connectors/connect-jira/src/api/index.ts +22 -63
  378. package/connectors/connect-kafka/src/api/client.ts +27 -206
  379. package/connectors/connect-kafka/src/api/index.ts +29 -42
  380. package/connectors/connect-kafka/src/types/index.ts +9 -233
  381. package/connectors/connect-kaggle/src/api/client.ts +15 -205
  382. package/connectors/connect-kaggle/src/api/index.ts +27 -43
  383. package/connectors/connect-kaggle/src/types/index.ts +7 -233
  384. package/connectors/connect-kanbantool/src/api/client.ts +19 -205
  385. package/connectors/connect-kanbantool/src/api/index.ts +34 -43
  386. package/connectors/connect-kanbantool/src/types/index.ts +8 -233
  387. package/connectors/connect-keygen/src/api/client.ts +19 -205
  388. package/connectors/connect-keygen/src/api/index.ts +33 -43
  389. package/connectors/connect-keygen/src/types/index.ts +8 -233
  390. package/connectors/connect-kibana/src/api/client.ts +24 -204
  391. package/connectors/connect-kibana/src/api/index.ts +36 -42
  392. package/connectors/connect-kibana/src/types/index.ts +9 -233
  393. package/connectors/connect-lambdatest/src/api/client.ts +19 -206
  394. package/connectors/connect-lambdatest/src/api/index.ts +29 -44
  395. package/connectors/connect-lambdatest/src/types/index.ts +8 -233
  396. package/connectors/connect-laposta/src/api/client.ts +19 -206
  397. package/connectors/connect-laposta/src/api/index.ts +39 -42
  398. package/connectors/connect-laposta/src/types/index.ts +8 -233
  399. package/connectors/connect-launch27/src/api/client.ts +18 -207
  400. package/connectors/connect-launch27/src/api/index.ts +31 -42
  401. package/connectors/connect-launch27/src/types/index.ts +7 -233
  402. package/connectors/connect-leadboxer/src/api/client.ts +18 -205
  403. package/connectors/connect-leadboxer/src/api/index.ts +20 -44
  404. package/connectors/connect-leadboxer/src/types/index.ts +7 -233
  405. package/connectors/connect-leadpops/src/api/client.ts +18 -205
  406. package/connectors/connect-leadpops/src/api/index.ts +25 -45
  407. package/connectors/connect-leadpops/src/types/index.ts +7 -233
  408. package/connectors/connect-lighthouse/src/api/client.ts +18 -205
  409. package/connectors/connect-lighthouse/src/api/index.ts +33 -41
  410. package/connectors/connect-lighthouse/src/types/index.ts +9 -233
  411. package/connectors/connect-limego/src/api/client.ts +18 -205
  412. package/connectors/connect-limego/src/api/index.ts +25 -44
  413. package/connectors/connect-limego/src/types/index.ts +8 -233
  414. package/connectors/connect-line/src/api/client.ts +23 -205
  415. package/connectors/connect-line/src/api/index.ts +34 -44
  416. package/connectors/connect-line/src/types/index.ts +9 -233
  417. package/connectors/connect-linear/src/api/comments.ts +148 -0
  418. package/connectors/connect-linear/src/api/index.ts +8 -0
  419. package/connectors/connect-linear/src/api/states.ts +88 -0
  420. package/connectors/connect-linear/src/types/index.ts +68 -0
  421. package/connectors/connect-lingvanex/src/api/client.ts +19 -209
  422. package/connectors/connect-lingvanex/src/api/index.ts +24 -42
  423. package/connectors/connect-lingvanex/src/types/index.ts +7 -233
  424. package/connectors/connect-liveagent/src/api/client.ts +18 -204
  425. package/connectors/connect-liveagent/src/api/index.ts +34 -42
  426. package/connectors/connect-liveagent/src/types/index.ts +9 -233
  427. package/connectors/connect-loginradius/src/api/client.ts +23 -202
  428. package/connectors/connect-loginradius/src/api/index.ts +35 -43
  429. package/connectors/connect-loginradius/src/types/index.ts +9 -233
  430. package/connectors/connect-mailerlite/src/api/client.ts +18 -205
  431. package/connectors/connect-mailerlite/src/api/index.ts +35 -42
  432. package/connectors/connect-mailerlite/src/types/index.ts +9 -233
  433. package/connectors/connect-mailgun/src/api/client.ts +29 -201
  434. package/connectors/connect-mailgun/src/api/index.ts +37 -43
  435. package/connectors/connect-mailgun/src/types/index.ts +10 -233
  436. package/connectors/connect-malcore/src/api/client.ts +18 -205
  437. package/connectors/connect-malcore/src/api/index.ts +30 -43
  438. package/connectors/connect-malcore/src/types/index.ts +7 -233
  439. package/connectors/connect-marketplacer/src/api/client.ts +18 -204
  440. package/connectors/connect-marketplacer/src/api/index.ts +30 -44
  441. package/connectors/connect-marketplacer/src/types/index.ts +9 -233
  442. package/connectors/connect-matrix/src/api/client.ts +21 -204
  443. package/connectors/connect-matrix/src/api/index.ts +34 -41
  444. package/connectors/connect-matrix/src/types/index.ts +10 -233
  445. package/connectors/connect-mattermost/src/api/client.ts +19 -205
  446. package/connectors/connect-mattermost/src/api/index.ts +34 -42
  447. package/connectors/connect-mattermost/src/types/index.ts +8 -233
  448. package/connectors/connect-mem/src/api/client.ts +18 -205
  449. package/connectors/connect-mem/src/api/index.ts +20 -43
  450. package/connectors/connect-mem/src/types/index.ts +6 -233
  451. package/connectors/connect-mercury/CLAUDE.md +0 -1
  452. package/connectors/connect-microsoftentraid/src/api/client.ts +21 -205
  453. package/connectors/connect-microsoftentraid/src/api/index.ts +29 -44
  454. package/connectors/connect-microsoftentraid/src/types/index.ts +8 -233
  455. package/connectors/connect-microsoftentraidazureactivedirectory/src/api/client.ts +21 -205
  456. package/connectors/connect-microsoftentraidazureactivedirectory/src/api/index.ts +37 -44
  457. package/connectors/connect-microsoftentraidazureactivedirectory/src/types/index.ts +10 -233
  458. package/connectors/connect-microsoftgraphsecurity/src/api/client.ts +21 -205
  459. package/connectors/connect-microsoftgraphsecurity/src/api/index.ts +28 -43
  460. package/connectors/connect-microsoftgraphsecurity/src/types/index.ts +8 -233
  461. package/connectors/connect-microsoftonedrive/src/api/client.ts +21 -205
  462. package/connectors/connect-microsoftonedrive/src/api/index.ts +41 -41
  463. package/connectors/connect-microsoftonedrive/src/types/index.ts +8 -233
  464. package/connectors/connect-microsofttodo/src/api/client.ts +21 -205
  465. package/connectors/connect-microsofttodo/src/api/index.ts +35 -43
  466. package/connectors/connect-microsofttodo/src/types/index.ts +6 -233
  467. package/connectors/connect-miestro/src/api/client.ts +18 -205
  468. package/connectors/connect-miestro/src/api/index.ts +30 -43
  469. package/connectors/connect-miestro/src/types/index.ts +8 -233
  470. package/connectors/connect-miro/src/api/client.ts +19 -206
  471. package/connectors/connect-miro/src/api/index.ts +32 -41
  472. package/connectors/connect-miro/src/types/index.ts +10 -233
  473. package/connectors/connect-missive/src/api/client.ts +19 -206
  474. package/connectors/connect-missive/src/api/index.ts +35 -42
  475. package/connectors/connect-missive/src/types/index.ts +13 -235
  476. package/connectors/connect-mist/src/api/client.ts +19 -205
  477. package/connectors/connect-mist/src/api/index.ts +24 -43
  478. package/connectors/connect-mist/src/types/index.ts +8 -233
  479. package/connectors/connect-mistral/src/api/chat.ts +2 -1
  480. package/connectors/connect-mistral/src/api/embeddings.ts +2 -1
  481. package/connectors/connect-monday/src/api/index.ts +120 -1
  482. package/connectors/connect-moonmail/src/api/client.ts +18 -205
  483. package/connectors/connect-moonmail/src/api/index.ts +31 -43
  484. package/connectors/connect-moonmail/src/types/index.ts +7 -233
  485. package/connectors/connect-mxtoolbox/src/api/client.ts +15 -204
  486. package/connectors/connect-mxtoolbox/src/api/index.ts +25 -45
  487. package/connectors/connect-mxtoolbox/src/types/index.ts +10 -233
  488. package/connectors/connect-myaskai/src/api/client.ts +18 -205
  489. package/connectors/connect-myaskai/src/api/index.ts +28 -42
  490. package/connectors/connect-myaskai/src/types/index.ts +7 -233
  491. package/connectors/connect-myphoner/src/api/client.ts +18 -205
  492. package/connectors/connect-myphoner/src/api/index.ts +30 -43
  493. package/connectors/connect-myphoner/src/types/index.ts +8 -233
  494. package/connectors/connect-namecheap/bin/index.js +3119 -0
  495. package/connectors/{connect-yousign → connect-namecheap}/bun.lock +3 -3
  496. package/connectors/connect-namecheap/dist/index.js +431 -0
  497. package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/bun/README.md +1 -1
  498. package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/bun/package.json +3 -3
  499. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/bun.d.ts +239 -8
  500. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/executables.mdx +10 -10
  501. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/fullstack.mdx +13 -13
  502. package/connectors/connect-namecheap/node_modules/bun-types/docs/guides/http/sse.mdx +91 -0
  503. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/bun-apis.mdx +2 -1
  504. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/bunfig.mdx +11 -0
  505. package/connectors/connect-namecheap/node_modules/bun-types/docs/runtime/cron.mdx +358 -0
  506. package/connectors/connect-namecheap/node_modules/bun-types/docs/runtime/csrf.mdx +171 -0
  507. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/hashing.mdx +1 -1
  508. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/http/server.mdx +34 -7
  509. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/json5.mdx +1 -1
  510. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/markdown.mdx +53 -16
  511. package/connectors/connect-namecheap/node_modules/bun-types/docs/runtime/toml.mdx +238 -0
  512. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/yaml.mdx +3 -2
  513. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/configuration.mdx +54 -0
  514. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/package.json +1 -1
  515. package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/s3.d.ts +19 -0
  516. package/connectors/{connect-yousign → connect-namecheap}/package.json +12 -12
  517. package/connectors/connect-namecheap/src/api/client.ts +82 -0
  518. package/connectors/connect-namecheap/src/api/dns.ts +74 -0
  519. package/connectors/connect-namecheap/src/api/domains.ts +119 -0
  520. package/connectors/connect-namecheap/src/api/index.ts +67 -0
  521. package/connectors/connect-namecheap/src/api/namecheap.test.ts +549 -0
  522. package/connectors/connect-namecheap/src/cli/index.ts +389 -0
  523. package/connectors/connect-namecheap/src/index.ts +32 -0
  524. package/connectors/connect-namecheap/src/types/index.ts +84 -0
  525. package/connectors/connect-namecheap/src/utils/config.ts +205 -0
  526. package/connectors/connect-namecheap/src/utils/output.ts +119 -0
  527. package/connectors/connect-namecheap/src/utils/xml.ts +82 -0
  528. package/connectors/connect-nanonetsocr/src/api/client.ts +19 -206
  529. package/connectors/connect-nanonetsocr/src/api/index.ts +22 -42
  530. package/connectors/connect-nanonetsocr/src/types/index.ts +8 -233
  531. package/connectors/connect-nocodb/src/api/client.ts +22 -208
  532. package/connectors/connect-nocodb/src/api/index.ts +40 -42
  533. package/connectors/connect-nocodb/src/types/index.ts +10 -233
  534. package/connectors/connect-npm/src/api/client.ts +22 -203
  535. package/connectors/connect-npm/src/api/index.ts +24 -43
  536. package/connectors/connect-npm/src/types/index.ts +8 -233
  537. package/connectors/connect-nuclia/src/api/client.ts +19 -205
  538. package/connectors/connect-nuclia/src/api/index.ts +32 -43
  539. package/connectors/connect-nuclia/src/types/index.ts +8 -233
  540. package/connectors/connect-nyota/src/api/client.ts +18 -205
  541. package/connectors/connect-nyota/src/api/index.ts +24 -43
  542. package/connectors/connect-nyota/src/types/index.ts +8 -233
  543. package/connectors/connect-offalerts/src/api/client.ts +18 -205
  544. package/connectors/connect-offalerts/src/api/index.ts +25 -44
  545. package/connectors/connect-offalerts/src/types/index.ts +7 -233
  546. package/connectors/connect-okta/src/api/client.ts +21 -204
  547. package/connectors/connect-okta/src/api/index.ts +40 -42
  548. package/connectors/connect-okta/src/types/index.ts +10 -233
  549. package/connectors/connect-omnimind/src/api/client.ts +18 -205
  550. package/connectors/connect-omnimind/src/api/index.ts +31 -43
  551. package/connectors/connect-omnimind/src/types/index.ts +7 -233
  552. package/connectors/connect-on2air/src/api/client.ts +18 -205
  553. package/connectors/connect-on2air/src/api/index.ts +26 -44
  554. package/connectors/connect-on2air/src/types/index.ts +7 -233
  555. package/connectors/connect-oneai/src/api/client.ts +19 -209
  556. package/connectors/connect-oneai/src/api/index.ts +36 -39
  557. package/connectors/connect-oneai/src/types/index.ts +7 -233
  558. package/connectors/connect-onesimpleapi/src/api/client.ts +17 -204
  559. package/connectors/connect-onesimpleapi/src/api/index.ts +30 -43
  560. package/connectors/connect-onesimpleapi/src/types/index.ts +8 -233
  561. package/connectors/connect-openai/src/api/chat.ts +2 -2
  562. package/connectors/connect-openai/src/api/images.ts +52 -8
  563. package/connectors/connect-openai/src/types/index.ts +0 -10
  564. package/connectors/connect-ortto/src/api/client.ts +19 -204
  565. package/connectors/connect-ortto/src/api/index.ts +28 -44
  566. package/connectors/connect-ortto/src/types/index.ts +9 -233
  567. package/connectors/connect-oura/src/api/client.ts +16 -205
  568. package/connectors/connect-oura/src/api/index.ts +25 -42
  569. package/connectors/connect-oura/src/types/index.ts +9 -233
  570. package/connectors/connect-papyrs/src/api/client.ts +18 -204
  571. package/connectors/connect-papyrs/src/api/index.ts +30 -43
  572. package/connectors/connect-papyrs/src/types/index.ts +8 -233
  573. package/connectors/connect-paymo/src/api/client.ts +19 -206
  574. package/connectors/connect-paymo/src/api/index.ts +34 -43
  575. package/connectors/connect-paymo/src/types/index.ts +9 -233
  576. package/connectors/connect-personalai/src/api/client.ts +18 -205
  577. package/connectors/connect-personalai/src/api/index.ts +26 -43
  578. package/connectors/connect-personalai/src/types/index.ts +8 -233
  579. package/connectors/connect-phantombuster/src/api/client.ts +18 -205
  580. package/connectors/connect-phantombuster/src/api/index.ts +28 -43
  581. package/connectors/connect-phantombuster/src/types/index.ts +6 -233
  582. package/connectors/connect-planyoonlinebooking/src/api/client.ts +19 -209
  583. package/connectors/connect-planyoonlinebooking/src/api/index.ts +34 -43
  584. package/connectors/connect-planyoonlinebooking/src/types/index.ts +8 -233
  585. package/connectors/connect-plivo/src/api/client.ts +22 -208
  586. package/connectors/connect-plivo/src/api/index.ts +32 -44
  587. package/connectors/connect-plivo/src/types/index.ts +9 -233
  588. package/connectors/connect-posthog/src/api/client.ts +22 -205
  589. package/connectors/connect-posthog/src/api/index.ts +65 -39
  590. package/connectors/connect-posthog/src/types/index.ts +8 -233
  591. package/connectors/connect-practitest/src/api/client.ts +19 -206
  592. package/connectors/connect-practitest/src/api/index.ts +36 -40
  593. package/connectors/connect-practitest/src/types/index.ts +9 -233
  594. package/connectors/connect-predisai/src/api/client.ts +18 -205
  595. package/connectors/connect-predisai/src/api/index.ts +25 -43
  596. package/connectors/connect-predisai/src/types/index.ts +7 -233
  597. package/connectors/connect-prodia/src/api/client.ts +18 -205
  598. package/connectors/connect-prodia/src/api/index.ts +26 -43
  599. package/connectors/connect-prodia/src/types/index.ts +7 -233
  600. package/connectors/connect-profitwell/src/api/client.ts +18 -205
  601. package/connectors/connect-profitwell/src/api/index.ts +28 -44
  602. package/connectors/connect-profitwell/src/types/index.ts +7 -233
  603. package/connectors/connect-projectbubbleproprofsproject/src/api/client.ts +18 -205
  604. package/connectors/connect-projectbubbleproprofsproject/src/api/index.ts +32 -43
  605. package/connectors/connect-projectbubbleproprofsproject/src/types/index.ts +8 -233
  606. package/connectors/connect-pulsetic/src/api/client.ts +18 -205
  607. package/connectors/connect-pulsetic/src/api/index.ts +25 -43
  608. package/connectors/connect-pulsetic/src/types/index.ts +8 -233
  609. package/connectors/connect-pusher/src/api/client.ts +36 -205
  610. package/connectors/connect-pusher/src/api/index.ts +29 -41
  611. package/connectors/connect-pusher/src/types/index.ts +8 -233
  612. package/connectors/connect-pushover/src/api/client.ts +24 -207
  613. package/connectors/connect-pushover/src/api/index.ts +27 -46
  614. package/connectors/connect-pushover/src/types/index.ts +5 -237
  615. package/connectors/connect-qualys/src/api/client.ts +21 -205
  616. package/connectors/connect-qualys/src/api/index.ts +35 -42
  617. package/connectors/connect-qualys/src/types/index.ts +8 -233
  618. package/connectors/connect-quentn/src/api/client.ts +18 -204
  619. package/connectors/connect-quentn/src/api/index.ts +35 -44
  620. package/connectors/connect-quentn/src/types/index.ts +9 -233
  621. package/connectors/connect-questdb/src/api/client.ts +22 -204
  622. package/connectors/connect-questdb/src/api/index.ts +35 -43
  623. package/connectors/connect-questdb/src/types/index.ts +7 -233
  624. package/connectors/connect-quintadb/src/api/client.ts +21 -207
  625. package/connectors/connect-quintadb/src/api/index.ts +32 -43
  626. package/connectors/connect-quintadb/src/types/index.ts +6 -233
  627. package/connectors/connect-rapid7insightvm/src/api/client.ts +19 -205
  628. package/connectors/connect-rapid7insightvm/src/api/index.ts +34 -42
  629. package/connectors/connect-rapid7insightvm/src/types/index.ts +9 -233
  630. package/connectors/connect-raventools/src/api/client.ts +20 -209
  631. package/connectors/connect-raventools/src/api/index.ts +24 -44
  632. package/connectors/connect-raventools/src/types/index.ts +8 -233
  633. package/connectors/connect-rdstationcrm/src/api/client.ts +20 -206
  634. package/connectors/connect-rdstationcrm/src/api/index.ts +34 -43
  635. package/connectors/connect-rdstationcrm/src/types/index.ts +9 -233
  636. package/connectors/connect-realphonevalidation/src/api/client.ts +15 -205
  637. package/connectors/connect-realphonevalidation/src/api/index.ts +21 -43
  638. package/connectors/connect-realphonevalidation/src/types/index.ts +5 -233
  639. package/connectors/connect-recharge/src/api/client.ts +19 -206
  640. package/connectors/connect-recharge/src/api/index.ts +35 -42
  641. package/connectors/connect-recharge/src/types/index.ts +10 -233
  642. package/connectors/connect-relevanceai/src/api/client.ts +21 -204
  643. package/connectors/connect-relevanceai/src/api/index.ts +28 -41
  644. package/connectors/connect-relevanceai/src/types/index.ts +8 -233
  645. package/connectors/connect-relinkurlshortener/src/api/client.ts +18 -205
  646. package/connectors/connect-relinkurlshortener/src/api/index.ts +25 -44
  647. package/connectors/connect-relinkurlshortener/src/types/index.ts +6 -233
  648. package/connectors/connect-reply/src/api/client.ts +18 -205
  649. package/connectors/connect-reply/src/api/index.ts +31 -44
  650. package/connectors/connect-reply/src/types/index.ts +9 -233
  651. package/connectors/connect-ritekit/src/api/client.ts +15 -206
  652. package/connectors/connect-ritekit/src/api/index.ts +32 -43
  653. package/connectors/connect-ritekit/src/types/index.ts +7 -233
  654. package/connectors/connect-rocketchat/src/api/client.ts +20 -205
  655. package/connectors/connect-rocketchat/src/api/index.ts +39 -41
  656. package/connectors/connect-rocketchat/src/types/index.ts +8 -233
  657. package/connectors/connect-rundeck/src/api/client.ts +20 -205
  658. package/connectors/connect-rundeck/src/api/index.ts +30 -43
  659. package/connectors/connect-rundeck/src/types/index.ts +8 -233
  660. package/connectors/connect-salesforce/src/api/client.ts +49 -0
  661. package/connectors/connect-salesforce/src/api/index.ts +18 -15
  662. package/connectors/connect-samsungsmartthings/src/api/client.ts +19 -206
  663. package/connectors/connect-samsungsmartthings/src/api/index.ts +26 -44
  664. package/connectors/connect-samsungsmartthings/src/types/index.ts +10 -233
  665. package/connectors/connect-scrapeitcloud/src/api/client.ts +18 -205
  666. package/connectors/connect-scrapeitcloud/src/api/index.ts +22 -43
  667. package/connectors/connect-scrapeitcloud/src/types/index.ts +7 -233
  668. package/connectors/connect-seamlessai/src/api/client.ts +18 -205
  669. package/connectors/connect-seamlessai/src/api/index.ts +28 -43
  670. package/connectors/connect-seamlessai/src/types/index.ts +8 -233
  671. package/connectors/connect-sekoia/src/api/client.ts +18 -205
  672. package/connectors/connect-sekoia/src/api/index.ts +31 -41
  673. package/connectors/connect-sekoia/src/types/index.ts +9 -233
  674. package/connectors/connect-sellix/src/api/client.ts +18 -205
  675. package/connectors/connect-sellix/src/api/index.ts +32 -42
  676. package/connectors/connect-sellix/src/types/index.ts +10 -233
  677. package/connectors/connect-servicenow/src/api/client.ts +21 -204
  678. package/connectors/connect-servicenow/src/api/index.ts +45 -41
  679. package/connectors/connect-servicenow/src/types/index.ts +9 -233
  680. package/connectors/connect-shopify/src/api/products.ts +79 -2
  681. package/connectors/connect-shuffler/src/api/client.ts +18 -204
  682. package/connectors/connect-shuffler/src/api/index.ts +29 -44
  683. package/connectors/connect-shuffler/src/types/index.ts +8 -233
  684. package/connectors/connect-signaturit/src/api/client.ts +19 -205
  685. package/connectors/connect-signaturit/src/api/index.ts +30 -42
  686. package/connectors/connect-signaturit/src/types/index.ts +10 -233
  687. package/connectors/connect-simplehash/src/api/client.ts +14 -204
  688. package/connectors/connect-simplehash/src/api/index.ts +29 -43
  689. package/connectors/connect-simplehash/src/types/index.ts +7 -233
  690. package/connectors/connect-simplelocalize/src/api/client.ts +18 -205
  691. package/connectors/connect-simplelocalize/src/api/index.ts +33 -42
  692. package/connectors/connect-simplelocalize/src/types/index.ts +13 -235
  693. package/connectors/connect-sitespeakai/src/api/client.ts +18 -205
  694. package/connectors/connect-sitespeakai/src/api/index.ts +29 -41
  695. package/connectors/connect-sitespeakai/src/types/index.ts +8 -233
  696. package/connectors/connect-smaily/src/api/client.ts +19 -205
  697. package/connectors/connect-smaily/src/api/index.ts +29 -44
  698. package/connectors/connect-smaily/src/types/index.ts +8 -233
  699. package/connectors/connect-snatchbot/src/api/client.ts +19 -206
  700. package/connectors/connect-snatchbot/src/api/index.ts +25 -42
  701. package/connectors/connect-snatchbot/src/types/index.ts +8 -233
  702. package/connectors/connect-solvedata/src/api/client.ts +18 -205
  703. package/connectors/connect-solvedata/src/api/index.ts +26 -43
  704. package/connectors/connect-solvedata/src/types/index.ts +7 -233
  705. package/connectors/connect-specter/src/api/client.ts +24 -209
  706. package/connectors/connect-specter/src/api/index.ts +27 -43
  707. package/connectors/connect-specter/src/types/index.ts +10 -233
  708. package/connectors/connect-spike/src/api/client.ts +18 -205
  709. package/connectors/connect-spike/src/api/index.ts +28 -45
  710. package/connectors/connect-spike/src/types/index.ts +8 -233
  711. package/connectors/connect-sportsdata/src/api/client.ts +14 -206
  712. package/connectors/connect-sportsdata/src/api/index.ts +32 -46
  713. package/connectors/connect-sportsdata/src/types/index.ts +8 -233
  714. package/connectors/connect-sslmatecertspotterapi/src/api/client.ts +15 -204
  715. package/connectors/connect-sslmatecertspotterapi/src/api/index.ts +23 -43
  716. package/connectors/connect-sslmatecertspotterapi/src/types/index.ts +5 -233
  717. package/connectors/connect-starton/src/api/client.ts +18 -205
  718. package/connectors/connect-starton/src/api/index.ts +34 -42
  719. package/connectors/connect-starton/src/types/index.ts +8 -233
  720. package/connectors/connect-statuscake/src/api/client.ts +18 -205
  721. package/connectors/connect-statuscake/src/api/index.ts +30 -44
  722. package/connectors/connect-statuscake/src/types/index.ts +9 -233
  723. package/connectors/connect-strapi/src/api/client.ts +21 -204
  724. package/connectors/connect-strapi/src/api/index.ts +38 -42
  725. package/connectors/connect-strapi/src/types/index.ts +9 -233
  726. package/connectors/connect-supernormal/src/api/client.ts +18 -205
  727. package/connectors/connect-supernormal/src/api/index.ts +28 -43
  728. package/connectors/connect-supernormal/src/types/index.ts +8 -233
  729. package/connectors/connect-supportivekoala/src/api/client.ts +18 -205
  730. package/connectors/connect-supportivekoala/src/api/index.ts +21 -43
  731. package/connectors/connect-supportivekoala/src/types/index.ts +7 -233
  732. package/connectors/connect-surveysparrow/src/api/client.ts +20 -210
  733. package/connectors/connect-surveysparrow/src/api/index.ts +39 -42
  734. package/connectors/connect-surveysparrow/src/types/index.ts +7 -233
  735. package/connectors/connect-swagup/src/api/client.ts +18 -205
  736. package/connectors/connect-swagup/src/api/index.ts +30 -42
  737. package/connectors/connect-swagup/src/types/index.ts +8 -233
  738. package/connectors/connect-switchboard/src/api/client.ts +18 -205
  739. package/connectors/connect-switchboard/src/api/index.ts +27 -43
  740. package/connectors/connect-switchboard/src/types/index.ts +7 -233
  741. package/connectors/connect-syncly/src/api/client.ts +18 -205
  742. package/connectors/connect-syncly/src/api/index.ts +21 -44
  743. package/connectors/connect-syncly/src/types/index.ts +8 -233
  744. package/connectors/connect-syncromsp/src/api/client.ts +19 -204
  745. package/connectors/connect-syncromsp/src/api/index.ts +35 -42
  746. package/connectors/connect-syncromsp/src/types/index.ts +8 -233
  747. package/connectors/connect-talentlms/src/api/client.ts +19 -205
  748. package/connectors/connect-talentlms/src/api/index.ts +30 -42
  749. package/connectors/connect-talentlms/src/types/index.ts +8 -233
  750. package/connectors/connect-tdameritrade/src/api/client.ts +22 -205
  751. package/connectors/connect-tdameritrade/src/api/index.ts +32 -41
  752. package/connectors/connect-tdameritrade/src/types/index.ts +9 -233
  753. package/connectors/connect-teamdeck/src/api/client.ts +20 -210
  754. package/connectors/connect-teamdeck/src/api/index.ts +39 -41
  755. package/connectors/connect-teamdeck/src/types/index.ts +8 -233
  756. package/connectors/connect-teamgate/src/api/client.ts +21 -206
  757. package/connectors/connect-teamgate/src/api/index.ts +37 -43
  758. package/connectors/connect-teamgate/src/types/index.ts +9 -233
  759. package/connectors/connect-teamup/src/api/client.ts +24 -209
  760. package/connectors/connect-teamup/src/api/index.ts +25 -45
  761. package/connectors/connect-teamup/src/types/index.ts +6 -233
  762. package/connectors/connect-testmonitor/src/api/client.ts +19 -205
  763. package/connectors/connect-testmonitor/src/api/index.ts +38 -42
  764. package/connectors/connect-testmonitor/src/types/index.ts +8 -233
  765. package/connectors/connect-textcortexai/src/api/client.ts +18 -205
  766. package/connectors/connect-textcortexai/src/api/index.ts +33 -43
  767. package/connectors/connect-textcortexai/src/types/index.ts +7 -233
  768. package/connectors/connect-textmagic/src/api/client.ts +20 -205
  769. package/connectors/connect-textmagic/src/api/index.ts +34 -43
  770. package/connectors/connect-textmagic/src/types/index.ts +9 -233
  771. package/connectors/connect-thankster/src/api/client.ts +18 -205
  772. package/connectors/connect-thankster/src/api/index.ts +27 -43
  773. package/connectors/connect-thankster/src/types/index.ts +8 -233
  774. package/connectors/connect-thecustomerfactor/src/api/client.ts +18 -205
  775. package/connectors/connect-thecustomerfactor/src/api/index.ts +34 -42
  776. package/connectors/connect-thecustomerfactor/src/types/index.ts +7 -233
  777. package/connectors/connect-theleap/src/api/client.ts +18 -205
  778. package/connectors/connect-theleap/src/api/index.ts +23 -43
  779. package/connectors/connect-theleap/src/types/index.ts +6 -233
  780. package/connectors/connect-thoughtfulgpt/src/api/client.ts +18 -205
  781. package/connectors/connect-thoughtfulgpt/src/api/index.ts +22 -44
  782. package/connectors/connect-thoughtfulgpt/src/types/index.ts +7 -233
  783. package/connectors/connect-tilda/src/api/client.ts +18 -206
  784. package/connectors/connect-tilda/src/api/index.ts +22 -46
  785. package/connectors/connect-tilda/src/types/index.ts +7 -233
  786. package/connectors/connect-tisanelabs/src/api/client.ts +13 -206
  787. package/connectors/connect-tisanelabs/src/api/index.ts +26 -41
  788. package/connectors/connect-tisanelabs/src/types/index.ts +8 -233
  789. package/connectors/connect-trackvia/src/api/client.ts +22 -206
  790. package/connectors/connect-trackvia/src/api/index.ts +35 -43
  791. package/connectors/connect-trackvia/src/types/index.ts +9 -233
  792. package/connectors/connect-travisci/src/api/client.ts +19 -205
  793. package/connectors/connect-travisci/src/api/index.ts +28 -43
  794. package/connectors/connect-travisci/src/types/index.ts +7 -233
  795. package/connectors/connect-turbohire/src/api/client.ts +18 -205
  796. package/connectors/connect-turbohire/src/api/index.ts +34 -42
  797. package/connectors/connect-turbohire/src/types/index.ts +8 -233
  798. package/connectors/connect-tuskr/src/api/client.ts +19 -206
  799. package/connectors/connect-tuskr/src/api/index.ts +37 -42
  800. package/connectors/connect-tuskr/src/types/index.ts +8 -233
  801. package/connectors/connect-unisender/src/api/client.ts +19 -209
  802. package/connectors/connect-unisender/src/api/index.ts +37 -42
  803. package/connectors/connect-unisender/src/types/index.ts +10 -233
  804. package/connectors/connect-uproc/src/api/client.ts +18 -205
  805. package/connectors/connect-uproc/src/api/index.ts +25 -43
  806. package/connectors/connect-uproc/src/types/index.ts +7 -233
  807. package/connectors/connect-uptimerobot/src/api/client.ts +22 -208
  808. package/connectors/connect-uptimerobot/src/api/index.ts +43 -39
  809. package/connectors/connect-uptimerobot/src/types/index.ts +8 -233
  810. package/connectors/connect-uservoice/src/api/client.ts +19 -205
  811. package/connectors/connect-uservoice/src/api/index.ts +31 -43
  812. package/connectors/connect-uservoice/src/types/index.ts +13 -235
  813. package/connectors/connect-verifalia/src/api/client.ts +20 -206
  814. package/connectors/connect-verifalia/src/api/index.ts +31 -41
  815. package/connectors/connect-verifalia/src/types/index.ts +6 -233
  816. package/connectors/connect-virustotal/src/api/client.ts +21 -204
  817. package/connectors/connect-virustotal/src/api/index.ts +27 -42
  818. package/connectors/connect-virustotal/src/types/index.ts +8 -233
  819. package/connectors/connect-vivifyscrum/src/api/client.ts +19 -206
  820. package/connectors/connect-vivifyscrum/src/api/index.ts +28 -44
  821. package/connectors/connect-vivifyscrum/src/types/index.ts +9 -233
  822. package/connectors/connect-voicit/src/api/client.ts +18 -205
  823. package/connectors/connect-voicit/src/api/index.ts +19 -45
  824. package/connectors/connect-voicit/src/types/index.ts +7 -233
  825. package/connectors/connect-vowel/src/api/client.ts +18 -205
  826. package/connectors/connect-vowel/src/api/index.ts +22 -44
  827. package/connectors/connect-vowel/src/types/index.ts +8 -233
  828. package/connectors/connect-watchsignals/src/api/client.ts +15 -205
  829. package/connectors/connect-watchsignals/src/api/index.ts +24 -42
  830. package/connectors/connect-watchsignals/src/types/index.ts +8 -233
  831. package/connectors/connect-wavelineextract/src/api/client.ts +18 -205
  832. package/connectors/connect-wavelineextract/src/api/index.ts +21 -45
  833. package/connectors/connect-wavelineextract/src/types/index.ts +6 -233
  834. package/connectors/connect-webinarjam/src/api/client.ts +15 -206
  835. package/connectors/connect-webinarjam/src/api/index.ts +18 -44
  836. package/connectors/connect-webinarjam/src/types/index.ts +6 -233
  837. package/connectors/connect-wikipedia/src/api/client.ts +22 -202
  838. package/connectors/connect-wikipedia/src/api/index.ts +49 -43
  839. package/connectors/connect-wikipedia/src/types/index.ts +22 -228
  840. package/connectors/connect-wubookratechecker/src/api/client.ts +14 -204
  841. package/connectors/connect-wubookratechecker/src/api/index.ts +18 -46
  842. package/connectors/connect-wubookratechecker/src/types/index.ts +6 -233
  843. package/connectors/connect-x/src/api/oauth.ts +28 -58
  844. package/connectors/connect-xai/src/api/chat.ts +2 -1
  845. package/connectors/connect-yodiz/src/api/client.ts +20 -205
  846. package/connectors/connect-yodiz/src/api/index.ts +36 -41
  847. package/connectors/connect-yodiz/src/types/index.ts +8 -233
  848. package/connectors/connect-yourls/src/api/client.ts +25 -211
  849. package/connectors/connect-yourls/src/api/index.ts +33 -41
  850. package/connectors/connect-yourls/src/types/index.ts +7 -233
  851. package/connectors/connect-zammad/src/api/client.ts +19 -208
  852. package/connectors/connect-zammad/src/api/index.ts +32 -44
  853. package/connectors/connect-zammad/src/types/index.ts +8 -233
  854. package/connectors/connect-zohobooks/src/api/client.ts +21 -205
  855. package/connectors/connect-zohobooks/src/api/index.ts +36 -42
  856. package/connectors/connect-zohobooks/src/types/index.ts +10 -233
  857. package/connectors/connect-zohocrm/src/api/client.ts +21 -204
  858. package/connectors/connect-zohocrm/src/api/index.ts +36 -41
  859. package/connectors/connect-zohocrm/src/types/index.ts +10 -233
  860. package/connectors/connect-zohoworkdrive/src/api/client.ts +24 -206
  861. package/connectors/connect-zohoworkdrive/src/api/index.ts +31 -42
  862. package/connectors/connect-zohoworkdrive/src/types/index.ts +7 -233
  863. package/connectors/connect-zoom/src/api/users.ts +95 -1
  864. package/connectors/connect-zulip/src/api/client.ts +22 -206
  865. package/connectors/connect-zulip/src/api/index.ts +35 -44
  866. package/connectors/connect-zulip/src/types/index.ts +7 -233
  867. package/dashboard/dist/assets/index-DmR_QNtT.css +1 -0
  868. package/dashboard/dist/assets/index-Dp-apHbC.js +284 -0
  869. package/dashboard/dist/index.html +2 -2
  870. package/dist/db/agents.d.ts +38 -0
  871. package/dist/db/agents.test.d.ts +1 -0
  872. package/dist/db/database.d.ts +7 -0
  873. package/dist/db/jobs.d.ts +53 -0
  874. package/dist/db/jobs.test.d.ts +1 -0
  875. package/dist/db/locks.d.ts +59 -0
  876. package/dist/db/locks.test.d.ts +1 -0
  877. package/dist/db/promotions.d.ts +5 -0
  878. package/dist/db/promotions.test.d.ts +1 -0
  879. package/dist/db/rate.d.ts +57 -0
  880. package/dist/db/rate.test.d.ts +1 -0
  881. package/dist/db/usage.d.ts +17 -0
  882. package/dist/db/usage.test.d.ts +1 -0
  883. package/dist/db/workflows.d.ts +26 -0
  884. package/dist/db/workflows.test.d.ts +1 -0
  885. package/dist/index.d.ts +1 -1
  886. package/dist/index.js +319 -22
  887. package/dist/lib/fuzzy.d.ts +16 -0
  888. package/dist/lib/fuzzy.test.d.ts +1 -0
  889. package/dist/lib/installer.d.ts +6 -7
  890. package/dist/lib/llm.d.ts +38 -0
  891. package/dist/lib/llm.test.d.ts +1 -0
  892. package/dist/lib/lock.d.ts +22 -0
  893. package/dist/lib/lock.test.d.ts +1 -0
  894. package/dist/lib/registry.d.ts +22 -1
  895. package/dist/lib/scheduler.d.ts +20 -0
  896. package/dist/lib/scheduler.test.d.ts +1 -0
  897. package/dist/lib/strip.d.ts +20 -0
  898. package/dist/lib/strip.test.d.ts +1 -0
  899. package/dist/lib/synonyms.d.ts +12 -0
  900. package/dist/lib/synonyms.test.d.ts +1 -0
  901. package/dist/lib/workflow-runner.d.ts +22 -0
  902. package/dist/server/auth.d.ts +4 -2
  903. package/package.json +2 -1
  904. package/connectors/connect-godaddy/src/api/example.ts +0 -48
  905. package/connectors/connect-godaddy/src/utils/auth.ts +0 -274
  906. package/connectors/connect-godaddy/src/utils/bulk.ts +0 -212
  907. package/connectors/connect-godaddy/src/utils/settings.ts +0 -114
  908. package/connectors/connect-godaddy/src/utils/storage.ts +0 -198
  909. package/connectors/connect-huggingface/src/api/example.ts +0 -48
  910. package/connectors/connect-yousign/CLAUDE.md +0 -48
  911. package/connectors/connect-yousign/src/api/client.ts +0 -119
  912. package/connectors/connect-yousign/src/api/index.ts +0 -221
  913. package/connectors/connect-yousign/src/cli/index.ts +0 -555
  914. package/connectors/connect-yousign/src/index.ts +0 -21
  915. package/connectors/connect-yousign/src/types/index.ts +0 -275
  916. package/connectors/connect-yousign/src/utils/config.ts +0 -121
  917. package/dashboard/dist/assets/index-CSlS3oNV.css +0 -1
  918. package/dashboard/dist/assets/index-sSIkMXYs.js +0 -284
  919. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/bun/LICENSE +0 -0
  920. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/bun/index.d.ts +0 -0
  921. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/LICENSE +0 -0
  922. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/README.md +0 -0
  923. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/assert/strict.d.ts +0 -0
  924. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/assert.d.ts +0 -0
  925. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/async_hooks.d.ts +0 -0
  926. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/buffer.buffer.d.ts +0 -0
  927. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/buffer.d.ts +0 -0
  928. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/child_process.d.ts +0 -0
  929. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/cluster.d.ts +0 -0
  930. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/compatibility/iterators.d.ts +0 -0
  931. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/console.d.ts +0 -0
  932. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/constants.d.ts +0 -0
  933. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/crypto.d.ts +0 -0
  934. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/dgram.d.ts +0 -0
  935. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/diagnostics_channel.d.ts +0 -0
  936. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/dns/promises.d.ts +0 -0
  937. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/dns.d.ts +0 -0
  938. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/domain.d.ts +0 -0
  939. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/events.d.ts +0 -0
  940. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/fs/promises.d.ts +0 -0
  941. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/fs.d.ts +0 -0
  942. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/globals.d.ts +0 -0
  943. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/globals.typedarray.d.ts +0 -0
  944. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/http.d.ts +0 -0
  945. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/http2.d.ts +0 -0
  946. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/https.d.ts +0 -0
  947. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/index.d.ts +0 -0
  948. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/inspector/promises.d.ts +0 -0
  949. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/inspector.d.ts +0 -0
  950. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/inspector.generated.d.ts +0 -0
  951. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/module.d.ts +0 -0
  952. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/net.d.ts +0 -0
  953. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/os.d.ts +0 -0
  954. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/package.json +0 -0
  955. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/path/posix.d.ts +0 -0
  956. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/path/win32.d.ts +0 -0
  957. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/path.d.ts +0 -0
  958. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/perf_hooks.d.ts +0 -0
  959. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/process.d.ts +0 -0
  960. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/punycode.d.ts +0 -0
  961. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/querystring.d.ts +0 -0
  962. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/quic.d.ts +0 -0
  963. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/readline/promises.d.ts +0 -0
  964. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/readline.d.ts +0 -0
  965. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/repl.d.ts +0 -0
  966. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/sea.d.ts +0 -0
  967. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/sqlite.d.ts +0 -0
  968. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/stream/consumers.d.ts +0 -0
  969. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/stream/promises.d.ts +0 -0
  970. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/stream/web.d.ts +0 -0
  971. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/stream.d.ts +0 -0
  972. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/string_decoder.d.ts +0 -0
  973. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/test/reporters.d.ts +0 -0
  974. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/test.d.ts +0 -0
  975. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/timers/promises.d.ts +0 -0
  976. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/timers.d.ts +0 -0
  977. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/tls.d.ts +0 -0
  978. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/trace_events.d.ts +0 -0
  979. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -0
  980. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +0 -0
  981. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -0
  982. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/ts5.6/index.d.ts +0 -0
  983. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +0 -0
  984. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/ts5.7/index.d.ts +0 -0
  985. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/tty.d.ts +0 -0
  986. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/url.d.ts +0 -0
  987. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/util/types.d.ts +0 -0
  988. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/util.d.ts +0 -0
  989. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/v8.d.ts +0 -0
  990. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/vm.d.ts +0 -0
  991. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/wasi.d.ts +0 -0
  992. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -0
  993. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/blob.d.ts +0 -0
  994. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/console.d.ts +0 -0
  995. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/crypto.d.ts +0 -0
  996. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/domexception.d.ts +0 -0
  997. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/encoding.d.ts +0 -0
  998. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/events.d.ts +0 -0
  999. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/fetch.d.ts +0 -0
  1000. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/importmeta.d.ts +0 -0
  1001. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/messaging.d.ts +0 -0
  1002. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/navigator.d.ts +0 -0
  1003. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/performance.d.ts +0 -0
  1004. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/storage.d.ts +0 -0
  1005. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/streams.d.ts +0 -0
  1006. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/timers.d.ts +0 -0
  1007. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/web-globals/url.d.ts +0 -0
  1008. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/worker_threads.d.ts +0 -0
  1009. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/@types/node/zlib.d.ts +0 -0
  1010. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/CLAUDE.md +0 -0
  1011. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/README.md +0 -0
  1012. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/bun.ns.d.ts +0 -0
  1013. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/bundle.d.ts +0 -0
  1014. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/deprecated.d.ts +0 -0
  1015. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/devserver.d.ts +0 -0
  1016. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/README.md +0 -0
  1017. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/bytecode.mdx +0 -0
  1018. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/css.mdx +0 -0
  1019. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/esbuild.mdx +0 -0
  1020. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/hot-reloading.mdx +0 -0
  1021. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/html-static.mdx +0 -0
  1022. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/index.mdx +0 -0
  1023. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/loaders.mdx +0 -0
  1024. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/macros.mdx +0 -0
  1025. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/minifier.mdx +0 -0
  1026. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/plugins.mdx +0 -0
  1027. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/bundler/standalone-html.mdx +0 -0
  1028. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/feedback.mdx +0 -0
  1029. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/arraybuffer-to-array.mdx +0 -0
  1030. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/arraybuffer-to-blob.mdx +0 -0
  1031. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/arraybuffer-to-buffer.mdx +0 -0
  1032. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/arraybuffer-to-string.mdx +0 -0
  1033. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/arraybuffer-to-typedarray.mdx +0 -0
  1034. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/blob-to-arraybuffer.mdx +0 -0
  1035. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/blob-to-dataview.mdx +0 -0
  1036. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/blob-to-stream.mdx +0 -0
  1037. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/blob-to-string.mdx +0 -0
  1038. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/blob-to-typedarray.mdx +0 -0
  1039. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/buffer-to-arraybuffer.mdx +0 -0
  1040. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/buffer-to-blob.mdx +0 -0
  1041. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/buffer-to-readablestream.mdx +0 -0
  1042. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/buffer-to-string.mdx +0 -0
  1043. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/buffer-to-typedarray.mdx +0 -0
  1044. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/dataview-to-string.mdx +0 -0
  1045. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/typedarray-to-arraybuffer.mdx +0 -0
  1046. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/typedarray-to-blob.mdx +0 -0
  1047. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/typedarray-to-buffer.mdx +0 -0
  1048. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/typedarray-to-dataview.mdx +0 -0
  1049. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/typedarray-to-readablestream.mdx +0 -0
  1050. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/binary/typedarray-to-string.mdx +0 -0
  1051. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/deployment/aws-lambda.mdx +0 -0
  1052. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/deployment/digital-ocean.mdx +0 -0
  1053. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/deployment/google-cloud-run.mdx +0 -0
  1054. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/deployment/railway.mdx +0 -0
  1055. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/deployment/render.mdx +0 -0
  1056. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/deployment/vercel.mdx +0 -0
  1057. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/astro.mdx +0 -0
  1058. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/discordjs.mdx +0 -0
  1059. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/docker.mdx +0 -0
  1060. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/drizzle.mdx +0 -0
  1061. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/elysia.mdx +0 -0
  1062. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/express.mdx +0 -0
  1063. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/gel.mdx +0 -0
  1064. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/hono.mdx +0 -0
  1065. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/mongoose.mdx +0 -0
  1066. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/neon-drizzle.mdx +0 -0
  1067. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/neon-serverless-postgres.mdx +0 -0
  1068. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/nextjs.mdx +0 -0
  1069. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/nuxt.mdx +0 -0
  1070. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/pm2.mdx +0 -0
  1071. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/prisma-postgres.mdx +0 -0
  1072. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/prisma.mdx +0 -0
  1073. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/qwik.mdx +0 -0
  1074. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/react.mdx +0 -0
  1075. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/remix.mdx +0 -0
  1076. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/sentry.mdx +0 -0
  1077. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/solidstart.mdx +0 -0
  1078. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/ssr-react.mdx +0 -0
  1079. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/stric.mdx +0 -0
  1080. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/sveltekit.mdx +0 -0
  1081. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/systemd.mdx +0 -0
  1082. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/tanstack-start.mdx +0 -0
  1083. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/upstash.mdx +0 -0
  1084. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/ecosystem/vite.mdx +0 -0
  1085. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/html-rewriter/extract-links.mdx +0 -0
  1086. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/html-rewriter/extract-social-meta.mdx +0 -0
  1087. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/cluster.mdx +0 -0
  1088. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/fetch-unix.mdx +0 -0
  1089. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/fetch.mdx +0 -0
  1090. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/file-uploads.mdx +0 -0
  1091. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/hot.mdx +0 -0
  1092. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/proxy.mdx +0 -0
  1093. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/server.mdx +0 -0
  1094. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/simple.mdx +0 -0
  1095. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/stream-file.mdx +0 -0
  1096. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/stream-iterator.mdx +0 -0
  1097. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/stream-node-streams-in-bun.mdx +0 -0
  1098. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/http/tls.mdx +0 -0
  1099. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/index.mdx +0 -0
  1100. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/add-dev.mdx +0 -0
  1101. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/add-git.mdx +0 -0
  1102. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/add-optional.mdx +0 -0
  1103. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/add-peer.mdx +0 -0
  1104. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/add-tarball.mdx +0 -0
  1105. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/add.mdx +0 -0
  1106. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/azure-artifacts.mdx +0 -0
  1107. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/cicd.mdx +0 -0
  1108. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/custom-registry.mdx +0 -0
  1109. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/from-npm-install-to-bun-install.mdx +0 -0
  1110. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/git-diff-bun-lockfile.mdx +0 -0
  1111. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/jfrog-artifactory.mdx +0 -0
  1112. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/npm-alias.mdx +0 -0
  1113. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/registry-scope.mdx +0 -0
  1114. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/trusted.mdx +0 -0
  1115. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/workspaces.mdx +0 -0
  1116. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/install/yarnlock.mdx +0 -0
  1117. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/process/argv.mdx +0 -0
  1118. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/process/ctrl-c.mdx +0 -0
  1119. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/process/ipc.mdx +0 -0
  1120. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/process/nanoseconds.mdx +0 -0
  1121. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/process/os-signals.mdx +0 -0
  1122. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/process/spawn-stderr.mdx +0 -0
  1123. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/process/spawn-stdout.mdx +0 -0
  1124. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/process/spawn.mdx +0 -0
  1125. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/process/stdin.mdx +0 -0
  1126. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/read-file/arraybuffer.mdx +0 -0
  1127. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/read-file/buffer.mdx +0 -0
  1128. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/read-file/exists.mdx +0 -0
  1129. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/read-file/json.mdx +0 -0
  1130. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/read-file/mime.mdx +0 -0
  1131. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/read-file/stream.mdx +0 -0
  1132. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/read-file/string.mdx +0 -0
  1133. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/read-file/uint8array.mdx +0 -0
  1134. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/read-file/watch.mdx +0 -0
  1135. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/build-time-constants.mdx +0 -0
  1136. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/cicd.mdx +0 -0
  1137. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/codesign-macos-executable.mdx +0 -0
  1138. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/define-constant.mdx +0 -0
  1139. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/delete-directory.mdx +0 -0
  1140. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/delete-file.mdx +0 -0
  1141. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/heap-snapshot.mdx +0 -0
  1142. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/import-html.mdx +0 -0
  1143. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/import-json.mdx +0 -0
  1144. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/import-json5.mdx +0 -0
  1145. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/import-toml.mdx +0 -0
  1146. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/import-yaml.mdx +0 -0
  1147. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/read-env.mdx +0 -0
  1148. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/set-env.mdx +0 -0
  1149. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/shell.mdx +0 -0
  1150. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/timezone.mdx +0 -0
  1151. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/tsconfig-paths.mdx +0 -0
  1152. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/typescript.mdx +0 -0
  1153. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/vscode-debugger.mdx +0 -0
  1154. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/runtime/web-debugger.mdx +0 -0
  1155. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/node-readable-to-arraybuffer.mdx +0 -0
  1156. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/node-readable-to-blob.mdx +0 -0
  1157. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/node-readable-to-json.mdx +0 -0
  1158. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/node-readable-to-string.mdx +0 -0
  1159. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/node-readable-to-uint8array.mdx +0 -0
  1160. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/to-array.mdx +0 -0
  1161. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/to-arraybuffer.mdx +0 -0
  1162. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/to-blob.mdx +0 -0
  1163. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/to-buffer.mdx +0 -0
  1164. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/to-json.mdx +0 -0
  1165. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/to-string.mdx +0 -0
  1166. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/streams/to-typedarray.mdx +0 -0
  1167. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/bail.mdx +0 -0
  1168. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/concurrent-test-glob.mdx +0 -0
  1169. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/coverage-threshold.mdx +0 -0
  1170. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/coverage.mdx +0 -0
  1171. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/happy-dom.mdx +0 -0
  1172. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/migrate-from-jest.mdx +0 -0
  1173. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/mock-clock.mdx +0 -0
  1174. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/mock-functions.mdx +0 -0
  1175. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/rerun-each.mdx +0 -0
  1176. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/run-tests.mdx +0 -0
  1177. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/skip-tests.mdx +0 -0
  1178. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/snapshot.mdx +0 -0
  1179. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/spy-on.mdx +0 -0
  1180. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/svelte-test.mdx +0 -0
  1181. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/testing-library.mdx +0 -0
  1182. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/timeout.mdx +0 -0
  1183. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/todo-tests.mdx +0 -0
  1184. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/update-snapshots.mdx +0 -0
  1185. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/test/watch-mode.mdx +0 -0
  1186. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/base64.mdx +0 -0
  1187. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/deep-equals.mdx +0 -0
  1188. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/deflate.mdx +0 -0
  1189. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/detect-bun.mdx +0 -0
  1190. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/entrypoint.mdx +0 -0
  1191. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/escape-html.mdx +0 -0
  1192. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/file-url-to-path.mdx +0 -0
  1193. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/gzip.mdx +0 -0
  1194. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/hash-a-password.mdx +0 -0
  1195. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/import-meta-dir.mdx +0 -0
  1196. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/import-meta-file.mdx +0 -0
  1197. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/import-meta-path.mdx +0 -0
  1198. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/javascript-uuid.mdx +0 -0
  1199. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/main.mdx +0 -0
  1200. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/path-to-file-url.mdx +0 -0
  1201. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/sleep.mdx +0 -0
  1202. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/upgrade.mdx +0 -0
  1203. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/version.mdx +0 -0
  1204. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/util/which-path-to-executable-bin.mdx +0 -0
  1205. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/websocket/compression.mdx +0 -0
  1206. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/websocket/context.mdx +0 -0
  1207. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/websocket/pubsub.mdx +0 -0
  1208. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/websocket/simple.mdx +0 -0
  1209. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/append.mdx +0 -0
  1210. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/basic.mdx +0 -0
  1211. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/blob.mdx +0 -0
  1212. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/cat.mdx +0 -0
  1213. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/file-cp.mdx +0 -0
  1214. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/filesink.mdx +0 -0
  1215. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/response.mdx +0 -0
  1216. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/stdout.mdx +0 -0
  1217. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/stream.mdx +0 -0
  1218. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/guides/write-file/unlink.mdx +0 -0
  1219. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/index.mdx +0 -0
  1220. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/installation.mdx +0 -0
  1221. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/bunx.mdx +0 -0
  1222. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/catalogs.mdx +0 -0
  1223. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/add.mdx +0 -0
  1224. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/audit.mdx +0 -0
  1225. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/info.mdx +0 -0
  1226. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/install.mdx +0 -0
  1227. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/link.mdx +0 -0
  1228. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/outdated.mdx +0 -0
  1229. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/patch.mdx +0 -0
  1230. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/pm.mdx +0 -0
  1231. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/publish.mdx +0 -0
  1232. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/remove.mdx +0 -0
  1233. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/update.mdx +0 -0
  1234. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/cli/why.mdx +0 -0
  1235. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/filter.mdx +0 -0
  1236. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/global-cache.mdx +0 -0
  1237. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/isolated-installs.mdx +0 -0
  1238. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/lifecycle.mdx +0 -0
  1239. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/lockfile.mdx +0 -0
  1240. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/npmrc.mdx +0 -0
  1241. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/overrides.mdx +0 -0
  1242. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/scopes-registries.mdx +0 -0
  1243. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/security-scanner-api.mdx +0 -0
  1244. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/pm/workspaces.mdx +0 -0
  1245. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/project/benchmarking.mdx +0 -0
  1246. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/project/bindgen.mdx +0 -0
  1247. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/project/building-windows.mdx +0 -0
  1248. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/project/contributing.mdx +0 -0
  1249. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/project/feedback.mdx +0 -0
  1250. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/project/license.mdx +0 -0
  1251. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/project/roadmap.mdx +0 -0
  1252. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/quickstart.mdx +0 -0
  1253. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/archive.mdx +0 -0
  1254. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/auto-install.mdx +0 -0
  1255. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/binary-data.mdx +0 -0
  1256. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/c-compiler.mdx +0 -0
  1257. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/child-process.mdx +0 -0
  1258. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/color.mdx +0 -0
  1259. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/console.mdx +0 -0
  1260. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/cookies.mdx +0 -0
  1261. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/debugger.mdx +0 -0
  1262. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/environment-variables.mdx +0 -0
  1263. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/ffi.mdx +0 -0
  1264. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/file-io.mdx +0 -0
  1265. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/file-system-router.mdx +0 -0
  1266. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/file-types.mdx +0 -0
  1267. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/glob.mdx +0 -0
  1268. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/globals.mdx +0 -0
  1269. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/html-rewriter.mdx +0 -0
  1270. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/http/cookies.mdx +0 -0
  1271. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/http/error-handling.mdx +0 -0
  1272. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/http/metrics.mdx +0 -0
  1273. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/http/routing.mdx +0 -0
  1274. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/http/tls.mdx +0 -0
  1275. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/http/websockets.mdx +0 -0
  1276. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/index.mdx +0 -0
  1277. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/jsonl.mdx +0 -0
  1278. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/jsx.mdx +0 -0
  1279. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/module-resolution.mdx +0 -0
  1280. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/networking/dns.mdx +0 -0
  1281. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/networking/fetch.mdx +0 -0
  1282. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/networking/tcp.mdx +0 -0
  1283. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/networking/udp.mdx +0 -0
  1284. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/node-api.mdx +0 -0
  1285. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/nodejs-compat.mdx +0 -0
  1286. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/plugins.mdx +0 -0
  1287. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/redis.mdx +0 -0
  1288. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/repl.mdx +0 -0
  1289. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/s3.mdx +0 -0
  1290. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/secrets.mdx +0 -0
  1291. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/semver.mdx +0 -0
  1292. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/shell.mdx +0 -0
  1293. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/sql.mdx +0 -0
  1294. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/sqlite.mdx +0 -0
  1295. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/streams.mdx +0 -0
  1296. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/templating/create.mdx +0 -0
  1297. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/templating/init.mdx +0 -0
  1298. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/transpiler.mdx +0 -0
  1299. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/typescript.mdx +0 -0
  1300. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/utils.mdx +0 -0
  1301. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/watch-mode.mdx +0 -0
  1302. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/web-apis.mdx +0 -0
  1303. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/runtime/workers.mdx +0 -0
  1304. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/add.mdx +0 -0
  1305. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/build.mdx +0 -0
  1306. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/bunx.mdx +0 -0
  1307. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/feedback.mdx +0 -0
  1308. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/init.mdx +0 -0
  1309. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/install.mdx +0 -0
  1310. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/link.mdx +0 -0
  1311. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/outdated.mdx +0 -0
  1312. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/patch.mdx +0 -0
  1313. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/publish.mdx +0 -0
  1314. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/remove.mdx +0 -0
  1315. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/run.mdx +0 -0
  1316. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/test.mdx +0 -0
  1317. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/snippets/cli/update.mdx +0 -0
  1318. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/code-coverage.mdx +0 -0
  1319. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/dates-times.mdx +0 -0
  1320. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/discovery.mdx +0 -0
  1321. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/dom.mdx +0 -0
  1322. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/index.mdx +0 -0
  1323. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/lifecycle.mdx +0 -0
  1324. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/mocks.mdx +0 -0
  1325. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/reporters.mdx +0 -0
  1326. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/runtime-behavior.mdx +0 -0
  1327. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/snapshots.mdx +0 -0
  1328. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/test/writing-tests.mdx +0 -0
  1329. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/docs/typescript.mdx +0 -0
  1330. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/extensions.d.ts +0 -0
  1331. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/fetch.d.ts +0 -0
  1332. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/ffi.d.ts +0 -0
  1333. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/globals.d.ts +0 -0
  1334. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/html-rewriter.d.ts +0 -0
  1335. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/index.d.ts +0 -0
  1336. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/jsc.d.ts +0 -0
  1337. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/jsx.d.ts +0 -0
  1338. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/overrides.d.ts +0 -0
  1339. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/redis.d.ts +0 -0
  1340. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/security.d.ts +0 -0
  1341. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/serve.d.ts +0 -0
  1342. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/shell.d.ts +0 -0
  1343. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/sql.d.ts +0 -0
  1344. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/sqlite.d.ts +0 -0
  1345. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/test-globals.d.ts +0 -0
  1346. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/test.d.ts +0 -0
  1347. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/vendor/expect-type/branding.d.ts +0 -0
  1348. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/vendor/expect-type/index.d.ts +0 -0
  1349. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/vendor/expect-type/messages.d.ts +0 -0
  1350. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/vendor/expect-type/overloads.d.ts +0 -0
  1351. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/vendor/expect-type/utils.d.ts +0 -0
  1352. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/bun-types/wasm.d.ts +0 -0
  1353. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/license +0 -0
  1354. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/package.json +0 -0
  1355. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/readme.md +0 -0
  1356. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/source/index.d.ts +0 -0
  1357. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/source/index.js +0 -0
  1358. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/source/utilities.js +0 -0
  1359. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +0 -0
  1360. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/source/vendor/ansi-styles/index.js +0 -0
  1361. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/source/vendor/supports-color/browser.d.ts +0 -0
  1362. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/source/vendor/supports-color/browser.js +0 -0
  1363. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/source/vendor/supports-color/index.d.ts +0 -0
  1364. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/chalk/source/vendor/supports-color/index.js +0 -0
  1365. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/LICENSE +0 -0
  1366. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/Readme.md +0 -0
  1367. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/esm.mjs +0 -0
  1368. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/index.js +0 -0
  1369. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/lib/argument.js +0 -0
  1370. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/lib/command.js +0 -0
  1371. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/lib/error.js +0 -0
  1372. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/lib/help.js +0 -0
  1373. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/lib/option.js +0 -0
  1374. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/lib/suggestSimilar.js +0 -0
  1375. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/package-support.json +0 -0
  1376. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/package.json +0 -0
  1377. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/typings/esm.d.mts +0 -0
  1378. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/commander/typings/index.d.ts +0 -0
  1379. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/LICENSE.txt +0 -0
  1380. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/README.md +0 -0
  1381. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/SECURITY.md +0 -0
  1382. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/ThirdPartyNoticeText.txt +0 -0
  1383. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/bin/tsc +0 -0
  1384. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/bin/tsserver +0 -0
  1385. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/_tsc.js +0 -0
  1386. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/_tsserver.js +0 -0
  1387. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/_typingsInstaller.js +0 -0
  1388. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -0
  1389. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -0
  1390. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -0
  1391. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -0
  1392. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -0
  1393. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -0
  1394. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -0
  1395. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.d.ts +0 -0
  1396. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.decorators.d.ts +0 -0
  1397. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -0
  1398. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -0
  1399. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.dom.d.ts +0 -0
  1400. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -0
  1401. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -0
  1402. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -0
  1403. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.d.ts +0 -0
  1404. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -0
  1405. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -0
  1406. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -0
  1407. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -0
  1408. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -0
  1409. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -0
  1410. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -0
  1411. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -0
  1412. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2016.d.ts +0 -0
  1413. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -0
  1414. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -0
  1415. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -0
  1416. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2017.d.ts +0 -0
  1417. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -0
  1418. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -0
  1419. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -0
  1420. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -0
  1421. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -0
  1422. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -0
  1423. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -0
  1424. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -0
  1425. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -0
  1426. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2018.d.ts +0 -0
  1427. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -0
  1428. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -0
  1429. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -0
  1430. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -0
  1431. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -0
  1432. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2019.d.ts +0 -0
  1433. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -0
  1434. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -0
  1435. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -0
  1436. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -0
  1437. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -0
  1438. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -0
  1439. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.d.ts +0 -0
  1440. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -0
  1441. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -0
  1442. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -0
  1443. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -0
  1444. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -0
  1445. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -0
  1446. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -0
  1447. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -0
  1448. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2021.d.ts +0 -0
  1449. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -0
  1450. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -0
  1451. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -0
  1452. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -0
  1453. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -0
  1454. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -0
  1455. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2022.d.ts +0 -0
  1456. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -0
  1457. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -0
  1458. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -0
  1459. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -0
  1460. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -0
  1461. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -0
  1462. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -0
  1463. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -0
  1464. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2023.d.ts +0 -0
  1465. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -0
  1466. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -0
  1467. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -0
  1468. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -0
  1469. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2024.d.ts +0 -0
  1470. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -0
  1471. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -0
  1472. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -0
  1473. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -0
  1474. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -0
  1475. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -0
  1476. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es5.d.ts +0 -0
  1477. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.es6.d.ts +0 -0
  1478. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -0
  1479. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -0
  1480. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.d.ts +0 -0
  1481. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -0
  1482. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -0
  1483. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -0
  1484. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -0
  1485. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -0
  1486. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -0
  1487. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -0
  1488. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -0
  1489. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -0
  1490. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.scripthost.d.ts +0 -0
  1491. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -0
  1492. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.webworker.d.ts +0 -0
  1493. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -0
  1494. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -0
  1495. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -0
  1496. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -0
  1497. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -0
  1498. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -0
  1499. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/tsc.js +0 -0
  1500. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/tsserver.js +0 -0
  1501. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -0
  1502. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/tsserverlibrary.js +0 -0
  1503. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/typesMap.json +0 -0
  1504. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/typescript.d.ts +0 -0
  1505. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/typescript.js +0 -0
  1506. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/typingsInstaller.js +0 -0
  1507. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/watchGuard.js +0 -0
  1508. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -0
  1509. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -0
  1510. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/typescript/package.json +0 -0
  1511. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/LICENSE +0 -0
  1512. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/README.md +0 -0
  1513. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/agent.d.ts +0 -0
  1514. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/api.d.ts +0 -0
  1515. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/balanced-pool.d.ts +0 -0
  1516. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/cache-interceptor.d.ts +0 -0
  1517. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/cache.d.ts +0 -0
  1518. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/client-stats.d.ts +0 -0
  1519. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/client.d.ts +0 -0
  1520. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/connector.d.ts +0 -0
  1521. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/content-type.d.ts +0 -0
  1522. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/cookies.d.ts +0 -0
  1523. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/diagnostics-channel.d.ts +0 -0
  1524. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/dispatcher.d.ts +0 -0
  1525. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -0
  1526. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/errors.d.ts +0 -0
  1527. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/eventsource.d.ts +0 -0
  1528. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/fetch.d.ts +0 -0
  1529. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/formdata.d.ts +0 -0
  1530. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/global-dispatcher.d.ts +0 -0
  1531. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/global-origin.d.ts +0 -0
  1532. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/h2c-client.d.ts +0 -0
  1533. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/handlers.d.ts +0 -0
  1534. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/header.d.ts +0 -0
  1535. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/index.d.ts +0 -0
  1536. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/interceptors.d.ts +0 -0
  1537. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/mock-agent.d.ts +0 -0
  1538. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/mock-call-history.d.ts +0 -0
  1539. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/mock-client.d.ts +0 -0
  1540. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/mock-errors.d.ts +0 -0
  1541. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/mock-interceptor.d.ts +0 -0
  1542. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/mock-pool.d.ts +0 -0
  1543. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/package.json +0 -0
  1544. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/patch.d.ts +0 -0
  1545. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/pool-stats.d.ts +0 -0
  1546. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/pool.d.ts +0 -0
  1547. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/proxy-agent.d.ts +0 -0
  1548. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/readable.d.ts +0 -0
  1549. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/retry-agent.d.ts +0 -0
  1550. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/retry-handler.d.ts +0 -0
  1551. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/round-robin-pool.d.ts +0 -0
  1552. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/snapshot-agent.d.ts +0 -0
  1553. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/util.d.ts +0 -0
  1554. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/utility.d.ts +0 -0
  1555. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/webidl.d.ts +0 -0
  1556. /package/connectors/{connect-yousign → connect-namecheap}/node_modules/undici-types/websocket.d.ts +0 -0
  1557. /package/connectors/{connect-yousign → connect-namecheap}/tsconfig.json +0 -0
package/bin/index.js CHANGED
@@ -4,6 +4,7 @@ var __create = Object.create;
4
4
  var __getProtoOf = Object.getPrototypeOf;
5
5
  var __defProp = Object.defineProperty;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
9
  var __toESM = (mod, isNodeMode, target) => {
9
10
  target = mod != null ? __create(__getProtoOf(mod)) : {};
@@ -16,6 +17,20 @@ var __toESM = (mod, isNodeMode, target) => {
16
17
  });
17
18
  return to;
18
19
  };
20
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
21
+ var __toCommonJS = (from) => {
22
+ var entry = __moduleCache.get(from), desc;
23
+ if (entry)
24
+ return entry;
25
+ entry = __defProp({}, "__esModule", { value: true });
26
+ if (from && typeof from === "object" || typeof from === "function")
27
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
28
+ get: () => from[key],
29
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
30
+ }));
31
+ __moduleCache.set(from, entry);
32
+ return entry;
33
+ };
19
34
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
20
35
  var __export = (target, all) => {
21
36
  for (var name in all)
@@ -1868,16 +1883,820 @@ var require_commander = __commonJS((exports) => {
1868
1883
  exports.InvalidOptionArgumentError = InvalidArgumentError;
1869
1884
  });
1870
1885
 
1886
+ // src/lib/llm.ts
1887
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
1888
+ import { join } from "path";
1889
+ import { homedir } from "os";
1890
+ function getLlmConfigPath() {
1891
+ return join(homedir(), ".connectors", "llm.json");
1892
+ }
1893
+ function getLlmConfig() {
1894
+ const path = getLlmConfigPath();
1895
+ if (!existsSync(path))
1896
+ return null;
1897
+ try {
1898
+ return JSON.parse(readFileSync(path, "utf-8"));
1899
+ } catch {
1900
+ return null;
1901
+ }
1902
+ }
1903
+ function saveLlmConfig(config) {
1904
+ const dir = join(homedir(), ".connectors");
1905
+ mkdirSync(dir, { recursive: true });
1906
+ writeFileSync(getLlmConfigPath(), JSON.stringify(config, null, 2));
1907
+ }
1908
+ function setLlmStrip(enabled) {
1909
+ const config = getLlmConfig();
1910
+ if (!config)
1911
+ throw new Error("No LLM config found. Run: connectors llm set --provider <provider> --key <key>");
1912
+ saveLlmConfig({ ...config, strip: enabled });
1913
+ }
1914
+ function maskKey(key) {
1915
+ if (key.length <= 8)
1916
+ return "***";
1917
+ return key.slice(0, 8) + "***";
1918
+ }
1919
+
1920
+ class LLMClient {
1921
+ config;
1922
+ constructor(config) {
1923
+ this.config = config;
1924
+ }
1925
+ static fromConfig() {
1926
+ const config = getLlmConfig();
1927
+ if (!config)
1928
+ return null;
1929
+ return new LLMClient(config);
1930
+ }
1931
+ async complete(prompt, content) {
1932
+ const start = Date.now();
1933
+ const { provider, model, api_key } = this.config;
1934
+ if (provider === "anthropic") {
1935
+ return this._anthropicComplete(prompt, content, start);
1936
+ }
1937
+ const baseUrl = PROVIDER_BASE_URLS[provider];
1938
+ const response = await fetch(`${baseUrl}/chat/completions`, {
1939
+ method: "POST",
1940
+ headers: {
1941
+ "Content-Type": "application/json",
1942
+ Authorization: `Bearer ${api_key}`
1943
+ },
1944
+ body: JSON.stringify({
1945
+ model,
1946
+ messages: [
1947
+ { role: "system", content: prompt },
1948
+ { role: "user", content }
1949
+ ],
1950
+ temperature: 0,
1951
+ max_tokens: 4096
1952
+ })
1953
+ });
1954
+ if (!response.ok) {
1955
+ const error = await response.text();
1956
+ throw new Error(`LLM request failed (${provider} ${response.status}): ${error}`);
1957
+ }
1958
+ const data = await response.json();
1959
+ return {
1960
+ content: data.choices[0].message.content,
1961
+ provider,
1962
+ model,
1963
+ latency_ms: Date.now() - start
1964
+ };
1965
+ }
1966
+ async _anthropicComplete(prompt, content, start) {
1967
+ const { model, api_key } = this.config;
1968
+ const response = await fetch("https://api.anthropic.com/v1/messages", {
1969
+ method: "POST",
1970
+ headers: {
1971
+ "Content-Type": "application/json",
1972
+ "x-api-key": api_key,
1973
+ "anthropic-version": "2023-06-01"
1974
+ },
1975
+ body: JSON.stringify({
1976
+ model,
1977
+ system: prompt,
1978
+ messages: [{ role: "user", content }],
1979
+ max_tokens: 4096
1980
+ })
1981
+ });
1982
+ if (!response.ok) {
1983
+ const error = await response.text();
1984
+ throw new Error(`LLM request failed (anthropic ${response.status}): ${error}`);
1985
+ }
1986
+ const data = await response.json();
1987
+ return {
1988
+ content: data.content[0].text,
1989
+ provider: "anthropic",
1990
+ model,
1991
+ latency_ms: Date.now() - start
1992
+ };
1993
+ }
1994
+ }
1995
+ var PROVIDER_BASE_URLS, PROVIDER_DEFAULTS;
1996
+ var init_llm = __esm(() => {
1997
+ PROVIDER_BASE_URLS = {
1998
+ cerebras: "https://api.cerebras.ai/v1",
1999
+ groq: "https://api.groq.com/openai/v1",
2000
+ openai: "https://api.openai.com/v1"
2001
+ };
2002
+ PROVIDER_DEFAULTS = {
2003
+ cerebras: { model: "qwen-3-32b" },
2004
+ groq: { model: "llama-3.3-70b-versatile" },
2005
+ openai: { model: "gpt-4o-mini" },
2006
+ anthropic: { model: "claude-haiku-4-5-20251001" }
2007
+ };
2008
+ });
2009
+
2010
+ // src/db/database.ts
2011
+ var exports_database = {};
2012
+ __export(exports_database, {
2013
+ shortUuid: () => shortUuid,
2014
+ now: () => now,
2015
+ getDatabase: () => getDatabase,
2016
+ closeDatabase: () => closeDatabase
2017
+ });
2018
+ import { Database } from "bun:sqlite";
2019
+ import { join as join2 } from "path";
2020
+ import { homedir as homedir2 } from "os";
2021
+ import { mkdirSync as mkdirSync2 } from "fs";
2022
+ function getDatabase(path) {
2023
+ if (_db)
2024
+ return _db;
2025
+ const dbPath = path ?? DB_PATH;
2026
+ mkdirSync2(join2(dbPath, ".."), { recursive: true });
2027
+ _db = new Database(dbPath);
2028
+ _db.run("PRAGMA journal_mode = WAL");
2029
+ migrate(_db);
2030
+ return _db;
2031
+ }
2032
+ function closeDatabase() {
2033
+ _db?.close();
2034
+ _db = null;
2035
+ }
2036
+ function now() {
2037
+ return new Date().toISOString();
2038
+ }
2039
+ function shortUuid() {
2040
+ return crypto.randomUUID().slice(0, 8);
2041
+ }
2042
+ function migrate(db) {
2043
+ db.run(`
2044
+ CREATE TABLE IF NOT EXISTS agents (
2045
+ id TEXT PRIMARY KEY,
2046
+ name TEXT UNIQUE NOT NULL,
2047
+ session_id TEXT,
2048
+ role TEXT NOT NULL DEFAULT 'agent',
2049
+ last_seen_at TEXT NOT NULL,
2050
+ created_at TEXT NOT NULL
2051
+ )
2052
+ `);
2053
+ db.run(`
2054
+ CREATE TABLE IF NOT EXISTS resource_locks (
2055
+ id TEXT PRIMARY KEY,
2056
+ resource_type TEXT NOT NULL CHECK(resource_type IN ('connector', 'agent', 'profile', 'token')),
2057
+ resource_id TEXT NOT NULL,
2058
+ agent_id TEXT NOT NULL,
2059
+ lock_type TEXT NOT NULL DEFAULT 'exclusive' CHECK(lock_type IN ('advisory', 'exclusive')),
2060
+ locked_at TEXT NOT NULL DEFAULT (datetime('now')),
2061
+ expires_at TEXT NOT NULL
2062
+ )
2063
+ `);
2064
+ db.run(`
2065
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_resource_locks_exclusive
2066
+ ON resource_locks(resource_type, resource_id)
2067
+ WHERE lock_type = 'exclusive'
2068
+ `);
2069
+ db.run(`CREATE INDEX IF NOT EXISTS idx_resource_locks_agent ON resource_locks(agent_id)`);
2070
+ db.run(`CREATE INDEX IF NOT EXISTS idx_resource_locks_expires ON resource_locks(expires_at)`);
2071
+ db.run(`
2072
+ CREATE TABLE IF NOT EXISTS connector_rate_usage (
2073
+ agent_id TEXT NOT NULL,
2074
+ connector TEXT NOT NULL,
2075
+ window_start TEXT NOT NULL,
2076
+ call_count INTEGER NOT NULL DEFAULT 0,
2077
+ PRIMARY KEY (agent_id, connector, window_start)
2078
+ )
2079
+ `);
2080
+ db.run(`CREATE INDEX IF NOT EXISTS idx_rate_usage_window ON connector_rate_usage(connector, window_start)`);
2081
+ db.run(`
2082
+ CREATE TABLE IF NOT EXISTS connector_jobs (
2083
+ id TEXT PRIMARY KEY,
2084
+ name TEXT UNIQUE NOT NULL,
2085
+ connector TEXT NOT NULL,
2086
+ command TEXT NOT NULL,
2087
+ args TEXT NOT NULL DEFAULT '[]',
2088
+ cron TEXT NOT NULL,
2089
+ enabled INTEGER NOT NULL DEFAULT 1,
2090
+ strip INTEGER NOT NULL DEFAULT 0,
2091
+ created_at TEXT NOT NULL,
2092
+ last_run_at TEXT
2093
+ )
2094
+ `);
2095
+ db.run(`CREATE INDEX IF NOT EXISTS idx_jobs_enabled ON connector_jobs(enabled)`);
2096
+ db.run(`
2097
+ CREATE TABLE IF NOT EXISTS connector_job_runs (
2098
+ id TEXT PRIMARY KEY,
2099
+ job_id TEXT NOT NULL REFERENCES connector_jobs(id) ON DELETE CASCADE,
2100
+ started_at TEXT NOT NULL,
2101
+ finished_at TEXT,
2102
+ exit_code INTEGER,
2103
+ raw_output TEXT,
2104
+ stripped_output TEXT
2105
+ )
2106
+ `);
2107
+ db.run(`CREATE INDEX IF NOT EXISTS idx_job_runs_job ON connector_job_runs(job_id, started_at DESC)`);
2108
+ db.run(`
2109
+ CREATE TABLE IF NOT EXISTS connector_workflows (
2110
+ id TEXT PRIMARY KEY,
2111
+ name TEXT UNIQUE NOT NULL,
2112
+ steps TEXT NOT NULL DEFAULT '[]',
2113
+ enabled INTEGER NOT NULL DEFAULT 1,
2114
+ created_at TEXT NOT NULL
2115
+ )
2116
+ `);
2117
+ db.run(`
2118
+ CREATE TABLE IF NOT EXISTS connector_usage (
2119
+ id TEXT PRIMARY KEY,
2120
+ connector TEXT NOT NULL,
2121
+ action TEXT NOT NULL,
2122
+ agent_id TEXT,
2123
+ timestamp TEXT NOT NULL
2124
+ )
2125
+ `);
2126
+ db.run(`CREATE INDEX IF NOT EXISTS idx_usage_connector ON connector_usage(connector, timestamp DESC)`);
2127
+ db.run(`
2128
+ CREATE TABLE IF NOT EXISTS connector_promotions (
2129
+ connector TEXT UNIQUE NOT NULL,
2130
+ promoted_at TEXT NOT NULL
2131
+ )
2132
+ `);
2133
+ }
2134
+ var DB_DIR, DB_PATH, _db = null;
2135
+ var init_database = __esm(() => {
2136
+ DB_DIR = join2(homedir2(), ".connectors");
2137
+ DB_PATH = join2(DB_DIR, "connectors.db");
2138
+ });
2139
+
2140
+ // src/db/jobs.ts
2141
+ function rowToJob(row) {
2142
+ return {
2143
+ ...row,
2144
+ args: JSON.parse(row.args || "[]"),
2145
+ enabled: row.enabled === 1,
2146
+ strip: row.strip === 1
2147
+ };
2148
+ }
2149
+ function createJob(input, db) {
2150
+ const d = db ?? getDatabase();
2151
+ const id = shortUuid();
2152
+ const ts = now();
2153
+ d.run("INSERT INTO connector_jobs (id, name, connector, command, args, cron, enabled, strip, created_at) VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)", [id, input.name, input.connector, input.command, JSON.stringify(input.args ?? []), input.cron, input.strip ? 1 : 0, ts]);
2154
+ return getJob(id, d);
2155
+ }
2156
+ function getJob(id, db) {
2157
+ const d = db ?? getDatabase();
2158
+ const row = d.query("SELECT * FROM connector_jobs WHERE id = ?").get(id);
2159
+ return row ? rowToJob(row) : null;
2160
+ }
2161
+ function getJobByName(name, db) {
2162
+ const d = db ?? getDatabase();
2163
+ const row = d.query("SELECT * FROM connector_jobs WHERE name = ?").get(name);
2164
+ return row ? rowToJob(row) : null;
2165
+ }
2166
+ function listJobs(db) {
2167
+ const d = db ?? getDatabase();
2168
+ return d.query("SELECT * FROM connector_jobs ORDER BY name").all().map(rowToJob);
2169
+ }
2170
+ function listEnabledJobs(db) {
2171
+ const d = db ?? getDatabase();
2172
+ return d.query("SELECT * FROM connector_jobs WHERE enabled = 1").all().map(rowToJob);
2173
+ }
2174
+ function updateJob(id, input, db) {
2175
+ const d = db ?? getDatabase();
2176
+ const sets = [];
2177
+ const params = [];
2178
+ if (input.name !== undefined) {
2179
+ sets.push("name = ?");
2180
+ params.push(input.name);
2181
+ }
2182
+ if (input.connector !== undefined) {
2183
+ sets.push("connector = ?");
2184
+ params.push(input.connector);
2185
+ }
2186
+ if (input.command !== undefined) {
2187
+ sets.push("command = ?");
2188
+ params.push(input.command);
2189
+ }
2190
+ if (input.args !== undefined) {
2191
+ sets.push("args = ?");
2192
+ params.push(JSON.stringify(input.args));
2193
+ }
2194
+ if (input.cron !== undefined) {
2195
+ sets.push("cron = ?");
2196
+ params.push(input.cron);
2197
+ }
2198
+ if (input.enabled !== undefined) {
2199
+ sets.push("enabled = ?");
2200
+ params.push(input.enabled ? 1 : 0);
2201
+ }
2202
+ if (input.strip !== undefined) {
2203
+ sets.push("strip = ?");
2204
+ params.push(input.strip ? 1 : 0);
2205
+ }
2206
+ if (sets.length === 0)
2207
+ return getJob(id, d);
2208
+ params.push(id);
2209
+ d.run(`UPDATE connector_jobs SET ${sets.join(", ")} WHERE id = ?`, params);
2210
+ return getJob(id, d);
2211
+ }
2212
+ function deleteJob(id, db) {
2213
+ const d = db ?? getDatabase();
2214
+ return d.run("DELETE FROM connector_jobs WHERE id = ?", [id]).changes > 0;
2215
+ }
2216
+ function touchJobLastRun(id, db) {
2217
+ const d = db ?? getDatabase();
2218
+ d.run("UPDATE connector_jobs SET last_run_at = ? WHERE id = ?", [now(), id]);
2219
+ }
2220
+ function createJobRun(jobId, db) {
2221
+ const d = db ?? getDatabase();
2222
+ const id = shortUuid();
2223
+ const ts = now();
2224
+ d.run("INSERT INTO connector_job_runs (id, job_id, started_at) VALUES (?, ?, ?)", [id, jobId, ts]);
2225
+ return { id, job_id: jobId, started_at: ts, finished_at: null, exit_code: null, raw_output: null, stripped_output: null };
2226
+ }
2227
+ function finishJobRun(id, result, db) {
2228
+ const d = db ?? getDatabase();
2229
+ d.run("UPDATE connector_job_runs SET finished_at = ?, exit_code = ?, raw_output = ?, stripped_output = ? WHERE id = ?", [now(), result.exit_code, result.raw_output, result.stripped_output ?? null, id]);
2230
+ }
2231
+ function listJobRuns(jobId, limit = 20, db) {
2232
+ const d = db ?? getDatabase();
2233
+ return d.query("SELECT * FROM connector_job_runs WHERE job_id = ? ORDER BY started_at DESC LIMIT ?").all(jobId, limit);
2234
+ }
2235
+ var init_jobs = __esm(() => {
2236
+ init_database();
2237
+ });
2238
+
2239
+ // src/db/workflows.ts
2240
+ function rowToWorkflow(row) {
2241
+ return {
2242
+ ...row,
2243
+ steps: JSON.parse(row.steps || "[]"),
2244
+ enabled: row.enabled === 1
2245
+ };
2246
+ }
2247
+ function createWorkflow(input, db) {
2248
+ const d = db ?? getDatabase();
2249
+ const id = shortUuid();
2250
+ d.run("INSERT INTO connector_workflows (id, name, steps, enabled, created_at) VALUES (?, ?, ?, 1, ?)", [id, input.name, JSON.stringify(input.steps), now()]);
2251
+ return getWorkflow(id, d);
2252
+ }
2253
+ function getWorkflow(id, db) {
2254
+ const d = db ?? getDatabase();
2255
+ const row = d.query("SELECT * FROM connector_workflows WHERE id = ?").get(id);
2256
+ return row ? rowToWorkflow(row) : null;
2257
+ }
2258
+ function getWorkflowByName(name, db) {
2259
+ const d = db ?? getDatabase();
2260
+ const row = d.query("SELECT * FROM connector_workflows WHERE name = ?").get(name);
2261
+ return row ? rowToWorkflow(row) : null;
2262
+ }
2263
+ function listWorkflows(db) {
2264
+ const d = db ?? getDatabase();
2265
+ return d.query("SELECT * FROM connector_workflows ORDER BY name").all().map(rowToWorkflow);
2266
+ }
2267
+ function deleteWorkflow(id, db) {
2268
+ const d = db ?? getDatabase();
2269
+ return d.run("DELETE FROM connector_workflows WHERE id = ?", [id]).changes > 0;
2270
+ }
2271
+ var init_workflows = __esm(() => {
2272
+ init_database();
2273
+ });
2274
+
2275
+ // src/lib/strip.ts
2276
+ async function maybeStrip(output, _type = "json") {
2277
+ const config = getLlmConfig();
2278
+ if (!config?.strip)
2279
+ return output;
2280
+ if (!output || output.trim().length === 0)
2281
+ return output;
2282
+ const client = LLMClient.fromConfig();
2283
+ if (!client)
2284
+ return output;
2285
+ try {
2286
+ const result = await client.complete(STRIP_PROMPT, output);
2287
+ return result.content.trim();
2288
+ } catch {
2289
+ return output;
2290
+ }
2291
+ }
2292
+ var STRIP_PROMPT = `You are a data extraction assistant. Your job is to take raw API output and return ONLY the essential, structured data.
2293
+
2294
+ Rules:
2295
+ - Return valid JSON only (no markdown, no explanation)
2296
+ - Remove pagination metadata, rate limit headers, empty fields, null values
2297
+ - Keep all meaningful data fields
2298
+ - If the input is already minimal, return it unchanged
2299
+ - If input is not JSON, extract key facts as a JSON object
2300
+ - Never truncate actual data values`;
2301
+ var init_strip = __esm(() => {
2302
+ init_llm();
2303
+ });
2304
+
2305
+ // src/lib/scheduler.ts
2306
+ var exports_scheduler = {};
2307
+ __export(exports_scheduler, {
2308
+ triggerJob: () => triggerJob,
2309
+ stopScheduler: () => stopScheduler,
2310
+ startScheduler: () => startScheduler
2311
+ });
2312
+ import { spawn } from "child_process";
2313
+ function cronMatches(cron, d) {
2314
+ const parts = cron.trim().split(/\s+/);
2315
+ if (parts.length !== 5)
2316
+ return false;
2317
+ const [min, hour, dom, mon, dow] = parts;
2318
+ function matches(field, value, min_v, max_v) {
2319
+ if (field === "*")
2320
+ return true;
2321
+ if (field.startsWith("*/")) {
2322
+ const step = parseInt(field.slice(2));
2323
+ return value % step === 0;
2324
+ }
2325
+ if (field.includes("-")) {
2326
+ const [a, b] = field.split("-").map(Number);
2327
+ return value >= a && value <= b;
2328
+ }
2329
+ if (field.includes(",")) {
2330
+ return field.split(",").map(Number).includes(value);
2331
+ }
2332
+ return parseInt(field) === value;
2333
+ }
2334
+ return matches(min, d.getMinutes(), 0, 59) && matches(hour, d.getHours(), 0, 23) && matches(dom, d.getDate(), 1, 31) && matches(mon, d.getMonth() + 1, 1, 12) && matches(dow, d.getDay(), 0, 6);
2335
+ }
2336
+ async function runConnectorCommand(connector, command, args) {
2337
+ return new Promise((resolve) => {
2338
+ const cmdArgs = [connector, command, ...args, "--format", "json"];
2339
+ const proc = spawn("connectors", ["run", ...cmdArgs], { shell: false });
2340
+ let output = "";
2341
+ proc.stdout.on("data", (d) => {
2342
+ output += d.toString();
2343
+ });
2344
+ proc.stderr.on("data", (d) => {
2345
+ output += d.toString();
2346
+ });
2347
+ proc.on("close", (code) => resolve({ exitCode: code ?? 1, output }));
2348
+ proc.on("error", () => resolve({ exitCode: 1, output: `Failed to spawn connectors run` }));
2349
+ setTimeout(() => {
2350
+ proc.kill();
2351
+ resolve({ exitCode: 124, output: output + `
2352
+ [timeout]` });
2353
+ }, 60000);
2354
+ });
2355
+ }
2356
+ async function executeJob(job, db) {
2357
+ const run = createJobRun(job.id, db);
2358
+ try {
2359
+ const { exitCode, output } = await runConnectorCommand(job.connector, job.command, job.args);
2360
+ const stripped = job.strip ? await maybeStrip(output) : undefined;
2361
+ finishJobRun(run.id, { exit_code: exitCode, raw_output: output, stripped_output: stripped }, db);
2362
+ touchJobLastRun(job.id, db);
2363
+ } catch (e) {
2364
+ finishJobRun(run.id, { exit_code: 1, raw_output: String(e) }, db);
2365
+ }
2366
+ }
2367
+ function startScheduler(db) {
2368
+ if (_interval)
2369
+ return;
2370
+ _interval = setInterval(async () => {
2371
+ const now2 = new Date;
2372
+ const currentMinute = now2.getMinutes() + now2.getHours() * 60;
2373
+ if (currentMinute === _lastCheckedMinute)
2374
+ return;
2375
+ _lastCheckedMinute = currentMinute;
2376
+ const jobs = listEnabledJobs(db);
2377
+ for (const job of jobs) {
2378
+ if (cronMatches(job.cron, now2)) {
2379
+ executeJob(job, db).catch(() => {});
2380
+ }
2381
+ }
2382
+ }, 30000);
2383
+ }
2384
+ function stopScheduler() {
2385
+ if (_interval) {
2386
+ clearInterval(_interval);
2387
+ _interval = null;
2388
+ _lastCheckedMinute = -1;
2389
+ }
2390
+ }
2391
+ async function triggerJob(job, db) {
2392
+ const run = createJobRun(job.id, db);
2393
+ const { exitCode, output } = await runConnectorCommand(job.connector, job.command, job.args);
2394
+ const stripped = job.strip ? await maybeStrip(output) : undefined;
2395
+ finishJobRun(run.id, { exit_code: exitCode, raw_output: output, stripped_output: stripped }, db);
2396
+ touchJobLastRun(job.id, db);
2397
+ return { run_id: run.id, exit_code: exitCode, output: stripped ?? output };
2398
+ }
2399
+ var _interval = null, _lastCheckedMinute = -1;
2400
+ var init_scheduler = __esm(() => {
2401
+ init_jobs();
2402
+ init_strip();
2403
+ });
2404
+
2405
+ // src/lib/workflow-runner.ts
2406
+ import { spawn as spawn2 } from "child_process";
2407
+ async function runStep(step, previousOutput) {
2408
+ return new Promise((resolve) => {
2409
+ const args = [...step.args ?? []];
2410
+ if (previousOutput && previousOutput.trim()) {
2411
+ args.push("--input", previousOutput.trim().slice(0, 4096));
2412
+ }
2413
+ const cmdArgs = ["run", step.connector, step.command, ...args, "--format", "json"];
2414
+ const proc = spawn2("connectors", cmdArgs, { shell: false });
2415
+ let output = "";
2416
+ proc.stdout.on("data", (d) => {
2417
+ output += d.toString();
2418
+ });
2419
+ proc.stderr.on("data", (d) => {
2420
+ output += d.toString();
2421
+ });
2422
+ proc.on("close", (code) => resolve({ exitCode: code ?? 1, output }));
2423
+ proc.on("error", () => resolve({ exitCode: 1, output: "Failed to spawn connectors" }));
2424
+ setTimeout(() => {
2425
+ proc.kill();
2426
+ resolve({ exitCode: 124, output: output + `
2427
+ [timeout]` });
2428
+ }, 60000);
2429
+ });
2430
+ }
2431
+ async function runWorkflow(workflow) {
2432
+ const results = [];
2433
+ let previousOutput;
2434
+ let success = true;
2435
+ for (let i = 0;i < workflow.steps.length; i++) {
2436
+ const step = workflow.steps[i];
2437
+ const { exitCode, output } = await runStep(step, previousOutput);
2438
+ const stripped = await maybeStrip(output);
2439
+ results.push({ step: i + 1, connector: step.connector, command: step.command, exit_code: exitCode, output: stripped });
2440
+ if (exitCode !== 0) {
2441
+ success = false;
2442
+ break;
2443
+ }
2444
+ previousOutput = stripped;
2445
+ }
2446
+ return {
2447
+ workflow_id: workflow.id,
2448
+ workflow_name: workflow.name,
2449
+ steps: results,
2450
+ success,
2451
+ final_output: results[results.length - 1]?.output ?? ""
2452
+ };
2453
+ }
2454
+ var init_workflow_runner = __esm(() => {
2455
+ init_strip();
2456
+ });
2457
+
2458
+ // src/lib/fuzzy.ts
2459
+ function levenshtein(a, b) {
2460
+ const m = a.length;
2461
+ const n = b.length;
2462
+ if (m === 0)
2463
+ return n;
2464
+ if (n === 0)
2465
+ return m;
2466
+ let prev = new Array(n + 1);
2467
+ let curr = new Array(n + 1);
2468
+ for (let j = 0;j <= n; j++)
2469
+ prev[j] = j;
2470
+ for (let i = 1;i <= m; i++) {
2471
+ curr[0] = i;
2472
+ for (let j = 1;j <= n; j++) {
2473
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
2474
+ curr[j] = Math.min(curr[j - 1] + 1, prev[j] + 1, prev[j - 1] + cost);
2475
+ }
2476
+ [prev, curr] = [curr, prev];
2477
+ }
2478
+ return prev[n];
2479
+ }
2480
+ function bestFuzzyScore(token, candidates, maxDistance = 2) {
2481
+ if (token.length < 3)
2482
+ return 0;
2483
+ let bestDist = maxDistance + 1;
2484
+ for (const c of candidates) {
2485
+ if (Math.abs(token.length - c.length) > maxDistance)
2486
+ continue;
2487
+ const d = levenshtein(token, c);
2488
+ if (d < bestDist)
2489
+ bestDist = d;
2490
+ if (d === 0)
2491
+ return maxDistance + 1;
2492
+ }
2493
+ if (bestDist > maxDistance)
2494
+ return 0;
2495
+ return maxDistance - bestDist + 1;
2496
+ }
2497
+
2498
+ // src/lib/synonyms.ts
2499
+ function expandQuery(tokens) {
2500
+ const synonyms = new Set;
2501
+ for (const token of tokens) {
2502
+ const matches = SYNONYM_MAP[token];
2503
+ if (matches) {
2504
+ for (const syn of matches) {
2505
+ if (!tokens.includes(syn))
2506
+ synonyms.add(syn);
2507
+ }
2508
+ }
2509
+ for (const [key, values] of Object.entries(SYNONYM_MAP)) {
2510
+ if (values.includes(token) && !tokens.includes(key)) {
2511
+ synonyms.add(key);
2512
+ }
2513
+ }
2514
+ }
2515
+ return { original: tokens, expanded: [...synonyms] };
2516
+ }
2517
+ var SYNONYM_MAP;
2518
+ var init_synonyms = __esm(() => {
2519
+ SYNONYM_MAP = {
2520
+ email: ["smtp", "mail", "inbox", "resend", "ses"],
2521
+ chat: ["messaging", "im", "slack", "discord", "teams"],
2522
+ sms: ["text", "twilio", "messaging"],
2523
+ payment: ["billing", "invoicing", "commerce", "checkout", "stripe"],
2524
+ payments: ["billing", "invoicing", "commerce", "checkout", "stripe"],
2525
+ ecommerce: ["shop", "store", "commerce", "shopify"],
2526
+ finance: ["banking", "accounting", "invoicing"],
2527
+ crypto: ["blockchain", "web3", "wallet"],
2528
+ ai: ["llm", "ml", "model", "gpt", "claude", "anthropic", "openai"],
2529
+ llm: ["ai", "model", "gpt", "claude"],
2530
+ auth: ["oauth", "sso", "login", "identity", "authentication"],
2531
+ database: ["db", "sql", "nosql", "postgres", "mongo", "supabase"],
2532
+ deploy: ["hosting", "infrastructure", "ci", "cd", "vercel"],
2533
+ storage: ["files", "drive", "s3", "bucket", "upload"],
2534
+ cloud: ["aws", "gcp", "azure", "infrastructure"],
2535
+ api: ["rest", "graphql", "endpoint", "webhook"],
2536
+ monitoring: ["logs", "observability", "alerting", "datadog", "sentry"],
2537
+ ci: ["cd", "deploy", "pipeline", "github", "actions"],
2538
+ crm: ["sales", "leads", "contacts", "hubspot", "salesforce"],
2539
+ analytics: ["data", "metrics", "tracking", "mixpanel", "amplitude"],
2540
+ project: ["task", "issue", "board", "jira", "linear", "asana"],
2541
+ docs: ["documentation", "wiki", "notion", "confluence"],
2542
+ design: ["figma", "sketch", "ui", "ux"],
2543
+ security: ["auth", "encryption", "compliance", "vault"]
2544
+ };
2545
+ });
2546
+
1871
2547
  // src/lib/registry.ts
1872
- import { existsSync, readFileSync } from "fs";
1873
- import { join, dirname } from "path";
2548
+ import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
2549
+ import { join as join3, dirname } from "path";
1874
2550
  import { fileURLToPath } from "url";
1875
2551
  function getConnectorsByCategory(category) {
1876
2552
  return CONNECTORS.filter((c) => c.category === category);
1877
2553
  }
1878
- function searchConnectors(query) {
1879
- const q = query.toLowerCase();
1880
- return CONNECTORS.filter((c) => c.name.toLowerCase().includes(q) || c.displayName.toLowerCase().includes(q) || c.description.toLowerCase().includes(q) || c.tags.some((t) => t.includes(q)));
2554
+ function searchConnectors(query, context) {
2555
+ const tokens = query.toLowerCase().trim().split(/\s+/).filter(Boolean);
2556
+ if (tokens.length === 0)
2557
+ return [];
2558
+ const limit = context?.limit ?? 20;
2559
+ const installed = new Set(context?.installed ?? []);
2560
+ const promoted = new Set(context?.promoted ?? []);
2561
+ const usage = context?.usage ?? new Map;
2562
+ const results = [];
2563
+ for (const c of CONNECTORS) {
2564
+ const nameLow = c.name.toLowerCase();
2565
+ const displayLow = c.displayName.toLowerCase();
2566
+ const descLow = c.description.toLowerCase();
2567
+ const tagsLow = c.tags.map((t) => t.toLowerCase());
2568
+ let score = 0;
2569
+ const matchReasons = [];
2570
+ let allTokensMatch = true;
2571
+ for (const token of tokens) {
2572
+ let tokenMatched = false;
2573
+ if (nameLow === token) {
2574
+ score += 100;
2575
+ matchReasons.push(`name="${token}"`);
2576
+ tokenMatched = true;
2577
+ } else if (nameLow.includes(token)) {
2578
+ score += 10;
2579
+ matchReasons.push(`name~${token}`);
2580
+ tokenMatched = true;
2581
+ }
2582
+ if (tagsLow.includes(token)) {
2583
+ score += 8;
2584
+ if (!tokenMatched)
2585
+ matchReasons.push(`tag="${token}"`);
2586
+ tokenMatched = true;
2587
+ } else if (tagsLow.some((t) => t.includes(token))) {
2588
+ score += 5;
2589
+ if (!tokenMatched)
2590
+ matchReasons.push(`tag~${token}`);
2591
+ tokenMatched = true;
2592
+ }
2593
+ if (displayLow.includes(token)) {
2594
+ score += 3;
2595
+ if (!tokenMatched)
2596
+ matchReasons.push(`display~${token}`);
2597
+ tokenMatched = true;
2598
+ }
2599
+ if (descLow.includes(token)) {
2600
+ score += 1;
2601
+ if (!tokenMatched)
2602
+ matchReasons.push(`desc~${token}`);
2603
+ tokenMatched = true;
2604
+ }
2605
+ if (!tokenMatched && token.length >= 3) {
2606
+ const nameFuzzy = bestFuzzyScore(token, [nameLow], 1);
2607
+ if (nameFuzzy > 0) {
2608
+ score += nameFuzzy * 6;
2609
+ matchReasons.push(`fuzzy:name\u2248${token}`);
2610
+ tokenMatched = true;
2611
+ }
2612
+ if (!tokenMatched) {
2613
+ const tagFuzzy = bestFuzzyScore(token, tagsLow, 2);
2614
+ if (tagFuzzy > 0) {
2615
+ score += tagFuzzy * 3;
2616
+ matchReasons.push(`fuzzy:tag\u2248${token}`);
2617
+ tokenMatched = true;
2618
+ }
2619
+ }
2620
+ if (!tokenMatched) {
2621
+ const displayFuzzy = bestFuzzyScore(token, [displayLow], 2);
2622
+ if (displayFuzzy > 0) {
2623
+ score += displayFuzzy * 2;
2624
+ matchReasons.push(`fuzzy:display\u2248${token}`);
2625
+ tokenMatched = true;
2626
+ }
2627
+ }
2628
+ }
2629
+ if (!tokenMatched) {
2630
+ allTokensMatch = false;
2631
+ break;
2632
+ }
2633
+ }
2634
+ if (!allTokensMatch)
2635
+ continue;
2636
+ const badges = [];
2637
+ if (installed.has(c.name)) {
2638
+ score += 50;
2639
+ badges.push("installed");
2640
+ }
2641
+ if (promoted.has(c.name)) {
2642
+ score += 30;
2643
+ badges.push("promoted");
2644
+ }
2645
+ const usageCount = usage.get(c.name) ?? 0;
2646
+ if (usageCount > 0) {
2647
+ score += Math.min(usageCount * 2, 40);
2648
+ if (usageCount >= 5)
2649
+ badges.push("hot");
2650
+ }
2651
+ results.push({ ...c, score, matchReasons, badges });
2652
+ }
2653
+ const matchedNames = new Set(results.map((r) => r.name));
2654
+ if (results.length < limit) {
2655
+ const { expanded } = expandQuery(tokens);
2656
+ if (expanded.length > 0) {
2657
+ for (const c of CONNECTORS) {
2658
+ if (matchedNames.has(c.name))
2659
+ continue;
2660
+ const nameLow2 = c.name.toLowerCase();
2661
+ const tagsLow2 = c.tags.map((t) => t.toLowerCase());
2662
+ const descLow2 = c.description.toLowerCase();
2663
+ let synScore = 0;
2664
+ const synReasons = [];
2665
+ for (const syn of expanded) {
2666
+ if (nameLow2.includes(syn)) {
2667
+ synScore += 2;
2668
+ synReasons.push(`syn:name~${syn}`);
2669
+ } else if (tagsLow2.some((t) => t.includes(syn))) {
2670
+ synScore += 1;
2671
+ synReasons.push(`syn:tag~${syn}`);
2672
+ } else if (descLow2.includes(syn)) {
2673
+ synScore += 1;
2674
+ synReasons.push(`syn:desc~${syn}`);
2675
+ }
2676
+ }
2677
+ if (synScore > 0) {
2678
+ const badges = [];
2679
+ if (installed.has(c.name)) {
2680
+ synScore += 50;
2681
+ badges.push("installed");
2682
+ }
2683
+ if (promoted.has(c.name)) {
2684
+ synScore += 30;
2685
+ badges.push("promoted");
2686
+ }
2687
+ const usageCount = usage.get(c.name) ?? 0;
2688
+ if (usageCount > 0) {
2689
+ synScore += Math.min(usageCount * 2, 40);
2690
+ if (usageCount >= 5)
2691
+ badges.push("hot");
2692
+ }
2693
+ results.push({ ...c, score: synScore, matchReasons: synReasons, badges });
2694
+ }
2695
+ }
2696
+ }
2697
+ }
2698
+ results.sort((a, b) => b.score - a.score);
2699
+ return results.slice(0, limit);
1881
2700
  }
1882
2701
  function getConnector(name) {
1883
2702
  return CONNECTORS.find((c) => c.name === name);
@@ -1888,17 +2707,17 @@ function loadConnectorVersions() {
1888
2707
  versionsLoaded = true;
1889
2708
  const thisDir = dirname(fileURLToPath(import.meta.url));
1890
2709
  const candidates = [
1891
- join(thisDir, "..", "connectors"),
1892
- join(thisDir, "..", "..", "connectors")
2710
+ join3(thisDir, "..", "connectors"),
2711
+ join3(thisDir, "..", "..", "connectors")
1893
2712
  ];
1894
- const connectorsDir = candidates.find((d) => existsSync(d));
2713
+ const connectorsDir = candidates.find((d) => existsSync2(d));
1895
2714
  if (!connectorsDir)
1896
2715
  return;
1897
2716
  for (const connector of CONNECTORS) {
1898
2717
  try {
1899
- const pkgPath = join(connectorsDir, `connect-${connector.name}`, "package.json");
1900
- if (existsSync(pkgPath)) {
1901
- const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
2718
+ const pkgPath = join3(connectorsDir, `connect-${connector.name}`, "package.json");
2719
+ if (existsSync2(pkgPath)) {
2720
+ const pkg = JSON.parse(readFileSync2(pkgPath, "utf-8"));
1902
2721
  connector.version = pkg.version || "0.0.0";
1903
2722
  }
1904
2723
  } catch {}
@@ -1906,6 +2725,7 @@ function loadConnectorVersions() {
1906
2725
  }
1907
2726
  var CATEGORIES, CONNECTORS, versionsLoaded = false;
1908
2727
  var init_registry = __esm(() => {
2728
+ init_synonyms();
1909
2729
  CATEGORIES = [
1910
2730
  "AI & ML",
1911
2731
  "Developer Tools",
@@ -2311,6 +3131,13 @@ var init_registry = __esm(() => {
2311
3131
  category: "Data & Analytics",
2312
3132
  tags: ["weather", "data"]
2313
3133
  },
3134
+ {
3135
+ name: "arxiv",
3136
+ displayName: "arXiv",
3137
+ description: "Research paper search and retrieval",
3138
+ category: "Data & Analytics",
3139
+ tags: ["research", "papers", "academic"]
3140
+ },
2314
3141
  {
2315
3142
  name: "brandsight",
2316
3143
  displayName: "Brandsight",
@@ -6791,13 +7618,6 @@ var init_registry = __esm(() => {
6791
7618
  category: "Business Tools",
6792
7619
  tags: ["e-signature", "contracts", "digital", "documents", "legal"]
6793
7620
  },
6794
- {
6795
- name: "yousign",
6796
- displayName: "Yousign",
6797
- description: "eIDAS-compliant electronic signature API for EU workflows",
6798
- category: "Business Tools",
6799
- tags: ["e-signature", "eidas", "contracts", "documents", "legal", "eu"]
6800
- },
6801
7621
  {
6802
7622
  name: "signl4",
6803
7623
  displayName: "SIGNL4",
@@ -9471,23 +10291,28 @@ var require_cli_spinners = __commonJS((exports, module) => {
9471
10291
  });
9472
10292
 
9473
10293
  // src/lib/installer.ts
9474
- import { existsSync as existsSync2, readFileSync as readFileSync2, readdirSync, statSync } from "fs";
9475
- import { join as join2, dirname as dirname2 } from "path";
10294
+ import { existsSync as existsSync3, cpSync, mkdirSync as mkdirSync3, readFileSync as readFileSync3, writeFileSync as writeFileSync2, readdirSync, statSync, rmSync } from "fs";
10295
+ import { homedir as homedir3 } from "os";
10296
+ import { join as join4, dirname as dirname2 } from "path";
9476
10297
  import { fileURLToPath as fileURLToPath2 } from "url";
9477
10298
  function resolveConnectorsDir() {
9478
- const fromBin = join2(__dirname2, "..", "connectors");
9479
- if (existsSync2(fromBin))
10299
+ const fromBin = join4(__dirname2, "..", "connectors");
10300
+ if (existsSync3(fromBin))
9480
10301
  return fromBin;
9481
- const fromSrc = join2(__dirname2, "..", "..", "connectors");
9482
- if (existsSync2(fromSrc))
10302
+ const fromSrc = join4(__dirname2, "..", "..", "connectors");
10303
+ if (existsSync3(fromSrc))
9483
10304
  return fromSrc;
9484
10305
  return fromBin;
9485
10306
  }
9486
10307
  function getConnectorPath(name) {
9487
10308
  const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
9488
- return join2(CONNECTORS_DIR, connectorName);
10309
+ return join4(CONNECTORS_DIR, connectorName);
10310
+ }
10311
+ function connectorExists(name) {
10312
+ return existsSync3(getConnectorPath(name));
9489
10313
  }
9490
10314
  function installConnector(name, options = {}) {
10315
+ const { targetDir = process.cwd(), overwrite = false } = options;
9491
10316
  if (!/^[a-z0-9-]+$/.test(name)) {
9492
10317
  return {
9493
10318
  connector: name,
@@ -9495,35 +10320,91 @@ function installConnector(name, options = {}) {
9495
10320
  error: `Invalid connector name '${name}'`
9496
10321
  };
9497
10322
  }
10323
+ const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
9498
10324
  const sourcePath = getConnectorPath(name);
9499
- if (!existsSync2(sourcePath)) {
10325
+ const destDir = join4(targetDir, ".connectors");
10326
+ const destPath = join4(destDir, connectorName);
10327
+ if (!existsSync3(sourcePath)) {
9500
10328
  return {
9501
10329
  connector: name,
9502
10330
  success: false,
9503
10331
  error: `Connector '${name}' not found`
9504
10332
  };
9505
10333
  }
9506
- return {
9507
- connector: name,
9508
- success: true,
9509
- path: sourcePath
9510
- };
10334
+ if (existsSync3(destPath) && !overwrite) {
10335
+ return {
10336
+ connector: name,
10337
+ success: false,
10338
+ error: `Already installed. Use --overwrite to replace.`,
10339
+ path: destPath
10340
+ };
10341
+ }
10342
+ try {
10343
+ if (!existsSync3(destDir)) {
10344
+ mkdirSync3(destDir, { recursive: true });
10345
+ }
10346
+ cpSync(sourcePath, destPath, { recursive: true });
10347
+ const homeCredDir = join4(homedir3(), ".connectors", connectorName);
10348
+ if (existsSync3(homeCredDir)) {
10349
+ const filesToCopy = ["credentials.json", "current_profile"];
10350
+ for (const file of filesToCopy) {
10351
+ const src = join4(homeCredDir, file);
10352
+ if (existsSync3(src)) {
10353
+ cpSync(src, join4(destPath, file));
10354
+ }
10355
+ }
10356
+ const profilesDir = join4(homeCredDir, "profiles");
10357
+ if (existsSync3(profilesDir)) {
10358
+ cpSync(profilesDir, join4(destPath, "profiles"), { recursive: true });
10359
+ }
10360
+ }
10361
+ updateConnectorsIndex(destDir);
10362
+ return {
10363
+ connector: name,
10364
+ success: true,
10365
+ path: destPath
10366
+ };
10367
+ } catch (error) {
10368
+ return {
10369
+ connector: name,
10370
+ success: false,
10371
+ error: error instanceof Error ? error.message : "Unknown error"
10372
+ };
10373
+ }
9511
10374
  }
9512
- function getInstalledConnectors() {
9513
- if (!existsSync2(CONNECTORS_DIR)) {
10375
+ function updateConnectorsIndex(connectorsDir) {
10376
+ const indexPath = join4(connectorsDir, "index.ts");
10377
+ const connectors = readdirSync(connectorsDir).filter((f) => f.startsWith("connect-") && !f.includes("."));
10378
+ const exports = connectors.map((c) => {
10379
+ const name = c.replace("connect-", "");
10380
+ return `export * as ${name} from './${c}/src/index.js';`;
10381
+ }).join(`
10382
+ `);
10383
+ const content = `/**
10384
+ * Auto-generated index of installed connectors
10385
+ * Do not edit manually - run 'connectors install' to update
10386
+ */
10387
+
10388
+ ${exports}
10389
+ `;
10390
+ writeFileSync2(indexPath, content);
10391
+ }
10392
+ function getInstalledConnectors(targetDir = process.cwd()) {
10393
+ const connectorsDir = join4(targetDir, ".connectors");
10394
+ if (!existsSync3(connectorsDir)) {
9514
10395
  return [];
9515
10396
  }
9516
- return readdirSync(CONNECTORS_DIR).filter((f) => {
9517
- const fullPath = join2(CONNECTORS_DIR, f);
10397
+ return readdirSync(connectorsDir).filter((f) => {
10398
+ const fullPath = join4(connectorsDir, f);
9518
10399
  return f.startsWith("connect-") && statSync(fullPath).isDirectory();
9519
10400
  }).map((f) => f.replace("connect-", ""));
9520
10401
  }
9521
10402
  function getConnectorDocs(name) {
9522
10403
  const connectorPath = getConnectorPath(name);
9523
- const claudeMdPath = join2(connectorPath, "CLAUDE.md");
9524
- if (!existsSync2(claudeMdPath))
10404
+ const claudeMdPath = join4(connectorPath, "CLAUDE.md");
10405
+ if (!existsSync3(claudeMdPath))
9525
10406
  return null;
9526
- const raw = readFileSync2(claudeMdPath, "utf-8");
10407
+ const raw = readFileSync3(claudeMdPath, "utf-8");
9527
10408
  return {
9528
10409
  overview: extractSection(raw, "Project Overview"),
9529
10410
  auth: extractSection(raw, "Authentication"),
@@ -9560,8 +10441,16 @@ function parseEnvVarsTable(section) {
9560
10441
  }
9561
10442
  return vars;
9562
10443
  }
9563
- function removeConnector(name) {
9564
- return false;
10444
+ function removeConnector(name, targetDir = process.cwd()) {
10445
+ const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
10446
+ const connectorsDir = join4(targetDir, ".connectors");
10447
+ const connectorPath = join4(connectorsDir, connectorName);
10448
+ if (!existsSync3(connectorPath)) {
10449
+ return false;
10450
+ }
10451
+ rmSync(connectorPath, { recursive: true });
10452
+ updateConnectorsIndex(connectorsDir);
10453
+ return true;
9565
10454
  }
9566
10455
  var __dirname2, CONNECTORS_DIR;
9567
10456
  var init_installer = __esm(() => {
@@ -9569,11 +10458,77 @@ var init_installer = __esm(() => {
9569
10458
  CONNECTORS_DIR = resolveConnectorsDir();
9570
10459
  });
9571
10460
 
10461
+ // src/lib/lock.ts
10462
+ import { openSync, closeSync, unlinkSync, existsSync as existsSync4, statSync as statSync2 } from "fs";
10463
+ import { join as join5 } from "path";
10464
+ import { homedir as homedir4 } from "os";
10465
+ import { mkdirSync as mkdirSync4 } from "fs";
10466
+ function lockPath(connector) {
10467
+ const dir = join5(homedir4(), ".connectors", `connect-${connector}`);
10468
+ mkdirSync4(dir, { recursive: true });
10469
+ return join5(dir, ".write.lock");
10470
+ }
10471
+ function isStale(path) {
10472
+ try {
10473
+ const stat = statSync2(path);
10474
+ return Date.now() - stat.mtimeMs > STALE_LOCK_MS;
10475
+ } catch {
10476
+ return false;
10477
+ }
10478
+ }
10479
+ function tryAcquire(path) {
10480
+ if (existsSync4(path) && isStale(path)) {
10481
+ try {
10482
+ unlinkSync(path);
10483
+ } catch {}
10484
+ }
10485
+ try {
10486
+ const fd = openSync(path, "wx");
10487
+ closeSync(fd);
10488
+ return true;
10489
+ } catch (e) {
10490
+ if (e.code === "EEXIST")
10491
+ return false;
10492
+ throw e;
10493
+ }
10494
+ }
10495
+ function release(path) {
10496
+ try {
10497
+ unlinkSync(path);
10498
+ } catch {}
10499
+ }
10500
+ async function withWriteLock(connector, fn) {
10501
+ const path = lockPath(connector);
10502
+ const deadline = Date.now() + LOCK_TIMEOUT_MS;
10503
+ while (Date.now() < deadline) {
10504
+ if (tryAcquire(path)) {
10505
+ try {
10506
+ return await fn();
10507
+ } finally {
10508
+ release(path);
10509
+ }
10510
+ }
10511
+ await new Promise((resolve) => setTimeout(resolve, LOCK_RETRY_MS));
10512
+ }
10513
+ throw new LockTimeoutError(connector);
10514
+ }
10515
+ var LOCK_TIMEOUT_MS = 5000, LOCK_RETRY_MS = 100, STALE_LOCK_MS = 30000, LockTimeoutError;
10516
+ var init_lock = __esm(() => {
10517
+ LockTimeoutError = class LockTimeoutError extends Error {
10518
+ connector;
10519
+ constructor(connector) {
10520
+ super(`Could not acquire write lock for connector "${connector}" within ${LOCK_TIMEOUT_MS}ms. Another agent may be writing. Try again shortly.`);
10521
+ this.connector = connector;
10522
+ this.name = "LockTimeoutError";
10523
+ }
10524
+ };
10525
+ });
10526
+
9572
10527
  // src/server/auth.ts
9573
- import { existsSync as existsSync3, readFileSync as readFileSync3, writeFileSync, mkdirSync, readdirSync as readdirSync2, rmSync, statSync as statSync2 } from "fs";
10528
+ import { existsSync as existsSync5, readFileSync as readFileSync4, writeFileSync as writeFileSync3, mkdirSync as mkdirSync5, readdirSync as readdirSync2, rmSync as rmSync2, statSync as statSync3 } from "fs";
9574
10529
  import { randomBytes } from "crypto";
9575
- import { homedir } from "os";
9576
- import { join as join3 } from "path";
10530
+ import { homedir as homedir5 } from "os";
10531
+ import { join as join6 } from "path";
9577
10532
  function getAuthType(name) {
9578
10533
  const docs = getConnectorDocs(name);
9579
10534
  if (!docs?.auth)
@@ -9587,14 +10542,14 @@ function getAuthType(name) {
9587
10542
  }
9588
10543
  function getConnectorConfigDir(name) {
9589
10544
  const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
9590
- return join3(homedir(), ".connectors", connectorName);
10545
+ return join6(homedir5(), ".connectors", connectorName);
9591
10546
  }
9592
10547
  function getCurrentProfile(name) {
9593
10548
  const configDir = getConnectorConfigDir(name);
9594
- const currentProfileFile = join3(configDir, "current_profile");
9595
- if (existsSync3(currentProfileFile)) {
10549
+ const currentProfileFile = join6(configDir, "current_profile");
10550
+ if (existsSync5(currentProfileFile)) {
9596
10551
  try {
9597
- return readFileSync3(currentProfileFile, "utf-8").trim() || "default";
10552
+ return readFileSync4(currentProfileFile, "utf-8").trim() || "default";
9598
10553
  } catch {
9599
10554
  return "default";
9600
10555
  }
@@ -9606,16 +10561,16 @@ function loadProfileConfig(name) {
9606
10561
  const profile = getCurrentProfile(name);
9607
10562
  let flatConfig = {};
9608
10563
  let dirConfig = {};
9609
- const profileFile = join3(configDir, "profiles", `${profile}.json`);
9610
- if (existsSync3(profileFile)) {
10564
+ const profileFile = join6(configDir, "profiles", `${profile}.json`);
10565
+ if (existsSync5(profileFile)) {
9611
10566
  try {
9612
- flatConfig = JSON.parse(readFileSync3(profileFile, "utf-8"));
10567
+ flatConfig = JSON.parse(readFileSync4(profileFile, "utf-8"));
9613
10568
  } catch {}
9614
10569
  }
9615
- const profileDirConfig = join3(configDir, "profiles", profile, "config.json");
9616
- if (existsSync3(profileDirConfig)) {
10570
+ const profileDirConfig = join6(configDir, "profiles", profile, "config.json");
10571
+ if (existsSync5(profileDirConfig)) {
9617
10572
  try {
9618
- dirConfig = JSON.parse(readFileSync3(profileDirConfig, "utf-8"));
10573
+ dirConfig = JSON.parse(readFileSync4(profileDirConfig, "utf-8"));
9619
10574
  } catch {}
9620
10575
  }
9621
10576
  if (Object.keys(flatConfig).length === 0 && Object.keys(dirConfig).length === 0) {
@@ -9626,14 +10581,24 @@ function loadProfileConfig(name) {
9626
10581
  function loadTokens(name) {
9627
10582
  const configDir = getConnectorConfigDir(name);
9628
10583
  const profile = getCurrentProfile(name);
9629
- const tokensFile = join3(configDir, "profiles", profile, "tokens.json");
9630
- if (existsSync3(tokensFile)) {
10584
+ const tokensFile = join6(configDir, "profiles", profile, "tokens.json");
10585
+ if (existsSync5(tokensFile)) {
9631
10586
  try {
9632
- return JSON.parse(readFileSync3(tokensFile, "utf-8"));
10587
+ return JSON.parse(readFileSync4(tokensFile, "utf-8"));
9633
10588
  } catch {
9634
10589
  return null;
9635
10590
  }
9636
10591
  }
10592
+ const profileConfig = loadProfileConfig(name);
10593
+ if (profileConfig.refreshToken || profileConfig.accessToken) {
10594
+ return {
10595
+ accessToken: profileConfig.accessToken ?? "",
10596
+ refreshToken: profileConfig.refreshToken,
10597
+ expiresAt: profileConfig.expiresAt ?? 0,
10598
+ tokenType: profileConfig.tokenType,
10599
+ scope: profileConfig.scope
10600
+ };
10601
+ }
9637
10602
  return null;
9638
10603
  }
9639
10604
  function getAuthStatus(name) {
@@ -9678,48 +10643,51 @@ function getEnvVars(name) {
9678
10643
  const docs = getConnectorDocs(name);
9679
10644
  return docs?.envVars || [];
9680
10645
  }
9681
- function saveApiKey(name, key, field) {
10646
+ async function saveApiKey(name, key, field) {
10647
+ return withWriteLock(name, () => _saveApiKey(name, key, field));
10648
+ }
10649
+ function _saveApiKey(name, key, field) {
9682
10650
  const configDir = getConnectorConfigDir(name);
9683
10651
  const profile = getCurrentProfile(name);
9684
10652
  const keyField = field || guessKeyField(name);
9685
10653
  if (keyField === "clientId" || keyField === "clientSecret") {
9686
- const credentialsFile = join3(configDir, "credentials.json");
9687
- mkdirSync(configDir, { recursive: true });
10654
+ const credentialsFile = join6(configDir, "credentials.json");
10655
+ mkdirSync5(configDir, { recursive: true });
9688
10656
  let creds = {};
9689
- if (existsSync3(credentialsFile)) {
10657
+ if (existsSync5(credentialsFile)) {
9690
10658
  try {
9691
- creds = JSON.parse(readFileSync3(credentialsFile, "utf-8"));
10659
+ creds = JSON.parse(readFileSync4(credentialsFile, "utf-8"));
9692
10660
  } catch {}
9693
10661
  }
9694
10662
  creds[keyField] = key;
9695
- writeFileSync(credentialsFile, JSON.stringify(creds, null, 2));
10663
+ writeFileSync3(credentialsFile, JSON.stringify(creds, null, 2));
9696
10664
  return;
9697
10665
  }
9698
- const profileFile = join3(configDir, "profiles", `${profile}.json`);
9699
- const profileDir = join3(configDir, "profiles", profile);
9700
- if (existsSync3(profileFile)) {
10666
+ const profileFile = join6(configDir, "profiles", `${profile}.json`);
10667
+ const profileDir = join6(configDir, "profiles", profile);
10668
+ if (existsSync5(profileFile)) {
9701
10669
  let config = {};
9702
10670
  try {
9703
- config = JSON.parse(readFileSync3(profileFile, "utf-8"));
10671
+ config = JSON.parse(readFileSync4(profileFile, "utf-8"));
9704
10672
  } catch {}
9705
10673
  config[keyField] = key;
9706
- writeFileSync(profileFile, JSON.stringify(config, null, 2));
10674
+ writeFileSync3(profileFile, JSON.stringify(config, null, 2));
9707
10675
  return;
9708
10676
  }
9709
- if (existsSync3(profileDir)) {
9710
- const configFile = join3(profileDir, "config.json");
10677
+ if (existsSync5(profileDir)) {
10678
+ const configFile = join6(profileDir, "config.json");
9711
10679
  let config = {};
9712
- if (existsSync3(configFile)) {
10680
+ if (existsSync5(configFile)) {
9713
10681
  try {
9714
- config = JSON.parse(readFileSync3(configFile, "utf-8"));
10682
+ config = JSON.parse(readFileSync4(configFile, "utf-8"));
9715
10683
  } catch {}
9716
10684
  }
9717
10685
  config[keyField] = key;
9718
- writeFileSync(configFile, JSON.stringify(config, null, 2));
10686
+ writeFileSync3(configFile, JSON.stringify(config, null, 2));
9719
10687
  return;
9720
10688
  }
9721
- mkdirSync(profileDir, { recursive: true });
9722
- writeFileSync(join3(profileDir, "config.json"), JSON.stringify({ [keyField]: key }, null, 2));
10689
+ mkdirSync5(profileDir, { recursive: true });
10690
+ writeFileSync3(join6(profileDir, "config.json"), JSON.stringify({ [keyField]: key }, null, 2));
9723
10691
  }
9724
10692
  function guessKeyField(name) {
9725
10693
  const docs = getConnectorDocs(name);
@@ -9737,10 +10705,10 @@ function guessKeyField(name) {
9737
10705
  }
9738
10706
  function getOAuthConfig(name) {
9739
10707
  const configDir = getConnectorConfigDir(name);
9740
- const credentialsFile = join3(configDir, "credentials.json");
9741
- if (existsSync3(credentialsFile)) {
10708
+ const credentialsFile = join6(configDir, "credentials.json");
10709
+ if (existsSync5(credentialsFile)) {
9742
10710
  try {
9743
- const creds = JSON.parse(readFileSync3(credentialsFile, "utf-8"));
10711
+ const creds = JSON.parse(readFileSync4(credentialsFile, "utf-8"));
9744
10712
  return { clientId: creds.clientId, clientSecret: creds.clientSecret };
9745
10713
  } catch {}
9746
10714
  }
@@ -9819,12 +10787,15 @@ async function exchangeOAuthCode(name, code, redirectUri) {
9819
10787
  function saveOAuthTokens(name, tokens) {
9820
10788
  const configDir = getConnectorConfigDir(name);
9821
10789
  const profile = getCurrentProfile(name);
9822
- const profileDir = join3(configDir, "profiles", profile);
9823
- mkdirSync(profileDir, { recursive: true });
9824
- const tokensFile = join3(profileDir, "tokens.json");
9825
- writeFileSync(tokensFile, JSON.stringify(tokens, null, 2), { mode: 384 });
10790
+ const profileDir = join6(configDir, "profiles", profile);
10791
+ mkdirSync5(profileDir, { recursive: true });
10792
+ const tokensFile = join6(profileDir, "tokens.json");
10793
+ writeFileSync3(tokensFile, JSON.stringify(tokens, null, 2), { mode: 384 });
9826
10794
  }
9827
10795
  async function refreshOAuthToken(name) {
10796
+ return withWriteLock(name, () => _refreshOAuthToken(name));
10797
+ }
10798
+ async function _refreshOAuthToken(name) {
9828
10799
  const oauthConfig = getOAuthConfig(name);
9829
10800
  const currentTokens = loadTokens(name);
9830
10801
  if (!oauthConfig.clientId || !oauthConfig.clientSecret) {
@@ -9861,15 +10832,15 @@ async function refreshOAuthToken(name) {
9861
10832
  }
9862
10833
  function listProfiles(name) {
9863
10834
  const configDir = getConnectorConfigDir(name);
9864
- const profilesDir = join3(configDir, "profiles");
9865
- if (!existsSync3(profilesDir))
10835
+ const profilesDir = join6(configDir, "profiles");
10836
+ if (!existsSync5(profilesDir))
9866
10837
  return ["default"];
9867
10838
  const seen = new Set;
9868
10839
  try {
9869
10840
  const entries = readdirSync2(profilesDir);
9870
10841
  for (const entry of entries) {
9871
- const fullPath = join3(profilesDir, entry);
9872
- const stat = statSync2(fullPath);
10842
+ const fullPath = join6(profilesDir, entry);
10843
+ const stat = statSync3(fullPath);
9873
10844
  if (stat.isDirectory()) {
9874
10845
  seen.add(entry);
9875
10846
  } else if (entry.endsWith(".json")) {
@@ -9882,25 +10853,25 @@ function listProfiles(name) {
9882
10853
  }
9883
10854
  function switchProfile(name, profile) {
9884
10855
  const configDir = getConnectorConfigDir(name);
9885
- mkdirSync(configDir, { recursive: true });
9886
- writeFileSync(join3(configDir, "current_profile"), profile);
10856
+ mkdirSync5(configDir, { recursive: true });
10857
+ writeFileSync3(join6(configDir, "current_profile"), profile);
9887
10858
  }
9888
10859
  function deleteProfile(name, profile) {
9889
10860
  if (profile === "default")
9890
10861
  return false;
9891
10862
  const configDir = getConnectorConfigDir(name);
9892
- const profilesDir = join3(configDir, "profiles");
9893
- const profileFile = join3(profilesDir, `${profile}.json`);
9894
- if (existsSync3(profileFile)) {
9895
- rmSync(profileFile);
10863
+ const profilesDir = join6(configDir, "profiles");
10864
+ const profileFile = join6(profilesDir, `${profile}.json`);
10865
+ if (existsSync5(profileFile)) {
10866
+ rmSync2(profileFile);
9896
10867
  if (getCurrentProfile(name) === profile) {
9897
10868
  switchProfile(name, "default");
9898
10869
  }
9899
10870
  return true;
9900
10871
  }
9901
- const profileDir = join3(profilesDir, profile);
9902
- if (existsSync3(profileDir)) {
9903
- rmSync(profileDir, { recursive: true });
10872
+ const profileDir = join6(profilesDir, profile);
10873
+ if (existsSync5(profileDir)) {
10874
+ rmSync2(profileDir, { recursive: true });
9904
10875
  if (getCurrentProfile(name) === profile) {
9905
10876
  switchProfile(name, "default");
9906
10877
  }
@@ -9911,6 +10882,7 @@ function deleteProfile(name, profile) {
9911
10882
  var FETCH_TIMEOUT = 1e4, oauthStateStore, GOOGLE_AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth", GOOGLE_TOKEN_URL = "https://oauth2.googleapis.com/token", GOOGLE_SCOPES;
9912
10883
  var init_auth = __esm(() => {
9913
10884
  init_installer();
10885
+ init_lock();
9914
10886
  oauthStateStore = new Map;
9915
10887
  GOOGLE_SCOPES = {
9916
10888
  gmail: [
@@ -9952,15 +10924,222 @@ var init_auth = __esm(() => {
9952
10924
  };
9953
10925
  });
9954
10926
 
10927
+ // src/db/promotions.ts
10928
+ var exports_promotions = {};
10929
+ __export(exports_promotions, {
10930
+ promoteConnector: () => promoteConnector,
10931
+ isPromoted: () => isPromoted,
10932
+ getPromotedConnectors: () => getPromotedConnectors,
10933
+ demoteConnector: () => demoteConnector
10934
+ });
10935
+ function promoteConnector(name, db) {
10936
+ const d = db ?? getDatabase();
10937
+ d.run("INSERT OR REPLACE INTO connector_promotions (connector, promoted_at) VALUES (?, ?)", [name, now()]);
10938
+ }
10939
+ function demoteConnector(name, db) {
10940
+ const d = db ?? getDatabase();
10941
+ return d.run("DELETE FROM connector_promotions WHERE connector = ?", [name]).changes > 0;
10942
+ }
10943
+ function getPromotedConnectors(db) {
10944
+ const d = db ?? getDatabase();
10945
+ return d.query("SELECT connector FROM connector_promotions ORDER BY promoted_at DESC").all().map((r) => r.connector);
10946
+ }
10947
+ function isPromoted(name, db) {
10948
+ const d = db ?? getDatabase();
10949
+ const row = d.query("SELECT 1 FROM connector_promotions WHERE connector = ?").get(name);
10950
+ return !!row;
10951
+ }
10952
+ var init_promotions = __esm(() => {
10953
+ init_database();
10954
+ });
10955
+
10956
+ // src/db/usage.ts
10957
+ var exports_usage = {};
10958
+ __export(exports_usage, {
10959
+ logUsage: () => logUsage,
10960
+ getUsageStats: () => getUsageStats,
10961
+ getUsageMap: () => getUsageMap,
10962
+ getTopConnectors: () => getTopConnectors,
10963
+ cleanOldUsage: () => cleanOldUsage
10964
+ });
10965
+ function logUsage(connector, action, agentId, db) {
10966
+ const d = db ?? getDatabase();
10967
+ d.run("INSERT INTO connector_usage (id, connector, action, agent_id, timestamp) VALUES (?, ?, ?, ?, ?)", [shortUuid(), connector, action, agentId ?? null, now()]);
10968
+ }
10969
+ function getUsageStats(connector, db) {
10970
+ const d = db ?? getDatabase();
10971
+ const total = d.query("SELECT COUNT(*) as c FROM connector_usage WHERE connector = ?").get(connector).c;
10972
+ const d7 = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
10973
+ const last7d = d.query("SELECT COUNT(*) as c FROM connector_usage WHERE connector = ? AND timestamp > ?").get(connector, d7).c;
10974
+ const d1 = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
10975
+ const last24h = d.query("SELECT COUNT(*) as c FROM connector_usage WHERE connector = ? AND timestamp > ?").get(connector, d1).c;
10976
+ return { connector, total, last7d, last24h };
10977
+ }
10978
+ function getTopConnectors(limit = 10, days = 7, db) {
10979
+ const d = db ?? getDatabase();
10980
+ const since = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
10981
+ return d.query("SELECT connector, COUNT(*) as count FROM connector_usage WHERE timestamp > ? GROUP BY connector ORDER BY count DESC LIMIT ?").all(since, limit);
10982
+ }
10983
+ function getUsageMap(days = 7, db) {
10984
+ const top = getTopConnectors(100, days, db);
10985
+ return new Map(top.map((t) => [t.connector, t.count]));
10986
+ }
10987
+ function cleanOldUsage(days = 30, db) {
10988
+ const d = db ?? getDatabase();
10989
+ const cutoff = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
10990
+ return d.run("DELETE FROM connector_usage WHERE timestamp < ?", [cutoff]).changes;
10991
+ }
10992
+ var init_usage = __esm(() => {
10993
+ init_database();
10994
+ });
10995
+
10996
+ // src/db/agents.ts
10997
+ function shortUuid2() {
10998
+ return crypto.randomUUID().slice(0, 8);
10999
+ }
11000
+ function isAgentConflict(result) {
11001
+ return result.conflict === true;
11002
+ }
11003
+ function registerAgent(input, db) {
11004
+ const d = db ?? getDatabase();
11005
+ const normalizedName = input.name.trim().toLowerCase();
11006
+ const existing = getAgentByName(normalizedName, d);
11007
+ if (existing) {
11008
+ const lastSeenMs = new Date(existing.last_seen_at).getTime();
11009
+ const isActive = Date.now() - lastSeenMs < AGENT_ACTIVE_WINDOW_MS;
11010
+ const sameSession = input.session_id && existing.session_id && input.session_id === existing.session_id;
11011
+ const differentSession = input.session_id && existing.session_id && input.session_id !== existing.session_id;
11012
+ if (isActive && differentSession) {
11013
+ const minutesAgo = Math.round((Date.now() - lastSeenMs) / 60000);
11014
+ return {
11015
+ conflict: true,
11016
+ existing_id: existing.id,
11017
+ existing_name: existing.name,
11018
+ last_seen_at: existing.last_seen_at,
11019
+ session_hint: existing.session_id ? existing.session_id.slice(0, 8) : null,
11020
+ working_dir: null,
11021
+ message: `Agent "${normalizedName}" is already active (last seen ${minutesAgo}m ago). Pass session_id="${existing.session_id}" to reclaim it, or choose a different name.`
11022
+ };
11023
+ }
11024
+ const updates = ["last_seen_at = ?"];
11025
+ const params = [now()];
11026
+ if (input.session_id && !sameSession) {
11027
+ updates.push("session_id = ?");
11028
+ params.push(input.session_id);
11029
+ }
11030
+ params.push(existing.id);
11031
+ d.run(`UPDATE agents SET ${updates.join(", ")} WHERE id = ?`, params);
11032
+ return getAgent(existing.id, d);
11033
+ }
11034
+ const id = shortUuid2();
11035
+ const ts = now();
11036
+ d.run(`INSERT INTO agents (id, name, session_id, role, last_seen_at, created_at)
11037
+ VALUES (?, ?, ?, ?, ?, ?)`, [id, normalizedName, input.session_id ?? null, input.role ?? "agent", ts, ts]);
11038
+ return getAgent(id, d);
11039
+ }
11040
+ function getAgent(id, db) {
11041
+ const d = db ?? getDatabase();
11042
+ return d.query("SELECT * FROM agents WHERE id = ?").get(id);
11043
+ }
11044
+ function getAgentByName(name, db) {
11045
+ const d = db ?? getDatabase();
11046
+ return d.query("SELECT * FROM agents WHERE LOWER(name) = ?").get(name.trim().toLowerCase());
11047
+ }
11048
+ function listAgents(db) {
11049
+ const d = db ?? getDatabase();
11050
+ return d.query("SELECT * FROM agents ORDER BY name").all();
11051
+ }
11052
+ function deleteAgent(id, db) {
11053
+ const d = db ?? getDatabase();
11054
+ return d.run("DELETE FROM agents WHERE id = ?", [id]).changes > 0;
11055
+ }
11056
+ var AGENT_ACTIVE_WINDOW_MS;
11057
+ var init_agents = __esm(() => {
11058
+ init_database();
11059
+ AGENT_ACTIVE_WINDOW_MS = 30 * 60 * 1000;
11060
+ });
11061
+
11062
+ // src/db/rate.ts
11063
+ function ensureRateTable(db) {
11064
+ db.run(`
11065
+ CREATE TABLE IF NOT EXISTS connector_rate_usage (
11066
+ agent_id TEXT NOT NULL,
11067
+ connector TEXT NOT NULL,
11068
+ window_start TEXT NOT NULL,
11069
+ call_count INTEGER NOT NULL DEFAULT 0,
11070
+ PRIMARY KEY (agent_id, connector, window_start)
11071
+ )
11072
+ `);
11073
+ db.run(`CREATE INDEX IF NOT EXISTS idx_rate_usage_window ON connector_rate_usage(connector, window_start)`);
11074
+ }
11075
+ function countActiveAgents(db) {
11076
+ const cutoff = new Date(Date.now() - AGENT_ACTIVE_WINDOW_MS2).toISOString();
11077
+ const row = db.query("SELECT COUNT(*) as count FROM agents WHERE last_seen_at > ?").get(cutoff);
11078
+ return Math.max(1, row?.count ?? 1);
11079
+ }
11080
+ function currentWindowStart() {
11081
+ const now3 = Date.now();
11082
+ const windowMs = WINDOW_SECONDS * 1000;
11083
+ return new Date(Math.floor(now3 / windowMs) * windowMs).toISOString();
11084
+ }
11085
+ function checkRateBudget(agentId, connector, connectorLimit, consume = true, db) {
11086
+ const d = db ?? getDatabase();
11087
+ ensureRateTable(d);
11088
+ const activeAgents = countActiveAgents(d);
11089
+ const budget = Math.max(1, Math.floor(connectorLimit / activeAgents));
11090
+ const windowStart = currentWindowStart();
11091
+ const windowMs = WINDOW_SECONDS * 1000;
11092
+ const windowEnd = new Date(Math.floor(Date.now() / windowMs) * windowMs + windowMs);
11093
+ const windowResetsIn = windowEnd.getTime() - Date.now();
11094
+ const row = d.query("SELECT call_count FROM connector_rate_usage WHERE agent_id = ? AND connector = ? AND window_start = ?").get(agentId, connector, windowStart);
11095
+ const used = row?.call_count ?? 0;
11096
+ if (used >= budget) {
11097
+ return {
11098
+ exceeded: true,
11099
+ connector,
11100
+ agent_id: agentId,
11101
+ budget,
11102
+ used,
11103
+ active_agents: activeAgents,
11104
+ window_resets_in_ms: windowResetsIn,
11105
+ message: `Rate budget exceeded for "${connector}" (${used}/${budget} calls used, ${activeAgents} active agent${activeAgents === 1 ? "" : "s"} sharing limit of ${connectorLimit}/min). Resets in ${Math.ceil(windowResetsIn / 1000)}s.`
11106
+ };
11107
+ }
11108
+ if (consume) {
11109
+ d.run(`INSERT INTO connector_rate_usage (agent_id, connector, window_start, call_count)
11110
+ VALUES (?, ?, ?, 1)
11111
+ ON CONFLICT(agent_id, connector, window_start) DO UPDATE SET call_count = call_count + 1`, [agentId, connector, windowStart]);
11112
+ }
11113
+ return {
11114
+ connector,
11115
+ agent_id: agentId,
11116
+ limit: connectorLimit,
11117
+ active_agents: activeAgents,
11118
+ budget,
11119
+ used: consume ? used + 1 : used,
11120
+ remaining: consume ? budget - used - 1 : budget - used,
11121
+ window_start: windowStart,
11122
+ window_resets_in_ms: windowResetsIn
11123
+ };
11124
+ }
11125
+ function getRateBudget(agentId, connector, connectorLimit, db) {
11126
+ return checkRateBudget(agentId, connector, connectorLimit, false, db);
11127
+ }
11128
+ var AGENT_ACTIVE_WINDOW_MS2, WINDOW_SECONDS = 60;
11129
+ var init_rate = __esm(() => {
11130
+ init_database();
11131
+ AGENT_ACTIVE_WINDOW_MS2 = 30 * 60 * 1000;
11132
+ });
11133
+
9955
11134
  // src/server/serve.ts
9956
11135
  var exports_serve = {};
9957
11136
  __export(exports_serve, {
9958
11137
  startServer: () => startServer
9959
11138
  });
9960
- import { existsSync as existsSync5, readdirSync as readdirSync3, readFileSync as readFileSync4, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "fs";
9961
- import { join as join5, dirname as dirname4, extname, basename } from "path";
11139
+ import { existsSync as existsSync7, readdirSync as readdirSync3, readFileSync as readFileSync5, writeFileSync as writeFileSync4, mkdirSync as mkdirSync6 } from "fs";
11140
+ import { join as join8, dirname as dirname4, extname, basename } from "path";
9962
11141
  import { fileURLToPath as fileURLToPath4 } from "url";
9963
- import { homedir as homedir2 } from "os";
11142
+ import { homedir as homedir6 } from "os";
9964
11143
  function logActivity(action, connector, detail) {
9965
11144
  activityLog.unshift({ action, connector, timestamp: Date.now(), detail });
9966
11145
  if (activityLog.length > MAX_ACTIVITY_LOG) {
@@ -9971,20 +11150,20 @@ function resolveDashboardDir() {
9971
11150
  const candidates = [];
9972
11151
  try {
9973
11152
  const scriptDir = dirname4(fileURLToPath4(import.meta.url));
9974
- candidates.push(join5(scriptDir, "..", "dashboard", "dist"));
9975
- candidates.push(join5(scriptDir, "..", "..", "dashboard", "dist"));
11153
+ candidates.push(join8(scriptDir, "..", "dashboard", "dist"));
11154
+ candidates.push(join8(scriptDir, "..", "..", "dashboard", "dist"));
9976
11155
  } catch {}
9977
11156
  if (process.argv[1]) {
9978
11157
  const mainDir = dirname4(process.argv[1]);
9979
- candidates.push(join5(mainDir, "..", "dashboard", "dist"));
9980
- candidates.push(join5(mainDir, "..", "..", "dashboard", "dist"));
11158
+ candidates.push(join8(mainDir, "..", "dashboard", "dist"));
11159
+ candidates.push(join8(mainDir, "..", "..", "dashboard", "dist"));
9981
11160
  }
9982
- candidates.push(join5(process.cwd(), "dashboard", "dist"));
11161
+ candidates.push(join8(process.cwd(), "dashboard", "dist"));
9983
11162
  for (const candidate of candidates) {
9984
- if (existsSync5(candidate))
11163
+ if (existsSync7(candidate))
9985
11164
  return candidate;
9986
11165
  }
9987
- return join5(process.cwd(), "dashboard", "dist");
11166
+ return join8(process.cwd(), "dashboard", "dist");
9988
11167
  }
9989
11168
  function json(data, status = 200, port) {
9990
11169
  return new Response(JSON.stringify(data), {
@@ -9996,6 +11175,18 @@ function json(data, status = 200, port) {
9996
11175
  }
9997
11176
  });
9998
11177
  }
11178
+ async function jsonStripped(data, status = 200, port) {
11179
+ const raw = JSON.stringify(data);
11180
+ const body = await maybeStrip(raw);
11181
+ return new Response(body, {
11182
+ status,
11183
+ headers: {
11184
+ "Content-Type": "application/json",
11185
+ "Access-Control-Allow-Origin": port ? `http://localhost:${port}` : "*",
11186
+ ...SECURITY_HEADERS
11187
+ }
11188
+ });
11189
+ }
9999
11190
  function htmlResponse(content, status = 200) {
10000
11191
  return new Response(content, {
10001
11192
  status,
@@ -10057,7 +11248,7 @@ function oauthPage(type, title, message, hint, extra) {
10057
11248
  </body></html>`;
10058
11249
  }
10059
11250
  function serveStaticFile(filePath) {
10060
- if (!existsSync5(filePath))
11251
+ if (!existsSync7(filePath))
10061
11252
  return null;
10062
11253
  const ext = extname(filePath);
10063
11254
  const contentType = MIME_TYPES[ext] || "application/octet-stream";
@@ -10081,7 +11272,7 @@ async function startServer(requestedPort, options) {
10081
11272
  const shouldOpen = options?.open ?? true;
10082
11273
  loadConnectorVersions();
10083
11274
  const dashboardDir = resolveDashboardDir();
10084
- const dashboardExists = existsSync5(dashboardDir);
11275
+ const dashboardExists = existsSync7(dashboardDir);
10085
11276
  if (!dashboardExists) {
10086
11277
  console.error(`
10087
11278
  Dashboard not found at: ${dashboardDir}`);
@@ -10110,10 +11301,10 @@ Dashboard not found at: ${dashboardDir}`);
10110
11301
  const fields = fieldsParam ? new Set(fieldsParam.split(",").map((f) => f.trim())) : null;
10111
11302
  const data = getAllConnectorsWithAuth();
10112
11303
  if (compact) {
10113
- return json(data.map((c) => ({ name: c.name, category: c.category, installed: c.installed })), 200, port);
11304
+ return jsonStripped(data.map((c) => ({ name: c.name, category: c.category, installed: c.installed })), 200, port);
10114
11305
  }
10115
11306
  if (fields) {
10116
- return json(data.map((c) => {
11307
+ return jsonStripped(data.map((c) => {
10117
11308
  const out = {};
10118
11309
  for (const f of fields) {
10119
11310
  if (f in c)
@@ -10122,7 +11313,7 @@ Dashboard not found at: ${dashboardDir}`);
10122
11313
  return out;
10123
11314
  }), 200, port);
10124
11315
  }
10125
- return json(data, 200, port);
11316
+ return jsonStripped(data, 200, port);
10126
11317
  }
10127
11318
  const singleMatch = path.match(/^\/api\/connectors\/([^/]+)$/);
10128
11319
  if (singleMatch && method === "GET") {
@@ -10156,7 +11347,7 @@ Dashboard not found at: ${dashboardDir}`);
10156
11347
  const body = await req.json();
10157
11348
  if (!body.key)
10158
11349
  return json({ error: "Missing 'key' in request body" }, 400, port);
10159
- saveApiKey(name, body.key, body.field);
11350
+ await saveApiKey(name, body.key, body.field);
10160
11351
  logActivity("key_saved", name, body.field ? `Field: ${body.field}` : undefined);
10161
11352
  return json({ success: true }, 200, port);
10162
11353
  } catch (e) {
@@ -10201,7 +11392,10 @@ Dashboard not found at: ${dashboardDir}`);
10201
11392
  if (!isValidConnectorName(name))
10202
11393
  return json({ error: "Invalid connector name" }, 400, port);
10203
11394
  try {
10204
- removeConnector(name);
11395
+ const removed = removeConnector(name);
11396
+ if (!removed) {
11397
+ return json({ error: `Connector '${name}' is not installed` }, 404, port);
11398
+ }
10205
11399
  logActivity("uninstalled", name);
10206
11400
  return json({ success: true, name }, 200, port);
10207
11401
  } catch (e) {
@@ -10227,6 +11421,167 @@ Dashboard not found at: ${dashboardDir}`);
10227
11421
  if (path === "/api/activity" && method === "GET") {
10228
11422
  return json(activityLog, 200, port);
10229
11423
  }
11424
+ if (path === "/api/hot" && method === "GET") {
11425
+ const { getTopConnectors: getTopConnectors2 } = await Promise.resolve().then(() => (init_usage(), exports_usage));
11426
+ const { getPromotedConnectors: getPromotedConnectors2 } = await Promise.resolve().then(() => (init_promotions(), exports_promotions));
11427
+ const limit = parseInt(url2.searchParams.get("limit") || "10", 10);
11428
+ const days = parseInt(url2.searchParams.get("days") || "7", 10);
11429
+ const db = getDatabase2();
11430
+ const top = getTopConnectors2(limit, days, db);
11431
+ const promoted = new Set(getPromotedConnectors2(db));
11432
+ return json(top.map((t) => ({ ...t, promoted: promoted.has(t.connector) })), 200, port);
11433
+ }
11434
+ const promoteMatch = path.match(/^\/api\/connectors\/([^/]+)\/promote$/);
11435
+ if (promoteMatch && method === "POST") {
11436
+ const name = promoteMatch[1];
11437
+ if (!getConnector(name))
11438
+ return json({ error: "Connector not found" }, 404, port);
11439
+ const { promoteConnector: promoteConnector2 } = await Promise.resolve().then(() => (init_promotions(), exports_promotions));
11440
+ promoteConnector2(name, getDatabase2());
11441
+ return json({ success: true, connector: name }, 200, port);
11442
+ }
11443
+ if (promoteMatch && method === "DELETE") {
11444
+ const { demoteConnector: demoteConnector2 } = await Promise.resolve().then(() => (init_promotions(), exports_promotions));
11445
+ const removed = demoteConnector2(promoteMatch[1], getDatabase2());
11446
+ return json({ success: removed, connector: promoteMatch[1] }, 200, port);
11447
+ }
11448
+ if (path === "/api/llm" && method === "GET") {
11449
+ const config = getLlmConfig();
11450
+ if (!config)
11451
+ return json({ configured: false }, 200, port);
11452
+ return json({ configured: true, provider: config.provider, model: config.model, key: maskKey(config.api_key), strip: config.strip }, 200, port);
11453
+ }
11454
+ if (path === "/api/llm" && method === "POST") {
11455
+ const body = await req.json().catch(() => ({}));
11456
+ const validProviders = ["cerebras", "groq", "openai", "anthropic"];
11457
+ const provider = body.provider;
11458
+ if (!provider || !validProviders.includes(provider))
11459
+ return json({ error: "provider must be one of: " + validProviders.join(", ") }, 400, port);
11460
+ const api_key = body.api_key;
11461
+ if (!api_key)
11462
+ return json({ error: "api_key is required" }, 400, port);
11463
+ const model = body.model || getLlmConfig()?.model || "qwen-3-32b";
11464
+ const strip = typeof body.strip === "boolean" ? body.strip : getLlmConfig()?.strip ?? false;
11465
+ saveLlmConfig({ provider, model, api_key, strip });
11466
+ return json({ success: true, provider, model, strip }, 200, port);
11467
+ }
11468
+ if (path === "/api/llm/test" && method === "POST") {
11469
+ const config = getLlmConfig();
11470
+ if (!config)
11471
+ return json({ error: "No LLM configured" }, 400, port);
11472
+ try {
11473
+ const client = new LLMClient(config);
11474
+ const result = await client.complete('Respond with exactly: {"status":"ok"}', "ping");
11475
+ return json({ success: true, provider: result.provider, model: result.model, latency_ms: result.latency_ms, response: result.content }, 200, port);
11476
+ } catch (e) {
11477
+ return json({ success: false, error: e instanceof Error ? e.message : String(e) }, 500, port);
11478
+ }
11479
+ }
11480
+ if (path === "/api/jobs" && method === "GET") {
11481
+ return json(listJobs(getDatabase2()), 200, port);
11482
+ }
11483
+ if (path === "/api/jobs" && method === "POST") {
11484
+ const body = await req.json().catch(() => ({}));
11485
+ if (!body.name || !body.connector || !body.command || !body.cron)
11486
+ return json({ error: "name, connector, command, cron required" }, 400, port);
11487
+ const job = createJob({ name: body.name, connector: body.connector, command: body.command, args: body.args ?? [], cron: body.cron, strip: !!body.strip }, getDatabase2());
11488
+ return json(job, 201, port);
11489
+ }
11490
+ const jobMatch = path.match(/^\/api\/jobs\/([^/]+)$/);
11491
+ if (jobMatch) {
11492
+ const db = getDatabase2();
11493
+ const job = getJobByName(jobMatch[1]) ?? getDatabase2().query("SELECT * FROM connector_jobs WHERE id = ?").get(jobMatch[1]);
11494
+ if (!job && method !== "DELETE")
11495
+ return json({ error: "Job not found" }, 404, port);
11496
+ if (method === "GET")
11497
+ return json(listJobRuns(job.id, 20, db), 200, port);
11498
+ if (method === "DELETE") {
11499
+ const j = getJobByName(jobMatch[1], db);
11500
+ if (!j)
11501
+ return json({ error: "Job not found" }, 404, port);
11502
+ deleteJob(j.id, db);
11503
+ return json({ success: true }, 200, port);
11504
+ }
11505
+ if (method === "PATCH") {
11506
+ const body = await req.json().catch(() => ({}));
11507
+ const j = getJobByName(jobMatch[1], db);
11508
+ const updated = updateJob(j.id, { enabled: typeof body.enabled === "boolean" ? body.enabled : undefined, strip: typeof body.strip === "boolean" ? body.strip : undefined }, db);
11509
+ return json(updated, 200, port);
11510
+ }
11511
+ }
11512
+ const jobRunMatch = path.match(/^\/api\/jobs\/([^/]+)\/run$/);
11513
+ if (jobRunMatch && method === "POST") {
11514
+ const db = getDatabase2();
11515
+ const job = getJobByName(jobRunMatch[1], db);
11516
+ if (!job)
11517
+ return json({ error: "Job not found" }, 404, port);
11518
+ const result = await triggerJob(job, db);
11519
+ return json(result, 200, port);
11520
+ }
11521
+ if (path === "/api/workflows" && method === "GET") {
11522
+ return json(listWorkflows(getDatabase2()), 200, port);
11523
+ }
11524
+ if (path === "/api/workflows" && method === "POST") {
11525
+ const body = await req.json().catch(() => ({}));
11526
+ if (!body.name || !body.steps)
11527
+ return json({ error: "name and steps required" }, 400, port);
11528
+ const wf = createWorkflow({ name: body.name, steps: body.steps }, getDatabase2());
11529
+ return json(wf, 201, port);
11530
+ }
11531
+ const wfMatch = path.match(/^\/api\/workflows\/([^/]+)$/);
11532
+ if (wfMatch) {
11533
+ const db = getDatabase2();
11534
+ const wf = getWorkflowByName(wfMatch[1], db);
11535
+ if (!wf)
11536
+ return json({ error: "Workflow not found" }, 404, port);
11537
+ if (method === "GET")
11538
+ return json(wf, 200, port);
11539
+ if (method === "DELETE") {
11540
+ deleteWorkflow(wf.id, db);
11541
+ return json({ success: true }, 200, port);
11542
+ }
11543
+ }
11544
+ const wfRunMatch = path.match(/^\/api\/workflows\/([^/]+)\/run$/);
11545
+ if (wfRunMatch && method === "POST") {
11546
+ const wf = getWorkflowByName(wfRunMatch[1], getDatabase2());
11547
+ if (!wf)
11548
+ return json({ error: "Workflow not found" }, 404, port);
11549
+ const result = await runWorkflow(wf);
11550
+ return json(result, 200, port);
11551
+ }
11552
+ if (path === "/api/agents" && method === "GET") {
11553
+ return json(listAgents(), 200, port);
11554
+ }
11555
+ if (path === "/api/agents/register" && method === "POST") {
11556
+ const body = await req.json().catch(() => ({}));
11557
+ const name = typeof body.name === "string" ? body.name : null;
11558
+ if (!name)
11559
+ return json({ error: "name is required" }, 400, port);
11560
+ const result = registerAgent({
11561
+ name,
11562
+ session_id: typeof body.session_id === "string" ? body.session_id : undefined,
11563
+ role: typeof body.role === "string" ? body.role : undefined
11564
+ });
11565
+ if (isAgentConflict(result))
11566
+ return json(result, 409, port);
11567
+ return json(result, 200, port);
11568
+ }
11569
+ if (path.startsWith("/api/agents/") && method === "DELETE") {
11570
+ const agentName = path.slice("/api/agents/".length);
11571
+ const agent = getAgentByName(agentName);
11572
+ if (!agent)
11573
+ return json({ error: "Agent not found" }, 404, port);
11574
+ deleteAgent(agent.id);
11575
+ return json({ success: true }, 200, port);
11576
+ }
11577
+ const rateMatch = path.match(/^\/api\/rate\/([^/]+)\/([^/]+)$/);
11578
+ if (rateMatch && method === "GET") {
11579
+ const [, agentId, connector] = rateMatch;
11580
+ const limit = parseInt(url2.searchParams.get("limit") || "60", 10);
11581
+ const consume = url2.searchParams.get("consume") === "true";
11582
+ const result = consume ? checkRateBudget(agentId, connector, limit) : getRateBudget(agentId, connector, limit);
11583
+ return json(result, 200, port);
11584
+ }
10230
11585
  const profilesMatch = path.match(/^\/api\/connectors\/([^/]+)\/profiles$/);
10231
11586
  if (profilesMatch && method === "GET") {
10232
11587
  const name = profilesMatch[1];
@@ -10234,12 +11589,12 @@ Dashboard not found at: ${dashboardDir}`);
10234
11589
  return json({ error: "Invalid connector name" }, 400, port);
10235
11590
  try {
10236
11591
  const profiles = listProfiles(name);
10237
- const configDir = join5(homedir2(), ".connectors", name.startsWith("connect-") ? name : `connect-${name}`);
10238
- const currentProfileFile = join5(configDir, "current_profile");
11592
+ const configDir = join8(homedir6(), ".connectors", name.startsWith("connect-") ? name : `connect-${name}`);
11593
+ const currentProfileFile = join8(configDir, "current_profile");
10239
11594
  let current = "default";
10240
- if (existsSync5(currentProfileFile)) {
11595
+ if (existsSync7(currentProfileFile)) {
10241
11596
  try {
10242
- current = readFileSync4(currentProfileFile, "utf-8").trim() || "default";
11597
+ current = readFileSync5(currentProfileFile, "utf-8").trim() || "default";
10243
11598
  } catch {}
10244
11599
  }
10245
11600
  return json({ current, profiles }, 200, port);
@@ -10286,16 +11641,16 @@ Dashboard not found at: ${dashboardDir}`);
10286
11641
  }
10287
11642
  if (path === "/api/export" && method === "GET") {
10288
11643
  try {
10289
- const connectDir = join5(homedir2(), ".connectors");
11644
+ const connectDir = join8(homedir6(), ".connectors");
10290
11645
  const result = {};
10291
- if (existsSync5(connectDir)) {
11646
+ if (existsSync7(connectDir)) {
10292
11647
  const entries = readdirSync3(connectDir, { withFileTypes: true });
10293
11648
  for (const entry of entries) {
10294
11649
  if (!entry.isDirectory() || !entry.name.startsWith("connect-"))
10295
11650
  continue;
10296
11651
  const connectorName = entry.name.replace(/^connect-/, "");
10297
- const profilesDir = join5(connectDir, entry.name, "profiles");
10298
- if (!existsSync5(profilesDir))
11652
+ const profilesDir = join8(connectDir, entry.name, "profiles");
11653
+ if (!existsSync7(profilesDir))
10299
11654
  continue;
10300
11655
  const profiles = {};
10301
11656
  const profileEntries = readdirSync3(profilesDir, { withFileTypes: true });
@@ -10303,15 +11658,15 @@ Dashboard not found at: ${dashboardDir}`);
10303
11658
  if (pEntry.isFile() && pEntry.name.endsWith(".json")) {
10304
11659
  const profileName = basename(pEntry.name, ".json");
10305
11660
  try {
10306
- const config = JSON.parse(readFileSync4(join5(profilesDir, pEntry.name), "utf-8"));
11661
+ const config = JSON.parse(readFileSync5(join8(profilesDir, pEntry.name), "utf-8"));
10307
11662
  profiles[profileName] = config;
10308
11663
  } catch {}
10309
11664
  }
10310
11665
  if (pEntry.isDirectory()) {
10311
- const configPath = join5(profilesDir, pEntry.name, "config.json");
10312
- if (existsSync5(configPath)) {
11666
+ const configPath = join8(profilesDir, pEntry.name, "config.json");
11667
+ if (existsSync7(configPath)) {
10313
11668
  try {
10314
- const config = JSON.parse(readFileSync4(configPath, "utf-8"));
11669
+ const config = JSON.parse(readFileSync5(configPath, "utf-8"));
10315
11670
  profiles[pEntry.name] = config;
10316
11671
  } catch {}
10317
11672
  }
@@ -10346,20 +11701,20 @@ Dashboard not found at: ${dashboardDir}`);
10346
11701
  return json({ error: "Invalid import format: missing 'connectors' object" }, 400, port);
10347
11702
  }
10348
11703
  let imported = 0;
10349
- const connectDir = join5(homedir2(), ".connectors");
11704
+ const connectDir = join8(homedir6(), ".connectors");
10350
11705
  for (const [connectorName, data] of Object.entries(body.connectors)) {
10351
11706
  if (!isValidConnectorName(connectorName))
10352
11707
  continue;
10353
11708
  if (!data.profiles || typeof data.profiles !== "object")
10354
11709
  continue;
10355
- const connectorDir = join5(connectDir, `connect-${connectorName}`);
10356
- const profilesDir = join5(connectorDir, "profiles");
11710
+ const connectorDir = join8(connectDir, `connect-${connectorName}`);
11711
+ const profilesDir = join8(connectorDir, "profiles");
10357
11712
  for (const [profileName, config] of Object.entries(data.profiles)) {
10358
11713
  if (!config || typeof config !== "object")
10359
11714
  continue;
10360
- mkdirSync2(profilesDir, { recursive: true });
10361
- const profileFile = join5(profilesDir, `${profileName}.json`);
10362
- writeFileSync2(profileFile, JSON.stringify(config, null, 2));
11715
+ mkdirSync6(profilesDir, { recursive: true });
11716
+ const profileFile = join8(profilesDir, `${profileName}.json`);
11717
+ writeFileSync4(profileFile, JSON.stringify(config, null, 2));
10363
11718
  imported++;
10364
11719
  }
10365
11720
  }
@@ -10414,12 +11769,12 @@ Dashboard not found at: ${dashboardDir}`);
10414
11769
  }
10415
11770
  if (dashboardExists && (method === "GET" || method === "HEAD")) {
10416
11771
  if (path !== "/") {
10417
- const filePath = join5(dashboardDir, path);
11772
+ const filePath = join8(dashboardDir, path);
10418
11773
  const res2 = serveStaticFile(filePath);
10419
11774
  if (res2)
10420
11775
  return res2;
10421
11776
  }
10422
- const indexPath = join5(dashboardDir, "index.html");
11777
+ const indexPath = join8(dashboardDir, "index.html");
10423
11778
  const res = serveStaticFile(indexPath);
10424
11779
  if (res)
10425
11780
  return res;
@@ -10433,6 +11788,9 @@ Dashboard not found at: ${dashboardDir}`);
10433
11788
  };
10434
11789
  process.on("SIGINT", shutdown);
10435
11790
  process.on("SIGTERM", shutdown);
11791
+ const { startScheduler: startScheduler2 } = await Promise.resolve().then(() => (init_scheduler(), exports_scheduler));
11792
+ const { getDatabase: getDatabase2 } = await Promise.resolve().then(() => (init_database(), exports_database));
11793
+ startScheduler2(getDatabase2());
10436
11794
  const url = `http://localhost:${port}`;
10437
11795
  console.log(`Connectors Dashboard running at ${url}`);
10438
11796
  if (shouldOpen) {
@@ -10445,6 +11803,14 @@ Dashboard not found at: ${dashboardDir}`);
10445
11803
  }
10446
11804
  var activityLog, MAX_ACTIVITY_LOG = 100, MIME_TYPES, SECURITY_HEADERS, MAX_BODY_SIZE;
10447
11805
  var init_serve = __esm(() => {
11806
+ init_agents();
11807
+ init_rate();
11808
+ init_strip();
11809
+ init_llm();
11810
+ init_jobs();
11811
+ init_workflows();
11812
+ init_scheduler();
11813
+ init_workflow_runner();
10448
11814
  init_registry();
10449
11815
  init_installer();
10450
11816
  init_auth();
@@ -10489,6 +11855,101 @@ var {
10489
11855
 
10490
11856
  // src/cli/index.tsx
10491
11857
  import chalk2 from "chalk";
11858
+ // package.json
11859
+ var package_default = {
11860
+ name: "@hasna/connectors",
11861
+ version: "1.3.5",
11862
+ description: "Open source connector library - Install API connectors with a single command",
11863
+ type: "module",
11864
+ bin: {
11865
+ connectors: "./bin/index.js",
11866
+ "connectors-mcp": "./bin/mcp.js",
11867
+ "connectors-serve": "./bin/serve.js"
11868
+ },
11869
+ files: [
11870
+ "bin/",
11871
+ "dist/",
11872
+ "dashboard/dist/",
11873
+ "connectors/",
11874
+ "README.md"
11875
+ ],
11876
+ exports: {
11877
+ ".": {
11878
+ import: "./dist/index.js",
11879
+ types: "./dist/index.d.ts"
11880
+ }
11881
+ },
11882
+ main: "./dist/index.js",
11883
+ types: "./dist/index.d.ts",
11884
+ scripts: {
11885
+ 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 && 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 && tsc --emitDeclarationOnly --outDir ./dist",
11886
+ "build:dashboard": "cd dashboard && bun run build",
11887
+ postinstall: '[ "$SKIP_DASHBOARD" = "1" ] || [ ! -f dashboard/package.json ] || [ -d dashboard/node_modules ] || (cd dashboard && bun install)',
11888
+ dev: "bun run ./src/cli/index.tsx",
11889
+ typecheck: "tsc --noEmit",
11890
+ test: "bun test",
11891
+ "sdk:build": "cd sdk && bun run build",
11892
+ prepublishOnly: "bun test && bun run build"
11893
+ },
11894
+ keywords: [
11895
+ "connectors",
11896
+ "api",
11897
+ "cli",
11898
+ "typescript",
11899
+ "bun",
11900
+ "figma",
11901
+ "stripe",
11902
+ "github",
11903
+ "openai",
11904
+ "mcp",
11905
+ "model-context-protocol"
11906
+ ],
11907
+ author: "Hasna",
11908
+ license: "Apache-2.0",
11909
+ devDependencies: {
11910
+ "@types/bun": "latest",
11911
+ "@types/react": "^18.2.0",
11912
+ "ink-testing-library": "^4.0.0",
11913
+ typescript: "^5"
11914
+ },
11915
+ dependencies: {
11916
+ "@modelcontextprotocol/sdk": "^1.26.0",
11917
+ chalk: "^5.3.0",
11918
+ commander: "^12.1.0",
11919
+ conf: "^13.0.1",
11920
+ "fast-xml-parser": "^5.5.3",
11921
+ ink: "^5.0.1",
11922
+ "ink-select-input": "^6.0.0",
11923
+ "ink-spinner": "^5.0.0",
11924
+ "ink-text-input": "^6.0.0",
11925
+ open: "^11.0.0",
11926
+ react: "^18.2.0",
11927
+ zod: "3"
11928
+ },
11929
+ engines: {
11930
+ bun: ">=1.0.0"
11931
+ },
11932
+ publishConfig: {
11933
+ registry: "https://registry.npmjs.org",
11934
+ access: "public"
11935
+ },
11936
+ repository: {
11937
+ type: "git",
11938
+ url: "git+https://github.com/hasna/connectors.git"
11939
+ },
11940
+ homepage: "https://github.com/hasna/connectors#readme",
11941
+ bugs: {
11942
+ url: "https://github.com/hasna/connectors/issues"
11943
+ }
11944
+ };
11945
+
11946
+ // src/cli/index.tsx
11947
+ init_llm();
11948
+ init_jobs();
11949
+ init_workflows();
11950
+ init_scheduler();
11951
+ init_workflow_runner();
11952
+ init_database();
10492
11953
 
10493
11954
  // src/cli/components/App.tsx
10494
11955
  import { useState as useState7 } from "react";
@@ -11962,9 +13423,9 @@ function App({ initialConnectors, overwrite = false }) {
11962
13423
  init_registry();
11963
13424
  init_installer();
11964
13425
  init_auth();
11965
- import { readdirSync as readdirSync4, existsSync as existsSync6, statSync as statSync3, readFileSync as readFileSync5, writeFileSync as writeFileSync3, mkdirSync as mkdirSync3 } from "fs";
11966
- import { homedir as homedir3 } from "os";
11967
- import { join as join6, relative } from "path";
13426
+ import { readdirSync as readdirSync4, existsSync as existsSync8, statSync as statSync4, readFileSync as readFileSync6, writeFileSync as writeFileSync5, mkdirSync as mkdirSync7 } from "fs";
13427
+ import { homedir as homedir7 } from "os";
13428
+ import { join as join9, relative } from "path";
11968
13429
 
11969
13430
  // src/lib/test-endpoints.ts
11970
13431
  var TEST_ENDPOINTS = {
@@ -12165,17 +13626,17 @@ var TEST_ENDPOINTS = {
12165
13626
  import { createInterface } from "readline";
12166
13627
 
12167
13628
  // src/lib/runner.ts
12168
- import { existsSync as existsSync4 } from "fs";
12169
- import { join as join4, dirname as dirname3 } from "path";
13629
+ import { existsSync as existsSync6 } from "fs";
13630
+ import { join as join7, dirname as dirname3 } from "path";
12170
13631
  import { fileURLToPath as fileURLToPath3 } from "url";
12171
- import { spawn } from "child_process";
13632
+ import { spawn as spawn3 } from "child_process";
12172
13633
  var __dirname3 = dirname3(fileURLToPath3(import.meta.url));
12173
13634
  function resolveConnectorsDir2() {
12174
- const fromBin = join4(__dirname3, "..", "connectors");
12175
- if (existsSync4(fromBin))
13635
+ const fromBin = join7(__dirname3, "..", "connectors");
13636
+ if (existsSync6(fromBin))
12176
13637
  return fromBin;
12177
- const fromSrc = join4(__dirname3, "..", "..", "connectors");
12178
- if (existsSync4(fromSrc))
13638
+ const fromSrc = join7(__dirname3, "..", "..", "connectors");
13639
+ if (existsSync6(fromSrc))
12179
13640
  return fromSrc;
12180
13641
  return fromBin;
12181
13642
  }
@@ -12215,13 +13676,13 @@ function buildEnvWithCredentials(connectorName, baseEnv) {
12215
13676
  }
12216
13677
  function getConnectorCliPath(name) {
12217
13678
  const safeName = name.replace(/[^a-z0-9-]/g, "");
12218
- const connectorDir = join4(CONNECTORS_DIR2, `connect-${safeName}`);
12219
- const cliPath = join4(connectorDir, "src", "cli", "index.ts");
12220
- if (existsSync4(cliPath))
13679
+ const connectorDir = join7(CONNECTORS_DIR2, `connect-${safeName}`);
13680
+ const cliPath = join7(connectorDir, "src", "cli", "index.ts");
13681
+ if (existsSync6(cliPath))
12221
13682
  return cliPath;
12222
13683
  return null;
12223
13684
  }
12224
- function runConnectorCommand(name, args, timeoutMs = 30000) {
13685
+ function runConnectorCommand2(name, args, timeoutMs = 30000) {
12225
13686
  const cliPath = getConnectorCliPath(name);
12226
13687
  if (!cliPath) {
12227
13688
  return Promise.resolve({
@@ -12232,7 +13693,7 @@ function runConnectorCommand(name, args, timeoutMs = 30000) {
12232
13693
  });
12233
13694
  }
12234
13695
  return new Promise((resolve) => {
12235
- const proc = spawn("bun", ["run", cliPath, ...args], {
13696
+ const proc = spawn3("bun", ["run", cliPath, ...args], {
12236
13697
  timeout: timeoutMs,
12237
13698
  env: buildEnvWithCredentials(name, process.env),
12238
13699
  stdio: ["pipe", "pipe", "pipe"]
@@ -12268,7 +13729,7 @@ async function getConnectorOperations(name) {
12268
13729
  if (!cliPath) {
12269
13730
  return { commands: [], helpText: "", hasCli: false };
12270
13731
  }
12271
- const result = await runConnectorCommand(name, ["--help"]);
13732
+ const result = await runConnectorCommand2(name, ["--help"]);
12272
13733
  const helpText = result.stdout || result.stderr;
12273
13734
  const commands = [];
12274
13735
  const lines = helpText.split(`
@@ -12292,7 +13753,7 @@ async function getConnectorOperations(name) {
12292
13753
  return { commands, helpText, hasCli: true };
12293
13754
  }
12294
13755
  async function getConnectorCommandHelp(name, command) {
12295
- const result = await runConnectorCommand(name, [command, "--help"]);
13756
+ const result = await runConnectorCommand2(name, [command, "--help"]);
12296
13757
  return result.stdout || result.stderr;
12297
13758
  }
12298
13759
 
@@ -12309,7 +13770,7 @@ var PRESETS = {
12309
13770
  commerce: { description: "Commerce and finance", connectors: ["stripe", "shopify", "revolut", "mercury", "pandadoc"] }
12310
13771
  };
12311
13772
  var program2 = new Command;
12312
- program2.name("connectors").description("Install API connectors for your project").version("1.3.2").enablePositionalOptions();
13773
+ program2.name("connectors").description("Install API connectors for your project").version(package_default.version).enablePositionalOptions();
12313
13774
  program2.command("interactive", { isDefault: true }).alias("i").description("Interactive connector browser").action(() => {
12314
13775
  if (!isTTY) {
12315
13776
  console.log(`Non-interactive environment detected. Use a subcommand:
@@ -12330,8 +13791,8 @@ Run 'connectors --help' for full usage.`);
12330
13791
  function listFilesRecursive(dir, base = dir) {
12331
13792
  const files = [];
12332
13793
  for (const entry of readdirSync4(dir)) {
12333
- const fullPath = join6(dir, entry);
12334
- if (statSync3(fullPath).isDirectory()) {
13794
+ const fullPath = join9(dir, entry);
13795
+ if (statSync4(fullPath).isDirectory()) {
12335
13796
  files.push(...listFilesRecursive(fullPath, base));
12336
13797
  } else {
12337
13798
  files.push(relative(base, fullPath));
@@ -12339,7 +13800,7 @@ function listFilesRecursive(dir, base = dir) {
12339
13800
  }
12340
13801
  return files;
12341
13802
  }
12342
- program2.command("install").alias("add").argument("[connectors...]", "Connectors to verify").option("-c, --category <category>", "Verify all connectors in a category").option("--preset <preset>", "Verify a preset bundle (e.g. ai, fullstack, google)").option("--json", "Output results as JSON", false).description("Verify connectors are available in the global package").action((connectors, options) => {
13803
+ program2.command("install").alias("add").argument("[connectors...]", "Connectors to install").option("-o, --overwrite", "Overwrite existing connectors", false).option("-d, --dry-run", "Preview what would be installed without making changes", false).option("-c, --category <category>", "Install all connectors in a category").option("--preset <preset>", "Install a preset bundle (e.g. ai, fullstack, google)").option("--json", "Output results as JSON", false).description("Install one or more connectors").action((connectors, options) => {
12343
13804
  if (options.category) {
12344
13805
  const category = CATEGORIES.find((c) => c.toLowerCase() === options.category.toLowerCase());
12345
13806
  if (!category) {
@@ -12352,7 +13813,8 @@ program2.command("install").alias("add").argument("[connectors...]", "Connectors
12352
13813
  process.exit(1);
12353
13814
  return;
12354
13815
  }
12355
- connectors.push(...getConnectorsByCategory(category).map((c) => c.name));
13816
+ const categoryConnectors = getConnectorsByCategory(category).map((c) => c.name);
13817
+ connectors.push(...categoryConnectors);
12356
13818
  }
12357
13819
  if (options.preset) {
12358
13820
  const preset = PRESETS[options.preset.toLowerCase()];
@@ -12370,25 +13832,133 @@ program2.command("install").alias("add").argument("[connectors...]", "Connectors
12370
13832
  }
12371
13833
  if (connectors.length === 0) {
12372
13834
  if (!isTTY) {
12373
- console.error("Error: specify connectors to verify. Example: connectors install figma stripe");
13835
+ console.error("Error: specify connectors to install. Example: connectors install figma stripe");
12374
13836
  process.exit(1);
12375
13837
  }
12376
13838
  render(/* @__PURE__ */ jsxDEV7(App, {}, undefined, false, undefined, this));
12377
13839
  return;
12378
13840
  }
12379
- const results = connectors.map((name) => installConnector(name));
13841
+ if (options.dryRun) {
13842
+ const installed = getInstalledConnectors();
13843
+ const destDir = join9(process.cwd(), ".connectors");
13844
+ const actions = [];
13845
+ for (const name of connectors) {
13846
+ if (!/^[a-z0-9-]+$/.test(name)) {
13847
+ actions.push({ connector: name, action: "error", reason: `Invalid connector name '${name}'` });
13848
+ continue;
13849
+ }
13850
+ const meta = getConnector(name);
13851
+ if (!meta) {
13852
+ actions.push({ connector: name, action: "error", reason: `Connector '${name}' not found in registry` });
13853
+ continue;
13854
+ }
13855
+ if (!connectorExists(name)) {
13856
+ actions.push({ connector: name, action: "error", reason: `Connector '${name}' source files not found` });
13857
+ continue;
13858
+ }
13859
+ const connectorDirName = name.startsWith("connect-") ? name : `connect-${name}`;
13860
+ const sourcePath = getConnectorPath(name);
13861
+ const destPath = join9(destDir, connectorDirName);
13862
+ const alreadyInstalled = installed.includes(name);
13863
+ const files = listFilesRecursive(sourcePath);
13864
+ const importLine = `export * as ${name} from './${connectorDirName}/src/index.js';`;
13865
+ if (alreadyInstalled && !options.overwrite) {
13866
+ actions.push({
13867
+ connector: name,
13868
+ action: "skip",
13869
+ reason: "Already installed. Use --overwrite to replace.",
13870
+ sourcePath,
13871
+ destPath
13872
+ });
13873
+ } else {
13874
+ actions.push({
13875
+ connector: name,
13876
+ action: alreadyInstalled ? "overwrite" : "install",
13877
+ sourcePath,
13878
+ destPath,
13879
+ files,
13880
+ importLine
13881
+ });
13882
+ }
13883
+ }
13884
+ if (options.json) {
13885
+ console.log(JSON.stringify({ dryRun: true, actions }, null, 2));
13886
+ process.exit(actions.every((a) => a.action !== "error") ? 0 : 1);
13887
+ return;
13888
+ }
13889
+ console.log(chalk2.bold(`
13890
+ Dry run \u2014 no changes will be made
13891
+ `));
13892
+ for (const a of actions) {
13893
+ if (a.action === "error") {
13894
+ console.log(chalk2.red(` \u2717 ${a.connector}: ${a.reason}`));
13895
+ continue;
13896
+ }
13897
+ if (a.action === "skip") {
13898
+ console.log(chalk2.yellow(` \u2298 ${a.connector}: ${a.reason}`));
13899
+ continue;
13900
+ }
13901
+ const actionLabel = a.action === "overwrite" ? chalk2.yellow("overwrite") : chalk2.green("install");
13902
+ console.log(` ${actionLabel} ${chalk2.cyan(a.connector)}`);
13903
+ console.log(chalk2.dim(` source: ${a.sourcePath}`));
13904
+ console.log(chalk2.dim(` dest: ${a.destPath}`));
13905
+ if (a.files && a.files.length > 0) {
13906
+ console.log(chalk2.dim(` files (${a.files.length}):`));
13907
+ for (const f of a.files) {
13908
+ console.log(chalk2.dim(` ${f}`));
13909
+ }
13910
+ }
13911
+ if (a.importLine) {
13912
+ console.log(` ${chalk2.dim("index.ts:")} ${a.importLine}`);
13913
+ }
13914
+ console.log();
13915
+ }
13916
+ const installCount = actions.filter((a) => a.action === "install").length;
13917
+ const overwriteCount = actions.filter((a) => a.action === "overwrite").length;
13918
+ const skipCount = actions.filter((a) => a.action === "skip").length;
13919
+ const errorCount = actions.filter((a) => a.action === "error").length;
13920
+ const parts = [];
13921
+ if (installCount)
13922
+ parts.push(chalk2.green(`${installCount} to install`));
13923
+ if (overwriteCount)
13924
+ parts.push(chalk2.yellow(`${overwriteCount} to overwrite`));
13925
+ if (skipCount)
13926
+ parts.push(chalk2.yellow(`${skipCount} skipped`));
13927
+ if (errorCount)
13928
+ parts.push(chalk2.red(`${errorCount} failed`));
13929
+ console.log(` ${chalk2.bold("Summary:")} ${parts.join(", ")}`);
13930
+ console.log(chalk2.dim(`
13931
+ Run without --dry-run to apply.
13932
+ `));
13933
+ process.exit(errorCount > 0 ? 1 : 0);
13934
+ return;
13935
+ }
13936
+ const results = connectors.map((name) => installConnector(name, { overwrite: options.overwrite }));
12380
13937
  if (options.json) {
12381
13938
  console.log(JSON.stringify(results, null, 2));
12382
13939
  process.exit(results.every((r) => r.success) ? 0 : 1);
12383
13940
  return;
12384
13941
  }
13942
+ console.log(chalk2.bold(`
13943
+ Installing connectors...
13944
+ `));
13945
+ const succeeded = [];
12385
13946
  for (const result of results) {
12386
13947
  if (result.success) {
12387
- console.log(chalk2.green(`\u2713 ${result.connector}`) + chalk2.dim(` \u2014 available at ${result.path}`));
13948
+ console.log(chalk2.green(`\u2713 ${result.connector}`));
13949
+ succeeded.push(result.connector);
12388
13950
  } else {
12389
13951
  console.log(chalk2.red(`\u2717 ${result.connector}: ${result.error}`));
12390
13952
  }
12391
13953
  }
13954
+ if (succeeded.length > 0) {
13955
+ console.log(chalk2.bold(`
13956
+ Next steps:`));
13957
+ const importNames = succeeded.join(", ");
13958
+ console.log(chalk2.dim(` 1. Import: `) + `import { ${importNames} } from './.connectors'`);
13959
+ console.log(chalk2.dim(` 2. Set key: `) + `connectors docs ${succeeded[0]}` + chalk2.dim(` (see env vars)`));
13960
+ console.log(chalk2.dim(` 3. Explore: `) + `connectors serve` + chalk2.dim(` (dashboard for auth management)`));
13961
+ }
12392
13962
  process.exit(results.every((r) => r.success) ? 0 : 1);
12393
13963
  });
12394
13964
  program2.command("list").alias("ls").option("-c, --category <category>", "Filter by category").option("-a, --all", "Show all available connectors", false).option("-i, --installed", "Show only installed connectors", false).option("-b, --brief", "Output only connector names", false).option("--json", "Output as JSON", false).description("List available or installed connectors").action((options) => {
@@ -12542,10 +14112,18 @@ Available connectors (${CONNECTORS.length}):
12542
14112
  console.log();
12543
14113
  }
12544
14114
  });
12545
- program2.command("search").argument("<query>", "Search term").option("--json", "Output as JSON", false).description("Search for connectors").action((query, options) => {
12546
- const results = searchConnectors(query);
14115
+ program2.command("search").argument("<query>", "Search term").option("--json", "Output as JSON", false).option("--limit <n>", "Max results", "20").description("Search for connectors (ranked with fuzzy matching)").action((query, options) => {
14116
+ const installed = getInstalledConnectors();
14117
+ const { getPromotedConnectors: getPromotedConnectors2 } = (init_promotions(), __toCommonJS(exports_promotions));
14118
+ const { getUsageMap: getUsageMap2 } = (init_usage(), __toCommonJS(exports_usage));
14119
+ const results = searchConnectors(query, {
14120
+ installed,
14121
+ promoted: getPromotedConnectors2(),
14122
+ usage: getUsageMap2(),
14123
+ limit: parseInt(options.limit)
14124
+ });
12547
14125
  if (options.json) {
12548
- console.log(JSON.stringify(results));
14126
+ console.log(JSON.stringify(results.map((c) => ({ name: c.name, displayName: c.displayName, version: c.version, category: c.category, description: c.description, score: c.score, badges: c.badges, matchReasons: c.matchReasons }))));
12549
14127
  return;
12550
14128
  }
12551
14129
  if (results.length === 0) {
@@ -12555,10 +14133,12 @@ program2.command("search").argument("<query>", "Search term").option("--json", "
12555
14133
  console.log(chalk2.bold(`
12556
14134
  Found ${results.length} connector(s):
12557
14135
  `));
12558
- console.log(` ${chalk2.dim("Name".padEnd(20))}${chalk2.dim("Version".padEnd(10))}${chalk2.dim("Category".padEnd(20))}${chalk2.dim("Description")}`);
12559
- console.log(chalk2.dim(` ${"\u2500".repeat(70)}`));
14136
+ console.log(` ${chalk2.dim("Name".padEnd(22))}${chalk2.dim("Score".padEnd(7))}${chalk2.dim("Category".padEnd(20))}${chalk2.dim("Description")}`);
14137
+ console.log(chalk2.dim(` ${"\u2500".repeat(75)}`));
12560
14138
  for (const c of results) {
12561
- console.log(` ${chalk2.cyan(c.name.padEnd(20))}${chalk2.dim((c.version || "-").padEnd(10))}${chalk2.dim(c.category.padEnd(20))}${c.description}`);
14139
+ const badges = c.badges.map((b) => b === "installed" ? chalk2.green("[INS]") : b === "hot" ? chalk2.red("[HOT]") : b === "promoted" ? chalk2.yellow("[PRO]") : "").join(" ");
14140
+ const badgeStr = badges ? " " + badges : "";
14141
+ console.log(` ${chalk2.cyan(c.name.padEnd(22))}${String(c.score).padEnd(7)}${chalk2.dim(c.category.padEnd(20))}${c.description}${badgeStr}`);
12562
14142
  }
12563
14143
  });
12564
14144
  program2.command("info").argument("<connector>", "Connector name").option("--json", "Output as JSON", false).description("Show detailed info about a connector").action((connector, options) => {
@@ -12792,17 +14372,17 @@ Updating ${toUpdate.length} connector(s)...
12792
14372
  });
12793
14373
  program2.command("status").option("--json", "Output as JSON", false).description("Show auth status of all configured connectors (project + global)").action((options) => {
12794
14374
  const installed = getInstalledConnectors();
12795
- const configDir = join6(homedir3(), ".connectors");
14375
+ const configDir = join9(homedir7(), ".connectors");
12796
14376
  const seen = new Set;
12797
14377
  const allStatuses = [];
12798
14378
  function buildStatusEntry(name, source) {
12799
14379
  const auth = getAuthStatus(name);
12800
14380
  const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
12801
- const currentProfileFile = join6(configDir, connectorName, "current_profile");
14381
+ const currentProfileFile = join9(configDir, connectorName, "current_profile");
12802
14382
  let profile = "default";
12803
- if (existsSync6(currentProfileFile)) {
14383
+ if (existsSync8(currentProfileFile)) {
12804
14384
  try {
12805
- profile = readFileSync5(currentProfileFile, "utf-8").trim() || "default";
14385
+ profile = readFileSync6(currentProfileFile, "utf-8").trim() || "default";
12806
14386
  } catch {}
12807
14387
  }
12808
14388
  let expiryLabel = null;
@@ -12838,13 +14418,13 @@ program2.command("status").option("--json", "Output as JSON", false).description
12838
14418
  seen.add(name);
12839
14419
  allStatuses.push(buildStatusEntry(name, "project"));
12840
14420
  }
12841
- if (existsSync6(configDir)) {
14421
+ if (existsSync8(configDir)) {
12842
14422
  try {
12843
14423
  const globalDirs = readdirSync4(configDir).filter((f) => {
12844
14424
  if (!f.startsWith("connect-"))
12845
14425
  return false;
12846
14426
  try {
12847
- return statSync3(join6(configDir, f)).isDirectory();
14427
+ return statSync4(join9(configDir, f)).isDirectory();
12848
14428
  } catch {
12849
14429
  return false;
12850
14430
  }
@@ -13118,7 +14698,7 @@ Open this URL to authenticate:
13118
14698
  return;
13119
14699
  }
13120
14700
  if (options.key) {
13121
- saveApiKey(connector, options.key, options.field || undefined);
14701
+ await saveApiKey(connector, options.key, options.field || undefined);
13122
14702
  const statusAfter2 = getAuthStatus(connector);
13123
14703
  if (options.json) {
13124
14704
  console.log(JSON.stringify({
@@ -13192,7 +14772,7 @@ Open this URL to authenticate:
13192
14772
  process.exit(1);
13193
14773
  return;
13194
14774
  }
13195
- saveApiKey(connector, key.trim(), options.field || undefined);
14775
+ await saveApiKey(connector, key.trim(), options.field || undefined);
13196
14776
  const statusAfter = getAuthStatus(connector);
13197
14777
  console.log(chalk2.green(`
13198
14778
  \u2713 API key saved for ${meta.displayName}`));
@@ -13209,15 +14789,15 @@ program2.command("init").option("--json", "Output presets and suggestions as JSO
13209
14789
  { key: "commerce", emoji: "\uD83D\uDCB3", label: "Commerce", connectors: ["stripe", "shopify", "paypal", "revolut", "mercury"], description: "Commerce and finance" },
13210
14790
  { key: "google", emoji: "\uD83D\uDCC1", label: "Google Workspace", connectors: ["gmail", "googledrive", "googlecalendar", "googledocs", "googlesheets"], description: "Google Workspace suite" }
13211
14791
  ];
13212
- const connectorsHome = join6(homedir3(), ".connectors");
14792
+ const connectorsHome = join9(homedir7(), ".connectors");
13213
14793
  let configuredCount = 0;
13214
14794
  const configuredNames = [];
13215
14795
  try {
13216
- if (existsSync6(connectorsHome)) {
13217
- const entries = readdirSync4(connectorsHome).filter((e) => e.startsWith("connect-") && statSync3(join6(connectorsHome, e)).isDirectory());
14796
+ if (existsSync8(connectorsHome)) {
14797
+ const entries = readdirSync4(connectorsHome).filter((e) => e.startsWith("connect-") && statSync4(join9(connectorsHome, e)).isDirectory());
13218
14798
  for (const entry of entries) {
13219
- const profilesDir = join6(connectorsHome, entry, "profiles");
13220
- if (existsSync6(profilesDir)) {
14799
+ const profilesDir = join9(connectorsHome, entry, "profiles");
14800
+ if (existsSync8(profilesDir)) {
13221
14801
  configuredCount++;
13222
14802
  configuredNames.push(entry.replace(/^connect-/, ""));
13223
14803
  }
@@ -13315,44 +14895,44 @@ function redactSecrets(obj) {
13315
14895
  return obj;
13316
14896
  }
13317
14897
  program2.command("export").option("-o, --output <file>", "Write to file instead of stdout").option("--include-secrets", "Include secrets in plaintext (dangerous \u2014 use only for backup/restore)").description("Export all connector credentials as JSON backup").action((options) => {
13318
- const connectDir = join6(homedir3(), ".connectors");
14898
+ const connectDir = join9(homedir7(), ".connectors");
13319
14899
  const result = {};
13320
- if (existsSync6(connectDir)) {
14900
+ if (existsSync8(connectDir)) {
13321
14901
  for (const entry of readdirSync4(connectDir)) {
13322
- const entryPath = join6(connectDir, entry);
13323
- if (!statSync3(entryPath).isDirectory() || !entry.startsWith("connect-"))
14902
+ const entryPath = join9(connectDir, entry);
14903
+ if (!statSync4(entryPath).isDirectory() || !entry.startsWith("connect-"))
13324
14904
  continue;
13325
14905
  const connectorName = entry.replace(/^connect-/, "");
13326
14906
  let credentials = undefined;
13327
- const credentialsPath = join6(entryPath, "credentials.json");
13328
- if (existsSync6(credentialsPath)) {
14907
+ const credentialsPath = join9(entryPath, "credentials.json");
14908
+ if (existsSync8(credentialsPath)) {
13329
14909
  try {
13330
- credentials = JSON.parse(readFileSync5(credentialsPath, "utf-8"));
14910
+ credentials = JSON.parse(readFileSync6(credentialsPath, "utf-8"));
13331
14911
  } catch {}
13332
14912
  }
13333
- const profilesDir = join6(entryPath, "profiles");
13334
- if (!existsSync6(profilesDir) && !credentials)
14913
+ const profilesDir = join9(entryPath, "profiles");
14914
+ if (!existsSync8(profilesDir) && !credentials)
13335
14915
  continue;
13336
14916
  const profiles = {};
13337
- if (existsSync6(profilesDir)) {
14917
+ if (existsSync8(profilesDir)) {
13338
14918
  for (const pEntry of readdirSync4(profilesDir)) {
13339
- const pPath = join6(profilesDir, pEntry);
13340
- if (statSync3(pPath).isFile() && pEntry.endsWith(".json")) {
14919
+ const pPath = join9(profilesDir, pEntry);
14920
+ if (statSync4(pPath).isFile() && pEntry.endsWith(".json")) {
13341
14921
  try {
13342
- profiles[pEntry.replace(/\.json$/, "")] = JSON.parse(readFileSync5(pPath, "utf-8"));
14922
+ profiles[pEntry.replace(/\.json$/, "")] = JSON.parse(readFileSync6(pPath, "utf-8"));
13343
14923
  } catch {}
13344
- } else if (statSync3(pPath).isDirectory()) {
13345
- const configPath = join6(pPath, "config.json");
13346
- const tokensPath = join6(pPath, "tokens.json");
14924
+ } else if (statSync4(pPath).isDirectory()) {
14925
+ const configPath = join9(pPath, "config.json");
14926
+ const tokensPath = join9(pPath, "tokens.json");
13347
14927
  let merged = {};
13348
- if (existsSync6(configPath)) {
14928
+ if (existsSync8(configPath)) {
13349
14929
  try {
13350
- merged = { ...merged, ...JSON.parse(readFileSync5(configPath, "utf-8")) };
14930
+ merged = { ...merged, ...JSON.parse(readFileSync6(configPath, "utf-8")) };
13351
14931
  } catch {}
13352
14932
  }
13353
- if (existsSync6(tokensPath)) {
14933
+ if (existsSync8(tokensPath)) {
13354
14934
  try {
13355
- merged = { ...merged, ...JSON.parse(readFileSync5(tokensPath, "utf-8")) };
14935
+ merged = { ...merged, ...JSON.parse(readFileSync6(tokensPath, "utf-8")) };
13356
14936
  } catch {}
13357
14937
  }
13358
14938
  if (Object.keys(merged).length > 0)
@@ -13373,7 +14953,7 @@ program2.command("export").option("-o, --output <file>", "Write to file instead
13373
14953
  }
13374
14954
  const exportData = JSON.stringify(exportPayload, null, 2);
13375
14955
  if (options.output) {
13376
- writeFileSync3(options.output, exportData);
14956
+ writeFileSync5(options.output, exportData);
13377
14957
  console.log(chalk2.green(`\u2713 Exported to ${options.output}`));
13378
14958
  } else {
13379
14959
  console.log(exportData);
@@ -13387,7 +14967,7 @@ program2.command("import").argument("<file>", "JSON backup file to import (use -
13387
14967
  chunks.push(chunk.toString());
13388
14968
  raw = chunks.join("");
13389
14969
  } else {
13390
- if (!existsSync6(file)) {
14970
+ if (!existsSync8(file)) {
13391
14971
  if (options.json) {
13392
14972
  console.log(JSON.stringify({ error: `File not found: ${file}` }));
13393
14973
  } else {
@@ -13396,7 +14976,7 @@ program2.command("import").argument("<file>", "JSON backup file to import (use -
13396
14976
  process.exit(1);
13397
14977
  return;
13398
14978
  }
13399
- raw = readFileSync5(file, "utf-8");
14979
+ raw = readFileSync6(file, "utf-8");
13400
14980
  }
13401
14981
  let data;
13402
14982
  try {
@@ -13419,25 +14999,25 @@ program2.command("import").argument("<file>", "JSON backup file to import (use -
13419
14999
  process.exit(1);
13420
15000
  return;
13421
15001
  }
13422
- const connectDir = join6(homedir3(), ".connectors");
15002
+ const connectDir = join9(homedir7(), ".connectors");
13423
15003
  let imported = 0;
13424
15004
  for (const [connectorName, connData] of Object.entries(data.connectors)) {
13425
15005
  if (!/^[a-z0-9-]+$/.test(connectorName))
13426
15006
  continue;
13427
- const connectorDir = join6(connectDir, `connect-${connectorName}`);
15007
+ const connectorDir = join9(connectDir, `connect-${connectorName}`);
13428
15008
  if (connData.credentials && typeof connData.credentials === "object") {
13429
- mkdirSync3(connectorDir, { recursive: true });
13430
- writeFileSync3(join6(connectorDir, "credentials.json"), JSON.stringify(connData.credentials, null, 2));
15009
+ mkdirSync7(connectorDir, { recursive: true });
15010
+ writeFileSync5(join9(connectorDir, "credentials.json"), JSON.stringify(connData.credentials, null, 2));
13431
15011
  imported++;
13432
15012
  }
13433
15013
  if (!connData.profiles || typeof connData.profiles !== "object")
13434
15014
  continue;
13435
- const profilesDir = join6(connectorDir, "profiles");
15015
+ const profilesDir = join9(connectorDir, "profiles");
13436
15016
  for (const [profileName, config] of Object.entries(connData.profiles)) {
13437
15017
  if (!config || typeof config !== "object")
13438
15018
  continue;
13439
- mkdirSync3(profilesDir, { recursive: true });
13440
- writeFileSync3(join6(profilesDir, `${profileName}.json`), JSON.stringify(config, null, 2));
15019
+ mkdirSync7(profilesDir, { recursive: true });
15020
+ writeFileSync5(join9(profilesDir, `${profileName}.json`), JSON.stringify(config, null, 2));
13441
15021
  imported++;
13442
15022
  }
13443
15023
  }
@@ -13448,9 +15028,9 @@ program2.command("import").argument("<file>", "JSON backup file to import (use -
13448
15028
  }
13449
15029
  });
13450
15030
  program2.command("auth-import").option("--json", "Output as JSON", false).option("-d, --dry-run", "Preview what would be imported without copying", false).option("--force", "Overwrite existing files in ~/.connectors/", false).description("Migrate auth tokens from ~/.connect/ to ~/.connectors/").action((options) => {
13451
- const oldBase = join6(homedir3(), ".connect");
13452
- const newBase = join6(homedir3(), ".connectors");
13453
- if (!existsSync6(oldBase)) {
15031
+ const oldBase = join9(homedir7(), ".connect");
15032
+ const newBase = join9(homedir7(), ".connectors");
15033
+ if (!existsSync8(oldBase)) {
13454
15034
  if (options.json) {
13455
15035
  console.log(JSON.stringify({ imported: [], skipped: [], error: null, message: "No ~/.connect/ directory found" }));
13456
15036
  } else {
@@ -13462,7 +15042,7 @@ program2.command("auth-import").option("--json", "Output as JSON", false).option
13462
15042
  if (!name.startsWith("connect-"))
13463
15043
  return false;
13464
15044
  try {
13465
- return statSync3(join6(oldBase, name)).isDirectory();
15045
+ return statSync4(join9(oldBase, name)).isDirectory();
13466
15046
  } catch {
13467
15047
  return false;
13468
15048
  }
@@ -13478,8 +15058,8 @@ program2.command("auth-import").option("--json", "Output as JSON", false).option
13478
15058
  const imported = [];
13479
15059
  const skipped = [];
13480
15060
  for (const dirName of entries) {
13481
- const oldDir = join6(oldBase, dirName);
13482
- const newDir = join6(newBase, dirName);
15061
+ const oldDir = join9(oldBase, dirName);
15062
+ const newDir = join9(newBase, dirName);
13483
15063
  const connectorName = dirName.replace(/^connect-/, "");
13484
15064
  const allFiles = listFilesRecursive(oldDir);
13485
15065
  const authFiles = allFiles.filter((f) => {
@@ -13490,17 +15070,17 @@ program2.command("auth-import").option("--json", "Output as JSON", false).option
13490
15070
  const copiedFiles = [];
13491
15071
  const skippedFiles = [];
13492
15072
  for (const relFile of authFiles) {
13493
- const srcPath = join6(oldDir, relFile);
13494
- const destPath = join6(newDir, relFile);
13495
- if (existsSync6(destPath) && !options.force) {
15073
+ const srcPath = join9(oldDir, relFile);
15074
+ const destPath = join9(newDir, relFile);
15075
+ if (existsSync8(destPath) && !options.force) {
13496
15076
  skippedFiles.push(relFile);
13497
15077
  continue;
13498
15078
  }
13499
15079
  if (!options.dryRun) {
13500
- const parentDir = join6(destPath, "..");
13501
- mkdirSync3(parentDir, { recursive: true });
13502
- const content = readFileSync5(srcPath);
13503
- writeFileSync3(destPath, content);
15080
+ const parentDir = join9(destPath, "..");
15081
+ mkdirSync7(parentDir, { recursive: true });
15082
+ const content = readFileSync6(srcPath);
15083
+ writeFileSync5(destPath, content);
13504
15084
  }
13505
15085
  copiedFiles.push(relFile);
13506
15086
  }
@@ -13745,7 +15325,7 @@ program2.command("env").option("-o, --output <file>", "Write to file instead of
13745
15325
  `) + `
13746
15326
  `;
13747
15327
  if (options.output) {
13748
- writeFileSync3(options.output, output);
15328
+ writeFileSync5(options.output, output);
13749
15329
  console.log(chalk2.green(`\u2713 Written to ${options.output} (${vars.length} variables)`));
13750
15330
  } else {
13751
15331
  console.log(output);
@@ -13773,7 +15353,7 @@ Available presets:
13773
15353
  `));
13774
15354
  });
13775
15355
  program2.command("whoami").option("--json", "Output as JSON", false).description("Show current setup: config dir, installed connectors, auth status").action((options) => {
13776
- const configDir = join6(homedir3(), ".connectors");
15356
+ const configDir = join9(homedir7(), ".connectors");
13777
15357
  const installed = getInstalledConnectors();
13778
15358
  const version = "0.3.1";
13779
15359
  let configured = 0;
@@ -13787,23 +15367,23 @@ program2.command("whoami").option("--json", "Output as JSON", false).description
13787
15367
  configured++;
13788
15368
  else
13789
15369
  unconfigured++;
13790
- const connectorConfigDir = join6(configDir, name.startsWith("connect-") ? name : `connect-${name}`);
13791
- const currentProfileFile = join6(connectorConfigDir, "current_profile");
15370
+ const connectorConfigDir = join9(configDir, name.startsWith("connect-") ? name : `connect-${name}`);
15371
+ const currentProfileFile = join9(connectorConfigDir, "current_profile");
13792
15372
  let profile = "default";
13793
- if (existsSync6(currentProfileFile)) {
15373
+ if (existsSync8(currentProfileFile)) {
13794
15374
  try {
13795
- profile = readFileSync5(currentProfileFile, "utf-8").trim() || "default";
15375
+ profile = readFileSync6(currentProfileFile, "utf-8").trim() || "default";
13796
15376
  } catch {}
13797
15377
  }
13798
15378
  connectorDetails.push({ name, configured: auth.configured, authType: auth.type, profile, source: "project" });
13799
15379
  }
13800
- if (existsSync6(configDir)) {
15380
+ if (existsSync8(configDir)) {
13801
15381
  try {
13802
15382
  const globalDirs = readdirSync4(configDir).filter((f) => {
13803
15383
  if (!f.startsWith("connect-"))
13804
15384
  return false;
13805
15385
  try {
13806
- return statSync3(join6(configDir, f)).isDirectory();
15386
+ return statSync4(join9(configDir, f)).isDirectory();
13807
15387
  } catch {
13808
15388
  return false;
13809
15389
  }
@@ -13817,11 +15397,11 @@ program2.command("whoami").option("--json", "Output as JSON", false).description
13817
15397
  continue;
13818
15398
  seen.add(name);
13819
15399
  configured++;
13820
- const currentProfileFile = join6(configDir, dir, "current_profile");
15400
+ const currentProfileFile = join9(configDir, dir, "current_profile");
13821
15401
  let profile = "default";
13822
- if (existsSync6(currentProfileFile)) {
15402
+ if (existsSync8(currentProfileFile)) {
13823
15403
  try {
13824
- profile = readFileSync5(currentProfileFile, "utf-8").trim() || "default";
15404
+ profile = readFileSync6(currentProfileFile, "utf-8").trim() || "default";
13825
15405
  } catch {}
13826
15406
  }
13827
15407
  connectorDetails.push({ name, configured: true, authType: auth.type, profile, source: "global" });
@@ -13832,7 +15412,7 @@ program2.command("whoami").option("--json", "Output as JSON", false).description
13832
15412
  console.log(JSON.stringify({
13833
15413
  version,
13834
15414
  configDir,
13835
- configDirExists: existsSync6(configDir),
15415
+ configDirExists: existsSync8(configDir),
13836
15416
  installed: installed.length,
13837
15417
  configured,
13838
15418
  unconfigured,
@@ -13844,7 +15424,7 @@ program2.command("whoami").option("--json", "Output as JSON", false).description
13844
15424
  Connectors Setup
13845
15425
  `));
13846
15426
  console.log(` Version: ${chalk2.cyan(version)}`);
13847
- console.log(` Config: ${configDir}${existsSync6(configDir) ? "" : chalk2.dim(" (not created yet)")}`);
15427
+ console.log(` Config: ${configDir}${existsSync8(configDir) ? "" : chalk2.dim(" (not created yet)")}`);
13848
15428
  console.log(` Installed: ${installed.length} connector${installed.length !== 1 ? "s" : ""}`);
13849
15429
  console.log(` Configured: ${chalk2.green(String(configured))} ready, ${unconfigured > 0 ? chalk2.red(String(unconfigured)) : chalk2.dim("0")} need auth`);
13850
15430
  const projectConnectors = connectorDetails.filter((c) => c.source === "project");
@@ -13934,18 +15514,18 @@ Testing connector credentials...
13934
15514
  }
13935
15515
  }
13936
15516
  if (!apiKey) {
13937
- const connectorConfigDir = join6(homedir3(), ".connectors", name.startsWith("connect-") ? name : `connect-${name}`);
15517
+ const connectorConfigDir = join9(homedir7(), ".connectors", name.startsWith("connect-") ? name : `connect-${name}`);
13938
15518
  let currentProfile = "default";
13939
- const currentProfileFile = join6(connectorConfigDir, "current_profile");
13940
- if (existsSync6(currentProfileFile)) {
15519
+ const currentProfileFile = join9(connectorConfigDir, "current_profile");
15520
+ if (existsSync8(currentProfileFile)) {
13941
15521
  try {
13942
- currentProfile = readFileSync5(currentProfileFile, "utf-8").trim() || "default";
15522
+ currentProfile = readFileSync6(currentProfileFile, "utf-8").trim() || "default";
13943
15523
  } catch {}
13944
15524
  }
13945
- const tokensFile = join6(connectorConfigDir, "profiles", currentProfile, "tokens.json");
13946
- if (existsSync6(tokensFile)) {
15525
+ const tokensFile = join9(connectorConfigDir, "profiles", currentProfile, "tokens.json");
15526
+ if (existsSync8(tokensFile)) {
13947
15527
  try {
13948
- const tokens = JSON.parse(readFileSync5(tokensFile, "utf-8"));
15528
+ const tokens = JSON.parse(readFileSync6(tokensFile, "utf-8"));
13949
15529
  const isExpired = tokens.expiresAt && Date.now() >= tokens.expiresAt - 60000;
13950
15530
  if (isExpired && tokens.refreshToken) {
13951
15531
  try {
@@ -13963,19 +15543,19 @@ Testing connector credentials...
13963
15543
  } catch {}
13964
15544
  }
13965
15545
  if (!apiKey) {
13966
- const profileFile = join6(connectorConfigDir, "profiles", `${currentProfile}.json`);
13967
- if (existsSync6(profileFile)) {
15546
+ const profileFile = join9(connectorConfigDir, "profiles", `${currentProfile}.json`);
15547
+ if (existsSync8(profileFile)) {
13968
15548
  try {
13969
- const config = JSON.parse(readFileSync5(profileFile, "utf-8"));
15549
+ const config = JSON.parse(readFileSync6(profileFile, "utf-8"));
13970
15550
  apiKey = Object.values(config).find((v) => typeof v === "string" && v.length > 0);
13971
15551
  } catch {}
13972
15552
  }
13973
15553
  }
13974
15554
  if (!apiKey) {
13975
- const profileDirConfig = join6(connectorConfigDir, "profiles", currentProfile, "config.json");
13976
- if (existsSync6(profileDirConfig)) {
15555
+ const profileDirConfig = join9(connectorConfigDir, "profiles", currentProfile, "config.json");
15556
+ if (existsSync8(profileDirConfig)) {
13977
15557
  try {
13978
- const config = JSON.parse(readFileSync5(profileDirConfig, "utf-8"));
15558
+ const config = JSON.parse(readFileSync6(profileDirConfig, "utf-8"));
13979
15559
  apiKey = Object.values(config).find((v) => typeof v === "string" && v.length > 0);
13980
15560
  } catch {}
13981
15561
  }
@@ -14112,7 +15692,7 @@ program2.command("run").description("Execute an API operation on a connector").a
14112
15692
  console.error(chalk2.yellow(`No command specified. Run ${chalk2.white(`connectors ops ${name}`)} to see available operations.`));
14113
15693
  process.exit(1);
14114
15694
  }
14115
- const result = await runConnectorCommand(name, args, parseInt(options.timeout));
15695
+ const result = await runConnectorCommand2(name, args, parseInt(options.timeout));
14116
15696
  if (result.stdout) {
14117
15697
  console.log(result.stdout);
14118
15698
  }
@@ -14142,7 +15722,7 @@ Setting up ${meta.displayName}...
14142
15722
  const alreadyInstalled = installed.includes(meta.name);
14143
15723
  let installResult;
14144
15724
  if (alreadyInstalled && !options.overwrite) {
14145
- installResult = { success: true, path: join6(process.cwd(), ".connectors", `connect-${meta.name}`) };
15725
+ installResult = { success: true, path: join9(process.cwd(), ".connectors", `connect-${meta.name}`) };
14146
15726
  if (!options.json) {
14147
15727
  console.log(` ${chalk2.green("\u2713")} Already installed`);
14148
15728
  }
@@ -14167,7 +15747,7 @@ Setting up ${meta.displayName}...
14167
15747
  let authConfigured = false;
14168
15748
  if (authType === "oauth") {
14169
15749
  if (options.key) {
14170
- saveApiKey(name, options.key, options.field || undefined);
15750
+ await saveApiKey(name, options.key, options.field || undefined);
14171
15751
  authConfigured = true;
14172
15752
  if (!options.json) {
14173
15753
  console.log(` ${chalk2.green("\u2713")} Token saved`);
@@ -14225,7 +15805,7 @@ Setting up ${meta.displayName}...
14225
15805
  }
14226
15806
  } else {
14227
15807
  if (options.key) {
14228
- saveApiKey(name, options.key, options.field || undefined);
15808
+ await saveApiKey(name, options.key, options.field || undefined);
14229
15809
  authConfigured = true;
14230
15810
  if (!options.json) {
14231
15811
  console.log(` ${chalk2.green("\u2713")} ${authType === "bearer" ? "Bearer token" : "API key"} saved`);
@@ -14268,4 +15848,299 @@ Setting up ${meta.displayName}...
14268
15848
  }
14269
15849
  process.exit(0);
14270
15850
  });
15851
+ program2.command("hot").description("Show top connectors by usage").option("--limit <n>", "Max results", "10").option("--days <n>", "Time window in days", "7").option("--json", "Output as JSON").action((options) => {
15852
+ const { getTopConnectors: getTopConnectors2 } = (init_usage(), __toCommonJS(exports_usage));
15853
+ const { getPromotedConnectors: getPromotedConnectors2 } = (init_promotions(), __toCommonJS(exports_promotions));
15854
+ const top = getTopConnectors2(parseInt(options.limit), parseInt(options.days), getDatabase());
15855
+ const promoted = new Set(getPromotedConnectors2(getDatabase()));
15856
+ if (options.json) {
15857
+ console.log(JSON.stringify(top.map((t) => ({ ...t, promoted: promoted.has(t.connector) }))));
15858
+ return;
15859
+ }
15860
+ if (top.length === 0) {
15861
+ console.log(chalk2.dim("No usage data yet. Use connectors to build up stats."));
15862
+ return;
15863
+ }
15864
+ console.log(chalk2.bold(`
15865
+ Top connectors (last ${options.days} days):
15866
+ `));
15867
+ console.log(` ${chalk2.dim("#".padEnd(4))}${chalk2.dim("Connector".padEnd(22))}${chalk2.dim("Usage".padEnd(8))}${chalk2.dim("Badges")}`);
15868
+ console.log(chalk2.dim(` ${"\u2500".repeat(45)}`));
15869
+ for (let i = 0;i < top.length; i++) {
15870
+ const t = top[i];
15871
+ const badges = [
15872
+ t.count >= 5 ? chalk2.red("[HOT]") : "",
15873
+ promoted.has(t.connector) ? chalk2.yellow("[PRO]") : ""
15874
+ ].filter(Boolean).join(" ");
15875
+ console.log(` ${String(i + 1).padEnd(4)}${chalk2.cyan(t.connector.padEnd(22))}${String(t.count).padEnd(8)}${badges}`);
15876
+ }
15877
+ });
15878
+ program2.command("promote").argument("<connector>", "Connector to promote").description("Mark a connector as promoted (boosted in search)").action((connector) => {
15879
+ const meta = getConnector(connector);
15880
+ if (!meta) {
15881
+ console.error(chalk2.red(`Connector '${connector}' not found`));
15882
+ process.exit(1);
15883
+ }
15884
+ const { promoteConnector: promoteConnector2 } = (init_promotions(), __toCommonJS(exports_promotions));
15885
+ promoteConnector2(connector, getDatabase());
15886
+ console.log(chalk2.green("\u2713") + ` ${meta.displayName} promoted \u2014 will rank higher in search`);
15887
+ });
15888
+ program2.command("demote").argument("<connector>", "Connector to demote").description("Remove promotion from a connector").action((connector) => {
15889
+ const { demoteConnector: demoteConnector2 } = (init_promotions(), __toCommonJS(exports_promotions));
15890
+ const removed = demoteConnector2(connector, getDatabase());
15891
+ if (removed)
15892
+ console.log(chalk2.green("\u2713") + ` ${connector} demoted`);
15893
+ else
15894
+ console.log(chalk2.dim(`${connector} was not promoted`));
15895
+ });
15896
+ var jobsCmd = program2.command("jobs").description("Manage scheduled connector jobs");
15897
+ jobsCmd.command("add").description("Add a scheduled job").requiredOption("--name <name>", "Job name").requiredOption("--connector <connector>", "Connector name").requiredOption("--command <command>", "Command to run").requiredOption("--cron <cron>", "Cron expression (5-field)").option("--args <args>", "Command args (space-separated)").option("--strip", "Apply LLM stripping to output").option("--json", "Output as JSON").action((options) => {
15898
+ const db = getDatabase();
15899
+ const args = options.args ? options.args.split(" ") : [];
15900
+ const job = createJob({ name: options.name, connector: options.connector, command: options.command, args, cron: options.cron, strip: !!options.strip }, db);
15901
+ if (options.json) {
15902
+ console.log(JSON.stringify(job));
15903
+ return;
15904
+ }
15905
+ console.log(chalk2.green("\u2713") + ` Job created: ${job.name} (${job.cron})`);
15906
+ });
15907
+ jobsCmd.command("list").description("List all jobs").option("--json", "Output as JSON").action((options) => {
15908
+ const jobs = listJobs(getDatabase());
15909
+ if (options.json) {
15910
+ console.log(JSON.stringify(jobs));
15911
+ return;
15912
+ }
15913
+ if (jobs.length === 0) {
15914
+ console.log(chalk2.dim("No jobs configured."));
15915
+ return;
15916
+ }
15917
+ for (const j of jobs) {
15918
+ const status = j.enabled ? chalk2.green("enabled") : chalk2.dim("disabled");
15919
+ const strip = j.strip ? chalk2.cyan(" [strip]") : "";
15920
+ console.log(` ${j.name.padEnd(20)} ${j.connector}.${j.command.padEnd(16)} ${j.cron.padEnd(15)} ${status}${strip}`);
15921
+ }
15922
+ });
15923
+ jobsCmd.command("run").description("Manually trigger a job").argument("<name>", "Job name").option("--json", "Output as JSON").action(async (name, options) => {
15924
+ const db = getDatabase();
15925
+ const job = getJobByName(name, db);
15926
+ if (!job) {
15927
+ console.error(chalk2.red(`Job "${name}" not found`));
15928
+ process.exit(1);
15929
+ }
15930
+ if (!options.json)
15931
+ console.log(chalk2.dim(`Running ${job.connector} ${job.command}...`));
15932
+ const result = await triggerJob(job, db);
15933
+ if (options.json) {
15934
+ console.log(JSON.stringify(result));
15935
+ return;
15936
+ }
15937
+ const icon = result.exit_code === 0 ? chalk2.green("\u2713") : chalk2.red("\u2717");
15938
+ console.log(`${icon} Run ${result.run_id} \u2014 exit ${result.exit_code}`);
15939
+ if (result.output)
15940
+ console.log(result.output.slice(0, 2000));
15941
+ });
15942
+ jobsCmd.command("logs").description("Show recent runs for a job").argument("<name>", "Job name").option("--limit <n>", "Max results", "10").option("--json", "Output as JSON").action((name, options) => {
15943
+ const db = getDatabase();
15944
+ const job = getJobByName(name, db);
15945
+ if (!job) {
15946
+ console.error(chalk2.red(`Job "${name}" not found`));
15947
+ process.exit(1);
15948
+ }
15949
+ const runs = listJobRuns(job.id, parseInt(options.limit), db);
15950
+ if (options.json) {
15951
+ console.log(JSON.stringify(runs));
15952
+ return;
15953
+ }
15954
+ if (runs.length === 0) {
15955
+ console.log(chalk2.dim("No runs yet."));
15956
+ return;
15957
+ }
15958
+ for (const r of runs) {
15959
+ const icon = r.exit_code === 0 ? chalk2.green("\u2713") : chalk2.red("\u2717");
15960
+ console.log(` ${icon} ${r.started_at.slice(0, 19)} \u2014 exit ${r.exit_code ?? "?"}`);
15961
+ }
15962
+ });
15963
+ jobsCmd.command("enable").description("Enable a job").argument("<name>").action((name) => {
15964
+ const db = getDatabase();
15965
+ const job = getJobByName(name, db);
15966
+ if (!job) {
15967
+ console.error(chalk2.red(`Job "${name}" not found`));
15968
+ process.exit(1);
15969
+ }
15970
+ updateJob(job.id, { enabled: true }, db);
15971
+ console.log(chalk2.green("\u2713") + ` Job "${name}" enabled`);
15972
+ });
15973
+ jobsCmd.command("disable").description("Disable a job").argument("<name>").action((name) => {
15974
+ const db = getDatabase();
15975
+ const job = getJobByName(name, db);
15976
+ if (!job) {
15977
+ console.error(chalk2.red(`Job "${name}" not found`));
15978
+ process.exit(1);
15979
+ }
15980
+ updateJob(job.id, { enabled: false }, db);
15981
+ console.log(chalk2.green("\u2713") + ` Job "${name}" disabled`);
15982
+ });
15983
+ jobsCmd.command("delete").description("Delete a job").argument("<name>").action((name) => {
15984
+ const db = getDatabase();
15985
+ const job = getJobByName(name, db);
15986
+ if (!job) {
15987
+ console.error(chalk2.red(`Job "${name}" not found`));
15988
+ process.exit(1);
15989
+ }
15990
+ deleteJob(job.id, db);
15991
+ console.log(chalk2.green("\u2713") + ` Job "${name}" deleted`);
15992
+ });
15993
+ var workflowsCmd = program2.command("workflows").description("Manage connector workflows (sequential pipelines)");
15994
+ workflowsCmd.command("add").description("Create a workflow from a JSON steps array").requiredOption("--name <name>", "Workflow name").requiredOption("--steps <json>", `Steps JSON array, e.g. '[{"connector":"stripe","command":"products list"}]'`).option("--json", "Output as JSON").action((options) => {
15995
+ let steps;
15996
+ try {
15997
+ steps = JSON.parse(options.steps);
15998
+ } catch {
15999
+ console.error(chalk2.red("Invalid JSON for --steps"));
16000
+ process.exit(1);
16001
+ }
16002
+ const wf = createWorkflow({ name: options.name, steps }, getDatabase());
16003
+ if (options.json) {
16004
+ console.log(JSON.stringify(wf));
16005
+ return;
16006
+ }
16007
+ console.log(chalk2.green("\u2713") + ` Workflow "${wf.name}" created (${wf.steps.length} steps)`);
16008
+ });
16009
+ workflowsCmd.command("list").description("List all workflows").option("--json", "Output as JSON").action((options) => {
16010
+ const wfs = listWorkflows(getDatabase());
16011
+ if (options.json) {
16012
+ console.log(JSON.stringify(wfs));
16013
+ return;
16014
+ }
16015
+ if (wfs.length === 0) {
16016
+ console.log(chalk2.dim("No workflows configured."));
16017
+ return;
16018
+ }
16019
+ for (const wf of wfs) {
16020
+ const status = wf.enabled ? chalk2.green("enabled") : chalk2.dim("disabled");
16021
+ console.log(` ${wf.name.padEnd(20)} ${String(wf.steps.length).padStart(2)} steps ${status}`);
16022
+ }
16023
+ });
16024
+ workflowsCmd.command("run").description("Run a workflow").argument("<name>", "Workflow name").option("--json", "Output as JSON").action(async (name, options) => {
16025
+ const wf = getWorkflowByName(name, getDatabase());
16026
+ if (!wf) {
16027
+ console.error(chalk2.red(`Workflow "${name}" not found`));
16028
+ process.exit(1);
16029
+ }
16030
+ if (!options.json)
16031
+ console.log(chalk2.dim(`Running workflow "${wf.name}" (${wf.steps.length} steps)...`));
16032
+ const result = await runWorkflow(wf);
16033
+ if (options.json) {
16034
+ console.log(JSON.stringify(result));
16035
+ return;
16036
+ }
16037
+ for (const step of result.steps) {
16038
+ const icon = step.exit_code === 0 ? chalk2.green("\u2713") : chalk2.red("\u2717");
16039
+ console.log(` ${icon} Step ${step.step}: ${step.connector} ${step.command}`);
16040
+ }
16041
+ console.log(result.success ? chalk2.green(`
16042
+ Workflow completed`) : chalk2.red(`
16043
+ Workflow failed`));
16044
+ });
16045
+ workflowsCmd.command("delete").description("Delete a workflow").argument("<name>").action((name) => {
16046
+ const wf = getWorkflowByName(name, getDatabase());
16047
+ if (!wf) {
16048
+ console.error(chalk2.red(`Workflow "${name}" not found`));
16049
+ process.exit(1);
16050
+ }
16051
+ deleteWorkflow(wf.id, getDatabase());
16052
+ console.log(chalk2.green("\u2713") + ` Workflow "${name}" deleted`);
16053
+ });
16054
+ var llmCmd = program2.command("llm").description("Manage LLM provider for output stripping");
16055
+ llmCmd.command("set").description("Configure LLM provider and API key").requiredOption("--provider <provider>", "Provider: cerebras, groq, openai, anthropic").requiredOption("--key <key>", "API key").option("--model <model>", "Model name (defaults to provider default)").option("--json", "Output as JSON").action((options) => {
16056
+ const provider = options.provider;
16057
+ const validProviders = ["cerebras", "groq", "openai", "anthropic"];
16058
+ if (!validProviders.includes(provider)) {
16059
+ console.error(chalk2.red(`Unknown provider "${provider}". Valid: ${validProviders.join(", ")}`));
16060
+ process.exit(1);
16061
+ }
16062
+ const model = options.model || PROVIDER_DEFAULTS[provider].model;
16063
+ const existing = getLlmConfig();
16064
+ saveLlmConfig({ provider, model, api_key: options.key, strip: existing?.strip ?? false });
16065
+ if (options.json) {
16066
+ console.log(JSON.stringify({ provider, model, key: maskKey(options.key), strip: existing?.strip ?? false }));
16067
+ } else {
16068
+ console.log(chalk2.green("\u2713") + ` LLM configured: ${provider} / ${model}`);
16069
+ console.log(` Key: ${maskKey(options.key)}`);
16070
+ console.log(` Strip: ${existing?.strip ? chalk2.green("enabled") : chalk2.dim("disabled")} (run 'connectors llm strip enable' to turn on)`);
16071
+ }
16072
+ });
16073
+ llmCmd.command("status").description("Show current LLM configuration").option("--json", "Output as JSON").action((options) => {
16074
+ const config = getLlmConfig();
16075
+ if (!config) {
16076
+ if (options.json)
16077
+ console.log(JSON.stringify({ configured: false }));
16078
+ else
16079
+ console.log(chalk2.dim("No LLM configured. Run: connectors llm set --provider <provider> --key <key>"));
16080
+ return;
16081
+ }
16082
+ if (options.json) {
16083
+ console.log(JSON.stringify({ configured: true, provider: config.provider, model: config.model, key: maskKey(config.api_key), strip: config.strip }));
16084
+ } else {
16085
+ console.log(chalk2.bold("LLM Configuration"));
16086
+ console.log(` Provider : ${config.provider}`);
16087
+ console.log(` Model : ${config.model}`);
16088
+ console.log(` Key : ${maskKey(config.api_key)}`);
16089
+ console.log(` Strip : ${config.strip ? chalk2.green("enabled") : chalk2.red("disabled")}`);
16090
+ }
16091
+ });
16092
+ llmCmd.command("strip").description("Enable or disable global output stripping").argument("<action>", "enable or disable").action((action) => {
16093
+ if (action !== "enable" && action !== "disable") {
16094
+ console.error(chalk2.red('Action must be "enable" or "disable"'));
16095
+ process.exit(1);
16096
+ }
16097
+ try {
16098
+ setLlmStrip(action === "enable");
16099
+ console.log(chalk2.green("\u2713") + ` Output stripping ${action}d`);
16100
+ } catch (e) {
16101
+ console.error(chalk2.red(String(e instanceof Error ? e.message : e)));
16102
+ process.exit(1);
16103
+ }
16104
+ });
16105
+ llmCmd.command("test").description("Test current LLM configuration with a sample prompt").option("--json", "Output as JSON").action(async (options) => {
16106
+ const config = getLlmConfig();
16107
+ if (!config) {
16108
+ console.error(chalk2.red("No LLM configured. Run: connectors llm set --provider <provider> --key <key>"));
16109
+ process.exit(1);
16110
+ }
16111
+ if (!options.json)
16112
+ console.log(chalk2.dim(`Testing ${config.provider} / ${config.model}...`));
16113
+ try {
16114
+ const client = new LLMClient(config);
16115
+ const result = await client.complete('You are a helpful assistant. Respond with exactly: {"status":"ok"}', "ping");
16116
+ if (options.json) {
16117
+ console.log(JSON.stringify({ success: true, provider: result.provider, model: result.model, latency_ms: result.latency_ms, response: result.content }));
16118
+ } else {
16119
+ console.log(chalk2.green("\u2713") + ` Response received in ${result.latency_ms}ms`);
16120
+ console.log(` ${result.content.trim()}`);
16121
+ }
16122
+ } catch (e) {
16123
+ if (options.json)
16124
+ console.log(JSON.stringify({ success: false, error: String(e instanceof Error ? e.message : e) }));
16125
+ else
16126
+ console.error(chalk2.red("\u2717 " + String(e instanceof Error ? e.message : e)));
16127
+ process.exit(1);
16128
+ }
16129
+ });
16130
+ llmCmd.command("providers").description("List supported LLM providers").option("--json", "Output as JSON").action((options) => {
16131
+ const providers = [
16132
+ { name: "cerebras", baseUrl: "https://api.cerebras.ai/v1", defaultModel: PROVIDER_DEFAULTS.cerebras.model, compatible: "OpenAI" },
16133
+ { name: "groq", baseUrl: "https://api.groq.com/openai/v1", defaultModel: PROVIDER_DEFAULTS.groq.model, compatible: "OpenAI" },
16134
+ { name: "openai", baseUrl: "https://api.openai.com/v1", defaultModel: PROVIDER_DEFAULTS.openai.model, compatible: "OpenAI" },
16135
+ { name: "anthropic", baseUrl: "https://api.anthropic.com/v1", defaultModel: PROVIDER_DEFAULTS.anthropic.model, compatible: "Anthropic" }
16136
+ ];
16137
+ if (options.json) {
16138
+ console.log(JSON.stringify(providers));
16139
+ return;
16140
+ }
16141
+ console.log(chalk2.bold("Supported LLM Providers"));
16142
+ for (const p of providers) {
16143
+ console.log(` ${chalk2.cyan(p.name.padEnd(12))} ${p.defaultModel.padEnd(30)} ${chalk2.dim(p.baseUrl)}`);
16144
+ }
16145
+ });
14271
16146
  program2.parse();