@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/serve.js
CHANGED
|
@@ -1,810 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var __create = Object.create;
|
|
4
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __toESM = (mod, isNodeMode, target) => {
|
|
9
|
-
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
10
|
-
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
11
|
-
for (let key of __getOwnPropNames(mod))
|
|
12
|
-
if (!__hasOwnProp.call(to, key))
|
|
13
|
-
__defProp(to, key, {
|
|
14
|
-
get: () => mod[key],
|
|
15
|
-
enumerable: true
|
|
16
|
-
});
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __export = (target, all) => {
|
|
20
|
-
for (var name in all)
|
|
21
|
-
__defProp(target, name, {
|
|
22
|
-
get: all[name],
|
|
23
|
-
enumerable: true,
|
|
24
|
-
configurable: true,
|
|
25
|
-
set: (newValue) => all[name] = () => newValue
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
29
3
|
var __require = import.meta.require;
|
|
30
4
|
|
|
31
|
-
// src/db/database.ts
|
|
32
|
-
var exports_database = {};
|
|
33
|
-
__export(exports_database, {
|
|
34
|
-
shortUuid: () => shortUuid,
|
|
35
|
-
now: () => now,
|
|
36
|
-
getDatabase: () => getDatabase,
|
|
37
|
-
closeDatabase: () => closeDatabase
|
|
38
|
-
});
|
|
39
|
-
import { Database } from "bun:sqlite";
|
|
40
|
-
import { join } from "path";
|
|
41
|
-
import { homedir } from "os";
|
|
42
|
-
import { mkdirSync } from "fs";
|
|
43
|
-
function getDatabase(path) {
|
|
44
|
-
if (_db)
|
|
45
|
-
return _db;
|
|
46
|
-
const dbPath = path ?? DB_PATH;
|
|
47
|
-
mkdirSync(join(dbPath, ".."), { recursive: true });
|
|
48
|
-
_db = new Database(dbPath);
|
|
49
|
-
_db.run("PRAGMA journal_mode = WAL");
|
|
50
|
-
migrate(_db);
|
|
51
|
-
return _db;
|
|
52
|
-
}
|
|
53
|
-
function closeDatabase() {
|
|
54
|
-
_db?.close();
|
|
55
|
-
_db = null;
|
|
56
|
-
}
|
|
57
|
-
function now() {
|
|
58
|
-
return new Date().toISOString();
|
|
59
|
-
}
|
|
60
|
-
function shortUuid() {
|
|
61
|
-
return crypto.randomUUID().slice(0, 8);
|
|
62
|
-
}
|
|
63
|
-
function migrate(db) {
|
|
64
|
-
db.run(`
|
|
65
|
-
CREATE TABLE IF NOT EXISTS agents (
|
|
66
|
-
id TEXT PRIMARY KEY,
|
|
67
|
-
name TEXT UNIQUE NOT NULL,
|
|
68
|
-
session_id TEXT,
|
|
69
|
-
role TEXT NOT NULL DEFAULT 'agent',
|
|
70
|
-
last_seen_at TEXT NOT NULL,
|
|
71
|
-
created_at TEXT NOT NULL
|
|
72
|
-
)
|
|
73
|
-
`);
|
|
74
|
-
db.run(`
|
|
75
|
-
CREATE TABLE IF NOT EXISTS resource_locks (
|
|
76
|
-
id TEXT PRIMARY KEY,
|
|
77
|
-
resource_type TEXT NOT NULL CHECK(resource_type IN ('connector', 'agent', 'profile', 'token')),
|
|
78
|
-
resource_id TEXT NOT NULL,
|
|
79
|
-
agent_id TEXT NOT NULL,
|
|
80
|
-
lock_type TEXT NOT NULL DEFAULT 'exclusive' CHECK(lock_type IN ('advisory', 'exclusive')),
|
|
81
|
-
locked_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
82
|
-
expires_at TEXT NOT NULL
|
|
83
|
-
)
|
|
84
|
-
`);
|
|
85
|
-
db.run(`
|
|
86
|
-
CREATE UNIQUE INDEX IF NOT EXISTS idx_resource_locks_exclusive
|
|
87
|
-
ON resource_locks(resource_type, resource_id)
|
|
88
|
-
WHERE lock_type = 'exclusive'
|
|
89
|
-
`);
|
|
90
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_resource_locks_agent ON resource_locks(agent_id)`);
|
|
91
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_resource_locks_expires ON resource_locks(expires_at)`);
|
|
92
|
-
db.run(`
|
|
93
|
-
CREATE TABLE IF NOT EXISTS connector_rate_usage (
|
|
94
|
-
agent_id TEXT NOT NULL,
|
|
95
|
-
connector TEXT NOT NULL,
|
|
96
|
-
window_start TEXT NOT NULL,
|
|
97
|
-
call_count INTEGER NOT NULL DEFAULT 0,
|
|
98
|
-
PRIMARY KEY (agent_id, connector, window_start)
|
|
99
|
-
)
|
|
100
|
-
`);
|
|
101
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_rate_usage_window ON connector_rate_usage(connector, window_start)`);
|
|
102
|
-
db.run(`
|
|
103
|
-
CREATE TABLE IF NOT EXISTS connector_jobs (
|
|
104
|
-
id TEXT PRIMARY KEY,
|
|
105
|
-
name TEXT UNIQUE NOT NULL,
|
|
106
|
-
connector TEXT NOT NULL,
|
|
107
|
-
command TEXT NOT NULL,
|
|
108
|
-
args TEXT NOT NULL DEFAULT '[]',
|
|
109
|
-
cron TEXT NOT NULL,
|
|
110
|
-
enabled INTEGER NOT NULL DEFAULT 1,
|
|
111
|
-
strip INTEGER NOT NULL DEFAULT 0,
|
|
112
|
-
created_at TEXT NOT NULL,
|
|
113
|
-
last_run_at TEXT
|
|
114
|
-
)
|
|
115
|
-
`);
|
|
116
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_jobs_enabled ON connector_jobs(enabled)`);
|
|
117
|
-
db.run(`
|
|
118
|
-
CREATE TABLE IF NOT EXISTS connector_job_runs (
|
|
119
|
-
id TEXT PRIMARY KEY,
|
|
120
|
-
job_id TEXT NOT NULL REFERENCES connector_jobs(id) ON DELETE CASCADE,
|
|
121
|
-
started_at TEXT NOT NULL,
|
|
122
|
-
finished_at TEXT,
|
|
123
|
-
exit_code INTEGER,
|
|
124
|
-
raw_output TEXT,
|
|
125
|
-
stripped_output TEXT
|
|
126
|
-
)
|
|
127
|
-
`);
|
|
128
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_job_runs_job ON connector_job_runs(job_id, started_at DESC)`);
|
|
129
|
-
db.run(`
|
|
130
|
-
CREATE TABLE IF NOT EXISTS connector_workflows (
|
|
131
|
-
id TEXT PRIMARY KEY,
|
|
132
|
-
name TEXT UNIQUE NOT NULL,
|
|
133
|
-
steps TEXT NOT NULL DEFAULT '[]',
|
|
134
|
-
enabled INTEGER NOT NULL DEFAULT 1,
|
|
135
|
-
created_at TEXT NOT NULL
|
|
136
|
-
)
|
|
137
|
-
`);
|
|
138
|
-
db.run(`
|
|
139
|
-
CREATE TABLE IF NOT EXISTS connector_usage (
|
|
140
|
-
id TEXT PRIMARY KEY,
|
|
141
|
-
connector TEXT NOT NULL,
|
|
142
|
-
action TEXT NOT NULL,
|
|
143
|
-
agent_id TEXT,
|
|
144
|
-
timestamp TEXT NOT NULL
|
|
145
|
-
)
|
|
146
|
-
`);
|
|
147
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_usage_connector ON connector_usage(connector, timestamp DESC)`);
|
|
148
|
-
db.run(`
|
|
149
|
-
CREATE TABLE IF NOT EXISTS connector_promotions (
|
|
150
|
-
connector TEXT UNIQUE NOT NULL,
|
|
151
|
-
promoted_at TEXT NOT NULL
|
|
152
|
-
)
|
|
153
|
-
`);
|
|
154
|
-
}
|
|
155
|
-
var DB_DIR, DB_PATH, _db = null;
|
|
156
|
-
var init_database = __esm(() => {
|
|
157
|
-
DB_DIR = join(homedir(), ".connectors");
|
|
158
|
-
DB_PATH = join(DB_DIR, "connectors.db");
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
// src/lib/llm.ts
|
|
162
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync as mkdirSync2 } from "fs";
|
|
163
|
-
import { join as join2 } from "path";
|
|
164
|
-
import { homedir as homedir2 } from "os";
|
|
165
|
-
function getLlmConfigPath() {
|
|
166
|
-
return join2(homedir2(), ".connectors", "llm.json");
|
|
167
|
-
}
|
|
168
|
-
function getLlmConfig() {
|
|
169
|
-
const path = getLlmConfigPath();
|
|
170
|
-
if (!existsSync(path))
|
|
171
|
-
return null;
|
|
172
|
-
try {
|
|
173
|
-
return JSON.parse(readFileSync(path, "utf-8"));
|
|
174
|
-
} catch {
|
|
175
|
-
return null;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
function saveLlmConfig(config) {
|
|
179
|
-
const dir = join2(homedir2(), ".connectors");
|
|
180
|
-
mkdirSync2(dir, { recursive: true });
|
|
181
|
-
writeFileSync(getLlmConfigPath(), JSON.stringify(config, null, 2));
|
|
182
|
-
}
|
|
183
|
-
function maskKey(key) {
|
|
184
|
-
if (key.length <= 8)
|
|
185
|
-
return "***";
|
|
186
|
-
return key.slice(0, 8) + "***";
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
class LLMClient {
|
|
190
|
-
config;
|
|
191
|
-
constructor(config) {
|
|
192
|
-
this.config = config;
|
|
193
|
-
}
|
|
194
|
-
static fromConfig() {
|
|
195
|
-
const config = getLlmConfig();
|
|
196
|
-
if (!config)
|
|
197
|
-
return null;
|
|
198
|
-
return new LLMClient(config);
|
|
199
|
-
}
|
|
200
|
-
async complete(prompt, content) {
|
|
201
|
-
const start = Date.now();
|
|
202
|
-
const { provider, model, api_key } = this.config;
|
|
203
|
-
if (provider === "anthropic") {
|
|
204
|
-
return this._anthropicComplete(prompt, content, start);
|
|
205
|
-
}
|
|
206
|
-
const baseUrl = PROVIDER_BASE_URLS[provider];
|
|
207
|
-
const response = await fetch(`${baseUrl}/chat/completions`, {
|
|
208
|
-
method: "POST",
|
|
209
|
-
headers: {
|
|
210
|
-
"Content-Type": "application/json",
|
|
211
|
-
Authorization: `Bearer ${api_key}`
|
|
212
|
-
},
|
|
213
|
-
body: JSON.stringify({
|
|
214
|
-
model,
|
|
215
|
-
messages: [
|
|
216
|
-
{ role: "system", content: prompt },
|
|
217
|
-
{ role: "user", content }
|
|
218
|
-
],
|
|
219
|
-
temperature: 0,
|
|
220
|
-
max_tokens: 4096
|
|
221
|
-
})
|
|
222
|
-
});
|
|
223
|
-
if (!response.ok) {
|
|
224
|
-
const error = await response.text();
|
|
225
|
-
throw new Error(`LLM request failed (${provider} ${response.status}): ${error}`);
|
|
226
|
-
}
|
|
227
|
-
const data = await response.json();
|
|
228
|
-
return {
|
|
229
|
-
content: data.choices[0].message.content,
|
|
230
|
-
provider,
|
|
231
|
-
model,
|
|
232
|
-
latency_ms: Date.now() - start
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
async _anthropicComplete(prompt, content, start) {
|
|
236
|
-
const { model, api_key } = this.config;
|
|
237
|
-
const response = await fetch("https://api.anthropic.com/v1/messages", {
|
|
238
|
-
method: "POST",
|
|
239
|
-
headers: {
|
|
240
|
-
"Content-Type": "application/json",
|
|
241
|
-
"x-api-key": api_key,
|
|
242
|
-
"anthropic-version": "2023-06-01"
|
|
243
|
-
},
|
|
244
|
-
body: JSON.stringify({
|
|
245
|
-
model,
|
|
246
|
-
system: prompt,
|
|
247
|
-
messages: [{ role: "user", content }],
|
|
248
|
-
max_tokens: 4096
|
|
249
|
-
})
|
|
250
|
-
});
|
|
251
|
-
if (!response.ok) {
|
|
252
|
-
const error = await response.text();
|
|
253
|
-
throw new Error(`LLM request failed (anthropic ${response.status}): ${error}`);
|
|
254
|
-
}
|
|
255
|
-
const data = await response.json();
|
|
256
|
-
return {
|
|
257
|
-
content: data.content[0].text,
|
|
258
|
-
provider: "anthropic",
|
|
259
|
-
model,
|
|
260
|
-
latency_ms: Date.now() - start
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
var PROVIDER_BASE_URLS;
|
|
265
|
-
var init_llm = __esm(() => {
|
|
266
|
-
PROVIDER_BASE_URLS = {
|
|
267
|
-
cerebras: "https://api.cerebras.ai/v1",
|
|
268
|
-
groq: "https://api.groq.com/openai/v1",
|
|
269
|
-
openai: "https://api.openai.com/v1"
|
|
270
|
-
};
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
// src/lib/strip.ts
|
|
274
|
-
async function maybeStrip(output, _type = "json") {
|
|
275
|
-
const config = getLlmConfig();
|
|
276
|
-
if (!config?.strip)
|
|
277
|
-
return output;
|
|
278
|
-
if (!output || output.trim().length === 0)
|
|
279
|
-
return output;
|
|
280
|
-
const client = LLMClient.fromConfig();
|
|
281
|
-
if (!client)
|
|
282
|
-
return output;
|
|
283
|
-
try {
|
|
284
|
-
const result = await client.complete(STRIP_PROMPT, output);
|
|
285
|
-
return result.content.trim();
|
|
286
|
-
} catch {
|
|
287
|
-
return output;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
var STRIP_PROMPT = `You are a data extraction assistant. Your job is to take raw API output and return ONLY the essential, structured data.
|
|
291
|
-
|
|
292
|
-
Rules:
|
|
293
|
-
- Return valid JSON only (no markdown, no explanation)
|
|
294
|
-
- Remove pagination metadata, rate limit headers, empty fields, null values
|
|
295
|
-
- Keep all meaningful data fields
|
|
296
|
-
- If the input is already minimal, return it unchanged
|
|
297
|
-
- If input is not JSON, extract key facts as a JSON object
|
|
298
|
-
- Never truncate actual data values`;
|
|
299
|
-
var init_strip = __esm(() => {
|
|
300
|
-
init_llm();
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
// src/db/jobs.ts
|
|
304
|
-
function rowToJob(row) {
|
|
305
|
-
return {
|
|
306
|
-
...row,
|
|
307
|
-
args: JSON.parse(row.args || "[]"),
|
|
308
|
-
enabled: row.enabled === 1,
|
|
309
|
-
strip: row.strip === 1
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
function createJob(input, db) {
|
|
313
|
-
const d = db ?? getDatabase();
|
|
314
|
-
const id = shortUuid();
|
|
315
|
-
const ts = now();
|
|
316
|
-
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]);
|
|
317
|
-
return getJob(id, d);
|
|
318
|
-
}
|
|
319
|
-
function getJob(id, db) {
|
|
320
|
-
const d = db ?? getDatabase();
|
|
321
|
-
const row = d.query("SELECT * FROM connector_jobs WHERE id = ?").get(id);
|
|
322
|
-
return row ? rowToJob(row) : null;
|
|
323
|
-
}
|
|
324
|
-
function getJobByName(name, db) {
|
|
325
|
-
const d = db ?? getDatabase();
|
|
326
|
-
const row = d.query("SELECT * FROM connector_jobs WHERE name = ?").get(name);
|
|
327
|
-
return row ? rowToJob(row) : null;
|
|
328
|
-
}
|
|
329
|
-
function listJobs(db) {
|
|
330
|
-
const d = db ?? getDatabase();
|
|
331
|
-
return d.query("SELECT * FROM connector_jobs ORDER BY name").all().map(rowToJob);
|
|
332
|
-
}
|
|
333
|
-
function listEnabledJobs(db) {
|
|
334
|
-
const d = db ?? getDatabase();
|
|
335
|
-
return d.query("SELECT * FROM connector_jobs WHERE enabled = 1").all().map(rowToJob);
|
|
336
|
-
}
|
|
337
|
-
function updateJob(id, input, db) {
|
|
338
|
-
const d = db ?? getDatabase();
|
|
339
|
-
const sets = [];
|
|
340
|
-
const params = [];
|
|
341
|
-
if (input.name !== undefined) {
|
|
342
|
-
sets.push("name = ?");
|
|
343
|
-
params.push(input.name);
|
|
344
|
-
}
|
|
345
|
-
if (input.connector !== undefined) {
|
|
346
|
-
sets.push("connector = ?");
|
|
347
|
-
params.push(input.connector);
|
|
348
|
-
}
|
|
349
|
-
if (input.command !== undefined) {
|
|
350
|
-
sets.push("command = ?");
|
|
351
|
-
params.push(input.command);
|
|
352
|
-
}
|
|
353
|
-
if (input.args !== undefined) {
|
|
354
|
-
sets.push("args = ?");
|
|
355
|
-
params.push(JSON.stringify(input.args));
|
|
356
|
-
}
|
|
357
|
-
if (input.cron !== undefined) {
|
|
358
|
-
sets.push("cron = ?");
|
|
359
|
-
params.push(input.cron);
|
|
360
|
-
}
|
|
361
|
-
if (input.enabled !== undefined) {
|
|
362
|
-
sets.push("enabled = ?");
|
|
363
|
-
params.push(input.enabled ? 1 : 0);
|
|
364
|
-
}
|
|
365
|
-
if (input.strip !== undefined) {
|
|
366
|
-
sets.push("strip = ?");
|
|
367
|
-
params.push(input.strip ? 1 : 0);
|
|
368
|
-
}
|
|
369
|
-
if (sets.length === 0)
|
|
370
|
-
return getJob(id, d);
|
|
371
|
-
params.push(id);
|
|
372
|
-
d.run(`UPDATE connector_jobs SET ${sets.join(", ")} WHERE id = ?`, params);
|
|
373
|
-
return getJob(id, d);
|
|
374
|
-
}
|
|
375
|
-
function deleteJob(id, db) {
|
|
376
|
-
const d = db ?? getDatabase();
|
|
377
|
-
return d.run("DELETE FROM connector_jobs WHERE id = ?", [id]).changes > 0;
|
|
378
|
-
}
|
|
379
|
-
function touchJobLastRun(id, db) {
|
|
380
|
-
const d = db ?? getDatabase();
|
|
381
|
-
d.run("UPDATE connector_jobs SET last_run_at = ? WHERE id = ?", [now(), id]);
|
|
382
|
-
}
|
|
383
|
-
function createJobRun(jobId, db) {
|
|
384
|
-
const d = db ?? getDatabase();
|
|
385
|
-
const id = shortUuid();
|
|
386
|
-
const ts = now();
|
|
387
|
-
d.run("INSERT INTO connector_job_runs (id, job_id, started_at) VALUES (?, ?, ?)", [id, jobId, ts]);
|
|
388
|
-
return { id, job_id: jobId, started_at: ts, finished_at: null, exit_code: null, raw_output: null, stripped_output: null };
|
|
389
|
-
}
|
|
390
|
-
function finishJobRun(id, result, db) {
|
|
391
|
-
const d = db ?? getDatabase();
|
|
392
|
-
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]);
|
|
393
|
-
}
|
|
394
|
-
function listJobRuns(jobId, limit = 20, db) {
|
|
395
|
-
const d = db ?? getDatabase();
|
|
396
|
-
return d.query("SELECT * FROM connector_job_runs WHERE job_id = ? ORDER BY started_at DESC LIMIT ?").all(jobId, limit);
|
|
397
|
-
}
|
|
398
|
-
var init_jobs = __esm(() => {
|
|
399
|
-
init_database();
|
|
400
|
-
});
|
|
401
|
-
|
|
402
|
-
// src/lib/scheduler.ts
|
|
403
|
-
var exports_scheduler = {};
|
|
404
|
-
__export(exports_scheduler, {
|
|
405
|
-
triggerJob: () => triggerJob,
|
|
406
|
-
stopScheduler: () => stopScheduler,
|
|
407
|
-
startScheduler: () => startScheduler
|
|
408
|
-
});
|
|
409
|
-
import { spawn } from "child_process";
|
|
410
|
-
function cronMatches(cron, d) {
|
|
411
|
-
const parts = cron.trim().split(/\s+/);
|
|
412
|
-
if (parts.length !== 5)
|
|
413
|
-
return false;
|
|
414
|
-
const [min, hour, dom, mon, dow] = parts;
|
|
415
|
-
function matches(field, value, min_v, max_v) {
|
|
416
|
-
if (field === "*")
|
|
417
|
-
return true;
|
|
418
|
-
if (field.startsWith("*/")) {
|
|
419
|
-
const step = parseInt(field.slice(2));
|
|
420
|
-
return value % step === 0;
|
|
421
|
-
}
|
|
422
|
-
if (field.includes("-")) {
|
|
423
|
-
const [a, b] = field.split("-").map(Number);
|
|
424
|
-
return value >= a && value <= b;
|
|
425
|
-
}
|
|
426
|
-
if (field.includes(",")) {
|
|
427
|
-
return field.split(",").map(Number).includes(value);
|
|
428
|
-
}
|
|
429
|
-
return parseInt(field) === value;
|
|
430
|
-
}
|
|
431
|
-
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);
|
|
432
|
-
}
|
|
433
|
-
async function runConnectorCommand(connector, command, args) {
|
|
434
|
-
return new Promise((resolve) => {
|
|
435
|
-
const cmdArgs = [connector, command, ...args, "--format", "json"];
|
|
436
|
-
const proc = spawn("connectors", ["run", ...cmdArgs], { shell: false });
|
|
437
|
-
let output = "";
|
|
438
|
-
proc.stdout.on("data", (d) => {
|
|
439
|
-
output += d.toString();
|
|
440
|
-
});
|
|
441
|
-
proc.stderr.on("data", (d) => {
|
|
442
|
-
output += d.toString();
|
|
443
|
-
});
|
|
444
|
-
proc.on("close", (code) => resolve({ exitCode: code ?? 1, output }));
|
|
445
|
-
proc.on("error", () => resolve({ exitCode: 1, output: `Failed to spawn connectors run` }));
|
|
446
|
-
setTimeout(() => {
|
|
447
|
-
proc.kill();
|
|
448
|
-
resolve({ exitCode: 124, output: output + `
|
|
449
|
-
[timeout]` });
|
|
450
|
-
}, 60000);
|
|
451
|
-
});
|
|
452
|
-
}
|
|
453
|
-
async function executeJob(job, db) {
|
|
454
|
-
const run = createJobRun(job.id, db);
|
|
455
|
-
try {
|
|
456
|
-
const { exitCode, output } = await runConnectorCommand(job.connector, job.command, job.args);
|
|
457
|
-
const stripped = job.strip ? await maybeStrip(output) : undefined;
|
|
458
|
-
finishJobRun(run.id, { exit_code: exitCode, raw_output: output, stripped_output: stripped }, db);
|
|
459
|
-
touchJobLastRun(job.id, db);
|
|
460
|
-
} catch (e) {
|
|
461
|
-
finishJobRun(run.id, { exit_code: 1, raw_output: String(e) }, db);
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
function startScheduler(db) {
|
|
465
|
-
if (_interval)
|
|
466
|
-
return;
|
|
467
|
-
_interval = setInterval(async () => {
|
|
468
|
-
const now3 = new Date;
|
|
469
|
-
const currentMinute = now3.getMinutes() + now3.getHours() * 60;
|
|
470
|
-
if (currentMinute === _lastCheckedMinute)
|
|
471
|
-
return;
|
|
472
|
-
_lastCheckedMinute = currentMinute;
|
|
473
|
-
const jobs = listEnabledJobs(db);
|
|
474
|
-
for (const job of jobs) {
|
|
475
|
-
if (cronMatches(job.cron, now3)) {
|
|
476
|
-
executeJob(job, db).catch(() => {});
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
}, 30000);
|
|
480
|
-
}
|
|
481
|
-
function stopScheduler() {
|
|
482
|
-
if (_interval) {
|
|
483
|
-
clearInterval(_interval);
|
|
484
|
-
_interval = null;
|
|
485
|
-
_lastCheckedMinute = -1;
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
async function triggerJob(job, db) {
|
|
489
|
-
const run = createJobRun(job.id, db);
|
|
490
|
-
const { exitCode, output } = await runConnectorCommand(job.connector, job.command, job.args);
|
|
491
|
-
const stripped = job.strip ? await maybeStrip(output) : undefined;
|
|
492
|
-
finishJobRun(run.id, { exit_code: exitCode, raw_output: output, stripped_output: stripped }, db);
|
|
493
|
-
touchJobLastRun(job.id, db);
|
|
494
|
-
return { run_id: run.id, exit_code: exitCode, output: stripped ?? output };
|
|
495
|
-
}
|
|
496
|
-
var _interval = null, _lastCheckedMinute = -1;
|
|
497
|
-
var init_scheduler = __esm(() => {
|
|
498
|
-
init_jobs();
|
|
499
|
-
init_strip();
|
|
500
|
-
});
|
|
501
|
-
|
|
502
|
-
// src/db/usage.ts
|
|
503
|
-
var exports_usage = {};
|
|
504
|
-
__export(exports_usage, {
|
|
505
|
-
logUsage: () => logUsage,
|
|
506
|
-
getUsageStats: () => getUsageStats,
|
|
507
|
-
getUsageMap: () => getUsageMap,
|
|
508
|
-
getTopConnectors: () => getTopConnectors,
|
|
509
|
-
cleanOldUsage: () => cleanOldUsage
|
|
510
|
-
});
|
|
511
|
-
function logUsage(connector, action, agentId, db) {
|
|
512
|
-
const d = db ?? getDatabase();
|
|
513
|
-
d.run("INSERT INTO connector_usage (id, connector, action, agent_id, timestamp) VALUES (?, ?, ?, ?, ?)", [shortUuid(), connector, action, agentId ?? null, now()]);
|
|
514
|
-
}
|
|
515
|
-
function getUsageStats(connector, db) {
|
|
516
|
-
const d = db ?? getDatabase();
|
|
517
|
-
const total = d.query("SELECT COUNT(*) as c FROM connector_usage WHERE connector = ?").get(connector).c;
|
|
518
|
-
const d7 = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
|
|
519
|
-
const last7d = d.query("SELECT COUNT(*) as c FROM connector_usage WHERE connector = ? AND timestamp > ?").get(connector, d7).c;
|
|
520
|
-
const d1 = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
|
|
521
|
-
const last24h = d.query("SELECT COUNT(*) as c FROM connector_usage WHERE connector = ? AND timestamp > ?").get(connector, d1).c;
|
|
522
|
-
return { connector, total, last7d, last24h };
|
|
523
|
-
}
|
|
524
|
-
function getTopConnectors(limit = 10, days = 7, db) {
|
|
525
|
-
const d = db ?? getDatabase();
|
|
526
|
-
const since = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
|
|
527
|
-
return d.query("SELECT connector, COUNT(*) as count FROM connector_usage WHERE timestamp > ? GROUP BY connector ORDER BY count DESC LIMIT ?").all(since, limit);
|
|
528
|
-
}
|
|
529
|
-
function getUsageMap(days = 7, db) {
|
|
530
|
-
const top = getTopConnectors(100, days, db);
|
|
531
|
-
return new Map(top.map((t) => [t.connector, t.count]));
|
|
532
|
-
}
|
|
533
|
-
function cleanOldUsage(days = 30, db) {
|
|
534
|
-
const d = db ?? getDatabase();
|
|
535
|
-
const cutoff = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
|
|
536
|
-
return d.run("DELETE FROM connector_usage WHERE timestamp < ?", [cutoff]).changes;
|
|
537
|
-
}
|
|
538
|
-
var init_usage = __esm(() => {
|
|
539
|
-
init_database();
|
|
540
|
-
});
|
|
541
|
-
|
|
542
|
-
// src/db/promotions.ts
|
|
543
|
-
var exports_promotions = {};
|
|
544
|
-
__export(exports_promotions, {
|
|
545
|
-
promoteConnector: () => promoteConnector,
|
|
546
|
-
isPromoted: () => isPromoted,
|
|
547
|
-
getPromotedConnectors: () => getPromotedConnectors,
|
|
548
|
-
demoteConnector: () => demoteConnector
|
|
549
|
-
});
|
|
550
|
-
function promoteConnector(name, db) {
|
|
551
|
-
const d = db ?? getDatabase();
|
|
552
|
-
d.run("INSERT OR REPLACE INTO connector_promotions (connector, promoted_at) VALUES (?, ?)", [name, now()]);
|
|
553
|
-
}
|
|
554
|
-
function demoteConnector(name, db) {
|
|
555
|
-
const d = db ?? getDatabase();
|
|
556
|
-
return d.run("DELETE FROM connector_promotions WHERE connector = ?", [name]).changes > 0;
|
|
557
|
-
}
|
|
558
|
-
function getPromotedConnectors(db) {
|
|
559
|
-
const d = db ?? getDatabase();
|
|
560
|
-
return d.query("SELECT connector FROM connector_promotions ORDER BY promoted_at DESC").all().map((r) => r.connector);
|
|
561
|
-
}
|
|
562
|
-
function isPromoted(name, db) {
|
|
563
|
-
const d = db ?? getDatabase();
|
|
564
|
-
const row = d.query("SELECT 1 FROM connector_promotions WHERE connector = ?").get(name);
|
|
565
|
-
return !!row;
|
|
566
|
-
}
|
|
567
|
-
var init_promotions = __esm(() => {
|
|
568
|
-
init_database();
|
|
569
|
-
});
|
|
570
|
-
|
|
571
|
-
// src/server/serve.ts
|
|
572
|
-
import { existsSync as existsSync6, readdirSync as readdirSync3, readFileSync as readFileSync5, writeFileSync as writeFileSync4, mkdirSync as mkdirSync6 } from "fs";
|
|
573
|
-
|
|
574
|
-
// src/db/agents.ts
|
|
575
|
-
init_database();
|
|
576
|
-
var AGENT_ACTIVE_WINDOW_MS = 30 * 60 * 1000;
|
|
577
|
-
function shortUuid2() {
|
|
578
|
-
return crypto.randomUUID().slice(0, 8);
|
|
579
|
-
}
|
|
580
|
-
function isAgentConflict(result) {
|
|
581
|
-
return result.conflict === true;
|
|
582
|
-
}
|
|
583
|
-
function registerAgent(input, db) {
|
|
584
|
-
const d = db ?? getDatabase();
|
|
585
|
-
const normalizedName = input.name.trim().toLowerCase();
|
|
586
|
-
const existing = getAgentByName(normalizedName, d);
|
|
587
|
-
if (existing) {
|
|
588
|
-
const lastSeenMs = new Date(existing.last_seen_at).getTime();
|
|
589
|
-
const isActive = Date.now() - lastSeenMs < AGENT_ACTIVE_WINDOW_MS;
|
|
590
|
-
const sameSession = input.session_id && existing.session_id && input.session_id === existing.session_id;
|
|
591
|
-
const differentSession = input.session_id && existing.session_id && input.session_id !== existing.session_id;
|
|
592
|
-
if (isActive && differentSession) {
|
|
593
|
-
const minutesAgo = Math.round((Date.now() - lastSeenMs) / 60000);
|
|
594
|
-
return {
|
|
595
|
-
conflict: true,
|
|
596
|
-
existing_id: existing.id,
|
|
597
|
-
existing_name: existing.name,
|
|
598
|
-
last_seen_at: existing.last_seen_at,
|
|
599
|
-
session_hint: existing.session_id ? existing.session_id.slice(0, 8) : null,
|
|
600
|
-
working_dir: null,
|
|
601
|
-
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.`
|
|
602
|
-
};
|
|
603
|
-
}
|
|
604
|
-
const updates = ["last_seen_at = ?"];
|
|
605
|
-
const params = [now()];
|
|
606
|
-
if (input.session_id && !sameSession) {
|
|
607
|
-
updates.push("session_id = ?");
|
|
608
|
-
params.push(input.session_id);
|
|
609
|
-
}
|
|
610
|
-
params.push(existing.id);
|
|
611
|
-
d.run(`UPDATE agents SET ${updates.join(", ")} WHERE id = ?`, params);
|
|
612
|
-
return getAgent(existing.id, d);
|
|
613
|
-
}
|
|
614
|
-
const id = shortUuid2();
|
|
615
|
-
const ts = now();
|
|
616
|
-
d.run(`INSERT INTO agents (id, name, session_id, role, last_seen_at, created_at)
|
|
617
|
-
VALUES (?, ?, ?, ?, ?, ?)`, [id, normalizedName, input.session_id ?? null, input.role ?? "agent", ts, ts]);
|
|
618
|
-
return getAgent(id, d);
|
|
619
|
-
}
|
|
620
|
-
function getAgent(id, db) {
|
|
621
|
-
const d = db ?? getDatabase();
|
|
622
|
-
return d.query("SELECT * FROM agents WHERE id = ?").get(id);
|
|
623
|
-
}
|
|
624
|
-
function getAgentByName(name, db) {
|
|
625
|
-
const d = db ?? getDatabase();
|
|
626
|
-
return d.query("SELECT * FROM agents WHERE LOWER(name) = ?").get(name.trim().toLowerCase());
|
|
627
|
-
}
|
|
628
|
-
function listAgents(db) {
|
|
629
|
-
const d = db ?? getDatabase();
|
|
630
|
-
return d.query("SELECT * FROM agents ORDER BY name").all();
|
|
631
|
-
}
|
|
632
|
-
function deleteAgent(id, db) {
|
|
633
|
-
const d = db ?? getDatabase();
|
|
634
|
-
return d.run("DELETE FROM agents WHERE id = ?", [id]).changes > 0;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
// src/db/rate.ts
|
|
638
|
-
init_database();
|
|
639
|
-
var AGENT_ACTIVE_WINDOW_MS2 = 30 * 60 * 1000;
|
|
640
|
-
var WINDOW_SECONDS = 60;
|
|
641
|
-
function ensureRateTable(db) {
|
|
642
|
-
db.run(`
|
|
643
|
-
CREATE TABLE IF NOT EXISTS connector_rate_usage (
|
|
644
|
-
agent_id TEXT NOT NULL,
|
|
645
|
-
connector TEXT NOT NULL,
|
|
646
|
-
window_start TEXT NOT NULL,
|
|
647
|
-
call_count INTEGER NOT NULL DEFAULT 0,
|
|
648
|
-
PRIMARY KEY (agent_id, connector, window_start)
|
|
649
|
-
)
|
|
650
|
-
`);
|
|
651
|
-
db.run(`CREATE INDEX IF NOT EXISTS idx_rate_usage_window ON connector_rate_usage(connector, window_start)`);
|
|
652
|
-
}
|
|
653
|
-
function countActiveAgents(db) {
|
|
654
|
-
const cutoff = new Date(Date.now() - AGENT_ACTIVE_WINDOW_MS2).toISOString();
|
|
655
|
-
const row = db.query("SELECT COUNT(*) as count FROM agents WHERE last_seen_at > ?").get(cutoff);
|
|
656
|
-
return Math.max(1, row?.count ?? 1);
|
|
657
|
-
}
|
|
658
|
-
function currentWindowStart() {
|
|
659
|
-
const now3 = Date.now();
|
|
660
|
-
const windowMs = WINDOW_SECONDS * 1000;
|
|
661
|
-
return new Date(Math.floor(now3 / windowMs) * windowMs).toISOString();
|
|
662
|
-
}
|
|
663
|
-
function checkRateBudget(agentId, connector, connectorLimit, consume = true, db) {
|
|
664
|
-
const d = db ?? getDatabase();
|
|
665
|
-
ensureRateTable(d);
|
|
666
|
-
const activeAgents = countActiveAgents(d);
|
|
667
|
-
const budget = Math.max(1, Math.floor(connectorLimit / activeAgents));
|
|
668
|
-
const windowStart = currentWindowStart();
|
|
669
|
-
const windowMs = WINDOW_SECONDS * 1000;
|
|
670
|
-
const windowEnd = new Date(Math.floor(Date.now() / windowMs) * windowMs + windowMs);
|
|
671
|
-
const windowResetsIn = windowEnd.getTime() - Date.now();
|
|
672
|
-
const row = d.query("SELECT call_count FROM connector_rate_usage WHERE agent_id = ? AND connector = ? AND window_start = ?").get(agentId, connector, windowStart);
|
|
673
|
-
const used = row?.call_count ?? 0;
|
|
674
|
-
if (used >= budget) {
|
|
675
|
-
return {
|
|
676
|
-
exceeded: true,
|
|
677
|
-
connector,
|
|
678
|
-
agent_id: agentId,
|
|
679
|
-
budget,
|
|
680
|
-
used,
|
|
681
|
-
active_agents: activeAgents,
|
|
682
|
-
window_resets_in_ms: windowResetsIn,
|
|
683
|
-
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.`
|
|
684
|
-
};
|
|
685
|
-
}
|
|
686
|
-
if (consume) {
|
|
687
|
-
d.run(`INSERT INTO connector_rate_usage (agent_id, connector, window_start, call_count)
|
|
688
|
-
VALUES (?, ?, ?, 1)
|
|
689
|
-
ON CONFLICT(agent_id, connector, window_start) DO UPDATE SET call_count = call_count + 1`, [agentId, connector, windowStart]);
|
|
690
|
-
}
|
|
691
|
-
return {
|
|
692
|
-
connector,
|
|
693
|
-
agent_id: agentId,
|
|
694
|
-
limit: connectorLimit,
|
|
695
|
-
active_agents: activeAgents,
|
|
696
|
-
budget,
|
|
697
|
-
used: consume ? used + 1 : used,
|
|
698
|
-
remaining: consume ? budget - used - 1 : budget - used,
|
|
699
|
-
window_start: windowStart,
|
|
700
|
-
window_resets_in_ms: windowResetsIn
|
|
701
|
-
};
|
|
702
|
-
}
|
|
703
|
-
function getRateBudget(agentId, connector, connectorLimit, db) {
|
|
704
|
-
return checkRateBudget(agentId, connector, connectorLimit, false, db);
|
|
705
|
-
}
|
|
706
|
-
|
|
707
5
|
// src/server/serve.ts
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
init_jobs();
|
|
711
|
-
|
|
712
|
-
// src/db/workflows.ts
|
|
713
|
-
init_database();
|
|
714
|
-
function rowToWorkflow(row) {
|
|
715
|
-
return {
|
|
716
|
-
...row,
|
|
717
|
-
steps: JSON.parse(row.steps || "[]"),
|
|
718
|
-
enabled: row.enabled === 1
|
|
719
|
-
};
|
|
720
|
-
}
|
|
721
|
-
function createWorkflow(input, db) {
|
|
722
|
-
const d = db ?? getDatabase();
|
|
723
|
-
const id = shortUuid();
|
|
724
|
-
d.run("INSERT INTO connector_workflows (id, name, steps, enabled, created_at) VALUES (?, ?, ?, 1, ?)", [id, input.name, JSON.stringify(input.steps), now()]);
|
|
725
|
-
return getWorkflow(id, d);
|
|
726
|
-
}
|
|
727
|
-
function getWorkflow(id, db) {
|
|
728
|
-
const d = db ?? getDatabase();
|
|
729
|
-
const row = d.query("SELECT * FROM connector_workflows WHERE id = ?").get(id);
|
|
730
|
-
return row ? rowToWorkflow(row) : null;
|
|
731
|
-
}
|
|
732
|
-
function getWorkflowByName(name, db) {
|
|
733
|
-
const d = db ?? getDatabase();
|
|
734
|
-
const row = d.query("SELECT * FROM connector_workflows WHERE name = ?").get(name);
|
|
735
|
-
return row ? rowToWorkflow(row) : null;
|
|
736
|
-
}
|
|
737
|
-
function listWorkflows(db) {
|
|
738
|
-
const d = db ?? getDatabase();
|
|
739
|
-
return d.query("SELECT * FROM connector_workflows ORDER BY name").all().map(rowToWorkflow);
|
|
740
|
-
}
|
|
741
|
-
function deleteWorkflow(id, db) {
|
|
742
|
-
const d = db ?? getDatabase();
|
|
743
|
-
return d.run("DELETE FROM connector_workflows WHERE id = ?", [id]).changes > 0;
|
|
744
|
-
}
|
|
745
|
-
|
|
746
|
-
// src/server/serve.ts
|
|
747
|
-
init_scheduler();
|
|
748
|
-
|
|
749
|
-
// src/lib/workflow-runner.ts
|
|
750
|
-
init_strip();
|
|
751
|
-
import { spawn as spawn2 } from "child_process";
|
|
752
|
-
async function runStep(step, previousOutput) {
|
|
753
|
-
return new Promise((resolve) => {
|
|
754
|
-
const args = [...step.args ?? []];
|
|
755
|
-
if (previousOutput && previousOutput.trim()) {
|
|
756
|
-
args.push("--input", previousOutput.trim().slice(0, 4096));
|
|
757
|
-
}
|
|
758
|
-
const cmdArgs = ["run", step.connector, step.command, ...args, "--format", "json"];
|
|
759
|
-
const proc = spawn2("connectors", cmdArgs, { shell: false });
|
|
760
|
-
let output = "";
|
|
761
|
-
proc.stdout.on("data", (d) => {
|
|
762
|
-
output += d.toString();
|
|
763
|
-
});
|
|
764
|
-
proc.stderr.on("data", (d) => {
|
|
765
|
-
output += d.toString();
|
|
766
|
-
});
|
|
767
|
-
proc.on("close", (code) => resolve({ exitCode: code ?? 1, output }));
|
|
768
|
-
proc.on("error", () => resolve({ exitCode: 1, output: "Failed to spawn connectors" }));
|
|
769
|
-
setTimeout(() => {
|
|
770
|
-
proc.kill();
|
|
771
|
-
resolve({ exitCode: 124, output: output + `
|
|
772
|
-
[timeout]` });
|
|
773
|
-
}, 60000);
|
|
774
|
-
});
|
|
775
|
-
}
|
|
776
|
-
async function runWorkflow(workflow) {
|
|
777
|
-
const results = [];
|
|
778
|
-
let previousOutput;
|
|
779
|
-
let success = true;
|
|
780
|
-
for (let i = 0;i < workflow.steps.length; i++) {
|
|
781
|
-
const step = workflow.steps[i];
|
|
782
|
-
const { exitCode, output } = await runStep(step, previousOutput);
|
|
783
|
-
const stripped = await maybeStrip(output);
|
|
784
|
-
results.push({ step: i + 1, connector: step.connector, command: step.command, exit_code: exitCode, output: stripped });
|
|
785
|
-
if (exitCode !== 0) {
|
|
786
|
-
success = false;
|
|
787
|
-
break;
|
|
788
|
-
}
|
|
789
|
-
previousOutput = stripped;
|
|
790
|
-
}
|
|
791
|
-
return {
|
|
792
|
-
workflow_id: workflow.id,
|
|
793
|
-
workflow_name: workflow.name,
|
|
794
|
-
steps: results,
|
|
795
|
-
success,
|
|
796
|
-
final_output: results[results.length - 1]?.output ?? ""
|
|
797
|
-
};
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
// src/server/serve.ts
|
|
801
|
-
import { join as join7, dirname as dirname3, extname, basename } from "path";
|
|
6
|
+
import { existsSync as existsSync4, readdirSync as readdirSync3, readFileSync as readFileSync4, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "fs";
|
|
7
|
+
import { join as join4, dirname as dirname3, extname, basename } from "path";
|
|
802
8
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
803
|
-
import { homedir as
|
|
9
|
+
import { homedir as homedir2 } from "os";
|
|
804
10
|
|
|
805
11
|
// src/lib/registry.ts
|
|
806
|
-
import { existsSync
|
|
807
|
-
import { join
|
|
12
|
+
import { existsSync, readFileSync } from "fs";
|
|
13
|
+
import { join, dirname } from "path";
|
|
808
14
|
import { fileURLToPath } from "url";
|
|
809
15
|
var CONNECTORS = [
|
|
810
16
|
{
|
|
@@ -5672,6 +4878,13 @@ var CONNECTORS = [
|
|
|
5672
4878
|
category: "Business Tools",
|
|
5673
4879
|
tags: ["e-signature", "contracts", "digital", "documents", "legal"]
|
|
5674
4880
|
},
|
|
4881
|
+
{
|
|
4882
|
+
name: "yousign",
|
|
4883
|
+
displayName: "Yousign",
|
|
4884
|
+
description: "eIDAS-compliant electronic signature API for EU workflows",
|
|
4885
|
+
category: "Business Tools",
|
|
4886
|
+
tags: ["e-signature", "eidas", "contracts", "documents", "legal", "eu"]
|
|
4887
|
+
},
|
|
5675
4888
|
{
|
|
5676
4889
|
name: "signl4",
|
|
5677
4890
|
displayName: "SIGNL4",
|
|
@@ -6712,17 +5925,17 @@ function loadConnectorVersions() {
|
|
|
6712
5925
|
versionsLoaded = true;
|
|
6713
5926
|
const thisDir = dirname(fileURLToPath(import.meta.url));
|
|
6714
5927
|
const candidates = [
|
|
6715
|
-
|
|
6716
|
-
|
|
5928
|
+
join(thisDir, "..", "connectors"),
|
|
5929
|
+
join(thisDir, "..", "..", "connectors")
|
|
6717
5930
|
];
|
|
6718
|
-
const connectorsDir = candidates.find((d) =>
|
|
5931
|
+
const connectorsDir = candidates.find((d) => existsSync(d));
|
|
6719
5932
|
if (!connectorsDir)
|
|
6720
5933
|
return;
|
|
6721
5934
|
for (const connector of CONNECTORS) {
|
|
6722
5935
|
try {
|
|
6723
|
-
const pkgPath =
|
|
6724
|
-
if (
|
|
6725
|
-
const pkg = JSON.parse(
|
|
5936
|
+
const pkgPath = join(connectorsDir, `connect-${connector.name}`, "package.json");
|
|
5937
|
+
if (existsSync(pkgPath)) {
|
|
5938
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
6726
5939
|
connector.version = pkg.version || "0.0.0";
|
|
6727
5940
|
}
|
|
6728
5941
|
} catch {}
|
|
@@ -6730,27 +5943,25 @@ function loadConnectorVersions() {
|
|
|
6730
5943
|
}
|
|
6731
5944
|
|
|
6732
5945
|
// src/lib/installer.ts
|
|
6733
|
-
import { existsSync as
|
|
6734
|
-
import {
|
|
6735
|
-
import { join as join4, dirname as dirname2 } from "path";
|
|
5946
|
+
import { existsSync as existsSync2, readFileSync as readFileSync2, readdirSync, statSync } from "fs";
|
|
5947
|
+
import { join as join2, dirname as dirname2 } from "path";
|
|
6736
5948
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
6737
5949
|
var __dirname2 = dirname2(fileURLToPath2(import.meta.url));
|
|
6738
5950
|
function resolveConnectorsDir() {
|
|
6739
|
-
const fromBin =
|
|
6740
|
-
if (
|
|
5951
|
+
const fromBin = join2(__dirname2, "..", "connectors");
|
|
5952
|
+
if (existsSync2(fromBin))
|
|
6741
5953
|
return fromBin;
|
|
6742
|
-
const fromSrc =
|
|
6743
|
-
if (
|
|
5954
|
+
const fromSrc = join2(__dirname2, "..", "..", "connectors");
|
|
5955
|
+
if (existsSync2(fromSrc))
|
|
6744
5956
|
return fromSrc;
|
|
6745
5957
|
return fromBin;
|
|
6746
5958
|
}
|
|
6747
5959
|
var CONNECTORS_DIR = resolveConnectorsDir();
|
|
6748
5960
|
function getConnectorPath(name) {
|
|
6749
5961
|
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
6750
|
-
return
|
|
5962
|
+
return join2(CONNECTORS_DIR, connectorName);
|
|
6751
5963
|
}
|
|
6752
5964
|
function installConnector(name, options = {}) {
|
|
6753
|
-
const { targetDir = process.cwd(), overwrite = false } = options;
|
|
6754
5965
|
if (!/^[a-z0-9-]+$/.test(name)) {
|
|
6755
5966
|
return {
|
|
6756
5967
|
connector: name,
|
|
@@ -6758,91 +5969,35 @@ function installConnector(name, options = {}) {
|
|
|
6758
5969
|
error: `Invalid connector name '${name}'`
|
|
6759
5970
|
};
|
|
6760
5971
|
}
|
|
6761
|
-
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
6762
5972
|
const sourcePath = getConnectorPath(name);
|
|
6763
|
-
|
|
6764
|
-
const destPath = join4(destDir, connectorName);
|
|
6765
|
-
if (!existsSync3(sourcePath)) {
|
|
5973
|
+
if (!existsSync2(sourcePath)) {
|
|
6766
5974
|
return {
|
|
6767
5975
|
connector: name,
|
|
6768
5976
|
success: false,
|
|
6769
5977
|
error: `Connector '${name}' not found`
|
|
6770
5978
|
};
|
|
6771
5979
|
}
|
|
6772
|
-
|
|
6773
|
-
|
|
6774
|
-
|
|
6775
|
-
|
|
6776
|
-
|
|
6777
|
-
path: destPath
|
|
6778
|
-
};
|
|
6779
|
-
}
|
|
6780
|
-
try {
|
|
6781
|
-
if (!existsSync3(destDir)) {
|
|
6782
|
-
mkdirSync3(destDir, { recursive: true });
|
|
6783
|
-
}
|
|
6784
|
-
cpSync(sourcePath, destPath, { recursive: true });
|
|
6785
|
-
const homeCredDir = join4(homedir3(), ".connectors", connectorName);
|
|
6786
|
-
if (existsSync3(homeCredDir)) {
|
|
6787
|
-
const filesToCopy = ["credentials.json", "current_profile"];
|
|
6788
|
-
for (const file of filesToCopy) {
|
|
6789
|
-
const src = join4(homeCredDir, file);
|
|
6790
|
-
if (existsSync3(src)) {
|
|
6791
|
-
cpSync(src, join4(destPath, file));
|
|
6792
|
-
}
|
|
6793
|
-
}
|
|
6794
|
-
const profilesDir = join4(homeCredDir, "profiles");
|
|
6795
|
-
if (existsSync3(profilesDir)) {
|
|
6796
|
-
cpSync(profilesDir, join4(destPath, "profiles"), { recursive: true });
|
|
6797
|
-
}
|
|
6798
|
-
}
|
|
6799
|
-
updateConnectorsIndex(destDir);
|
|
6800
|
-
return {
|
|
6801
|
-
connector: name,
|
|
6802
|
-
success: true,
|
|
6803
|
-
path: destPath
|
|
6804
|
-
};
|
|
6805
|
-
} catch (error) {
|
|
6806
|
-
return {
|
|
6807
|
-
connector: name,
|
|
6808
|
-
success: false,
|
|
6809
|
-
error: error instanceof Error ? error.message : "Unknown error"
|
|
6810
|
-
};
|
|
6811
|
-
}
|
|
6812
|
-
}
|
|
6813
|
-
function updateConnectorsIndex(connectorsDir) {
|
|
6814
|
-
const indexPath = join4(connectorsDir, "index.ts");
|
|
6815
|
-
const connectors = readdirSync(connectorsDir).filter((f) => f.startsWith("connect-") && !f.includes("."));
|
|
6816
|
-
const exports = connectors.map((c) => {
|
|
6817
|
-
const name = c.replace("connect-", "");
|
|
6818
|
-
return `export * as ${name} from './${c}/src/index.js';`;
|
|
6819
|
-
}).join(`
|
|
6820
|
-
`);
|
|
6821
|
-
const content = `/**
|
|
6822
|
-
* Auto-generated index of installed connectors
|
|
6823
|
-
* Do not edit manually - run 'connectors install' to update
|
|
6824
|
-
*/
|
|
6825
|
-
|
|
6826
|
-
${exports}
|
|
6827
|
-
`;
|
|
6828
|
-
writeFileSync2(indexPath, content);
|
|
5980
|
+
return {
|
|
5981
|
+
connector: name,
|
|
5982
|
+
success: true,
|
|
5983
|
+
path: sourcePath
|
|
5984
|
+
};
|
|
6829
5985
|
}
|
|
6830
|
-
function getInstalledConnectors(
|
|
6831
|
-
|
|
6832
|
-
if (!existsSync3(connectorsDir)) {
|
|
5986
|
+
function getInstalledConnectors() {
|
|
5987
|
+
if (!existsSync2(CONNECTORS_DIR)) {
|
|
6833
5988
|
return [];
|
|
6834
5989
|
}
|
|
6835
|
-
return readdirSync(
|
|
6836
|
-
const fullPath =
|
|
5990
|
+
return readdirSync(CONNECTORS_DIR).filter((f) => {
|
|
5991
|
+
const fullPath = join2(CONNECTORS_DIR, f);
|
|
6837
5992
|
return f.startsWith("connect-") && statSync(fullPath).isDirectory();
|
|
6838
5993
|
}).map((f) => f.replace("connect-", ""));
|
|
6839
5994
|
}
|
|
6840
5995
|
function getConnectorDocs(name) {
|
|
6841
5996
|
const connectorPath = getConnectorPath(name);
|
|
6842
|
-
const claudeMdPath =
|
|
6843
|
-
if (!
|
|
5997
|
+
const claudeMdPath = join2(connectorPath, "CLAUDE.md");
|
|
5998
|
+
if (!existsSync2(claudeMdPath))
|
|
6844
5999
|
return null;
|
|
6845
|
-
const raw =
|
|
6000
|
+
const raw = readFileSync2(claudeMdPath, "utf-8");
|
|
6846
6001
|
return {
|
|
6847
6002
|
overview: extractSection(raw, "Project Overview"),
|
|
6848
6003
|
auth: extractSection(raw, "Authentication"),
|
|
@@ -6879,92 +6034,15 @@ function parseEnvVarsTable(section) {
|
|
|
6879
6034
|
}
|
|
6880
6035
|
return vars;
|
|
6881
6036
|
}
|
|
6882
|
-
function removeConnector(name
|
|
6883
|
-
|
|
6884
|
-
const connectorsDir = join4(targetDir, ".connectors");
|
|
6885
|
-
const connectorPath = join4(connectorsDir, connectorName);
|
|
6886
|
-
if (!existsSync3(connectorPath)) {
|
|
6887
|
-
return false;
|
|
6888
|
-
}
|
|
6889
|
-
rmSync(connectorPath, { recursive: true });
|
|
6890
|
-
updateConnectorsIndex(connectorsDir);
|
|
6891
|
-
return true;
|
|
6037
|
+
function removeConnector(name) {
|
|
6038
|
+
return false;
|
|
6892
6039
|
}
|
|
6893
6040
|
|
|
6894
6041
|
// src/server/auth.ts
|
|
6895
|
-
import { existsSync as
|
|
6042
|
+
import { existsSync as existsSync3, readFileSync as readFileSync3, writeFileSync, mkdirSync, readdirSync as readdirSync2, rmSync, statSync as statSync2 } from "fs";
|
|
6896
6043
|
import { randomBytes } from "crypto";
|
|
6897
|
-
import { homedir
|
|
6898
|
-
import { join as
|
|
6899
|
-
|
|
6900
|
-
// src/lib/lock.ts
|
|
6901
|
-
import { openSync, closeSync, unlinkSync, existsSync as existsSync4, statSync as statSync2 } from "fs";
|
|
6902
|
-
import { join as join5 } from "path";
|
|
6903
|
-
import { homedir as homedir4 } from "os";
|
|
6904
|
-
import { mkdirSync as mkdirSync4 } from "fs";
|
|
6905
|
-
var LOCK_TIMEOUT_MS = 5000;
|
|
6906
|
-
var LOCK_RETRY_MS = 100;
|
|
6907
|
-
var STALE_LOCK_MS = 30000;
|
|
6908
|
-
|
|
6909
|
-
class LockTimeoutError extends Error {
|
|
6910
|
-
connector;
|
|
6911
|
-
constructor(connector) {
|
|
6912
|
-
super(`Could not acquire write lock for connector "${connector}" within ${LOCK_TIMEOUT_MS}ms. Another agent may be writing. Try again shortly.`);
|
|
6913
|
-
this.connector = connector;
|
|
6914
|
-
this.name = "LockTimeoutError";
|
|
6915
|
-
}
|
|
6916
|
-
}
|
|
6917
|
-
function lockPath(connector) {
|
|
6918
|
-
const dir = join5(homedir4(), ".connectors", `connect-${connector}`);
|
|
6919
|
-
mkdirSync4(dir, { recursive: true });
|
|
6920
|
-
return join5(dir, ".write.lock");
|
|
6921
|
-
}
|
|
6922
|
-
function isStale(path) {
|
|
6923
|
-
try {
|
|
6924
|
-
const stat = statSync2(path);
|
|
6925
|
-
return Date.now() - stat.mtimeMs > STALE_LOCK_MS;
|
|
6926
|
-
} catch {
|
|
6927
|
-
return false;
|
|
6928
|
-
}
|
|
6929
|
-
}
|
|
6930
|
-
function tryAcquire(path) {
|
|
6931
|
-
if (existsSync4(path) && isStale(path)) {
|
|
6932
|
-
try {
|
|
6933
|
-
unlinkSync(path);
|
|
6934
|
-
} catch {}
|
|
6935
|
-
}
|
|
6936
|
-
try {
|
|
6937
|
-
const fd = openSync(path, "wx");
|
|
6938
|
-
closeSync(fd);
|
|
6939
|
-
return true;
|
|
6940
|
-
} catch (e) {
|
|
6941
|
-
if (e.code === "EEXIST")
|
|
6942
|
-
return false;
|
|
6943
|
-
throw e;
|
|
6944
|
-
}
|
|
6945
|
-
}
|
|
6946
|
-
function release(path) {
|
|
6947
|
-
try {
|
|
6948
|
-
unlinkSync(path);
|
|
6949
|
-
} catch {}
|
|
6950
|
-
}
|
|
6951
|
-
async function withWriteLock(connector, fn) {
|
|
6952
|
-
const path = lockPath(connector);
|
|
6953
|
-
const deadline = Date.now() + LOCK_TIMEOUT_MS;
|
|
6954
|
-
while (Date.now() < deadline) {
|
|
6955
|
-
if (tryAcquire(path)) {
|
|
6956
|
-
try {
|
|
6957
|
-
return await fn();
|
|
6958
|
-
} finally {
|
|
6959
|
-
release(path);
|
|
6960
|
-
}
|
|
6961
|
-
}
|
|
6962
|
-
await new Promise((resolve) => setTimeout(resolve, LOCK_RETRY_MS));
|
|
6963
|
-
}
|
|
6964
|
-
throw new LockTimeoutError(connector);
|
|
6965
|
-
}
|
|
6966
|
-
|
|
6967
|
-
// src/server/auth.ts
|
|
6044
|
+
import { homedir } from "os";
|
|
6045
|
+
import { join as join3 } from "path";
|
|
6968
6046
|
var FETCH_TIMEOUT = 1e4;
|
|
6969
6047
|
var oauthStateStore = new Map;
|
|
6970
6048
|
var GOOGLE_AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
|
|
@@ -7020,14 +6098,14 @@ function getAuthType(name) {
|
|
|
7020
6098
|
}
|
|
7021
6099
|
function getConnectorConfigDir(name) {
|
|
7022
6100
|
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
7023
|
-
return
|
|
6101
|
+
return join3(homedir(), ".connectors", connectorName);
|
|
7024
6102
|
}
|
|
7025
6103
|
function getCurrentProfile(name) {
|
|
7026
6104
|
const configDir = getConnectorConfigDir(name);
|
|
7027
|
-
const currentProfileFile =
|
|
7028
|
-
if (
|
|
6105
|
+
const currentProfileFile = join3(configDir, "current_profile");
|
|
6106
|
+
if (existsSync3(currentProfileFile)) {
|
|
7029
6107
|
try {
|
|
7030
|
-
return
|
|
6108
|
+
return readFileSync3(currentProfileFile, "utf-8").trim() || "default";
|
|
7031
6109
|
} catch {
|
|
7032
6110
|
return "default";
|
|
7033
6111
|
}
|
|
@@ -7039,16 +6117,16 @@ function loadProfileConfig(name) {
|
|
|
7039
6117
|
const profile = getCurrentProfile(name);
|
|
7040
6118
|
let flatConfig = {};
|
|
7041
6119
|
let dirConfig = {};
|
|
7042
|
-
const profileFile =
|
|
7043
|
-
if (
|
|
6120
|
+
const profileFile = join3(configDir, "profiles", `${profile}.json`);
|
|
6121
|
+
if (existsSync3(profileFile)) {
|
|
7044
6122
|
try {
|
|
7045
|
-
flatConfig = JSON.parse(
|
|
6123
|
+
flatConfig = JSON.parse(readFileSync3(profileFile, "utf-8"));
|
|
7046
6124
|
} catch {}
|
|
7047
6125
|
}
|
|
7048
|
-
const profileDirConfig =
|
|
7049
|
-
if (
|
|
6126
|
+
const profileDirConfig = join3(configDir, "profiles", profile, "config.json");
|
|
6127
|
+
if (existsSync3(profileDirConfig)) {
|
|
7050
6128
|
try {
|
|
7051
|
-
dirConfig = JSON.parse(
|
|
6129
|
+
dirConfig = JSON.parse(readFileSync3(profileDirConfig, "utf-8"));
|
|
7052
6130
|
} catch {}
|
|
7053
6131
|
}
|
|
7054
6132
|
if (Object.keys(flatConfig).length === 0 && Object.keys(dirConfig).length === 0) {
|
|
@@ -7059,24 +6137,14 @@ function loadProfileConfig(name) {
|
|
|
7059
6137
|
function loadTokens(name) {
|
|
7060
6138
|
const configDir = getConnectorConfigDir(name);
|
|
7061
6139
|
const profile = getCurrentProfile(name);
|
|
7062
|
-
const tokensFile =
|
|
7063
|
-
if (
|
|
6140
|
+
const tokensFile = join3(configDir, "profiles", profile, "tokens.json");
|
|
6141
|
+
if (existsSync3(tokensFile)) {
|
|
7064
6142
|
try {
|
|
7065
|
-
return JSON.parse(
|
|
6143
|
+
return JSON.parse(readFileSync3(tokensFile, "utf-8"));
|
|
7066
6144
|
} catch {
|
|
7067
6145
|
return null;
|
|
7068
6146
|
}
|
|
7069
6147
|
}
|
|
7070
|
-
const profileConfig = loadProfileConfig(name);
|
|
7071
|
-
if (profileConfig.refreshToken || profileConfig.accessToken) {
|
|
7072
|
-
return {
|
|
7073
|
-
accessToken: profileConfig.accessToken,
|
|
7074
|
-
refreshToken: profileConfig.refreshToken,
|
|
7075
|
-
expiresAt: profileConfig.expiresAt,
|
|
7076
|
-
tokenType: profileConfig.tokenType,
|
|
7077
|
-
scope: profileConfig.scope
|
|
7078
|
-
};
|
|
7079
|
-
}
|
|
7080
6148
|
return null;
|
|
7081
6149
|
}
|
|
7082
6150
|
function getAuthStatus(name) {
|
|
@@ -7117,51 +6185,48 @@ function getAuthStatus(name) {
|
|
|
7117
6185
|
envVarTotalCount
|
|
7118
6186
|
};
|
|
7119
6187
|
}
|
|
7120
|
-
|
|
7121
|
-
return withWriteLock(name, () => _saveApiKey(name, key, field));
|
|
7122
|
-
}
|
|
7123
|
-
function _saveApiKey(name, key, field) {
|
|
6188
|
+
function saveApiKey(name, key, field) {
|
|
7124
6189
|
const configDir = getConnectorConfigDir(name);
|
|
7125
6190
|
const profile = getCurrentProfile(name);
|
|
7126
6191
|
const keyField = field || guessKeyField(name);
|
|
7127
6192
|
if (keyField === "clientId" || keyField === "clientSecret") {
|
|
7128
|
-
const credentialsFile =
|
|
7129
|
-
|
|
6193
|
+
const credentialsFile = join3(configDir, "credentials.json");
|
|
6194
|
+
mkdirSync(configDir, { recursive: true });
|
|
7130
6195
|
let creds = {};
|
|
7131
|
-
if (
|
|
6196
|
+
if (existsSync3(credentialsFile)) {
|
|
7132
6197
|
try {
|
|
7133
|
-
creds = JSON.parse(
|
|
6198
|
+
creds = JSON.parse(readFileSync3(credentialsFile, "utf-8"));
|
|
7134
6199
|
} catch {}
|
|
7135
6200
|
}
|
|
7136
6201
|
creds[keyField] = key;
|
|
7137
|
-
|
|
6202
|
+
writeFileSync(credentialsFile, JSON.stringify(creds, null, 2));
|
|
7138
6203
|
return;
|
|
7139
6204
|
}
|
|
7140
|
-
const profileFile =
|
|
7141
|
-
const profileDir =
|
|
7142
|
-
if (
|
|
6205
|
+
const profileFile = join3(configDir, "profiles", `${profile}.json`);
|
|
6206
|
+
const profileDir = join3(configDir, "profiles", profile);
|
|
6207
|
+
if (existsSync3(profileFile)) {
|
|
7143
6208
|
let config = {};
|
|
7144
6209
|
try {
|
|
7145
|
-
config = JSON.parse(
|
|
6210
|
+
config = JSON.parse(readFileSync3(profileFile, "utf-8"));
|
|
7146
6211
|
} catch {}
|
|
7147
6212
|
config[keyField] = key;
|
|
7148
|
-
|
|
6213
|
+
writeFileSync(profileFile, JSON.stringify(config, null, 2));
|
|
7149
6214
|
return;
|
|
7150
6215
|
}
|
|
7151
|
-
if (
|
|
7152
|
-
const configFile =
|
|
6216
|
+
if (existsSync3(profileDir)) {
|
|
6217
|
+
const configFile = join3(profileDir, "config.json");
|
|
7153
6218
|
let config = {};
|
|
7154
|
-
if (
|
|
6219
|
+
if (existsSync3(configFile)) {
|
|
7155
6220
|
try {
|
|
7156
|
-
config = JSON.parse(
|
|
6221
|
+
config = JSON.parse(readFileSync3(configFile, "utf-8"));
|
|
7157
6222
|
} catch {}
|
|
7158
6223
|
}
|
|
7159
6224
|
config[keyField] = key;
|
|
7160
|
-
|
|
6225
|
+
writeFileSync(configFile, JSON.stringify(config, null, 2));
|
|
7161
6226
|
return;
|
|
7162
6227
|
}
|
|
7163
|
-
|
|
7164
|
-
|
|
6228
|
+
mkdirSync(profileDir, { recursive: true });
|
|
6229
|
+
writeFileSync(join3(profileDir, "config.json"), JSON.stringify({ [keyField]: key }, null, 2));
|
|
7165
6230
|
}
|
|
7166
6231
|
function guessKeyField(name) {
|
|
7167
6232
|
const docs = getConnectorDocs(name);
|
|
@@ -7179,10 +6244,10 @@ function guessKeyField(name) {
|
|
|
7179
6244
|
}
|
|
7180
6245
|
function getOAuthConfig(name) {
|
|
7181
6246
|
const configDir = getConnectorConfigDir(name);
|
|
7182
|
-
const credentialsFile =
|
|
7183
|
-
if (
|
|
6247
|
+
const credentialsFile = join3(configDir, "credentials.json");
|
|
6248
|
+
if (existsSync3(credentialsFile)) {
|
|
7184
6249
|
try {
|
|
7185
|
-
const creds = JSON.parse(
|
|
6250
|
+
const creds = JSON.parse(readFileSync3(credentialsFile, "utf-8"));
|
|
7186
6251
|
return { clientId: creds.clientId, clientSecret: creds.clientSecret };
|
|
7187
6252
|
} catch {}
|
|
7188
6253
|
}
|
|
@@ -7261,15 +6326,12 @@ async function exchangeOAuthCode(name, code, redirectUri) {
|
|
|
7261
6326
|
function saveOAuthTokens(name, tokens) {
|
|
7262
6327
|
const configDir = getConnectorConfigDir(name);
|
|
7263
6328
|
const profile = getCurrentProfile(name);
|
|
7264
|
-
const profileDir =
|
|
7265
|
-
|
|
7266
|
-
const tokensFile =
|
|
7267
|
-
|
|
6329
|
+
const profileDir = join3(configDir, "profiles", profile);
|
|
6330
|
+
mkdirSync(profileDir, { recursive: true });
|
|
6331
|
+
const tokensFile = join3(profileDir, "tokens.json");
|
|
6332
|
+
writeFileSync(tokensFile, JSON.stringify(tokens, null, 2), { mode: 384 });
|
|
7268
6333
|
}
|
|
7269
6334
|
async function refreshOAuthToken(name) {
|
|
7270
|
-
return withWriteLock(name, () => _refreshOAuthToken(name));
|
|
7271
|
-
}
|
|
7272
|
-
async function _refreshOAuthToken(name) {
|
|
7273
6335
|
const oauthConfig = getOAuthConfig(name);
|
|
7274
6336
|
const currentTokens = loadTokens(name);
|
|
7275
6337
|
if (!oauthConfig.clientId || !oauthConfig.clientSecret) {
|
|
@@ -7306,15 +6368,15 @@ async function _refreshOAuthToken(name) {
|
|
|
7306
6368
|
}
|
|
7307
6369
|
function listProfiles(name) {
|
|
7308
6370
|
const configDir = getConnectorConfigDir(name);
|
|
7309
|
-
const profilesDir =
|
|
7310
|
-
if (!
|
|
6371
|
+
const profilesDir = join3(configDir, "profiles");
|
|
6372
|
+
if (!existsSync3(profilesDir))
|
|
7311
6373
|
return ["default"];
|
|
7312
6374
|
const seen = new Set;
|
|
7313
6375
|
try {
|
|
7314
6376
|
const entries = readdirSync2(profilesDir);
|
|
7315
6377
|
for (const entry of entries) {
|
|
7316
|
-
const fullPath =
|
|
7317
|
-
const stat =
|
|
6378
|
+
const fullPath = join3(profilesDir, entry);
|
|
6379
|
+
const stat = statSync2(fullPath);
|
|
7318
6380
|
if (stat.isDirectory()) {
|
|
7319
6381
|
seen.add(entry);
|
|
7320
6382
|
} else if (entry.endsWith(".json")) {
|
|
@@ -7327,25 +6389,25 @@ function listProfiles(name) {
|
|
|
7327
6389
|
}
|
|
7328
6390
|
function switchProfile(name, profile) {
|
|
7329
6391
|
const configDir = getConnectorConfigDir(name);
|
|
7330
|
-
|
|
7331
|
-
|
|
6392
|
+
mkdirSync(configDir, { recursive: true });
|
|
6393
|
+
writeFileSync(join3(configDir, "current_profile"), profile);
|
|
7332
6394
|
}
|
|
7333
6395
|
function deleteProfile(name, profile) {
|
|
7334
6396
|
if (profile === "default")
|
|
7335
6397
|
return false;
|
|
7336
6398
|
const configDir = getConnectorConfigDir(name);
|
|
7337
|
-
const profilesDir =
|
|
7338
|
-
const profileFile =
|
|
7339
|
-
if (
|
|
7340
|
-
|
|
6399
|
+
const profilesDir = join3(configDir, "profiles");
|
|
6400
|
+
const profileFile = join3(profilesDir, `${profile}.json`);
|
|
6401
|
+
if (existsSync3(profileFile)) {
|
|
6402
|
+
rmSync(profileFile);
|
|
7341
6403
|
if (getCurrentProfile(name) === profile) {
|
|
7342
6404
|
switchProfile(name, "default");
|
|
7343
6405
|
}
|
|
7344
6406
|
return true;
|
|
7345
6407
|
}
|
|
7346
|
-
const profileDir =
|
|
7347
|
-
if (
|
|
7348
|
-
|
|
6408
|
+
const profileDir = join3(profilesDir, profile);
|
|
6409
|
+
if (existsSync3(profileDir)) {
|
|
6410
|
+
rmSync(profileDir, { recursive: true });
|
|
7349
6411
|
if (getCurrentProfile(name) === profile) {
|
|
7350
6412
|
switchProfile(name, "default");
|
|
7351
6413
|
}
|
|
@@ -7367,20 +6429,20 @@ function resolveDashboardDir() {
|
|
|
7367
6429
|
const candidates = [];
|
|
7368
6430
|
try {
|
|
7369
6431
|
const scriptDir = dirname3(fileURLToPath3(import.meta.url));
|
|
7370
|
-
candidates.push(
|
|
7371
|
-
candidates.push(
|
|
6432
|
+
candidates.push(join4(scriptDir, "..", "dashboard", "dist"));
|
|
6433
|
+
candidates.push(join4(scriptDir, "..", "..", "dashboard", "dist"));
|
|
7372
6434
|
} catch {}
|
|
7373
6435
|
if (process.argv[1]) {
|
|
7374
6436
|
const mainDir = dirname3(process.argv[1]);
|
|
7375
|
-
candidates.push(
|
|
7376
|
-
candidates.push(
|
|
6437
|
+
candidates.push(join4(mainDir, "..", "dashboard", "dist"));
|
|
6438
|
+
candidates.push(join4(mainDir, "..", "..", "dashboard", "dist"));
|
|
7377
6439
|
}
|
|
7378
|
-
candidates.push(
|
|
6440
|
+
candidates.push(join4(process.cwd(), "dashboard", "dist"));
|
|
7379
6441
|
for (const candidate of candidates) {
|
|
7380
|
-
if (
|
|
6442
|
+
if (existsSync4(candidate))
|
|
7381
6443
|
return candidate;
|
|
7382
6444
|
}
|
|
7383
|
-
return
|
|
6445
|
+
return join4(process.cwd(), "dashboard", "dist");
|
|
7384
6446
|
}
|
|
7385
6447
|
var MIME_TYPES = {
|
|
7386
6448
|
".html": "text/html; charset=utf-8",
|
|
@@ -7408,18 +6470,6 @@ function json(data, status = 200, port) {
|
|
|
7408
6470
|
}
|
|
7409
6471
|
});
|
|
7410
6472
|
}
|
|
7411
|
-
async function jsonStripped(data, status = 200, port) {
|
|
7412
|
-
const raw = JSON.stringify(data);
|
|
7413
|
-
const body = await maybeStrip(raw);
|
|
7414
|
-
return new Response(body, {
|
|
7415
|
-
status,
|
|
7416
|
-
headers: {
|
|
7417
|
-
"Content-Type": "application/json",
|
|
7418
|
-
"Access-Control-Allow-Origin": port ? `http://localhost:${port}` : "*",
|
|
7419
|
-
...SECURITY_HEADERS
|
|
7420
|
-
}
|
|
7421
|
-
});
|
|
7422
|
-
}
|
|
7423
6473
|
function htmlResponse(content, status = 200) {
|
|
7424
6474
|
return new Response(content, {
|
|
7425
6475
|
status,
|
|
@@ -7482,7 +6532,7 @@ function oauthPage(type, title, message, hint, extra) {
|
|
|
7482
6532
|
</body></html>`;
|
|
7483
6533
|
}
|
|
7484
6534
|
function serveStaticFile(filePath) {
|
|
7485
|
-
if (!
|
|
6535
|
+
if (!existsSync4(filePath))
|
|
7486
6536
|
return null;
|
|
7487
6537
|
const ext = extname(filePath);
|
|
7488
6538
|
const contentType = MIME_TYPES[ext] || "application/octet-stream";
|
|
@@ -7506,7 +6556,7 @@ async function startServer(requestedPort, options) {
|
|
|
7506
6556
|
const shouldOpen = options?.open ?? true;
|
|
7507
6557
|
loadConnectorVersions();
|
|
7508
6558
|
const dashboardDir = resolveDashboardDir();
|
|
7509
|
-
const dashboardExists =
|
|
6559
|
+
const dashboardExists = existsSync4(dashboardDir);
|
|
7510
6560
|
if (!dashboardExists) {
|
|
7511
6561
|
console.error(`
|
|
7512
6562
|
Dashboard not found at: ${dashboardDir}`);
|
|
@@ -7535,10 +6585,10 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
7535
6585
|
const fields = fieldsParam ? new Set(fieldsParam.split(",").map((f) => f.trim())) : null;
|
|
7536
6586
|
const data = getAllConnectorsWithAuth();
|
|
7537
6587
|
if (compact) {
|
|
7538
|
-
return
|
|
6588
|
+
return json(data.map((c) => ({ name: c.name, category: c.category, installed: c.installed })), 200, port);
|
|
7539
6589
|
}
|
|
7540
6590
|
if (fields) {
|
|
7541
|
-
return
|
|
6591
|
+
return json(data.map((c) => {
|
|
7542
6592
|
const out = {};
|
|
7543
6593
|
for (const f of fields) {
|
|
7544
6594
|
if (f in c)
|
|
@@ -7547,7 +6597,7 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
7547
6597
|
return out;
|
|
7548
6598
|
}), 200, port);
|
|
7549
6599
|
}
|
|
7550
|
-
return
|
|
6600
|
+
return json(data, 200, port);
|
|
7551
6601
|
}
|
|
7552
6602
|
const singleMatch = path.match(/^\/api\/connectors\/([^/]+)$/);
|
|
7553
6603
|
if (singleMatch && method === "GET") {
|
|
@@ -7581,7 +6631,7 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
7581
6631
|
const body = await req.json();
|
|
7582
6632
|
if (!body.key)
|
|
7583
6633
|
return json({ error: "Missing 'key' in request body" }, 400, port);
|
|
7584
|
-
|
|
6634
|
+
saveApiKey(name, body.key, body.field);
|
|
7585
6635
|
logActivity("key_saved", name, body.field ? `Field: ${body.field}` : undefined);
|
|
7586
6636
|
return json({ success: true }, 200, port);
|
|
7587
6637
|
} catch (e) {
|
|
@@ -7626,10 +6676,7 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
7626
6676
|
if (!isValidConnectorName(name))
|
|
7627
6677
|
return json({ error: "Invalid connector name" }, 400, port);
|
|
7628
6678
|
try {
|
|
7629
|
-
|
|
7630
|
-
if (!removed) {
|
|
7631
|
-
return json({ error: `Connector '${name}' is not installed` }, 404, port);
|
|
7632
|
-
}
|
|
6679
|
+
removeConnector(name);
|
|
7633
6680
|
logActivity("uninstalled", name);
|
|
7634
6681
|
return json({ success: true, name }, 200, port);
|
|
7635
6682
|
} catch (e) {
|
|
@@ -7655,167 +6702,6 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
7655
6702
|
if (path === "/api/activity" && method === "GET") {
|
|
7656
6703
|
return json(activityLog, 200, port);
|
|
7657
6704
|
}
|
|
7658
|
-
if (path === "/api/hot" && method === "GET") {
|
|
7659
|
-
const { getTopConnectors: getTopConnectors2 } = await Promise.resolve().then(() => (init_usage(), exports_usage));
|
|
7660
|
-
const { getPromotedConnectors: getPromotedConnectors2 } = await Promise.resolve().then(() => (init_promotions(), exports_promotions));
|
|
7661
|
-
const limit = parseInt(url2.searchParams.get("limit") || "10", 10);
|
|
7662
|
-
const days = parseInt(url2.searchParams.get("days") || "7", 10);
|
|
7663
|
-
const db = getDatabase2();
|
|
7664
|
-
const top = getTopConnectors2(limit, days, db);
|
|
7665
|
-
const promoted = new Set(getPromotedConnectors2(db));
|
|
7666
|
-
return json(top.map((t) => ({ ...t, promoted: promoted.has(t.connector) })), 200, port);
|
|
7667
|
-
}
|
|
7668
|
-
const promoteMatch = path.match(/^\/api\/connectors\/([^/]+)\/promote$/);
|
|
7669
|
-
if (promoteMatch && method === "POST") {
|
|
7670
|
-
const name = promoteMatch[1];
|
|
7671
|
-
if (!getConnector(name))
|
|
7672
|
-
return json({ error: "Connector not found" }, 404, port);
|
|
7673
|
-
const { promoteConnector: promoteConnector2 } = await Promise.resolve().then(() => (init_promotions(), exports_promotions));
|
|
7674
|
-
promoteConnector2(name, getDatabase2());
|
|
7675
|
-
return json({ success: true, connector: name }, 200, port);
|
|
7676
|
-
}
|
|
7677
|
-
if (promoteMatch && method === "DELETE") {
|
|
7678
|
-
const { demoteConnector: demoteConnector2 } = await Promise.resolve().then(() => (init_promotions(), exports_promotions));
|
|
7679
|
-
const removed = demoteConnector2(promoteMatch[1], getDatabase2());
|
|
7680
|
-
return json({ success: removed, connector: promoteMatch[1] }, 200, port);
|
|
7681
|
-
}
|
|
7682
|
-
if (path === "/api/llm" && method === "GET") {
|
|
7683
|
-
const config = getLlmConfig();
|
|
7684
|
-
if (!config)
|
|
7685
|
-
return json({ configured: false }, 200, port);
|
|
7686
|
-
return json({ configured: true, provider: config.provider, model: config.model, key: maskKey(config.api_key), strip: config.strip }, 200, port);
|
|
7687
|
-
}
|
|
7688
|
-
if (path === "/api/llm" && method === "POST") {
|
|
7689
|
-
const body = await req.json().catch(() => ({}));
|
|
7690
|
-
const validProviders = ["cerebras", "groq", "openai", "anthropic"];
|
|
7691
|
-
const provider = body.provider;
|
|
7692
|
-
if (!provider || !validProviders.includes(provider))
|
|
7693
|
-
return json({ error: "provider must be one of: " + validProviders.join(", ") }, 400, port);
|
|
7694
|
-
const api_key = body.api_key;
|
|
7695
|
-
if (!api_key)
|
|
7696
|
-
return json({ error: "api_key is required" }, 400, port);
|
|
7697
|
-
const model = body.model || getLlmConfig()?.model || "qwen-3-32b";
|
|
7698
|
-
const strip = typeof body.strip === "boolean" ? body.strip : getLlmConfig()?.strip ?? false;
|
|
7699
|
-
saveLlmConfig({ provider, model, api_key, strip });
|
|
7700
|
-
return json({ success: true, provider, model, strip }, 200, port);
|
|
7701
|
-
}
|
|
7702
|
-
if (path === "/api/llm/test" && method === "POST") {
|
|
7703
|
-
const config = getLlmConfig();
|
|
7704
|
-
if (!config)
|
|
7705
|
-
return json({ error: "No LLM configured" }, 400, port);
|
|
7706
|
-
try {
|
|
7707
|
-
const client = new LLMClient(config);
|
|
7708
|
-
const result = await client.complete('Respond with exactly: {"status":"ok"}', "ping");
|
|
7709
|
-
return json({ success: true, provider: result.provider, model: result.model, latency_ms: result.latency_ms, response: result.content }, 200, port);
|
|
7710
|
-
} catch (e) {
|
|
7711
|
-
return json({ success: false, error: e instanceof Error ? e.message : String(e) }, 500, port);
|
|
7712
|
-
}
|
|
7713
|
-
}
|
|
7714
|
-
if (path === "/api/jobs" && method === "GET") {
|
|
7715
|
-
return json(listJobs(getDatabase2()), 200, port);
|
|
7716
|
-
}
|
|
7717
|
-
if (path === "/api/jobs" && method === "POST") {
|
|
7718
|
-
const body = await req.json().catch(() => ({}));
|
|
7719
|
-
if (!body.name || !body.connector || !body.command || !body.cron)
|
|
7720
|
-
return json({ error: "name, connector, command, cron required" }, 400, port);
|
|
7721
|
-
const job = createJob({ name: body.name, connector: body.connector, command: body.command, args: body.args ?? [], cron: body.cron, strip: !!body.strip }, getDatabase2());
|
|
7722
|
-
return json(job, 201, port);
|
|
7723
|
-
}
|
|
7724
|
-
const jobMatch = path.match(/^\/api\/jobs\/([^/]+)$/);
|
|
7725
|
-
if (jobMatch) {
|
|
7726
|
-
const db = getDatabase2();
|
|
7727
|
-
const job = getJobByName(jobMatch[1]) ?? getDatabase2().query("SELECT * FROM connector_jobs WHERE id = ?").get(jobMatch[1]);
|
|
7728
|
-
if (!job && method !== "DELETE")
|
|
7729
|
-
return json({ error: "Job not found" }, 404, port);
|
|
7730
|
-
if (method === "GET")
|
|
7731
|
-
return json(listJobRuns(job.id, 20, db), 200, port);
|
|
7732
|
-
if (method === "DELETE") {
|
|
7733
|
-
const j = getJobByName(jobMatch[1], db);
|
|
7734
|
-
if (!j)
|
|
7735
|
-
return json({ error: "Job not found" }, 404, port);
|
|
7736
|
-
deleteJob(j.id, db);
|
|
7737
|
-
return json({ success: true }, 200, port);
|
|
7738
|
-
}
|
|
7739
|
-
if (method === "PATCH") {
|
|
7740
|
-
const body = await req.json().catch(() => ({}));
|
|
7741
|
-
const j = getJobByName(jobMatch[1], db);
|
|
7742
|
-
const updated = updateJob(j.id, { enabled: typeof body.enabled === "boolean" ? body.enabled : undefined, strip: typeof body.strip === "boolean" ? body.strip : undefined }, db);
|
|
7743
|
-
return json(updated, 200, port);
|
|
7744
|
-
}
|
|
7745
|
-
}
|
|
7746
|
-
const jobRunMatch = path.match(/^\/api\/jobs\/([^/]+)\/run$/);
|
|
7747
|
-
if (jobRunMatch && method === "POST") {
|
|
7748
|
-
const db = getDatabase2();
|
|
7749
|
-
const job = getJobByName(jobRunMatch[1], db);
|
|
7750
|
-
if (!job)
|
|
7751
|
-
return json({ error: "Job not found" }, 404, port);
|
|
7752
|
-
const result = await triggerJob(job, db);
|
|
7753
|
-
return json(result, 200, port);
|
|
7754
|
-
}
|
|
7755
|
-
if (path === "/api/workflows" && method === "GET") {
|
|
7756
|
-
return json(listWorkflows(getDatabase2()), 200, port);
|
|
7757
|
-
}
|
|
7758
|
-
if (path === "/api/workflows" && method === "POST") {
|
|
7759
|
-
const body = await req.json().catch(() => ({}));
|
|
7760
|
-
if (!body.name || !body.steps)
|
|
7761
|
-
return json({ error: "name and steps required" }, 400, port);
|
|
7762
|
-
const wf = createWorkflow({ name: body.name, steps: body.steps }, getDatabase2());
|
|
7763
|
-
return json(wf, 201, port);
|
|
7764
|
-
}
|
|
7765
|
-
const wfMatch = path.match(/^\/api\/workflows\/([^/]+)$/);
|
|
7766
|
-
if (wfMatch) {
|
|
7767
|
-
const db = getDatabase2();
|
|
7768
|
-
const wf = getWorkflowByName(wfMatch[1], db);
|
|
7769
|
-
if (!wf)
|
|
7770
|
-
return json({ error: "Workflow not found" }, 404, port);
|
|
7771
|
-
if (method === "GET")
|
|
7772
|
-
return json(wf, 200, port);
|
|
7773
|
-
if (method === "DELETE") {
|
|
7774
|
-
deleteWorkflow(wf.id, db);
|
|
7775
|
-
return json({ success: true }, 200, port);
|
|
7776
|
-
}
|
|
7777
|
-
}
|
|
7778
|
-
const wfRunMatch = path.match(/^\/api\/workflows\/([^/]+)\/run$/);
|
|
7779
|
-
if (wfRunMatch && method === "POST") {
|
|
7780
|
-
const wf = getWorkflowByName(wfRunMatch[1], getDatabase2());
|
|
7781
|
-
if (!wf)
|
|
7782
|
-
return json({ error: "Workflow not found" }, 404, port);
|
|
7783
|
-
const result = await runWorkflow(wf);
|
|
7784
|
-
return json(result, 200, port);
|
|
7785
|
-
}
|
|
7786
|
-
if (path === "/api/agents" && method === "GET") {
|
|
7787
|
-
return json(listAgents(), 200, port);
|
|
7788
|
-
}
|
|
7789
|
-
if (path === "/api/agents/register" && method === "POST") {
|
|
7790
|
-
const body = await req.json().catch(() => ({}));
|
|
7791
|
-
const name = typeof body.name === "string" ? body.name : null;
|
|
7792
|
-
if (!name)
|
|
7793
|
-
return json({ error: "name is required" }, 400, port);
|
|
7794
|
-
const result = registerAgent({
|
|
7795
|
-
name,
|
|
7796
|
-
session_id: typeof body.session_id === "string" ? body.session_id : undefined,
|
|
7797
|
-
role: typeof body.role === "string" ? body.role : undefined
|
|
7798
|
-
});
|
|
7799
|
-
if (isAgentConflict(result))
|
|
7800
|
-
return json(result, 409, port);
|
|
7801
|
-
return json(result, 200, port);
|
|
7802
|
-
}
|
|
7803
|
-
if (path.startsWith("/api/agents/") && method === "DELETE") {
|
|
7804
|
-
const agentName = path.slice("/api/agents/".length);
|
|
7805
|
-
const agent = getAgentByName(agentName);
|
|
7806
|
-
if (!agent)
|
|
7807
|
-
return json({ error: "Agent not found" }, 404, port);
|
|
7808
|
-
deleteAgent(agent.id);
|
|
7809
|
-
return json({ success: true }, 200, port);
|
|
7810
|
-
}
|
|
7811
|
-
const rateMatch = path.match(/^\/api\/rate\/([^/]+)\/([^/]+)$/);
|
|
7812
|
-
if (rateMatch && method === "GET") {
|
|
7813
|
-
const [, agentId, connector] = rateMatch;
|
|
7814
|
-
const limit = parseInt(url2.searchParams.get("limit") || "60", 10);
|
|
7815
|
-
const consume = url2.searchParams.get("consume") === "true";
|
|
7816
|
-
const result = consume ? checkRateBudget(agentId, connector, limit) : getRateBudget(agentId, connector, limit);
|
|
7817
|
-
return json(result, 200, port);
|
|
7818
|
-
}
|
|
7819
6705
|
const profilesMatch = path.match(/^\/api\/connectors\/([^/]+)\/profiles$/);
|
|
7820
6706
|
if (profilesMatch && method === "GET") {
|
|
7821
6707
|
const name = profilesMatch[1];
|
|
@@ -7823,12 +6709,12 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
7823
6709
|
return json({ error: "Invalid connector name" }, 400, port);
|
|
7824
6710
|
try {
|
|
7825
6711
|
const profiles = listProfiles(name);
|
|
7826
|
-
const configDir =
|
|
7827
|
-
const currentProfileFile =
|
|
6712
|
+
const configDir = join4(homedir2(), ".connectors", name.startsWith("connect-") ? name : `connect-${name}`);
|
|
6713
|
+
const currentProfileFile = join4(configDir, "current_profile");
|
|
7828
6714
|
let current = "default";
|
|
7829
|
-
if (
|
|
6715
|
+
if (existsSync4(currentProfileFile)) {
|
|
7830
6716
|
try {
|
|
7831
|
-
current =
|
|
6717
|
+
current = readFileSync4(currentProfileFile, "utf-8").trim() || "default";
|
|
7832
6718
|
} catch {}
|
|
7833
6719
|
}
|
|
7834
6720
|
return json({ current, profiles }, 200, port);
|
|
@@ -7875,16 +6761,16 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
7875
6761
|
}
|
|
7876
6762
|
if (path === "/api/export" && method === "GET") {
|
|
7877
6763
|
try {
|
|
7878
|
-
const connectDir =
|
|
6764
|
+
const connectDir = join4(homedir2(), ".connectors");
|
|
7879
6765
|
const result = {};
|
|
7880
|
-
if (
|
|
6766
|
+
if (existsSync4(connectDir)) {
|
|
7881
6767
|
const entries = readdirSync3(connectDir, { withFileTypes: true });
|
|
7882
6768
|
for (const entry of entries) {
|
|
7883
6769
|
if (!entry.isDirectory() || !entry.name.startsWith("connect-"))
|
|
7884
6770
|
continue;
|
|
7885
6771
|
const connectorName = entry.name.replace(/^connect-/, "");
|
|
7886
|
-
const profilesDir =
|
|
7887
|
-
if (!
|
|
6772
|
+
const profilesDir = join4(connectDir, entry.name, "profiles");
|
|
6773
|
+
if (!existsSync4(profilesDir))
|
|
7888
6774
|
continue;
|
|
7889
6775
|
const profiles = {};
|
|
7890
6776
|
const profileEntries = readdirSync3(profilesDir, { withFileTypes: true });
|
|
@@ -7892,15 +6778,15 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
7892
6778
|
if (pEntry.isFile() && pEntry.name.endsWith(".json")) {
|
|
7893
6779
|
const profileName = basename(pEntry.name, ".json");
|
|
7894
6780
|
try {
|
|
7895
|
-
const config = JSON.parse(
|
|
6781
|
+
const config = JSON.parse(readFileSync4(join4(profilesDir, pEntry.name), "utf-8"));
|
|
7896
6782
|
profiles[profileName] = config;
|
|
7897
6783
|
} catch {}
|
|
7898
6784
|
}
|
|
7899
6785
|
if (pEntry.isDirectory()) {
|
|
7900
|
-
const configPath =
|
|
7901
|
-
if (
|
|
6786
|
+
const configPath = join4(profilesDir, pEntry.name, "config.json");
|
|
6787
|
+
if (existsSync4(configPath)) {
|
|
7902
6788
|
try {
|
|
7903
|
-
const config = JSON.parse(
|
|
6789
|
+
const config = JSON.parse(readFileSync4(configPath, "utf-8"));
|
|
7904
6790
|
profiles[pEntry.name] = config;
|
|
7905
6791
|
} catch {}
|
|
7906
6792
|
}
|
|
@@ -7935,20 +6821,20 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
7935
6821
|
return json({ error: "Invalid import format: missing 'connectors' object" }, 400, port);
|
|
7936
6822
|
}
|
|
7937
6823
|
let imported = 0;
|
|
7938
|
-
const connectDir =
|
|
6824
|
+
const connectDir = join4(homedir2(), ".connectors");
|
|
7939
6825
|
for (const [connectorName, data] of Object.entries(body.connectors)) {
|
|
7940
6826
|
if (!isValidConnectorName(connectorName))
|
|
7941
6827
|
continue;
|
|
7942
6828
|
if (!data.profiles || typeof data.profiles !== "object")
|
|
7943
6829
|
continue;
|
|
7944
|
-
const connectorDir =
|
|
7945
|
-
const profilesDir =
|
|
6830
|
+
const connectorDir = join4(connectDir, `connect-${connectorName}`);
|
|
6831
|
+
const profilesDir = join4(connectorDir, "profiles");
|
|
7946
6832
|
for (const [profileName, config] of Object.entries(data.profiles)) {
|
|
7947
6833
|
if (!config || typeof config !== "object")
|
|
7948
6834
|
continue;
|
|
7949
|
-
|
|
7950
|
-
const profileFile =
|
|
7951
|
-
|
|
6835
|
+
mkdirSync2(profilesDir, { recursive: true });
|
|
6836
|
+
const profileFile = join4(profilesDir, `${profileName}.json`);
|
|
6837
|
+
writeFileSync2(profileFile, JSON.stringify(config, null, 2));
|
|
7952
6838
|
imported++;
|
|
7953
6839
|
}
|
|
7954
6840
|
}
|
|
@@ -8003,12 +6889,12 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
8003
6889
|
}
|
|
8004
6890
|
if (dashboardExists && (method === "GET" || method === "HEAD")) {
|
|
8005
6891
|
if (path !== "/") {
|
|
8006
|
-
const filePath =
|
|
6892
|
+
const filePath = join4(dashboardDir, path);
|
|
8007
6893
|
const res2 = serveStaticFile(filePath);
|
|
8008
6894
|
if (res2)
|
|
8009
6895
|
return res2;
|
|
8010
6896
|
}
|
|
8011
|
-
const indexPath =
|
|
6897
|
+
const indexPath = join4(dashboardDir, "index.html");
|
|
8012
6898
|
const res = serveStaticFile(indexPath);
|
|
8013
6899
|
if (res)
|
|
8014
6900
|
return res;
|
|
@@ -8022,9 +6908,6 @@ Dashboard not found at: ${dashboardDir}`);
|
|
|
8022
6908
|
};
|
|
8023
6909
|
process.on("SIGINT", shutdown);
|
|
8024
6910
|
process.on("SIGTERM", shutdown);
|
|
8025
|
-
const { startScheduler: startScheduler2 } = await Promise.resolve().then(() => (init_scheduler(), exports_scheduler));
|
|
8026
|
-
const { getDatabase: getDatabase2 } = await Promise.resolve().then(() => (init_database(), exports_database));
|
|
8027
|
-
startScheduler2(getDatabase2());
|
|
8028
6911
|
const url = `http://localhost:${port}`;
|
|
8029
6912
|
console.log(`Connectors Dashboard running at ${url}`);
|
|
8030
6913
|
if (shouldOpen) {
|
|
@@ -8049,4 +6932,5 @@ function parsePort() {
|
|
|
8049
6932
|
}
|
|
8050
6933
|
return DEFAULT_PORT;
|
|
8051
6934
|
}
|
|
8052
|
-
|
|
6935
|
+
var shouldOpen = !process.argv.includes("--no-open");
|
|
6936
|
+
startServer(parsePort(), { open: shouldOpen });
|