@hasna/connectors 1.3.24 → 1.3.26
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 +911 -143
- package/bin/mcp.js +2804 -1815
- package/bin/serve.js +1200 -430
- package/connectors/{connect-yousign → connect-cloudflare}/bun.lock +3 -3
- package/connectors/connect-gmail/bin/index.js +7027 -0
- package/connectors/connect-googledrive/bin/index.js +5958 -0
- package/connectors/connect-imessage/bin/.gitkeep +2 -0
- package/connectors/connect-imessage/bin/index.js +3016 -0
- package/connectors/connect-imessage/bun.lock +32 -0
- package/connectors/connect-imessage/package.json +46 -0
- package/connectors/connect-imessage/src/api/client.ts +139 -0
- package/connectors/connect-imessage/src/api/conversations.ts +49 -0
- package/connectors/connect-imessage/src/api/health.ts +16 -0
- package/connectors/connect-imessage/src/api/index.ts +62 -0
- package/connectors/connect-imessage/src/api/messages.ts +119 -0
- package/connectors/connect-imessage/src/cli/index.ts +258 -0
- package/connectors/connect-imessage/src/index.ts +26 -0
- package/connectors/connect-imessage/src/types/index.ts +134 -0
- package/connectors/connect-imessage/src/utils/config.ts +219 -0
- package/connectors/connect-imessage/src/utils/output.ts +121 -0
- package/connectors/connect-imessage/tsconfig.json +16 -0
- package/dashboard/dist/assets/index-ClBXkNbL.css +1 -0
- package/dashboard/dist/assets/index-DvfmyAO4.js +284 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/core/connectors/gmail.d.ts +5 -0
- package/dist/core/connectors/googledrive.d.ts +6 -0
- package/dist/core/connectors/internal-operations.test.d.ts +1 -0
- package/dist/core/connectors/internal-runtime.test.d.ts +1 -0
- package/dist/core/errors.test.d.ts +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1075 -89
- package/dist/lib/runner-auth.test.d.ts +1 -0
- package/dist/lib/runner.d.ts +31 -0
- package/dist/lib/test-endpoints.test.d.ts +1 -0
- package/dist/lib/workflow-runner.d.ts +7 -0
- package/dist/server/auth-exchange.test.d.ts +1 -0
- package/dist/server/auth-refresh.test.d.ts +1 -0
- package/dist/server/auth.d.ts +1 -0
- package/package.json +1 -1
- package/connectors/connect-yousign/node_modules/@types/bun/LICENSE +0 -21
- package/connectors/connect-yousign/node_modules/@types/bun/README.md +0 -20
- package/connectors/connect-yousign/node_modules/@types/bun/index.d.ts +0 -1
- package/connectors/connect-yousign/node_modules/@types/bun/package.json +0 -53
- package/connectors/connect-yousign/node_modules/@types/node/LICENSE +0 -21
- package/connectors/connect-yousign/node_modules/@types/node/README.md +0 -15
- package/connectors/connect-yousign/node_modules/@types/node/assert/strict.d.ts +0 -105
- package/connectors/connect-yousign/node_modules/@types/node/assert.d.ts +0 -955
- package/connectors/connect-yousign/node_modules/@types/node/async_hooks.d.ts +0 -623
- package/connectors/connect-yousign/node_modules/@types/node/buffer.buffer.d.ts +0 -466
- package/connectors/connect-yousign/node_modules/@types/node/buffer.d.ts +0 -1810
- package/connectors/connect-yousign/node_modules/@types/node/child_process.d.ts +0 -1433
- package/connectors/connect-yousign/node_modules/@types/node/cluster.d.ts +0 -486
- package/connectors/connect-yousign/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/@types/node/console.d.ts +0 -151
- package/connectors/connect-yousign/node_modules/@types/node/constants.d.ts +0 -20
- package/connectors/connect-yousign/node_modules/@types/node/crypto.d.ts +0 -4065
- package/connectors/connect-yousign/node_modules/@types/node/dgram.d.ts +0 -564
- package/connectors/connect-yousign/node_modules/@types/node/diagnostics_channel.d.ts +0 -576
- package/connectors/connect-yousign/node_modules/@types/node/dns/promises.d.ts +0 -503
- package/connectors/connect-yousign/node_modules/@types/node/dns.d.ts +0 -922
- package/connectors/connect-yousign/node_modules/@types/node/domain.d.ts +0 -166
- package/connectors/connect-yousign/node_modules/@types/node/events.d.ts +0 -1047
- package/connectors/connect-yousign/node_modules/@types/node/fs/promises.d.ts +0 -1329
- package/connectors/connect-yousign/node_modules/@types/node/fs.d.ts +0 -4678
- package/connectors/connect-yousign/node_modules/@types/node/globals.d.ts +0 -150
- package/connectors/connect-yousign/node_modules/@types/node/globals.typedarray.d.ts +0 -101
- package/connectors/connect-yousign/node_modules/@types/node/http.d.ts +0 -2188
- package/connectors/connect-yousign/node_modules/@types/node/http2.d.ts +0 -2480
- package/connectors/connect-yousign/node_modules/@types/node/https.d.ts +0 -405
- package/connectors/connect-yousign/node_modules/@types/node/index.d.ts +0 -115
- package/connectors/connect-yousign/node_modules/@types/node/inspector/promises.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/@types/node/inspector.d.ts +0 -269
- package/connectors/connect-yousign/node_modules/@types/node/inspector.generated.d.ts +0 -4401
- package/connectors/connect-yousign/node_modules/@types/node/module.d.ts +0 -757
- package/connectors/connect-yousign/node_modules/@types/node/net.d.ts +0 -933
- package/connectors/connect-yousign/node_modules/@types/node/os.d.ts +0 -507
- package/connectors/connect-yousign/node_modules/@types/node/package.json +0 -155
- package/connectors/connect-yousign/node_modules/@types/node/path/posix.d.ts +0 -8
- package/connectors/connect-yousign/node_modules/@types/node/path/win32.d.ts +0 -8
- package/connectors/connect-yousign/node_modules/@types/node/path.d.ts +0 -187
- package/connectors/connect-yousign/node_modules/@types/node/perf_hooks.d.ts +0 -643
- package/connectors/connect-yousign/node_modules/@types/node/process.d.ts +0 -2175
- package/connectors/connect-yousign/node_modules/@types/node/punycode.d.ts +0 -117
- package/connectors/connect-yousign/node_modules/@types/node/querystring.d.ts +0 -152
- package/connectors/connect-yousign/node_modules/@types/node/quic.d.ts +0 -910
- package/connectors/connect-yousign/node_modules/@types/node/readline/promises.d.ts +0 -161
- package/connectors/connect-yousign/node_modules/@types/node/readline.d.ts +0 -542
- package/connectors/connect-yousign/node_modules/@types/node/repl.d.ts +0 -415
- package/connectors/connect-yousign/node_modules/@types/node/sea.d.ts +0 -162
- package/connectors/connect-yousign/node_modules/@types/node/sqlite.d.ts +0 -1065
- package/connectors/connect-yousign/node_modules/@types/node/stream/consumers.d.ts +0 -38
- package/connectors/connect-yousign/node_modules/@types/node/stream/promises.d.ts +0 -211
- package/connectors/connect-yousign/node_modules/@types/node/stream/web.d.ts +0 -296
- package/connectors/connect-yousign/node_modules/@types/node/stream.d.ts +0 -1770
- package/connectors/connect-yousign/node_modules/@types/node/string_decoder.d.ts +0 -67
- package/connectors/connect-yousign/node_modules/@types/node/test/reporters.d.ts +0 -96
- package/connectors/connect-yousign/node_modules/@types/node/test.d.ts +0 -2275
- package/connectors/connect-yousign/node_modules/@types/node/timers/promises.d.ts +0 -108
- package/connectors/connect-yousign/node_modules/@types/node/timers.d.ts +0 -159
- package/connectors/connect-yousign/node_modules/@types/node/tls.d.ts +0 -1203
- package/connectors/connect-yousign/node_modules/@types/node/trace_events.d.ts +0 -197
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -462
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +0 -71
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -36
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/index.d.ts +0 -117
- package/connectors/connect-yousign/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +0 -72
- package/connectors/connect-yousign/node_modules/@types/node/ts5.7/index.d.ts +0 -117
- package/connectors/connect-yousign/node_modules/@types/node/tty.d.ts +0 -250
- package/connectors/connect-yousign/node_modules/@types/node/url.d.ts +0 -541
- package/connectors/connect-yousign/node_modules/@types/node/util/types.d.ts +0 -558
- package/connectors/connect-yousign/node_modules/@types/node/util.d.ts +0 -1687
- package/connectors/connect-yousign/node_modules/@types/node/v8.d.ts +0 -988
- package/connectors/connect-yousign/node_modules/@types/node/vm.d.ts +0 -1208
- package/connectors/connect-yousign/node_modules/@types/node/wasi.d.ts +0 -202
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -59
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/blob.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/console.d.ts +0 -9
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/crypto.d.ts +0 -39
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/encoding.d.ts +0 -11
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/events.d.ts +0 -106
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/fetch.d.ts +0 -69
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/importmeta.d.ts +0 -13
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/messaging.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/navigator.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/performance.d.ts +0 -45
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/storage.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/streams.d.ts +0 -115
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/timers.d.ts +0 -44
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/url.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/@types/node/worker_threads.d.ts +0 -717
- package/connectors/connect-yousign/node_modules/@types/node/zlib.d.ts +0 -682
- package/connectors/connect-yousign/node_modules/bun-types/CLAUDE.md +0 -105
- package/connectors/connect-yousign/node_modules/bun-types/README.md +0 -33
- package/connectors/connect-yousign/node_modules/bun-types/bun.d.ts +0 -8481
- package/connectors/connect-yousign/node_modules/bun-types/bun.ns.d.ts +0 -5
- package/connectors/connect-yousign/node_modules/bun-types/bundle.d.ts +0 -74
- package/connectors/connect-yousign/node_modules/bun-types/deprecated.d.ts +0 -184
- package/connectors/connect-yousign/node_modules/bun-types/devserver.d.ts +0 -187
- package/connectors/connect-yousign/node_modules/bun-types/docs/README.md +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/bytecode.mdx +0 -447
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/css.mdx +0 -1024
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/esbuild.mdx +0 -304
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/executables.mdx +0 -1318
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/fullstack.mdx +0 -1086
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/hot-reloading.mdx +0 -229
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/html-static.mdx +0 -498
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/index.mdx +0 -1840
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/loaders.mdx +0 -451
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/macros.mdx +0 -328
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/minifier.mdx +0 -1286
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/plugins.mdx +0 -477
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/standalone-html.mdx +0 -314
- package/connectors/connect-yousign/node_modules/bun-types/docs/feedback.mdx +0 -75
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-array.mdx +0 -29
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-blob.mdx +0 -26
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-buffer.mdx +0 -27
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-string.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-typedarray.mdx +0 -41
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-arraybuffer.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-dataview.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-stream.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-string.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-typedarray.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-arraybuffer.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-blob.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-readablestream.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-string.mdx +0 -27
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-typedarray.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/dataview-to-string.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-arraybuffer.mdx +0 -27
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-blob.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-buffer.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-dataview.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-readablestream.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-string.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/aws-lambda.mdx +0 -204
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/digital-ocean.mdx +0 -161
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/google-cloud-run.mdx +0 -194
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/railway.mdx +0 -145
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/render.mdx +0 -82
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/vercel.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/astro.mdx +0 -82
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/discordjs.mdx +0 -80
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/docker.mdx +0 -151
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/drizzle.mdx +0 -195
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/elysia.mdx +0 -31
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/express.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/gel.mdx +0 -261
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/hono.mdx +0 -47
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/mongoose.mdx +0 -92
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/neon-drizzle.mdx +0 -234
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/neon-serverless-postgres.mdx +0 -60
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/nextjs.mdx +0 -103
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/nuxt.mdx +0 -96
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/pm2.mdx +0 -55
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/prisma-postgres.mdx +0 -169
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/prisma.mdx +0 -164
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/qwik.mdx +0 -114
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/react.mdx +0 -52
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/remix.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/sentry.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/solidstart.mdx +0 -62
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/ssr-react.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/stric.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/sveltekit.mdx +0 -138
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/systemd.mdx +0 -114
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/tanstack-start.mdx +0 -791
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/upstash.mdx +0 -87
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/vite.mdx +0 -77
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/html-rewriter/extract-links.mdx +0 -71
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/html-rewriter/extract-social-meta.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/cluster.mdx +0 -69
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/fetch-unix.mdx +0 -35
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/fetch.mdx +0 -26
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/file-uploads.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/hot.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/proxy.mdx +0 -50
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/server.mdx +0 -48
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/simple.mdx +0 -20
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/stream-file.mdx +0 -50
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/stream-iterator.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/stream-node-streams-in-bun.mdx +0 -22
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/tls.mdx +0 -32
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/index.mdx +0 -10
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-dev.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-git.mdx +0 -40
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-optional.mdx +0 -27
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-peer.mdx +0 -45
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-tarball.mdx +0 -35
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add.mdx +0 -44
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/azure-artifacts.mdx +0 -76
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/cicd.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/custom-registry.mdx +0 -32
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/from-npm-install-to-bun-install.mdx +0 -230
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/git-diff-bun-lockfile.mdx +0 -48
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/jfrog-artifactory.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/npm-alias.mdx +0 -25
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/registry-scope.mdx +0 -40
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/trusted.mdx +0 -52
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/workspaces.mdx +0 -70
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/yarnlock.mdx +0 -51
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/argv.mdx +0 -66
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/ctrl-c.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/ipc.mdx +0 -69
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/nanoseconds.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/os-signals.mdx +0 -31
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/spawn-stderr.mdx +0 -34
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/spawn-stdout.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/spawn.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/stdin.mdx +0 -62
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/arraybuffer.mdx +0 -30
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/buffer.mdx +0 -21
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/exists.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/json.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/mime.mdx +0 -22
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/stream.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/string.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/uint8array.mdx +0 -23
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/watch.mdx +0 -66
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/build-time-constants.mdx +0 -295
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/cicd.mdx +0 -45
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/codesign-macos-executable.mdx +0 -61
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/define-constant.mdx +0 -149
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/delete-directory.mdx +0 -39
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/delete-file.mdx +0 -21
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/heap-snapshot.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-html.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-json.mdx +0 -46
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-json5.mdx +0 -74
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-toml.mdx +0 -32
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-yaml.mdx +0 -104
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/read-env.mdx +0 -37
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/set-env.mdx +0 -51
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/shell.mdx +0 -42
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/timezone.mdx +0 -38
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/tsconfig-paths.mdx +0 -31
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/typescript.mdx +0 -51
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/vscode-debugger.mdx +0 -47
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/web-debugger.mdx +0 -103
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-arraybuffer.mdx +0 -13
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-blob.mdx +0 -13
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-json.mdx +0 -14
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-string.mdx +0 -14
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-uint8array.mdx +0 -13
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-array.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-arraybuffer.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-blob.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-buffer.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-json.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-string.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-typedarray.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/bail.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/concurrent-test-glob.mdx +0 -146
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/coverage-threshold.mdx +0 -67
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/coverage.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/happy-dom.mdx +0 -73
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/migrate-from-jest.mdx +0 -125
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/mock-clock.mdx +0 -50
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/mock-functions.mdx +0 -70
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/rerun-each.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/run-tests.mdx +0 -116
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/skip-tests.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/snapshot.mdx +0 -102
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/spy-on.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/svelte-test.mdx +0 -113
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/testing-library.mdx +0 -93
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/timeout.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/todo-tests.mdx +0 -74
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/update-snapshots.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/watch-mode.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/base64.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/deep-equals.mdx +0 -41
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/deflate.mdx +0 -20
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/detect-bun.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/entrypoint.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/escape-html.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/file-url-to-path.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/gzip.mdx +0 -20
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/hash-a-password.mdx +0 -56
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/import-meta-dir.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/import-meta-file.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/import-meta-path.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/javascript-uuid.mdx +0 -25
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/main.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/path-to-file-url.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/sleep.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/upgrade.mdx +0 -93
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/version.mdx +0 -23
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/which-path-to-executable-bin.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/compression.mdx +0 -33
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/context.mdx +0 -79
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/pubsub.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/simple.mdx +0 -38
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/append.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/basic.mdx +0 -46
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/blob.mdx +0 -30
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/cat.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/file-cp.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/filesink.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/response.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/stdout.mdx +0 -23
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/stream.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/unlink.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/index.mdx +0 -133
- package/connectors/connect-yousign/node_modules/bun-types/docs/installation.mdx +0 -372
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/bunx.mdx +0 -91
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/catalogs.mdx +0 -292
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/add.mdx +0 -179
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/audit.mdx +0 -60
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/info.mdx +0 -70
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/install.mdx +0 -591
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/link.mdx +0 -61
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/outdated.mdx +0 -197
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/patch.mdx +0 -69
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/pm.mdx +0 -323
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/publish.mdx +0 -131
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/remove.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/update.mdx +0 -140
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/why.mdx +0 -84
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/filter.mdx +0 -127
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/global-cache.mdx +0 -72
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/isolated-installs.mdx +0 -220
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/lifecycle.mdx +0 -64
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/lockfile.mdx +0 -64
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/npmrc.mdx +0 -245
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/overrides.mdx +0 -83
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/scopes-registries.mdx +0 -35
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/security-scanner-api.mdx +0 -95
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/workspaces.mdx +0 -115
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/benchmarking.mdx +0 -296
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/bindgen.mdx +0 -223
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/building-windows.mdx +0 -143
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/contributing.mdx +0 -366
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/feedback.mdx +0 -20
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/license.mdx +0 -78
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/roadmap.mdx +0 -8
- package/connectors/connect-yousign/node_modules/bun-types/docs/quickstart.mdx +0 -251
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/archive.mdx +0 -452
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/auto-install.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/binary-data.mdx +0 -846
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/bun-apis.mdx +0 -59
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/bunfig.mdx +0 -754
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/c-compiler.mdx +0 -204
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/child-process.mdx +0 -659
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/color.mdx +0 -267
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/console.mdx +0 -67
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/cookies.mdx +0 -454
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/debugger.mdx +0 -335
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/environment-variables.mdx +0 -231
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/ffi.mdx +0 -567
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/file-io.mdx +0 -306
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/file-system-router.mdx +0 -118
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/file-types.mdx +0 -482
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/glob.mdx +0 -181
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/globals.mdx +0 -72
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/hashing.mdx +0 -315
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/html-rewriter.mdx +0 -333
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/cookies.mdx +0 -79
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/error-handling.mdx +0 -40
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/metrics.mdx +0 -36
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/routing.mdx +0 -289
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/server.mdx +0 -645
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/tls.mdx +0 -101
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/websockets.mdx +0 -414
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/index.mdx +0 -223
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/json5.mdx +0 -271
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/jsonl.mdx +0 -188
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/jsx.mdx +0 -115
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/markdown.mdx +0 -344
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/module-resolution.mdx +0 -374
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/dns.mdx +0 -111
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/fetch.mdx +0 -484
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/tcp.mdx +0 -239
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/udp.mdx +0 -180
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/node-api.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/nodejs-compat.mdx +0 -468
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/plugins.mdx +0 -419
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/redis.mdx +0 -583
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/repl.mdx +0 -176
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/s3.mdx +0 -881
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/secrets.mdx +0 -340
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/semver.mdx +0 -57
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/shell.mdx +0 -637
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/sql.mdx +0 -1404
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/sqlite.mdx +0 -721
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/streams.mdx +0 -232
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/templating/create.mdx +0 -269
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/templating/init.mdx +0 -58
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/transpiler.mdx +0 -288
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/typescript.mdx +0 -58
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/utils.mdx +0 -1010
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/watch-mode.mdx +0 -161
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/web-apis.mdx +0 -29
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/workers.mdx +0 -314
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/yaml.mdx +0 -469
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/add.mdx +0 -166
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/build.mdx +0 -197
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/bunx.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/feedback.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/init.mdx +0 -84
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/install.mdx +0 -173
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/link.mdx +0 -163
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/outdated.mdx +0 -140
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/patch.mdx +0 -171
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/publish.mdx +0 -198
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/remove.mdx +0 -146
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/run.mdx +0 -305
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/test.mdx +0 -105
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/update.mdx +0 -144
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/code-coverage.mdx +0 -409
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/configuration.mdx +0 -520
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/dates-times.mdx +0 -129
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/discovery.mdx +0 -90
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/dom.mdx +0 -226
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/index.mdx +0 -409
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/lifecycle.mdx +0 -366
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/mocks.mdx +0 -637
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/reporters.mdx +0 -126
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/runtime-behavior.mdx +0 -342
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/snapshots.mdx +0 -434
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/writing-tests.mdx +0 -672
- package/connectors/connect-yousign/node_modules/bun-types/docs/typescript.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/extensions.d.ts +0 -40
- package/connectors/connect-yousign/node_modules/bun-types/fetch.d.ts +0 -79
- package/connectors/connect-yousign/node_modules/bun-types/ffi.d.ts +0 -1154
- package/connectors/connect-yousign/node_modules/bun-types/globals.d.ts +0 -2067
- package/connectors/connect-yousign/node_modules/bun-types/html-rewriter.d.ts +0 -186
- package/connectors/connect-yousign/node_modules/bun-types/index.d.ts +0 -32
- package/connectors/connect-yousign/node_modules/bun-types/jsc.d.ts +0 -233
- package/connectors/connect-yousign/node_modules/bun-types/jsx.d.ts +0 -11
- package/connectors/connect-yousign/node_modules/bun-types/overrides.d.ts +0 -376
- package/connectors/connect-yousign/node_modules/bun-types/package.json +0 -37
- package/connectors/connect-yousign/node_modules/bun-types/redis.d.ts +0 -3352
- package/connectors/connect-yousign/node_modules/bun-types/s3.d.ts +0 -1335
- package/connectors/connect-yousign/node_modules/bun-types/security.d.ts +0 -101
- package/connectors/connect-yousign/node_modules/bun-types/serve.d.ts +0 -1296
- package/connectors/connect-yousign/node_modules/bun-types/shell.d.ts +0 -380
- package/connectors/connect-yousign/node_modules/bun-types/sql.d.ts +0 -887
- package/connectors/connect-yousign/node_modules/bun-types/sqlite.d.ts +0 -1322
- package/connectors/connect-yousign/node_modules/bun-types/test-globals.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/bun-types/test.d.ts +0 -2392
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/branding.d.ts +0 -283
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/index.d.ts +0 -1207
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/messages.d.ts +0 -395
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/overloads.d.ts +0 -669
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/utils.d.ts +0 -431
- package/connectors/connect-yousign/node_modules/bun-types/wasm.d.ts +0 -193
- package/connectors/connect-yousign/node_modules/chalk/license +0 -9
- package/connectors/connect-yousign/node_modules/chalk/package.json +0 -83
- package/connectors/connect-yousign/node_modules/chalk/readme.md +0 -297
- package/connectors/connect-yousign/node_modules/chalk/source/index.d.ts +0 -325
- package/connectors/connect-yousign/node_modules/chalk/source/index.js +0 -225
- package/connectors/connect-yousign/node_modules/chalk/source/utilities.js +0 -33
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +0 -236
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/ansi-styles/index.js +0 -223
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/browser.d.ts +0 -1
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/browser.js +0 -34
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/index.d.ts +0 -55
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/index.js +0 -190
- package/connectors/connect-yousign/node_modules/commander/LICENSE +0 -22
- package/connectors/connect-yousign/node_modules/commander/Readme.md +0 -1157
- package/connectors/connect-yousign/node_modules/commander/esm.mjs +0 -16
- package/connectors/connect-yousign/node_modules/commander/index.js +0 -24
- package/connectors/connect-yousign/node_modules/commander/lib/argument.js +0 -149
- package/connectors/connect-yousign/node_modules/commander/lib/command.js +0 -2509
- package/connectors/connect-yousign/node_modules/commander/lib/error.js +0 -39
- package/connectors/connect-yousign/node_modules/commander/lib/help.js +0 -520
- package/connectors/connect-yousign/node_modules/commander/lib/option.js +0 -330
- package/connectors/connect-yousign/node_modules/commander/lib/suggestSimilar.js +0 -101
- package/connectors/connect-yousign/node_modules/commander/package-support.json +0 -16
- package/connectors/connect-yousign/node_modules/commander/package.json +0 -84
- package/connectors/connect-yousign/node_modules/commander/typings/esm.d.mts +0 -3
- package/connectors/connect-yousign/node_modules/commander/typings/index.d.ts +0 -969
- package/connectors/connect-yousign/node_modules/typescript/LICENSE.txt +0 -55
- package/connectors/connect-yousign/node_modules/typescript/README.md +0 -50
- package/connectors/connect-yousign/node_modules/typescript/SECURITY.md +0 -41
- package/connectors/connect-yousign/node_modules/typescript/ThirdPartyNoticeText.txt +0 -193
- package/connectors/connect-yousign/node_modules/typescript/bin/tsc +0 -2
- package/connectors/connect-yousign/node_modules/typescript/bin/tsserver +0 -2
- package/connectors/connect-yousign/node_modules/typescript/lib/_tsc.js +0 -133818
- package/connectors/connect-yousign/node_modules/typescript/lib/_tsserver.js +0 -659
- package/connectors/connect-yousign/node_modules/typescript/lib/_typingsInstaller.js +0 -222
- package/connectors/connect-yousign/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es6.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
- package/connectors/connect-yousign/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/tsc.js +0 -8
- package/connectors/connect-yousign/node_modules/typescript/lib/tsserver.js +0 -8
- package/connectors/connect-yousign/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
- package/connectors/connect-yousign/node_modules/typescript/lib/tsserverlibrary.js +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/typesMap.json +0 -497
- package/connectors/connect-yousign/node_modules/typescript/lib/typescript.d.ts +0 -11437
- package/connectors/connect-yousign/node_modules/typescript/lib/typescript.js +0 -200276
- package/connectors/connect-yousign/node_modules/typescript/lib/typingsInstaller.js +0 -8
- package/connectors/connect-yousign/node_modules/typescript/lib/watchGuard.js +0 -53
- package/connectors/connect-yousign/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/package.json +0 -120
- package/connectors/connect-yousign/node_modules/undici-types/LICENSE +0 -21
- package/connectors/connect-yousign/node_modules/undici-types/README.md +0 -6
- package/connectors/connect-yousign/node_modules/undici-types/agent.d.ts +0 -32
- package/connectors/connect-yousign/node_modules/undici-types/api.d.ts +0 -43
- package/connectors/connect-yousign/node_modules/undici-types/balanced-pool.d.ts +0 -30
- package/connectors/connect-yousign/node_modules/undici-types/cache-interceptor.d.ts +0 -173
- package/connectors/connect-yousign/node_modules/undici-types/cache.d.ts +0 -36
- package/connectors/connect-yousign/node_modules/undici-types/client-stats.d.ts +0 -15
- package/connectors/connect-yousign/node_modules/undici-types/client.d.ts +0 -108
- package/connectors/connect-yousign/node_modules/undici-types/connector.d.ts +0 -34
- package/connectors/connect-yousign/node_modules/undici-types/content-type.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/undici-types/cookies.d.ts +0 -30
- package/connectors/connect-yousign/node_modules/undici-types/diagnostics-channel.d.ts +0 -74
- package/connectors/connect-yousign/node_modules/undici-types/dispatcher.d.ts +0 -276
- package/connectors/connect-yousign/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/undici-types/errors.d.ts +0 -161
- package/connectors/connect-yousign/node_modules/undici-types/eventsource.d.ts +0 -66
- package/connectors/connect-yousign/node_modules/undici-types/fetch.d.ts +0 -211
- package/connectors/connect-yousign/node_modules/undici-types/formdata.d.ts +0 -108
- package/connectors/connect-yousign/node_modules/undici-types/global-dispatcher.d.ts +0 -9
- package/connectors/connect-yousign/node_modules/undici-types/global-origin.d.ts +0 -7
- package/connectors/connect-yousign/node_modules/undici-types/h2c-client.d.ts +0 -73
- package/connectors/connect-yousign/node_modules/undici-types/handlers.d.ts +0 -15
- package/connectors/connect-yousign/node_modules/undici-types/header.d.ts +0 -160
- package/connectors/connect-yousign/node_modules/undici-types/index.d.ts +0 -88
- package/connectors/connect-yousign/node_modules/undici-types/interceptors.d.ts +0 -73
- package/connectors/connect-yousign/node_modules/undici-types/mock-agent.d.ts +0 -68
- package/connectors/connect-yousign/node_modules/undici-types/mock-call-history.d.ts +0 -111
- package/connectors/connect-yousign/node_modules/undici-types/mock-client.d.ts +0 -27
- package/connectors/connect-yousign/node_modules/undici-types/mock-errors.d.ts +0 -12
- package/connectors/connect-yousign/node_modules/undici-types/mock-interceptor.d.ts +0 -94
- package/connectors/connect-yousign/node_modules/undici-types/mock-pool.d.ts +0 -27
- package/connectors/connect-yousign/node_modules/undici-types/package.json +0 -55
- package/connectors/connect-yousign/node_modules/undici-types/patch.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/undici-types/pool-stats.d.ts +0 -19
- package/connectors/connect-yousign/node_modules/undici-types/pool.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/undici-types/proxy-agent.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/undici-types/readable.d.ts +0 -68
- package/connectors/connect-yousign/node_modules/undici-types/retry-agent.d.ts +0 -8
- package/connectors/connect-yousign/node_modules/undici-types/retry-handler.d.ts +0 -125
- package/connectors/connect-yousign/node_modules/undici-types/round-robin-pool.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/undici-types/snapshot-agent.d.ts +0 -109
- package/connectors/connect-yousign/node_modules/undici-types/util.d.ts +0 -18
- package/connectors/connect-yousign/node_modules/undici-types/utility.d.ts +0 -7
- package/connectors/connect-yousign/node_modules/undici-types/webidl.d.ts +0 -341
- package/connectors/connect-yousign/node_modules/undici-types/websocket.d.ts +0 -186
- package/dashboard/dist/assets/index-CSlS3oNV.css +0 -1
- package/dashboard/dist/assets/index-NCasN7x4.js +0 -284
- /package/dist/{server/server.test.d.ts → core/builtins.test.d.ts} +0 -0
package/bin/index.js
CHANGED
|
@@ -1909,7 +1909,7 @@ var package_default;
|
|
|
1909
1909
|
var init_package = __esm(() => {
|
|
1910
1910
|
package_default = {
|
|
1911
1911
|
name: "@hasna/connectors",
|
|
1912
|
-
version: "1.3.
|
|
1912
|
+
version: "1.3.26",
|
|
1913
1913
|
description: "Open source connector library - Install API connectors with a single command",
|
|
1914
1914
|
type: "module",
|
|
1915
1915
|
bin: {
|
|
@@ -2052,7 +2052,7 @@ var CONNECTOR_NAME_RE, OPERATION_NAME_RE;
|
|
|
2052
2052
|
var init_connector = __esm(() => {
|
|
2053
2053
|
init_errors();
|
|
2054
2054
|
CONNECTOR_NAME_RE = /^[a-z0-9-]+$/;
|
|
2055
|
-
OPERATION_NAME_RE = /^[
|
|
2055
|
+
OPERATION_NAME_RE = /^[A-Za-z0-9:._-]+$/;
|
|
2056
2056
|
});
|
|
2057
2057
|
|
|
2058
2058
|
// src/core/registry.ts
|
|
@@ -6913,6 +6913,733 @@ Commands:
|
|
|
6913
6913
|
});
|
|
6914
6914
|
});
|
|
6915
6915
|
|
|
6916
|
+
// src/core/connectors/gmail.ts
|
|
6917
|
+
import { existsSync as existsSync2, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
|
|
6918
|
+
import { homedir } from "os";
|
|
6919
|
+
import { basename, join as join2 } from "path";
|
|
6920
|
+
async function modifyMessage(profile, messageId, addLabelIds, removeLabelIds) {
|
|
6921
|
+
return requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}/modify`, {}, {
|
|
6922
|
+
method: "POST",
|
|
6923
|
+
body: {
|
|
6924
|
+
addLabelIds: addLabelIds ?? [],
|
|
6925
|
+
removeLabelIds: removeLabelIds ?? []
|
|
6926
|
+
}
|
|
6927
|
+
});
|
|
6928
|
+
}
|
|
6929
|
+
async function replyToMessage(profile, messageId, input) {
|
|
6930
|
+
const original = await requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}`, { format: "full" });
|
|
6931
|
+
const headers = headersToObject(original.payload?.headers ?? []);
|
|
6932
|
+
const subject = normalizeReplySubject(headers.Subject ?? headers.subject ?? "");
|
|
6933
|
+
const to = headers.From ?? headers.from ?? "";
|
|
6934
|
+
const messageIdHeader = headers["Message-ID"] ?? headers["Message-Id"] ?? headers["message-id"] ?? "";
|
|
6935
|
+
const references = [headers.References ?? headers.references, messageIdHeader].filter(Boolean).join(" ");
|
|
6936
|
+
const raw = buildRawEmail({
|
|
6937
|
+
to,
|
|
6938
|
+
cc: normalizeStringArray(input.cc),
|
|
6939
|
+
bcc: normalizeStringArray(input.bcc),
|
|
6940
|
+
subject,
|
|
6941
|
+
body: input.body,
|
|
6942
|
+
isHtml: Boolean(input.html ?? input.isHtml),
|
|
6943
|
+
inReplyTo: messageIdHeader,
|
|
6944
|
+
references
|
|
6945
|
+
});
|
|
6946
|
+
return requestJson(profile, "/users/me/messages/send", {}, {
|
|
6947
|
+
method: "POST",
|
|
6948
|
+
body: {
|
|
6949
|
+
raw: Buffer.from(raw).toString("base64url"),
|
|
6950
|
+
threadId: original.threadId
|
|
6951
|
+
}
|
|
6952
|
+
});
|
|
6953
|
+
}
|
|
6954
|
+
async function downloadAttachments(profile, input) {
|
|
6955
|
+
const messageId = getMessageId(input);
|
|
6956
|
+
const outputDir = input.dir ?? input.outputDir ?? join2(configDirs()[0], "attachments", messageId);
|
|
6957
|
+
mkdirSync(outputDir, { recursive: true });
|
|
6958
|
+
const attachments = input.attachmentId && input.filename ? [{
|
|
6959
|
+
attachmentId: input.attachmentId,
|
|
6960
|
+
filename: input.filename,
|
|
6961
|
+
mimeType: input.mimeType ?? "application/octet-stream",
|
|
6962
|
+
size: 0
|
|
6963
|
+
}] : collectAttachments((await requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}`, { format: "full" })).payload);
|
|
6964
|
+
const downloaded = [];
|
|
6965
|
+
for (const attachment of attachments) {
|
|
6966
|
+
const data = await requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}/attachments/${encodeURIComponent(attachment.attachmentId)}`, {});
|
|
6967
|
+
const filename = safeFilename(attachment.filename);
|
|
6968
|
+
const path = join2(outputDir, filename);
|
|
6969
|
+
const buffer = Buffer.from(data.data, "base64url");
|
|
6970
|
+
writeFileSync(path, buffer);
|
|
6971
|
+
downloaded.push({
|
|
6972
|
+
filename,
|
|
6973
|
+
path,
|
|
6974
|
+
size: buffer.length,
|
|
6975
|
+
mimeType: attachment.mimeType
|
|
6976
|
+
});
|
|
6977
|
+
}
|
|
6978
|
+
return downloaded;
|
|
6979
|
+
}
|
|
6980
|
+
async function requestJson(profile, path, params, options = {}) {
|
|
6981
|
+
const token = await getValidAccessToken(profile);
|
|
6982
|
+
const url = new URL(`${GMAIL_API_BASE}${path}`);
|
|
6983
|
+
for (const [key, value] of Object.entries(params)) {
|
|
6984
|
+
if (value !== undefined && value !== null && value !== "")
|
|
6985
|
+
url.searchParams.append(key, String(value));
|
|
6986
|
+
}
|
|
6987
|
+
const response = await fetch(url, {
|
|
6988
|
+
method: options.method ?? "GET",
|
|
6989
|
+
headers: {
|
|
6990
|
+
Authorization: `Bearer ${token}`,
|
|
6991
|
+
Accept: "application/json",
|
|
6992
|
+
...options.body ? { "Content-Type": "application/json" } : {}
|
|
6993
|
+
},
|
|
6994
|
+
body: options.body ? JSON.stringify(options.body) : undefined
|
|
6995
|
+
});
|
|
6996
|
+
const text = await response.text();
|
|
6997
|
+
const data = text ? JSON.parse(text) : {};
|
|
6998
|
+
if (!response.ok) {
|
|
6999
|
+
const error = data;
|
|
7000
|
+
throw new Error(`Gmail request failed (${response.status}): ${error.error?.message ?? response.statusText}`);
|
|
7001
|
+
}
|
|
7002
|
+
return data;
|
|
7003
|
+
}
|
|
7004
|
+
async function getValidAccessToken(profile) {
|
|
7005
|
+
if (process.env.GMAIL_ACCESS_TOKEN)
|
|
7006
|
+
return process.env.GMAIL_ACCESS_TOKEN;
|
|
7007
|
+
const tokens = loadTokens(profile);
|
|
7008
|
+
if (!tokens?.accessToken && !tokens?.refreshToken) {
|
|
7009
|
+
throw new Error(`Gmail profile "${profile}" is not authenticated. Run: connectors auth gmail`);
|
|
7010
|
+
}
|
|
7011
|
+
if (tokens.accessToken && (!tokens.expiresAt || Date.now() < tokens.expiresAt - REFRESH_BUFFER_MS))
|
|
7012
|
+
return tokens.accessToken;
|
|
7013
|
+
if (!tokens.refreshToken)
|
|
7014
|
+
return tokens.accessToken ?? "";
|
|
7015
|
+
return (await refreshAccessToken(profile, tokens)).accessToken ?? "";
|
|
7016
|
+
}
|
|
7017
|
+
async function refreshAccessToken(profile, currentTokens) {
|
|
7018
|
+
const credentials = loadCredentials(profile);
|
|
7019
|
+
if (!credentials.clientId || !credentials.clientSecret)
|
|
7020
|
+
throw new Error("Gmail OAuth credentials are not configured. Run: connectors auth gmail");
|
|
7021
|
+
if (!currentTokens.refreshToken)
|
|
7022
|
+
throw new Error(`Gmail profile "${profile}" has no refresh token. Run: connectors auth gmail`);
|
|
7023
|
+
const response = await fetch(TOKEN_URL, {
|
|
7024
|
+
method: "POST",
|
|
7025
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
7026
|
+
body: new URLSearchParams({
|
|
7027
|
+
client_id: credentials.clientId,
|
|
7028
|
+
client_secret: credentials.clientSecret,
|
|
7029
|
+
refresh_token: currentTokens.refreshToken,
|
|
7030
|
+
grant_type: "refresh_token"
|
|
7031
|
+
})
|
|
7032
|
+
});
|
|
7033
|
+
const data = await response.json().catch(() => ({}));
|
|
7034
|
+
if (!response.ok || !data.access_token)
|
|
7035
|
+
throw new Error(`Gmail token refresh failed: ${data.error_description || data.error || response.statusText}`);
|
|
7036
|
+
const tokens = {
|
|
7037
|
+
accessToken: data.access_token,
|
|
7038
|
+
refreshToken: currentTokens.refreshToken,
|
|
7039
|
+
expiresAt: Date.now() + (data.expires_in ?? 3600) * 1000,
|
|
7040
|
+
tokenType: data.token_type ?? currentTokens.tokenType,
|
|
7041
|
+
scope: data.scope ?? currentTokens.scope
|
|
7042
|
+
};
|
|
7043
|
+
saveTokens(profile, tokens);
|
|
7044
|
+
return tokens;
|
|
7045
|
+
}
|
|
7046
|
+
function listProfiles() {
|
|
7047
|
+
const profiles = new Set;
|
|
7048
|
+
for (const baseDir of configDirs()) {
|
|
7049
|
+
const profilesDir = join2(baseDir, "profiles");
|
|
7050
|
+
if (!existsSync2(profilesDir))
|
|
7051
|
+
continue;
|
|
7052
|
+
for (const entry of readdirSync(profilesDir, { withFileTypes: true })) {
|
|
7053
|
+
if (entry.isDirectory())
|
|
7054
|
+
profiles.add(entry.name);
|
|
7055
|
+
if (entry.isFile() && entry.name.endsWith(".json"))
|
|
7056
|
+
profiles.add(basename(entry.name, ".json"));
|
|
7057
|
+
}
|
|
7058
|
+
}
|
|
7059
|
+
return Array.from(profiles).sort((a, b) => a.localeCompare(b));
|
|
7060
|
+
}
|
|
7061
|
+
function loadCredentials(profile) {
|
|
7062
|
+
const envClientId = process.env.GMAIL_CLIENT_ID ?? process.env.GOOGLE_CLIENT_ID;
|
|
7063
|
+
const envClientSecret = process.env.GMAIL_CLIENT_SECRET ?? process.env.GOOGLE_CLIENT_SECRET;
|
|
7064
|
+
if (envClientId && envClientSecret)
|
|
7065
|
+
return { clientId: envClientId, clientSecret: envClientSecret };
|
|
7066
|
+
for (const baseDir of configDirs()) {
|
|
7067
|
+
const credentials = {
|
|
7068
|
+
...readJson(join2(baseDir, "credentials.json")),
|
|
7069
|
+
...readJson(join2(baseDir, "profiles", profile, "config.json"))
|
|
7070
|
+
};
|
|
7071
|
+
if (credentials.clientId || credentials.clientSecret)
|
|
7072
|
+
return credentials;
|
|
7073
|
+
}
|
|
7074
|
+
return {};
|
|
7075
|
+
}
|
|
7076
|
+
function loadTokens(profile) {
|
|
7077
|
+
for (const baseDir of configDirs()) {
|
|
7078
|
+
const fromProfile = readJson(join2(baseDir, "profiles", profile, "tokens.json"));
|
|
7079
|
+
if (fromProfile)
|
|
7080
|
+
return fromProfile;
|
|
7081
|
+
const flat = readJson(join2(baseDir, "profiles", `${profile}.json`));
|
|
7082
|
+
if (flat)
|
|
7083
|
+
return flat.tokens ?? (flat.accessToken || flat.refreshToken ? flat : null);
|
|
7084
|
+
}
|
|
7085
|
+
return null;
|
|
7086
|
+
}
|
|
7087
|
+
function saveTokens(profile, tokens) {
|
|
7088
|
+
const baseDir = configDirs().find((dir) => existsSync2(dir)) ?? configDirs()[0];
|
|
7089
|
+
const profileDir = join2(baseDir, "profiles", profile);
|
|
7090
|
+
mkdirSync(profileDir, { recursive: true });
|
|
7091
|
+
writeFileSync(join2(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
|
|
7092
|
+
}
|
|
7093
|
+
function configDirs() {
|
|
7094
|
+
const explicit = process.env.HASNA_GMAIL_CONNECTOR_DIR ?? process.env.GMAIL_CONNECTOR_DIR;
|
|
7095
|
+
if (explicit)
|
|
7096
|
+
return [explicit];
|
|
7097
|
+
const baseDir = process.env.HASNA_CONNECTORS_DIR ?? join2(homedir(), ".hasna", "connectors");
|
|
7098
|
+
return [join2(baseDir, "connect-gmail"), join2(baseDir, "gmail")];
|
|
7099
|
+
}
|
|
7100
|
+
function readJson(path) {
|
|
7101
|
+
if (!existsSync2(path))
|
|
7102
|
+
return null;
|
|
7103
|
+
try {
|
|
7104
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
7105
|
+
} catch {
|
|
7106
|
+
return null;
|
|
7107
|
+
}
|
|
7108
|
+
}
|
|
7109
|
+
function getMessageId(input) {
|
|
7110
|
+
const id = input.messageId ?? (input.args?.[0] != null ? String(input.args[0]) : undefined);
|
|
7111
|
+
if (!id)
|
|
7112
|
+
throw new Error("Gmail messageId is required");
|
|
7113
|
+
return id;
|
|
7114
|
+
}
|
|
7115
|
+
function headersToObject(headers) {
|
|
7116
|
+
const out = {};
|
|
7117
|
+
for (const header of headers)
|
|
7118
|
+
out[header.name] = header.value;
|
|
7119
|
+
return out;
|
|
7120
|
+
}
|
|
7121
|
+
function extractBody(message, preferHtml = false) {
|
|
7122
|
+
if (!message.payload)
|
|
7123
|
+
return "";
|
|
7124
|
+
const targetType = preferHtml ? "text/html" : "text/plain";
|
|
7125
|
+
const parts = [];
|
|
7126
|
+
collectTextParts(message.payload, parts);
|
|
7127
|
+
return parts.find((part) => part.mimeType === targetType)?.data ?? parts.find((part) => part.mimeType.startsWith("text/"))?.data ?? "";
|
|
7128
|
+
}
|
|
7129
|
+
function collectTextParts(part, results) {
|
|
7130
|
+
const mimeType = (part.mimeType ?? "").split(";")[0].trim().toLowerCase();
|
|
7131
|
+
if (part.body?.data && mimeType.startsWith("text/")) {
|
|
7132
|
+
results.push({ mimeType, data: Buffer.from(part.body.data, "base64url").toString("utf8") });
|
|
7133
|
+
}
|
|
7134
|
+
for (const child of part.parts ?? [])
|
|
7135
|
+
collectTextParts(child, results);
|
|
7136
|
+
}
|
|
7137
|
+
function collectAttachments(part, attachments = []) {
|
|
7138
|
+
if (!part)
|
|
7139
|
+
return attachments;
|
|
7140
|
+
if (part.body?.attachmentId && part.filename) {
|
|
7141
|
+
attachments.push({
|
|
7142
|
+
attachmentId: part.body.attachmentId,
|
|
7143
|
+
filename: part.filename,
|
|
7144
|
+
mimeType: part.mimeType ?? "application/octet-stream",
|
|
7145
|
+
size: part.body.size ?? 0,
|
|
7146
|
+
partId: part.partId
|
|
7147
|
+
});
|
|
7148
|
+
}
|
|
7149
|
+
for (const child of part.parts ?? [])
|
|
7150
|
+
collectAttachments(child, attachments);
|
|
7151
|
+
return attachments;
|
|
7152
|
+
}
|
|
7153
|
+
function normalizeStringArray(value) {
|
|
7154
|
+
if (!value)
|
|
7155
|
+
return [];
|
|
7156
|
+
return Array.isArray(value) ? value : value.split(",").map((item) => item.trim()).filter(Boolean);
|
|
7157
|
+
}
|
|
7158
|
+
function normalizeReplySubject(subject) {
|
|
7159
|
+
return subject.toLowerCase().startsWith("re:") ? subject : `Re: ${subject}`;
|
|
7160
|
+
}
|
|
7161
|
+
function buildRawEmail(input) {
|
|
7162
|
+
const headers = [
|
|
7163
|
+
`To: ${input.to}`,
|
|
7164
|
+
input.cc.length ? `Cc: ${input.cc.join(", ")}` : "",
|
|
7165
|
+
input.bcc.length ? `Bcc: ${input.bcc.join(", ")}` : "",
|
|
7166
|
+
`Subject: ${input.subject}`,
|
|
7167
|
+
input.inReplyTo ? `In-Reply-To: ${input.inReplyTo}` : "",
|
|
7168
|
+
input.references ? `References: ${input.references}` : "",
|
|
7169
|
+
"MIME-Version: 1.0",
|
|
7170
|
+
`Content-Type: ${input.isHtml ? "text/html" : "text/plain"}; charset=UTF-8`
|
|
7171
|
+
].filter(Boolean);
|
|
7172
|
+
return `${headers.join(`\r
|
|
7173
|
+
`)}\r
|
|
7174
|
+
\r
|
|
7175
|
+
${input.body}`;
|
|
7176
|
+
}
|
|
7177
|
+
function safeFilename(filename) {
|
|
7178
|
+
return basename(filename.replace(/[\u00A0\u2000-\u200B\u202F\u205F\u3000]/g, " ")).replace(/[\/\\]/g, "_");
|
|
7179
|
+
}
|
|
7180
|
+
var GMAIL_API_BASE = "https://gmail.googleapis.com/gmail/v1", TOKEN_URL = "https://oauth2.googleapis.com/token", REFRESH_BUFFER_MS, listMessagesSchema, messageIdSchema, readMessageSchema, attachmentListSchema, attachmentDownloadSchema, historyListSchema, replySchema, gmailConnector;
|
|
7181
|
+
var init_gmail = __esm(() => {
|
|
7182
|
+
init_zod();
|
|
7183
|
+
init_connector();
|
|
7184
|
+
REFRESH_BUFFER_MS = 5 * 60 * 1000;
|
|
7185
|
+
listMessagesSchema = exports_external.object({
|
|
7186
|
+
max: exports_external.coerce.number().int().positive().max(500).optional(),
|
|
7187
|
+
maxResults: exports_external.coerce.number().int().positive().max(500).optional(),
|
|
7188
|
+
pageToken: exports_external.string().optional(),
|
|
7189
|
+
query: exports_external.string().optional(),
|
|
7190
|
+
q: exports_external.string().optional(),
|
|
7191
|
+
label: exports_external.string().optional(),
|
|
7192
|
+
labelIds: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())]).optional(),
|
|
7193
|
+
includeSpamTrash: exports_external.boolean().optional()
|
|
7194
|
+
});
|
|
7195
|
+
messageIdSchema = exports_external.object({
|
|
7196
|
+
args: exports_external.array(exports_external.union([exports_external.string(), exports_external.number(), exports_external.boolean()])).optional(),
|
|
7197
|
+
messageId: exports_external.string().optional()
|
|
7198
|
+
});
|
|
7199
|
+
readMessageSchema = messageIdSchema.extend({
|
|
7200
|
+
body: exports_external.boolean().optional(),
|
|
7201
|
+
html: exports_external.boolean().optional(),
|
|
7202
|
+
format: exports_external.enum(["full", "metadata", "minimal", "raw"]).optional()
|
|
7203
|
+
});
|
|
7204
|
+
attachmentListSchema = messageIdSchema;
|
|
7205
|
+
attachmentDownloadSchema = messageIdSchema.extend({
|
|
7206
|
+
attachmentId: exports_external.string().optional(),
|
|
7207
|
+
filename: exports_external.string().optional(),
|
|
7208
|
+
mimeType: exports_external.string().optional(),
|
|
7209
|
+
dir: exports_external.string().optional(),
|
|
7210
|
+
outputDir: exports_external.string().optional()
|
|
7211
|
+
});
|
|
7212
|
+
historyListSchema = exports_external.object({
|
|
7213
|
+
startHistoryId: exports_external.string(),
|
|
7214
|
+
historyTypes: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())]).optional(),
|
|
7215
|
+
labelId: exports_external.string().optional(),
|
|
7216
|
+
maxResults: exports_external.coerce.number().int().positive().max(500).optional(),
|
|
7217
|
+
pageToken: exports_external.string().optional()
|
|
7218
|
+
});
|
|
7219
|
+
replySchema = messageIdSchema.extend({
|
|
7220
|
+
body: exports_external.string(),
|
|
7221
|
+
html: exports_external.boolean().optional(),
|
|
7222
|
+
isHtml: exports_external.boolean().optional(),
|
|
7223
|
+
cc: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())]).optional(),
|
|
7224
|
+
bcc: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())]).optional()
|
|
7225
|
+
});
|
|
7226
|
+
gmailConnector = defineConnector({
|
|
7227
|
+
meta: {
|
|
7228
|
+
name: "gmail",
|
|
7229
|
+
displayName: "Gmail",
|
|
7230
|
+
description: "Profile-aware Gmail mailbox operations for sync, labels, attachments, history, and replies.",
|
|
7231
|
+
category: "communication",
|
|
7232
|
+
tags: ["google", "gmail", "email", "mailbox"]
|
|
7233
|
+
},
|
|
7234
|
+
auth: {
|
|
7235
|
+
type: "oauth2",
|
|
7236
|
+
supportsProfiles: true,
|
|
7237
|
+
fields: [
|
|
7238
|
+
{ key: "clientId", env: "GMAIL_CLIENT_ID", label: "OAuth client ID" },
|
|
7239
|
+
{ key: "clientSecret", env: "GMAIL_CLIENT_SECRET", label: "OAuth client secret", secret: true }
|
|
7240
|
+
]
|
|
7241
|
+
},
|
|
7242
|
+
createContext: ({ profile }) => ({ profile: profile || "default" }),
|
|
7243
|
+
operations: {
|
|
7244
|
+
"profiles.list": {
|
|
7245
|
+
summary: "List configured Gmail profiles.",
|
|
7246
|
+
execute: () => ({ profiles: listProfiles() })
|
|
7247
|
+
},
|
|
7248
|
+
"profile.get": {
|
|
7249
|
+
summary: "Get the authenticated Gmail profile.",
|
|
7250
|
+
execute: async ({ context }) => requestJson(context.profile, "/users/me/profile", {})
|
|
7251
|
+
},
|
|
7252
|
+
"messages.list": {
|
|
7253
|
+
summary: "List Gmail messages.",
|
|
7254
|
+
inputSchema: listMessagesSchema,
|
|
7255
|
+
execute: async ({ context }, input) => {
|
|
7256
|
+
const labelIds = normalizeStringArray(input.labelIds ?? input.label);
|
|
7257
|
+
return requestJson(context.profile, "/users/me/messages", {
|
|
7258
|
+
maxResults: input.maxResults ?? input.max ?? 50,
|
|
7259
|
+
pageToken: input.pageToken,
|
|
7260
|
+
q: input.q ?? input.query,
|
|
7261
|
+
labelIds: labelIds.length > 0 ? labelIds.join(",") : undefined,
|
|
7262
|
+
includeSpamTrash: input.includeSpamTrash
|
|
7263
|
+
});
|
|
7264
|
+
}
|
|
7265
|
+
},
|
|
7266
|
+
"messages.read": {
|
|
7267
|
+
summary: "Read a Gmail message with optional extracted body.",
|
|
7268
|
+
inputSchema: readMessageSchema,
|
|
7269
|
+
execute: async ({ context }, input) => {
|
|
7270
|
+
const messageId = getMessageId(input);
|
|
7271
|
+
const message = await requestJson(context.profile, `/users/me/messages/${encodeURIComponent(messageId)}`, { format: input.format ?? "full" });
|
|
7272
|
+
const headers = headersToObject(message.payload?.headers ?? []);
|
|
7273
|
+
return {
|
|
7274
|
+
...message,
|
|
7275
|
+
from: headers.From ?? headers.from ?? "",
|
|
7276
|
+
to: headers.To ?? headers.to ?? "",
|
|
7277
|
+
cc: headers.Cc ?? headers.cc ?? "",
|
|
7278
|
+
subject: headers.Subject ?? headers.subject ?? "",
|
|
7279
|
+
date: headers.Date ?? headers.date ?? "",
|
|
7280
|
+
body: input.body ? extractBody(message, Boolean(input.html)) : undefined,
|
|
7281
|
+
size: message.sizeEstimate
|
|
7282
|
+
};
|
|
7283
|
+
}
|
|
7284
|
+
},
|
|
7285
|
+
"messages.getRaw": {
|
|
7286
|
+
summary: "Read raw base64url Gmail message content.",
|
|
7287
|
+
inputSchema: messageIdSchema,
|
|
7288
|
+
execute: async ({ context }, input) => {
|
|
7289
|
+
const messageId = getMessageId(input);
|
|
7290
|
+
return requestJson(context.profile, `/users/me/messages/${encodeURIComponent(messageId)}`, { format: "raw" });
|
|
7291
|
+
}
|
|
7292
|
+
},
|
|
7293
|
+
"messages.mark-read": {
|
|
7294
|
+
summary: "Mark a message as read.",
|
|
7295
|
+
inputSchema: messageIdSchema,
|
|
7296
|
+
execute: async ({ context }, input) => modifyMessage(context.profile, getMessageId(input), undefined, ["UNREAD"])
|
|
7297
|
+
},
|
|
7298
|
+
"messages.mark-unread": {
|
|
7299
|
+
summary: "Mark a message as unread.",
|
|
7300
|
+
inputSchema: messageIdSchema,
|
|
7301
|
+
execute: async ({ context }, input) => modifyMessage(context.profile, getMessageId(input), ["UNREAD"], undefined)
|
|
7302
|
+
},
|
|
7303
|
+
"messages.archive": {
|
|
7304
|
+
summary: "Archive a message by removing the INBOX label.",
|
|
7305
|
+
inputSchema: messageIdSchema,
|
|
7306
|
+
execute: async ({ context }, input) => modifyMessage(context.profile, getMessageId(input), undefined, ["INBOX"])
|
|
7307
|
+
},
|
|
7308
|
+
"messages.star": {
|
|
7309
|
+
summary: "Star a message.",
|
|
7310
|
+
inputSchema: messageIdSchema,
|
|
7311
|
+
execute: async ({ context }, input) => modifyMessage(context.profile, getMessageId(input), ["STARRED"], undefined)
|
|
7312
|
+
},
|
|
7313
|
+
"messages.reply": {
|
|
7314
|
+
summary: "Reply to a Gmail message in the same thread.",
|
|
7315
|
+
inputSchema: replySchema,
|
|
7316
|
+
execute: async ({ context }, input) => replyToMessage(context.profile, getMessageId(input), input)
|
|
7317
|
+
},
|
|
7318
|
+
"attachments.list": {
|
|
7319
|
+
summary: "List Gmail message attachments.",
|
|
7320
|
+
inputSchema: attachmentListSchema,
|
|
7321
|
+
execute: async ({ context }, input) => {
|
|
7322
|
+
const message = await requestJson(context.profile, `/users/me/messages/${encodeURIComponent(getMessageId(input))}`, { format: "full" });
|
|
7323
|
+
return collectAttachments(message.payload);
|
|
7324
|
+
}
|
|
7325
|
+
},
|
|
7326
|
+
"attachments.download": {
|
|
7327
|
+
summary: "Download one or all Gmail message attachments to disk.",
|
|
7328
|
+
inputSchema: attachmentDownloadSchema,
|
|
7329
|
+
execute: async ({ context }, input) => downloadAttachments(context.profile, input)
|
|
7330
|
+
},
|
|
7331
|
+
"labels.list": {
|
|
7332
|
+
summary: "List Gmail labels.",
|
|
7333
|
+
execute: async ({ context }) => requestJson(context.profile, "/users/me/labels", {})
|
|
7334
|
+
},
|
|
7335
|
+
"history.list": {
|
|
7336
|
+
summary: "List Gmail mailbox history from a history id.",
|
|
7337
|
+
inputSchema: historyListSchema,
|
|
7338
|
+
execute: async ({ context }, input) => requestJson(context.profile, "/users/me/history", {
|
|
7339
|
+
startHistoryId: input.startHistoryId,
|
|
7340
|
+
historyTypes: normalizeStringArray(input.historyTypes).join(",") || undefined,
|
|
7341
|
+
labelId: input.labelId,
|
|
7342
|
+
maxResults: input.maxResults,
|
|
7343
|
+
pageToken: input.pageToken
|
|
7344
|
+
})
|
|
7345
|
+
}
|
|
7346
|
+
}
|
|
7347
|
+
});
|
|
7348
|
+
});
|
|
7349
|
+
|
|
7350
|
+
// src/core/connectors/googledrive.ts
|
|
7351
|
+
import { existsSync as existsSync3, mkdirSync as mkdirSync2, readFileSync as readFileSync2, readdirSync as readdirSync2, writeFileSync as writeFileSync2 } from "fs";
|
|
7352
|
+
import { homedir as homedir2 } from "os";
|
|
7353
|
+
import { basename as basename2, join as join3 } from "path";
|
|
7354
|
+
async function requestJson2(profile, path, params) {
|
|
7355
|
+
const response = await request(profile, path, params);
|
|
7356
|
+
const text = await response.text();
|
|
7357
|
+
return text ? JSON.parse(text) : {};
|
|
7358
|
+
}
|
|
7359
|
+
async function requestBinary(profile, path, params) {
|
|
7360
|
+
return (await request(profile, path, params)).arrayBuffer();
|
|
7361
|
+
}
|
|
7362
|
+
async function request(profile, path, params) {
|
|
7363
|
+
const token = await getValidAccessToken2(profile);
|
|
7364
|
+
const url = new URL(`${DRIVE_API_BASE}${path}`);
|
|
7365
|
+
for (const [key, value] of Object.entries(params)) {
|
|
7366
|
+
if (value !== undefined && value !== null && value !== "")
|
|
7367
|
+
url.searchParams.set(key, String(value));
|
|
7368
|
+
}
|
|
7369
|
+
const response = await fetch(url, { headers: { Authorization: `Bearer ${token}`, Accept: "application/json" } });
|
|
7370
|
+
if (!response.ok) {
|
|
7371
|
+
const body = await response.text().catch(() => "");
|
|
7372
|
+
throw new Error(`Google Drive request failed (${response.status}): ${extractGoogleError(body) || response.statusText}`);
|
|
7373
|
+
}
|
|
7374
|
+
return response;
|
|
7375
|
+
}
|
|
7376
|
+
async function getValidAccessToken2(profile) {
|
|
7377
|
+
if (process.env.GOOGLE_ACCESS_TOKEN)
|
|
7378
|
+
return process.env.GOOGLE_ACCESS_TOKEN;
|
|
7379
|
+
const tokens = loadTokens2(profile);
|
|
7380
|
+
if (!tokens?.accessToken && !tokens?.refreshToken) {
|
|
7381
|
+
throw new Error(`Google Drive profile "${profile}" is not authenticated. Run: connectors auth googledrive`);
|
|
7382
|
+
}
|
|
7383
|
+
if (tokens.accessToken && (!tokens.expiresAt || Date.now() < tokens.expiresAt - REFRESH_BUFFER_MS2))
|
|
7384
|
+
return tokens.accessToken;
|
|
7385
|
+
if (!tokens.refreshToken)
|
|
7386
|
+
return tokens.accessToken ?? "";
|
|
7387
|
+
return (await refreshAccessToken2(profile, tokens)).accessToken ?? "";
|
|
7388
|
+
}
|
|
7389
|
+
async function refreshAccessToken2(profile, currentTokens) {
|
|
7390
|
+
const credentials = loadCredentials2(profile);
|
|
7391
|
+
if (!credentials.clientId || !credentials.clientSecret)
|
|
7392
|
+
throw new Error("Google Drive OAuth credentials are not configured. Run: connectors auth googledrive");
|
|
7393
|
+
if (!currentTokens.refreshToken)
|
|
7394
|
+
throw new Error(`Google Drive profile "${profile}" has no refresh token. Run: connectors auth googledrive`);
|
|
7395
|
+
const response = await fetch(TOKEN_URL2, {
|
|
7396
|
+
method: "POST",
|
|
7397
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
7398
|
+
body: new URLSearchParams({
|
|
7399
|
+
client_id: credentials.clientId,
|
|
7400
|
+
client_secret: credentials.clientSecret,
|
|
7401
|
+
refresh_token: currentTokens.refreshToken,
|
|
7402
|
+
grant_type: "refresh_token"
|
|
7403
|
+
})
|
|
7404
|
+
});
|
|
7405
|
+
const data = await response.json().catch(() => ({}));
|
|
7406
|
+
if (!response.ok || !data.access_token)
|
|
7407
|
+
throw new Error(`Google Drive token refresh failed: ${data.error_description || data.error || response.statusText}`);
|
|
7408
|
+
const tokens = {
|
|
7409
|
+
accessToken: data.access_token,
|
|
7410
|
+
refreshToken: currentTokens.refreshToken,
|
|
7411
|
+
expiresAt: Date.now() + (data.expires_in ?? 3600) * 1000,
|
|
7412
|
+
tokenType: data.token_type ?? currentTokens.tokenType,
|
|
7413
|
+
scope: data.scope ?? currentTokens.scope
|
|
7414
|
+
};
|
|
7415
|
+
saveTokens2(profile, tokens);
|
|
7416
|
+
return tokens;
|
|
7417
|
+
}
|
|
7418
|
+
function listProfiles2() {
|
|
7419
|
+
const profiles = new Set;
|
|
7420
|
+
for (const baseDir of configDirs2()) {
|
|
7421
|
+
const profilesDir = join3(baseDir, "profiles");
|
|
7422
|
+
if (!existsSync3(profilesDir))
|
|
7423
|
+
continue;
|
|
7424
|
+
for (const entry of readdirSync2(profilesDir, { withFileTypes: true })) {
|
|
7425
|
+
if (entry.isDirectory())
|
|
7426
|
+
profiles.add(entry.name);
|
|
7427
|
+
if (entry.isFile() && entry.name.endsWith(".json"))
|
|
7428
|
+
profiles.add(basename2(entry.name, ".json"));
|
|
7429
|
+
}
|
|
7430
|
+
}
|
|
7431
|
+
return Array.from(profiles).sort((a, b) => a.localeCompare(b));
|
|
7432
|
+
}
|
|
7433
|
+
function loadCredentials2(profile) {
|
|
7434
|
+
const envClientId = process.env.GOOGLE_CLIENT_ID;
|
|
7435
|
+
const envClientSecret = process.env.GOOGLE_CLIENT_SECRET;
|
|
7436
|
+
if (envClientId && envClientSecret)
|
|
7437
|
+
return { clientId: envClientId, clientSecret: envClientSecret };
|
|
7438
|
+
for (const baseDir of configDirs2()) {
|
|
7439
|
+
const credentials = {
|
|
7440
|
+
...readJson2(join3(baseDir, "credentials.json")),
|
|
7441
|
+
...readJson2(join3(baseDir, "profiles", profile, "config.json"))
|
|
7442
|
+
};
|
|
7443
|
+
if (credentials.clientId || credentials.clientSecret)
|
|
7444
|
+
return credentials;
|
|
7445
|
+
}
|
|
7446
|
+
return {};
|
|
7447
|
+
}
|
|
7448
|
+
function loadTokens2(profile) {
|
|
7449
|
+
for (const baseDir of configDirs2()) {
|
|
7450
|
+
const fromProfile = readJson2(join3(baseDir, "profiles", profile, "tokens.json"));
|
|
7451
|
+
if (fromProfile)
|
|
7452
|
+
return fromProfile;
|
|
7453
|
+
const flat = readJson2(join3(baseDir, "profiles", `${profile}.json`));
|
|
7454
|
+
if (flat)
|
|
7455
|
+
return flat.tokens ?? (flat.accessToken || flat.refreshToken ? flat : null);
|
|
7456
|
+
}
|
|
7457
|
+
return null;
|
|
7458
|
+
}
|
|
7459
|
+
function saveTokens2(profile, tokens) {
|
|
7460
|
+
const baseDir = configDirs2().find((dir) => existsSync3(dir)) ?? configDirs2()[0];
|
|
7461
|
+
const profileDir = join3(baseDir, "profiles", profile);
|
|
7462
|
+
mkdirSync2(profileDir, { recursive: true });
|
|
7463
|
+
writeFileSync2(join3(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
|
|
7464
|
+
}
|
|
7465
|
+
function configDirs2() {
|
|
7466
|
+
const explicit = process.env.HASNA_GOOGLE_DRIVE_CONNECTOR_DIR ?? process.env.GOOGLE_DRIVE_CONNECTOR_DIR;
|
|
7467
|
+
if (explicit)
|
|
7468
|
+
return [explicit];
|
|
7469
|
+
const baseDir = process.env.HASNA_CONNECTORS_DIR ?? join3(homedir2(), ".hasna", "connectors");
|
|
7470
|
+
return [join3(baseDir, "connect-googledrive"), join3(baseDir, "googledrive")];
|
|
7471
|
+
}
|
|
7472
|
+
function readJson2(path) {
|
|
7473
|
+
if (!existsSync3(path))
|
|
7474
|
+
return null;
|
|
7475
|
+
try {
|
|
7476
|
+
return JSON.parse(readFileSync2(path, "utf8"));
|
|
7477
|
+
} catch {
|
|
7478
|
+
return null;
|
|
7479
|
+
}
|
|
7480
|
+
}
|
|
7481
|
+
function defaultExportMimeType(googleMimeType) {
|
|
7482
|
+
if (googleMimeType.endsWith(".document"))
|
|
7483
|
+
return DEFAULT_EXPORT_FORMATS.document;
|
|
7484
|
+
if (googleMimeType.endsWith(".spreadsheet"))
|
|
7485
|
+
return DEFAULT_EXPORT_FORMATS.spreadsheet;
|
|
7486
|
+
if (googleMimeType.endsWith(".presentation"))
|
|
7487
|
+
return DEFAULT_EXPORT_FORMATS.presentation;
|
|
7488
|
+
if (googleMimeType.endsWith(".drawing"))
|
|
7489
|
+
return DEFAULT_EXPORT_FORMATS.drawing;
|
|
7490
|
+
throw new Error(`Cannot export Google Workspace file type: ${googleMimeType}`);
|
|
7491
|
+
}
|
|
7492
|
+
function extensionForMimeType(mimeType) {
|
|
7493
|
+
return EXPORT_EXTENSIONS[mimeType] ?? "";
|
|
7494
|
+
}
|
|
7495
|
+
function extractGoogleError(body) {
|
|
7496
|
+
if (!body)
|
|
7497
|
+
return "";
|
|
7498
|
+
try {
|
|
7499
|
+
const parsed = JSON.parse(body);
|
|
7500
|
+
return parsed.error?.message ?? body;
|
|
7501
|
+
} catch {
|
|
7502
|
+
return body;
|
|
7503
|
+
}
|
|
7504
|
+
}
|
|
7505
|
+
var DRIVE_API_BASE = "https://www.googleapis.com/drive/v3", TOKEN_URL2 = "https://oauth2.googleapis.com/token", REFRESH_BUFFER_MS2, DEFAULT_FILE_FIELDS, DEFAULT_EXPORT_FORMATS, EXPORT_EXTENSIONS, listFilesSchema, listDrivesSchema, fileIdSchema, downloadSchema, googleDriveConnector;
|
|
7506
|
+
var init_googledrive = __esm(() => {
|
|
7507
|
+
init_zod();
|
|
7508
|
+
init_connector();
|
|
7509
|
+
REFRESH_BUFFER_MS2 = 5 * 60 * 1000;
|
|
7510
|
+
DEFAULT_FILE_FIELDS = [
|
|
7511
|
+
"id",
|
|
7512
|
+
"name",
|
|
7513
|
+
"mimeType",
|
|
7514
|
+
"parents",
|
|
7515
|
+
"version",
|
|
7516
|
+
"md5Checksum",
|
|
7517
|
+
"size",
|
|
7518
|
+
"modifiedTime",
|
|
7519
|
+
"createdTime",
|
|
7520
|
+
"trashed",
|
|
7521
|
+
"webViewLink",
|
|
7522
|
+
"webContentLink"
|
|
7523
|
+
].join(",");
|
|
7524
|
+
DEFAULT_EXPORT_FORMATS = {
|
|
7525
|
+
document: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
7526
|
+
spreadsheet: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
7527
|
+
presentation: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
7528
|
+
drawing: "image/png"
|
|
7529
|
+
};
|
|
7530
|
+
EXPORT_EXTENSIONS = {
|
|
7531
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": ".docx",
|
|
7532
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ".xlsx",
|
|
7533
|
+
"application/vnd.openxmlformats-officedocument.presentationml.presentation": ".pptx",
|
|
7534
|
+
"application/pdf": ".pdf",
|
|
7535
|
+
"text/plain": ".txt",
|
|
7536
|
+
"text/csv": ".csv",
|
|
7537
|
+
"image/png": ".png",
|
|
7538
|
+
"image/jpeg": ".jpg",
|
|
7539
|
+
"image/svg+xml": ".svg"
|
|
7540
|
+
};
|
|
7541
|
+
listFilesSchema = exports_external.object({
|
|
7542
|
+
pageSize: exports_external.coerce.number().int().positive().max(1000).optional(),
|
|
7543
|
+
pageToken: exports_external.string().optional(),
|
|
7544
|
+
q: exports_external.string().optional(),
|
|
7545
|
+
fields: exports_external.string().optional(),
|
|
7546
|
+
orderBy: exports_external.string().optional(),
|
|
7547
|
+
corpora: exports_external.enum(["user", "drive", "allDrives"]).optional(),
|
|
7548
|
+
driveId: exports_external.string().optional(),
|
|
7549
|
+
supportsAllDrives: exports_external.boolean().optional(),
|
|
7550
|
+
includeItemsFromAllDrives: exports_external.boolean().optional()
|
|
7551
|
+
});
|
|
7552
|
+
listDrivesSchema = exports_external.object({
|
|
7553
|
+
pageSize: exports_external.coerce.number().int().positive().max(100).optional(),
|
|
7554
|
+
pageToken: exports_external.string().optional(),
|
|
7555
|
+
q: exports_external.string().optional()
|
|
7556
|
+
});
|
|
7557
|
+
fileIdSchema = exports_external.object({
|
|
7558
|
+
fileId: exports_external.string(),
|
|
7559
|
+
fields: exports_external.string().optional()
|
|
7560
|
+
});
|
|
7561
|
+
downloadSchema = exports_external.object({
|
|
7562
|
+
fileId: exports_external.string(),
|
|
7563
|
+
file: exports_external.object({
|
|
7564
|
+
id: exports_external.string(),
|
|
7565
|
+
name: exports_external.string(),
|
|
7566
|
+
mimeType: exports_external.string()
|
|
7567
|
+
}).optional(),
|
|
7568
|
+
exportMimeType: exports_external.string().optional()
|
|
7569
|
+
});
|
|
7570
|
+
googleDriveConnector = defineConnector({
|
|
7571
|
+
meta: {
|
|
7572
|
+
name: "googledrive",
|
|
7573
|
+
displayName: "Google Drive",
|
|
7574
|
+
description: "Profile-aware Google Drive discovery and file download operations.",
|
|
7575
|
+
category: "storage",
|
|
7576
|
+
tags: ["google", "drive", "files", "storage"]
|
|
7577
|
+
},
|
|
7578
|
+
auth: {
|
|
7579
|
+
type: "oauth2",
|
|
7580
|
+
supportsProfiles: true,
|
|
7581
|
+
fields: [
|
|
7582
|
+
{ key: "clientId", env: "GOOGLE_CLIENT_ID", label: "OAuth client ID" },
|
|
7583
|
+
{ key: "clientSecret", env: "GOOGLE_CLIENT_SECRET", label: "OAuth client secret", secret: true }
|
|
7584
|
+
]
|
|
7585
|
+
},
|
|
7586
|
+
createContext: ({ profile }) => ({ profile: profile || "default" }),
|
|
7587
|
+
operations: {
|
|
7588
|
+
"profiles.list": {
|
|
7589
|
+
summary: "List configured Google Drive profiles.",
|
|
7590
|
+
execute: () => ({ profiles: listProfiles2() })
|
|
7591
|
+
},
|
|
7592
|
+
"files.list": {
|
|
7593
|
+
summary: "List Google Drive files.",
|
|
7594
|
+
inputSchema: listFilesSchema,
|
|
7595
|
+
execute: async ({ context }, input) => requestJson2(context.profile, "/files", {
|
|
7596
|
+
pageSize: input.pageSize ?? 1000,
|
|
7597
|
+
pageToken: input.pageToken,
|
|
7598
|
+
q: input.q,
|
|
7599
|
+
fields: input.fields ?? `nextPageToken,files(${DEFAULT_FILE_FIELDS})`,
|
|
7600
|
+
orderBy: input.orderBy ?? "modifiedTime desc",
|
|
7601
|
+
corpora: input.corpora,
|
|
7602
|
+
driveId: input.driveId,
|
|
7603
|
+
supportsAllDrives: input.supportsAllDrives ?? true,
|
|
7604
|
+
includeItemsFromAllDrives: input.includeItemsFromAllDrives ?? false
|
|
7605
|
+
})
|
|
7606
|
+
},
|
|
7607
|
+
"files.get": {
|
|
7608
|
+
summary: "Get Google Drive file metadata.",
|
|
7609
|
+
inputSchema: fileIdSchema,
|
|
7610
|
+
execute: async ({ context }, input) => requestJson2(context.profile, `/files/${encodeURIComponent(input.fileId)}`, {
|
|
7611
|
+
fields: input.fields ?? DEFAULT_FILE_FIELDS,
|
|
7612
|
+
supportsAllDrives: true
|
|
7613
|
+
})
|
|
7614
|
+
},
|
|
7615
|
+
"files.download": {
|
|
7616
|
+
summary: "Download or export a Google Drive file as base64 content.",
|
|
7617
|
+
inputSchema: downloadSchema,
|
|
7618
|
+
execute: async ({ context }, input) => {
|
|
7619
|
+
const file = input.file ?? await requestJson2(context.profile, `/files/${encodeURIComponent(input.fileId)}`, { fields: DEFAULT_FILE_FIELDS, supportsAllDrives: true });
|
|
7620
|
+
const exportMimeType = file.mimeType.startsWith("application/vnd.google-apps.") ? input.exportMimeType ?? defaultExportMimeType(file.mimeType) : undefined;
|
|
7621
|
+
const data = await requestBinary(context.profile, exportMimeType ? `/files/${encodeURIComponent(file.id)}/export` : `/files/${encodeURIComponent(file.id)}`, exportMimeType ? { mimeType: exportMimeType, supportsAllDrives: true } : { alt: "media", supportsAllDrives: true });
|
|
7622
|
+
const mimeType = exportMimeType ?? file.mimeType ?? "application/octet-stream";
|
|
7623
|
+
return {
|
|
7624
|
+
dataBase64: Buffer.from(data).toString("base64"),
|
|
7625
|
+
filename: exportMimeType ? `${file.name}${extensionForMimeType(exportMimeType)}` : file.name,
|
|
7626
|
+
mimeType
|
|
7627
|
+
};
|
|
7628
|
+
}
|
|
7629
|
+
},
|
|
7630
|
+
"drives.list": {
|
|
7631
|
+
summary: "List Google shared drives.",
|
|
7632
|
+
inputSchema: listDrivesSchema,
|
|
7633
|
+
execute: async ({ context }, input) => requestJson2(context.profile, "/drives", {
|
|
7634
|
+
pageSize: input.pageSize ?? 100,
|
|
7635
|
+
pageToken: input.pageToken,
|
|
7636
|
+
q: input.q
|
|
7637
|
+
})
|
|
7638
|
+
}
|
|
7639
|
+
}
|
|
7640
|
+
});
|
|
7641
|
+
});
|
|
7642
|
+
|
|
6916
7643
|
// node_modules/@hasna/cloud/dist/index.js
|
|
6917
7644
|
var exports_dist = {};
|
|
6918
7645
|
__export(exports_dist, {
|
|
@@ -6986,27 +7713,27 @@ __export(exports_dist, {
|
|
|
6986
7713
|
import { createRequire } from "module";
|
|
6987
7714
|
import { Database } from "bun:sqlite";
|
|
6988
7715
|
import {
|
|
6989
|
-
existsSync as
|
|
6990
|
-
mkdirSync,
|
|
6991
|
-
readdirSync,
|
|
7716
|
+
existsSync as existsSync4,
|
|
7717
|
+
mkdirSync as mkdirSync3,
|
|
7718
|
+
readdirSync as readdirSync3,
|
|
6992
7719
|
copyFileSync
|
|
6993
7720
|
} from "fs";
|
|
6994
|
-
import { homedir } from "os";
|
|
6995
|
-
import { join as join2, relative } from "path";
|
|
6996
|
-
import { existsSync as existsSync22, mkdirSync as mkdirSync2, readFileSync, writeFileSync } from "fs";
|
|
6997
|
-
import { homedir as homedir2 } from "os";
|
|
6998
|
-
import { join as join22 } from "path";
|
|
6999
|
-
import { readdirSync as readdirSync2, existsSync as existsSync3 } from "fs";
|
|
7000
|
-
import { join as join3 } from "path";
|
|
7001
7721
|
import { homedir as homedir3 } from "os";
|
|
7722
|
+
import { join as join4, relative } from "path";
|
|
7723
|
+
import { existsSync as existsSync22, mkdirSync as mkdirSync22, readFileSync as readFileSync3, writeFileSync as writeFileSync3 } from "fs";
|
|
7724
|
+
import { homedir as homedir22 } from "os";
|
|
7725
|
+
import { join as join22 } from "path";
|
|
7726
|
+
import { readdirSync as readdirSync22, existsSync as existsSync32 } from "fs";
|
|
7727
|
+
import { join as join32 } from "path";
|
|
7728
|
+
import { homedir as homedir32 } from "os";
|
|
7002
7729
|
import { hostname } from "os";
|
|
7003
|
-
import { existsSync as
|
|
7730
|
+
import { existsSync as existsSync42, readFileSync as readFileSync22 } from "fs";
|
|
7004
7731
|
import { homedir as homedir4 } from "os";
|
|
7005
|
-
import { join as
|
|
7006
|
-
import { existsSync as existsSync5, readdirSync as
|
|
7732
|
+
import { join as join42 } from "path";
|
|
7733
|
+
import { existsSync as existsSync5, readdirSync as readdirSync32 } from "fs";
|
|
7007
7734
|
import { join as join5 } from "path";
|
|
7008
7735
|
import { join as join6, dirname as dirname2 } from "path";
|
|
7009
|
-
import { existsSync as existsSync6, writeFileSync as
|
|
7736
|
+
import { existsSync as existsSync6, writeFileSync as writeFileSync22, unlinkSync, mkdirSync as mkdirSync32 } from "fs";
|
|
7010
7737
|
import { homedir as homedir5, platform } from "os";
|
|
7011
7738
|
function __accessProp2(key) {
|
|
7012
7739
|
return this[key];
|
|
@@ -7889,33 +8616,33 @@ function custom2(check, _params = {}, fatal) {
|
|
|
7889
8616
|
return ZodAny2.create();
|
|
7890
8617
|
}
|
|
7891
8618
|
function getDataDir(serviceName) {
|
|
7892
|
-
const dir =
|
|
7893
|
-
|
|
8619
|
+
const dir = join4(HASNA_DIR, serviceName);
|
|
8620
|
+
mkdirSync3(dir, { recursive: true });
|
|
7894
8621
|
return dir;
|
|
7895
8622
|
}
|
|
7896
8623
|
function getDbPath(serviceName) {
|
|
7897
8624
|
const dir = getDataDir(serviceName);
|
|
7898
|
-
return
|
|
8625
|
+
return join4(dir, `${serviceName}.db`);
|
|
7899
8626
|
}
|
|
7900
8627
|
function migrateDotfile(serviceName) {
|
|
7901
|
-
const legacyDir =
|
|
7902
|
-
const newDir =
|
|
7903
|
-
if (!
|
|
8628
|
+
const legacyDir = join4(homedir3(), `.${serviceName}`);
|
|
8629
|
+
const newDir = join4(HASNA_DIR, serviceName);
|
|
8630
|
+
if (!existsSync4(legacyDir))
|
|
7904
8631
|
return [];
|
|
7905
|
-
if (
|
|
8632
|
+
if (existsSync4(newDir))
|
|
7906
8633
|
return [];
|
|
7907
|
-
|
|
8634
|
+
mkdirSync3(newDir, { recursive: true });
|
|
7908
8635
|
const migrated = [];
|
|
7909
8636
|
copyDirRecursive(legacyDir, newDir, legacyDir, migrated);
|
|
7910
8637
|
return migrated;
|
|
7911
8638
|
}
|
|
7912
8639
|
function copyDirRecursive(src, dest, root, migrated) {
|
|
7913
|
-
const entries =
|
|
8640
|
+
const entries = readdirSync3(src, { withFileTypes: true });
|
|
7914
8641
|
for (const entry of entries) {
|
|
7915
|
-
const srcPath =
|
|
7916
|
-
const destPath =
|
|
8642
|
+
const srcPath = join4(src, entry.name);
|
|
8643
|
+
const destPath = join4(dest, entry.name);
|
|
7917
8644
|
if (entry.isDirectory()) {
|
|
7918
|
-
|
|
8645
|
+
mkdirSync3(destPath, { recursive: true });
|
|
7919
8646
|
copyDirRecursive(srcPath, destPath, root, migrated);
|
|
7920
8647
|
} else {
|
|
7921
8648
|
copyFileSync(srcPath, destPath);
|
|
@@ -7924,10 +8651,10 @@ function copyDirRecursive(src, dest, root, migrated) {
|
|
|
7924
8651
|
}
|
|
7925
8652
|
}
|
|
7926
8653
|
function hasLegacyDotfile(serviceName) {
|
|
7927
|
-
return
|
|
8654
|
+
return existsSync4(join4(homedir3(), `.${serviceName}`));
|
|
7928
8655
|
}
|
|
7929
8656
|
function getHasnaDir() {
|
|
7930
|
-
|
|
8657
|
+
mkdirSync3(HASNA_DIR, { recursive: true });
|
|
7931
8658
|
return HASNA_DIR;
|
|
7932
8659
|
}
|
|
7933
8660
|
function getConfigDir() {
|
|
@@ -7941,15 +8668,15 @@ function getCloudConfig() {
|
|
|
7941
8668
|
return CloudConfigSchema.parse({});
|
|
7942
8669
|
}
|
|
7943
8670
|
try {
|
|
7944
|
-
const raw =
|
|
8671
|
+
const raw = readFileSync3(CONFIG_PATH, "utf-8");
|
|
7945
8672
|
return CloudConfigSchema.parse(JSON.parse(raw));
|
|
7946
8673
|
} catch {
|
|
7947
8674
|
return CloudConfigSchema.parse({});
|
|
7948
8675
|
}
|
|
7949
8676
|
}
|
|
7950
8677
|
function saveCloudConfig(config) {
|
|
7951
|
-
|
|
7952
|
-
|
|
8678
|
+
mkdirSync22(CONFIG_DIR, { recursive: true });
|
|
8679
|
+
writeFileSync3(CONFIG_PATH, JSON.stringify(config, null, 2) + `
|
|
7953
8680
|
`, "utf-8");
|
|
7954
8681
|
}
|
|
7955
8682
|
function getConnectionString(dbName) {
|
|
@@ -7979,11 +8706,11 @@ function isSyncExcludedTable(table) {
|
|
|
7979
8706
|
return SYNC_EXCLUDED_TABLE_PATTERNS.some((p) => p.test(table));
|
|
7980
8707
|
}
|
|
7981
8708
|
function discoverServices() {
|
|
7982
|
-
const dataDir =
|
|
7983
|
-
if (!
|
|
8709
|
+
const dataDir = join32(homedir32(), ".hasna");
|
|
8710
|
+
if (!existsSync32(dataDir))
|
|
7984
8711
|
return [];
|
|
7985
8712
|
try {
|
|
7986
|
-
const entries =
|
|
8713
|
+
const entries = readdirSync22(dataDir, { withFileTypes: true });
|
|
7987
8714
|
return entries.filter((e) => {
|
|
7988
8715
|
if (!e.isDirectory())
|
|
7989
8716
|
return false;
|
|
@@ -8001,24 +8728,24 @@ function discoverSyncableServices() {
|
|
|
8001
8728
|
return local.filter((s) => pgSet.has(s));
|
|
8002
8729
|
}
|
|
8003
8730
|
function getServiceDbPath(service) {
|
|
8004
|
-
const dataDir =
|
|
8005
|
-
if (!
|
|
8731
|
+
const dataDir = join32(homedir32(), ".hasna", service);
|
|
8732
|
+
if (!existsSync32(dataDir))
|
|
8006
8733
|
return null;
|
|
8007
8734
|
const candidates = [
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
|
|
8735
|
+
join32(dataDir, `${service}.db`),
|
|
8736
|
+
join32(dataDir, "data.db"),
|
|
8737
|
+
join32(dataDir, "database.db")
|
|
8011
8738
|
];
|
|
8012
8739
|
try {
|
|
8013
|
-
const files =
|
|
8740
|
+
const files = readdirSync22(dataDir);
|
|
8014
8741
|
for (const f of files) {
|
|
8015
8742
|
if (f.endsWith(".db") && !f.endsWith("-wal") && !f.endsWith("-shm")) {
|
|
8016
|
-
candidates.push(
|
|
8743
|
+
candidates.push(join32(dataDir, f));
|
|
8017
8744
|
}
|
|
8018
8745
|
}
|
|
8019
8746
|
} catch {}
|
|
8020
8747
|
for (const p of candidates) {
|
|
8021
|
-
if (
|
|
8748
|
+
if (existsSync32(p))
|
|
8022
8749
|
return p;
|
|
8023
8750
|
}
|
|
8024
8751
|
return null;
|
|
@@ -8325,9 +9052,9 @@ async function syncTransfer(source, target, options, _direction) {
|
|
|
8325
9052
|
const batch = rows.slice(offset, offset + batchSize);
|
|
8326
9053
|
try {
|
|
8327
9054
|
if (isAsyncAdapter(target)) {
|
|
8328
|
-
await batchUpsertPg(target, table, columns, updateCols, pkColumns, batch
|
|
9055
|
+
await batchUpsertPg(target, table, columns, updateCols, pkColumns, batch);
|
|
8329
9056
|
} else {
|
|
8330
|
-
batchUpsertSqlite(target, table, columns, updateCols, pkColumns, batch
|
|
9057
|
+
batchUpsertSqlite(target, table, columns, updateCols, pkColumns, batch);
|
|
8331
9058
|
}
|
|
8332
9059
|
result.rowsWritten += batch.length;
|
|
8333
9060
|
} catch (err) {
|
|
@@ -8374,7 +9101,7 @@ async function syncTransfer(source, target, options, _direction) {
|
|
|
8374
9101
|
}
|
|
8375
9102
|
return results;
|
|
8376
9103
|
}
|
|
8377
|
-
async function batchUpsertPg(target, table, columns, updateCols, primaryKeys, batch
|
|
9104
|
+
async function batchUpsertPg(target, table, columns, updateCols, primaryKeys, batch) {
|
|
8378
9105
|
if (batch.length === 0)
|
|
8379
9106
|
return;
|
|
8380
9107
|
const colList = columns.map((c) => `"${c}"`).join(", ");
|
|
@@ -8384,22 +9111,20 @@ async function batchUpsertPg(target, table, columns, updateCols, primaryKeys, ba
|
|
|
8384
9111
|
}).join(", ");
|
|
8385
9112
|
const pkList = primaryKeys.map((c) => `"${c}"`).join(", ");
|
|
8386
9113
|
const setClause = updateCols.length > 0 ? updateCols.map((c) => `"${c}" = EXCLUDED."${c}"`).join(", ") : `"${primaryKeys[0]}" = EXCLUDED."${primaryKeys[0]}"`;
|
|
8387
|
-
const whereClause = conflictColumn && updateCols.includes(conflictColumn) ? ` WHERE "${table}"."${conflictColumn}" IS NULL OR EXCLUDED."${conflictColumn}" >= "${table}"."${conflictColumn}"` : "";
|
|
8388
9114
|
const sql = `INSERT INTO "${table}" (${colList}) VALUES ${valuePlaceholders}
|
|
8389
|
-
ON CONFLICT (${pkList}) DO UPDATE SET ${setClause}
|
|
9115
|
+
ON CONFLICT (${pkList}) DO UPDATE SET ${setClause}`;
|
|
8390
9116
|
const params = batch.flatMap((row) => columns.map((c) => row[c] ?? null));
|
|
8391
9117
|
await target.run(sql, ...params);
|
|
8392
9118
|
}
|
|
8393
|
-
function batchUpsertSqlite(target, table, columns, updateCols, primaryKeys, batch
|
|
9119
|
+
function batchUpsertSqlite(target, table, columns, updateCols, primaryKeys, batch) {
|
|
8394
9120
|
if (batch.length === 0)
|
|
8395
9121
|
return;
|
|
8396
9122
|
const colList = columns.map((c) => `"${c}"`).join(", ");
|
|
8397
9123
|
const valuePlaceholders = batch.map(() => `(${columns.map(() => "?").join(", ")})`).join(", ");
|
|
8398
9124
|
const pkList = primaryKeys.map((c) => `"${c}"`).join(", ");
|
|
8399
9125
|
const setClause = updateCols.length > 0 ? updateCols.map((c) => `"${c}" = EXCLUDED."${c}"`).join(", ") : `"${primaryKeys[0]}" = EXCLUDED."${primaryKeys[0]}"`;
|
|
8400
|
-
const whereClause = conflictColumn && updateCols.includes(conflictColumn) ? ` WHERE "${table}"."${conflictColumn}" IS NULL OR EXCLUDED."${conflictColumn}" >= "${table}"."${conflictColumn}"` : "";
|
|
8401
9126
|
const sql = `INSERT INTO "${table}" (${colList}) VALUES ${valuePlaceholders}
|
|
8402
|
-
ON CONFLICT (${pkList}) DO UPDATE SET ${setClause}
|
|
9127
|
+
ON CONFLICT (${pkList}) DO UPDATE SET ${setClause}`;
|
|
8403
9128
|
const params = batch.flatMap((row) => columns.map((c) => coerceForSqlite(row[c])));
|
|
8404
9129
|
target.run(sql, ...params);
|
|
8405
9130
|
}
|
|
@@ -8939,10 +9664,10 @@ function resetAllSyncMeta(db) {
|
|
|
8939
9664
|
}
|
|
8940
9665
|
function getAutoSyncConfig() {
|
|
8941
9666
|
try {
|
|
8942
|
-
if (!
|
|
9667
|
+
if (!existsSync42(AUTO_SYNC_CONFIG_PATH)) {
|
|
8943
9668
|
return { ...DEFAULT_AUTO_SYNC_CONFIG };
|
|
8944
9669
|
}
|
|
8945
|
-
const raw = JSON.parse(
|
|
9670
|
+
const raw = JSON.parse(readFileSync22(AUTO_SYNC_CONFIG_PATH, "utf-8"));
|
|
8946
9671
|
return {
|
|
8947
9672
|
auto_sync_on_start: typeof raw.auto_sync_on_start === "boolean" ? raw.auto_sync_on_start : DEFAULT_AUTO_SYNC_CONFIG.auto_sync_on_start,
|
|
8948
9673
|
auto_sync_on_stop: typeof raw.auto_sync_on_stop === "boolean" ? raw.auto_sync_on_stop : DEFAULT_AUTO_SYNC_CONFIG.auto_sync_on_stop
|
|
@@ -9057,7 +9782,7 @@ function discoverSyncableServices2() {
|
|
|
9057
9782
|
const hasnaDir = getHasnaDir();
|
|
9058
9783
|
const services = [];
|
|
9059
9784
|
try {
|
|
9060
|
-
const entries =
|
|
9785
|
+
const entries = readdirSync32(hasnaDir, { withFileTypes: true });
|
|
9061
9786
|
for (const entry of entries) {
|
|
9062
9787
|
if (!entry.isDirectory())
|
|
9063
9788
|
continue;
|
|
@@ -9227,11 +9952,11 @@ function createLaunchdPlist(intervalMinutes) {
|
|
|
9227
9952
|
async function registerLaunchd(intervalMinutes) {
|
|
9228
9953
|
const plistPath = getLaunchdPlistPath();
|
|
9229
9954
|
const plistDir = dirname2(plistPath);
|
|
9230
|
-
|
|
9955
|
+
mkdirSync32(plistDir, { recursive: true });
|
|
9231
9956
|
try {
|
|
9232
9957
|
await Bun.spawn(["launchctl", "unload", plistPath]).exited;
|
|
9233
9958
|
} catch {}
|
|
9234
|
-
|
|
9959
|
+
writeFileSync22(plistPath, createLaunchdPlist(intervalMinutes));
|
|
9235
9960
|
await Bun.spawn(["launchctl", "load", plistPath]).exited;
|
|
9236
9961
|
}
|
|
9237
9962
|
async function removeLaunchd() {
|
|
@@ -9278,9 +10003,9 @@ WantedBy=timers.target
|
|
|
9278
10003
|
}
|
|
9279
10004
|
async function registerSystemd(intervalMinutes) {
|
|
9280
10005
|
const dir = getSystemdDir();
|
|
9281
|
-
|
|
9282
|
-
|
|
9283
|
-
|
|
10006
|
+
mkdirSync32(dir, { recursive: true });
|
|
10007
|
+
writeFileSync22(join6(dir, `${SERVICE_NAME}.service`), createSystemdService());
|
|
10008
|
+
writeFileSync22(join6(dir, `${SERVICE_NAME}.timer`), createSystemdTimer(intervalMinutes));
|
|
9284
10009
|
await Bun.spawn(["systemctl", "--user", "daemon-reload"]).exited;
|
|
9285
10010
|
await Bun.spawn(["systemctl", "--user", "enable", "--now", `${SERVICE_NAME}.timer`]).exited;
|
|
9286
10011
|
}
|
|
@@ -9303,7 +10028,7 @@ async function registerSyncSchedule(intervalMinutes) {
|
|
|
9303
10028
|
if (intervalMinutes <= 0) {
|
|
9304
10029
|
throw new Error("Interval must be a positive number of minutes.");
|
|
9305
10030
|
}
|
|
9306
|
-
|
|
10031
|
+
mkdirSync32(CONFIG_DIR2, { recursive: true });
|
|
9307
10032
|
if (platform() === "darwin") {
|
|
9308
10033
|
await registerLaunchd(intervalMinutes);
|
|
9309
10034
|
} else {
|
|
@@ -9469,7 +10194,7 @@ async function ensureAllPgDatabases() {
|
|
|
9469
10194
|
}
|
|
9470
10195
|
return results;
|
|
9471
10196
|
}
|
|
9472
|
-
function registerCloudTools(server, serviceName
|
|
10197
|
+
function registerCloudTools(server, serviceName) {
|
|
9473
10198
|
server.tool(`${serviceName}_cloud_status`, "Show cloud configuration and connection health", {}, async () => {
|
|
9474
10199
|
const config = getCloudConfig();
|
|
9475
10200
|
const lines = [
|
|
@@ -9502,13 +10227,8 @@ function registerCloudTools(server, serviceName, opts = {}) {
|
|
|
9502
10227
|
isError: true
|
|
9503
10228
|
};
|
|
9504
10229
|
}
|
|
9505
|
-
const local = new SqliteAdapter(
|
|
10230
|
+
const local = new SqliteAdapter(getDbPath(serviceName));
|
|
9506
10231
|
const cloud = new PgAdapterAsync(getConnectionString(serviceName));
|
|
9507
|
-
if (opts.migrations?.length) {
|
|
9508
|
-
for (const sql of opts.migrations) {
|
|
9509
|
-
await cloud.run(sql);
|
|
9510
|
-
}
|
|
9511
|
-
}
|
|
9512
10232
|
const tableList = tablesStr ? tablesStr.split(",").map((t) => t.trim()) : listSqliteTables(local);
|
|
9513
10233
|
const results = await syncPush(local, cloud, { tables: tableList });
|
|
9514
10234
|
local.close();
|
|
@@ -9530,7 +10250,7 @@ function registerCloudTools(server, serviceName, opts = {}) {
|
|
|
9530
10250
|
isError: true
|
|
9531
10251
|
};
|
|
9532
10252
|
}
|
|
9533
|
-
const local = new SqliteAdapter(
|
|
10253
|
+
const local = new SqliteAdapter(getDbPath(serviceName));
|
|
9534
10254
|
const cloud = new PgAdapterAsync(getConnectionString(serviceName));
|
|
9535
10255
|
let tableList;
|
|
9536
10256
|
if (tablesStr) {
|
|
@@ -17882,7 +18602,7 @@ See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode de
|
|
|
17882
18602
|
init_external2();
|
|
17883
18603
|
});
|
|
17884
18604
|
init_dotfile = __esm2(() => {
|
|
17885
|
-
HASNA_DIR =
|
|
18605
|
+
HASNA_DIR = join4(homedir3(), ".hasna");
|
|
17886
18606
|
});
|
|
17887
18607
|
exports_config = {};
|
|
17888
18608
|
__export2(exports_config, {
|
|
@@ -17913,7 +18633,7 @@ See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode de
|
|
|
17913
18633
|
schedule_minutes: exports_external2.number().default(0)
|
|
17914
18634
|
}).default({})
|
|
17915
18635
|
});
|
|
17916
|
-
CONFIG_DIR = join22(
|
|
18636
|
+
CONFIG_DIR = join22(homedir22(), ".hasna", "cloud");
|
|
17917
18637
|
CONFIG_PATH = join22(CONFIG_DIR, "config.json");
|
|
17918
18638
|
});
|
|
17919
18639
|
exports_discover = {};
|
|
@@ -17978,7 +18698,7 @@ See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode de
|
|
|
17978
18698
|
init_adapter();
|
|
17979
18699
|
init_config();
|
|
17980
18700
|
init_discover();
|
|
17981
|
-
AUTO_SYNC_CONFIG_PATH =
|
|
18701
|
+
AUTO_SYNC_CONFIG_PATH = join42(homedir4(), ".hasna", "cloud", "config.json");
|
|
17982
18702
|
DEFAULT_AUTO_SYNC_CONFIG = {
|
|
17983
18703
|
auto_sync_on_start: true,
|
|
17984
18704
|
auto_sync_on_stop: true
|
|
@@ -18190,12 +18910,12 @@ var init_database = __esm(() => {
|
|
|
18190
18910
|
// src/core/connectors/imessage.ts
|
|
18191
18911
|
import {
|
|
18192
18912
|
existsSync as existsSync9,
|
|
18193
|
-
mkdirSync as
|
|
18194
|
-
readFileSync as
|
|
18195
|
-
readdirSync as
|
|
18913
|
+
mkdirSync as mkdirSync5,
|
|
18914
|
+
readFileSync as readFileSync4,
|
|
18915
|
+
readdirSync as readdirSync5,
|
|
18196
18916
|
rmSync,
|
|
18197
18917
|
statSync as statSync2,
|
|
18198
|
-
writeFileSync as
|
|
18918
|
+
writeFileSync as writeFileSync4
|
|
18199
18919
|
} from "fs";
|
|
18200
18920
|
import { join as join9 } from "path";
|
|
18201
18921
|
function buildRootHelp(specs) {
|
|
@@ -18253,15 +18973,15 @@ function getCurrentProfile() {
|
|
|
18253
18973
|
return "default";
|
|
18254
18974
|
}
|
|
18255
18975
|
try {
|
|
18256
|
-
return
|
|
18976
|
+
return readFileSync4(currentProfileFile, "utf-8").trim() || "default";
|
|
18257
18977
|
} catch {
|
|
18258
18978
|
return "default";
|
|
18259
18979
|
}
|
|
18260
18980
|
}
|
|
18261
18981
|
function setCurrentProfile(profile) {
|
|
18262
18982
|
const configDir = getConfigDir2();
|
|
18263
|
-
|
|
18264
|
-
|
|
18983
|
+
mkdirSync5(configDir, { recursive: true });
|
|
18984
|
+
writeFileSync4(join9(configDir, "current_profile"), profile);
|
|
18265
18985
|
}
|
|
18266
18986
|
function getFlatProfilePath(profile) {
|
|
18267
18987
|
return join9(getProfilesDir(), `${profile}.json`);
|
|
@@ -18271,7 +18991,7 @@ function getDirectoryProfilePath(profile) {
|
|
|
18271
18991
|
}
|
|
18272
18992
|
function loadJsonFile(path) {
|
|
18273
18993
|
try {
|
|
18274
|
-
return JSON.parse(
|
|
18994
|
+
return JSON.parse(readFileSync4(path, "utf-8"));
|
|
18275
18995
|
} catch {
|
|
18276
18996
|
return {};
|
|
18277
18997
|
}
|
|
@@ -18296,8 +19016,8 @@ function loadProfile(profile = getCurrentProfile()) {
|
|
|
18296
19016
|
}
|
|
18297
19017
|
function writeProfile(profile, config) {
|
|
18298
19018
|
const profilesDir = getProfilesDir();
|
|
18299
|
-
|
|
18300
|
-
|
|
19019
|
+
mkdirSync5(profilesDir, { recursive: true });
|
|
19020
|
+
writeFileSync4(getFlatProfilePath(profile), JSON.stringify(config, null, 2) + `
|
|
18301
19021
|
`);
|
|
18302
19022
|
}
|
|
18303
19023
|
function profileExists(profile) {
|
|
@@ -18306,14 +19026,14 @@ function profileExists(profile) {
|
|
|
18306
19026
|
}
|
|
18307
19027
|
return existsSync9(getFlatProfilePath(profile)) || existsSync9(join9(getProfilesDir(), profile));
|
|
18308
19028
|
}
|
|
18309
|
-
function
|
|
19029
|
+
function listProfiles3() {
|
|
18310
19030
|
const profilesDir = getProfilesDir();
|
|
18311
19031
|
const seen = new Set(["default"]);
|
|
18312
19032
|
if (!existsSync9(profilesDir)) {
|
|
18313
19033
|
return [...seen];
|
|
18314
19034
|
}
|
|
18315
19035
|
try {
|
|
18316
|
-
for (const entry of
|
|
19036
|
+
for (const entry of readdirSync5(profilesDir)) {
|
|
18317
19037
|
const fullPath = join9(profilesDir, entry);
|
|
18318
19038
|
const stat = statSync2(fullPath);
|
|
18319
19039
|
if (stat.isDirectory()) {
|
|
@@ -18635,7 +19355,7 @@ async function sendMessage(context, input) {
|
|
|
18635
19355
|
direction: "outbound"
|
|
18636
19356
|
});
|
|
18637
19357
|
}
|
|
18638
|
-
async function
|
|
19358
|
+
async function replyToMessage2(context, input) {
|
|
18639
19359
|
const payload = await bridgeRequest(context, "/messages/reply", {
|
|
18640
19360
|
method: "POST",
|
|
18641
19361
|
body: {
|
|
@@ -18749,7 +19469,7 @@ async function runProfileCommand2(args, context) {
|
|
|
18749
19469
|
switch (subcommand) {
|
|
18750
19470
|
case "list": {
|
|
18751
19471
|
const current = getCurrentProfile();
|
|
18752
|
-
const profiles =
|
|
19472
|
+
const profiles = listProfiles3();
|
|
18753
19473
|
return successOutput({ current, profiles }, context.format, () => profiles.map((profile) => `${profile}${profile === current ? " (active)" : ""}`).join(`
|
|
18754
19474
|
`));
|
|
18755
19475
|
}
|
|
@@ -18923,7 +19643,7 @@ async function runMessageCommand(args, context) {
|
|
|
18923
19643
|
if (!conversationId || !text) {
|
|
18924
19644
|
return failure2("Usage: connect-imessage message reply --conversation <id> --text <text>");
|
|
18925
19645
|
}
|
|
18926
|
-
return successOutput(await
|
|
19646
|
+
return successOutput(await replyToMessage2(resolved, {
|
|
18927
19647
|
conversationId,
|
|
18928
19648
|
text,
|
|
18929
19649
|
replyToMessageId: asString2(options.replyTo),
|
|
@@ -19201,7 +19921,7 @@ var init_imessage = __esm(() => {
|
|
|
19201
19921
|
summary: "Reply to an existing conversation through the bridge",
|
|
19202
19922
|
inputSchema: messageReplyInputSchema,
|
|
19203
19923
|
async execute({ context }, input) {
|
|
19204
|
-
return
|
|
19924
|
+
return replyToMessage2(context, input);
|
|
19205
19925
|
}
|
|
19206
19926
|
}
|
|
19207
19927
|
},
|
|
@@ -20145,10 +20865,14 @@ var INTERNAL_CONNECTOR_DEFINITIONS, INTERNAL_CONNECTOR_REGISTRY;
|
|
|
20145
20865
|
var init_builtins = __esm(() => {
|
|
20146
20866
|
init_registry();
|
|
20147
20867
|
init_github();
|
|
20868
|
+
init_gmail();
|
|
20869
|
+
init_googledrive();
|
|
20148
20870
|
init_imessage();
|
|
20149
20871
|
init_stripe();
|
|
20150
20872
|
INTERNAL_CONNECTOR_DEFINITIONS = [
|
|
20873
|
+
gmailConnector,
|
|
20151
20874
|
githubConnector,
|
|
20875
|
+
googleDriveConnector,
|
|
20152
20876
|
imessageConnector,
|
|
20153
20877
|
stripeConnector
|
|
20154
20878
|
];
|
|
@@ -28183,7 +28907,7 @@ __export(exports_installer, {
|
|
|
28183
28907
|
getConnectorDocs: () => getConnectorDocs,
|
|
28184
28908
|
connectorExists: () => connectorExists
|
|
28185
28909
|
});
|
|
28186
|
-
import { existsSync as existsSync12, mkdirSync as
|
|
28910
|
+
import { existsSync as existsSync12, mkdirSync as mkdirSync6, readFileSync as readFileSync6, writeFileSync as writeFileSync5, readdirSync as readdirSync6, statSync as statSync3, rmSync as rmSync2 } from "fs";
|
|
28187
28911
|
import { join as join12, dirname as dirname6 } from "path";
|
|
28188
28912
|
import { fileURLToPath as fileURLToPath4 } from "url";
|
|
28189
28913
|
function resolveConnectorsDir() {
|
|
@@ -28232,7 +28956,7 @@ function getLegacyInstalledConnectors(targetDir) {
|
|
|
28232
28956
|
if (!existsSync12(connectorsDir)) {
|
|
28233
28957
|
return [];
|
|
28234
28958
|
}
|
|
28235
|
-
return
|
|
28959
|
+
return readdirSync6(connectorsDir).filter((entry) => {
|
|
28236
28960
|
const fullPath = join12(connectorsDir, entry);
|
|
28237
28961
|
return entry.startsWith("connect-") && statSync3(fullPath).isDirectory();
|
|
28238
28962
|
}).map((entry) => entry.replace("connect-", "")).sort();
|
|
@@ -28262,7 +28986,7 @@ export type EnabledConnectorName = typeof enabledConnectors[number];
|
|
|
28262
28986
|
}
|
|
28263
28987
|
function writeEnablementManifest(targetDir, connectors18) {
|
|
28264
28988
|
const connectorsDir = getProjectConnectorsDir(targetDir);
|
|
28265
|
-
|
|
28989
|
+
mkdirSync6(connectorsDir, { recursive: true });
|
|
28266
28990
|
const manifest = {
|
|
28267
28991
|
version: 1,
|
|
28268
28992
|
mode: "internal",
|
|
@@ -28408,10 +29132,10 @@ var init_installer = __esm(() => {
|
|
|
28408
29132
|
// src/lib/lock.ts
|
|
28409
29133
|
import { openSync, closeSync, unlinkSync as unlinkSync2, existsSync as existsSync13, statSync as statSync5 } from "fs";
|
|
28410
29134
|
import { join as join14 } from "path";
|
|
28411
|
-
import { mkdirSync as
|
|
29135
|
+
import { mkdirSync as mkdirSync7 } from "fs";
|
|
28412
29136
|
function lockPath(connector) {
|
|
28413
29137
|
const dir = join14(getConnectorsHome(), `connect-${connector}`);
|
|
28414
|
-
|
|
29138
|
+
mkdirSync7(dir, { recursive: true });
|
|
28415
29139
|
return join14(dir, ".write.lock");
|
|
28416
29140
|
}
|
|
28417
29141
|
function isStale(path) {
|
|
@@ -28472,7 +29196,7 @@ var init_lock = __esm(() => {
|
|
|
28472
29196
|
});
|
|
28473
29197
|
|
|
28474
29198
|
// src/server/auth.ts
|
|
28475
|
-
import { existsSync as existsSync14, readFileSync as readFileSync7, writeFileSync as writeFileSync6, mkdirSync as
|
|
29199
|
+
import { existsSync as existsSync14, readFileSync as readFileSync7, writeFileSync as writeFileSync6, mkdirSync as mkdirSync8, readdirSync as readdirSync8, rmSync as rmSync3, statSync as statSync6 } from "fs";
|
|
28476
29200
|
import { randomBytes } from "crypto";
|
|
28477
29201
|
import { join as join15 } from "path";
|
|
28478
29202
|
function getAuthType(name) {
|
|
@@ -28524,7 +29248,7 @@ function loadProfileConfig(name) {
|
|
|
28524
29248
|
}
|
|
28525
29249
|
return { ...flatConfig, ...dirConfig };
|
|
28526
29250
|
}
|
|
28527
|
-
function
|
|
29251
|
+
function loadTokens3(name) {
|
|
28528
29252
|
const configDir = getConnectorConfigDir(name);
|
|
28529
29253
|
const profile = getCurrentProfile2(name);
|
|
28530
29254
|
const tokensFile = join15(configDir, "profiles", profile, "tokens.json");
|
|
@@ -28547,28 +29271,49 @@ function loadTokens(name) {
|
|
|
28547
29271
|
}
|
|
28548
29272
|
return null;
|
|
28549
29273
|
}
|
|
29274
|
+
function isStoredOAuthEnvVarSet(variable, oauthConfig, tokens, profileConfig) {
|
|
29275
|
+
if (variable.endsWith("_CLIENT_ID")) {
|
|
29276
|
+
return Boolean(oauthConfig.clientId || profileConfig.clientId);
|
|
29277
|
+
}
|
|
29278
|
+
if (variable.endsWith("_CLIENT_SECRET")) {
|
|
29279
|
+
return Boolean(oauthConfig.clientSecret || profileConfig.clientSecret);
|
|
29280
|
+
}
|
|
29281
|
+
if (variable.endsWith("_ACCESS_TOKEN")) {
|
|
29282
|
+
return Boolean(tokens?.accessToken || profileConfig.accessToken);
|
|
29283
|
+
}
|
|
29284
|
+
if (variable.endsWith("_REFRESH_TOKEN")) {
|
|
29285
|
+
return Boolean(tokens?.refreshToken || profileConfig.refreshToken);
|
|
29286
|
+
}
|
|
29287
|
+
if (variable.endsWith("_TOKEN_EXPIRES_AT")) {
|
|
29288
|
+
return Boolean(tokens?.expiresAt || profileConfig.expiresAt);
|
|
29289
|
+
}
|
|
29290
|
+
return false;
|
|
29291
|
+
}
|
|
28550
29292
|
function getAuthStatus(name) {
|
|
28551
29293
|
const authType = getAuthType(name);
|
|
28552
29294
|
const docs = getConnectorDocs(name);
|
|
29295
|
+
const oauthConfig = authType === "oauth" ? getOAuthConfig(name) : {};
|
|
29296
|
+
const tokens = authType === "oauth" ? loadTokens3(name) : null;
|
|
29297
|
+
const profileConfig = authType === "oauth" ? loadProfileConfig(name) : {};
|
|
28553
29298
|
const envVars = (docs?.envVars || []).map((v) => ({
|
|
28554
29299
|
variable: v.variable,
|
|
28555
29300
|
description: v.description,
|
|
28556
|
-
set: !!process.env[v.variable]
|
|
29301
|
+
set: !!process.env[v.variable] || authType === "oauth" && isStoredOAuthEnvVarSet(v.variable, oauthConfig, tokens, profileConfig)
|
|
28557
29302
|
}));
|
|
28558
29303
|
const envVarTotalCount = envVars.length;
|
|
28559
29304
|
const envVarSetCount = envVars.filter((v) => v.set).length;
|
|
28560
29305
|
if (authType === "oauth") {
|
|
28561
|
-
const
|
|
28562
|
-
const
|
|
28563
|
-
const
|
|
28564
|
-
const
|
|
28565
|
-
const tokenExpiry = tokens?.expiresAt || config2.expiresAt;
|
|
29306
|
+
const hasTokens = !!tokens?.accessToken || !!profileConfig.accessToken;
|
|
29307
|
+
const hasRefreshToken = !!tokens?.refreshToken || !!profileConfig.refreshToken;
|
|
29308
|
+
const tokenExpiry = tokens?.expiresAt || profileConfig.expiresAt;
|
|
29309
|
+
const hasOAuthCredentials = Boolean(oauthConfig.clientId && oauthConfig.clientSecret);
|
|
28566
29310
|
const hasEnvVar2 = envVars.some((v) => v.set);
|
|
28567
29311
|
return {
|
|
28568
29312
|
type: "oauth",
|
|
28569
|
-
configured: hasTokens || hasRefreshToken || hasEnvVar2,
|
|
29313
|
+
configured: hasTokens || hasRefreshToken || hasOAuthCredentials || hasEnvVar2,
|
|
28570
29314
|
tokenExpiry,
|
|
28571
29315
|
hasRefreshToken,
|
|
29316
|
+
hasOAuthCredentials,
|
|
28572
29317
|
envVars,
|
|
28573
29318
|
envVarSetCount,
|
|
28574
29319
|
envVarTotalCount
|
|
@@ -28598,7 +29343,7 @@ function _saveApiKey(name, key, field) {
|
|
|
28598
29343
|
const keyField = field || guessKeyField(name);
|
|
28599
29344
|
if (keyField === "clientId" || keyField === "clientSecret") {
|
|
28600
29345
|
const credentialsFile = join15(configDir, "credentials.json");
|
|
28601
|
-
|
|
29346
|
+
mkdirSync8(configDir, { recursive: true });
|
|
28602
29347
|
let creds = {};
|
|
28603
29348
|
if (existsSync14(credentialsFile)) {
|
|
28604
29349
|
try {
|
|
@@ -28632,7 +29377,7 @@ function _saveApiKey(name, key, field) {
|
|
|
28632
29377
|
writeFileSync6(configFile, JSON.stringify(config, null, 2));
|
|
28633
29378
|
return;
|
|
28634
29379
|
}
|
|
28635
|
-
|
|
29380
|
+
mkdirSync8(profileDir, { recursive: true });
|
|
28636
29381
|
writeFileSync6(join15(profileDir, "config.json"), JSON.stringify({ [keyField]: key }, null, 2));
|
|
28637
29382
|
}
|
|
28638
29383
|
function guessKeyField(name) {
|
|
@@ -28734,7 +29479,7 @@ function saveOAuthTokens(name, tokens) {
|
|
|
28734
29479
|
const configDir = getConnectorConfigDir(name);
|
|
28735
29480
|
const profile = getCurrentProfile2(name);
|
|
28736
29481
|
const profileDir = join15(configDir, "profiles", profile);
|
|
28737
|
-
|
|
29482
|
+
mkdirSync8(profileDir, { recursive: true });
|
|
28738
29483
|
const tokensFile = join15(profileDir, "tokens.json");
|
|
28739
29484
|
writeFileSync6(tokensFile, JSON.stringify(tokens, null, 2), { mode: 384 });
|
|
28740
29485
|
}
|
|
@@ -28743,7 +29488,7 @@ async function refreshOAuthToken(name) {
|
|
|
28743
29488
|
}
|
|
28744
29489
|
async function _refreshOAuthToken(name) {
|
|
28745
29490
|
const oauthConfig = getOAuthConfig(name);
|
|
28746
|
-
const currentTokens =
|
|
29491
|
+
const currentTokens = loadTokens3(name);
|
|
28747
29492
|
if (!oauthConfig.clientId || !oauthConfig.clientSecret) {
|
|
28748
29493
|
throw new Error("OAuth credentials not configured for " + name);
|
|
28749
29494
|
}
|
|
@@ -28776,14 +29521,14 @@ async function _refreshOAuthToken(name) {
|
|
|
28776
29521
|
saveOAuthTokens(name, tokens);
|
|
28777
29522
|
return tokens;
|
|
28778
29523
|
}
|
|
28779
|
-
function
|
|
29524
|
+
function listProfiles4(name) {
|
|
28780
29525
|
const configDir = getConnectorConfigDir(name);
|
|
28781
29526
|
const profilesDir = join15(configDir, "profiles");
|
|
28782
29527
|
if (!existsSync14(profilesDir))
|
|
28783
29528
|
return ["default"];
|
|
28784
29529
|
const seen = new Set;
|
|
28785
29530
|
try {
|
|
28786
|
-
const entries =
|
|
29531
|
+
const entries = readdirSync8(profilesDir);
|
|
28787
29532
|
for (const entry of entries) {
|
|
28788
29533
|
const fullPath = join15(profilesDir, entry);
|
|
28789
29534
|
const stat = statSync6(fullPath);
|
|
@@ -28799,7 +29544,7 @@ function listProfiles2(name) {
|
|
|
28799
29544
|
}
|
|
28800
29545
|
function switchProfile(name, profile) {
|
|
28801
29546
|
const configDir = getConnectorConfigDir(name);
|
|
28802
|
-
|
|
29547
|
+
mkdirSync8(configDir, { recursive: true });
|
|
28803
29548
|
writeFileSync6(join15(configDir, "current_profile"), profile);
|
|
28804
29549
|
}
|
|
28805
29550
|
function deleteProfile2(name, profile) {
|
|
@@ -29079,7 +29824,7 @@ var init_rate = __esm(() => {
|
|
|
29079
29824
|
});
|
|
29080
29825
|
|
|
29081
29826
|
// src/lib/llm.ts
|
|
29082
|
-
import { existsSync as existsSync15, readFileSync as readFileSync8, writeFileSync as writeFileSync7, mkdirSync as
|
|
29827
|
+
import { existsSync as existsSync15, readFileSync as readFileSync8, writeFileSync as writeFileSync7, mkdirSync as mkdirSync9 } from "fs";
|
|
29083
29828
|
import { join as join16 } from "path";
|
|
29084
29829
|
function getLlmConfigPath() {
|
|
29085
29830
|
return join16(getConnectorsHome(), "llm.json");
|
|
@@ -29096,7 +29841,7 @@ function getLlmConfig() {
|
|
|
29096
29841
|
}
|
|
29097
29842
|
function saveLlmConfig(config) {
|
|
29098
29843
|
const dir = getConnectorsHome();
|
|
29099
|
-
|
|
29844
|
+
mkdirSync9(dir, { recursive: true });
|
|
29100
29845
|
writeFileSync7(getLlmConfigPath(), JSON.stringify(config, null, 2));
|
|
29101
29846
|
}
|
|
29102
29847
|
function setLlmStrip(enabled) {
|
|
@@ -29480,7 +30225,7 @@ var init_scheduler = __esm(() => {
|
|
|
29480
30225
|
});
|
|
29481
30226
|
|
|
29482
30227
|
// src/lib/workflow-runner.ts
|
|
29483
|
-
import { spawn as
|
|
30228
|
+
import { spawn as nodeSpawn } from "child_process";
|
|
29484
30229
|
async function runStep(step, previousOutput) {
|
|
29485
30230
|
return new Promise((resolve) => {
|
|
29486
30231
|
const args = [...step.args ?? []];
|
|
@@ -29488,7 +30233,7 @@ async function runStep(step, previousOutput) {
|
|
|
29488
30233
|
args.push("--input", previousOutput.trim().slice(0, 4096));
|
|
29489
30234
|
}
|
|
29490
30235
|
const cmdArgs = ["run", step.connector, step.command, ...args, "--format", "json"];
|
|
29491
|
-
const proc =
|
|
30236
|
+
const proc = spawnImpl("connectors", cmdArgs, { shell: false });
|
|
29492
30237
|
let output = "";
|
|
29493
30238
|
proc.stdout.on("data", (d) => {
|
|
29494
30239
|
output += d.toString();
|
|
@@ -29528,15 +30273,17 @@ async function runWorkflow(workflow) {
|
|
|
29528
30273
|
final_output: results[results.length - 1]?.output ?? ""
|
|
29529
30274
|
};
|
|
29530
30275
|
}
|
|
30276
|
+
var spawnImpl;
|
|
29531
30277
|
var init_workflow_runner = __esm(() => {
|
|
29532
30278
|
init_strip();
|
|
30279
|
+
spawnImpl = nodeSpawn;
|
|
29533
30280
|
});
|
|
29534
30281
|
|
|
29535
30282
|
// src/lib/runner.ts
|
|
29536
|
-
import { existsSync as existsSync16, readdirSync as
|
|
30283
|
+
import { existsSync as existsSync16, readdirSync as readdirSync9 } from "fs";
|
|
29537
30284
|
import { join as join17, dirname as dirname7 } from "path";
|
|
29538
30285
|
import { fileURLToPath as fileURLToPath5 } from "url";
|
|
29539
|
-
import { spawn as
|
|
30286
|
+
import { spawn as spawn2 } from "child_process";
|
|
29540
30287
|
function resolveConnectorsDir2() {
|
|
29541
30288
|
const fromBin = join17(__dirname5, "..", "connectors");
|
|
29542
30289
|
if (existsSync16(fromBin))
|
|
@@ -29585,6 +30332,25 @@ function buildEnvWithCredentials(connectorName, baseEnv) {
|
|
|
29585
30332
|
}
|
|
29586
30333
|
}
|
|
29587
30334
|
}
|
|
30335
|
+
if (getAuthType(connectorName) === "oauth") {
|
|
30336
|
+
const oauthConfig = getOAuthConfig(connectorName);
|
|
30337
|
+
const tokens = loadTokens3(connectorName);
|
|
30338
|
+
for (const { variable } of getEnvVars(connectorName)) {
|
|
30339
|
+
if (env[variable])
|
|
30340
|
+
continue;
|
|
30341
|
+
if (variable.endsWith("_CLIENT_ID") && oauthConfig.clientId) {
|
|
30342
|
+
env[variable] = oauthConfig.clientId;
|
|
30343
|
+
} else if (variable.endsWith("_CLIENT_SECRET") && oauthConfig.clientSecret) {
|
|
30344
|
+
env[variable] = oauthConfig.clientSecret;
|
|
30345
|
+
} else if (variable.endsWith("_ACCESS_TOKEN") && tokens?.accessToken) {
|
|
30346
|
+
env[variable] = tokens.accessToken;
|
|
30347
|
+
} else if (variable.endsWith("_REFRESH_TOKEN") && tokens?.refreshToken) {
|
|
30348
|
+
env[variable] = tokens.refreshToken;
|
|
30349
|
+
} else if (variable.endsWith("_TOKEN_EXPIRES_AT") && tokens?.expiresAt) {
|
|
30350
|
+
env[variable] = String(tokens.expiresAt);
|
|
30351
|
+
}
|
|
30352
|
+
}
|
|
30353
|
+
}
|
|
29588
30354
|
return env;
|
|
29589
30355
|
}
|
|
29590
30356
|
function getConnectorCliPath(name) {
|
|
@@ -29629,7 +30395,7 @@ function parseCommanderHelpOperations(helpText) {
|
|
|
29629
30395
|
inCommands = false;
|
|
29630
30396
|
continue;
|
|
29631
30397
|
}
|
|
29632
|
-
const row = line.match(/^ {2}(\S.*?)(?: {2,}(.+))?$/);
|
|
30398
|
+
const row = line.match(/^ {2}(?! )(\S.*?)(?: {2,}(.+))?$/);
|
|
29633
30399
|
if (!row)
|
|
29634
30400
|
continue;
|
|
29635
30401
|
const usage = row[1].trim();
|
|
@@ -29677,7 +30443,7 @@ function runLegacyConnectorCommand(name, args, timeoutMs = 30000) {
|
|
|
29677
30443
|
});
|
|
29678
30444
|
}
|
|
29679
30445
|
return new Promise((resolve) => {
|
|
29680
|
-
const proc =
|
|
30446
|
+
const proc = spawn2("bun", ["run", cliPath, ...args], {
|
|
29681
30447
|
timeout: timeoutMs,
|
|
29682
30448
|
env: buildEnvWithCredentials(name, process.env),
|
|
29683
30449
|
stdio: ["pipe", "pipe", "pipe"]
|
|
@@ -29757,7 +30523,9 @@ async function getConnectorCommandHelp(name, command) {
|
|
|
29757
30523
|
var __dirname5, CONNECTORS_DIR2, ENV_VAR_NAME_OVERRIDES;
|
|
29758
30524
|
var init_runner = __esm(() => {
|
|
29759
30525
|
init_builtins();
|
|
30526
|
+
init_connector();
|
|
29760
30527
|
init_database();
|
|
30528
|
+
init_auth();
|
|
29761
30529
|
__dirname5 = dirname7(fileURLToPath5(import.meta.url));
|
|
29762
30530
|
CONNECTORS_DIR2 = resolveConnectorsDir2();
|
|
29763
30531
|
ENV_VAR_NAME_OVERRIDES = {
|
|
@@ -29774,8 +30542,8 @@ var exports_serve = {};
|
|
|
29774
30542
|
__export(exports_serve, {
|
|
29775
30543
|
startServer: () => startServer
|
|
29776
30544
|
});
|
|
29777
|
-
import { existsSync as existsSync17, readdirSync as
|
|
29778
|
-
import { join as join18, dirname as dirname8, extname, basename } from "path";
|
|
30545
|
+
import { existsSync as existsSync17, readdirSync as readdirSync10, readFileSync as readFileSync9, writeFileSync as writeFileSync8, mkdirSync as mkdirSync10 } from "fs";
|
|
30546
|
+
import { join as join18, dirname as dirname8, extname, basename as basename3 } from "path";
|
|
29779
30547
|
import { fileURLToPath as fileURLToPath6 } from "url";
|
|
29780
30548
|
function logActivity(action, connector, detail) {
|
|
29781
30549
|
activityLog.unshift({ action, connector, timestamp: Date.now(), detail });
|
|
@@ -30324,7 +31092,7 @@ ${result.stderr}`;
|
|
|
30324
31092
|
if (!isValidConnectorName(name))
|
|
30325
31093
|
return json({ error: "Invalid connector name" }, 400, port);
|
|
30326
31094
|
try {
|
|
30327
|
-
const profiles =
|
|
31095
|
+
const profiles = listProfiles4(name);
|
|
30328
31096
|
const configDir = join18(getConnectorsHome(), name.startsWith("connect-") ? name : `connect-${name}`);
|
|
30329
31097
|
const currentProfileFile = join18(configDir, "current_profile");
|
|
30330
31098
|
let current = "default";
|
|
@@ -30380,7 +31148,7 @@ ${result.stderr}`;
|
|
|
30380
31148
|
const connectDir = getConnectorsHome();
|
|
30381
31149
|
const result = {};
|
|
30382
31150
|
if (existsSync17(connectDir)) {
|
|
30383
|
-
const entries =
|
|
31151
|
+
const entries = readdirSync10(connectDir, { withFileTypes: true });
|
|
30384
31152
|
for (const entry of entries) {
|
|
30385
31153
|
if (!entry.isDirectory() || !entry.name.startsWith("connect-"))
|
|
30386
31154
|
continue;
|
|
@@ -30389,10 +31157,10 @@ ${result.stderr}`;
|
|
|
30389
31157
|
if (!existsSync17(profilesDir))
|
|
30390
31158
|
continue;
|
|
30391
31159
|
const profiles = {};
|
|
30392
|
-
const profileEntries =
|
|
31160
|
+
const profileEntries = readdirSync10(profilesDir, { withFileTypes: true });
|
|
30393
31161
|
for (const pEntry of profileEntries) {
|
|
30394
31162
|
if (pEntry.isFile() && pEntry.name.endsWith(".json")) {
|
|
30395
|
-
const profileName =
|
|
31163
|
+
const profileName = basename3(pEntry.name, ".json");
|
|
30396
31164
|
try {
|
|
30397
31165
|
const config = JSON.parse(readFileSync9(join18(profilesDir, pEntry.name), "utf-8"));
|
|
30398
31166
|
profiles[profileName] = config;
|
|
@@ -30448,7 +31216,7 @@ ${result.stderr}`;
|
|
|
30448
31216
|
for (const [profileName, config] of Object.entries(data.profiles)) {
|
|
30449
31217
|
if (!config || typeof config !== "object")
|
|
30450
31218
|
continue;
|
|
30451
|
-
|
|
31219
|
+
mkdirSync10(profilesDir, { recursive: true });
|
|
30452
31220
|
const profileFile = join18(profilesDir, `${profileName}.json`);
|
|
30453
31221
|
writeFileSync8(profileFile, JSON.stringify(config, null, 2));
|
|
30454
31222
|
imported++;
|
|
@@ -32070,7 +32838,7 @@ init_registry2();
|
|
|
32070
32838
|
init_installer();
|
|
32071
32839
|
import { render } from "ink";
|
|
32072
32840
|
import chalk2 from "chalk";
|
|
32073
|
-
import { readdirSync as
|
|
32841
|
+
import { readdirSync as readdirSync7, statSync as statSync4 } from "fs";
|
|
32074
32842
|
import { join as join13, relative as relative2 } from "path";
|
|
32075
32843
|
import { createInterface } from "readline";
|
|
32076
32844
|
import { jsxDEV as jsxDEV7 } from "react/jsx-dev-runtime";
|
|
@@ -32085,7 +32853,7 @@ var PRESETS = {
|
|
|
32085
32853
|
};
|
|
32086
32854
|
function listFilesRecursive(dir, base = dir) {
|
|
32087
32855
|
const files = [];
|
|
32088
|
-
for (const entry of
|
|
32856
|
+
for (const entry of readdirSync7(dir)) {
|
|
32089
32857
|
const fullPath = join13(dir, entry);
|
|
32090
32858
|
if (statSync4(fullPath).isDirectory()) {
|
|
32091
32859
|
files.push(...listFilesRecursive(fullPath, base));
|
|
@@ -32757,7 +33525,7 @@ init_installer();
|
|
|
32757
33525
|
init_auth();
|
|
32758
33526
|
init_database();
|
|
32759
33527
|
import chalk4 from "chalk";
|
|
32760
|
-
import { existsSync as existsSync18, readdirSync as
|
|
33528
|
+
import { existsSync as existsSync18, readdirSync as readdirSync11, statSync as statSync7, readFileSync as readFileSync10 } from "fs";
|
|
32761
33529
|
import { join as join19 } from "path";
|
|
32762
33530
|
function registerCommands3(program2) {
|
|
32763
33531
|
program2.command("status").option("--json", "Output as JSON", false).description("Show auth status of all configured connectors (project + global)").action((options) => {
|
|
@@ -32810,7 +33578,7 @@ function registerCommands3(program2) {
|
|
|
32810
33578
|
}
|
|
32811
33579
|
if (existsSync18(configDir)) {
|
|
32812
33580
|
try {
|
|
32813
|
-
const globalDirs =
|
|
33581
|
+
const globalDirs = readdirSync11(configDir).filter((f) => {
|
|
32814
33582
|
if (!f.startsWith("connect-"))
|
|
32815
33583
|
return false;
|
|
32816
33584
|
if (f.startsWith("connect-zzztest"))
|
|
@@ -33029,7 +33797,7 @@ init_registry2();
|
|
|
33029
33797
|
init_auth();
|
|
33030
33798
|
init_database();
|
|
33031
33799
|
import chalk5 from "chalk";
|
|
33032
|
-
import { existsSync as existsSync19, readdirSync as
|
|
33800
|
+
import { existsSync as existsSync19, readdirSync as readdirSync12, statSync as statSync8, readFileSync as readFileSync11, writeFileSync as writeFileSync9, mkdirSync as mkdirSync11 } from "fs";
|
|
33033
33801
|
import { join as join20 } from "path";
|
|
33034
33802
|
import { homedir as homedir8 } from "os";
|
|
33035
33803
|
import { createInterface as createInterface2 } from "readline";
|
|
@@ -33083,7 +33851,7 @@ function redactSecrets(obj) {
|
|
|
33083
33851
|
return obj;
|
|
33084
33852
|
}
|
|
33085
33853
|
function getOAuthTokenState(name) {
|
|
33086
|
-
const tokens =
|
|
33854
|
+
const tokens = loadTokens3(name);
|
|
33087
33855
|
if (!tokens?.accessToken && !tokens?.refreshToken) {
|
|
33088
33856
|
return { hasTokens: false, expired: false };
|
|
33089
33857
|
}
|
|
@@ -33226,9 +33994,9 @@ ${meta.displayName} \u2014 Auth Configuration
|
|
|
33226
33994
|
try {
|
|
33227
33995
|
if (!options.browser) {
|
|
33228
33996
|
console.log(chalk5.dim(`Starting OAuth server on port ${port}...`));
|
|
33229
|
-
const { spawn:
|
|
33997
|
+
const { spawn: spawn3 } = await import("child_process");
|
|
33230
33998
|
const scriptPath = process.argv[1];
|
|
33231
|
-
const serverProc =
|
|
33999
|
+
const serverProc = spawn3("node", [scriptPath, "serve", "--port", String(port)], {
|
|
33232
34000
|
detached: true,
|
|
33233
34001
|
stdio: "ignore"
|
|
33234
34002
|
});
|
|
@@ -33402,7 +34170,7 @@ Open this URL to authenticate:
|
|
|
33402
34170
|
const configuredNames = [];
|
|
33403
34171
|
try {
|
|
33404
34172
|
if (existsSync19(connectorsHome)) {
|
|
33405
|
-
const entries =
|
|
34173
|
+
const entries = readdirSync12(connectorsHome).filter((e) => e.startsWith("connect-") && statSync8(join20(connectorsHome, e)).isDirectory());
|
|
33406
34174
|
for (const entry of entries) {
|
|
33407
34175
|
const profilesDir = join20(connectorsHome, entry, "profiles");
|
|
33408
34176
|
if (existsSync19(profilesDir)) {
|
|
@@ -33457,7 +34225,7 @@ Open this URL to authenticate:
|
|
|
33457
34225
|
const connectDir = getConnectorsHome();
|
|
33458
34226
|
const result = {};
|
|
33459
34227
|
if (existsSync19(connectDir)) {
|
|
33460
|
-
for (const entry of
|
|
34228
|
+
for (const entry of readdirSync12(connectDir)) {
|
|
33461
34229
|
const entryPath = join20(connectDir, entry);
|
|
33462
34230
|
if (!statSync8(entryPath).isDirectory() || !entry.startsWith("connect-"))
|
|
33463
34231
|
continue;
|
|
@@ -33474,7 +34242,7 @@ Open this URL to authenticate:
|
|
|
33474
34242
|
continue;
|
|
33475
34243
|
const profiles = {};
|
|
33476
34244
|
if (existsSync19(profilesDir)) {
|
|
33477
|
-
for (const pEntry of
|
|
34245
|
+
for (const pEntry of readdirSync12(profilesDir)) {
|
|
33478
34246
|
const pPath = join20(profilesDir, pEntry);
|
|
33479
34247
|
if (statSync8(pPath).isFile() && pEntry.endsWith(".json")) {
|
|
33480
34248
|
try {
|
|
@@ -33565,7 +34333,7 @@ Open this URL to authenticate:
|
|
|
33565
34333
|
continue;
|
|
33566
34334
|
const connectorDir = join20(connectDir, `connect-${connectorName}`);
|
|
33567
34335
|
if (connData.credentials && typeof connData.credentials === "object") {
|
|
33568
|
-
|
|
34336
|
+
mkdirSync11(connectorDir, { recursive: true });
|
|
33569
34337
|
writeFileSync9(join20(connectorDir, "credentials.json"), JSON.stringify(connData.credentials, null, 2));
|
|
33570
34338
|
imported++;
|
|
33571
34339
|
}
|
|
@@ -33575,7 +34343,7 @@ Open this URL to authenticate:
|
|
|
33575
34343
|
for (const [profileName, config] of Object.entries(connData.profiles)) {
|
|
33576
34344
|
if (!config || typeof config !== "object")
|
|
33577
34345
|
continue;
|
|
33578
|
-
|
|
34346
|
+
mkdirSync11(profilesDir, { recursive: true });
|
|
33579
34347
|
writeFileSync9(join20(profilesDir, `${profileName}.json`), JSON.stringify(config, null, 2));
|
|
33580
34348
|
imported++;
|
|
33581
34349
|
}
|
|
@@ -33597,7 +34365,7 @@ Open this URL to authenticate:
|
|
|
33597
34365
|
}
|
|
33598
34366
|
return;
|
|
33599
34367
|
}
|
|
33600
|
-
const entries =
|
|
34368
|
+
const entries = readdirSync12(oldBase).filter((name) => {
|
|
33601
34369
|
if (!name.startsWith("connect-"))
|
|
33602
34370
|
return false;
|
|
33603
34371
|
try {
|
|
@@ -33637,7 +34405,7 @@ Open this URL to authenticate:
|
|
|
33637
34405
|
}
|
|
33638
34406
|
if (!options.dryRun) {
|
|
33639
34407
|
const parentDir = join20(destPath, "..");
|
|
33640
|
-
|
|
34408
|
+
mkdirSync11(parentDir, { recursive: true });
|
|
33641
34409
|
const content = readFileSync11(srcPath);
|
|
33642
34410
|
writeFileSync9(destPath, content);
|
|
33643
34411
|
}
|
|
@@ -33705,7 +34473,7 @@ init_installer();
|
|
|
33705
34473
|
init_auth();
|
|
33706
34474
|
init_database();
|
|
33707
34475
|
import chalk6 from "chalk";
|
|
33708
|
-
import { existsSync as existsSync20, readdirSync as
|
|
34476
|
+
import { existsSync as existsSync20, readdirSync as readdirSync13, statSync as statSync9, readFileSync as readFileSync12, writeFileSync as writeFileSync10 } from "fs";
|
|
33709
34477
|
import { join as join21 } from "path";
|
|
33710
34478
|
|
|
33711
34479
|
// src/lib/test-endpoints.ts
|
|
@@ -34147,7 +34915,7 @@ Available presets:
|
|
|
34147
34915
|
}
|
|
34148
34916
|
if (existsSync20(configDir)) {
|
|
34149
34917
|
try {
|
|
34150
|
-
const globalDirs =
|
|
34918
|
+
const globalDirs = readdirSync13(configDir).filter((f) => {
|
|
34151
34919
|
if (!f.startsWith("connect-"))
|
|
34152
34920
|
return false;
|
|
34153
34921
|
try {
|
|
@@ -34564,12 +35332,12 @@ Setting up ${meta.displayName}...
|
|
|
34564
35332
|
${chalk7.bold("Open this URL to authenticate:")}`);
|
|
34565
35333
|
console.log(` ${chalk7.cyan(oauthUrl)}
|
|
34566
35334
|
`);
|
|
34567
|
-
const { spawn:
|
|
35335
|
+
const { spawn: spawn3 } = await import("child_process");
|
|
34568
35336
|
const { getConnectorsHome: getConnectorsHome2 } = await Promise.resolve().then(() => (init_database(), exports_database));
|
|
34569
35337
|
const { existsSync: existsSync8 } = await import("fs");
|
|
34570
35338
|
const { join: join8 } = await import("path");
|
|
34571
35339
|
const scriptPath = process.argv[1];
|
|
34572
|
-
const serverProc =
|
|
35340
|
+
const serverProc = spawn3("node", [scriptPath, "serve", "--port", String(port)], {
|
|
34573
35341
|
detached: true,
|
|
34574
35342
|
stdio: "ignore"
|
|
34575
35343
|
});
|