@withbuddi/buddi 0.1.0-pre.19 → 0.1.0-pre.21
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/README.md +1 -1
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/args.d.ts +6 -0
- package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/args.js +15 -0
- package/node_modules/@buddi/cli/dist/args.js.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.js +18 -1
- package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
- package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/main.js +19 -2
- package/node_modules/@buddi/cli/dist/main.js.map +1 -1
- package/node_modules/@buddi/cli/dist/status.d.ts +10 -0
- package/node_modules/@buddi/cli/dist/status.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/status.js +4 -0
- package/node_modules/@buddi/cli/dist/status.js.map +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.js +7 -1
- package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/build.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/host/build.js +33 -16
- package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/types.d.ts +17 -0
- package/node_modules/@buddi/core/dist/host/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/pages/__fixtures__/demo.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/pages/__fixtures__/demo.js +1 -0
- package/node_modules/@buddi/core/dist/pages/__fixtures__/demo.js.map +1 -1
- package/node_modules/@buddi/core/dist/pages.d.ts +74 -0
- package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/pages.js +27 -1
- package/node_modules/@buddi/core/dist/pages.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.d.ts +2 -2
- package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
- package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
- package/node_modules/@buddi/core/dist/provider-accounts.d.ts +15 -1
- package/node_modules/@buddi/core/dist/provider-accounts.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/provider-accounts.js +22 -1
- package/node_modules/@buddi/core/dist/provider-accounts.js.map +1 -1
- package/node_modules/@buddi/core/dist/provider.d.ts +6 -0
- package/node_modules/@buddi/core/dist/provider.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/provider.js.map +1 -1
- package/node_modules/@buddi/core/dist/surfaces.d.ts +11 -0
- package/node_modules/@buddi/core/dist/surfaces.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/surfaces.js +4 -0
- package/node_modules/@buddi/core/dist/surfaces.js.map +1 -1
- package/node_modules/@buddi/core/migrations/046_ollama_device_key.sql +7 -0
- package/node_modules/@buddi/core/migrations/047_reported_context_windows.sql +5 -0
- package/node_modules/@buddi/core/migrations/048_surface_chat_voice.sql +13 -0
- package/node_modules/@buddi/core/migrations/049_surface_chat_voice_form.sql +8 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/agents-cli.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/agents-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents-cli.js +5 -3
- package/node_modules/@buddi/gateway/dist/agents-cli.js.map +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 -2
- package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/chat/usage.d.ts +16 -0
- package/node_modules/@buddi/gateway/dist/chat/usage.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/chat/usage.js +53 -11
- package/node_modules/@buddi/gateway/dist/chat/usage.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts +24 -11
- package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/codex-accounts.js +151 -215
- package/node_modules/@buddi/gateway/dist/codex-accounts.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/index.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/index.js +2 -0
- package/node_modules/@buddi/gateway/dist/index.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/ollama-accounts.d.ts +87 -0
- package/node_modules/@buddi/gateway/dist/ollama-accounts.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/ollama-accounts.js +179 -0
- package/node_modules/@buddi/gateway/dist/ollama-accounts.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/provider-accounts.d.ts +51 -1
- package/node_modules/@buddi/gateway/dist/provider-accounts.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/provider-accounts.js +184 -25
- package/node_modules/@buddi/gateway/dist/provider-accounts.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/speech-cli.d.ts +43 -0
- package/node_modules/@buddi/gateway/dist/speech-cli.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/speech-cli.js +105 -0
- package/node_modules/@buddi/gateway/dist/speech-cli.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/surfaces/context-budget.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/context-budget.js +10 -3
- package/node_modules/@buddi/gateway/dist/surfaces/context-budget.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/api.d.ts +10 -0
- package/node_modules/@buddi/gateway/dist/telegram/api.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/api.js +12 -0
- package/node_modules/@buddi/gateway/dist/telegram/api.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.d.ts +2 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.js +4 -2
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.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 +10 -2
- package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +25 -0
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js +212 -10
- package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/voice.d.ts +112 -0
- package/node_modules/@buddi/gateway/dist/telegram/voice.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/voice.js +220 -0
- package/node_modules/@buddi/gateway/dist/telegram/voice.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts +31 -8
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/chat.js +3 -2
- package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts +13 -2
- package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.js +24 -3
- package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.d.ts +15 -12
- package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.js +9 -10
- package/node_modules/@buddi/gateway/dist/web/read.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 +29 -13
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/speech.d.ts +47 -0
- package/node_modules/@buddi/gateway/dist/web/speech.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/speech.js +83 -0
- package/node_modules/@buddi/gateway/dist/web/speech.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/stream.d.ts +0 -24
- package/node_modules/@buddi/gateway/dist/web/stream.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/stream.js +26 -2
- package/node_modules/@buddi/gateway/dist/web/stream.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/usage-view.d.ts +15 -0
- package/node_modules/@buddi/gateway/dist/web/usage-view.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/usage-view.js +20 -0
- package/node_modules/@buddi/gateway/dist/web/usage-view.js.map +1 -0
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/anthropic.d.ts +18 -0
- package/node_modules/@buddi/runtime/dist/anthropic.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/anthropic.js +65 -13
- package/node_modules/@buddi/runtime/dist/anthropic.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/codex-direct.d.ts +55 -0
- package/node_modules/@buddi/runtime/dist/codex-direct.d.ts.map +1 -0
- package/node_modules/@buddi/runtime/dist/codex-direct.js +342 -0
- package/node_modules/@buddi/runtime/dist/codex-direct.js.map +1 -0
- package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts +66 -0
- package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts.map +1 -0
- package/node_modules/@buddi/runtime/dist/codex-oauth.js +210 -0
- package/node_modules/@buddi/runtime/dist/codex-oauth.js.map +1 -0
- package/node_modules/@buddi/runtime/dist/codex-profile.d.ts +19 -0
- package/node_modules/@buddi/runtime/dist/codex-profile.d.ts.map +1 -0
- package/node_modules/@buddi/runtime/dist/codex-profile.js +99 -0
- package/node_modules/@buddi/runtime/dist/codex-profile.js.map +1 -0
- package/node_modules/@buddi/runtime/dist/context-window.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/context-window.js +17 -4
- package/node_modules/@buddi/runtime/dist/context-window.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/delegate.d.ts +24 -0
- package/node_modules/@buddi/runtime/dist/delegate.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/delegate.js +87 -11
- package/node_modules/@buddi/runtime/dist/delegate.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/index.d.ts +4 -4
- package/node_modules/@buddi/runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/index.js +5 -5
- package/node_modules/@buddi/runtime/dist/index.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/loop.d.ts +7 -0
- package/node_modules/@buddi/runtime/dist/loop.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/loop.js +54 -8
- package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/ollama-signing.d.ts +52 -0
- package/node_modules/@buddi/runtime/dist/ollama-signing.d.ts.map +1 -0
- package/node_modules/@buddi/runtime/dist/ollama-signing.js +154 -0
- package/node_modules/@buddi/runtime/dist/ollama-signing.js.map +1 -0
- package/node_modules/@buddi/runtime/dist/openai.d.ts +16 -4
- package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.js +44 -11
- package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/provider-models.d.ts +2 -0
- package/node_modules/@buddi/runtime/dist/provider-models.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/provider-models.js +13 -4
- package/node_modules/@buddi/runtime/dist/provider-models.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/computer.d.ts +53 -1
- package/node_modules/@buddi/tool-browser/dist/computer.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/computer.js +154 -5
- package/node_modules/@buddi/tool-browser/dist/computer.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts +20 -3
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.js +170 -5
- package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.js +9 -1
- package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.d.ts +14 -1
- package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.js +28 -5
- package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.d.ts +11 -0
- package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.js +16 -3
- package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
- package/node_modules/@buddi/tool-browser/package.json +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-memory/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
- package/node_modules/imapflow/CHANGELOG.md +29 -0
- package/node_modules/imapflow/dist/cjs/commands/append.js +12 -12
- package/node_modules/imapflow/dist/cjs/commands/authenticate.d.ts +3 -8
- package/node_modules/imapflow/dist/cjs/commands/close.js +2 -1
- package/node_modules/imapflow/dist/cjs/commands/copy.js +4 -4
- package/node_modules/imapflow/dist/cjs/commands/create.js +2 -3
- package/node_modules/imapflow/dist/cjs/commands/delete.js +4 -4
- package/node_modules/imapflow/dist/cjs/commands/expunge.js +8 -5
- package/node_modules/imapflow/dist/cjs/commands/fetch.js +12 -10
- package/node_modules/imapflow/dist/cjs/commands/idle.js +6 -2
- package/node_modules/imapflow/dist/cjs/commands/list.js +22 -18
- package/node_modules/imapflow/dist/cjs/commands/move.js +11 -6
- package/node_modules/imapflow/dist/cjs/commands/namespace.js +1 -1
- package/node_modules/imapflow/dist/cjs/commands/quota.js +10 -9
- package/node_modules/imapflow/dist/cjs/commands/rename.js +4 -4
- package/node_modules/imapflow/dist/cjs/commands/search.js +7 -8
- package/node_modules/imapflow/dist/cjs/commands/select.js +12 -9
- package/node_modules/imapflow/dist/cjs/commands/status.js +11 -11
- package/node_modules/imapflow/dist/cjs/commands/store.js +5 -5
- package/node_modules/imapflow/dist/cjs/commands/subscribe.js +2 -17
- package/node_modules/imapflow/dist/cjs/commands/subscription.d.ts +10 -0
- package/node_modules/imapflow/dist/cjs/commands/subscription.js +29 -0
- package/node_modules/imapflow/dist/cjs/commands/unsubscribe.js +2 -17
- package/node_modules/imapflow/dist/cjs/download.d.ts +22 -0
- package/node_modules/imapflow/dist/cjs/download.js +588 -0
- package/node_modules/imapflow/dist/cjs/errors.d.ts +50 -1
- package/node_modules/imapflow/dist/cjs/errors.js +53 -1
- package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +1 -1
- package/node_modules/imapflow/dist/cjs/handler/imap-stream.d.ts +13 -2
- package/node_modules/imapflow/dist/cjs/handler/imap-stream.js +51 -30
- package/node_modules/imapflow/dist/cjs/handler/parser-instance.js +2 -2
- package/node_modules/imapflow/dist/cjs/handler/token-parser.js +15 -9
- package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +30 -84
- package/node_modules/imapflow/dist/cjs/imap-flow.js +282 -734
- package/node_modules/imapflow/dist/cjs/jp-decoder.js +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.js +3 -3
- package/node_modules/imapflow/dist/cjs/search-compiler.js +5 -12
- package/node_modules/imapflow/dist/cjs/tools.d.ts +52 -11
- package/node_modules/imapflow/dist/cjs/tools.js +86 -23
- package/node_modules/imapflow/dist/cjs/types.d.ts +30 -16
- package/node_modules/imapflow/dist/esm/commands/append.js +13 -13
- package/node_modules/imapflow/dist/esm/commands/authenticate.d.ts +3 -8
- package/node_modules/imapflow/dist/esm/commands/close.js +2 -1
- package/node_modules/imapflow/dist/esm/commands/copy.js +5 -5
- package/node_modules/imapflow/dist/esm/commands/create.js +3 -4
- package/node_modules/imapflow/dist/esm/commands/delete.js +5 -5
- package/node_modules/imapflow/dist/esm/commands/expunge.js +9 -6
- package/node_modules/imapflow/dist/esm/commands/fetch.js +13 -11
- package/node_modules/imapflow/dist/esm/commands/idle.js +7 -3
- package/node_modules/imapflow/dist/esm/commands/list.js +22 -18
- package/node_modules/imapflow/dist/esm/commands/move.js +12 -7
- package/node_modules/imapflow/dist/esm/commands/namespace.js +2 -2
- package/node_modules/imapflow/dist/esm/commands/quota.js +11 -10
- package/node_modules/imapflow/dist/esm/commands/rename.js +5 -5
- package/node_modules/imapflow/dist/esm/commands/search.js +8 -9
- package/node_modules/imapflow/dist/esm/commands/select.js +13 -10
- package/node_modules/imapflow/dist/esm/commands/status.js +12 -12
- package/node_modules/imapflow/dist/esm/commands/store.js +6 -6
- package/node_modules/imapflow/dist/esm/commands/subscribe.js +2 -17
- package/node_modules/imapflow/dist/esm/commands/subscription.d.ts +10 -0
- package/node_modules/imapflow/dist/esm/commands/subscription.js +26 -0
- package/node_modules/imapflow/dist/esm/commands/unsubscribe.js +2 -17
- package/node_modules/imapflow/dist/esm/download.d.ts +22 -0
- package/node_modules/imapflow/dist/esm/download.js +581 -0
- package/node_modules/imapflow/dist/esm/errors.d.ts +50 -1
- package/node_modules/imapflow/dist/esm/errors.js +52 -0
- package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +1 -1
- package/node_modules/imapflow/dist/esm/handler/imap-stream.d.ts +13 -2
- package/node_modules/imapflow/dist/esm/handler/imap-stream.js +51 -30
- package/node_modules/imapflow/dist/esm/handler/parser-instance.js +2 -2
- package/node_modules/imapflow/dist/esm/handler/token-parser.js +15 -9
- package/node_modules/imapflow/dist/esm/imap-flow.d.ts +30 -84
- package/node_modules/imapflow/dist/esm/imap-flow.js +282 -735
- package/node_modules/imapflow/dist/esm/jp-decoder.js +1 -1
- package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/package-info.js +3 -3
- package/node_modules/imapflow/dist/esm/search-compiler.js +5 -12
- package/node_modules/imapflow/dist/esm/tools.d.ts +52 -11
- package/node_modules/imapflow/dist/esm/tools.js +79 -21
- package/node_modules/imapflow/dist/esm/types.d.ts +30 -16
- package/node_modules/imapflow/package.json +4 -4
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/args.d.ts +6 -0
- package/packages/cli/dist/args.d.ts.map +1 -1
- package/packages/cli/dist/args.js +15 -0
- package/packages/cli/dist/args.js.map +1 -1
- package/packages/cli/dist/commands.d.ts.map +1 -1
- package/packages/cli/dist/commands.js +18 -1
- package/packages/cli/dist/commands.js.map +1 -1
- package/packages/cli/dist/main.d.ts.map +1 -1
- package/packages/cli/dist/main.js +19 -2
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/dist/status.d.ts +10 -0
- package/packages/cli/dist/status.d.ts.map +1 -1
- package/packages/cli/dist/status.js +4 -0
- package/packages/cli/dist/status.js.map +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/agents/catalog.d.ts.map +1 -1
- package/packages/core/dist/agents/catalog.js +7 -1
- package/packages/core/dist/agents/catalog.js.map +1 -1
- package/packages/core/dist/host/build.d.ts.map +1 -1
- package/packages/core/dist/host/build.js +33 -16
- package/packages/core/dist/host/build.js.map +1 -1
- package/packages/core/dist/host/types.d.ts +17 -0
- package/packages/core/dist/host/types.d.ts.map +1 -1
- package/packages/core/dist/pages/__fixtures__/demo.d.ts.map +1 -1
- package/packages/core/dist/pages/__fixtures__/demo.js +1 -0
- package/packages/core/dist/pages/__fixtures__/demo.js.map +1 -1
- package/packages/core/dist/pages.d.ts +74 -0
- package/packages/core/dist/pages.d.ts.map +1 -1
- package/packages/core/dist/pages.js +27 -1
- package/packages/core/dist/pages.js.map +1 -1
- package/packages/core/dist/plugin/index.d.ts +2 -2
- package/packages/core/dist/plugin/index.d.ts.map +1 -1
- package/packages/core/dist/plugin/version.d.ts +1 -1
- package/packages/core/dist/plugin/version.js +1 -1
- package/packages/core/dist/provider-accounts.d.ts +15 -1
- package/packages/core/dist/provider-accounts.d.ts.map +1 -1
- package/packages/core/dist/provider-accounts.js +22 -1
- package/packages/core/dist/provider-accounts.js.map +1 -1
- package/packages/core/dist/provider.d.ts +6 -0
- package/packages/core/dist/provider.d.ts.map +1 -1
- package/packages/core/dist/provider.js.map +1 -1
- package/packages/core/dist/surfaces.d.ts +11 -0
- package/packages/core/dist/surfaces.d.ts.map +1 -1
- package/packages/core/dist/surfaces.js +4 -0
- package/packages/core/dist/surfaces.js.map +1 -1
- package/packages/core/migrations/046_ollama_device_key.sql +7 -0
- package/packages/core/migrations/047_reported_context_windows.sql +5 -0
- package/packages/core/migrations/048_surface_chat_voice.sql +13 -0
- package/packages/core/migrations/049_surface_chat_voice_form.sql +8 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/agents-cli.d.ts +2 -0
- package/packages/gateway/dist/agents-cli.d.ts.map +1 -1
- package/packages/gateway/dist/agents-cli.js +5 -3
- package/packages/gateway/dist/agents-cli.js.map +1 -1
- package/packages/gateway/dist/chat/session.d.ts.map +1 -1
- package/packages/gateway/dist/chat/session.js +2 -2
- package/packages/gateway/dist/chat/session.js.map +1 -1
- package/packages/gateway/dist/chat/usage.d.ts +16 -0
- package/packages/gateway/dist/chat/usage.d.ts.map +1 -1
- package/packages/gateway/dist/chat/usage.js +53 -11
- package/packages/gateway/dist/chat/usage.js.map +1 -1
- package/packages/gateway/dist/codex-accounts.d.ts +24 -11
- package/packages/gateway/dist/codex-accounts.d.ts.map +1 -1
- package/packages/gateway/dist/codex-accounts.js +151 -215
- package/packages/gateway/dist/codex-accounts.js.map +1 -1
- package/packages/gateway/dist/index.d.ts +2 -0
- package/packages/gateway/dist/index.d.ts.map +1 -1
- package/packages/gateway/dist/index.js +2 -0
- package/packages/gateway/dist/index.js.map +1 -1
- package/packages/gateway/dist/ollama-accounts.d.ts +87 -0
- package/packages/gateway/dist/ollama-accounts.d.ts.map +1 -0
- package/packages/gateway/dist/ollama-accounts.js +179 -0
- package/packages/gateway/dist/ollama-accounts.js.map +1 -0
- package/packages/gateway/dist/provider-accounts.d.ts +51 -1
- package/packages/gateway/dist/provider-accounts.d.ts.map +1 -1
- package/packages/gateway/dist/provider-accounts.js +184 -25
- package/packages/gateway/dist/provider-accounts.js.map +1 -1
- package/packages/gateway/dist/speech-cli.d.ts +43 -0
- package/packages/gateway/dist/speech-cli.d.ts.map +1 -0
- package/packages/gateway/dist/speech-cli.js +105 -0
- package/packages/gateway/dist/speech-cli.js.map +1 -0
- package/packages/gateway/dist/surfaces/context-budget.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/context-budget.js +10 -3
- package/packages/gateway/dist/surfaces/context-budget.js.map +1 -1
- package/packages/gateway/dist/telegram/api.d.ts +10 -0
- package/packages/gateway/dist/telegram/api.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/api.js +12 -0
- package/packages/gateway/dist/telegram/api.js.map +1 -1
- package/packages/gateway/dist/telegram/browser-view.d.ts +2 -1
- package/packages/gateway/dist/telegram/browser-view.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/browser-view.js +4 -2
- package/packages/gateway/dist/telegram/browser-view.js.map +1 -1
- package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/main.js +10 -2
- package/packages/gateway/dist/telegram/main.js.map +1 -1
- package/packages/gateway/dist/telegram/surface.d.ts +25 -0
- package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/surface.js +212 -10
- package/packages/gateway/dist/telegram/surface.js.map +1 -1
- package/packages/gateway/dist/telegram/voice.d.ts +112 -0
- package/packages/gateway/dist/telegram/voice.d.ts.map +1 -0
- package/packages/gateway/dist/telegram/voice.js +220 -0
- package/packages/gateway/dist/telegram/voice.js.map +1 -0
- package/packages/gateway/dist/web/chat.d.ts +31 -8
- package/packages/gateway/dist/web/chat.d.ts.map +1 -1
- package/packages/gateway/dist/web/chat.js +3 -2
- package/packages/gateway/dist/web/chat.js.map +1 -1
- package/packages/gateway/dist/web/onboarding.d.ts +13 -2
- package/packages/gateway/dist/web/onboarding.d.ts.map +1 -1
- package/packages/gateway/dist/web/onboarding.js +24 -3
- package/packages/gateway/dist/web/onboarding.js.map +1 -1
- package/packages/gateway/dist/web/read.d.ts +15 -12
- package/packages/gateway/dist/web/read.d.ts.map +1 -1
- package/packages/gateway/dist/web/read.js +9 -10
- package/packages/gateway/dist/web/read.js.map +1 -1
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +29 -13
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/speech.d.ts +47 -0
- package/packages/gateway/dist/web/speech.d.ts.map +1 -0
- package/packages/gateway/dist/web/speech.js +83 -0
- package/packages/gateway/dist/web/speech.js.map +1 -0
- package/packages/gateway/dist/web/stream.d.ts +0 -24
- package/packages/gateway/dist/web/stream.d.ts.map +1 -1
- package/packages/gateway/dist/web/stream.js +26 -2
- package/packages/gateway/dist/web/stream.js.map +1 -1
- package/packages/gateway/dist/web/usage-view.d.ts +15 -0
- package/packages/gateway/dist/web/usage-view.d.ts.map +1 -0
- package/packages/gateway/dist/web/usage-view.js +20 -0
- package/packages/gateway/dist/web/usage-view.js.map +1 -0
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/anthropic.d.ts +18 -0
- package/packages/runtime/dist/anthropic.d.ts.map +1 -1
- package/packages/runtime/dist/anthropic.js +65 -13
- package/packages/runtime/dist/anthropic.js.map +1 -1
- package/packages/runtime/dist/codex-direct.d.ts +55 -0
- package/packages/runtime/dist/codex-direct.d.ts.map +1 -0
- package/packages/runtime/dist/codex-direct.js +342 -0
- package/packages/runtime/dist/codex-direct.js.map +1 -0
- package/packages/runtime/dist/codex-oauth.d.ts +66 -0
- package/packages/runtime/dist/codex-oauth.d.ts.map +1 -0
- package/packages/runtime/dist/codex-oauth.js +210 -0
- package/packages/runtime/dist/codex-oauth.js.map +1 -0
- package/packages/runtime/dist/codex-profile.d.ts +19 -0
- package/packages/runtime/dist/codex-profile.d.ts.map +1 -0
- package/packages/runtime/dist/codex-profile.js +99 -0
- package/packages/runtime/dist/codex-profile.js.map +1 -0
- package/packages/runtime/dist/context-window.d.ts.map +1 -1
- package/packages/runtime/dist/context-window.js +17 -4
- package/packages/runtime/dist/context-window.js.map +1 -1
- package/packages/runtime/dist/delegate.d.ts +24 -0
- package/packages/runtime/dist/delegate.d.ts.map +1 -1
- package/packages/runtime/dist/delegate.js +87 -11
- package/packages/runtime/dist/delegate.js.map +1 -1
- package/packages/runtime/dist/index.d.ts +4 -4
- package/packages/runtime/dist/index.d.ts.map +1 -1
- package/packages/runtime/dist/index.js +5 -5
- package/packages/runtime/dist/index.js.map +1 -1
- package/packages/runtime/dist/loop.d.ts +7 -0
- package/packages/runtime/dist/loop.d.ts.map +1 -1
- package/packages/runtime/dist/loop.js +54 -8
- package/packages/runtime/dist/loop.js.map +1 -1
- package/packages/runtime/dist/ollama-signing.d.ts +52 -0
- package/packages/runtime/dist/ollama-signing.d.ts.map +1 -0
- package/packages/runtime/dist/ollama-signing.js +154 -0
- package/packages/runtime/dist/ollama-signing.js.map +1 -0
- package/packages/runtime/dist/openai.d.ts +16 -4
- package/packages/runtime/dist/openai.d.ts.map +1 -1
- package/packages/runtime/dist/openai.js +44 -11
- package/packages/runtime/dist/openai.js.map +1 -1
- package/packages/runtime/dist/provider-models.d.ts +2 -0
- package/packages/runtime/dist/provider-models.d.ts.map +1 -1
- package/packages/runtime/dist/provider-models.js +13 -4
- package/packages/runtime/dist/provider-models.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/computer.d.ts +53 -1
- package/packages/tools/browser/dist/computer.d.ts.map +1 -1
- package/packages/tools/browser/dist/computer.js +154 -5
- package/packages/tools/browser/dist/computer.js.map +1 -1
- package/packages/tools/browser/dist/controller.d.ts +20 -3
- package/packages/tools/browser/dist/controller.d.ts.map +1 -1
- package/packages/tools/browser/dist/controller.js +170 -5
- package/packages/tools/browser/dist/controller.js.map +1 -1
- package/packages/tools/browser/dist/index.d.ts.map +1 -1
- package/packages/tools/browser/dist/index.js +9 -1
- package/packages/tools/browser/dist/index.js.map +1 -1
- package/packages/tools/browser/dist/service.d.ts +14 -1
- package/packages/tools/browser/dist/service.d.ts.map +1 -1
- package/packages/tools/browser/dist/service.js +28 -5
- package/packages/tools/browser/dist/service.js.map +1 -1
- package/packages/tools/browser/dist/types.d.ts +11 -0
- package/packages/tools/browser/dist/types.d.ts.map +1 -1
- package/packages/tools/browser/dist/types.js +16 -3
- package/packages/tools/browser/dist/types.js.map +1 -1
- package/packages/tools/browser/package.json +1 -1
- package/packages/tools/email/dist/.tsbuildinfo +1 -1
- package/packages/tools/host/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-D5cRFcgm.css +1 -0
- package/packages/web/dist/assets/index-GCFB1vBV.js +125 -0
- package/packages/web/dist/index.html +2 -2
- package/node_modules/@buddi/runtime/dist/codex-app-server.d.ts +0 -20
- package/node_modules/@buddi/runtime/dist/codex-app-server.d.ts.map +0 -1
- package/node_modules/@buddi/runtime/dist/codex-app-server.js +0 -172
- package/node_modules/@buddi/runtime/dist/codex-app-server.js.map +0 -1
- package/node_modules/@buddi/runtime/dist/codex-policy.d.ts +0 -6
- package/node_modules/@buddi/runtime/dist/codex-policy.d.ts.map +0 -1
- package/node_modules/@buddi/runtime/dist/codex-policy.js +0 -79
- package/node_modules/@buddi/runtime/dist/codex-policy.js.map +0 -1
- package/node_modules/@buddi/runtime/dist/codex-rpc.d.ts +0 -34
- package/node_modules/@buddi/runtime/dist/codex-rpc.d.ts.map +0 -1
- package/node_modules/@buddi/runtime/dist/codex-rpc.js +0 -152
- package/node_modules/@buddi/runtime/dist/codex-rpc.js.map +0 -1
- package/node_modules/@buddi/runtime/dist/codex-session.d.ts +0 -30
- package/node_modules/@buddi/runtime/dist/codex-session.d.ts.map +0 -1
- package/node_modules/@buddi/runtime/dist/codex-session.js +0 -169
- package/node_modules/@buddi/runtime/dist/codex-session.js.map +0 -1
- package/packages/runtime/dist/codex-app-server.d.ts +0 -20
- package/packages/runtime/dist/codex-app-server.d.ts.map +0 -1
- package/packages/runtime/dist/codex-app-server.js +0 -172
- package/packages/runtime/dist/codex-app-server.js.map +0 -1
- package/packages/runtime/dist/codex-policy.d.ts +0 -6
- package/packages/runtime/dist/codex-policy.d.ts.map +0 -1
- package/packages/runtime/dist/codex-policy.js +0 -79
- package/packages/runtime/dist/codex-policy.js.map +0 -1
- package/packages/runtime/dist/codex-rpc.d.ts +0 -34
- package/packages/runtime/dist/codex-rpc.d.ts.map +0 -1
- package/packages/runtime/dist/codex-rpc.js +0 -152
- package/packages/runtime/dist/codex-rpc.js.map +0 -1
- package/packages/runtime/dist/codex-session.d.ts +0 -30
- package/packages/runtime/dist/codex-session.d.ts.map +0 -1
- package/packages/runtime/dist/codex-session.js +0 -169
- package/packages/runtime/dist/codex-session.js.map +0 -1
- package/packages/web/dist/assets/index-B727JQsO.css +0 -1
- package/packages/web/dist/assets/index-OA0xgibo.js +0 -123
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { Vault } from '@buddi/core';
|
|
2
|
+
import { OllamaConnectProtocol } from '@buddi/runtime';
|
|
3
|
+
import type { Pool } from 'pg';
|
|
4
|
+
/** What the vault holds for one connected (or connecting) device. */
|
|
5
|
+
export interface OllamaDeviceEnvelope {
|
|
6
|
+
version: 1;
|
|
7
|
+
/** PKCS8 PEM. Never leaves the gateway. */
|
|
8
|
+
privateKey: string;
|
|
9
|
+
/** The authorized_keys line ollama.com shows under "Show key". */
|
|
10
|
+
publicKey: string;
|
|
11
|
+
/** What ollama.com lists the device as. */
|
|
12
|
+
deviceName: string;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
/** Set the first time ollama.com answered with an account for this key. */
|
|
15
|
+
connectedAt: string | null;
|
|
16
|
+
/** The ollama.com account the key is connected to, as the server said. */
|
|
17
|
+
username: string | null;
|
|
18
|
+
}
|
|
19
|
+
/** What may be shown about a device: never the private key. */
|
|
20
|
+
export interface OllamaDeviceView {
|
|
21
|
+
deviceName: string;
|
|
22
|
+
username: string | null;
|
|
23
|
+
connectedAt: string | null;
|
|
24
|
+
}
|
|
25
|
+
export declare function readOllamaDevice(raw: string): OllamaDeviceEnvelope;
|
|
26
|
+
export declare function deviceView(device: OllamaDeviceEnvelope): OllamaDeviceView;
|
|
27
|
+
/** "connected as amen, device buddi on studio": the line status and the card show. */
|
|
28
|
+
export declare function connectedLine(device: OllamaDeviceView): string;
|
|
29
|
+
/** "buddi on <this computer>", without the `.local` macOS adds. */
|
|
30
|
+
export declare function ollamaDeviceName(host?: string): string;
|
|
31
|
+
/** How long a connect attempt waits for the owner to press Connect. */
|
|
32
|
+
export declare const OLLAMA_CONNECT_TTL_MS: number;
|
|
33
|
+
export type OllamaPoll = {
|
|
34
|
+
state: 'connected';
|
|
35
|
+
username: string;
|
|
36
|
+
deviceName: string;
|
|
37
|
+
} | {
|
|
38
|
+
state: 'waiting';
|
|
39
|
+
expiresAt: string;
|
|
40
|
+
} | {
|
|
41
|
+
state: 'failed';
|
|
42
|
+
message: string;
|
|
43
|
+
};
|
|
44
|
+
/** Caller serialises account operations; this holds only the in-flight attempts. */
|
|
45
|
+
export declare class OllamaAccounts {
|
|
46
|
+
#private;
|
|
47
|
+
readonly vault: Vault;
|
|
48
|
+
readonly protocol: OllamaConnectProtocol;
|
|
49
|
+
readonly now: () => number;
|
|
50
|
+
readonly deviceName: typeof ollamaDeviceName;
|
|
51
|
+
constructor(vault: Vault, protocol?: OllamaConnectProtocol, now?: () => number, deviceName?: typeof ollamaDeviceName);
|
|
52
|
+
/** A new key pair into the vault, and the page the owner presses Connect on. */
|
|
53
|
+
start(id: string, revision: number, owner: string, ref: string): Promise<{
|
|
54
|
+
state: "pending";
|
|
55
|
+
attemptId: string;
|
|
56
|
+
verificationUrl: string;
|
|
57
|
+
deviceName: string;
|
|
58
|
+
expiresAt: string;
|
|
59
|
+
}>;
|
|
60
|
+
view(id: string, revision: number, owner?: string): {
|
|
61
|
+
state: "pending";
|
|
62
|
+
attemptId: string;
|
|
63
|
+
verificationUrl: string;
|
|
64
|
+
deviceName: string;
|
|
65
|
+
expiresAt: string;
|
|
66
|
+
} | null;
|
|
67
|
+
forget(id: string): void;
|
|
68
|
+
/** One signed request: has the owner pressed Connect yet? */
|
|
69
|
+
poll(id: string, revision: number, owner: string, attemptId: string, ref: string): Promise<OllamaPoll>;
|
|
70
|
+
/**
|
|
71
|
+
* Ask ollama.com to forget this device before the key is dropped, as
|
|
72
|
+
* `ollama signout` does. Best effort: false when it could not be asked or
|
|
73
|
+
* said no, and the caller removes the key either way.
|
|
74
|
+
*/
|
|
75
|
+
unpair(ref: string): Promise<boolean>;
|
|
76
|
+
/** The private key a run signs with, once the device is connected. */
|
|
77
|
+
credential(ref: string): Promise<string>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The connected devices, for `buddi status`: read straight from the rows and
|
|
81
|
+
* the raw vault (a device envelope is never an owner secret). A device that
|
|
82
|
+
* cannot be read is left out, not guessed at.
|
|
83
|
+
*/
|
|
84
|
+
export declare function readOllamaDevices(pool: Pick<Pool, 'query'>, vault: Vault | undefined): Promise<Array<{
|
|
85
|
+
label: string;
|
|
86
|
+
} & OllamaDeviceView>>;
|
|
87
|
+
//# sourceMappingURL=ollama-accounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-accounts.d.ts","sourceRoot":"","sources":["../src/ollama-accounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ollama Cloud, connected with a device key (buddi-planning
|
|
3
|
+
* specs/ollama-connect.md): buddi makes an ed25519 key pair, the owner presses
|
|
4
|
+
* Connect on ollama.com, and from then on each request to ollama.com is signed
|
|
5
|
+
* with the key. Nobody ever sees a key.
|
|
6
|
+
*
|
|
7
|
+
* The key pair lives in the vault, under the account's own name, as one JSON
|
|
8
|
+
* envelope. Postgres holds only that the account signs in this way.
|
|
9
|
+
*/
|
|
10
|
+
import { randomUUID } from 'node:crypto';
|
|
11
|
+
import { hostname } from 'node:os';
|
|
12
|
+
import { OllamaConnectProtocol, generateOllamaDeviceKey, ollamaConnectUrl, ollamaPublicKey } from '@buddi/runtime';
|
|
13
|
+
export function readOllamaDevice(raw) {
|
|
14
|
+
try {
|
|
15
|
+
if (raw.length > 16384)
|
|
16
|
+
throw new Error();
|
|
17
|
+
const data = JSON.parse(raw);
|
|
18
|
+
if (data.version !== 1 || typeof data.privateKey !== 'string' || typeof data.publicKey !== 'string' ||
|
|
19
|
+
typeof data.deviceName !== 'string' || typeof data.createdAt !== 'string' ||
|
|
20
|
+
!(data.connectedAt === null || typeof data.connectedAt === 'string') ||
|
|
21
|
+
!(data.username === null || typeof data.username === 'string'))
|
|
22
|
+
throw new Error();
|
|
23
|
+
// The public key is derived again rather than trusted, so the two can never disagree.
|
|
24
|
+
if (ollamaPublicKey(data.privateKey) !== data.publicKey)
|
|
25
|
+
throw new Error();
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
throw new Error('Invalid Ollama device key. Connect this account again.');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function deviceView(device) {
|
|
33
|
+
return { deviceName: device.deviceName, username: device.username, connectedAt: device.connectedAt };
|
|
34
|
+
}
|
|
35
|
+
/** "connected as amen, device buddi on studio": the line status and the card show. */
|
|
36
|
+
export function connectedLine(device) {
|
|
37
|
+
return device.connectedAt
|
|
38
|
+
? `connected as ${device.username || 'an ollama.com account'}, device ${device.deviceName}`
|
|
39
|
+
: `not connected yet, device ${device.deviceName}`;
|
|
40
|
+
}
|
|
41
|
+
/** "buddi on <this computer>", without the `.local` macOS adds. */
|
|
42
|
+
export function ollamaDeviceName(host = hostname()) {
|
|
43
|
+
const short = host.replace(/\.local$/i, '').replace(/[\x00-\x1f\x7f]/g, '').trim().slice(0, 60);
|
|
44
|
+
return short ? `buddi on ${short}` : 'buddi';
|
|
45
|
+
}
|
|
46
|
+
/** How long a connect attempt waits for the owner to press Connect. */
|
|
47
|
+
export const OLLAMA_CONNECT_TTL_MS = 15 * 60_000;
|
|
48
|
+
/** Caller serialises account operations; this holds only the in-flight attempts. */
|
|
49
|
+
export class OllamaAccounts {
|
|
50
|
+
vault;
|
|
51
|
+
protocol;
|
|
52
|
+
now;
|
|
53
|
+
deviceName;
|
|
54
|
+
#pending = new Map();
|
|
55
|
+
constructor(vault, protocol = new OllamaConnectProtocol(), now = Date.now, deviceName = ollamaDeviceName) {
|
|
56
|
+
this.vault = vault;
|
|
57
|
+
this.protocol = protocol;
|
|
58
|
+
this.now = now;
|
|
59
|
+
this.deviceName = deviceName;
|
|
60
|
+
}
|
|
61
|
+
#prune() { for (const [id, p] of this.#pending)
|
|
62
|
+
if (p.expiresAt <= this.now())
|
|
63
|
+
this.#pending.delete(id); }
|
|
64
|
+
/** A new key pair into the vault, and the page the owner presses Connect on. */
|
|
65
|
+
async start(id, revision, owner, ref) {
|
|
66
|
+
this.#prune();
|
|
67
|
+
if (this.#pending.size >= 128 && !this.#pending.has(id))
|
|
68
|
+
throw new Error('Too many connections waiting. Cancel one or wait 15 minutes.');
|
|
69
|
+
const key = generateOllamaDeviceKey();
|
|
70
|
+
const name = this.deviceName();
|
|
71
|
+
const envelope = {
|
|
72
|
+
version: 1, privateKey: key.privateKey, publicKey: key.publicKey, deviceName: name,
|
|
73
|
+
createdAt: new Date(this.now()).toISOString(), connectedAt: null, username: null,
|
|
74
|
+
};
|
|
75
|
+
try {
|
|
76
|
+
await this.vault.set(ref, JSON.stringify(envelope));
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
throw new Error('Could not save the Ollama device key securely. Unlock the vault and try again.');
|
|
80
|
+
}
|
|
81
|
+
this.#pending.set(id, { attemptId: randomUUID(), owner, revision, expiresAt: this.now() + OLLAMA_CONNECT_TTL_MS, url: ollamaConnectUrl(key.publicKey, name), deviceName: name });
|
|
82
|
+
return this.view(id, revision, owner);
|
|
83
|
+
}
|
|
84
|
+
view(id, revision, owner) {
|
|
85
|
+
this.#prune();
|
|
86
|
+
const p = this.#pending.get(id);
|
|
87
|
+
return p && p.owner === owner && p.revision === revision ? {
|
|
88
|
+
state: 'pending', attemptId: p.attemptId, verificationUrl: p.url, deviceName: p.deviceName,
|
|
89
|
+
expiresAt: new Date(p.expiresAt).toISOString(),
|
|
90
|
+
} : null;
|
|
91
|
+
}
|
|
92
|
+
forget(id) { this.#pending.delete(id); }
|
|
93
|
+
/** One signed request: has the owner pressed Connect yet? */
|
|
94
|
+
async poll(id, revision, owner, attemptId, ref) {
|
|
95
|
+
const p = this.#pending.get(id);
|
|
96
|
+
if (!p || p.owner !== owner || p.revision !== revision || p.attemptId !== attemptId) {
|
|
97
|
+
return { state: 'failed', message: 'This connection changed or belongs to another session. Connect again.' };
|
|
98
|
+
}
|
|
99
|
+
if (p.expiresAt <= this.now()) {
|
|
100
|
+
this.#pending.delete(id);
|
|
101
|
+
return { state: 'failed', message: 'The 15 minutes to press Connect ran out. Connect again.' };
|
|
102
|
+
}
|
|
103
|
+
const device = await this.#device(ref);
|
|
104
|
+
const answer = await this.protocol.whoami(device.privateKey);
|
|
105
|
+
if (answer.state === 'waiting')
|
|
106
|
+
return { state: 'waiting', expiresAt: new Date(p.expiresAt).toISOString() };
|
|
107
|
+
this.#pending.delete(id);
|
|
108
|
+
if (answer.state === 'failed')
|
|
109
|
+
return answer;
|
|
110
|
+
const connected = { ...device, connectedAt: new Date(this.now()).toISOString(), username: answer.username };
|
|
111
|
+
try {
|
|
112
|
+
await this.vault.set(ref, JSON.stringify(connected));
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return { state: 'failed', message: 'Connected, but the vault refused the update. Unlock it and connect again.' };
|
|
116
|
+
}
|
|
117
|
+
return { state: 'connected', username: answer.username, deviceName: device.deviceName };
|
|
118
|
+
}
|
|
119
|
+
async #device(ref) {
|
|
120
|
+
let raw;
|
|
121
|
+
try {
|
|
122
|
+
raw = await this.vault.get(ref);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
throw new Error('The credential vault is unavailable or locked. Unlock it on the host and retry.');
|
|
126
|
+
}
|
|
127
|
+
if (!raw)
|
|
128
|
+
throw new Error('Connect this Ollama account first.');
|
|
129
|
+
return readOllamaDevice(raw);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Ask ollama.com to forget this device before the key is dropped, as
|
|
133
|
+
* `ollama signout` does. Best effort: false when it could not be asked or
|
|
134
|
+
* said no, and the caller removes the key either way.
|
|
135
|
+
*/
|
|
136
|
+
async unpair(ref) {
|
|
137
|
+
let device;
|
|
138
|
+
try {
|
|
139
|
+
device = await this.#device(ref);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
if (!device.connectedAt)
|
|
145
|
+
return false;
|
|
146
|
+
return this.protocol.forget(device.privateKey);
|
|
147
|
+
}
|
|
148
|
+
/** The private key a run signs with, once the device is connected. */
|
|
149
|
+
async credential(ref) {
|
|
150
|
+
const device = await this.#device(ref);
|
|
151
|
+
if (!device.connectedAt)
|
|
152
|
+
throw new Error('Connect this Ollama account first.');
|
|
153
|
+
return device.privateKey;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* The connected devices, for `buddi status`: read straight from the rows and
|
|
158
|
+
* the raw vault (a device envelope is never an owner secret). A device that
|
|
159
|
+
* cannot be read is left out, not guessed at.
|
|
160
|
+
*/
|
|
161
|
+
export async function readOllamaDevices(pool, vault) {
|
|
162
|
+
if (!vault)
|
|
163
|
+
return [];
|
|
164
|
+
const { rows } = await pool.query(`select label, secret_ref as "secretRef" from core.provider_accounts
|
|
165
|
+
where auth = 'device-key' and deleting = false order by created_at, id`);
|
|
166
|
+
const found = [];
|
|
167
|
+
for (const row of rows) {
|
|
168
|
+
if (!row.secretRef)
|
|
169
|
+
continue;
|
|
170
|
+
try {
|
|
171
|
+
const raw = await vault.get(row.secretRef);
|
|
172
|
+
if (raw)
|
|
173
|
+
found.push({ label: row.label, ...deviceView(readOllamaDevice(raw)) });
|
|
174
|
+
}
|
|
175
|
+
catch { /* unreadable: left out */ }
|
|
176
|
+
}
|
|
177
|
+
return found;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=ollama-accounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-accounts.js","sourceRoot":"","sources":["../src/ollama-accounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type AgentCatalog, type LoadAgentCatalogOptions, type ProviderAccountsAccess, type ProviderRef, type ResolvedProvider, type Vault } from '@buddi/core';
|
|
2
|
-
import { listProviderModels, type AccountModels, type RuntimeProvider } from '@buddi/runtime';
|
|
2
|
+
import { listProviderModels, type AccountModels, type OllamaConnectProtocol, type RuntimeProvider } from '@buddi/runtime';
|
|
3
3
|
import type { Pool } from 'pg';
|
|
4
4
|
import { type ProviderDiagnostic } from './provider-diagnostics.js';
|
|
5
5
|
import { CodexAccounts } from './codex-accounts.js';
|
|
6
6
|
import { AnthropicAccounts } from './anthropic-accounts.js';
|
|
7
|
+
import { OllamaAccounts, type OllamaDeviceView } from './ollama-accounts.js';
|
|
7
8
|
type Binding = {
|
|
8
9
|
agentId: string;
|
|
9
10
|
accountId: string;
|
|
@@ -59,10 +60,17 @@ export declare class ProviderAccounts {
|
|
|
59
60
|
vault?: Vault;
|
|
60
61
|
test?: (resolved: ResolvedProvider) => Promise<void>;
|
|
61
62
|
listModels?: typeof listProviderModels;
|
|
63
|
+
/** The one signed `/api/me` call and the device name, replaceable in tests. */
|
|
64
|
+
ollama?: {
|
|
65
|
+
protocol?: OllamaConnectProtocol;
|
|
66
|
+
deviceName?: () => string;
|
|
67
|
+
now?: () => number;
|
|
68
|
+
};
|
|
62
69
|
};
|
|
63
70
|
readonly vault: Vault | undefined;
|
|
64
71
|
readonly codex: CodexAccounts | undefined;
|
|
65
72
|
readonly anthropic: AnthropicAccounts | undefined;
|
|
73
|
+
readonly ollama: OllamaAccounts | undefined;
|
|
66
74
|
/** The vault the OAuth adapters see, with account names translated onto owner secrets. */
|
|
67
75
|
readonly accountVault: Vault | undefined;
|
|
68
76
|
constructor(deps: {
|
|
@@ -73,6 +81,12 @@ export declare class ProviderAccounts {
|
|
|
73
81
|
vault?: Vault;
|
|
74
82
|
test?: (resolved: ResolvedProvider) => Promise<void>;
|
|
75
83
|
listModels?: typeof listProviderModels;
|
|
84
|
+
/** The one signed `/api/me` call and the device name, replaceable in tests. */
|
|
85
|
+
ollama?: {
|
|
86
|
+
protocol?: OllamaConnectProtocol;
|
|
87
|
+
deviceName?: () => string;
|
|
88
|
+
now?: () => number;
|
|
89
|
+
};
|
|
76
90
|
});
|
|
77
91
|
get anthropicOAuthEnabled(): boolean;
|
|
78
92
|
initialize(): Promise<void>;
|
|
@@ -89,9 +103,14 @@ export declare class ProviderAccounts {
|
|
|
89
103
|
};
|
|
90
104
|
codexEnabled: boolean;
|
|
91
105
|
anthropicOAuthEnabled: boolean;
|
|
106
|
+
gemini: {
|
|
107
|
+
baseUrl: string;
|
|
108
|
+
keyUrl: string;
|
|
109
|
+
};
|
|
92
110
|
accounts: {
|
|
93
111
|
assignedAgents: string[];
|
|
94
112
|
test: TestResult | null;
|
|
113
|
+
device?: OllamaDeviceView | null | undefined;
|
|
95
114
|
login?: import("./codex-accounts.js").CodexLoginView | {
|
|
96
115
|
state: "pending";
|
|
97
116
|
attemptId: string;
|
|
@@ -102,6 +121,7 @@ export declare class ProviderAccounts {
|
|
|
102
121
|
reconnectRequired?: boolean | undefined;
|
|
103
122
|
configured: boolean;
|
|
104
123
|
detectedContextWindowTokens: number;
|
|
124
|
+
detectedContextWindowSource: "provider" | "table";
|
|
105
125
|
removalPending: boolean;
|
|
106
126
|
refreshable: boolean;
|
|
107
127
|
subscriptionRenewsAt: null;
|
|
@@ -159,6 +179,36 @@ export declare class ProviderAccounts {
|
|
|
159
179
|
} | {
|
|
160
180
|
completed: boolean;
|
|
161
181
|
} | null>;
|
|
182
|
+
/**
|
|
183
|
+
* Ollama Cloud with a device key: `connect` makes a key pair in the vault and
|
|
184
|
+
* answers with the page to press Connect on; `poll` asks ollama.com once
|
|
185
|
+
* whether that happened; `disconnect` removes the key from the vault. The
|
|
186
|
+
* device stays listed on ollama.com until the owner removes it there.
|
|
187
|
+
*/
|
|
188
|
+
ollamaAction(id: string, action: 'connect' | 'poll' | 'disconnect', body: {
|
|
189
|
+
revision?: unknown;
|
|
190
|
+
attemptId?: unknown;
|
|
191
|
+
}, owner: string): Promise<{
|
|
192
|
+
state: "connected";
|
|
193
|
+
username: string;
|
|
194
|
+
deviceName: string;
|
|
195
|
+
} | {
|
|
196
|
+
state: "waiting";
|
|
197
|
+
expiresAt: string;
|
|
198
|
+
} | {
|
|
199
|
+
state: "failed";
|
|
200
|
+
message: string;
|
|
201
|
+
} | {
|
|
202
|
+
state: "pending";
|
|
203
|
+
attemptId: string;
|
|
204
|
+
verificationUrl: string;
|
|
205
|
+
deviceName: string;
|
|
206
|
+
expiresAt: string;
|
|
207
|
+
} | {
|
|
208
|
+
removed: boolean;
|
|
209
|
+
unpaired: boolean;
|
|
210
|
+
note: string;
|
|
211
|
+
}>;
|
|
162
212
|
codexAction(id: string, action: 'login' | 'cancel-login' | 'logout', revision: unknown): Promise<import("./codex-accounts.js").CodexLoginView | {
|
|
163
213
|
cancelled: boolean;
|
|
164
214
|
removed?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-accounts.d.ts","sourceRoot":"","sources":["../src/provider-accounts.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAAwB,KAAK,sBAAsB,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,KAAK,EACrI,MAAM,aAAa,CAAC;AACrB,OAAO,EAA6D,kBAAkB,
|
|
1
|
+
{"version":3,"file":"provider-accounts.d.ts","sourceRoot":"","sources":["../src/provider-accounts.ts"],"names":[],"mappings":"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"}
|