@withbuddi/buddi 0.1.0-pre.51 → 0.1.0-pre.53
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/extension/background.js +1604 -847
- package/extension/manifest.json +3 -3
- package/extension/popup.css +91 -3
- package/extension/popup.html +49 -32
- package/extension/popup.js +215 -123
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.d.ts +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/questions/store.d.ts +3 -1
- package/node_modules/@buddi/core/dist/questions/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/questions/store.js +3 -3
- package/node_modules/@buddi/core/dist/questions/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/questions/types.d.ts +46 -1
- package/node_modules/@buddi/core/dist/questions/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/questions/types.js +2 -1
- package/node_modules/@buddi/core/dist/questions/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/approval.d.ts +54 -0
- package/node_modules/@buddi/core/dist/secrets/approval.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/approval.js +58 -1
- package/node_modules/@buddi/core/dist/secrets/approval.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/settings.d.ts +178 -0
- package/node_modules/@buddi/core/dist/secrets/settings.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/settings.js +63 -6
- package/node_modules/@buddi/core/dist/secrets/settings.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/store.d.ts +31 -0
- package/node_modules/@buddi/core/dist/secrets/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/store.js +75 -0
- package/node_modules/@buddi/core/dist/secrets/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/use.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/use.js +68 -3
- package/node_modules/@buddi/core/dist/secrets/use.js.map +1 -1
- package/node_modules/@buddi/core/dist/tools.d.ts +22 -0
- package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/tools.js.map +1 -1
- package/node_modules/@buddi/core/migrations/080_secret_requests.sql +14 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/chat/session.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/chat/session.js +2 -1
- package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js +3 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts +15 -3
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js +34 -7
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js +8 -2
- package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts +3 -1
- package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/pending-question.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts +173 -0
- package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js +332 -0
- package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/system-context.js +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/main.js +14 -3
- package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js +4 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js +9 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js +2 -2
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts +13 -0
- package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/browser-capture.js +24 -0
- package/node_modules/@buddi/gateway/dist/web/browser-capture.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts +26 -0
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/chat.js +87 -2
- package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts +30 -0
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.js +86 -6
- package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.js +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts +26 -2
- package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/remote-hand.js +89 -28
- package/node_modules/@buddi/gateway/dist/web/remote-hand.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts +54 -0
- package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/secret-request.js +264 -0
- package/node_modules/@buddi/gateway/dist/web/secret-request.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/secrets.d.ts +1 -0
- package/node_modules/@buddi/gateway/dist/web/secrets.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/secrets.js +1 -1
- package/node_modules/@buddi/gateway/dist/web/secrets.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +72 -3
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/install/dist/app-layout.d.ts +24 -0
- package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/app-layout.js +64 -2
- package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.js +89 -10
- package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
- package/node_modules/@buddi/install/dist/linux-install.d.ts +41 -0
- package/node_modules/@buddi/install/dist/linux-install.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/linux-install.js +86 -0
- package/node_modules/@buddi/install/dist/linux-install.js.map +1 -0
- package/node_modules/@buddi/install/dist/runtime-info.d.ts +23 -0
- package/node_modules/@buddi/install/dist/runtime-info.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/runtime-info.js +69 -0
- package/node_modules/@buddi/install/dist/runtime-info.js.map +1 -0
- package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/supervisor.js +8 -6
- package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.d.ts +20 -0
- package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.js +50 -1
- package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
- package/node_modules/@buddi/install/dist/upgrade.d.ts +4 -1
- package/node_modules/@buddi/install/dist/upgrade.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/upgrade.js +77 -51
- package/node_modules/@buddi/install/dist/upgrade.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/anthropic.d.ts +7 -0
- package/node_modules/@buddi/runtime/dist/anthropic.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/anthropic.js +19 -1
- package/node_modules/@buddi/runtime/dist/anthropic.js.map +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts +16 -1
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.js +59 -5
- package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/driver.d.ts +12 -0
- package/node_modules/@buddi/tool-browser/dist/driver.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/driver.js +41 -2
- package/node_modules/@buddi/tool-browser/dist/driver.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.d.ts +49 -9
- package/node_modules/@buddi/tool-browser/dist/extension.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.js +145 -21
- package/node_modules/@buddi/tool-browser/dist/extension.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.d.ts +10 -6
- package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.js +22 -8
- package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts +10 -1
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.js +24 -0
- package/node_modules/@buddi/tool-browser/dist/routes.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.d.ts +48 -1
- package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.js +114 -11
- package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.d.ts +54 -3
- package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.js +17 -1
- package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
- package/node_modules/@hono/node-server/package.json +2 -2
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/node/util.d.ts +6 -3
- package/node_modules/content-disposition/README.md +105 -35
- package/node_modules/content-disposition/dist/index.d.ts +72 -0
- package/node_modules/content-disposition/dist/index.js +388 -0
- package/node_modules/content-disposition/dist/index.js.map +1 -0
- package/node_modules/content-disposition/package.json +31 -19
- package/node_modules/docx/dist/index.cjs +182 -80
- package/node_modules/docx/dist/index.d.cts +63 -6
- package/node_modules/docx/dist/index.d.ts +63 -6
- package/node_modules/docx/dist/index.iife.js +182 -80
- package/node_modules/docx/dist/index.mjs +182 -80
- package/node_modules/docx/dist/index.umd.cjs +182 -80
- package/node_modules/docx/dist/layout.cjs +1 -6
- package/node_modules/docx/dist/layout.iife.js +1 -6
- package/node_modules/docx/dist/layout.mjs +1 -6
- package/node_modules/docx/dist/layout.umd.cjs +1 -6
- package/node_modules/docx/package.json +4 -3
- package/node_modules/express/Readme.md +15 -9
- package/node_modules/express/lib/application.js +2 -2
- package/node_modules/express/lib/request.js +32 -19
- package/node_modules/express/lib/response.js +27 -30
- package/node_modules/express/node_modules/content-type/LICENSE +22 -0
- package/node_modules/express/node_modules/content-type/README.md +71 -0
- package/node_modules/express/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/express/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/express/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/express/node_modules/content-type/package.json +52 -0
- package/node_modules/express/package.json +10 -10
- package/node_modules/imapflow/CHANGELOG.md +48 -0
- package/node_modules/imapflow/dist/cjs/commands/append.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/commands/append.js +15 -4
- package/node_modules/imapflow/dist/cjs/commands/compress.js +2 -2
- package/node_modules/imapflow/dist/cjs/commands/id.js +5 -3
- package/node_modules/imapflow/dist/cjs/commands/idle.js +9 -9
- package/node_modules/imapflow/dist/cjs/commands/list.js +2 -2
- package/node_modules/imapflow/dist/cjs/commands/namespace.js +18 -14
- package/node_modules/imapflow/dist/cjs/commands/quota.js +2 -3
- package/node_modules/imapflow/dist/cjs/commands/select.d.ts +3 -14
- package/node_modules/imapflow/dist/cjs/commands/select.js +1 -4
- package/node_modules/imapflow/dist/cjs/commands/status.js +2 -4
- package/node_modules/imapflow/dist/cjs/connection-deadline.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/connection-deadline.js +2 -4
- package/node_modules/imapflow/dist/cjs/download.js +66 -35
- package/node_modules/imapflow/dist/cjs/errors.d.ts +15 -0
- package/node_modules/imapflow/dist/cjs/errors.js +22 -0
- package/node_modules/imapflow/dist/cjs/handler/imap-compiler.d.ts +4 -4
- package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +18 -18
- package/node_modules/imapflow/dist/cjs/handler/imap-parser.js +28 -3
- package/node_modules/imapflow/dist/cjs/handler/imap-stream.js +9 -8
- package/node_modules/imapflow/dist/cjs/handler/limits.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/handler/limits.js +5 -7
- package/node_modules/imapflow/dist/cjs/handler/parser-instance.js +23 -38
- package/node_modules/imapflow/dist/cjs/handler/token-parser.d.ts +12 -0
- package/node_modules/imapflow/dist/cjs/handler/token-parser.js +44 -104
- package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +4 -3
- package/node_modules/imapflow/dist/cjs/imap-flow.js +128 -78
- package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
- package/node_modules/imapflow/dist/cjs/proxy-connection.js +2 -5
- package/node_modules/imapflow/dist/cjs/search-compiler.js +2 -3
- package/node_modules/imapflow/dist/cjs/tools.d.ts +24 -3
- package/node_modules/imapflow/dist/cjs/tools.js +59 -18
- package/node_modules/imapflow/dist/cjs/types.d.ts +20 -1
- package/node_modules/imapflow/dist/esm/commands/append.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/commands/append.js +15 -4
- package/node_modules/imapflow/dist/esm/commands/compress.js +2 -2
- package/node_modules/imapflow/dist/esm/commands/id.js +6 -4
- package/node_modules/imapflow/dist/esm/commands/idle.js +9 -9
- package/node_modules/imapflow/dist/esm/commands/list.js +3 -3
- package/node_modules/imapflow/dist/esm/commands/namespace.js +19 -15
- package/node_modules/imapflow/dist/esm/commands/quota.js +3 -4
- package/node_modules/imapflow/dist/esm/commands/select.d.ts +3 -14
- package/node_modules/imapflow/dist/esm/commands/select.js +1 -4
- package/node_modules/imapflow/dist/esm/commands/status.js +2 -4
- package/node_modules/imapflow/dist/esm/connection-deadline.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/connection-deadline.js +2 -4
- package/node_modules/imapflow/dist/esm/download.js +66 -35
- package/node_modules/imapflow/dist/esm/errors.d.ts +15 -0
- package/node_modules/imapflow/dist/esm/errors.js +21 -0
- package/node_modules/imapflow/dist/esm/handler/imap-compiler.d.ts +4 -4
- package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +18 -18
- package/node_modules/imapflow/dist/esm/handler/imap-parser.js +28 -3
- package/node_modules/imapflow/dist/esm/handler/imap-stream.js +9 -8
- package/node_modules/imapflow/dist/esm/handler/limits.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/handler/limits.js +5 -7
- package/node_modules/imapflow/dist/esm/handler/parser-instance.js +23 -38
- package/node_modules/imapflow/dist/esm/handler/token-parser.d.ts +12 -0
- package/node_modules/imapflow/dist/esm/handler/token-parser.js +44 -104
- package/node_modules/imapflow/dist/esm/imap-flow.d.ts +4 -3
- package/node_modules/imapflow/dist/esm/imap-flow.js +130 -80
- package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/package-info.js +1 -1
- package/node_modules/imapflow/dist/esm/proxy-connection.js +2 -5
- package/node_modules/imapflow/dist/esm/search-compiler.js +2 -3
- package/node_modules/imapflow/dist/esm/tools.d.ts +24 -3
- package/node_modules/imapflow/dist/esm/tools.js +58 -19
- package/node_modules/imapflow/dist/esm/types.d.ts +20 -1
- package/node_modules/imapflow/package.json +6 -3
- package/node_modules/playwright/README.md +4 -4
- package/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +1 -1
- package/node_modules/playwright/lib/cli/testActions.js +8 -5
- package/node_modules/playwright/lib/common/index.js +37 -23
- package/node_modules/playwright/lib/common/index.js.txt +8 -9
- package/node_modules/playwright/lib/index.js +16 -4
- package/node_modules/playwright/lib/matchers/expect.js +13 -7
- package/node_modules/playwright/lib/matchers/expect.js.txt +4 -4
- package/node_modules/playwright/lib/program.js +2 -1
- package/node_modules/playwright/lib/runner/index.js +438 -244
- package/node_modules/playwright/lib/runner/index.js.txt +12 -11
- package/node_modules/playwright/lib/transform/babelBundle.js +2612 -2396
- package/node_modules/playwright/lib/transform/babelBundle.js.LICENSE +15 -15
- package/node_modules/playwright/lib/transform/babelBundle.js.txt +14 -11
- package/node_modules/playwright/lib/transform/esmLoader.js +17 -5
- package/node_modules/playwright/lib/transform/esmLoader.js.txt +3 -3
- package/node_modules/playwright/lib/worker/workerProcessEntry.js +17 -18
- package/node_modules/playwright/package.json +2 -7
- package/node_modules/playwright/types/test.d.ts +156 -39
- package/node_modules/playwright-core/browsers.json +9 -9
- package/node_modules/playwright-core/cli.js +1 -0
- package/node_modules/playwright-core/lib/bootstrap.js +61 -0
- package/node_modules/playwright-core/lib/coreBundle.js +6393 -4170
- package/node_modules/playwright-core/lib/server/electron/loader.js +4 -0
- package/node_modules/playwright-core/lib/tools/cli-client/cli.js +2 -1
- package/node_modules/playwright-core/lib/tools/cli-client/help.json +99 -12
- package/node_modules/playwright-core/lib/tools/cli-client/output.js +17 -16
- package/node_modules/playwright-core/lib/tools/cli-client/program.js +8 -4
- package/node_modules/playwright-core/lib/tools/cli-client/session.js +2 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/SKILL.md +71 -3
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/pr-attachments.md +60 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/running-code.md +4 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/session-management.md +2 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/test-generation.md +1 -1
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/video-recording.md +76 -3
- package/node_modules/playwright-core/lib/tools/skills/playwright-trace/SKILL.md +1 -1
- package/node_modules/playwright-core/lib/utilsBundle.js +948 -227
- package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +6 -6
- package/node_modules/playwright-core/lib/vite/htmlReport/report.js +1 -1
- package/node_modules/playwright-core/lib/vite/recorder/assets/{codeMirrorModule-CVQWJZAA.js → codeMirrorModule-DK72OMRi.js} +1 -1
- package/node_modules/playwright-core/lib/vite/recorder/assets/index-Cn0mmDuv.js +129 -0
- package/node_modules/playwright-core/lib/vite/recorder/index.html +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/{codeMirrorModule-BbkfBe3n.js → codeMirrorModule-BEB2e8M3.js} +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-D-g2vrvf.js +184 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/{xtermModule-DywYcAf8.js → xtermModule-B794rD2Z.js} +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/{defaultSettingsView.Bqk9acqE.css → defaultSettingsView.C8BeHuxd.css} +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/{index.B4cLoZK3.js → index.7-c5LSTW.js} +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/index.html +3 -3
- package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/node_modules/playwright-core/lib/vite/traceViewer/{uiMode.CU5KtEkS.js → uiMode.CYwC_gH1.js} +4 -4
- package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +3 -3
- package/node_modules/playwright-core/package.json +1 -1
- package/node_modules/playwright-core/types/protocol.d.ts +468 -337
- package/node_modules/playwright-core/types/types.d.ts +572 -37
- package/node_modules/process-warning/.github/workflows/ci.yml +1 -1
- package/node_modules/process-warning/.github/workflows/lock-threads.yml +1 -1
- package/node_modules/process-warning/.github/workflows/release.yml +24 -0
- package/node_modules/process-warning/README.md +46 -46
- package/node_modules/process-warning/package.json +1 -1
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/plugin/index.d.ts +1 -1
- package/packages/core/dist/plugin/index.d.ts.map +1 -1
- package/packages/core/dist/plugin/index.js.map +1 -1
- package/packages/core/dist/questions/store.d.ts +3 -1
- package/packages/core/dist/questions/store.d.ts.map +1 -1
- package/packages/core/dist/questions/store.js +3 -3
- package/packages/core/dist/questions/store.js.map +1 -1
- package/packages/core/dist/questions/types.d.ts +46 -1
- package/packages/core/dist/questions/types.d.ts.map +1 -1
- package/packages/core/dist/questions/types.js +2 -1
- package/packages/core/dist/questions/types.js.map +1 -1
- package/packages/core/dist/secrets/approval.d.ts +54 -0
- package/packages/core/dist/secrets/approval.d.ts.map +1 -1
- package/packages/core/dist/secrets/approval.js +58 -1
- package/packages/core/dist/secrets/approval.js.map +1 -1
- package/packages/core/dist/secrets/settings.d.ts +178 -0
- package/packages/core/dist/secrets/settings.d.ts.map +1 -1
- package/packages/core/dist/secrets/settings.js +63 -6
- package/packages/core/dist/secrets/settings.js.map +1 -1
- package/packages/core/dist/secrets/store.d.ts +31 -0
- package/packages/core/dist/secrets/store.d.ts.map +1 -1
- package/packages/core/dist/secrets/store.js +75 -0
- package/packages/core/dist/secrets/store.js.map +1 -1
- package/packages/core/dist/secrets/use.d.ts.map +1 -1
- package/packages/core/dist/secrets/use.js +68 -3
- package/packages/core/dist/secrets/use.js.map +1 -1
- package/packages/core/dist/tools.d.ts +22 -0
- package/packages/core/dist/tools.d.ts.map +1 -1
- package/packages/core/dist/tools.js.map +1 -1
- package/packages/core/migrations/080_secret_requests.sql +14 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/chat/session.d.ts.map +1 -1
- package/packages/gateway/dist/chat/session.js +2 -1
- package/packages/gateway/dist/chat/session.js.map +1 -1
- package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
- package/packages/gateway/dist/missions/execute.js +3 -1
- package/packages/gateway/dist/missions/execute.js.map +1 -1
- package/packages/gateway/dist/surfaces/browser-cards.d.ts +15 -3
- package/packages/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/browser-cards.js +34 -7
- package/packages/gateway/dist/surfaces/browser-cards.js.map +1 -1
- package/packages/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/offered-actions.js +8 -2
- package/packages/gateway/dist/surfaces/offered-actions.js.map +1 -1
- package/packages/gateway/dist/surfaces/pending-question.d.ts +3 -1
- package/packages/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/pending-question.js.map +1 -1
- package/packages/gateway/dist/surfaces/secret-request.d.ts +173 -0
- package/packages/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
- package/packages/gateway/dist/surfaces/secret-request.js +332 -0
- package/packages/gateway/dist/surfaces/secret-request.js.map +1 -0
- package/packages/gateway/dist/system-context.js +1 -1
- package/packages/gateway/dist/system-context.js.map +1 -1
- package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/main.js +14 -3
- package/packages/gateway/dist/telegram/main.js.map +1 -1
- package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/surface.js +4 -1
- package/packages/gateway/dist/telegram/surface.js.map +1 -1
- package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/packages/gateway/dist/web/api-routes.js +9 -1
- package/packages/gateway/dist/web/api-routes.js.map +1 -1
- package/packages/gateway/dist/web/approval-ask.js +2 -2
- package/packages/gateway/dist/web/approval-ask.js.map +1 -1
- package/packages/gateway/dist/web/browser-capture.d.ts +13 -0
- package/packages/gateway/dist/web/browser-capture.d.ts.map +1 -0
- package/packages/gateway/dist/web/browser-capture.js +24 -0
- package/packages/gateway/dist/web/browser-capture.js.map +1 -0
- package/packages/gateway/dist/web/chat.d.ts +26 -0
- package/packages/gateway/dist/web/chat.d.ts.map +1 -1
- package/packages/gateway/dist/web/chat.js +87 -2
- package/packages/gateway/dist/web/chat.js.map +1 -1
- package/packages/gateway/dist/web/extension.d.ts +30 -0
- package/packages/gateway/dist/web/extension.d.ts.map +1 -1
- package/packages/gateway/dist/web/extension.js +86 -6
- package/packages/gateway/dist/web/extension.js.map +1 -1
- package/packages/gateway/dist/web/onboarding.js +1 -1
- package/packages/gateway/dist/web/onboarding.js.map +1 -1
- package/packages/gateway/dist/web/remote-hand.d.ts +26 -2
- package/packages/gateway/dist/web/remote-hand.d.ts.map +1 -1
- package/packages/gateway/dist/web/remote-hand.js +89 -28
- package/packages/gateway/dist/web/remote-hand.js.map +1 -1
- package/packages/gateway/dist/web/secret-request.d.ts +54 -0
- package/packages/gateway/dist/web/secret-request.d.ts.map +1 -0
- package/packages/gateway/dist/web/secret-request.js +264 -0
- package/packages/gateway/dist/web/secret-request.js.map +1 -0
- package/packages/gateway/dist/web/secrets.d.ts +1 -0
- package/packages/gateway/dist/web/secrets.d.ts.map +1 -1
- package/packages/gateway/dist/web/secrets.js +1 -1
- package/packages/gateway/dist/web/secrets.js.map +1 -1
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +72 -3
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/install/dist/app-layout.d.ts +24 -0
- package/packages/install/dist/app-layout.d.ts.map +1 -1
- package/packages/install/dist/app-layout.js +64 -2
- package/packages/install/dist/app-layout.js.map +1 -1
- package/packages/install/dist/launcher.d.ts.map +1 -1
- package/packages/install/dist/launcher.js +89 -10
- package/packages/install/dist/launcher.js.map +1 -1
- package/packages/install/dist/linux-install.d.ts +41 -0
- package/packages/install/dist/linux-install.d.ts.map +1 -0
- package/packages/install/dist/linux-install.js +86 -0
- package/packages/install/dist/linux-install.js.map +1 -0
- package/packages/install/dist/runtime-info.d.ts +23 -0
- package/packages/install/dist/runtime-info.d.ts.map +1 -0
- package/packages/install/dist/runtime-info.js +69 -0
- package/packages/install/dist/runtime-info.js.map +1 -0
- package/packages/install/dist/supervisor.d.ts.map +1 -1
- package/packages/install/dist/supervisor.js +8 -6
- package/packages/install/dist/supervisor.js.map +1 -1
- package/packages/install/dist/uninstall.d.ts +20 -0
- package/packages/install/dist/uninstall.d.ts.map +1 -1
- package/packages/install/dist/uninstall.js +50 -1
- package/packages/install/dist/uninstall.js.map +1 -1
- package/packages/install/dist/upgrade.d.ts +4 -1
- package/packages/install/dist/upgrade.d.ts.map +1 -1
- package/packages/install/dist/upgrade.js +77 -51
- package/packages/install/dist/upgrade.js.map +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/anthropic.d.ts +7 -0
- package/packages/runtime/dist/anthropic.d.ts.map +1 -1
- package/packages/runtime/dist/anthropic.js +19 -1
- package/packages/runtime/dist/anthropic.js.map +1 -1
- package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/controller.d.ts +16 -1
- package/packages/tools/browser/dist/controller.d.ts.map +1 -1
- package/packages/tools/browser/dist/controller.js +59 -5
- package/packages/tools/browser/dist/controller.js.map +1 -1
- package/packages/tools/browser/dist/driver.d.ts +12 -0
- package/packages/tools/browser/dist/driver.d.ts.map +1 -1
- package/packages/tools/browser/dist/driver.js +41 -2
- package/packages/tools/browser/dist/driver.js.map +1 -1
- package/packages/tools/browser/dist/extension.d.ts +49 -9
- package/packages/tools/browser/dist/extension.d.ts.map +1 -1
- package/packages/tools/browser/dist/extension.js +145 -21
- package/packages/tools/browser/dist/extension.js.map +1 -1
- package/packages/tools/browser/dist/index.d.ts +10 -6
- package/packages/tools/browser/dist/index.d.ts.map +1 -1
- package/packages/tools/browser/dist/index.js +22 -8
- package/packages/tools/browser/dist/index.js.map +1 -1
- package/packages/tools/browser/dist/routes.d.ts +10 -1
- package/packages/tools/browser/dist/routes.d.ts.map +1 -1
- package/packages/tools/browser/dist/routes.js +24 -0
- package/packages/tools/browser/dist/routes.js.map +1 -1
- package/packages/tools/browser/dist/service.d.ts +48 -1
- package/packages/tools/browser/dist/service.d.ts.map +1 -1
- package/packages/tools/browser/dist/service.js +114 -11
- package/packages/tools/browser/dist/service.js.map +1 -1
- package/packages/tools/browser/dist/types.d.ts +54 -3
- package/packages/tools/browser/dist/types.d.ts.map +1 -1
- package/packages/tools/browser/dist/types.js +17 -1
- package/packages/tools/browser/dist/types.js.map +1 -1
- package/packages/tools/email/dist/.tsbuildinfo +1 -1
- package/packages/tools/host/dist/.tsbuildinfo +1 -1
- package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
- package/packages/tools/memory/dist/.tsbuildinfo +1 -1
- package/packages/tools/web/dist/.tsbuildinfo +1 -1
- package/packages/web/dist/assets/index-DgpPl0TR.js +155 -0
- package/packages/web/dist/assets/index-rMRjibNI.css +1 -0
- package/packages/web/dist/assets/{lottie_light-D7CS-IeP.js → lottie_light-twPed1FM.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/precache.json +4 -4
- package/node_modules/content-disposition/index.js +0 -536
- package/node_modules/playwright/jsx-runtime.js +0 -42
- package/node_modules/playwright/jsx-runtime.mjs +0 -21
- package/node_modules/playwright-core/lib/vite/recorder/assets/index-hrlLqLtq.js +0 -129
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +0 -182
- package/packages/web/dist/assets/index-BibqUZwt.js +0 -155
- package/packages/web/dist/assets/index-DBVZzTau.css +0 -1
|
@@ -32,6 +32,7 @@ exports.getSelectedMailbox = getSelectedMailbox;
|
|
|
32
32
|
exports.getFolderTree = getFolderTree;
|
|
33
33
|
exports.getFlagColor = getFlagColor;
|
|
34
34
|
exports.getColorFlags = getColorFlags;
|
|
35
|
+
exports.mergeFetchRows = mergeFetchRows;
|
|
35
36
|
exports.formatMessageResponse = formatMessageResponse;
|
|
36
37
|
exports.processName = processName;
|
|
37
38
|
exports.decodeText = decodeText;
|
|
@@ -48,6 +49,7 @@ exports.isValidSequenceValue = isValidSequenceValue;
|
|
|
48
49
|
exports.isDecimalString = isDecimalString;
|
|
49
50
|
exports.isUnsafeKey = isUnsafeKey;
|
|
50
51
|
exports.getStringList = getStringList;
|
|
52
|
+
exports.getStringValue = getStringValue;
|
|
51
53
|
exports.parseBigIntValue = parseBigIntValue;
|
|
52
54
|
exports.parseUintValue = parseUintValue;
|
|
53
55
|
exports.expandRange = expandRange;
|
|
@@ -144,13 +146,7 @@ const CONNECTION_ERROR_SITE_KEYS = ['rejectedFrom', 'command', 'path'];
|
|
|
144
146
|
* @returns The stamped error
|
|
145
147
|
*/
|
|
146
148
|
function buildConnectionError(cid, code, message, meta) {
|
|
147
|
-
|
|
148
|
-
error.code = code;
|
|
149
|
-
error.cid = cid;
|
|
150
|
-
if (meta) {
|
|
151
|
-
Object.assign(error, meta);
|
|
152
|
-
}
|
|
153
|
-
return error;
|
|
149
|
+
return (0, errors_js_1.createImapError)(message, code, { cid, ...meta });
|
|
154
150
|
}
|
|
155
151
|
/**
|
|
156
152
|
* Re-stamps an existing connection error for a different rejection site.
|
|
@@ -172,6 +168,7 @@ function buildConnectionError(cid, code, message, meta) {
|
|
|
172
168
|
* @returns A separate error describing the same failure at the new site
|
|
173
169
|
*/
|
|
174
170
|
function restampConnectionError(err, meta) {
|
|
171
|
+
// the original code is carried over unchanged, whatever its origin
|
|
175
172
|
let error = buildConnectionError(err.cid, err.code, err.message, err);
|
|
176
173
|
for (let key of CONNECTION_ERROR_SITE_KEYS) {
|
|
177
174
|
delete error[key];
|
|
@@ -271,12 +268,15 @@ function logConnectionError(connection, msg, err) {
|
|
|
271
268
|
/**
|
|
272
269
|
* Whether a command failed because the server answered it with a tagged NO or BAD, as opposed
|
|
273
270
|
* to a lost connection, a timeout or a local failure that says nothing about the server's answer.
|
|
271
|
+
* A throttled command (ETHROTTLE, Microsoft 365 answers it with BAD) was not refused: the server
|
|
272
|
+
* asks to try again later, so a throttled login is not a rejected credential and a throttled
|
|
273
|
+
* IDLE does not mean the server lacks IDLE.
|
|
274
274
|
*
|
|
275
275
|
* @param err - The error the command failed with
|
|
276
|
-
* @returns True for a tagged NO or BAD
|
|
276
|
+
* @returns True for a tagged NO or BAD that is not throttling
|
|
277
277
|
*/
|
|
278
278
|
function isServerRefusal(err) {
|
|
279
|
-
return !!err && (err.responseStatus === 'NO' || err.responseStatus === 'BAD');
|
|
279
|
+
return !!err && (err.responseStatus === 'NO' || err.responseStatus === 'BAD') && err.code !== errors_js_1.ImapFlowErrorCode.ETHROTTLE;
|
|
280
280
|
}
|
|
281
281
|
/**
|
|
282
282
|
* Checks whether IMAP4rev2 semantics are active for the connection: either the
|
|
@@ -522,12 +522,13 @@ function getTextValues(attributes) {
|
|
|
522
522
|
* @param response - Parsed IMAP server response
|
|
523
523
|
* @returns Compiled response text, or false if no response
|
|
524
524
|
*/
|
|
525
|
+
// Async although nothing in it awaits any more: `imapflow/lib/tools` deep imports may chain on the promise
|
|
525
526
|
async function getErrorText(response) {
|
|
526
527
|
if (!response) {
|
|
527
528
|
return false;
|
|
528
529
|
}
|
|
529
530
|
try {
|
|
530
|
-
return (
|
|
531
|
+
return (0, imap_handler_js_1.compiler)(response).toString();
|
|
531
532
|
}
|
|
532
533
|
catch {
|
|
533
534
|
// The wire encoder refuses values that cannot be expressed as a valid IMAP
|
|
@@ -536,7 +537,7 @@ async function getErrorText(response) {
|
|
|
536
537
|
// tolerates stray bytes inside an OK/NO/BAD atom, and those bytes then have
|
|
537
538
|
// no valid re-encoding. This text is diagnostic, so fall back to the logging
|
|
538
539
|
// encoder rather than replacing the server's error with an encoding failure.
|
|
539
|
-
return (
|
|
540
|
+
return (0, imap_handler_js_1.compiler)(response, { isLogging: true }).toString();
|
|
540
541
|
}
|
|
541
542
|
}
|
|
542
543
|
/**
|
|
@@ -713,6 +714,34 @@ function getColorFlags(color) {
|
|
|
713
714
|
}
|
|
714
715
|
return result;
|
|
715
716
|
}
|
|
717
|
+
/**
|
|
718
|
+
* Merges the FETCH rows a server sent for one message into one message object. A server may
|
|
719
|
+
* split the data items of a message over several FETCH responses, and may put an unsolicited
|
|
720
|
+
* one (a flag change made by another session) in between (RFC 9051 sections 7.5.2 and 5.2).
|
|
721
|
+
* Later rows win for single values, bodyParts, binaryParts and partialOrigins are combined.
|
|
722
|
+
*
|
|
723
|
+
* @param rows - Formatted rows of the same message, in the order they arrived
|
|
724
|
+
* @returns One message object holding the data of every row
|
|
725
|
+
*/
|
|
726
|
+
function mergeFetchRows(rows) {
|
|
727
|
+
if (rows.length === 1) {
|
|
728
|
+
return rows[0];
|
|
729
|
+
}
|
|
730
|
+
let merged = {};
|
|
731
|
+
let partialOrigins;
|
|
732
|
+
for (let row of rows) {
|
|
733
|
+
let { bodyParts, binaryParts, ...rest } = row;
|
|
734
|
+
Object.assign(merged, rest);
|
|
735
|
+
// combined into collections of their own, so the rows stay untouched
|
|
736
|
+
bodyParts?.forEach((value, key) => (merged.bodyParts ??= new Map()).set(key, value));
|
|
737
|
+
binaryParts?.forEach(key => (merged.binaryParts ??= new Set()).add(key));
|
|
738
|
+
row.partialOrigins?.forEach((value, key) => (partialOrigins ??= new Map()).set(key, value));
|
|
739
|
+
}
|
|
740
|
+
if (partialOrigins) {
|
|
741
|
+
Object.defineProperty(merged, 'partialOrigins', { value: partialOrigins, writable: true, configurable: true });
|
|
742
|
+
}
|
|
743
|
+
return merged;
|
|
744
|
+
}
|
|
716
745
|
/**
|
|
717
746
|
* Formats a raw untagged FETCH response into a structured message object.
|
|
718
747
|
*
|
|
@@ -722,6 +751,7 @@ function getColorFlags(color) {
|
|
|
722
751
|
* @param connection - Connection the response arrived on, decodes Gmail labels like mailbox names
|
|
723
752
|
* @returns Formatted message object with properties like seq, uid, flags, envelope, etc.
|
|
724
753
|
*/
|
|
754
|
+
// Async although nothing in it awaits any more: `imapflow/lib/tools` deep imports may chain on the promise
|
|
725
755
|
async function formatMessageResponse(untagged, mailbox, idHashAlgorithm, connection) {
|
|
726
756
|
let map = {};
|
|
727
757
|
// The sequence number indexes into mailbox state, so an unusable one is dropped rather
|
|
@@ -744,9 +774,9 @@ async function formatMessageResponse(untagged, mailbox, idHashAlgorithm, connect
|
|
|
744
774
|
let attribute = attributes[i];
|
|
745
775
|
if (i % 2 === 0) {
|
|
746
776
|
origin = false;
|
|
747
|
-
key = (
|
|
777
|
+
key = (0, imap_handler_js_1.compiler)({
|
|
748
778
|
attributes: [attribute]
|
|
749
|
-
})
|
|
779
|
+
})
|
|
750
780
|
.toString()
|
|
751
781
|
.toLowerCase()
|
|
752
782
|
.replace(/<(\d+)(\.\d+)?>$/, (match, start) => {
|
|
@@ -1473,16 +1503,27 @@ function getStringList(list) {
|
|
|
1473
1503
|
}
|
|
1474
1504
|
let strings = [];
|
|
1475
1505
|
for (let entry of list) {
|
|
1476
|
-
let value = entry
|
|
1477
|
-
if (
|
|
1478
|
-
value = value.toString();
|
|
1479
|
-
}
|
|
1480
|
-
if (value && typeof value === 'string') {
|
|
1506
|
+
let value = getStringValue(entry);
|
|
1507
|
+
if (value) {
|
|
1481
1508
|
strings.push(value);
|
|
1482
1509
|
}
|
|
1483
1510
|
}
|
|
1484
1511
|
return strings;
|
|
1485
1512
|
}
|
|
1513
|
+
/**
|
|
1514
|
+
* Reads the text of a string value from a response. A server may send any string as a literal,
|
|
1515
|
+
* which arrives as a Buffer and is decoded as UTF-8.
|
|
1516
|
+
*
|
|
1517
|
+
* @param attribute - Parsed attribute from a response
|
|
1518
|
+
* @returns The string, or undefined when the attribute holds no string (NIL, a list)
|
|
1519
|
+
*/
|
|
1520
|
+
function getStringValue(attribute) {
|
|
1521
|
+
let value = attribute && attribute.value;
|
|
1522
|
+
if (Buffer.isBuffer(value)) {
|
|
1523
|
+
return value.toString();
|
|
1524
|
+
}
|
|
1525
|
+
return typeof value === 'string' ? value : undefined;
|
|
1526
|
+
}
|
|
1486
1527
|
/**
|
|
1487
1528
|
* Parses an untrusted decimal value from a server response into a BigInt.
|
|
1488
1529
|
*
|
|
@@ -499,6 +499,8 @@ export interface FetchQueryObject {
|
|
|
499
499
|
/** Include full message in the response, up to maxLength bytes */
|
|
500
500
|
maxLength?: number | undefined;
|
|
501
501
|
} | undefined;
|
|
502
|
+
/** Email ID (OBJECTID EMAILID or Gmail X-GM-MSGID) is always requested when the server supports either extension, so this is accepted but changes nothing */
|
|
503
|
+
emailId?: boolean | undefined;
|
|
502
504
|
/** If true then include thread ID in the response (only if server supports either OBJECTID or X-GM-EXT-1 extensions) */
|
|
503
505
|
threadId?: boolean | undefined;
|
|
504
506
|
/** If true then include GMail labels in the response (only if server supports X-GM-EXT-1 extension) */
|
|
@@ -653,9 +655,11 @@ export interface DownloadOptions {
|
|
|
653
655
|
maxBytes?: number | undefined;
|
|
654
656
|
/** How large content parts to ask from the server. Defaults to 65536 */
|
|
655
657
|
chunkSize?: number | undefined;
|
|
658
|
+
/** If true then requests the content with FETCH BINARY when the server supports it (BINARY or IMAP4rev2), so the server removes the transfer encoding */
|
|
659
|
+
binary?: boolean | undefined;
|
|
656
660
|
}
|
|
657
661
|
/** Options for downloadMany(): the download() options without `chunkSize`, as the parts come in one FETCH */
|
|
658
|
-
export type DownloadManyOptions = Pick<DownloadOptions, 'uid' | 'maxBytes'>;
|
|
662
|
+
export type DownloadManyOptions = Pick<DownloadOptions, 'uid' | 'maxBytes' | 'binary'>;
|
|
659
663
|
export interface DownloadManyPart {
|
|
660
664
|
meta: DownloadMeta;
|
|
661
665
|
content?: Buffer | null | undefined;
|
|
@@ -706,6 +710,10 @@ export interface MailboxOpenOptions {
|
|
|
706
710
|
readOnly?: boolean | undefined;
|
|
707
711
|
/** Optional description for mailbox lock tracking */
|
|
708
712
|
description?: string | undefined;
|
|
713
|
+
/** QRESYNC (RFC 7162): HIGHESTMODSEQ from an earlier session. With `uidValidity` and QRESYNC enabled, changes since then are reported as `flags` and `expunge` events. getMailboxLock() only applies it when it selects the mailbox, not when the mailbox is already open */
|
|
714
|
+
changedSince?: bigint | number | string | undefined;
|
|
715
|
+
/** QRESYNC (RFC 7162): the UIDVALIDITY known from the previous session, required with `changedSince` */
|
|
716
|
+
uidValidity?: bigint | number | string | undefined;
|
|
709
717
|
}
|
|
710
718
|
export interface MailboxLockOptions extends MailboxOpenOptions {
|
|
711
719
|
/**
|
|
@@ -797,6 +805,15 @@ export interface LogEvent {
|
|
|
797
805
|
/** Additional log data */
|
|
798
806
|
[key: string]: any;
|
|
799
807
|
}
|
|
808
|
+
/** A message the server marked with the ALERT response code, to be shown to the user (RFC 9051 section 7.1) */
|
|
809
|
+
export interface AlertEvent {
|
|
810
|
+
/** The alert text */
|
|
811
|
+
message: string;
|
|
812
|
+
/** The response that carried it */
|
|
813
|
+
response: 'OK' | 'NO' | 'BAD' | 'BYE' | 'PREAUTH';
|
|
814
|
+
/** Tag of the command it completed, missing for an untagged response */
|
|
815
|
+
tag?: string | undefined;
|
|
816
|
+
}
|
|
800
817
|
export interface ResponseEvent {
|
|
801
818
|
/** Response type */
|
|
802
819
|
response: string;
|
|
@@ -862,4 +879,6 @@ export interface ImapFlowEvents {
|
|
|
862
879
|
log: [entry: LogEvent];
|
|
863
880
|
/** Response event */
|
|
864
881
|
response: [response: ResponseEvent];
|
|
882
|
+
/** The server sent an ALERT: text meant for the user, such as a planned shutdown or an account problem */
|
|
883
|
+
alert: [alert: AlertEvent];
|
|
865
884
|
}
|
|
@@ -19,4 +19,4 @@ export interface AppendResult extends AppendResponseObject {
|
|
|
19
19
|
* @returns Append result with UID info if available, or undefined if preconditions not met
|
|
20
20
|
* @throws {Error} If the APPEND command fails or message exceeds APPENDLIMIT
|
|
21
21
|
*/
|
|
22
|
-
export default function append(connection: ImapFlow, destination: string | string[], content: Buffer | string, flags?: string | string[] | undefined, idate?: Date | string | false | undefined): Promise<AppendResult | undefined>;
|
|
22
|
+
export default function append(connection: ImapFlow, destination: string | string[], content: Buffer | Uint8Array | string, flags?: string | string[] | undefined, idate?: Date | string | false | undefined): Promise<AppendResult | undefined>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { formatFlag, canUseFlag, formatDateTime, normalizePath, encodePath, comparePaths, parseBigIntValue, parseUintValue, MAX_UINT32_DIGITS, getSelectedMailbox, emitSafe, isAuthenticatedState, reportCommandError, logConnectionError } from '../tools.js';
|
|
2
|
+
import { createImapError } from '../errors.js';
|
|
2
3
|
/**
|
|
3
4
|
* Appends a message to a mailbox.
|
|
4
5
|
*
|
|
@@ -15,14 +16,24 @@ export default async function append(connection, destination, content, flags, id
|
|
|
15
16
|
// nothing to do here
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
19
|
+
// The literal size marker is announced from these bytes, so anything that is not
|
|
20
|
+
// bytes (a Readable, a plain object) is refused here instead of desyncing the session
|
|
21
|
+
let message;
|
|
18
22
|
if (typeof content === 'string') {
|
|
19
|
-
|
|
23
|
+
message = Buffer.from(content);
|
|
24
|
+
}
|
|
25
|
+
else if (content instanceof Uint8Array) {
|
|
26
|
+
// a Buffer as is, any other Uint8Array as a view over the same memory, not a copy
|
|
27
|
+
message = Buffer.isBuffer(content) ? content : Buffer.from(content.buffer, content.byteOffset, content.byteLength);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw createImapError('Message content must be a Buffer, Uint8Array or string', 'InvalidMessageContent');
|
|
20
31
|
}
|
|
21
32
|
// APPENDLIMIT capability (RFC 7889): server may advertise the maximum message
|
|
22
33
|
// size it accepts. Check before sending to avoid a wasted round-trip.
|
|
23
34
|
if (connection.capabilities.has('APPENDLIMIT')) {
|
|
24
35
|
let appendLimit = connection.capabilities.get('APPENDLIMIT');
|
|
25
|
-
if (typeof appendLimit === 'number' && appendLimit <
|
|
36
|
+
if (typeof appendLimit === 'number' && appendLimit < message.length) {
|
|
26
37
|
let err = new Error('Message content too big for APPENDLIMIT=' + appendLimit);
|
|
27
38
|
err.serverResponseCode = 'APPENDLIMIT';
|
|
28
39
|
throw err;
|
|
@@ -79,9 +90,9 @@ export default async function append(connection, destination, content, flags, id
|
|
|
79
90
|
// Regular literals cannot contain NUL bytes per the IMAP grammar.
|
|
80
91
|
let isLiteral8 = false;
|
|
81
92
|
if (connection.capabilities.has('BINARY') && !connection.disableBinary) {
|
|
82
|
-
isLiteral8 =
|
|
93
|
+
isLiteral8 = message.indexOf(0) >= 0;
|
|
83
94
|
}
|
|
84
|
-
attributes.push({ type: 'LITERAL', value:
|
|
95
|
+
attributes.push({ type: 'LITERAL', value: message, isLiteral8 });
|
|
85
96
|
let map = { destination };
|
|
86
97
|
if (connection.mailbox && connection.mailbox.path) {
|
|
87
98
|
map.path = connection.mailbox.path;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createImapError } from '../errors.js';
|
|
1
2
|
/**
|
|
2
3
|
* Requests DEFLATE compression from the server.
|
|
3
4
|
*
|
|
@@ -33,8 +34,7 @@ export default async function compress(connection) {
|
|
|
33
34
|
// back its unconsumed tail on unpipe so the transport can feed it into the
|
|
34
35
|
// inflater - not something a command module can reach from here.
|
|
35
36
|
if (response.hasTrailingData) {
|
|
36
|
-
let error =
|
|
37
|
-
error.code = 'COMPRESS_TRAILING_DATA';
|
|
37
|
+
let error = createImapError('Server sent data between the COMPRESS response and the compression layer switch', 'COMPRESS_TRAILING_DATA');
|
|
38
38
|
connection.log.error({ err: error, cid: connection.id });
|
|
39
39
|
// Schedule the close before releasing parser backpressure, so the buffered
|
|
40
40
|
// deflate-framed bytes cannot settle anything before teardown begins. This is
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { formatDateTime, isUnsafeKey } from '../tools.js';
|
|
1
|
+
import { formatDateTime, isUnsafeKey, getStringValue } from '../tools.js';
|
|
2
2
|
/**
|
|
3
3
|
* Sends ID info to the server and updates server info data based on the response.
|
|
4
4
|
*
|
|
@@ -36,17 +36,19 @@ export default async function id(connection, clientInfo) {
|
|
|
36
36
|
let params = untagged.attributes && untagged.attributes[0];
|
|
37
37
|
let key;
|
|
38
38
|
(Array.isArray(params) ? params : [].concat(params || [])).forEach((val, i) => {
|
|
39
|
+
// keys are strings and values nstrings, either may come as a literal
|
|
40
|
+
let value = getStringValue(val);
|
|
39
41
|
if (i % 2 === 0) {
|
|
40
|
-
key =
|
|
42
|
+
key = value;
|
|
41
43
|
}
|
|
42
|
-
else if (
|
|
44
|
+
else if (key !== undefined && value !== undefined) {
|
|
43
45
|
// The server picks the keys of this object, which the caller reads
|
|
44
46
|
// back as serverInfo: a prototype-chain name is skipped as it is for
|
|
45
47
|
// every other server-named key, so it can neither be shadowed nor
|
|
46
48
|
// written through
|
|
47
49
|
let name = key.toLowerCase().trim();
|
|
48
50
|
if (!isUnsafeKey(name)) {
|
|
49
|
-
map[name] =
|
|
51
|
+
map[name] = value;
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { guardedPromise, hasCapability, isServerRefusal, logConnectionError, restampConnectionError, unrefTimer, clearTimer, getSelectedMailbox } from '../tools.js';
|
|
2
|
+
import { createImapError } from '../errors.js';
|
|
2
3
|
const NOOP_INTERVAL = 2 * 60 * 1000;
|
|
3
4
|
/**
|
|
4
5
|
* Marks the connection as idling on behalf of one session and returns a release function.
|
|
@@ -124,14 +125,15 @@ async function runIdle(connection) {
|
|
|
124
125
|
}
|
|
125
126
|
catch (err) {
|
|
126
127
|
logConnectionError(connection, 'IDLE session failed', err);
|
|
127
|
-
// A tagged NO or BAD only means the server
|
|
128
|
-
// so the waiters are released by the finally block below and their own commands
|
|
129
|
-
// Anything else (close, lost socket, parser failure) fails the waiters too.
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
// A tagged NO or BAD only means the server did not run IDLE; the connection is still
|
|
129
|
+
// usable, so the waiters are released by the finally block below and their own commands
|
|
130
|
+
// run. Anything else (close, lost socket, parser failure) fails the waiters too. Only a
|
|
131
|
+
// refusal turns IDLE off for the session, a throttled IDLE is tried again later.
|
|
132
|
+
let answeredByServer = err.responseStatus === 'NO' || err.responseStatus === 'BAD';
|
|
133
|
+
if (isServerRefusal(err)) {
|
|
132
134
|
connection.skipIdle = true;
|
|
133
135
|
}
|
|
134
|
-
if (preCheckWaitQueue.length && !
|
|
136
|
+
if (preCheckWaitQueue.length && !answeredByServer) {
|
|
135
137
|
// One error for the whole queue: every waiter failed at the same site, for the same
|
|
136
138
|
// reason. Built inside the guard so a teardown with nothing queued - the common case -
|
|
137
139
|
// does not pay for an Error and its stack capture.
|
|
@@ -188,9 +190,7 @@ async function pollOnce(connection, session) {
|
|
|
188
190
|
highestModseq: true
|
|
189
191
|
});
|
|
190
192
|
if (!status) {
|
|
191
|
-
|
|
192
|
-
err.code = 'PollFailed';
|
|
193
|
-
throw err;
|
|
193
|
+
throw createImapError('STATUS poll failed', 'PollFailed');
|
|
194
194
|
}
|
|
195
195
|
break;
|
|
196
196
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { decodePath, encodePath, normalizePath, enhanceCommandError, hasCapability, isRev2Active, buildStatusQueryAttributes, getStringList } from '../tools.js';
|
|
1
|
+
import { decodePath, encodePath, normalizePath, enhanceCommandError, hasCapability, isRev2Active, buildStatusQueryAttributes, getStringList, getStringValue } from '../tools.js';
|
|
2
2
|
import { parseStatusList } from './status-fields.js';
|
|
3
3
|
import { specialUse } from '../special-use.js';
|
|
4
4
|
/**
|
|
@@ -155,7 +155,7 @@ export default async function list(connection, reference, mailbox, options) {
|
|
|
155
155
|
path: normalizePath(connection, decodePath(connection, rawPath)),
|
|
156
156
|
pathAsListed: rawPath,
|
|
157
157
|
flags: new Set(getStringList(untagged.attributes[0])),
|
|
158
|
-
delimiter: (untagged.attributes[1]
|
|
158
|
+
delimiter: getStringValue(untagged.attributes[1]),
|
|
159
159
|
listed: true
|
|
160
160
|
};
|
|
161
161
|
normalizeFlags(entry);
|
|
@@ -396,7 +396,7 @@ export default async function list(connection, reference, mailbox, options) {
|
|
|
396
396
|
path: normalizePath(connection, decodePath(connection, rawPath)),
|
|
397
397
|
pathAsListed: rawPath,
|
|
398
398
|
flags: new Set(getStringList(untagged.attributes[0])),
|
|
399
|
-
delimiter: (untagged.attributes[1]
|
|
399
|
+
delimiter: getStringValue(untagged.attributes[1]),
|
|
400
400
|
subscribed: true
|
|
401
401
|
};
|
|
402
402
|
if (entry.path.toUpperCase() === 'INBOX') {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { hasCapability, getStringList, isAuthenticatedState } from '../tools.js';
|
|
1
|
+
import { hasCapability, getStringList, getStringValue, isAuthenticatedState } from '../tools.js';
|
|
2
2
|
/**
|
|
3
3
|
* Requests NAMESPACE info from the server.
|
|
4
4
|
*
|
|
@@ -91,8 +91,9 @@ async function getListPrefix(connection) {
|
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
93
|
map.flags = new Set(getStringList(untagged.attributes[0]));
|
|
94
|
-
|
|
95
|
-
map.
|
|
94
|
+
// the name may be a literal, which arrives as a Buffer
|
|
95
|
+
map.delimiter = getStringValue(untagged.attributes[1]) || null;
|
|
96
|
+
map.prefix = getStringValue(untagged.attributes[2]) || '';
|
|
96
97
|
if (map.delimiter && map.prefix.charAt(0) === map.delimiter) {
|
|
97
98
|
map.prefix = map.prefix.slice(1);
|
|
98
99
|
}
|
|
@@ -117,22 +118,25 @@ function getNamsepaceInfo(attribute) {
|
|
|
117
118
|
if (!attribute || !Array.isArray(attribute) || !attribute.length) {
|
|
118
119
|
return false;
|
|
119
120
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return pair.length >= 2 && pair[0] && typeof pair[0].value === 'string' && (pair[1] === null || (pair[1] && typeof pair[1].value === 'string'));
|
|
126
|
-
})
|
|
127
|
-
.map(entry => {
|
|
121
|
+
let entries = [];
|
|
122
|
+
for (let entry of attribute) {
|
|
123
|
+
if (!Array.isArray(entry)) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
128
126
|
let pair = entry;
|
|
129
|
-
let prefix = pair[0]
|
|
130
|
-
|
|
127
|
+
let prefix = getStringValue(pair[0]);
|
|
128
|
+
// RFC 2342 section 5 allows the delimiter to be NIL when the namespace has no hierarchy.
|
|
129
|
+
// The token parser emits a literal `null` for NIL.
|
|
130
|
+
let delimiter = pair[1] === null ? null : getStringValue(pair[1]);
|
|
131
|
+
if (pair.length < 2 || prefix === undefined || delimiter === undefined) {
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
131
134
|
// Append the delimiter to the prefix if it doesn't already end with one,
|
|
132
135
|
// so callers can construct full paths by simply concatenating prefix + name.
|
|
133
136
|
if (delimiter && prefix && prefix.charAt(prefix.length - 1) !== delimiter) {
|
|
134
137
|
prefix += delimiter;
|
|
135
138
|
}
|
|
136
|
-
|
|
137
|
-
}
|
|
139
|
+
entries.push({ prefix, delimiter });
|
|
140
|
+
}
|
|
141
|
+
return entries;
|
|
138
142
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { encodePath, normalizePath, parseUintValue, isUnsafeKey, isAuthenticatedState, reportCommandError } from '../tools.js';
|
|
1
|
+
import { encodePath, normalizePath, parseUintValue, isUnsafeKey, isAuthenticatedState, reportCommandError, getStringValue } from '../tools.js';
|
|
2
2
|
/**
|
|
3
3
|
* Requests quota information for a mailbox.
|
|
4
4
|
*
|
|
@@ -79,9 +79,8 @@ export default async function quota(connection, path) {
|
|
|
79
79
|
// QUOTAROOT response tells us which quota root applies to this mailbox.
|
|
80
80
|
// A mailbox may have zero or one quota root.
|
|
81
81
|
QUOTAROOT: async (untagged) => {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
: false;
|
|
82
|
+
// the root name is an astring, which may come as a literal
|
|
83
|
+
let quotaRoot = getStringValue(untagged.attributes && untagged.attributes[1]);
|
|
85
84
|
if (quotaRoot) {
|
|
86
85
|
map.quotaRoot = quotaRoot;
|
|
87
86
|
}
|
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
import type { ImapFlow } from '../imap-flow.js';
|
|
2
2
|
import type { MailboxObject, MailboxOpenOptions } from '../types.js';
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
* parameters, which are only honored when the QRESYNC extension has been enabled
|
|
6
|
-
*/
|
|
7
|
-
export interface SelectOptions extends MailboxOpenOptions {
|
|
8
|
-
/** QRESYNC modseq value to fetch changes since */
|
|
9
|
-
changedSince?: bigint | number | string | undefined;
|
|
10
|
-
/** QRESYNC UID validity value */
|
|
11
|
-
uidValidity?: bigint | number | string | undefined;
|
|
12
|
-
}
|
|
3
|
+
/** SELECT/EXAMINE options, the QRESYNC parameters are part of the public mailboxOpen() options */
|
|
4
|
+
export type SelectOptions = MailboxOpenOptions;
|
|
13
5
|
/**
|
|
14
6
|
* Selects or examines a mailbox, making it the current mailbox for subsequent operations.
|
|
15
7
|
*
|
|
16
8
|
* @param connection - IMAP connection instance
|
|
17
9
|
* @param path - Mailbox path to select
|
|
18
|
-
* @param options - Select options
|
|
19
|
-
* @param options.readOnly - If true, use EXAMINE instead of SELECT (read-only access)
|
|
20
|
-
* @param options.changedSince - QRESYNC modseq value to fetch changes since
|
|
21
|
-
* @param options.uidValidity - QRESYNC UID validity value
|
|
10
|
+
* @param options - Select options, see MailboxOpenOptions
|
|
22
11
|
* @returns Mailbox info object with path, flags, exists, uidNext, uidValidity, highestModseq, etc., or undefined if preconditions not met
|
|
23
12
|
* @throws If the SELECT/EXAMINE command fails
|
|
24
13
|
*/
|
|
@@ -48,10 +48,7 @@ const VALUED_RESPONSE_CODES = Object.assign(Object.create(null), {
|
|
|
48
48
|
*
|
|
49
49
|
* @param connection - IMAP connection instance
|
|
50
50
|
* @param path - Mailbox path to select
|
|
51
|
-
* @param options - Select options
|
|
52
|
-
* @param options.readOnly - If true, use EXAMINE instead of SELECT (read-only access)
|
|
53
|
-
* @param options.changedSince - QRESYNC modseq value to fetch changes since
|
|
54
|
-
* @param options.uidValidity - QRESYNC UID validity value
|
|
51
|
+
* @param options - Select options, see MailboxOpenOptions
|
|
55
52
|
* @returns Mailbox info object with path, flags, exists, uidNext, uidValidity, highestModseq, etc., or undefined if preconditions not met
|
|
56
53
|
* @throws If the SELECT/EXAMINE command fails
|
|
57
54
|
*/
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { encodePath, normalizePath, buildStatusQueryAttributes, isRev2Active, isAuthenticatedState, emitSafe, getSelectedMailbox, logConnectionError } from '../tools.js';
|
|
2
2
|
import { parseStatusList } from './status-fields.js';
|
|
3
|
+
import { createImapError } from '../errors.js';
|
|
3
4
|
// STATUS fields that also refresh the live mailbox state when the queried mailbox is the
|
|
4
5
|
// currently selected one. Keyed by the output property name parseStatusList() reports.
|
|
5
6
|
const MAILBOX_UPDATERS = {
|
|
@@ -96,10 +97,7 @@ export default async function status(connection, path, query) {
|
|
|
96
97
|
return false;
|
|
97
98
|
});
|
|
98
99
|
if (folders && !folders.length) {
|
|
99
|
-
|
|
100
|
-
error.code = 'NotFound';
|
|
101
|
-
error.response = err;
|
|
102
|
-
throw error;
|
|
100
|
+
throw createImapError(`Mailbox doesn't exist: ${path}`, 'NotFound', { response: err });
|
|
103
101
|
}
|
|
104
102
|
}
|
|
105
103
|
connection.log.warn({ err, cid: connection.id });
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { clearTimer } from './tools.js';
|
|
2
|
+
import { createImapError } from './errors.js';
|
|
2
3
|
// Default upper bound for establishing a usable transport, including DNS and proxy negotiation.
|
|
3
4
|
export const CONNECT_TIMEOUT = 90 * 1000;
|
|
4
5
|
/**
|
|
@@ -28,10 +29,7 @@ export class ConnectionDeadline {
|
|
|
28
29
|
* @returns The shared `CONNECT_TIMEOUT` error.
|
|
29
30
|
*/
|
|
30
31
|
error() {
|
|
31
|
-
|
|
32
|
-
err.code = 'CONNECT_TIMEOUT';
|
|
33
|
-
err.details = { connectionTimeout: this.timeout };
|
|
34
|
-
return err;
|
|
32
|
+
return createImapError('Failed to establish connection in required time', 'CONNECT_TIMEOUT', { details: { connectionTimeout: this.timeout } });
|
|
35
33
|
}
|
|
36
34
|
/**
|
|
37
35
|
* Maps a dependency's own expiry onto the shared `CONNECT_TIMEOUT` shape, so callers see one
|