@hasna/connectors 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.js +248 -2116
- package/bin/mcp.js +176 -1690
- package/bin/serve.js +130 -1246
- package/connectors/connect-gmail/src/cli/index.ts +32 -3
- package/connectors/connect-mercury/CLAUDE.md +1 -0
- package/connectors/connect-yousign/CLAUDE.md +48 -0
- package/connectors/connect-yousign/bun.lock +32 -0
- package/connectors/connect-yousign/node_modules/@types/bun/LICENSE +21 -0
- package/connectors/connect-yousign/node_modules/@types/bun/README.md +20 -0
- package/connectors/connect-yousign/node_modules/@types/bun/index.d.ts +1 -0
- package/connectors/connect-yousign/node_modules/@types/bun/package.json +53 -0
- package/connectors/connect-yousign/node_modules/@types/node/LICENSE +21 -0
- package/connectors/connect-yousign/node_modules/@types/node/README.md +15 -0
- package/connectors/connect-yousign/node_modules/@types/node/assert/strict.d.ts +105 -0
- package/connectors/connect-yousign/node_modules/@types/node/assert.d.ts +955 -0
- package/connectors/connect-yousign/node_modules/@types/node/async_hooks.d.ts +623 -0
- package/connectors/connect-yousign/node_modules/@types/node/buffer.buffer.d.ts +466 -0
- package/connectors/connect-yousign/node_modules/@types/node/buffer.d.ts +1810 -0
- package/connectors/connect-yousign/node_modules/@types/node/child_process.d.ts +1433 -0
- package/connectors/connect-yousign/node_modules/@types/node/cluster.d.ts +486 -0
- package/connectors/connect-yousign/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
- package/connectors/connect-yousign/node_modules/@types/node/console.d.ts +151 -0
- package/connectors/connect-yousign/node_modules/@types/node/constants.d.ts +20 -0
- package/connectors/connect-yousign/node_modules/@types/node/crypto.d.ts +4065 -0
- package/connectors/connect-yousign/node_modules/@types/node/dgram.d.ts +564 -0
- package/connectors/connect-yousign/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
- package/connectors/connect-yousign/node_modules/@types/node/dns/promises.d.ts +503 -0
- package/connectors/connect-yousign/node_modules/@types/node/dns.d.ts +922 -0
- package/connectors/connect-yousign/node_modules/@types/node/domain.d.ts +166 -0
- package/connectors/connect-yousign/node_modules/@types/node/events.d.ts +1047 -0
- package/connectors/connect-yousign/node_modules/@types/node/fs/promises.d.ts +1329 -0
- package/connectors/connect-yousign/node_modules/@types/node/fs.d.ts +4678 -0
- package/connectors/connect-yousign/node_modules/@types/node/globals.d.ts +150 -0
- package/connectors/connect-yousign/node_modules/@types/node/globals.typedarray.d.ts +101 -0
- package/connectors/connect-yousign/node_modules/@types/node/http.d.ts +2188 -0
- package/connectors/connect-yousign/node_modules/@types/node/http2.d.ts +2480 -0
- package/connectors/connect-yousign/node_modules/@types/node/https.d.ts +405 -0
- package/connectors/connect-yousign/node_modules/@types/node/index.d.ts +115 -0
- package/connectors/connect-yousign/node_modules/@types/node/inspector/promises.d.ts +41 -0
- package/connectors/connect-yousign/node_modules/@types/node/inspector.d.ts +269 -0
- package/connectors/connect-yousign/node_modules/@types/node/inspector.generated.d.ts +4401 -0
- package/connectors/connect-yousign/node_modules/@types/node/module.d.ts +757 -0
- package/connectors/connect-yousign/node_modules/@types/node/net.d.ts +933 -0
- package/connectors/connect-yousign/node_modules/@types/node/os.d.ts +507 -0
- package/connectors/connect-yousign/node_modules/@types/node/package.json +155 -0
- package/connectors/connect-yousign/node_modules/@types/node/path/posix.d.ts +8 -0
- package/connectors/connect-yousign/node_modules/@types/node/path/win32.d.ts +8 -0
- package/connectors/connect-yousign/node_modules/@types/node/path.d.ts +187 -0
- package/connectors/connect-yousign/node_modules/@types/node/perf_hooks.d.ts +643 -0
- package/connectors/connect-yousign/node_modules/@types/node/process.d.ts +2175 -0
- package/connectors/connect-yousign/node_modules/@types/node/punycode.d.ts +117 -0
- package/connectors/connect-yousign/node_modules/@types/node/querystring.d.ts +152 -0
- package/connectors/connect-yousign/node_modules/@types/node/quic.d.ts +910 -0
- package/connectors/connect-yousign/node_modules/@types/node/readline/promises.d.ts +161 -0
- package/connectors/connect-yousign/node_modules/@types/node/readline.d.ts +542 -0
- package/connectors/connect-yousign/node_modules/@types/node/repl.d.ts +415 -0
- package/connectors/connect-yousign/node_modules/@types/node/sea.d.ts +162 -0
- package/connectors/connect-yousign/node_modules/@types/node/sqlite.d.ts +1065 -0
- package/connectors/connect-yousign/node_modules/@types/node/stream/consumers.d.ts +38 -0
- package/connectors/connect-yousign/node_modules/@types/node/stream/promises.d.ts +211 -0
- package/connectors/connect-yousign/node_modules/@types/node/stream/web.d.ts +296 -0
- package/connectors/connect-yousign/node_modules/@types/node/stream.d.ts +1770 -0
- package/connectors/connect-yousign/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/connectors/connect-yousign/node_modules/@types/node/test/reporters.d.ts +96 -0
- package/connectors/connect-yousign/node_modules/@types/node/test.d.ts +2275 -0
- package/connectors/connect-yousign/node_modules/@types/node/timers/promises.d.ts +108 -0
- package/connectors/connect-yousign/node_modules/@types/node/timers.d.ts +159 -0
- package/connectors/connect-yousign/node_modules/@types/node/tls.d.ts +1203 -0
- package/connectors/connect-yousign/node_modules/@types/node/trace_events.d.ts +197 -0
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/index.d.ts +117 -0
- package/connectors/connect-yousign/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
- package/connectors/connect-yousign/node_modules/@types/node/ts5.7/index.d.ts +117 -0
- package/connectors/connect-yousign/node_modules/@types/node/tty.d.ts +250 -0
- package/connectors/connect-yousign/node_modules/@types/node/url.d.ts +541 -0
- package/connectors/connect-yousign/node_modules/@types/node/util/types.d.ts +558 -0
- package/connectors/connect-yousign/node_modules/@types/node/util.d.ts +1687 -0
- package/connectors/connect-yousign/node_modules/@types/node/v8.d.ts +988 -0
- package/connectors/connect-yousign/node_modules/@types/node/vm.d.ts +1208 -0
- package/connectors/connect-yousign/node_modules/@types/node/wasi.d.ts +202 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/blob.d.ts +23 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/console.d.ts +9 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/events.d.ts +106 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/performance.d.ts +45 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/streams.d.ts +115 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/timers.d.ts +44 -0
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/url.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/@types/node/worker_threads.d.ts +717 -0
- package/connectors/connect-yousign/node_modules/@types/node/zlib.d.ts +682 -0
- package/connectors/connect-yousign/node_modules/bun-types/CLAUDE.md +105 -0
- package/connectors/connect-yousign/node_modules/bun-types/README.md +33 -0
- package/connectors/connect-yousign/node_modules/bun-types/bun.d.ts +8481 -0
- package/connectors/connect-yousign/node_modules/bun-types/bun.ns.d.ts +5 -0
- package/connectors/connect-yousign/node_modules/bun-types/bundle.d.ts +74 -0
- package/connectors/connect-yousign/node_modules/bun-types/deprecated.d.ts +184 -0
- package/connectors/connect-yousign/node_modules/bun-types/devserver.d.ts +187 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/README.md +28 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/bytecode.mdx +447 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/css.mdx +1024 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/esbuild.mdx +304 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/executables.mdx +1318 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/fullstack.mdx +1086 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/hot-reloading.mdx +229 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/html-static.mdx +498 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/index.mdx +1840 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/loaders.mdx +451 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/macros.mdx +328 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/minifier.mdx +1286 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/plugins.mdx +477 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/standalone-html.mdx +314 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/feedback.mdx +75 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-array.mdx +29 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-dataview.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-stream.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-string.mdx +17 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-typedarray.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-blob.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-string.mdx +27 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/dataview-to-string.mdx +17 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-blob.mdx +18 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-string.mdx +18 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/aws-lambda.mdx +204 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/digital-ocean.mdx +161 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/google-cloud-run.mdx +194 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/railway.mdx +145 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/render.mdx +82 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/vercel.mdx +97 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/astro.mdx +82 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/discordjs.mdx +80 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/docker.mdx +151 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/drizzle.mdx +195 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/elysia.mdx +31 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/express.mdx +43 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/gel.mdx +261 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/hono.mdx +47 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/mongoose.mdx +92 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/nextjs.mdx +103 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/nuxt.mdx +96 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/pm2.mdx +55 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/prisma.mdx +164 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/qwik.mdx +114 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/react.mdx +52 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/remix.mdx +97 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/sentry.mdx +54 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/solidstart.mdx +62 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/ssr-react.mdx +49 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/stric.mdx +54 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/sveltekit.mdx +138 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/systemd.mdx +114 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/tanstack-start.mdx +791 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/upstash.mdx +87 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/vite.mdx +77 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/html-rewriter/extract-links.mdx +71 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/cluster.mdx +69 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/fetch-unix.mdx +35 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/fetch.mdx +26 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/file-uploads.mdx +97 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/hot.mdx +28 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/proxy.mdx +50 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/server.mdx +48 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/simple.mdx +20 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/stream-file.mdx +50 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/stream-iterator.mdx +49 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/tls.mdx +32 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/index.mdx +10 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-dev.mdx +28 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-git.mdx +40 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-optional.mdx +27 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-peer.mdx +45 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-tarball.mdx +35 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add.mdx +44 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/azure-artifacts.mdx +76 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/cicd.mdx +43 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/custom-registry.mdx +32 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/git-diff-bun-lockfile.mdx +48 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/jfrog-artifactory.mdx +28 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/npm-alias.mdx +25 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/registry-scope.mdx +40 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/trusted.mdx +52 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/workspaces.mdx +70 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/yarnlock.mdx +51 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/argv.mdx +66 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/ctrl-c.mdx +18 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/ipc.mdx +69 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/nanoseconds.mdx +15 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/os-signals.mdx +31 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/spawn-stderr.mdx +34 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/spawn-stdout.mdx +28 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/spawn.mdx +43 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/stdin.mdx +62 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/arraybuffer.mdx +30 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/buffer.mdx +21 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/exists.mdx +18 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/json.mdx +19 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/mime.mdx +22 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/stream.mdx +28 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/string.mdx +24 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/uint8array.mdx +23 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/watch.mdx +66 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/build-time-constants.mdx +295 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/cicd.mdx +45 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/define-constant.mdx +149 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/delete-directory.mdx +39 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/delete-file.mdx +21 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/heap-snapshot.mdx +28 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-html.mdx +15 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-json.mdx +46 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-json5.mdx +74 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-toml.mdx +32 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-yaml.mdx +104 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/read-env.mdx +37 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/set-env.mdx +51 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/shell.mdx +42 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/timezone.mdx +38 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/tsconfig-paths.mdx +31 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/typescript.mdx +51 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/vscode-debugger.mdx +47 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/web-debugger.mdx +103 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-blob.mdx +13 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-json.mdx +14 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-string.mdx +14 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-array.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-arraybuffer.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-blob.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-buffer.mdx +17 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-json.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-string.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-typedarray.mdx +24 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/bail.mdx +24 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/concurrent-test-glob.mdx +146 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/coverage-threshold.mdx +67 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/coverage.mdx +49 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/happy-dom.mdx +73 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/migrate-from-jest.mdx +125 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/mock-clock.mdx +50 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/mock-functions.mdx +70 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/rerun-each.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/run-tests.mdx +116 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/skip-tests.mdx +43 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/snapshot.mdx +102 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/spy-on.mdx +49 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/svelte-test.mdx +113 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/testing-library.mdx +93 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/timeout.mdx +17 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/todo-tests.mdx +74 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/update-snapshots.mdx +49 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/watch-mode.mdx +24 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/base64.mdx +17 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/deep-equals.mdx +41 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/deflate.mdx +20 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/detect-bun.mdx +28 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/entrypoint.mdx +19 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/escape-html.mdx +24 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/file-url-to-path.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/gzip.mdx +20 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/hash-a-password.mdx +56 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/import-meta-dir.mdx +15 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/import-meta-file.mdx +15 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/import-meta-path.mdx +15 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/javascript-uuid.mdx +25 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/main.mdx +43 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/path-to-file-url.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/sleep.mdx +24 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/upgrade.mdx +93 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/version.mdx +23 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/compression.mdx +33 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/context.mdx +79 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/pubsub.mdx +43 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/simple.mdx +38 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/append.mdx +54 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/basic.mdx +46 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/blob.mdx +30 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/cat.mdx +19 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/file-cp.mdx +18 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/filesink.mdx +54 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/response.mdx +19 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/stdout.mdx +23 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/stream.mdx +19 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/unlink.mdx +18 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/index.mdx +133 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/installation.mdx +372 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/bunx.mdx +91 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/catalogs.mdx +292 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/add.mdx +179 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/audit.mdx +60 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/info.mdx +70 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/install.mdx +591 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/link.mdx +61 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/outdated.mdx +197 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/patch.mdx +69 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/pm.mdx +323 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/publish.mdx +131 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/remove.mdx +16 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/update.mdx +140 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/why.mdx +84 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/filter.mdx +127 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/global-cache.mdx +72 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/isolated-installs.mdx +220 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/lifecycle.mdx +64 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/lockfile.mdx +64 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/npmrc.mdx +245 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/overrides.mdx +83 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/scopes-registries.mdx +35 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/security-scanner-api.mdx +95 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/workspaces.mdx +115 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/benchmarking.mdx +296 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/bindgen.mdx +223 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/building-windows.mdx +143 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/contributing.mdx +366 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/feedback.mdx +20 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/license.mdx +78 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/roadmap.mdx +8 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/quickstart.mdx +251 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/archive.mdx +452 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/auto-install.mdx +97 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/binary-data.mdx +846 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/bun-apis.mdx +59 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/bunfig.mdx +754 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/c-compiler.mdx +204 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/child-process.mdx +659 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/color.mdx +267 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/console.mdx +67 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/cookies.mdx +454 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/debugger.mdx +335 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/environment-variables.mdx +231 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/ffi.mdx +567 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/file-io.mdx +306 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/file-system-router.mdx +118 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/file-types.mdx +482 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/glob.mdx +181 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/globals.mdx +72 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/hashing.mdx +315 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/html-rewriter.mdx +333 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/cookies.mdx +79 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/error-handling.mdx +40 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/metrics.mdx +36 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/routing.mdx +289 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/server.mdx +645 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/tls.mdx +101 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/websockets.mdx +414 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/index.mdx +223 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/json5.mdx +271 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/jsonl.mdx +188 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/jsx.mdx +115 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/markdown.mdx +344 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/module-resolution.mdx +374 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/dns.mdx +111 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/fetch.mdx +484 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/tcp.mdx +239 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/udp.mdx +180 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/node-api.mdx +19 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/nodejs-compat.mdx +468 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/plugins.mdx +419 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/redis.mdx +583 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/repl.mdx +176 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/s3.mdx +881 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/secrets.mdx +340 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/semver.mdx +57 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/shell.mdx +637 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/sql.mdx +1404 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/sqlite.mdx +721 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/streams.mdx +232 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/templating/create.mdx +269 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/templating/init.mdx +58 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/transpiler.mdx +288 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/typescript.mdx +58 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/utils.mdx +1010 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/watch-mode.mdx +161 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/web-apis.mdx +29 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/workers.mdx +314 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/yaml.mdx +469 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/add.mdx +166 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/build.mdx +197 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/bunx.mdx +49 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/feedback.mdx +17 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/init.mdx +84 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/install.mdx +173 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/link.mdx +163 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/outdated.mdx +140 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/patch.mdx +171 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/publish.mdx +198 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/remove.mdx +146 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/run.mdx +305 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/test.mdx +105 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/update.mdx +144 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/code-coverage.mdx +409 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/configuration.mdx +520 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/dates-times.mdx +129 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/discovery.mdx +90 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/dom.mdx +226 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/index.mdx +409 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/lifecycle.mdx +366 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/mocks.mdx +637 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/reporters.mdx +126 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/runtime-behavior.mdx +342 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/snapshots.mdx +434 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/writing-tests.mdx +672 -0
- package/connectors/connect-yousign/node_modules/bun-types/docs/typescript.mdx +54 -0
- package/connectors/connect-yousign/node_modules/bun-types/extensions.d.ts +40 -0
- package/connectors/connect-yousign/node_modules/bun-types/fetch.d.ts +79 -0
- package/connectors/connect-yousign/node_modules/bun-types/ffi.d.ts +1154 -0
- package/connectors/connect-yousign/node_modules/bun-types/globals.d.ts +2067 -0
- package/connectors/connect-yousign/node_modules/bun-types/html-rewriter.d.ts +186 -0
- package/connectors/connect-yousign/node_modules/bun-types/index.d.ts +32 -0
- package/connectors/connect-yousign/node_modules/bun-types/jsc.d.ts +233 -0
- package/connectors/connect-yousign/node_modules/bun-types/jsx.d.ts +11 -0
- package/connectors/connect-yousign/node_modules/bun-types/overrides.d.ts +376 -0
- package/connectors/connect-yousign/node_modules/bun-types/package.json +37 -0
- package/connectors/connect-yousign/node_modules/bun-types/redis.d.ts +3352 -0
- package/connectors/connect-yousign/node_modules/bun-types/s3.d.ts +1335 -0
- package/connectors/connect-yousign/node_modules/bun-types/security.d.ts +101 -0
- package/connectors/connect-yousign/node_modules/bun-types/serve.d.ts +1296 -0
- package/connectors/connect-yousign/node_modules/bun-types/shell.d.ts +380 -0
- package/connectors/connect-yousign/node_modules/bun-types/sql.d.ts +887 -0
- package/connectors/connect-yousign/node_modules/bun-types/sqlite.d.ts +1322 -0
- package/connectors/connect-yousign/node_modules/bun-types/test-globals.d.ts +22 -0
- package/connectors/connect-yousign/node_modules/bun-types/test.d.ts +2392 -0
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/branding.d.ts +283 -0
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/index.d.ts +1207 -0
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/messages.d.ts +395 -0
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/overloads.d.ts +669 -0
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/utils.d.ts +431 -0
- package/connectors/connect-yousign/node_modules/bun-types/wasm.d.ts +193 -0
- package/connectors/connect-yousign/node_modules/chalk/license +9 -0
- package/connectors/connect-yousign/node_modules/chalk/package.json +83 -0
- package/connectors/connect-yousign/node_modules/chalk/readme.md +297 -0
- package/connectors/connect-yousign/node_modules/chalk/source/index.d.ts +325 -0
- package/connectors/connect-yousign/node_modules/chalk/source/index.js +225 -0
- package/connectors/connect-yousign/node_modules/chalk/source/utilities.js +33 -0
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
- package/connectors/connect-yousign/node_modules/commander/LICENSE +22 -0
- package/connectors/connect-yousign/node_modules/commander/Readme.md +1157 -0
- package/connectors/connect-yousign/node_modules/commander/esm.mjs +16 -0
- package/connectors/connect-yousign/node_modules/commander/index.js +24 -0
- package/connectors/connect-yousign/node_modules/commander/lib/argument.js +149 -0
- package/connectors/connect-yousign/node_modules/commander/lib/command.js +2509 -0
- package/connectors/connect-yousign/node_modules/commander/lib/error.js +39 -0
- package/connectors/connect-yousign/node_modules/commander/lib/help.js +520 -0
- package/connectors/connect-yousign/node_modules/commander/lib/option.js +330 -0
- package/connectors/connect-yousign/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/connectors/connect-yousign/node_modules/commander/package-support.json +16 -0
- package/connectors/connect-yousign/node_modules/commander/package.json +84 -0
- package/connectors/connect-yousign/node_modules/commander/typings/esm.d.mts +3 -0
- package/connectors/connect-yousign/node_modules/commander/typings/index.d.ts +969 -0
- package/connectors/connect-yousign/node_modules/typescript/LICENSE.txt +55 -0
- package/connectors/connect-yousign/node_modules/typescript/README.md +50 -0
- package/connectors/connect-yousign/node_modules/typescript/SECURITY.md +41 -0
- package/connectors/connect-yousign/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
- package/connectors/connect-yousign/node_modules/typescript/bin/tsc +2 -0
- package/connectors/connect-yousign/node_modules/typescript/bin/tsserver +2 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/_tsc.js +133818 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/_tsserver.js +659 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/_typingsInstaller.js +222 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.d.ts +22 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es6.d.ts +23 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/tsc.js +8 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/tsserver.js +8 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/tsserverlibrary.js +21 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/typesMap.json +497 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/typescript.d.ts +11437 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/typescript.js +200276 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/typingsInstaller.js +8 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/watchGuard.js +53 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
- package/connectors/connect-yousign/node_modules/typescript/package.json +120 -0
- package/connectors/connect-yousign/node_modules/undici-types/LICENSE +21 -0
- package/connectors/connect-yousign/node_modules/undici-types/README.md +6 -0
- package/connectors/connect-yousign/node_modules/undici-types/agent.d.ts +32 -0
- package/connectors/connect-yousign/node_modules/undici-types/api.d.ts +43 -0
- package/connectors/connect-yousign/node_modules/undici-types/balanced-pool.d.ts +30 -0
- package/connectors/connect-yousign/node_modules/undici-types/cache-interceptor.d.ts +173 -0
- package/connectors/connect-yousign/node_modules/undici-types/cache.d.ts +36 -0
- package/connectors/connect-yousign/node_modules/undici-types/client-stats.d.ts +15 -0
- package/connectors/connect-yousign/node_modules/undici-types/client.d.ts +108 -0
- package/connectors/connect-yousign/node_modules/undici-types/connector.d.ts +34 -0
- package/connectors/connect-yousign/node_modules/undici-types/content-type.d.ts +21 -0
- package/connectors/connect-yousign/node_modules/undici-types/cookies.d.ts +30 -0
- package/connectors/connect-yousign/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
- package/connectors/connect-yousign/node_modules/undici-types/dispatcher.d.ts +276 -0
- package/connectors/connect-yousign/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
- package/connectors/connect-yousign/node_modules/undici-types/errors.d.ts +161 -0
- package/connectors/connect-yousign/node_modules/undici-types/eventsource.d.ts +66 -0
- package/connectors/connect-yousign/node_modules/undici-types/fetch.d.ts +211 -0
- package/connectors/connect-yousign/node_modules/undici-types/formdata.d.ts +108 -0
- package/connectors/connect-yousign/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/connectors/connect-yousign/node_modules/undici-types/global-origin.d.ts +7 -0
- package/connectors/connect-yousign/node_modules/undici-types/h2c-client.d.ts +73 -0
- package/connectors/connect-yousign/node_modules/undici-types/handlers.d.ts +15 -0
- package/connectors/connect-yousign/node_modules/undici-types/header.d.ts +160 -0
- package/connectors/connect-yousign/node_modules/undici-types/index.d.ts +88 -0
- package/connectors/connect-yousign/node_modules/undici-types/interceptors.d.ts +73 -0
- package/connectors/connect-yousign/node_modules/undici-types/mock-agent.d.ts +68 -0
- package/connectors/connect-yousign/node_modules/undici-types/mock-call-history.d.ts +111 -0
- package/connectors/connect-yousign/node_modules/undici-types/mock-client.d.ts +27 -0
- package/connectors/connect-yousign/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/connectors/connect-yousign/node_modules/undici-types/mock-interceptor.d.ts +94 -0
- package/connectors/connect-yousign/node_modules/undici-types/mock-pool.d.ts +27 -0
- package/connectors/connect-yousign/node_modules/undici-types/package.json +55 -0
- package/connectors/connect-yousign/node_modules/undici-types/patch.d.ts +29 -0
- package/connectors/connect-yousign/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/connectors/connect-yousign/node_modules/undici-types/pool.d.ts +41 -0
- package/connectors/connect-yousign/node_modules/undici-types/proxy-agent.d.ts +29 -0
- package/connectors/connect-yousign/node_modules/undici-types/readable.d.ts +68 -0
- package/connectors/connect-yousign/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/connectors/connect-yousign/node_modules/undici-types/retry-handler.d.ts +125 -0
- package/connectors/connect-yousign/node_modules/undici-types/round-robin-pool.d.ts +41 -0
- package/connectors/connect-yousign/node_modules/undici-types/snapshot-agent.d.ts +109 -0
- package/connectors/connect-yousign/node_modules/undici-types/util.d.ts +18 -0
- package/connectors/connect-yousign/node_modules/undici-types/utility.d.ts +7 -0
- package/connectors/connect-yousign/node_modules/undici-types/webidl.d.ts +341 -0
- package/connectors/connect-yousign/node_modules/undici-types/websocket.d.ts +186 -0
- package/connectors/connect-yousign/package.json +52 -0
- package/connectors/connect-yousign/src/api/client.ts +119 -0
- package/connectors/connect-yousign/src/api/index.ts +221 -0
- package/connectors/connect-yousign/src/cli/index.ts +555 -0
- package/connectors/connect-yousign/src/index.ts +21 -0
- package/connectors/connect-yousign/src/types/index.ts +275 -0
- package/connectors/connect-yousign/src/utils/config.ts +121 -0
- package/connectors/connect-yousign/tsconfig.json +16 -0
- package/dashboard/dist/assets/index-CSlS3oNV.css +1 -0
- package/dashboard/dist/assets/index-sSIkMXYs.js +284 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +22 -312
- package/dist/lib/installer.d.ts +7 -6
- package/dist/lib/registry.d.ts +1 -22
- package/dist/mcp/index.d.ts +1 -1
- package/dist/server/auth.d.ts +2 -4
- package/package.json +1 -2
- package/dashboard/dist/assets/index-DmR_QNtT.css +0 -1
- package/dashboard/dist/assets/index-Dp-apHbC.js +0 -284
- package/dist/db/agents.d.ts +0 -38
- package/dist/db/agents.test.d.ts +0 -1
- package/dist/db/database.d.ts +0 -7
- package/dist/db/jobs.d.ts +0 -53
- package/dist/db/jobs.test.d.ts +0 -1
- package/dist/db/locks.d.ts +0 -59
- package/dist/db/locks.test.d.ts +0 -1
- package/dist/db/promotions.d.ts +0 -5
- package/dist/db/promotions.test.d.ts +0 -1
- package/dist/db/rate.d.ts +0 -57
- package/dist/db/rate.test.d.ts +0 -1
- package/dist/db/usage.d.ts +0 -17
- package/dist/db/usage.test.d.ts +0 -1
- package/dist/db/workflows.d.ts +0 -26
- package/dist/db/workflows.test.d.ts +0 -1
- package/dist/lib/fuzzy.d.ts +0 -16
- package/dist/lib/fuzzy.test.d.ts +0 -1
- package/dist/lib/llm.d.ts +0 -38
- package/dist/lib/llm.test.d.ts +0 -1
- package/dist/lib/lock.d.ts +0 -22
- package/dist/lib/lock.test.d.ts +0 -1
- package/dist/lib/scheduler.d.ts +0 -20
- package/dist/lib/scheduler.test.d.ts +0 -1
- package/dist/lib/strip.d.ts +0 -20
- package/dist/lib/strip.test.d.ts +0 -1
- package/dist/lib/synonyms.d.ts +0 -12
- package/dist/lib/synonyms.test.d.ts +0 -1
- package/dist/lib/workflow-runner.d.ts +0 -22
package/bin/mcp.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
3
|
var __create = Object.create;
|
|
4
4
|
var __getProtoOf = Object.getPrototypeOf;
|
|
@@ -26,7 +26,6 @@ var __export = (target, all) => {
|
|
|
26
26
|
set: (newValue) => all[name] = () => newValue
|
|
27
27
|
});
|
|
28
28
|
};
|
|
29
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
30
29
|
|
|
31
30
|
// node_modules/ajv/dist/compile/codegen/code.js
|
|
32
31
|
var require_code = __commonJS((exports) => {
|
|
@@ -4570,7 +4569,6 @@ var require_limitLength = __commonJS((exports) => {
|
|
|
4570
4569
|
var require_pattern = __commonJS((exports) => {
|
|
4571
4570
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4572
4571
|
var code_1 = require_code2();
|
|
4573
|
-
var util_1 = require_util();
|
|
4574
4572
|
var codegen_1 = require_codegen();
|
|
4575
4573
|
var error2 = {
|
|
4576
4574
|
message: ({ schemaCode }) => (0, codegen_1.str)`must match pattern "${schemaCode}"`,
|
|
@@ -4583,18 +4581,10 @@ var require_pattern = __commonJS((exports) => {
|
|
|
4583
4581
|
$data: true,
|
|
4584
4582
|
error: error2,
|
|
4585
4583
|
code(cxt) {
|
|
4586
|
-
const {
|
|
4584
|
+
const { data, $data, schema, schemaCode, it } = cxt;
|
|
4587
4585
|
const u = it.opts.unicodeRegExp ? "u" : "";
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
const regExpCode = regExp.code === "new RegExp" ? (0, codegen_1._)`new RegExp` : (0, util_1.useFunc)(gen, regExp);
|
|
4591
|
-
const valid = gen.let("valid");
|
|
4592
|
-
gen.try(() => gen.assign(valid, (0, codegen_1._)`${regExpCode}(${schemaCode}, ${u}).test(${data})`), () => gen.assign(valid, false));
|
|
4593
|
-
cxt.fail$data((0, codegen_1._)`!${valid}`);
|
|
4594
|
-
} else {
|
|
4595
|
-
const regExp = (0, code_1.usePattern)(cxt, schema);
|
|
4596
|
-
cxt.fail$data((0, codegen_1._)`!${regExp}.test(${data})`);
|
|
4597
|
-
}
|
|
4586
|
+
const regExp = $data ? (0, codegen_1._)`(new RegExp(${schemaCode}, ${u}))` : (0, code_1.usePattern)(cxt, schema);
|
|
4587
|
+
cxt.fail$data((0, codegen_1._)`!${regExp}.test(${data})`);
|
|
4598
4588
|
}
|
|
4599
4589
|
};
|
|
4600
4590
|
exports.default = def;
|
|
@@ -6287,7 +6277,7 @@ var require_formats = __commonJS((exports) => {
|
|
|
6287
6277
|
}
|
|
6288
6278
|
var TIME = /^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;
|
|
6289
6279
|
function getTime(strictTimeZone) {
|
|
6290
|
-
return function
|
|
6280
|
+
return function time3(str) {
|
|
6291
6281
|
const matches = TIME.exec(str);
|
|
6292
6282
|
if (!matches)
|
|
6293
6283
|
return false;
|
|
@@ -6500,895 +6490,6 @@ var require_dist = __commonJS((exports, module) => {
|
|
|
6500
6490
|
exports.default = formatsPlugin;
|
|
6501
6491
|
});
|
|
6502
6492
|
|
|
6503
|
-
// src/lib/installer.ts
|
|
6504
|
-
var exports_installer = {};
|
|
6505
|
-
__export(exports_installer, {
|
|
6506
|
-
removeConnector: () => removeConnector,
|
|
6507
|
-
installConnectors: () => installConnectors,
|
|
6508
|
-
installConnector: () => installConnector,
|
|
6509
|
-
getInstalledConnectors: () => getInstalledConnectors,
|
|
6510
|
-
getConnectorPath: () => getConnectorPath,
|
|
6511
|
-
getConnectorDocs: () => getConnectorDocs,
|
|
6512
|
-
connectorExists: () => connectorExists
|
|
6513
|
-
});
|
|
6514
|
-
import { existsSync as existsSync2, cpSync, mkdirSync, readFileSync as readFileSync2, writeFileSync, readdirSync, statSync, rmSync } from "fs";
|
|
6515
|
-
import { homedir } from "os";
|
|
6516
|
-
import { join as join2, dirname as dirname2 } from "path";
|
|
6517
|
-
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
6518
|
-
function resolveConnectorsDir() {
|
|
6519
|
-
const fromBin = join2(__dirname2, "..", "connectors");
|
|
6520
|
-
if (existsSync2(fromBin))
|
|
6521
|
-
return fromBin;
|
|
6522
|
-
const fromSrc = join2(__dirname2, "..", "..", "connectors");
|
|
6523
|
-
if (existsSync2(fromSrc))
|
|
6524
|
-
return fromSrc;
|
|
6525
|
-
return fromBin;
|
|
6526
|
-
}
|
|
6527
|
-
function getConnectorPath(name) {
|
|
6528
|
-
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
6529
|
-
return join2(CONNECTORS_DIR, connectorName);
|
|
6530
|
-
}
|
|
6531
|
-
function connectorExists(name) {
|
|
6532
|
-
return existsSync2(getConnectorPath(name));
|
|
6533
|
-
}
|
|
6534
|
-
function installConnector(name, options = {}) {
|
|
6535
|
-
const { targetDir = process.cwd(), overwrite = false } = options;
|
|
6536
|
-
if (!/^[a-z0-9-]+$/.test(name)) {
|
|
6537
|
-
return {
|
|
6538
|
-
connector: name,
|
|
6539
|
-
success: false,
|
|
6540
|
-
error: `Invalid connector name '${name}'`
|
|
6541
|
-
};
|
|
6542
|
-
}
|
|
6543
|
-
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
6544
|
-
const sourcePath = getConnectorPath(name);
|
|
6545
|
-
const destDir = join2(targetDir, ".connectors");
|
|
6546
|
-
const destPath = join2(destDir, connectorName);
|
|
6547
|
-
if (!existsSync2(sourcePath)) {
|
|
6548
|
-
return {
|
|
6549
|
-
connector: name,
|
|
6550
|
-
success: false,
|
|
6551
|
-
error: `Connector '${name}' not found`
|
|
6552
|
-
};
|
|
6553
|
-
}
|
|
6554
|
-
if (existsSync2(destPath) && !overwrite) {
|
|
6555
|
-
return {
|
|
6556
|
-
connector: name,
|
|
6557
|
-
success: false,
|
|
6558
|
-
error: `Already installed. Use --overwrite to replace.`,
|
|
6559
|
-
path: destPath
|
|
6560
|
-
};
|
|
6561
|
-
}
|
|
6562
|
-
try {
|
|
6563
|
-
if (!existsSync2(destDir)) {
|
|
6564
|
-
mkdirSync(destDir, { recursive: true });
|
|
6565
|
-
}
|
|
6566
|
-
cpSync(sourcePath, destPath, { recursive: true });
|
|
6567
|
-
const homeCredDir = join2(homedir(), ".connectors", connectorName);
|
|
6568
|
-
if (existsSync2(homeCredDir)) {
|
|
6569
|
-
const filesToCopy = ["credentials.json", "current_profile"];
|
|
6570
|
-
for (const file of filesToCopy) {
|
|
6571
|
-
const src = join2(homeCredDir, file);
|
|
6572
|
-
if (existsSync2(src)) {
|
|
6573
|
-
cpSync(src, join2(destPath, file));
|
|
6574
|
-
}
|
|
6575
|
-
}
|
|
6576
|
-
const profilesDir = join2(homeCredDir, "profiles");
|
|
6577
|
-
if (existsSync2(profilesDir)) {
|
|
6578
|
-
cpSync(profilesDir, join2(destPath, "profiles"), { recursive: true });
|
|
6579
|
-
}
|
|
6580
|
-
}
|
|
6581
|
-
updateConnectorsIndex(destDir);
|
|
6582
|
-
return {
|
|
6583
|
-
connector: name,
|
|
6584
|
-
success: true,
|
|
6585
|
-
path: destPath
|
|
6586
|
-
};
|
|
6587
|
-
} catch (error2) {
|
|
6588
|
-
return {
|
|
6589
|
-
connector: name,
|
|
6590
|
-
success: false,
|
|
6591
|
-
error: error2 instanceof Error ? error2.message : "Unknown error"
|
|
6592
|
-
};
|
|
6593
|
-
}
|
|
6594
|
-
}
|
|
6595
|
-
function installConnectors(names, options = {}) {
|
|
6596
|
-
return names.map((name) => installConnector(name, options));
|
|
6597
|
-
}
|
|
6598
|
-
function updateConnectorsIndex(connectorsDir) {
|
|
6599
|
-
const indexPath = join2(connectorsDir, "index.ts");
|
|
6600
|
-
const connectors = readdirSync(connectorsDir).filter((f) => f.startsWith("connect-") && !f.includes("."));
|
|
6601
|
-
const exports = connectors.map((c) => {
|
|
6602
|
-
const name = c.replace("connect-", "");
|
|
6603
|
-
return `export * as ${name} from './${c}/src/index.js';`;
|
|
6604
|
-
}).join(`
|
|
6605
|
-
`);
|
|
6606
|
-
const content = `/**
|
|
6607
|
-
* Auto-generated index of installed connectors
|
|
6608
|
-
* Do not edit manually - run 'connectors install' to update
|
|
6609
|
-
*/
|
|
6610
|
-
|
|
6611
|
-
${exports}
|
|
6612
|
-
`;
|
|
6613
|
-
writeFileSync(indexPath, content);
|
|
6614
|
-
}
|
|
6615
|
-
function getInstalledConnectors(targetDir = process.cwd()) {
|
|
6616
|
-
const connectorsDir = join2(targetDir, ".connectors");
|
|
6617
|
-
if (!existsSync2(connectorsDir)) {
|
|
6618
|
-
return [];
|
|
6619
|
-
}
|
|
6620
|
-
return readdirSync(connectorsDir).filter((f) => {
|
|
6621
|
-
const fullPath = join2(connectorsDir, f);
|
|
6622
|
-
return f.startsWith("connect-") && statSync(fullPath).isDirectory();
|
|
6623
|
-
}).map((f) => f.replace("connect-", ""));
|
|
6624
|
-
}
|
|
6625
|
-
function getConnectorDocs(name) {
|
|
6626
|
-
const connectorPath = getConnectorPath(name);
|
|
6627
|
-
const claudeMdPath = join2(connectorPath, "CLAUDE.md");
|
|
6628
|
-
if (!existsSync2(claudeMdPath))
|
|
6629
|
-
return null;
|
|
6630
|
-
const raw = readFileSync2(claudeMdPath, "utf-8");
|
|
6631
|
-
return {
|
|
6632
|
-
overview: extractSection(raw, "Project Overview"),
|
|
6633
|
-
auth: extractSection(raw, "Authentication"),
|
|
6634
|
-
envVars: parseEnvVarsTable(extractSection(raw, "Environment Variables")),
|
|
6635
|
-
cliCommands: extractSection(raw, "CLI Commands"),
|
|
6636
|
-
dataStorage: extractSection(raw, "Data Storage"),
|
|
6637
|
-
raw
|
|
6638
|
-
};
|
|
6639
|
-
}
|
|
6640
|
-
function extractSection(markdown, heading) {
|
|
6641
|
-
const regex = new RegExp(`^##\\s+${escapeRegex2(heading)}\\s*$`, "m");
|
|
6642
|
-
const match = regex.exec(markdown);
|
|
6643
|
-
if (!match)
|
|
6644
|
-
return "";
|
|
6645
|
-
const start = match.index + match[0].length;
|
|
6646
|
-
const nextHeading = markdown.slice(start).search(/^##\s/m);
|
|
6647
|
-
const content = nextHeading === -1 ? markdown.slice(start) : markdown.slice(start, start + nextHeading);
|
|
6648
|
-
return content.trim();
|
|
6649
|
-
}
|
|
6650
|
-
function escapeRegex2(str) {
|
|
6651
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
6652
|
-
}
|
|
6653
|
-
function parseEnvVarsTable(section) {
|
|
6654
|
-
if (!section)
|
|
6655
|
-
return [];
|
|
6656
|
-
const vars = [];
|
|
6657
|
-
const lines = section.split(`
|
|
6658
|
-
`);
|
|
6659
|
-
for (const line of lines) {
|
|
6660
|
-
const match = line.match(/\|\s*`([^`]+)`\s*\|\s*(.+?)\s*\|/);
|
|
6661
|
-
if (match && match[1] !== "Variable") {
|
|
6662
|
-
vars.push({ variable: match[1], description: match[2].trim() });
|
|
6663
|
-
}
|
|
6664
|
-
}
|
|
6665
|
-
return vars;
|
|
6666
|
-
}
|
|
6667
|
-
function removeConnector(name, targetDir = process.cwd()) {
|
|
6668
|
-
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
6669
|
-
const connectorsDir = join2(targetDir, ".connectors");
|
|
6670
|
-
const connectorPath = join2(connectorsDir, connectorName);
|
|
6671
|
-
if (!existsSync2(connectorPath)) {
|
|
6672
|
-
return false;
|
|
6673
|
-
}
|
|
6674
|
-
rmSync(connectorPath, { recursive: true });
|
|
6675
|
-
updateConnectorsIndex(connectorsDir);
|
|
6676
|
-
return true;
|
|
6677
|
-
}
|
|
6678
|
-
var __dirname2, CONNECTORS_DIR;
|
|
6679
|
-
var init_installer = __esm(() => {
|
|
6680
|
-
__dirname2 = dirname2(fileURLToPath2(import.meta.url));
|
|
6681
|
-
CONNECTORS_DIR = resolveConnectorsDir();
|
|
6682
|
-
});
|
|
6683
|
-
|
|
6684
|
-
// src/db/database.ts
|
|
6685
|
-
var exports_database = {};
|
|
6686
|
-
__export(exports_database, {
|
|
6687
|
-
shortUuid: () => shortUuid,
|
|
6688
|
-
now: () => now,
|
|
6689
|
-
getDatabase: () => getDatabase,
|
|
6690
|
-
closeDatabase: () => closeDatabase
|
|
6691
|
-
});
|
|
6692
|
-
import { Database } from "bun:sqlite";
|
|
6693
|
-
import { join as join6 } from "path";
|
|
6694
|
-
import { homedir as homedir4 } from "os";
|
|
6695
|
-
import { mkdirSync as mkdirSync4 } from "fs";
|
|
6696
|
-
function getDatabase(path) {
|
|
6697
|
-
if (_db)
|
|
6698
|
-
return _db;
|
|
6699
|
-
const dbPath = path ?? DB_PATH;
|
|
6700
|
-
mkdirSync4(join6(dbPath, ".."), { recursive: true });
|
|
6701
|
-
_db = new Database(dbPath);
|
|
6702
|
-
_db.run("PRAGMA journal_mode = WAL");
|
|
6703
|
-
migrate(_db);
|
|
6704
|
-
return _db;
|
|
6705
|
-
}
|
|
6706
|
-
function closeDatabase() {
|
|
6707
|
-
_db?.close();
|
|
6708
|
-
_db = null;
|
|
6709
|
-
}
|
|
6710
|
-
function now() {
|
|
6711
|
-
return new Date().toISOString();
|
|
6712
|
-
}
|
|
6713
|
-
function shortUuid() {
|
|
6714
|
-
return crypto.randomUUID().slice(0, 8);
|
|
6715
|
-
}
|
|
6716
|
-
function migrate(db) {
|
|
6717
|
-
db.run(`
|
|
6718
|
-
CREATE TABLE IF NOT EXISTS agents (
|
|
6719
|
-
id TEXT PRIMARY KEY,
|
|
6720
|
-
name TEXT UNIQUE NOT NULL,
|
|
6721
|
-
session_id TEXT,
|
|
6722
|
-
role TEXT NOT NULL DEFAULT 'agent',
|
|
6723
|
-
last_seen_at TEXT NOT NULL,
|
|
6724
|
-
created_at TEXT NOT NULL
|
|
6725
|
-
)
|
|
6726
|
-
`);
|
|
6727
|
-
db.run(`
|
|
6728
|
-
CREATE TABLE IF NOT EXISTS resource_locks (
|
|
6729
|
-
id TEXT PRIMARY KEY,
|
|
6730
|
-
resource_type TEXT NOT NULL CHECK(resource_type IN ('connector', 'agent', 'profile', 'token')),
|
|
6731
|
-
resource_id TEXT NOT NULL,
|
|
6732
|
-
agent_id TEXT NOT NULL,
|
|
6733
|
-
lock_type TEXT NOT NULL DEFAULT 'exclusive' CHECK(lock_type IN ('advisory', 'exclusive')),
|
|
6734
|
-
locked_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
6735
|
-
expires_at TEXT NOT NULL
|
|
6736
|
-
)
|
|
6737
|
-
`);
|
|
6738
|
-
db.run(`
|
|
6739
|
-
CREATE UNIQUE INDEX IF NOT EXISTS idx_resource_locks_exclusive
|
|
6740
|
-
ON resource_locks(resource_type, resource_id)
|
|
6741
|
-
WHERE lock_type = 'exclusive'
|
|
6742
|
-
`);
|
|
6743
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_resource_locks_agent ON resource_locks(agent_id)`);
|
|
6744
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_resource_locks_expires ON resource_locks(expires_at)`);
|
|
6745
|
-
db.run(`
|
|
6746
|
-
CREATE TABLE IF NOT EXISTS connector_rate_usage (
|
|
6747
|
-
agent_id TEXT NOT NULL,
|
|
6748
|
-
connector TEXT NOT NULL,
|
|
6749
|
-
window_start TEXT NOT NULL,
|
|
6750
|
-
call_count INTEGER NOT NULL DEFAULT 0,
|
|
6751
|
-
PRIMARY KEY (agent_id, connector, window_start)
|
|
6752
|
-
)
|
|
6753
|
-
`);
|
|
6754
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_rate_usage_window ON connector_rate_usage(connector, window_start)`);
|
|
6755
|
-
db.run(`
|
|
6756
|
-
CREATE TABLE IF NOT EXISTS connector_jobs (
|
|
6757
|
-
id TEXT PRIMARY KEY,
|
|
6758
|
-
name TEXT UNIQUE NOT NULL,
|
|
6759
|
-
connector TEXT NOT NULL,
|
|
6760
|
-
command TEXT NOT NULL,
|
|
6761
|
-
args TEXT NOT NULL DEFAULT '[]',
|
|
6762
|
-
cron TEXT NOT NULL,
|
|
6763
|
-
enabled INTEGER NOT NULL DEFAULT 1,
|
|
6764
|
-
strip INTEGER NOT NULL DEFAULT 0,
|
|
6765
|
-
created_at TEXT NOT NULL,
|
|
6766
|
-
last_run_at TEXT
|
|
6767
|
-
)
|
|
6768
|
-
`);
|
|
6769
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_jobs_enabled ON connector_jobs(enabled)`);
|
|
6770
|
-
db.run(`
|
|
6771
|
-
CREATE TABLE IF NOT EXISTS connector_job_runs (
|
|
6772
|
-
id TEXT PRIMARY KEY,
|
|
6773
|
-
job_id TEXT NOT NULL REFERENCES connector_jobs(id) ON DELETE CASCADE,
|
|
6774
|
-
started_at TEXT NOT NULL,
|
|
6775
|
-
finished_at TEXT,
|
|
6776
|
-
exit_code INTEGER,
|
|
6777
|
-
raw_output TEXT,
|
|
6778
|
-
stripped_output TEXT
|
|
6779
|
-
)
|
|
6780
|
-
`);
|
|
6781
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_job_runs_job ON connector_job_runs(job_id, started_at DESC)`);
|
|
6782
|
-
db.run(`
|
|
6783
|
-
CREATE TABLE IF NOT EXISTS connector_workflows (
|
|
6784
|
-
id TEXT PRIMARY KEY,
|
|
6785
|
-
name TEXT UNIQUE NOT NULL,
|
|
6786
|
-
steps TEXT NOT NULL DEFAULT '[]',
|
|
6787
|
-
enabled INTEGER NOT NULL DEFAULT 1,
|
|
6788
|
-
created_at TEXT NOT NULL
|
|
6789
|
-
)
|
|
6790
|
-
`);
|
|
6791
|
-
db.run(`
|
|
6792
|
-
CREATE TABLE IF NOT EXISTS connector_usage (
|
|
6793
|
-
id TEXT PRIMARY KEY,
|
|
6794
|
-
connector TEXT NOT NULL,
|
|
6795
|
-
action TEXT NOT NULL,
|
|
6796
|
-
agent_id TEXT,
|
|
6797
|
-
timestamp TEXT NOT NULL
|
|
6798
|
-
)
|
|
6799
|
-
`);
|
|
6800
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_usage_connector ON connector_usage(connector, timestamp DESC)`);
|
|
6801
|
-
db.run(`
|
|
6802
|
-
CREATE TABLE IF NOT EXISTS connector_promotions (
|
|
6803
|
-
connector TEXT UNIQUE NOT NULL,
|
|
6804
|
-
promoted_at TEXT NOT NULL
|
|
6805
|
-
)
|
|
6806
|
-
`);
|
|
6807
|
-
}
|
|
6808
|
-
var DB_DIR, DB_PATH, _db = null;
|
|
6809
|
-
var init_database = __esm(() => {
|
|
6810
|
-
DB_DIR = join6(homedir4(), ".connectors");
|
|
6811
|
-
DB_PATH = join6(DB_DIR, "connectors.db");
|
|
6812
|
-
});
|
|
6813
|
-
|
|
6814
|
-
// src/lib/llm.ts
|
|
6815
|
-
var exports_llm = {};
|
|
6816
|
-
__export(exports_llm, {
|
|
6817
|
-
setLlmStrip: () => setLlmStrip,
|
|
6818
|
-
saveLlmConfig: () => saveLlmConfig,
|
|
6819
|
-
maskKey: () => maskKey,
|
|
6820
|
-
isStripEnabled: () => isStripEnabled,
|
|
6821
|
-
getLlmConfig: () => getLlmConfig,
|
|
6822
|
-
PROVIDER_DEFAULTS: () => PROVIDER_DEFAULTS,
|
|
6823
|
-
LLMClient: () => LLMClient
|
|
6824
|
-
});
|
|
6825
|
-
import { existsSync as existsSync6, readFileSync as readFileSync4, writeFileSync as writeFileSync3, mkdirSync as mkdirSync5 } from "fs";
|
|
6826
|
-
import { join as join7 } from "path";
|
|
6827
|
-
import { homedir as homedir5 } from "os";
|
|
6828
|
-
function getLlmConfigPath() {
|
|
6829
|
-
return join7(homedir5(), ".connectors", "llm.json");
|
|
6830
|
-
}
|
|
6831
|
-
function getLlmConfig() {
|
|
6832
|
-
const path = getLlmConfigPath();
|
|
6833
|
-
if (!existsSync6(path))
|
|
6834
|
-
return null;
|
|
6835
|
-
try {
|
|
6836
|
-
return JSON.parse(readFileSync4(path, "utf-8"));
|
|
6837
|
-
} catch {
|
|
6838
|
-
return null;
|
|
6839
|
-
}
|
|
6840
|
-
}
|
|
6841
|
-
function saveLlmConfig(config2) {
|
|
6842
|
-
const dir = join7(homedir5(), ".connectors");
|
|
6843
|
-
mkdirSync5(dir, { recursive: true });
|
|
6844
|
-
writeFileSync3(getLlmConfigPath(), JSON.stringify(config2, null, 2));
|
|
6845
|
-
}
|
|
6846
|
-
function setLlmStrip(enabled) {
|
|
6847
|
-
const config2 = getLlmConfig();
|
|
6848
|
-
if (!config2)
|
|
6849
|
-
throw new Error("No LLM config found. Run: connectors llm set --provider <provider> --key <key>");
|
|
6850
|
-
saveLlmConfig({ ...config2, strip: enabled });
|
|
6851
|
-
}
|
|
6852
|
-
function isStripEnabled() {
|
|
6853
|
-
return getLlmConfig()?.strip === true;
|
|
6854
|
-
}
|
|
6855
|
-
function maskKey(key) {
|
|
6856
|
-
if (key.length <= 8)
|
|
6857
|
-
return "***";
|
|
6858
|
-
return key.slice(0, 8) + "***";
|
|
6859
|
-
}
|
|
6860
|
-
|
|
6861
|
-
class LLMClient {
|
|
6862
|
-
config;
|
|
6863
|
-
constructor(config2) {
|
|
6864
|
-
this.config = config2;
|
|
6865
|
-
}
|
|
6866
|
-
static fromConfig() {
|
|
6867
|
-
const config2 = getLlmConfig();
|
|
6868
|
-
if (!config2)
|
|
6869
|
-
return null;
|
|
6870
|
-
return new LLMClient(config2);
|
|
6871
|
-
}
|
|
6872
|
-
async complete(prompt, content) {
|
|
6873
|
-
const start = Date.now();
|
|
6874
|
-
const { provider, model, api_key } = this.config;
|
|
6875
|
-
if (provider === "anthropic") {
|
|
6876
|
-
return this._anthropicComplete(prompt, content, start);
|
|
6877
|
-
}
|
|
6878
|
-
const baseUrl = PROVIDER_BASE_URLS[provider];
|
|
6879
|
-
const response = await fetch(`${baseUrl}/chat/completions`, {
|
|
6880
|
-
method: "POST",
|
|
6881
|
-
headers: {
|
|
6882
|
-
"Content-Type": "application/json",
|
|
6883
|
-
Authorization: `Bearer ${api_key}`
|
|
6884
|
-
},
|
|
6885
|
-
body: JSON.stringify({
|
|
6886
|
-
model,
|
|
6887
|
-
messages: [
|
|
6888
|
-
{ role: "system", content: prompt },
|
|
6889
|
-
{ role: "user", content }
|
|
6890
|
-
],
|
|
6891
|
-
temperature: 0,
|
|
6892
|
-
max_tokens: 4096
|
|
6893
|
-
})
|
|
6894
|
-
});
|
|
6895
|
-
if (!response.ok) {
|
|
6896
|
-
const error2 = await response.text();
|
|
6897
|
-
throw new Error(`LLM request failed (${provider} ${response.status}): ${error2}`);
|
|
6898
|
-
}
|
|
6899
|
-
const data = await response.json();
|
|
6900
|
-
return {
|
|
6901
|
-
content: data.choices[0].message.content,
|
|
6902
|
-
provider,
|
|
6903
|
-
model,
|
|
6904
|
-
latency_ms: Date.now() - start
|
|
6905
|
-
};
|
|
6906
|
-
}
|
|
6907
|
-
async _anthropicComplete(prompt, content, start) {
|
|
6908
|
-
const { model, api_key } = this.config;
|
|
6909
|
-
const response = await fetch("https://api.anthropic.com/v1/messages", {
|
|
6910
|
-
method: "POST",
|
|
6911
|
-
headers: {
|
|
6912
|
-
"Content-Type": "application/json",
|
|
6913
|
-
"x-api-key": api_key,
|
|
6914
|
-
"anthropic-version": "2023-06-01"
|
|
6915
|
-
},
|
|
6916
|
-
body: JSON.stringify({
|
|
6917
|
-
model,
|
|
6918
|
-
system: prompt,
|
|
6919
|
-
messages: [{ role: "user", content }],
|
|
6920
|
-
max_tokens: 4096
|
|
6921
|
-
})
|
|
6922
|
-
});
|
|
6923
|
-
if (!response.ok) {
|
|
6924
|
-
const error2 = await response.text();
|
|
6925
|
-
throw new Error(`LLM request failed (anthropic ${response.status}): ${error2}`);
|
|
6926
|
-
}
|
|
6927
|
-
const data = await response.json();
|
|
6928
|
-
return {
|
|
6929
|
-
content: data.content[0].text,
|
|
6930
|
-
provider: "anthropic",
|
|
6931
|
-
model,
|
|
6932
|
-
latency_ms: Date.now() - start
|
|
6933
|
-
};
|
|
6934
|
-
}
|
|
6935
|
-
}
|
|
6936
|
-
var PROVIDER_BASE_URLS, PROVIDER_DEFAULTS;
|
|
6937
|
-
var init_llm = __esm(() => {
|
|
6938
|
-
PROVIDER_BASE_URLS = {
|
|
6939
|
-
cerebras: "https://api.cerebras.ai/v1",
|
|
6940
|
-
groq: "https://api.groq.com/openai/v1",
|
|
6941
|
-
openai: "https://api.openai.com/v1"
|
|
6942
|
-
};
|
|
6943
|
-
PROVIDER_DEFAULTS = {
|
|
6944
|
-
cerebras: { model: "qwen-3-32b" },
|
|
6945
|
-
groq: { model: "llama-3.3-70b-versatile" },
|
|
6946
|
-
openai: { model: "gpt-4o-mini" },
|
|
6947
|
-
anthropic: { model: "claude-haiku-4-5-20251001" }
|
|
6948
|
-
};
|
|
6949
|
-
});
|
|
6950
|
-
|
|
6951
|
-
// src/lib/strip.ts
|
|
6952
|
-
async function maybeStrip(output, _type = "json") {
|
|
6953
|
-
const config2 = getLlmConfig();
|
|
6954
|
-
if (!config2?.strip)
|
|
6955
|
-
return output;
|
|
6956
|
-
if (!output || output.trim().length === 0)
|
|
6957
|
-
return output;
|
|
6958
|
-
const client = LLMClient.fromConfig();
|
|
6959
|
-
if (!client)
|
|
6960
|
-
return output;
|
|
6961
|
-
try {
|
|
6962
|
-
const result = await client.complete(STRIP_PROMPT, output);
|
|
6963
|
-
return result.content.trim();
|
|
6964
|
-
} catch {
|
|
6965
|
-
return output;
|
|
6966
|
-
}
|
|
6967
|
-
}
|
|
6968
|
-
var STRIP_PROMPT = `You are a data extraction assistant. Your job is to take raw API output and return ONLY the essential, structured data.
|
|
6969
|
-
|
|
6970
|
-
Rules:
|
|
6971
|
-
- Return valid JSON only (no markdown, no explanation)
|
|
6972
|
-
- Remove pagination metadata, rate limit headers, empty fields, null values
|
|
6973
|
-
- Keep all meaningful data fields
|
|
6974
|
-
- If the input is already minimal, return it unchanged
|
|
6975
|
-
- If input is not JSON, extract key facts as a JSON object
|
|
6976
|
-
- Never truncate actual data values`;
|
|
6977
|
-
var init_strip = __esm(() => {
|
|
6978
|
-
init_llm();
|
|
6979
|
-
});
|
|
6980
|
-
|
|
6981
|
-
// src/db/promotions.ts
|
|
6982
|
-
var exports_promotions = {};
|
|
6983
|
-
__export(exports_promotions, {
|
|
6984
|
-
promoteConnector: () => promoteConnector,
|
|
6985
|
-
isPromoted: () => isPromoted,
|
|
6986
|
-
getPromotedConnectors: () => getPromotedConnectors,
|
|
6987
|
-
demoteConnector: () => demoteConnector
|
|
6988
|
-
});
|
|
6989
|
-
function promoteConnector(name, db) {
|
|
6990
|
-
const d = db ?? getDatabase();
|
|
6991
|
-
d.run("INSERT OR REPLACE INTO connector_promotions (connector, promoted_at) VALUES (?, ?)", [name, now()]);
|
|
6992
|
-
}
|
|
6993
|
-
function demoteConnector(name, db) {
|
|
6994
|
-
const d = db ?? getDatabase();
|
|
6995
|
-
return d.run("DELETE FROM connector_promotions WHERE connector = ?", [name]).changes > 0;
|
|
6996
|
-
}
|
|
6997
|
-
function getPromotedConnectors(db) {
|
|
6998
|
-
const d = db ?? getDatabase();
|
|
6999
|
-
return d.query("SELECT connector FROM connector_promotions ORDER BY promoted_at DESC").all().map((r) => r.connector);
|
|
7000
|
-
}
|
|
7001
|
-
function isPromoted(name, db) {
|
|
7002
|
-
const d = db ?? getDatabase();
|
|
7003
|
-
const row = d.query("SELECT 1 FROM connector_promotions WHERE connector = ?").get(name);
|
|
7004
|
-
return !!row;
|
|
7005
|
-
}
|
|
7006
|
-
var init_promotions = __esm(() => {
|
|
7007
|
-
init_database();
|
|
7008
|
-
});
|
|
7009
|
-
|
|
7010
|
-
// src/db/usage.ts
|
|
7011
|
-
var exports_usage = {};
|
|
7012
|
-
__export(exports_usage, {
|
|
7013
|
-
logUsage: () => logUsage,
|
|
7014
|
-
getUsageStats: () => getUsageStats,
|
|
7015
|
-
getUsageMap: () => getUsageMap,
|
|
7016
|
-
getTopConnectors: () => getTopConnectors,
|
|
7017
|
-
cleanOldUsage: () => cleanOldUsage
|
|
7018
|
-
});
|
|
7019
|
-
function logUsage(connector, action, agentId, db) {
|
|
7020
|
-
const d = db ?? getDatabase();
|
|
7021
|
-
d.run("INSERT INTO connector_usage (id, connector, action, agent_id, timestamp) VALUES (?, ?, ?, ?, ?)", [shortUuid(), connector, action, agentId ?? null, now()]);
|
|
7022
|
-
}
|
|
7023
|
-
function getUsageStats(connector, db) {
|
|
7024
|
-
const d = db ?? getDatabase();
|
|
7025
|
-
const total = d.query("SELECT COUNT(*) as c FROM connector_usage WHERE connector = ?").get(connector).c;
|
|
7026
|
-
const d7 = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
|
|
7027
|
-
const last7d = d.query("SELECT COUNT(*) as c FROM connector_usage WHERE connector = ? AND timestamp > ?").get(connector, d7).c;
|
|
7028
|
-
const d1 = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
|
|
7029
|
-
const last24h = d.query("SELECT COUNT(*) as c FROM connector_usage WHERE connector = ? AND timestamp > ?").get(connector, d1).c;
|
|
7030
|
-
return { connector, total, last7d, last24h };
|
|
7031
|
-
}
|
|
7032
|
-
function getTopConnectors(limit = 10, days = 7, db) {
|
|
7033
|
-
const d = db ?? getDatabase();
|
|
7034
|
-
const since = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
|
|
7035
|
-
return d.query("SELECT connector, COUNT(*) as count FROM connector_usage WHERE timestamp > ? GROUP BY connector ORDER BY count DESC LIMIT ?").all(since, limit);
|
|
7036
|
-
}
|
|
7037
|
-
function getUsageMap(days = 7, db) {
|
|
7038
|
-
const top = getTopConnectors(100, days, db);
|
|
7039
|
-
return new Map(top.map((t) => [t.connector, t.count]));
|
|
7040
|
-
}
|
|
7041
|
-
function cleanOldUsage(days = 30, db) {
|
|
7042
|
-
const d = db ?? getDatabase();
|
|
7043
|
-
const cutoff = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
|
|
7044
|
-
return d.run("DELETE FROM connector_usage WHERE timestamp < ?", [cutoff]).changes;
|
|
7045
|
-
}
|
|
7046
|
-
var init_usage = __esm(() => {
|
|
7047
|
-
init_database();
|
|
7048
|
-
});
|
|
7049
|
-
|
|
7050
|
-
// src/db/jobs.ts
|
|
7051
|
-
var exports_jobs = {};
|
|
7052
|
-
__export(exports_jobs, {
|
|
7053
|
-
updateJob: () => updateJob,
|
|
7054
|
-
touchJobLastRun: () => touchJobLastRun,
|
|
7055
|
-
listJobs: () => listJobs,
|
|
7056
|
-
listJobRuns: () => listJobRuns,
|
|
7057
|
-
listEnabledJobs: () => listEnabledJobs,
|
|
7058
|
-
getLatestRun: () => getLatestRun,
|
|
7059
|
-
getJobByName: () => getJobByName,
|
|
7060
|
-
getJob: () => getJob,
|
|
7061
|
-
finishJobRun: () => finishJobRun,
|
|
7062
|
-
deleteJob: () => deleteJob,
|
|
7063
|
-
createJobRun: () => createJobRun,
|
|
7064
|
-
createJob: () => createJob
|
|
7065
|
-
});
|
|
7066
|
-
function rowToJob(row) {
|
|
7067
|
-
return {
|
|
7068
|
-
...row,
|
|
7069
|
-
args: JSON.parse(row.args || "[]"),
|
|
7070
|
-
enabled: row.enabled === 1,
|
|
7071
|
-
strip: row.strip === 1
|
|
7072
|
-
};
|
|
7073
|
-
}
|
|
7074
|
-
function createJob(input, db) {
|
|
7075
|
-
const d = db ?? getDatabase();
|
|
7076
|
-
const id = shortUuid();
|
|
7077
|
-
const ts = now();
|
|
7078
|
-
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]);
|
|
7079
|
-
return getJob(id, d);
|
|
7080
|
-
}
|
|
7081
|
-
function getJob(id, db) {
|
|
7082
|
-
const d = db ?? getDatabase();
|
|
7083
|
-
const row = d.query("SELECT * FROM connector_jobs WHERE id = ?").get(id);
|
|
7084
|
-
return row ? rowToJob(row) : null;
|
|
7085
|
-
}
|
|
7086
|
-
function getJobByName(name, db) {
|
|
7087
|
-
const d = db ?? getDatabase();
|
|
7088
|
-
const row = d.query("SELECT * FROM connector_jobs WHERE name = ?").get(name);
|
|
7089
|
-
return row ? rowToJob(row) : null;
|
|
7090
|
-
}
|
|
7091
|
-
function listJobs(db) {
|
|
7092
|
-
const d = db ?? getDatabase();
|
|
7093
|
-
return d.query("SELECT * FROM connector_jobs ORDER BY name").all().map(rowToJob);
|
|
7094
|
-
}
|
|
7095
|
-
function listEnabledJobs(db) {
|
|
7096
|
-
const d = db ?? getDatabase();
|
|
7097
|
-
return d.query("SELECT * FROM connector_jobs WHERE enabled = 1").all().map(rowToJob);
|
|
7098
|
-
}
|
|
7099
|
-
function updateJob(id, input, db) {
|
|
7100
|
-
const d = db ?? getDatabase();
|
|
7101
|
-
const sets = [];
|
|
7102
|
-
const params = [];
|
|
7103
|
-
if (input.name !== undefined) {
|
|
7104
|
-
sets.push("name = ?");
|
|
7105
|
-
params.push(input.name);
|
|
7106
|
-
}
|
|
7107
|
-
if (input.connector !== undefined) {
|
|
7108
|
-
sets.push("connector = ?");
|
|
7109
|
-
params.push(input.connector);
|
|
7110
|
-
}
|
|
7111
|
-
if (input.command !== undefined) {
|
|
7112
|
-
sets.push("command = ?");
|
|
7113
|
-
params.push(input.command);
|
|
7114
|
-
}
|
|
7115
|
-
if (input.args !== undefined) {
|
|
7116
|
-
sets.push("args = ?");
|
|
7117
|
-
params.push(JSON.stringify(input.args));
|
|
7118
|
-
}
|
|
7119
|
-
if (input.cron !== undefined) {
|
|
7120
|
-
sets.push("cron = ?");
|
|
7121
|
-
params.push(input.cron);
|
|
7122
|
-
}
|
|
7123
|
-
if (input.enabled !== undefined) {
|
|
7124
|
-
sets.push("enabled = ?");
|
|
7125
|
-
params.push(input.enabled ? 1 : 0);
|
|
7126
|
-
}
|
|
7127
|
-
if (input.strip !== undefined) {
|
|
7128
|
-
sets.push("strip = ?");
|
|
7129
|
-
params.push(input.strip ? 1 : 0);
|
|
7130
|
-
}
|
|
7131
|
-
if (sets.length === 0)
|
|
7132
|
-
return getJob(id, d);
|
|
7133
|
-
params.push(id);
|
|
7134
|
-
d.run(`UPDATE connector_jobs SET ${sets.join(", ")} WHERE id = ?`, params);
|
|
7135
|
-
return getJob(id, d);
|
|
7136
|
-
}
|
|
7137
|
-
function deleteJob(id, db) {
|
|
7138
|
-
const d = db ?? getDatabase();
|
|
7139
|
-
return d.run("DELETE FROM connector_jobs WHERE id = ?", [id]).changes > 0;
|
|
7140
|
-
}
|
|
7141
|
-
function touchJobLastRun(id, db) {
|
|
7142
|
-
const d = db ?? getDatabase();
|
|
7143
|
-
d.run("UPDATE connector_jobs SET last_run_at = ? WHERE id = ?", [now(), id]);
|
|
7144
|
-
}
|
|
7145
|
-
function createJobRun(jobId, db) {
|
|
7146
|
-
const d = db ?? getDatabase();
|
|
7147
|
-
const id = shortUuid();
|
|
7148
|
-
const ts = now();
|
|
7149
|
-
d.run("INSERT INTO connector_job_runs (id, job_id, started_at) VALUES (?, ?, ?)", [id, jobId, ts]);
|
|
7150
|
-
return { id, job_id: jobId, started_at: ts, finished_at: null, exit_code: null, raw_output: null, stripped_output: null };
|
|
7151
|
-
}
|
|
7152
|
-
function finishJobRun(id, result, db) {
|
|
7153
|
-
const d = db ?? getDatabase();
|
|
7154
|
-
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]);
|
|
7155
|
-
}
|
|
7156
|
-
function getLatestRun(jobId, db) {
|
|
7157
|
-
const d = db ?? getDatabase();
|
|
7158
|
-
return d.query("SELECT * FROM connector_job_runs WHERE job_id = ? ORDER BY started_at DESC LIMIT 1").get(jobId);
|
|
7159
|
-
}
|
|
7160
|
-
function listJobRuns(jobId, limit = 20, db) {
|
|
7161
|
-
const d = db ?? getDatabase();
|
|
7162
|
-
return d.query("SELECT * FROM connector_job_runs WHERE job_id = ? ORDER BY started_at DESC LIMIT ?").all(jobId, limit);
|
|
7163
|
-
}
|
|
7164
|
-
var init_jobs = __esm(() => {
|
|
7165
|
-
init_database();
|
|
7166
|
-
});
|
|
7167
|
-
|
|
7168
|
-
// src/lib/scheduler.ts
|
|
7169
|
-
var exports_scheduler = {};
|
|
7170
|
-
__export(exports_scheduler, {
|
|
7171
|
-
triggerJob: () => triggerJob,
|
|
7172
|
-
stopScheduler: () => stopScheduler,
|
|
7173
|
-
startScheduler: () => startScheduler
|
|
7174
|
-
});
|
|
7175
|
-
import { spawn as spawn2 } from "child_process";
|
|
7176
|
-
function cronMatches(cron, d) {
|
|
7177
|
-
const parts = cron.trim().split(/\s+/);
|
|
7178
|
-
if (parts.length !== 5)
|
|
7179
|
-
return false;
|
|
7180
|
-
const [min, hour, dom, mon, dow] = parts;
|
|
7181
|
-
function matches(field, value, min_v, max_v) {
|
|
7182
|
-
if (field === "*")
|
|
7183
|
-
return true;
|
|
7184
|
-
if (field.startsWith("*/")) {
|
|
7185
|
-
const step = parseInt(field.slice(2));
|
|
7186
|
-
return value % step === 0;
|
|
7187
|
-
}
|
|
7188
|
-
if (field.includes("-")) {
|
|
7189
|
-
const [a, b] = field.split("-").map(Number);
|
|
7190
|
-
return value >= a && value <= b;
|
|
7191
|
-
}
|
|
7192
|
-
if (field.includes(",")) {
|
|
7193
|
-
return field.split(",").map(Number).includes(value);
|
|
7194
|
-
}
|
|
7195
|
-
return parseInt(field) === value;
|
|
7196
|
-
}
|
|
7197
|
-
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);
|
|
7198
|
-
}
|
|
7199
|
-
async function runConnectorCommand2(connector, command, args) {
|
|
7200
|
-
return new Promise((resolve) => {
|
|
7201
|
-
const cmdArgs = [connector, command, ...args, "--format", "json"];
|
|
7202
|
-
const proc = spawn2("connectors", ["run", ...cmdArgs], { shell: false });
|
|
7203
|
-
let output = "";
|
|
7204
|
-
proc.stdout.on("data", (d) => {
|
|
7205
|
-
output += d.toString();
|
|
7206
|
-
});
|
|
7207
|
-
proc.stderr.on("data", (d) => {
|
|
7208
|
-
output += d.toString();
|
|
7209
|
-
});
|
|
7210
|
-
proc.on("close", (code) => resolve({ exitCode: code ?? 1, output }));
|
|
7211
|
-
proc.on("error", () => resolve({ exitCode: 1, output: `Failed to spawn connectors run` }));
|
|
7212
|
-
setTimeout(() => {
|
|
7213
|
-
proc.kill();
|
|
7214
|
-
resolve({ exitCode: 124, output: output + `
|
|
7215
|
-
[timeout]` });
|
|
7216
|
-
}, 60000);
|
|
7217
|
-
});
|
|
7218
|
-
}
|
|
7219
|
-
async function executeJob(job, db) {
|
|
7220
|
-
const run = createJobRun(job.id, db);
|
|
7221
|
-
try {
|
|
7222
|
-
const { exitCode, output } = await runConnectorCommand2(job.connector, job.command, job.args);
|
|
7223
|
-
const stripped = job.strip ? await maybeStrip(output) : undefined;
|
|
7224
|
-
finishJobRun(run.id, { exit_code: exitCode, raw_output: output, stripped_output: stripped }, db);
|
|
7225
|
-
touchJobLastRun(job.id, db);
|
|
7226
|
-
} catch (e) {
|
|
7227
|
-
finishJobRun(run.id, { exit_code: 1, raw_output: String(e) }, db);
|
|
7228
|
-
}
|
|
7229
|
-
}
|
|
7230
|
-
function startScheduler(db) {
|
|
7231
|
-
if (_interval)
|
|
7232
|
-
return;
|
|
7233
|
-
_interval = setInterval(async () => {
|
|
7234
|
-
const now3 = new Date;
|
|
7235
|
-
const currentMinute = now3.getMinutes() + now3.getHours() * 60;
|
|
7236
|
-
if (currentMinute === _lastCheckedMinute)
|
|
7237
|
-
return;
|
|
7238
|
-
_lastCheckedMinute = currentMinute;
|
|
7239
|
-
const jobs = listEnabledJobs(db);
|
|
7240
|
-
for (const job of jobs) {
|
|
7241
|
-
if (cronMatches(job.cron, now3)) {
|
|
7242
|
-
executeJob(job, db).catch(() => {});
|
|
7243
|
-
}
|
|
7244
|
-
}
|
|
7245
|
-
}, 30000);
|
|
7246
|
-
}
|
|
7247
|
-
function stopScheduler() {
|
|
7248
|
-
if (_interval) {
|
|
7249
|
-
clearInterval(_interval);
|
|
7250
|
-
_interval = null;
|
|
7251
|
-
_lastCheckedMinute = -1;
|
|
7252
|
-
}
|
|
7253
|
-
}
|
|
7254
|
-
async function triggerJob(job, db) {
|
|
7255
|
-
const run = createJobRun(job.id, db);
|
|
7256
|
-
const { exitCode, output } = await runConnectorCommand2(job.connector, job.command, job.args);
|
|
7257
|
-
const stripped = job.strip ? await maybeStrip(output) : undefined;
|
|
7258
|
-
finishJobRun(run.id, { exit_code: exitCode, raw_output: output, stripped_output: stripped }, db);
|
|
7259
|
-
touchJobLastRun(job.id, db);
|
|
7260
|
-
return { run_id: run.id, exit_code: exitCode, output: stripped ?? output };
|
|
7261
|
-
}
|
|
7262
|
-
var _interval = null, _lastCheckedMinute = -1;
|
|
7263
|
-
var init_scheduler = __esm(() => {
|
|
7264
|
-
init_jobs();
|
|
7265
|
-
init_strip();
|
|
7266
|
-
});
|
|
7267
|
-
|
|
7268
|
-
// src/db/workflows.ts
|
|
7269
|
-
var exports_workflows = {};
|
|
7270
|
-
__export(exports_workflows, {
|
|
7271
|
-
updateWorkflow: () => updateWorkflow,
|
|
7272
|
-
listWorkflows: () => listWorkflows,
|
|
7273
|
-
getWorkflowByName: () => getWorkflowByName,
|
|
7274
|
-
getWorkflow: () => getWorkflow,
|
|
7275
|
-
deleteWorkflow: () => deleteWorkflow,
|
|
7276
|
-
createWorkflow: () => createWorkflow
|
|
7277
|
-
});
|
|
7278
|
-
function rowToWorkflow(row) {
|
|
7279
|
-
return {
|
|
7280
|
-
...row,
|
|
7281
|
-
steps: JSON.parse(row.steps || "[]"),
|
|
7282
|
-
enabled: row.enabled === 1
|
|
7283
|
-
};
|
|
7284
|
-
}
|
|
7285
|
-
function createWorkflow(input, db) {
|
|
7286
|
-
const d = db ?? getDatabase();
|
|
7287
|
-
const id = shortUuid();
|
|
7288
|
-
d.run("INSERT INTO connector_workflows (id, name, steps, enabled, created_at) VALUES (?, ?, ?, 1, ?)", [id, input.name, JSON.stringify(input.steps), now()]);
|
|
7289
|
-
return getWorkflow(id, d);
|
|
7290
|
-
}
|
|
7291
|
-
function getWorkflow(id, db) {
|
|
7292
|
-
const d = db ?? getDatabase();
|
|
7293
|
-
const row = d.query("SELECT * FROM connector_workflows WHERE id = ?").get(id);
|
|
7294
|
-
return row ? rowToWorkflow(row) : null;
|
|
7295
|
-
}
|
|
7296
|
-
function getWorkflowByName(name, db) {
|
|
7297
|
-
const d = db ?? getDatabase();
|
|
7298
|
-
const row = d.query("SELECT * FROM connector_workflows WHERE name = ?").get(name);
|
|
7299
|
-
return row ? rowToWorkflow(row) : null;
|
|
7300
|
-
}
|
|
7301
|
-
function listWorkflows(db) {
|
|
7302
|
-
const d = db ?? getDatabase();
|
|
7303
|
-
return d.query("SELECT * FROM connector_workflows ORDER BY name").all().map(rowToWorkflow);
|
|
7304
|
-
}
|
|
7305
|
-
function updateWorkflow(id, input, db) {
|
|
7306
|
-
const d = db ?? getDatabase();
|
|
7307
|
-
const sets = [];
|
|
7308
|
-
const params = [];
|
|
7309
|
-
if (input.name !== undefined) {
|
|
7310
|
-
sets.push("name = ?");
|
|
7311
|
-
params.push(input.name);
|
|
7312
|
-
}
|
|
7313
|
-
if (input.steps !== undefined) {
|
|
7314
|
-
sets.push("steps = ?");
|
|
7315
|
-
params.push(JSON.stringify(input.steps));
|
|
7316
|
-
}
|
|
7317
|
-
if (input.enabled !== undefined) {
|
|
7318
|
-
sets.push("enabled = ?");
|
|
7319
|
-
params.push(input.enabled ? 1 : 0);
|
|
7320
|
-
}
|
|
7321
|
-
if (sets.length === 0)
|
|
7322
|
-
return getWorkflow(id, d);
|
|
7323
|
-
params.push(id);
|
|
7324
|
-
d.run(`UPDATE connector_workflows SET ${sets.join(", ")} WHERE id = ?`, params);
|
|
7325
|
-
return getWorkflow(id, d);
|
|
7326
|
-
}
|
|
7327
|
-
function deleteWorkflow(id, db) {
|
|
7328
|
-
const d = db ?? getDatabase();
|
|
7329
|
-
return d.run("DELETE FROM connector_workflows WHERE id = ?", [id]).changes > 0;
|
|
7330
|
-
}
|
|
7331
|
-
var init_workflows = __esm(() => {
|
|
7332
|
-
init_database();
|
|
7333
|
-
});
|
|
7334
|
-
|
|
7335
|
-
// src/lib/workflow-runner.ts
|
|
7336
|
-
var exports_workflow_runner = {};
|
|
7337
|
-
__export(exports_workflow_runner, {
|
|
7338
|
-
runWorkflow: () => runWorkflow
|
|
7339
|
-
});
|
|
7340
|
-
import { spawn as spawn3 } from "child_process";
|
|
7341
|
-
async function runStep(step, previousOutput) {
|
|
7342
|
-
return new Promise((resolve) => {
|
|
7343
|
-
const args = [...step.args ?? []];
|
|
7344
|
-
if (previousOutput && previousOutput.trim()) {
|
|
7345
|
-
args.push("--input", previousOutput.trim().slice(0, 4096));
|
|
7346
|
-
}
|
|
7347
|
-
const cmdArgs = ["run", step.connector, step.command, ...args, "--format", "json"];
|
|
7348
|
-
const proc = spawn3("connectors", cmdArgs, { shell: false });
|
|
7349
|
-
let output = "";
|
|
7350
|
-
proc.stdout.on("data", (d) => {
|
|
7351
|
-
output += d.toString();
|
|
7352
|
-
});
|
|
7353
|
-
proc.stderr.on("data", (d) => {
|
|
7354
|
-
output += d.toString();
|
|
7355
|
-
});
|
|
7356
|
-
proc.on("close", (code) => resolve({ exitCode: code ?? 1, output }));
|
|
7357
|
-
proc.on("error", () => resolve({ exitCode: 1, output: "Failed to spawn connectors" }));
|
|
7358
|
-
setTimeout(() => {
|
|
7359
|
-
proc.kill();
|
|
7360
|
-
resolve({ exitCode: 124, output: output + `
|
|
7361
|
-
[timeout]` });
|
|
7362
|
-
}, 60000);
|
|
7363
|
-
});
|
|
7364
|
-
}
|
|
7365
|
-
async function runWorkflow(workflow) {
|
|
7366
|
-
const results = [];
|
|
7367
|
-
let previousOutput;
|
|
7368
|
-
let success = true;
|
|
7369
|
-
for (let i = 0;i < workflow.steps.length; i++) {
|
|
7370
|
-
const step = workflow.steps[i];
|
|
7371
|
-
const { exitCode, output } = await runStep(step, previousOutput);
|
|
7372
|
-
const stripped = await maybeStrip(output);
|
|
7373
|
-
results.push({ step: i + 1, connector: step.connector, command: step.command, exit_code: exitCode, output: stripped });
|
|
7374
|
-
if (exitCode !== 0) {
|
|
7375
|
-
success = false;
|
|
7376
|
-
break;
|
|
7377
|
-
}
|
|
7378
|
-
previousOutput = stripped;
|
|
7379
|
-
}
|
|
7380
|
-
return {
|
|
7381
|
-
workflow_id: workflow.id,
|
|
7382
|
-
workflow_name: workflow.name,
|
|
7383
|
-
steps: results,
|
|
7384
|
-
success,
|
|
7385
|
-
final_output: results[results.length - 1]?.output ?? ""
|
|
7386
|
-
};
|
|
7387
|
-
}
|
|
7388
|
-
var init_workflow_runner = __esm(() => {
|
|
7389
|
-
init_strip();
|
|
7390
|
-
});
|
|
7391
|
-
|
|
7392
6493
|
// node_modules/zod/v3/external.js
|
|
7393
6494
|
var exports_external = {};
|
|
7394
6495
|
__export(exports_external, {
|
|
@@ -19010,62 +18111,6 @@ class ExperimentalServerTasks {
|
|
|
19010
18111
|
requestStream(request, resultSchema, options) {
|
|
19011
18112
|
return this._server.requestStream(request, resultSchema, options);
|
|
19012
18113
|
}
|
|
19013
|
-
createMessageStream(params, options) {
|
|
19014
|
-
const clientCapabilities = this._server.getClientCapabilities();
|
|
19015
|
-
if ((params.tools || params.toolChoice) && !clientCapabilities?.sampling?.tools) {
|
|
19016
|
-
throw new Error("Client does not support sampling tools capability.");
|
|
19017
|
-
}
|
|
19018
|
-
if (params.messages.length > 0) {
|
|
19019
|
-
const lastMessage = params.messages[params.messages.length - 1];
|
|
19020
|
-
const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content];
|
|
19021
|
-
const hasToolResults = lastContent.some((c) => c.type === "tool_result");
|
|
19022
|
-
const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : undefined;
|
|
19023
|
-
const previousContent = previousMessage ? Array.isArray(previousMessage.content) ? previousMessage.content : [previousMessage.content] : [];
|
|
19024
|
-
const hasPreviousToolUse = previousContent.some((c) => c.type === "tool_use");
|
|
19025
|
-
if (hasToolResults) {
|
|
19026
|
-
if (lastContent.some((c) => c.type !== "tool_result")) {
|
|
19027
|
-
throw new Error("The last message must contain only tool_result content if any is present");
|
|
19028
|
-
}
|
|
19029
|
-
if (!hasPreviousToolUse) {
|
|
19030
|
-
throw new Error("tool_result blocks are not matching any tool_use from the previous message");
|
|
19031
|
-
}
|
|
19032
|
-
}
|
|
19033
|
-
if (hasPreviousToolUse) {
|
|
19034
|
-
const toolUseIds = new Set(previousContent.filter((c) => c.type === "tool_use").map((c) => c.id));
|
|
19035
|
-
const toolResultIds = new Set(lastContent.filter((c) => c.type === "tool_result").map((c) => c.toolUseId));
|
|
19036
|
-
if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every((id) => toolResultIds.has(id))) {
|
|
19037
|
-
throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match");
|
|
19038
|
-
}
|
|
19039
|
-
}
|
|
19040
|
-
}
|
|
19041
|
-
return this.requestStream({
|
|
19042
|
-
method: "sampling/createMessage",
|
|
19043
|
-
params
|
|
19044
|
-
}, CreateMessageResultSchema, options);
|
|
19045
|
-
}
|
|
19046
|
-
elicitInputStream(params, options) {
|
|
19047
|
-
const clientCapabilities = this._server.getClientCapabilities();
|
|
19048
|
-
const mode = params.mode ?? "form";
|
|
19049
|
-
switch (mode) {
|
|
19050
|
-
case "url": {
|
|
19051
|
-
if (!clientCapabilities?.elicitation?.url) {
|
|
19052
|
-
throw new Error("Client does not support url elicitation.");
|
|
19053
|
-
}
|
|
19054
|
-
break;
|
|
19055
|
-
}
|
|
19056
|
-
case "form": {
|
|
19057
|
-
if (!clientCapabilities?.elicitation?.form) {
|
|
19058
|
-
throw new Error("Client does not support form elicitation.");
|
|
19059
|
-
}
|
|
19060
|
-
break;
|
|
19061
|
-
}
|
|
19062
|
-
}
|
|
19063
|
-
const normalizedParams = mode === "form" && params.mode === undefined ? { ...params, mode: "form" } : params;
|
|
19064
|
-
return this.requestStream({
|
|
19065
|
-
method: "elicitation/create",
|
|
19066
|
-
params: normalizedParams
|
|
19067
|
-
}, ElicitResultSchema, options);
|
|
19068
|
-
}
|
|
19069
18114
|
async getTask(taskId, options) {
|
|
19070
18115
|
return this._server.getTask({ taskId }, options);
|
|
19071
18116
|
}
|
|
@@ -20349,94 +19394,6 @@ class StdioServerTransport {
|
|
|
20349
19394
|
import { existsSync, readFileSync } from "fs";
|
|
20350
19395
|
import { join, dirname } from "path";
|
|
20351
19396
|
import { fileURLToPath } from "url";
|
|
20352
|
-
|
|
20353
|
-
// src/lib/fuzzy.ts
|
|
20354
|
-
function levenshtein(a, b) {
|
|
20355
|
-
const m = a.length;
|
|
20356
|
-
const n = b.length;
|
|
20357
|
-
if (m === 0)
|
|
20358
|
-
return n;
|
|
20359
|
-
if (n === 0)
|
|
20360
|
-
return m;
|
|
20361
|
-
let prev = new Array(n + 1);
|
|
20362
|
-
let curr = new Array(n + 1);
|
|
20363
|
-
for (let j = 0;j <= n; j++)
|
|
20364
|
-
prev[j] = j;
|
|
20365
|
-
for (let i = 1;i <= m; i++) {
|
|
20366
|
-
curr[0] = i;
|
|
20367
|
-
for (let j = 1;j <= n; j++) {
|
|
20368
|
-
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
20369
|
-
curr[j] = Math.min(curr[j - 1] + 1, prev[j] + 1, prev[j - 1] + cost);
|
|
20370
|
-
}
|
|
20371
|
-
[prev, curr] = [curr, prev];
|
|
20372
|
-
}
|
|
20373
|
-
return prev[n];
|
|
20374
|
-
}
|
|
20375
|
-
function bestFuzzyScore(token, candidates, maxDistance = 2) {
|
|
20376
|
-
if (token.length < 3)
|
|
20377
|
-
return 0;
|
|
20378
|
-
let bestDist = maxDistance + 1;
|
|
20379
|
-
for (const c of candidates) {
|
|
20380
|
-
if (Math.abs(token.length - c.length) > maxDistance)
|
|
20381
|
-
continue;
|
|
20382
|
-
const d = levenshtein(token, c);
|
|
20383
|
-
if (d < bestDist)
|
|
20384
|
-
bestDist = d;
|
|
20385
|
-
if (d === 0)
|
|
20386
|
-
return maxDistance + 1;
|
|
20387
|
-
}
|
|
20388
|
-
if (bestDist > maxDistance)
|
|
20389
|
-
return 0;
|
|
20390
|
-
return maxDistance - bestDist + 1;
|
|
20391
|
-
}
|
|
20392
|
-
|
|
20393
|
-
// src/lib/synonyms.ts
|
|
20394
|
-
var SYNONYM_MAP = {
|
|
20395
|
-
email: ["smtp", "mail", "inbox", "resend", "ses"],
|
|
20396
|
-
chat: ["messaging", "im", "slack", "discord", "teams"],
|
|
20397
|
-
sms: ["text", "twilio", "messaging"],
|
|
20398
|
-
payment: ["billing", "invoicing", "commerce", "checkout", "stripe"],
|
|
20399
|
-
payments: ["billing", "invoicing", "commerce", "checkout", "stripe"],
|
|
20400
|
-
ecommerce: ["shop", "store", "commerce", "shopify"],
|
|
20401
|
-
finance: ["banking", "accounting", "invoicing"],
|
|
20402
|
-
crypto: ["blockchain", "web3", "wallet"],
|
|
20403
|
-
ai: ["llm", "ml", "model", "gpt", "claude", "anthropic", "openai"],
|
|
20404
|
-
llm: ["ai", "model", "gpt", "claude"],
|
|
20405
|
-
auth: ["oauth", "sso", "login", "identity", "authentication"],
|
|
20406
|
-
database: ["db", "sql", "nosql", "postgres", "mongo", "supabase"],
|
|
20407
|
-
deploy: ["hosting", "infrastructure", "ci", "cd", "vercel"],
|
|
20408
|
-
storage: ["files", "drive", "s3", "bucket", "upload"],
|
|
20409
|
-
cloud: ["aws", "gcp", "azure", "infrastructure"],
|
|
20410
|
-
api: ["rest", "graphql", "endpoint", "webhook"],
|
|
20411
|
-
monitoring: ["logs", "observability", "alerting", "datadog", "sentry"],
|
|
20412
|
-
ci: ["cd", "deploy", "pipeline", "github", "actions"],
|
|
20413
|
-
crm: ["sales", "leads", "contacts", "hubspot", "salesforce"],
|
|
20414
|
-
analytics: ["data", "metrics", "tracking", "mixpanel", "amplitude"],
|
|
20415
|
-
project: ["task", "issue", "board", "jira", "linear", "asana"],
|
|
20416
|
-
docs: ["documentation", "wiki", "notion", "confluence"],
|
|
20417
|
-
design: ["figma", "sketch", "ui", "ux"],
|
|
20418
|
-
security: ["auth", "encryption", "compliance", "vault"]
|
|
20419
|
-
};
|
|
20420
|
-
function expandQuery(tokens) {
|
|
20421
|
-
const synonyms = new Set;
|
|
20422
|
-
for (const token of tokens) {
|
|
20423
|
-
const matches = SYNONYM_MAP[token];
|
|
20424
|
-
if (matches) {
|
|
20425
|
-
for (const syn of matches) {
|
|
20426
|
-
if (!tokens.includes(syn))
|
|
20427
|
-
synonyms.add(syn);
|
|
20428
|
-
}
|
|
20429
|
-
}
|
|
20430
|
-
for (const [key, values] of Object.entries(SYNONYM_MAP)) {
|
|
20431
|
-
if (values.includes(token) && !tokens.includes(key)) {
|
|
20432
|
-
synonyms.add(key);
|
|
20433
|
-
}
|
|
20434
|
-
}
|
|
20435
|
-
}
|
|
20436
|
-
return { original: tokens, expanded: [...synonyms] };
|
|
20437
|
-
}
|
|
20438
|
-
|
|
20439
|
-
// src/lib/registry.ts
|
|
20440
19397
|
var CATEGORIES = [
|
|
20441
19398
|
"AI & ML",
|
|
20442
19399
|
"Developer Tools",
|
|
@@ -25322,6 +24279,13 @@ var CONNECTORS = [
|
|
|
25322
24279
|
category: "Business Tools",
|
|
25323
24280
|
tags: ["e-signature", "contracts", "digital", "documents", "legal"]
|
|
25324
24281
|
},
|
|
24282
|
+
{
|
|
24283
|
+
name: "yousign",
|
|
24284
|
+
displayName: "Yousign",
|
|
24285
|
+
description: "eIDAS-compliant electronic signature API for EU workflows",
|
|
24286
|
+
category: "Business Tools",
|
|
24287
|
+
tags: ["e-signature", "eidas", "contracts", "documents", "legal", "eu"]
|
|
24288
|
+
},
|
|
25325
24289
|
{
|
|
25326
24290
|
name: "signl4",
|
|
25327
24291
|
displayName: "SIGNL4",
|
|
@@ -26355,152 +25319,9 @@ var CONNECTORS = [
|
|
|
26355
25319
|
function getConnectorsByCategory(category) {
|
|
26356
25320
|
return CONNECTORS.filter((c) => c.category === category);
|
|
26357
25321
|
}
|
|
26358
|
-
function searchConnectors(query
|
|
26359
|
-
const
|
|
26360
|
-
|
|
26361
|
-
return [];
|
|
26362
|
-
const limit = context?.limit ?? 20;
|
|
26363
|
-
const installed = new Set(context?.installed ?? []);
|
|
26364
|
-
const promoted = new Set(context?.promoted ?? []);
|
|
26365
|
-
const usage = context?.usage ?? new Map;
|
|
26366
|
-
const results = [];
|
|
26367
|
-
for (const c of CONNECTORS) {
|
|
26368
|
-
const nameLow = c.name.toLowerCase();
|
|
26369
|
-
const displayLow = c.displayName.toLowerCase();
|
|
26370
|
-
const descLow = c.description.toLowerCase();
|
|
26371
|
-
const tagsLow = c.tags.map((t) => t.toLowerCase());
|
|
26372
|
-
let score = 0;
|
|
26373
|
-
const matchReasons = [];
|
|
26374
|
-
let allTokensMatch = true;
|
|
26375
|
-
for (const token of tokens) {
|
|
26376
|
-
let tokenMatched = false;
|
|
26377
|
-
if (nameLow === token) {
|
|
26378
|
-
score += 100;
|
|
26379
|
-
matchReasons.push(`name="${token}"`);
|
|
26380
|
-
tokenMatched = true;
|
|
26381
|
-
} else if (nameLow.includes(token)) {
|
|
26382
|
-
score += 10;
|
|
26383
|
-
matchReasons.push(`name~${token}`);
|
|
26384
|
-
tokenMatched = true;
|
|
26385
|
-
}
|
|
26386
|
-
if (tagsLow.includes(token)) {
|
|
26387
|
-
score += 8;
|
|
26388
|
-
if (!tokenMatched)
|
|
26389
|
-
matchReasons.push(`tag="${token}"`);
|
|
26390
|
-
tokenMatched = true;
|
|
26391
|
-
} else if (tagsLow.some((t) => t.includes(token))) {
|
|
26392
|
-
score += 5;
|
|
26393
|
-
if (!tokenMatched)
|
|
26394
|
-
matchReasons.push(`tag~${token}`);
|
|
26395
|
-
tokenMatched = true;
|
|
26396
|
-
}
|
|
26397
|
-
if (displayLow.includes(token)) {
|
|
26398
|
-
score += 3;
|
|
26399
|
-
if (!tokenMatched)
|
|
26400
|
-
matchReasons.push(`display~${token}`);
|
|
26401
|
-
tokenMatched = true;
|
|
26402
|
-
}
|
|
26403
|
-
if (descLow.includes(token)) {
|
|
26404
|
-
score += 1;
|
|
26405
|
-
if (!tokenMatched)
|
|
26406
|
-
matchReasons.push(`desc~${token}`);
|
|
26407
|
-
tokenMatched = true;
|
|
26408
|
-
}
|
|
26409
|
-
if (!tokenMatched && token.length >= 3) {
|
|
26410
|
-
const nameFuzzy = bestFuzzyScore(token, [nameLow], 1);
|
|
26411
|
-
if (nameFuzzy > 0) {
|
|
26412
|
-
score += nameFuzzy * 6;
|
|
26413
|
-
matchReasons.push(`fuzzy:name\u2248${token}`);
|
|
26414
|
-
tokenMatched = true;
|
|
26415
|
-
}
|
|
26416
|
-
if (!tokenMatched) {
|
|
26417
|
-
const tagFuzzy = bestFuzzyScore(token, tagsLow, 2);
|
|
26418
|
-
if (tagFuzzy > 0) {
|
|
26419
|
-
score += tagFuzzy * 3;
|
|
26420
|
-
matchReasons.push(`fuzzy:tag\u2248${token}`);
|
|
26421
|
-
tokenMatched = true;
|
|
26422
|
-
}
|
|
26423
|
-
}
|
|
26424
|
-
if (!tokenMatched) {
|
|
26425
|
-
const displayFuzzy = bestFuzzyScore(token, [displayLow], 2);
|
|
26426
|
-
if (displayFuzzy > 0) {
|
|
26427
|
-
score += displayFuzzy * 2;
|
|
26428
|
-
matchReasons.push(`fuzzy:display\u2248${token}`);
|
|
26429
|
-
tokenMatched = true;
|
|
26430
|
-
}
|
|
26431
|
-
}
|
|
26432
|
-
}
|
|
26433
|
-
if (!tokenMatched) {
|
|
26434
|
-
allTokensMatch = false;
|
|
26435
|
-
break;
|
|
26436
|
-
}
|
|
26437
|
-
}
|
|
26438
|
-
if (!allTokensMatch)
|
|
26439
|
-
continue;
|
|
26440
|
-
const badges = [];
|
|
26441
|
-
if (installed.has(c.name)) {
|
|
26442
|
-
score += 50;
|
|
26443
|
-
badges.push("installed");
|
|
26444
|
-
}
|
|
26445
|
-
if (promoted.has(c.name)) {
|
|
26446
|
-
score += 30;
|
|
26447
|
-
badges.push("promoted");
|
|
26448
|
-
}
|
|
26449
|
-
const usageCount = usage.get(c.name) ?? 0;
|
|
26450
|
-
if (usageCount > 0) {
|
|
26451
|
-
score += Math.min(usageCount * 2, 40);
|
|
26452
|
-
if (usageCount >= 5)
|
|
26453
|
-
badges.push("hot");
|
|
26454
|
-
}
|
|
26455
|
-
results.push({ ...c, score, matchReasons, badges });
|
|
26456
|
-
}
|
|
26457
|
-
const matchedNames = new Set(results.map((r) => r.name));
|
|
26458
|
-
if (results.length < limit) {
|
|
26459
|
-
const { expanded } = expandQuery(tokens);
|
|
26460
|
-
if (expanded.length > 0) {
|
|
26461
|
-
for (const c of CONNECTORS) {
|
|
26462
|
-
if (matchedNames.has(c.name))
|
|
26463
|
-
continue;
|
|
26464
|
-
const nameLow2 = c.name.toLowerCase();
|
|
26465
|
-
const tagsLow2 = c.tags.map((t) => t.toLowerCase());
|
|
26466
|
-
const descLow2 = c.description.toLowerCase();
|
|
26467
|
-
let synScore = 0;
|
|
26468
|
-
const synReasons = [];
|
|
26469
|
-
for (const syn of expanded) {
|
|
26470
|
-
if (nameLow2.includes(syn)) {
|
|
26471
|
-
synScore += 2;
|
|
26472
|
-
synReasons.push(`syn:name~${syn}`);
|
|
26473
|
-
} else if (tagsLow2.some((t) => t.includes(syn))) {
|
|
26474
|
-
synScore += 1;
|
|
26475
|
-
synReasons.push(`syn:tag~${syn}`);
|
|
26476
|
-
} else if (descLow2.includes(syn)) {
|
|
26477
|
-
synScore += 1;
|
|
26478
|
-
synReasons.push(`syn:desc~${syn}`);
|
|
26479
|
-
}
|
|
26480
|
-
}
|
|
26481
|
-
if (synScore > 0) {
|
|
26482
|
-
const badges = [];
|
|
26483
|
-
if (installed.has(c.name)) {
|
|
26484
|
-
synScore += 50;
|
|
26485
|
-
badges.push("installed");
|
|
26486
|
-
}
|
|
26487
|
-
if (promoted.has(c.name)) {
|
|
26488
|
-
synScore += 30;
|
|
26489
|
-
badges.push("promoted");
|
|
26490
|
-
}
|
|
26491
|
-
const usageCount = usage.get(c.name) ?? 0;
|
|
26492
|
-
if (usageCount > 0) {
|
|
26493
|
-
synScore += Math.min(usageCount * 2, 40);
|
|
26494
|
-
if (usageCount >= 5)
|
|
26495
|
-
badges.push("hot");
|
|
26496
|
-
}
|
|
26497
|
-
results.push({ ...c, score: synScore, matchReasons: synReasons, badges });
|
|
26498
|
-
}
|
|
26499
|
-
}
|
|
26500
|
-
}
|
|
26501
|
-
}
|
|
26502
|
-
results.sort((a, b) => b.score - a.score);
|
|
26503
|
-
return results.slice(0, limit);
|
|
25322
|
+
function searchConnectors(query) {
|
|
25323
|
+
const q = query.toLowerCase();
|
|
25324
|
+
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)));
|
|
26504
25325
|
}
|
|
26505
25326
|
function getConnector(name) {
|
|
26506
25327
|
return CONNECTORS.find((c) => c.name === name);
|
|
@@ -26529,83 +25350,106 @@ function loadConnectorVersions() {
|
|
|
26529
25350
|
}
|
|
26530
25351
|
}
|
|
26531
25352
|
|
|
26532
|
-
// src/
|
|
26533
|
-
|
|
26534
|
-
|
|
26535
|
-
|
|
26536
|
-
|
|
26537
|
-
|
|
26538
|
-
|
|
26539
|
-
|
|
26540
|
-
|
|
26541
|
-
|
|
26542
|
-
|
|
26543
|
-
|
|
26544
|
-
|
|
26545
|
-
import { mkdirSync as mkdirSync2 } from "fs";
|
|
26546
|
-
var LOCK_TIMEOUT_MS = 5000;
|
|
26547
|
-
var LOCK_RETRY_MS = 100;
|
|
26548
|
-
var STALE_LOCK_MS = 30000;
|
|
26549
|
-
|
|
26550
|
-
class LockTimeoutError extends Error {
|
|
26551
|
-
connector;
|
|
26552
|
-
constructor(connector) {
|
|
26553
|
-
super(`Could not acquire write lock for connector "${connector}" within ${LOCK_TIMEOUT_MS}ms. Another agent may be writing. Try again shortly.`);
|
|
26554
|
-
this.connector = connector;
|
|
26555
|
-
this.name = "LockTimeoutError";
|
|
26556
|
-
}
|
|
25353
|
+
// src/lib/installer.ts
|
|
25354
|
+
import { existsSync as existsSync2, readFileSync as readFileSync2, readdirSync, statSync } from "fs";
|
|
25355
|
+
import { join as join2, dirname as dirname2 } from "path";
|
|
25356
|
+
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
25357
|
+
var __dirname2 = dirname2(fileURLToPath2(import.meta.url));
|
|
25358
|
+
function resolveConnectorsDir() {
|
|
25359
|
+
const fromBin = join2(__dirname2, "..", "connectors");
|
|
25360
|
+
if (existsSync2(fromBin))
|
|
25361
|
+
return fromBin;
|
|
25362
|
+
const fromSrc = join2(__dirname2, "..", "..", "connectors");
|
|
25363
|
+
if (existsSync2(fromSrc))
|
|
25364
|
+
return fromSrc;
|
|
25365
|
+
return fromBin;
|
|
26557
25366
|
}
|
|
26558
|
-
|
|
26559
|
-
|
|
26560
|
-
|
|
26561
|
-
return
|
|
25367
|
+
var CONNECTORS_DIR = resolveConnectorsDir();
|
|
25368
|
+
function getConnectorPath(name) {
|
|
25369
|
+
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
25370
|
+
return join2(CONNECTORS_DIR, connectorName);
|
|
26562
25371
|
}
|
|
26563
|
-
function
|
|
26564
|
-
|
|
26565
|
-
|
|
26566
|
-
|
|
26567
|
-
|
|
26568
|
-
|
|
25372
|
+
function installConnector(name, options = {}) {
|
|
25373
|
+
if (!/^[a-z0-9-]+$/.test(name)) {
|
|
25374
|
+
return {
|
|
25375
|
+
connector: name,
|
|
25376
|
+
success: false,
|
|
25377
|
+
error: `Invalid connector name '${name}'`
|
|
25378
|
+
};
|
|
26569
25379
|
}
|
|
26570
|
-
|
|
26571
|
-
|
|
26572
|
-
|
|
26573
|
-
|
|
26574
|
-
|
|
26575
|
-
|
|
25380
|
+
const sourcePath = getConnectorPath(name);
|
|
25381
|
+
if (!existsSync2(sourcePath)) {
|
|
25382
|
+
return {
|
|
25383
|
+
connector: name,
|
|
25384
|
+
success: false,
|
|
25385
|
+
error: `Connector '${name}' not found`
|
|
25386
|
+
};
|
|
26576
25387
|
}
|
|
26577
|
-
|
|
26578
|
-
|
|
26579
|
-
|
|
26580
|
-
|
|
26581
|
-
}
|
|
26582
|
-
|
|
26583
|
-
|
|
26584
|
-
|
|
25388
|
+
return {
|
|
25389
|
+
connector: name,
|
|
25390
|
+
success: true,
|
|
25391
|
+
path: sourcePath
|
|
25392
|
+
};
|
|
25393
|
+
}
|
|
25394
|
+
function getInstalledConnectors() {
|
|
25395
|
+
if (!existsSync2(CONNECTORS_DIR)) {
|
|
25396
|
+
return [];
|
|
26585
25397
|
}
|
|
25398
|
+
return readdirSync(CONNECTORS_DIR).filter((f) => {
|
|
25399
|
+
const fullPath = join2(CONNECTORS_DIR, f);
|
|
25400
|
+
return f.startsWith("connect-") && statSync(fullPath).isDirectory();
|
|
25401
|
+
}).map((f) => f.replace("connect-", ""));
|
|
26586
25402
|
}
|
|
26587
|
-
function
|
|
26588
|
-
|
|
26589
|
-
|
|
26590
|
-
|
|
26591
|
-
|
|
26592
|
-
|
|
26593
|
-
|
|
26594
|
-
|
|
26595
|
-
|
|
26596
|
-
|
|
26597
|
-
|
|
26598
|
-
|
|
26599
|
-
|
|
26600
|
-
|
|
26601
|
-
|
|
25403
|
+
function getConnectorDocs(name) {
|
|
25404
|
+
const connectorPath = getConnectorPath(name);
|
|
25405
|
+
const claudeMdPath = join2(connectorPath, "CLAUDE.md");
|
|
25406
|
+
if (!existsSync2(claudeMdPath))
|
|
25407
|
+
return null;
|
|
25408
|
+
const raw = readFileSync2(claudeMdPath, "utf-8");
|
|
25409
|
+
return {
|
|
25410
|
+
overview: extractSection(raw, "Project Overview"),
|
|
25411
|
+
auth: extractSection(raw, "Authentication"),
|
|
25412
|
+
envVars: parseEnvVarsTable(extractSection(raw, "Environment Variables")),
|
|
25413
|
+
cliCommands: extractSection(raw, "CLI Commands"),
|
|
25414
|
+
dataStorage: extractSection(raw, "Data Storage"),
|
|
25415
|
+
raw
|
|
25416
|
+
};
|
|
25417
|
+
}
|
|
25418
|
+
function extractSection(markdown, heading) {
|
|
25419
|
+
const regex = new RegExp(`^##\\s+${escapeRegex2(heading)}\\s*$`, "m");
|
|
25420
|
+
const match = regex.exec(markdown);
|
|
25421
|
+
if (!match)
|
|
25422
|
+
return "";
|
|
25423
|
+
const start = match.index + match[0].length;
|
|
25424
|
+
const nextHeading = markdown.slice(start).search(/^##\s/m);
|
|
25425
|
+
const content = nextHeading === -1 ? markdown.slice(start) : markdown.slice(start, start + nextHeading);
|
|
25426
|
+
return content.trim();
|
|
25427
|
+
}
|
|
25428
|
+
function escapeRegex2(str) {
|
|
25429
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
25430
|
+
}
|
|
25431
|
+
function parseEnvVarsTable(section) {
|
|
25432
|
+
if (!section)
|
|
25433
|
+
return [];
|
|
25434
|
+
const vars = [];
|
|
25435
|
+
const lines = section.split(`
|
|
25436
|
+
`);
|
|
25437
|
+
for (const line of lines) {
|
|
25438
|
+
const match = line.match(/\|\s*`([^`]+)`\s*\|\s*(.+?)\s*\|/);
|
|
25439
|
+
if (match && match[1] !== "Variable") {
|
|
25440
|
+
vars.push({ variable: match[1], description: match[2].trim() });
|
|
26602
25441
|
}
|
|
26603
|
-
await new Promise((resolve) => setTimeout(resolve, LOCK_RETRY_MS));
|
|
26604
25442
|
}
|
|
26605
|
-
|
|
25443
|
+
return vars;
|
|
25444
|
+
}
|
|
25445
|
+
function removeConnector(name) {
|
|
25446
|
+
return false;
|
|
26606
25447
|
}
|
|
26607
25448
|
|
|
26608
25449
|
// src/server/auth.ts
|
|
25450
|
+
import { existsSync as existsSync3, readFileSync as readFileSync3, writeFileSync, mkdirSync, readdirSync as readdirSync2, rmSync, statSync as statSync2 } from "fs";
|
|
25451
|
+
import { homedir } from "os";
|
|
25452
|
+
import { join as join3 } from "path";
|
|
26609
25453
|
var oauthStateStore = new Map;
|
|
26610
25454
|
var GOOGLE_SCOPES = {
|
|
26611
25455
|
gmail: [
|
|
@@ -26658,12 +25502,12 @@ function getAuthType(name) {
|
|
|
26658
25502
|
}
|
|
26659
25503
|
function getConnectorConfigDir(name) {
|
|
26660
25504
|
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
26661
|
-
return
|
|
25505
|
+
return join3(homedir(), ".connectors", connectorName);
|
|
26662
25506
|
}
|
|
26663
25507
|
function getCurrentProfile(name) {
|
|
26664
25508
|
const configDir = getConnectorConfigDir(name);
|
|
26665
|
-
const currentProfileFile =
|
|
26666
|
-
if (
|
|
25509
|
+
const currentProfileFile = join3(configDir, "current_profile");
|
|
25510
|
+
if (existsSync3(currentProfileFile)) {
|
|
26667
25511
|
try {
|
|
26668
25512
|
return readFileSync3(currentProfileFile, "utf-8").trim() || "default";
|
|
26669
25513
|
} catch {
|
|
@@ -26677,14 +25521,14 @@ function loadProfileConfig(name) {
|
|
|
26677
25521
|
const profile = getCurrentProfile(name);
|
|
26678
25522
|
let flatConfig = {};
|
|
26679
25523
|
let dirConfig = {};
|
|
26680
|
-
const profileFile =
|
|
26681
|
-
if (
|
|
25524
|
+
const profileFile = join3(configDir, "profiles", `${profile}.json`);
|
|
25525
|
+
if (existsSync3(profileFile)) {
|
|
26682
25526
|
try {
|
|
26683
25527
|
flatConfig = JSON.parse(readFileSync3(profileFile, "utf-8"));
|
|
26684
25528
|
} catch {}
|
|
26685
25529
|
}
|
|
26686
|
-
const profileDirConfig =
|
|
26687
|
-
if (
|
|
25530
|
+
const profileDirConfig = join3(configDir, "profiles", profile, "config.json");
|
|
25531
|
+
if (existsSync3(profileDirConfig)) {
|
|
26688
25532
|
try {
|
|
26689
25533
|
dirConfig = JSON.parse(readFileSync3(profileDirConfig, "utf-8"));
|
|
26690
25534
|
} catch {}
|
|
@@ -26697,24 +25541,14 @@ function loadProfileConfig(name) {
|
|
|
26697
25541
|
function loadTokens(name) {
|
|
26698
25542
|
const configDir = getConnectorConfigDir(name);
|
|
26699
25543
|
const profile = getCurrentProfile(name);
|
|
26700
|
-
const tokensFile =
|
|
26701
|
-
if (
|
|
25544
|
+
const tokensFile = join3(configDir, "profiles", profile, "tokens.json");
|
|
25545
|
+
if (existsSync3(tokensFile)) {
|
|
26702
25546
|
try {
|
|
26703
25547
|
return JSON.parse(readFileSync3(tokensFile, "utf-8"));
|
|
26704
25548
|
} catch {
|
|
26705
25549
|
return null;
|
|
26706
25550
|
}
|
|
26707
25551
|
}
|
|
26708
|
-
const profileConfig = loadProfileConfig(name);
|
|
26709
|
-
if (profileConfig.refreshToken || profileConfig.accessToken) {
|
|
26710
|
-
return {
|
|
26711
|
-
accessToken: profileConfig.accessToken,
|
|
26712
|
-
refreshToken: profileConfig.refreshToken,
|
|
26713
|
-
expiresAt: profileConfig.expiresAt,
|
|
26714
|
-
tokenType: profileConfig.tokenType,
|
|
26715
|
-
scope: profileConfig.scope
|
|
26716
|
-
};
|
|
26717
|
-
}
|
|
26718
25552
|
return null;
|
|
26719
25553
|
}
|
|
26720
25554
|
function getAuthStatus(name) {
|
|
@@ -26755,51 +25589,48 @@ function getAuthStatus(name) {
|
|
|
26755
25589
|
envVarTotalCount
|
|
26756
25590
|
};
|
|
26757
25591
|
}
|
|
26758
|
-
|
|
26759
|
-
return withWriteLock(name, () => _saveApiKey(name, key, field));
|
|
26760
|
-
}
|
|
26761
|
-
function _saveApiKey(name, key, field) {
|
|
25592
|
+
function saveApiKey(name, key, field) {
|
|
26762
25593
|
const configDir = getConnectorConfigDir(name);
|
|
26763
25594
|
const profile = getCurrentProfile(name);
|
|
26764
25595
|
const keyField = field || guessKeyField(name);
|
|
26765
25596
|
if (keyField === "clientId" || keyField === "clientSecret") {
|
|
26766
|
-
const credentialsFile =
|
|
26767
|
-
|
|
25597
|
+
const credentialsFile = join3(configDir, "credentials.json");
|
|
25598
|
+
mkdirSync(configDir, { recursive: true });
|
|
26768
25599
|
let creds = {};
|
|
26769
|
-
if (
|
|
25600
|
+
if (existsSync3(credentialsFile)) {
|
|
26770
25601
|
try {
|
|
26771
25602
|
creds = JSON.parse(readFileSync3(credentialsFile, "utf-8"));
|
|
26772
25603
|
} catch {}
|
|
26773
25604
|
}
|
|
26774
25605
|
creds[keyField] = key;
|
|
26775
|
-
|
|
25606
|
+
writeFileSync(credentialsFile, JSON.stringify(creds, null, 2));
|
|
26776
25607
|
return;
|
|
26777
25608
|
}
|
|
26778
|
-
const profileFile =
|
|
26779
|
-
const profileDir =
|
|
26780
|
-
if (
|
|
25609
|
+
const profileFile = join3(configDir, "profiles", `${profile}.json`);
|
|
25610
|
+
const profileDir = join3(configDir, "profiles", profile);
|
|
25611
|
+
if (existsSync3(profileFile)) {
|
|
26781
25612
|
let config2 = {};
|
|
26782
25613
|
try {
|
|
26783
25614
|
config2 = JSON.parse(readFileSync3(profileFile, "utf-8"));
|
|
26784
25615
|
} catch {}
|
|
26785
25616
|
config2[keyField] = key;
|
|
26786
|
-
|
|
25617
|
+
writeFileSync(profileFile, JSON.stringify(config2, null, 2));
|
|
26787
25618
|
return;
|
|
26788
25619
|
}
|
|
26789
|
-
if (
|
|
26790
|
-
const configFile =
|
|
25620
|
+
if (existsSync3(profileDir)) {
|
|
25621
|
+
const configFile = join3(profileDir, "config.json");
|
|
26791
25622
|
let config2 = {};
|
|
26792
|
-
if (
|
|
25623
|
+
if (existsSync3(configFile)) {
|
|
26793
25624
|
try {
|
|
26794
25625
|
config2 = JSON.parse(readFileSync3(configFile, "utf-8"));
|
|
26795
25626
|
} catch {}
|
|
26796
25627
|
}
|
|
26797
25628
|
config2[keyField] = key;
|
|
26798
|
-
|
|
25629
|
+
writeFileSync(configFile, JSON.stringify(config2, null, 2));
|
|
26799
25630
|
return;
|
|
26800
25631
|
}
|
|
26801
|
-
|
|
26802
|
-
|
|
25632
|
+
mkdirSync(profileDir, { recursive: true });
|
|
25633
|
+
writeFileSync(join3(profileDir, "config.json"), JSON.stringify({ [keyField]: key }, null, 2));
|
|
26803
25634
|
}
|
|
26804
25635
|
function guessKeyField(name) {
|
|
26805
25636
|
const docs = getConnectorDocs(name);
|
|
@@ -26817,17 +25648,17 @@ function guessKeyField(name) {
|
|
|
26817
25648
|
}
|
|
26818
25649
|
|
|
26819
25650
|
// src/lib/runner.ts
|
|
26820
|
-
import { existsSync as
|
|
26821
|
-
import { join as
|
|
25651
|
+
import { existsSync as existsSync4 } from "fs";
|
|
25652
|
+
import { join as join4, dirname as dirname3 } from "path";
|
|
26822
25653
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
26823
25654
|
import { spawn } from "child_process";
|
|
26824
25655
|
var __dirname3 = dirname3(fileURLToPath3(import.meta.url));
|
|
26825
25656
|
function resolveConnectorsDir2() {
|
|
26826
|
-
const fromBin =
|
|
26827
|
-
if (
|
|
25657
|
+
const fromBin = join4(__dirname3, "..", "connectors");
|
|
25658
|
+
if (existsSync4(fromBin))
|
|
26828
25659
|
return fromBin;
|
|
26829
|
-
const fromSrc =
|
|
26830
|
-
if (
|
|
25660
|
+
const fromSrc = join4(__dirname3, "..", "..", "connectors");
|
|
25661
|
+
if (existsSync4(fromSrc))
|
|
26831
25662
|
return fromSrc;
|
|
26832
25663
|
return fromBin;
|
|
26833
25664
|
}
|
|
@@ -26867,9 +25698,9 @@ function buildEnvWithCredentials(connectorName, baseEnv) {
|
|
|
26867
25698
|
}
|
|
26868
25699
|
function getConnectorCliPath(name) {
|
|
26869
25700
|
const safeName = name.replace(/[^a-z0-9-]/g, "");
|
|
26870
|
-
const connectorDir =
|
|
26871
|
-
const cliPath =
|
|
26872
|
-
if (
|
|
25701
|
+
const connectorDir = join4(CONNECTORS_DIR2, `connect-${safeName}`);
|
|
25702
|
+
const cliPath = join4(connectorDir, "src", "cli", "index.ts");
|
|
25703
|
+
if (existsSync4(cliPath))
|
|
26873
25704
|
return cliPath;
|
|
26874
25705
|
return null;
|
|
26875
25706
|
}
|
|
@@ -26948,248 +25779,32 @@ async function getConnectorCommandHelp(name, command) {
|
|
|
26948
25779
|
return result.stdout || result.stderr;
|
|
26949
25780
|
}
|
|
26950
25781
|
|
|
26951
|
-
// src/db/agents.ts
|
|
26952
|
-
init_database();
|
|
26953
|
-
var AGENT_ACTIVE_WINDOW_MS = 30 * 60 * 1000;
|
|
26954
|
-
function shortUuid2() {
|
|
26955
|
-
return crypto.randomUUID().slice(0, 8);
|
|
26956
|
-
}
|
|
26957
|
-
function isAgentConflict(result) {
|
|
26958
|
-
return result.conflict === true;
|
|
26959
|
-
}
|
|
26960
|
-
function registerAgent(input, db) {
|
|
26961
|
-
const d = db ?? getDatabase();
|
|
26962
|
-
const normalizedName = input.name.trim().toLowerCase();
|
|
26963
|
-
const existing = getAgentByName(normalizedName, d);
|
|
26964
|
-
if (existing) {
|
|
26965
|
-
const lastSeenMs = new Date(existing.last_seen_at).getTime();
|
|
26966
|
-
const isActive = Date.now() - lastSeenMs < AGENT_ACTIVE_WINDOW_MS;
|
|
26967
|
-
const sameSession = input.session_id && existing.session_id && input.session_id === existing.session_id;
|
|
26968
|
-
const differentSession = input.session_id && existing.session_id && input.session_id !== existing.session_id;
|
|
26969
|
-
if (isActive && differentSession) {
|
|
26970
|
-
const minutesAgo = Math.round((Date.now() - lastSeenMs) / 60000);
|
|
26971
|
-
return {
|
|
26972
|
-
conflict: true,
|
|
26973
|
-
existing_id: existing.id,
|
|
26974
|
-
existing_name: existing.name,
|
|
26975
|
-
last_seen_at: existing.last_seen_at,
|
|
26976
|
-
session_hint: existing.session_id ? existing.session_id.slice(0, 8) : null,
|
|
26977
|
-
working_dir: null,
|
|
26978
|
-
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.`
|
|
26979
|
-
};
|
|
26980
|
-
}
|
|
26981
|
-
const updates = ["last_seen_at = ?"];
|
|
26982
|
-
const params = [now()];
|
|
26983
|
-
if (input.session_id && !sameSession) {
|
|
26984
|
-
updates.push("session_id = ?");
|
|
26985
|
-
params.push(input.session_id);
|
|
26986
|
-
}
|
|
26987
|
-
params.push(existing.id);
|
|
26988
|
-
d.run(`UPDATE agents SET ${updates.join(", ")} WHERE id = ?`, params);
|
|
26989
|
-
return getAgent(existing.id, d);
|
|
26990
|
-
}
|
|
26991
|
-
const id = shortUuid2();
|
|
26992
|
-
const ts = now();
|
|
26993
|
-
d.run(`INSERT INTO agents (id, name, session_id, role, last_seen_at, created_at)
|
|
26994
|
-
VALUES (?, ?, ?, ?, ?, ?)`, [id, normalizedName, input.session_id ?? null, input.role ?? "agent", ts, ts]);
|
|
26995
|
-
return getAgent(id, d);
|
|
26996
|
-
}
|
|
26997
|
-
function getAgent(id, db) {
|
|
26998
|
-
const d = db ?? getDatabase();
|
|
26999
|
-
return d.query("SELECT * FROM agents WHERE id = ?").get(id);
|
|
27000
|
-
}
|
|
27001
|
-
function getAgentByName(name, db) {
|
|
27002
|
-
const d = db ?? getDatabase();
|
|
27003
|
-
return d.query("SELECT * FROM agents WHERE LOWER(name) = ?").get(name.trim().toLowerCase());
|
|
27004
|
-
}
|
|
27005
|
-
function listAgents(db) {
|
|
27006
|
-
const d = db ?? getDatabase();
|
|
27007
|
-
return d.query("SELECT * FROM agents ORDER BY name").all();
|
|
27008
|
-
}
|
|
27009
|
-
|
|
27010
|
-
// src/db/rate.ts
|
|
27011
|
-
init_database();
|
|
27012
|
-
var AGENT_ACTIVE_WINDOW_MS2 = 30 * 60 * 1000;
|
|
27013
|
-
var WINDOW_SECONDS = 60;
|
|
27014
|
-
function ensureRateTable(db) {
|
|
27015
|
-
db.run(`
|
|
27016
|
-
CREATE TABLE IF NOT EXISTS connector_rate_usage (
|
|
27017
|
-
agent_id TEXT NOT NULL,
|
|
27018
|
-
connector TEXT NOT NULL,
|
|
27019
|
-
window_start TEXT NOT NULL,
|
|
27020
|
-
call_count INTEGER NOT NULL DEFAULT 0,
|
|
27021
|
-
PRIMARY KEY (agent_id, connector, window_start)
|
|
27022
|
-
)
|
|
27023
|
-
`);
|
|
27024
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_rate_usage_window ON connector_rate_usage(connector, window_start)`);
|
|
27025
|
-
}
|
|
27026
|
-
function countActiveAgents(db) {
|
|
27027
|
-
const cutoff = new Date(Date.now() - AGENT_ACTIVE_WINDOW_MS2).toISOString();
|
|
27028
|
-
const row = db.query("SELECT COUNT(*) as count FROM agents WHERE last_seen_at > ?").get(cutoff);
|
|
27029
|
-
return Math.max(1, row?.count ?? 1);
|
|
27030
|
-
}
|
|
27031
|
-
function currentWindowStart() {
|
|
27032
|
-
const now3 = Date.now();
|
|
27033
|
-
const windowMs = WINDOW_SECONDS * 1000;
|
|
27034
|
-
return new Date(Math.floor(now3 / windowMs) * windowMs).toISOString();
|
|
27035
|
-
}
|
|
27036
|
-
function checkRateBudget(agentId, connector, connectorLimit, consume = true, db) {
|
|
27037
|
-
const d = db ?? getDatabase();
|
|
27038
|
-
ensureRateTable(d);
|
|
27039
|
-
const activeAgents = countActiveAgents(d);
|
|
27040
|
-
const budget = Math.max(1, Math.floor(connectorLimit / activeAgents));
|
|
27041
|
-
const windowStart = currentWindowStart();
|
|
27042
|
-
const windowMs = WINDOW_SECONDS * 1000;
|
|
27043
|
-
const windowEnd = new Date(Math.floor(Date.now() / windowMs) * windowMs + windowMs);
|
|
27044
|
-
const windowResetsIn = windowEnd.getTime() - Date.now();
|
|
27045
|
-
const row = d.query("SELECT call_count FROM connector_rate_usage WHERE agent_id = ? AND connector = ? AND window_start = ?").get(agentId, connector, windowStart);
|
|
27046
|
-
const used = row?.call_count ?? 0;
|
|
27047
|
-
if (used >= budget) {
|
|
27048
|
-
return {
|
|
27049
|
-
exceeded: true,
|
|
27050
|
-
connector,
|
|
27051
|
-
agent_id: agentId,
|
|
27052
|
-
budget,
|
|
27053
|
-
used,
|
|
27054
|
-
active_agents: activeAgents,
|
|
27055
|
-
window_resets_in_ms: windowResetsIn,
|
|
27056
|
-
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.`
|
|
27057
|
-
};
|
|
27058
|
-
}
|
|
27059
|
-
if (consume) {
|
|
27060
|
-
d.run(`INSERT INTO connector_rate_usage (agent_id, connector, window_start, call_count)
|
|
27061
|
-
VALUES (?, ?, ?, 1)
|
|
27062
|
-
ON CONFLICT(agent_id, connector, window_start) DO UPDATE SET call_count = call_count + 1`, [agentId, connector, windowStart]);
|
|
27063
|
-
}
|
|
27064
|
-
return {
|
|
27065
|
-
connector,
|
|
27066
|
-
agent_id: agentId,
|
|
27067
|
-
limit: connectorLimit,
|
|
27068
|
-
active_agents: activeAgents,
|
|
27069
|
-
budget,
|
|
27070
|
-
used: consume ? used + 1 : used,
|
|
27071
|
-
remaining: consume ? budget - used - 1 : budget - used,
|
|
27072
|
-
window_start: windowStart,
|
|
27073
|
-
window_resets_in_ms: windowResetsIn
|
|
27074
|
-
};
|
|
27075
|
-
}
|
|
27076
|
-
function getRateBudget(agentId, connector, connectorLimit, db) {
|
|
27077
|
-
return checkRateBudget(agentId, connector, connectorLimit, false, db);
|
|
27078
|
-
}
|
|
27079
|
-
|
|
27080
|
-
// src/mcp/index.ts
|
|
27081
|
-
init_strip();
|
|
27082
|
-
// package.json
|
|
27083
|
-
var package_default = {
|
|
27084
|
-
name: "@hasna/connectors",
|
|
27085
|
-
version: "1.2.1",
|
|
27086
|
-
description: "Open source connector library - Install API connectors with a single command",
|
|
27087
|
-
type: "module",
|
|
27088
|
-
bin: {
|
|
27089
|
-
connectors: "./bin/index.js",
|
|
27090
|
-
"connectors-mcp": "./bin/mcp.js",
|
|
27091
|
-
"connectors-serve": "./bin/serve.js"
|
|
27092
|
-
},
|
|
27093
|
-
files: [
|
|
27094
|
-
"bin/",
|
|
27095
|
-
"dist/",
|
|
27096
|
-
"dashboard/dist/",
|
|
27097
|
-
"connectors/",
|
|
27098
|
-
"README.md"
|
|
27099
|
-
],
|
|
27100
|
-
exports: {
|
|
27101
|
-
".": {
|
|
27102
|
-
import: "./dist/index.js",
|
|
27103
|
-
types: "./dist/index.d.ts"
|
|
27104
|
-
}
|
|
27105
|
-
},
|
|
27106
|
-
main: "./dist/index.js",
|
|
27107
|
-
types: "./dist/index.d.ts",
|
|
27108
|
-
scripts: {
|
|
27109
|
-
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",
|
|
27110
|
-
"build:dashboard": "cd dashboard && bun run build",
|
|
27111
|
-
postinstall: '[ "$SKIP_DASHBOARD" = "1" ] || [ ! -f dashboard/package.json ] || [ -d dashboard/node_modules ] || (cd dashboard && bun install)',
|
|
27112
|
-
dev: "bun run ./src/cli/index.tsx",
|
|
27113
|
-
typecheck: "tsc --noEmit",
|
|
27114
|
-
test: "bun test",
|
|
27115
|
-
"sdk:build": "cd sdk && bun run build",
|
|
27116
|
-
prepublishOnly: "bun test && bun run build"
|
|
27117
|
-
},
|
|
27118
|
-
keywords: [
|
|
27119
|
-
"connectors",
|
|
27120
|
-
"api",
|
|
27121
|
-
"cli",
|
|
27122
|
-
"typescript",
|
|
27123
|
-
"bun",
|
|
27124
|
-
"figma",
|
|
27125
|
-
"stripe",
|
|
27126
|
-
"github",
|
|
27127
|
-
"openai",
|
|
27128
|
-
"mcp",
|
|
27129
|
-
"model-context-protocol"
|
|
27130
|
-
],
|
|
27131
|
-
author: "Hasna",
|
|
27132
|
-
license: "Apache-2.0",
|
|
27133
|
-
devDependencies: {
|
|
27134
|
-
"@types/bun": "latest",
|
|
27135
|
-
"@types/react": "^18.2.0",
|
|
27136
|
-
"ink-testing-library": "^4.0.0",
|
|
27137
|
-
typescript: "^5"
|
|
27138
|
-
},
|
|
27139
|
-
dependencies: {
|
|
27140
|
-
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
27141
|
-
chalk: "^5.3.0",
|
|
27142
|
-
commander: "^12.1.0",
|
|
27143
|
-
conf: "^13.0.1",
|
|
27144
|
-
"fast-xml-parser": "^5.5.3",
|
|
27145
|
-
ink: "^5.0.1",
|
|
27146
|
-
"ink-select-input": "^6.0.0",
|
|
27147
|
-
"ink-spinner": "^5.0.0",
|
|
27148
|
-
"ink-text-input": "^6.0.0",
|
|
27149
|
-
open: "^11.0.0",
|
|
27150
|
-
react: "^18.2.0",
|
|
27151
|
-
zod: "3"
|
|
27152
|
-
},
|
|
27153
|
-
engines: {
|
|
27154
|
-
bun: ">=1.0.0"
|
|
27155
|
-
},
|
|
27156
|
-
publishConfig: {
|
|
27157
|
-
registry: "https://registry.npmjs.org",
|
|
27158
|
-
access: "public"
|
|
27159
|
-
},
|
|
27160
|
-
repository: {
|
|
27161
|
-
type: "git",
|
|
27162
|
-
url: "git+https://github.com/hasna/connectors.git"
|
|
27163
|
-
},
|
|
27164
|
-
homepage: "https://github.com/hasna/connectors#readme",
|
|
27165
|
-
bugs: {
|
|
27166
|
-
url: "https://github.com/hasna/connectors/issues"
|
|
27167
|
-
}
|
|
27168
|
-
};
|
|
27169
|
-
|
|
27170
25782
|
// src/mcp/index.ts
|
|
27171
25783
|
loadConnectorVersions();
|
|
27172
|
-
async function stripped(text) {
|
|
27173
|
-
return { content: [{ type: "text", text: await maybeStrip(text) }] };
|
|
27174
|
-
}
|
|
27175
25784
|
var server = new McpServer({
|
|
27176
25785
|
name: "connectors",
|
|
27177
|
-
version:
|
|
25786
|
+
version: "1.1.9"
|
|
27178
25787
|
});
|
|
27179
25788
|
server.registerTool("search_connectors", {
|
|
27180
25789
|
title: "Search Connectors",
|
|
27181
25790
|
description: "Search connectors by name or keyword.",
|
|
27182
25791
|
inputSchema: { query: exports_external.string() }
|
|
27183
25792
|
}, async ({ query }) => {
|
|
27184
|
-
const
|
|
27185
|
-
|
|
27186
|
-
|
|
27187
|
-
|
|
27188
|
-
|
|
27189
|
-
|
|
27190
|
-
|
|
27191
|
-
|
|
27192
|
-
|
|
25793
|
+
const results = searchConnectors(query);
|
|
25794
|
+
return {
|
|
25795
|
+
content: [
|
|
25796
|
+
{
|
|
25797
|
+
type: "text",
|
|
25798
|
+
text: JSON.stringify(results.map((c) => ({
|
|
25799
|
+
name: c.name,
|
|
25800
|
+
displayName: c.displayName,
|
|
25801
|
+
version: c.version,
|
|
25802
|
+
category: c.category,
|
|
25803
|
+
description: c.description
|
|
25804
|
+
})), null, 2)
|
|
25805
|
+
}
|
|
25806
|
+
]
|
|
25807
|
+
};
|
|
27193
25808
|
});
|
|
27194
25809
|
server.registerTool("list_connectors", {
|
|
27195
25810
|
title: "List Connectors",
|
|
@@ -27222,7 +25837,9 @@ server.registerTool("list_connectors", {
|
|
|
27222
25837
|
category: c.category,
|
|
27223
25838
|
description: c.description
|
|
27224
25839
|
}));
|
|
27225
|
-
return
|
|
25840
|
+
return {
|
|
25841
|
+
content: [{ type: "text", text: JSON.stringify(data, null, 2) }]
|
|
25842
|
+
};
|
|
27226
25843
|
});
|
|
27227
25844
|
server.registerTool("connector_docs", {
|
|
27228
25845
|
title: "Connector Documentation",
|
|
@@ -27264,14 +25881,14 @@ server.registerTool("connector_docs", {
|
|
|
27264
25881
|
});
|
|
27265
25882
|
server.registerTool("install_connector", {
|
|
27266
25883
|
title: "Install Connector",
|
|
27267
|
-
description: "
|
|
25884
|
+
description: "Verify connectors are available in the global package.",
|
|
27268
25885
|
inputSchema: {
|
|
27269
25886
|
names: exports_external.array(exports_external.string()),
|
|
27270
25887
|
overwrite: exports_external.boolean().optional()
|
|
27271
25888
|
}
|
|
27272
|
-
}, async ({ names
|
|
27273
|
-
const results = names.map((name) => installConnector(name
|
|
27274
|
-
const summary = results.map((r) => r.success ? `\u2713 ${r.connector}
|
|
25889
|
+
}, async ({ names }) => {
|
|
25890
|
+
const results = names.map((name) => installConnector(name));
|
|
25891
|
+
const summary = results.map((r) => r.success ? `\u2713 ${r.connector} available at ${r.path}` : `\u2717 ${r.connector}: ${r.error}`);
|
|
27275
25892
|
return {
|
|
27276
25893
|
content: [
|
|
27277
25894
|
{
|
|
@@ -27279,8 +25896,7 @@ server.registerTool("install_connector", {
|
|
|
27279
25896
|
text: JSON.stringify({
|
|
27280
25897
|
results,
|
|
27281
25898
|
summary: summary.join(`
|
|
27282
|
-
`)
|
|
27283
|
-
usage: results.some((r) => r.success) ? "Import from './.connectors': import { " + results.filter((r) => r.success).map((r) => r.connector).join(", ") + " } from './.connectors'" : undefined
|
|
25899
|
+
`)
|
|
27284
25900
|
}, null, 2)
|
|
27285
25901
|
}
|
|
27286
25902
|
]
|
|
@@ -27288,22 +25904,22 @@ server.registerTool("install_connector", {
|
|
|
27288
25904
|
});
|
|
27289
25905
|
server.registerTool("remove_connector", {
|
|
27290
25906
|
title: "Remove Connector",
|
|
27291
|
-
description: "Remove
|
|
25907
|
+
description: "Remove connector auth/credentials from ~/.connectors/. Does not remove the connector from the global package.",
|
|
27292
25908
|
inputSchema: { name: exports_external.string() }
|
|
27293
25909
|
}, async ({ name }) => {
|
|
27294
|
-
|
|
25910
|
+
removeConnector(name);
|
|
27295
25911
|
return {
|
|
27296
25912
|
content: [
|
|
27297
25913
|
{
|
|
27298
25914
|
type: "text",
|
|
27299
|
-
text: JSON.stringify({ name,
|
|
25915
|
+
text: JSON.stringify({ name, message: "Connector auth can be cleared with configure_auth. The connector itself is part of the global package." })
|
|
27300
25916
|
}
|
|
27301
25917
|
]
|
|
27302
25918
|
};
|
|
27303
25919
|
});
|
|
27304
25920
|
server.registerTool("list_installed", {
|
|
27305
25921
|
title: "List Installed Connectors",
|
|
27306
|
-
description: "List connectors
|
|
25922
|
+
description: "List all connectors available in the global package.",
|
|
27307
25923
|
inputSchema: {}
|
|
27308
25924
|
}, async () => {
|
|
27309
25925
|
const installed = getInstalledConnectors();
|
|
@@ -27375,7 +25991,7 @@ server.registerTool("configure_auth", {
|
|
|
27375
25991
|
}
|
|
27376
25992
|
}, async ({ name, key, field }) => {
|
|
27377
25993
|
try {
|
|
27378
|
-
|
|
25994
|
+
saveApiKey(name, key, field);
|
|
27379
25995
|
return {
|
|
27380
25996
|
content: [
|
|
27381
25997
|
{
|
|
@@ -27471,11 +26087,18 @@ server.registerTool("run_connector_operation", {
|
|
|
27471
26087
|
description: "Execute an API operation on a connector. Pass the connector name and CLI arguments. Use list_connector_operations first to discover available commands. Example: name='stripe', args=['products', 'list', '--limit', '5']",
|
|
27472
26088
|
inputSchema: {
|
|
27473
26089
|
name: exports_external.string().describe("Connector name (e.g. stripe, gmail, anthropic)"),
|
|
27474
|
-
args: exports_external.array(exports_external.string()).describe("CLI arguments for the connector command (e.g. ['products', 'list', '--limit', '5'])"),
|
|
26090
|
+
args: exports_external.union([exports_external.array(exports_external.string()), exports_external.string()]).describe("CLI arguments for the connector command (e.g. ['products', 'list', '--limit', '5'])"),
|
|
27475
26091
|
format: exports_external.enum(["json", "pretty"]).optional().describe("Output format (default: json for structured parsing)"),
|
|
27476
26092
|
timeout: exports_external.number().optional().describe("Timeout in milliseconds (default: 30000)")
|
|
27477
26093
|
}
|
|
27478
|
-
}, async ({ name, args, format, timeout }) => {
|
|
26094
|
+
}, async ({ name, args: rawArgs, format, timeout }) => {
|
|
26095
|
+
const args = typeof rawArgs === "string" ? (() => {
|
|
26096
|
+
try {
|
|
26097
|
+
return JSON.parse(rawArgs);
|
|
26098
|
+
} catch {
|
|
26099
|
+
return [rawArgs];
|
|
26100
|
+
}
|
|
26101
|
+
})() : rawArgs;
|
|
27479
26102
|
const meta = getConnector(name);
|
|
27480
26103
|
if (!meta) {
|
|
27481
26104
|
return {
|
|
@@ -27483,10 +26106,6 @@ server.registerTool("run_connector_operation", {
|
|
|
27483
26106
|
isError: true
|
|
27484
26107
|
};
|
|
27485
26108
|
}
|
|
27486
|
-
try {
|
|
27487
|
-
const { logUsage: logUsage2 } = await Promise.resolve().then(() => (init_usage(), exports_usage));
|
|
27488
|
-
logUsage2(name, "run");
|
|
27489
|
-
} catch {}
|
|
27490
26109
|
const finalArgs = [...args];
|
|
27491
26110
|
if (format) {
|
|
27492
26111
|
finalArgs.push("--format", format);
|
|
@@ -27569,7 +26188,7 @@ server.registerTool("setup_connector", {
|
|
|
27569
26188
|
}
|
|
27570
26189
|
if (key) {
|
|
27571
26190
|
try {
|
|
27572
|
-
|
|
26191
|
+
saveApiKey(name, key, field);
|
|
27573
26192
|
} catch (error2) {
|
|
27574
26193
|
return {
|
|
27575
26194
|
content: [
|
|
@@ -27655,139 +26274,6 @@ server.registerTool("describe_tools", {
|
|
|
27655
26274
|
`);
|
|
27656
26275
|
return { content: [{ type: "text", text: result }] };
|
|
27657
26276
|
});
|
|
27658
|
-
server.registerTool("get_hot_connectors", { title: "Get Hot Connectors", description: "Top connectors by usage.", inputSchema: { limit: exports_external.number().optional(), days: exports_external.number().optional() } }, async ({ limit, days }) => {
|
|
27659
|
-
const { getTopConnectors: getTopConnectors2 } = await Promise.resolve().then(() => (init_usage(), exports_usage));
|
|
27660
|
-
const { getPromotedConnectors: getPromotedConnectors2 } = await Promise.resolve().then(() => (init_promotions(), exports_promotions));
|
|
27661
|
-
const top = getTopConnectors2(limit ?? 10, days ?? 7);
|
|
27662
|
-
const promoted = new Set(getPromotedConnectors2());
|
|
27663
|
-
const result = top.map((t) => ({ ...t, promoted: promoted.has(t.connector) }));
|
|
27664
|
-
return stripped(JSON.stringify(result, null, 2));
|
|
27665
|
-
});
|
|
27666
|
-
server.registerTool("promote_connector", { title: "Promote Connector", description: "Boost a connector in search rankings.", inputSchema: { name: exports_external.string() } }, async ({ name }) => {
|
|
27667
|
-
const meta = getConnector(name);
|
|
27668
|
-
if (!meta)
|
|
27669
|
-
return { content: [{ type: "text", text: JSON.stringify({ error: "Connector not found" }) }], isError: true };
|
|
27670
|
-
const { promoteConnector: promoteConnector2 } = await Promise.resolve().then(() => (init_promotions(), exports_promotions));
|
|
27671
|
-
promoteConnector2(name);
|
|
27672
|
-
return { content: [{ type: "text", text: JSON.stringify({ success: true, connector: name }) }] };
|
|
27673
|
-
});
|
|
27674
|
-
server.registerTool("demote_connector", { title: "Demote Connector", description: "Remove search ranking boost.", inputSchema: { name: exports_external.string() } }, async ({ name }) => {
|
|
27675
|
-
const { demoteConnector: demoteConnector2 } = await Promise.resolve().then(() => (init_promotions(), exports_promotions));
|
|
27676
|
-
const removed = demoteConnector2(name);
|
|
27677
|
-
return { content: [{ type: "text", text: JSON.stringify({ success: removed, connector: name }) }] };
|
|
27678
|
-
});
|
|
27679
|
-
server.registerTool("list_jobs", { title: "List Jobs", description: "List scheduled connector jobs.", inputSchema: {} }, async () => {
|
|
27680
|
-
const { listJobs: listJobs2 } = await Promise.resolve().then(() => (init_jobs(), exports_jobs));
|
|
27681
|
-
const { getDatabase: getDatabase2 } = await Promise.resolve().then(() => (init_database(), exports_database));
|
|
27682
|
-
return stripped(JSON.stringify(listJobs2(getDatabase2()), null, 2));
|
|
27683
|
-
});
|
|
27684
|
-
server.registerTool("get_latest_job_run", { title: "Get Latest Job Run", description: "Get the most recent run output for a job.", inputSchema: { name: exports_external.string() } }, async ({ name }) => {
|
|
27685
|
-
const { getJobByName: getJobByName2, getLatestRun: getLatestRun2 } = await Promise.resolve().then(() => (init_jobs(), exports_jobs));
|
|
27686
|
-
const { getDatabase: getDatabase2 } = await Promise.resolve().then(() => (init_database(), exports_database));
|
|
27687
|
-
const db = getDatabase2();
|
|
27688
|
-
const job = getJobByName2(name, db);
|
|
27689
|
-
if (!job)
|
|
27690
|
-
return { content: [{ type: "text", text: JSON.stringify({ error: `Job "${name}" not found` }) }], isError: true };
|
|
27691
|
-
const run = getLatestRun2(job.id, db);
|
|
27692
|
-
return stripped(JSON.stringify(run ?? { message: "No runs yet" }, null, 2));
|
|
27693
|
-
});
|
|
27694
|
-
server.registerTool("run_job", { title: "Run Job", description: "Manually trigger a scheduled job.", inputSchema: { name: exports_external.string() } }, async ({ name }) => {
|
|
27695
|
-
const { getJobByName: getJobByName2 } = await Promise.resolve().then(() => (init_jobs(), exports_jobs));
|
|
27696
|
-
const { getDatabase: getDatabase2 } = await Promise.resolve().then(() => (init_database(), exports_database));
|
|
27697
|
-
const { triggerJob: triggerJob2 } = await Promise.resolve().then(() => (init_scheduler(), exports_scheduler));
|
|
27698
|
-
const db = getDatabase2();
|
|
27699
|
-
const job = getJobByName2(name, db);
|
|
27700
|
-
if (!job)
|
|
27701
|
-
return { content: [{ type: "text", text: JSON.stringify({ error: `Job "${name}" not found` }) }], isError: true };
|
|
27702
|
-
const result = await triggerJob2(job, db);
|
|
27703
|
-
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
27704
|
-
});
|
|
27705
|
-
server.registerTool("list_workflows", { title: "List Workflows", description: "List connector workflows.", inputSchema: {} }, async () => {
|
|
27706
|
-
const { listWorkflows: listWorkflows2 } = await Promise.resolve().then(() => (init_workflows(), exports_workflows));
|
|
27707
|
-
const { getDatabase: getDatabase2 } = await Promise.resolve().then(() => (init_database(), exports_database));
|
|
27708
|
-
return stripped(JSON.stringify(listWorkflows2(getDatabase2()), null, 2));
|
|
27709
|
-
});
|
|
27710
|
-
server.registerTool("run_workflow", { title: "Run Workflow", description: "Execute a connector workflow pipeline.", inputSchema: { name: exports_external.string() } }, async ({ name }) => {
|
|
27711
|
-
const { getWorkflowByName: getWorkflowByName2 } = await Promise.resolve().then(() => (init_workflows(), exports_workflows));
|
|
27712
|
-
const { getDatabase: getDatabase2 } = await Promise.resolve().then(() => (init_database(), exports_database));
|
|
27713
|
-
const { runWorkflow: runWorkflow2 } = await Promise.resolve().then(() => (init_workflow_runner(), exports_workflow_runner));
|
|
27714
|
-
const wf = getWorkflowByName2(name, getDatabase2());
|
|
27715
|
-
if (!wf)
|
|
27716
|
-
return { content: [{ type: "text", text: JSON.stringify({ error: `Workflow "${name}" not found` }) }], isError: true };
|
|
27717
|
-
const result = await runWorkflow2(wf);
|
|
27718
|
-
return stripped(JSON.stringify(result, null, 2));
|
|
27719
|
-
});
|
|
27720
|
-
server.registerTool("get_llm_config", {
|
|
27721
|
-
title: "Get LLM Config",
|
|
27722
|
-
description: "Get current LLM provider config and strip status.",
|
|
27723
|
-
inputSchema: {}
|
|
27724
|
-
}, async () => {
|
|
27725
|
-
const { getLlmConfig: getConfig, maskKey: mask } = await Promise.resolve().then(() => (init_llm(), exports_llm));
|
|
27726
|
-
const config2 = getConfig();
|
|
27727
|
-
if (!config2)
|
|
27728
|
-
return { content: [{ type: "text", text: JSON.stringify({ configured: false }) }] };
|
|
27729
|
-
return { content: [{ type: "text", text: JSON.stringify({ configured: true, provider: config2.provider, model: config2.model, key: mask(config2.api_key), strip: config2.strip }) }] };
|
|
27730
|
-
});
|
|
27731
|
-
server.registerTool("set_llm_strip", {
|
|
27732
|
-
title: "Set LLM Strip",
|
|
27733
|
-
description: "Enable or disable global output stripping.",
|
|
27734
|
-
inputSchema: { enabled: exports_external.boolean() }
|
|
27735
|
-
}, async ({ enabled }) => {
|
|
27736
|
-
const { setLlmStrip: setLlmStrip2 } = await Promise.resolve().then(() => (init_llm(), exports_llm));
|
|
27737
|
-
try {
|
|
27738
|
-
setLlmStrip2(enabled);
|
|
27739
|
-
return { content: [{ type: "text", text: JSON.stringify({ success: true, strip: enabled }) }] };
|
|
27740
|
-
} catch (e) {
|
|
27741
|
-
return { content: [{ type: "text", text: JSON.stringify({ success: false, error: e instanceof Error ? e.message : String(e) }) }], isError: true };
|
|
27742
|
-
}
|
|
27743
|
-
});
|
|
27744
|
-
server.registerTool("register_agent", {
|
|
27745
|
-
title: "Register Agent",
|
|
27746
|
-
description: "Register or heartbeat an agent. Returns agent or conflict error.",
|
|
27747
|
-
inputSchema: {
|
|
27748
|
-
name: exports_external.string(),
|
|
27749
|
-
session_id: exports_external.string().optional(),
|
|
27750
|
-
role: exports_external.string().optional()
|
|
27751
|
-
}
|
|
27752
|
-
}, async ({ name, session_id, role }) => {
|
|
27753
|
-
const result = registerAgent({ name, session_id, role });
|
|
27754
|
-
if (isAgentConflict(result)) {
|
|
27755
|
-
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
27756
|
-
}
|
|
27757
|
-
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
27758
|
-
});
|
|
27759
|
-
server.registerTool("list_agents", {
|
|
27760
|
-
title: "List Agents",
|
|
27761
|
-
description: "List all registered agents.",
|
|
27762
|
-
inputSchema: {}
|
|
27763
|
-
}, async () => {
|
|
27764
|
-
const agents = listAgents();
|
|
27765
|
-
return { content: [{ type: "text", text: JSON.stringify(agents, null, 2) }] };
|
|
27766
|
-
});
|
|
27767
|
-
server.registerTool("check_rate_budget", {
|
|
27768
|
-
title: "Check Rate Budget",
|
|
27769
|
-
description: "Consume one rate budget unit for an agent+connector. Returns budget status or RateExceededError.",
|
|
27770
|
-
inputSchema: {
|
|
27771
|
-
agent_id: exports_external.string(),
|
|
27772
|
-
connector: exports_external.string(),
|
|
27773
|
-
limit: exports_external.number().describe("Connector's documented rate limit (calls/min)")
|
|
27774
|
-
}
|
|
27775
|
-
}, async ({ agent_id, connector, limit }) => {
|
|
27776
|
-
const result = checkRateBudget(agent_id, connector, limit);
|
|
27777
|
-
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
27778
|
-
});
|
|
27779
|
-
server.registerTool("get_rate_budget", {
|
|
27780
|
-
title: "Get Rate Budget",
|
|
27781
|
-
description: "Peek at rate budget status without consuming a unit.",
|
|
27782
|
-
inputSchema: {
|
|
27783
|
-
agent_id: exports_external.string(),
|
|
27784
|
-
connector: exports_external.string(),
|
|
27785
|
-
limit: exports_external.number().describe("Connector's documented rate limit (calls/min)")
|
|
27786
|
-
}
|
|
27787
|
-
}, async ({ agent_id, connector, limit }) => {
|
|
27788
|
-
const result = getRateBudget(agent_id, connector, limit);
|
|
27789
|
-
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
27790
|
-
});
|
|
27791
26277
|
async function main() {
|
|
27792
26278
|
const transport = new StdioServerTransport;
|
|
27793
26279
|
await server.connect(transport);
|