@withbuddi/buddi 0.1.0-pre.47 → 0.1.0-pre.48
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/manifest.json +2 -2
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/agents/frontmatter.d.ts +4 -4
- package/node_modules/@buddi/core/dist/host/build.d.ts +8 -1
- package/node_modules/@buddi/core/dist/host/build.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/host/build.js +33 -0
- package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/types.d.ts +43 -0
- package/node_modules/@buddi/core/dist/host/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/index.js +1 -0
- package/node_modules/@buddi/core/dist/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.d.ts +5 -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/plugin/uses.d.ts +1 -1
- package/node_modules/@buddi/core/dist/plugin/uses.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/uses.js +2 -0
- package/node_modules/@buddi/core/dist/plugin/uses.js.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/runtimes/__fixtures__/server.d.ts +26 -0
- package/node_modules/@buddi/core/dist/runtimes/__fixtures__/server.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/__fixtures__/server.js +93 -0
- package/node_modules/@buddi/core/dist/runtimes/__fixtures__/server.js.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/area.d.ts +22 -0
- package/node_modules/@buddi/core/dist/runtimes/area.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/area.js +127 -0
- package/node_modules/@buddi/core/dist/runtimes/area.js.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/config.d.ts +54 -0
- package/node_modules/@buddi/core/dist/runtimes/config.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/config.js +57 -0
- package/node_modules/@buddi/core/dist/runtimes/config.js.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/consent.d.ts +170 -0
- package/node_modules/@buddi/core/dist/runtimes/consent.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/consent.js +205 -0
- package/node_modules/@buddi/core/dist/runtimes/consent.js.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/download.d.ts +95 -0
- package/node_modules/@buddi/core/dist/runtimes/download.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/download.js +333 -0
- package/node_modules/@buddi/core/dist/runtimes/download.js.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/index.d.ts +10 -0
- package/node_modules/@buddi/core/dist/runtimes/index.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/index.js +10 -0
- package/node_modules/@buddi/core/dist/runtimes/index.js.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/models.d.ts +78 -0
- package/node_modules/@buddi/core/dist/runtimes/models.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/models.js +240 -0
- package/node_modules/@buddi/core/dist/runtimes/models.js.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/native.d.ts +49 -0
- package/node_modules/@buddi/core/dist/runtimes/native.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/native.js +27 -0
- package/node_modules/@buddi/core/dist/runtimes/native.js.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/onnx.d.ts +87 -0
- package/node_modules/@buddi/core/dist/runtimes/onnx.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/onnx.js +582 -0
- package/node_modules/@buddi/core/dist/runtimes/onnx.js.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/pins.d.ts +53 -0
- package/node_modules/@buddi/core/dist/runtimes/pins.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/runtimes/pins.js +75 -0
- package/node_modules/@buddi/core/dist/runtimes/pins.js.map +1 -0
- package/node_modules/@buddi/core/dist/scheduler/missions.d.ts +9 -3
- package/node_modules/@buddi/core/dist/scheduler/missions.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/missions.js +12 -3
- package/node_modules/@buddi/core/dist/scheduler/missions.js.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/types.d.ts +8 -3
- package/node_modules/@buddi/core/dist/scheduler/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/types.js +5 -1
- package/node_modules/@buddi/core/dist/scheduler/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/approval.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/approval.js +3 -1
- package/node_modules/@buddi/core/dist/secrets/approval.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/use.d.ts +3 -1
- package/node_modules/@buddi/core/dist/secrets/use.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/use.js +2 -0
- package/node_modules/@buddi/core/dist/secrets/use.js.map +1 -1
- package/node_modules/@buddi/core/dist/tools.d.ts +16 -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/dist/views.d.ts +8 -8
- package/node_modules/@buddi/core/migrations/079_mission_browser_owner.sql +7 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.js +6 -3
- package/node_modules/@buddi/gateway/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts +24 -10
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js +6 -2
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts +17 -4
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js +25 -5
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/browser-host.d.ts +7 -0
- package/node_modules/@buddi/gateway/dist/browser-host.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/browser-host.js +22 -0
- package/node_modules/@buddi/gateway/dist/browser-host.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.d.ts +91 -0
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.js +194 -0
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts +20 -0
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js +73 -3
- package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts +10 -2
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.js +53 -5
- package/node_modules/@buddi/gateway/dist/missions/reminders.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.d.ts +0 -11
- package/node_modules/@buddi/gateway/dist/owner-notify.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.js +3 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +2 -1
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts +2 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js +16 -4
- package/node_modules/@buddi/gateway/dist/telegram/approvals.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 +8 -0
- package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts +8 -0
- package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js +25 -0
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/plugins.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/plugins.js +3 -1
- package/node_modules/@buddi/gateway/dist/web/plugins.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.js +1 -0
- package/node_modules/@buddi/gateway/dist/web/read.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/runtimes.d.ts +10 -0
- package/node_modules/@buddi/gateway/dist/web/runtimes.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/runtimes.js +25 -0
- package/node_modules/@buddi/gateway/dist/web/runtimes.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +20 -2
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/write.d.ts +11 -1
- package/node_modules/@buddi/gateway/dist/web/write.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/write.js +18 -1
- package/node_modules/@buddi/gateway/dist/web/write.js.map +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/delegate.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/delegate.js +1 -0
- package/node_modules/@buddi/runtime/dist/delegate.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 +5 -0
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.js +41 -5
- package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts +6 -0
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.js +2 -2
- package/node_modules/@buddi/tool-browser/dist/routes.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/imapflow/CHANGELOG.md +8 -0
- package/node_modules/imapflow/dist/cjs/commands/copyuid-parser.js +16 -2
- package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +26 -19
- package/node_modules/imapflow/dist/cjs/handler/token-parser.js +127 -51
- 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/search-compiler.js +7 -3
- package/node_modules/imapflow/dist/esm/commands/copyuid-parser.js +16 -2
- package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +26 -19
- package/node_modules/imapflow/dist/esm/handler/token-parser.js +127 -51
- 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/search-compiler.js +7 -3
- package/node_modules/imapflow/package.json +3 -2
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/agents/frontmatter.d.ts +4 -4
- package/packages/core/dist/host/build.d.ts +8 -1
- package/packages/core/dist/host/build.d.ts.map +1 -1
- package/packages/core/dist/host/build.js +33 -0
- package/packages/core/dist/host/build.js.map +1 -1
- package/packages/core/dist/host/types.d.ts +43 -0
- package/packages/core/dist/host/types.d.ts.map +1 -1
- package/packages/core/dist/index.d.ts +1 -0
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/index.js +1 -0
- package/packages/core/dist/index.js.map +1 -1
- package/packages/core/dist/plugin/index.d.ts +5 -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/plugin/uses.d.ts +1 -1
- package/packages/core/dist/plugin/uses.d.ts.map +1 -1
- package/packages/core/dist/plugin/uses.js +2 -0
- package/packages/core/dist/plugin/uses.js.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/runtimes/__fixtures__/server.d.ts +26 -0
- package/packages/core/dist/runtimes/__fixtures__/server.d.ts.map +1 -0
- package/packages/core/dist/runtimes/__fixtures__/server.js +93 -0
- package/packages/core/dist/runtimes/__fixtures__/server.js.map +1 -0
- package/packages/core/dist/runtimes/area.d.ts +22 -0
- package/packages/core/dist/runtimes/area.d.ts.map +1 -0
- package/packages/core/dist/runtimes/area.js +127 -0
- package/packages/core/dist/runtimes/area.js.map +1 -0
- package/packages/core/dist/runtimes/config.d.ts +54 -0
- package/packages/core/dist/runtimes/config.d.ts.map +1 -0
- package/packages/core/dist/runtimes/config.js +57 -0
- package/packages/core/dist/runtimes/config.js.map +1 -0
- package/packages/core/dist/runtimes/consent.d.ts +170 -0
- package/packages/core/dist/runtimes/consent.d.ts.map +1 -0
- package/packages/core/dist/runtimes/consent.js +205 -0
- package/packages/core/dist/runtimes/consent.js.map +1 -0
- package/packages/core/dist/runtimes/download.d.ts +95 -0
- package/packages/core/dist/runtimes/download.d.ts.map +1 -0
- package/packages/core/dist/runtimes/download.js +333 -0
- package/packages/core/dist/runtimes/download.js.map +1 -0
- package/packages/core/dist/runtimes/index.d.ts +10 -0
- package/packages/core/dist/runtimes/index.d.ts.map +1 -0
- package/packages/core/dist/runtimes/index.js +10 -0
- package/packages/core/dist/runtimes/index.js.map +1 -0
- package/packages/core/dist/runtimes/models.d.ts +78 -0
- package/packages/core/dist/runtimes/models.d.ts.map +1 -0
- package/packages/core/dist/runtimes/models.js +240 -0
- package/packages/core/dist/runtimes/models.js.map +1 -0
- package/packages/core/dist/runtimes/native.d.ts +49 -0
- package/packages/core/dist/runtimes/native.d.ts.map +1 -0
- package/packages/core/dist/runtimes/native.js +27 -0
- package/packages/core/dist/runtimes/native.js.map +1 -0
- package/packages/core/dist/runtimes/onnx.d.ts +87 -0
- package/packages/core/dist/runtimes/onnx.d.ts.map +1 -0
- package/packages/core/dist/runtimes/onnx.js +582 -0
- package/packages/core/dist/runtimes/onnx.js.map +1 -0
- package/packages/core/dist/runtimes/pins.d.ts +53 -0
- package/packages/core/dist/runtimes/pins.d.ts.map +1 -0
- package/packages/core/dist/runtimes/pins.js +75 -0
- package/packages/core/dist/runtimes/pins.js.map +1 -0
- package/packages/core/dist/scheduler/missions.d.ts +9 -3
- package/packages/core/dist/scheduler/missions.d.ts.map +1 -1
- package/packages/core/dist/scheduler/missions.js +12 -3
- package/packages/core/dist/scheduler/missions.js.map +1 -1
- package/packages/core/dist/scheduler/types.d.ts +8 -3
- package/packages/core/dist/scheduler/types.d.ts.map +1 -1
- package/packages/core/dist/scheduler/types.js +5 -1
- package/packages/core/dist/scheduler/types.js.map +1 -1
- package/packages/core/dist/secrets/approval.d.ts.map +1 -1
- package/packages/core/dist/secrets/approval.js +3 -1
- package/packages/core/dist/secrets/approval.js.map +1 -1
- package/packages/core/dist/secrets/use.d.ts +3 -1
- package/packages/core/dist/secrets/use.d.ts.map +1 -1
- package/packages/core/dist/secrets/use.js +2 -0
- package/packages/core/dist/secrets/use.js.map +1 -1
- package/packages/core/dist/tools.d.ts +16 -0
- package/packages/core/dist/tools.d.ts.map +1 -1
- package/packages/core/dist/tools.js.map +1 -1
- package/packages/core/dist/views.d.ts +8 -8
- package/packages/core/migrations/079_mission_browser_owner.sql +7 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalog.js +6 -3
- package/packages/gateway/dist/agents/catalog.js.map +1 -1
- package/packages/gateway/dist/agents/catalogue-package.d.ts +24 -10
- package/packages/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalogue-package.js +6 -2
- package/packages/gateway/dist/agents/catalogue-package.js.map +1 -1
- package/packages/gateway/dist/agents/platform-catalogue.d.ts +17 -4
- package/packages/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
- package/packages/gateway/dist/agents/platform-catalogue.js +25 -5
- package/packages/gateway/dist/agents/platform-catalogue.js.map +1 -1
- package/packages/gateway/dist/browser-host.d.ts +7 -0
- package/packages/gateway/dist/browser-host.d.ts.map +1 -1
- package/packages/gateway/dist/browser-host.js +22 -0
- package/packages/gateway/dist/browser-host.js.map +1 -1
- package/packages/gateway/dist/missions/chrome-scope.d.ts +91 -0
- package/packages/gateway/dist/missions/chrome-scope.d.ts.map +1 -0
- package/packages/gateway/dist/missions/chrome-scope.js +194 -0
- package/packages/gateway/dist/missions/chrome-scope.js.map +1 -0
- package/packages/gateway/dist/missions/execute.d.ts +20 -0
- package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
- package/packages/gateway/dist/missions/execute.js +73 -3
- package/packages/gateway/dist/missions/execute.js.map +1 -1
- package/packages/gateway/dist/missions/reminders.d.ts +10 -2
- package/packages/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/packages/gateway/dist/missions/reminders.js +53 -5
- package/packages/gateway/dist/missions/reminders.js.map +1 -1
- package/packages/gateway/dist/owner-notify.d.ts +0 -11
- package/packages/gateway/dist/owner-notify.d.ts.map +1 -1
- package/packages/gateway/dist/owner-notify.js +3 -1
- package/packages/gateway/dist/owner-notify.js.map +1 -1
- package/packages/gateway/dist/serve.d.ts.map +1 -1
- package/packages/gateway/dist/serve.js +2 -1
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/telegram/approvals.d.ts +2 -1
- package/packages/gateway/dist/telegram/approvals.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/approvals.js +16 -4
- package/packages/gateway/dist/telegram/approvals.js.map +1 -1
- package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/packages/gateway/dist/web/api-routes.js +8 -0
- package/packages/gateway/dist/web/api-routes.js.map +1 -1
- package/packages/gateway/dist/web/approval-ask.d.ts +8 -0
- package/packages/gateway/dist/web/approval-ask.d.ts.map +1 -1
- package/packages/gateway/dist/web/approval-ask.js +25 -0
- package/packages/gateway/dist/web/approval-ask.js.map +1 -1
- package/packages/gateway/dist/web/plugins.d.ts.map +1 -1
- package/packages/gateway/dist/web/plugins.js +3 -1
- package/packages/gateway/dist/web/plugins.js.map +1 -1
- package/packages/gateway/dist/web/read.d.ts +2 -0
- package/packages/gateway/dist/web/read.d.ts.map +1 -1
- package/packages/gateway/dist/web/read.js +1 -0
- package/packages/gateway/dist/web/read.js.map +1 -1
- package/packages/gateway/dist/web/runtimes.d.ts +10 -0
- package/packages/gateway/dist/web/runtimes.d.ts.map +1 -0
- package/packages/gateway/dist/web/runtimes.js +25 -0
- package/packages/gateway/dist/web/runtimes.js.map +1 -0
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +20 -2
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/write.d.ts +11 -1
- package/packages/gateway/dist/web/write.d.ts.map +1 -1
- package/packages/gateway/dist/web/write.js +18 -1
- package/packages/gateway/dist/web/write.js.map +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/delegate.d.ts.map +1 -1
- package/packages/runtime/dist/delegate.js +1 -0
- package/packages/runtime/dist/delegate.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 +5 -0
- package/packages/tools/browser/dist/controller.d.ts.map +1 -1
- package/packages/tools/browser/dist/controller.js +41 -5
- package/packages/tools/browser/dist/controller.js.map +1 -1
- package/packages/tools/browser/dist/routes.d.ts +6 -0
- package/packages/tools/browser/dist/routes.d.ts.map +1 -1
- package/packages/tools/browser/dist/routes.js +2 -2
- package/packages/tools/browser/dist/routes.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-Bxcetnpt.js → index-Dg5Dl0iF.js} +66 -66
- package/packages/web/dist/assets/{lottie_light-CM_Bp6rc.js → lottie_light-vNpJ-Svm.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +1 -1
- package/packages/web/dist/precache.json +3 -3
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Downloading what buddi runs locally — the ONNX engine and shared models —
|
|
3
|
+
* with one set of safety rules (docs/plugin-host-api.md §4.2 `onnx`, 1.32):
|
|
4
|
+
*
|
|
5
|
+
* - Everything is written under a `.tmp-*` name in the folder it will end up
|
|
6
|
+
* in, so the final move is a same-filesystem `rename`, atomic.
|
|
7
|
+
* - The sha256 and the length are checked against the pin while the bytes
|
|
8
|
+
* arrive; a mismatch deletes the temporary file and nothing is moved.
|
|
9
|
+
* - A download that dies half-way deletes what it wrote; one from a process
|
|
10
|
+
* that died is swept by the next download into that folder.
|
|
11
|
+
* - Nothing downloaded is opened, executed or loaded before its hash matched.
|
|
12
|
+
*
|
|
13
|
+
* The tarball reader is the smallest that reads an npm tarball (ustar, with
|
|
14
|
+
* pax and GNU long names): it streams through gunzip and writes only the
|
|
15
|
+
* entries asked for, hashing each as it goes.
|
|
16
|
+
*/
|
|
17
|
+
import { createHash, randomBytes } from 'node:crypto';
|
|
18
|
+
import { createReadStream } from 'node:fs';
|
|
19
|
+
import { open, readdir, rm } from 'node:fs/promises';
|
|
20
|
+
import { request as httpsRequest } from 'node:https';
|
|
21
|
+
import path from 'node:path';
|
|
22
|
+
import { createGunzip } from 'node:zlib';
|
|
23
|
+
import { guardedLookup } from '../host/http.js';
|
|
24
|
+
import { DEFAULT_POLICY, checkUrl } from '../plugin/url.js';
|
|
25
|
+
import { scrubText } from '../secrets/scrub.js';
|
|
26
|
+
/** The most redirects one download follows. */
|
|
27
|
+
export const DOWNLOAD_MAX_REDIRECTS = 5;
|
|
28
|
+
/**
|
|
29
|
+
* GET over `node:https`, one connection per request and no pool (the reason
|
|
30
|
+
* the shared transport exists; it buffers whole answers, and an engine is a
|
|
31
|
+
* hundred megabytes). The same guards as the shared transport: every URL —
|
|
32
|
+
* the first and every redirect — goes through `checkUrl` (no credentials, the
|
|
33
|
+
* web's own ports, no private or local host), https only, and the socket
|
|
34
|
+
* resolves through `guardedLookup`, so a name that answers a private address
|
|
35
|
+
* is refused before anything is sent. Five redirects at most.
|
|
36
|
+
*/
|
|
37
|
+
export function nodeGet(options = {}) {
|
|
38
|
+
const request = options.request ?? httpsRequest;
|
|
39
|
+
const rewrite = options.rewrite ?? ((url) => url);
|
|
40
|
+
const policy = options.policy ?? DEFAULT_POLICY;
|
|
41
|
+
const lookup = guardedLookup(options.resolve, policy);
|
|
42
|
+
const once = (url, signal) => new Promise((resolve, reject) => {
|
|
43
|
+
const req = request(rewrite(url), { method: 'GET', agent: false, lookup, headers: { 'user-agent': 'buddi', accept: '*/*' }, ...(signal ? { signal } : {}) }, resolve);
|
|
44
|
+
req.setTimeout(60_000, () => req.destroy(new Error('the server went quiet for a minute')));
|
|
45
|
+
req.on('error', reject);
|
|
46
|
+
req.end();
|
|
47
|
+
});
|
|
48
|
+
return async (url, opts = {}) => {
|
|
49
|
+
let current = url;
|
|
50
|
+
for (let hop = 0; hop <= DOWNLOAD_MAX_REDIRECTS; hop += 1) {
|
|
51
|
+
const checked = checkUrl(current, policy);
|
|
52
|
+
if (checked.url.protocol !== 'https:')
|
|
53
|
+
throw new Error(`refusing ${checked.url.host}: downloads are https only`);
|
|
54
|
+
const res = await once(current, opts.signal);
|
|
55
|
+
const status = res.statusCode ?? 0;
|
|
56
|
+
const location = res.headers.location;
|
|
57
|
+
if (status >= 300 && status < 400 && typeof location === 'string') {
|
|
58
|
+
res.resume();
|
|
59
|
+
current = new URL(location, current).toString();
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (status < 200 || status >= 300)
|
|
63
|
+
res.resume();
|
|
64
|
+
return { status, body: res };
|
|
65
|
+
}
|
|
66
|
+
throw new Error('too many redirects');
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** Why a download was refused or failed, in a sentence for the owner. */
|
|
70
|
+
export class DownloadError extends Error {
|
|
71
|
+
constructor(message) {
|
|
72
|
+
super(message);
|
|
73
|
+
this.name = 'DownloadError';
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* A fresh temporary name in `dir`: `.tmp-<random><suffix>`, or
|
|
78
|
+
* `.tmp-<owner>+<random><suffix>` when an owner (a model id) is named, so a
|
|
79
|
+
* sweep for one owner never touches another's download in the same folder.
|
|
80
|
+
* `+` is not a character an id may hold, so `.tmp-a+` never matches `a-b`'s.
|
|
81
|
+
*/
|
|
82
|
+
export function tempName(dir, suffix = '', owner) {
|
|
83
|
+
return path.join(dir, `.tmp-${owner === undefined ? '' : `${owner}+`}${randomBytes(6).toString('hex')}${suffix}`);
|
|
84
|
+
}
|
|
85
|
+
/** The prefix of an owner's temporaries (`tempName`'s third argument). */
|
|
86
|
+
export function tempPrefix(owner) {
|
|
87
|
+
return owner === undefined ? '.tmp-' : `.tmp-${owner}+`;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Delete every `.tmp-*` entry in `dir` (or only an owner's, `.tmp-<owner>+*`):
|
|
91
|
+
* what a download that died left. `keep` spares the entries a running download
|
|
92
|
+
* owns. Never throws.
|
|
93
|
+
*/
|
|
94
|
+
export async function sweepTemp(dir, owner, keep = () => false) {
|
|
95
|
+
let names;
|
|
96
|
+
try {
|
|
97
|
+
names = await readdir(dir);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
let swept = 0;
|
|
103
|
+
const prefix = tempPrefix(owner);
|
|
104
|
+
for (const name of names) {
|
|
105
|
+
if (!name.startsWith(prefix) || keep(name))
|
|
106
|
+
continue;
|
|
107
|
+
await rm(path.join(dir, name), { recursive: true, force: true }).catch(() => { });
|
|
108
|
+
swept += 1;
|
|
109
|
+
}
|
|
110
|
+
return swept;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Fetch `file.url` into `dest`, checking the length and sha256 as the bytes
|
|
114
|
+
* arrive. On any failure `dest` is deleted and a `DownloadError` thrown; on
|
|
115
|
+
* success `dest` holds exactly the pinned bytes.
|
|
116
|
+
*/
|
|
117
|
+
export async function downloadVerified(get, file, dest, opts = {}) {
|
|
118
|
+
let handle;
|
|
119
|
+
try {
|
|
120
|
+
let response;
|
|
121
|
+
try {
|
|
122
|
+
response = await get(file.url, opts.signal ? { signal: opts.signal } : {});
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
throw new DownloadError(`Could not reach ${hostOf(file.url)}: ${safeReason(err instanceof Error ? err.message : String(err))}${errorCode(err)}`);
|
|
126
|
+
}
|
|
127
|
+
if (response.status < 200 || response.status >= 300) {
|
|
128
|
+
throw new DownloadError(`${hostOf(file.url)} answered ${response.status} for ${path.posix.basename(new URL(file.url).pathname)}.`);
|
|
129
|
+
}
|
|
130
|
+
handle = await open(dest, 'wx');
|
|
131
|
+
const hash = createHash('sha256');
|
|
132
|
+
let received = 0;
|
|
133
|
+
try {
|
|
134
|
+
for await (const chunk of response.body) {
|
|
135
|
+
received += chunk.byteLength;
|
|
136
|
+
if (received > file.bytes) {
|
|
137
|
+
throw new DownloadError(`${path.posix.basename(new URL(file.url).pathname)} is larger than the ${file.bytes} bytes pinned for it.`);
|
|
138
|
+
}
|
|
139
|
+
hash.update(chunk);
|
|
140
|
+
await handle.write(chunk);
|
|
141
|
+
opts.onProgress?.(received);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
if (err instanceof DownloadError)
|
|
146
|
+
throw err;
|
|
147
|
+
throw new DownloadError(`The download from ${hostOf(file.url)} broke off after ${received} bytes: ${safeReason(err instanceof Error ? err.message : String(err))}${errorCode(err)}`);
|
|
148
|
+
}
|
|
149
|
+
if (received !== file.bytes) {
|
|
150
|
+
throw new DownloadError(`The download from ${hostOf(file.url)} ended after ${received} of ${file.bytes} bytes.`);
|
|
151
|
+
}
|
|
152
|
+
const digest = hash.digest('hex');
|
|
153
|
+
if (digest !== file.sha256.toLowerCase()) {
|
|
154
|
+
throw new DownloadError(`The file from ${hostOf(file.url)} does not match its pinned checksum (sha256 ${digest.slice(0, 12)}…, expected ${file.sha256.slice(0, 12)}…).`);
|
|
155
|
+
}
|
|
156
|
+
await handle.close();
|
|
157
|
+
handle = undefined;
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
await handle?.close().catch(() => { });
|
|
161
|
+
await rm(dest, { force: true }).catch(() => { });
|
|
162
|
+
throw err;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Stream a `.tgz` and write only the wanted entries, each to its `dest`,
|
|
167
|
+
* checking each one's length and sha256. Throws a `DownloadError` naming the
|
|
168
|
+
* first entry that is missing, the wrong size or the wrong hash; the caller
|
|
169
|
+
* deletes the folder the entries went into.
|
|
170
|
+
*/
|
|
171
|
+
export async function extractVerified(tgz, wanted) {
|
|
172
|
+
const byEntry = new Map(wanted.map((w) => [w.entry, w]));
|
|
173
|
+
const done = new Set();
|
|
174
|
+
let pending = Buffer.alloc(0);
|
|
175
|
+
// The entry being read: how much of its body is left, the padding after it,
|
|
176
|
+
// and where its bytes go (a file, a pax/long-name buffer, or nowhere).
|
|
177
|
+
let body = null;
|
|
178
|
+
let nextName;
|
|
179
|
+
let zeros = 0;
|
|
180
|
+
let ended = false;
|
|
181
|
+
const finishEntry = async () => {
|
|
182
|
+
if (body === null)
|
|
183
|
+
return;
|
|
184
|
+
if (body.file) {
|
|
185
|
+
const { handle, hash, want } = body.file;
|
|
186
|
+
await handle.close();
|
|
187
|
+
const digest = hash.digest('hex');
|
|
188
|
+
if (digest !== want.sha256.toLowerCase()) {
|
|
189
|
+
throw new DownloadError(`${want.entry} does not match its pinned checksum.`);
|
|
190
|
+
}
|
|
191
|
+
done.add(want.entry);
|
|
192
|
+
}
|
|
193
|
+
if (body.meta) {
|
|
194
|
+
const text = Buffer.concat(body.meta.parts);
|
|
195
|
+
if (body.meta.kind === 'longname')
|
|
196
|
+
nextName = text.toString('utf8').replace(/\0.*$/s, '');
|
|
197
|
+
else {
|
|
198
|
+
const found = /(?:^|\n)\d+ path=([^\n]*)\n/.exec(text.toString('utf8'));
|
|
199
|
+
if (found)
|
|
200
|
+
nextName = found[1];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
const gunzip = createReadStream(tgz).pipe(createGunzip());
|
|
205
|
+
try {
|
|
206
|
+
for await (const chunk of gunzip) {
|
|
207
|
+
if (ended)
|
|
208
|
+
break;
|
|
209
|
+
pending = pending.length === 0 ? chunk : Buffer.concat([pending, chunk]);
|
|
210
|
+
while (!ended) {
|
|
211
|
+
if (body !== null) {
|
|
212
|
+
if (body.remaining > 0) {
|
|
213
|
+
if (pending.length === 0)
|
|
214
|
+
break;
|
|
215
|
+
const take = Math.min(body.remaining, pending.length);
|
|
216
|
+
const slice = pending.subarray(0, take);
|
|
217
|
+
if (body.file) {
|
|
218
|
+
body.file.hash.update(slice);
|
|
219
|
+
await body.file.handle.write(slice);
|
|
220
|
+
}
|
|
221
|
+
else if (body.meta) {
|
|
222
|
+
body.meta.parts.push(Buffer.from(slice));
|
|
223
|
+
}
|
|
224
|
+
body.remaining -= take;
|
|
225
|
+
pending = pending.subarray(take);
|
|
226
|
+
if (body.remaining > 0)
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
if (pending.length < body.pad)
|
|
230
|
+
break;
|
|
231
|
+
pending = pending.subarray(body.pad);
|
|
232
|
+
await finishEntry();
|
|
233
|
+
body = null;
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
if (pending.length < 512)
|
|
237
|
+
break;
|
|
238
|
+
const header = pending.subarray(0, 512);
|
|
239
|
+
pending = pending.subarray(512);
|
|
240
|
+
if (header.every((byte) => byte === 0)) {
|
|
241
|
+
zeros += 1;
|
|
242
|
+
if (zeros >= 2)
|
|
243
|
+
ended = true;
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
zeros = 0;
|
|
247
|
+
const field = (start, length) => header.subarray(start, start + length).toString('utf8').replace(/\0.*$/s, '');
|
|
248
|
+
const size = parseInt(field(124, 12).trim() || '0', 8);
|
|
249
|
+
if (!Number.isFinite(size) || size < 0)
|
|
250
|
+
throw new DownloadError('The tarball has an entry whose size cannot be read.');
|
|
251
|
+
const type = String.fromCharCode(header[156] ?? 0);
|
|
252
|
+
const prefix = field(345, 155);
|
|
253
|
+
const name = nextName ?? (prefix ? `${prefix}/${field(0, 100)}` : field(0, 100));
|
|
254
|
+
const pad = (512 - (size % 512)) % 512;
|
|
255
|
+
if (type === 'x' || type === 'L') {
|
|
256
|
+
body = { remaining: size, pad, meta: { kind: type === 'x' ? 'pax' : 'longname', parts: [] } };
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
nextName = undefined;
|
|
260
|
+
const want = (type === '0' || type === '\0') ? byEntry.get(name) : undefined;
|
|
261
|
+
if (want !== undefined && !done.has(name)) {
|
|
262
|
+
if (size !== want.bytes) {
|
|
263
|
+
throw new DownloadError(`${want.entry} is ${size} bytes, not the ${want.bytes} pinned for it.`);
|
|
264
|
+
}
|
|
265
|
+
const handle = await open(want.dest, 'wx');
|
|
266
|
+
body = { remaining: size, pad, file: { handle, hash: createHash('sha256'), want } };
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
body = { remaining: size, pad };
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
catch (err) {
|
|
275
|
+
if (body?.file)
|
|
276
|
+
await body.file.handle.close().catch(() => { });
|
|
277
|
+
gunzip.destroy();
|
|
278
|
+
if (err instanceof DownloadError)
|
|
279
|
+
throw err;
|
|
280
|
+
throw new DownloadError(`The tarball could not be read: ${err instanceof Error ? err.message : String(err)}`);
|
|
281
|
+
}
|
|
282
|
+
if (body?.file) {
|
|
283
|
+
await body.file.handle.close().catch(() => { });
|
|
284
|
+
throw new DownloadError(`The tarball ended inside ${body.file.want.entry}.`);
|
|
285
|
+
}
|
|
286
|
+
const missing = wanted.find((w) => !done.has(w.entry));
|
|
287
|
+
if (missing)
|
|
288
|
+
throw new DownloadError(`The tarball has no ${missing.entry}.`);
|
|
289
|
+
}
|
|
290
|
+
/** The sha256 of a file on disk, streamed. */
|
|
291
|
+
export async function sha256OfFile(file) {
|
|
292
|
+
const hash = createHash('sha256');
|
|
293
|
+
for await (const chunk of createReadStream(file))
|
|
294
|
+
hash.update(chunk);
|
|
295
|
+
return hash.digest('hex');
|
|
296
|
+
}
|
|
297
|
+
function hostOf(url) {
|
|
298
|
+
try {
|
|
299
|
+
return new URL(url).host || 'the server';
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
return 'the server';
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/** ` (ECONNRESET)`: a system error's short code, when it has one. */
|
|
306
|
+
function errorCode(err) {
|
|
307
|
+
const code = err?.code;
|
|
308
|
+
return typeof code === 'string' && /^[A-Z0-9_]{2,32}$/.test(code) && !(err instanceof Error && err.message.includes(code)) ? ` (${code})` : '';
|
|
309
|
+
}
|
|
310
|
+
/** The longest failure reason kept, logged or shown. */
|
|
311
|
+
export const REASON_MAX = 300;
|
|
312
|
+
const URL_IN_TEXT = /\b[a-z][a-z0-9+.-]*:\/\/[^\s"'<>()`]+/gi;
|
|
313
|
+
/**
|
|
314
|
+
* A failure reason safe to log, keep on disk and show in Settings: every
|
|
315
|
+
* stored secret scrubbed, every URL cut to its host (no credentials, path or
|
|
316
|
+
* query, where a signed link keeps its key), one line, at most 300 characters.
|
|
317
|
+
*/
|
|
318
|
+
export function safeReason(text) {
|
|
319
|
+
const scrubbed = scrubText(String(text)).replace(URL_IN_TEXT, (found) => hostOf(found));
|
|
320
|
+
const line = scrubbed.replace(/[\u0000-\u001f\u007f]+/g, ' ').replace(/\s+/g, ' ').trim();
|
|
321
|
+
return line.length > REASON_MAX ? `${line.slice(0, REASON_MAX - 1)}…` : line;
|
|
322
|
+
}
|
|
323
|
+
/** Bytes as the owner reads them: `114 MB`, `850 KB`, `1.2 GB`. */
|
|
324
|
+
export function formatDownloadSize(bytes) {
|
|
325
|
+
if (bytes >= 1e9)
|
|
326
|
+
return `${(bytes / 1e9).toFixed(1)} GB`;
|
|
327
|
+
if (bytes >= 1e6)
|
|
328
|
+
return `${Math.round(bytes / 1e6)} MB`;
|
|
329
|
+
if (bytes >= 1e3)
|
|
330
|
+
return `${Math.round(bytes / 1e3)} KB`;
|
|
331
|
+
return `${bytes} bytes`;
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/runtimes/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Local-model runtimes: the ONNX engine and shared models (host API 1.32). */
|
|
2
|
+
export * from './pins.js';
|
|
3
|
+
export * from './download.js';
|
|
4
|
+
export * from './config.js';
|
|
5
|
+
export * from './native.js';
|
|
6
|
+
export * from './onnx.js';
|
|
7
|
+
export * from './models.js';
|
|
8
|
+
export * from './consent.js';
|
|
9
|
+
export * from './area.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Local-model runtimes: the ONNX engine and shared models (host API 1.32). */
|
|
2
|
+
export * from './pins.js';
|
|
3
|
+
export * from './download.js';
|
|
4
|
+
export * from './config.js';
|
|
5
|
+
export * from './native.js';
|
|
6
|
+
export * from './onnx.js';
|
|
7
|
+
export * from './models.js';
|
|
8
|
+
export * from './consent.js';
|
|
9
|
+
export * from './area.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { type PinnedDownload } from './download.js';
|
|
2
|
+
/** One file of a model: where it comes from, its sha256 and its length. */
|
|
3
|
+
export interface ModelFile extends PinnedDownload {
|
|
4
|
+
/** Its path inside the model's folder. The URL's last segment when absent. */
|
|
5
|
+
name?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ModelRequest {
|
|
8
|
+
/** Lower case, digits, `.`, `_`, `-`; at most 96. One folder per id across plugins. */
|
|
9
|
+
id: string;
|
|
10
|
+
files: readonly ModelFile[];
|
|
11
|
+
}
|
|
12
|
+
/** What `ctx.buddi.models.state(id)` answers. */
|
|
13
|
+
export interface ModelState {
|
|
14
|
+
id: string;
|
|
15
|
+
state: 'absent' | 'downloading' | 'ready' | 'failed';
|
|
16
|
+
/** The sum of its files. */
|
|
17
|
+
sizeBytes: number;
|
|
18
|
+
/** The folder its files are in, once it is ready. Pass `path.join(path, name)` to `createSession`. */
|
|
19
|
+
path?: string;
|
|
20
|
+
reason?: string;
|
|
21
|
+
receivedBytes?: number;
|
|
22
|
+
/** An approval card raised by `ensure` and not decided yet. */
|
|
23
|
+
pending?: string;
|
|
24
|
+
}
|
|
25
|
+
/** The most one model may be: 8 GB. */
|
|
26
|
+
export declare const MODEL_MAX_BYTES = 8000000000;
|
|
27
|
+
/** A model request that is not one, in a sentence. */
|
|
28
|
+
export declare class ModelRefusal extends Error {
|
|
29
|
+
constructor(message: string);
|
|
30
|
+
}
|
|
31
|
+
/** Check a request and answer it normalised: every file with its name. Throws a `ModelRefusal`. */
|
|
32
|
+
export declare function checkModelRequest(req: ModelRequest): {
|
|
33
|
+
id: string;
|
|
34
|
+
files: Array<PinnedDownload & {
|
|
35
|
+
name: string;
|
|
36
|
+
}>;
|
|
37
|
+
bytes: number;
|
|
38
|
+
};
|
|
39
|
+
/** Keep the owner's yes for a model until its download ends (`runtimes.download`). */
|
|
40
|
+
export declare function markModelApproved(id: string, files: ReadonlyArray<PinnedDownload & {
|
|
41
|
+
name: string;
|
|
42
|
+
}>): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* The files the owner approved for a model whose download has not finished
|
|
45
|
+
* (a restart cut it short), when they are exactly the files asked for now.
|
|
46
|
+
*/
|
|
47
|
+
export declare function approvedModelFiles(id: string, files: ReadonlyArray<{
|
|
48
|
+
name: string;
|
|
49
|
+
sha256: string;
|
|
50
|
+
url: string;
|
|
51
|
+
bytes: number;
|
|
52
|
+
}>): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* A model's state. With the files asked for, a model already kept with other
|
|
55
|
+
* files is `failed`: one id is one model across plugins, and buddi will not
|
|
56
|
+
* replace another plugin's files.
|
|
57
|
+
*/
|
|
58
|
+
export declare function modelState(id: string, files?: ReadonlyArray<{
|
|
59
|
+
name: string;
|
|
60
|
+
sha256: string;
|
|
61
|
+
}>): ModelState;
|
|
62
|
+
/** Start a model's download, once the owner said yes. Joins one already running; never restarts a failure. */
|
|
63
|
+
export declare function startModelDownload(req: ModelRequest): Promise<void>;
|
|
64
|
+
/** Every model kept or failed, for Settings. */
|
|
65
|
+
export declare function listModels(): ModelState[];
|
|
66
|
+
/** Remove a model and any recorded failure. Refused while it downloads. */
|
|
67
|
+
export declare function removeModel(id: string): Promise<{
|
|
68
|
+
removed: boolean;
|
|
69
|
+
refused?: string;
|
|
70
|
+
}>;
|
|
71
|
+
/**
|
|
72
|
+
* Sweep what downloads that died left in `models/` (once at boot): every
|
|
73
|
+
* temporary except those of a model downloading in this process.
|
|
74
|
+
*/
|
|
75
|
+
export declare function sweepModelTemps(): Promise<number>;
|
|
76
|
+
/** Forget what this process was doing. Tests only. */
|
|
77
|
+
export declare function resetModels(): void;
|
|
78
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/runtimes/models.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAiE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGnH,2EAA2E;AAC3E,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CAC7B;AAED,iDAAiD;AACjD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,uCAAuC;AACvC,eAAO,MAAM,eAAe,aAAM,CAAC;AAKnC,sDAAsD;AACtD,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAcD,mGAAmG;AACnG,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA4BnI;AAcD,sFAAsF;AACtF,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1H;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAQ1I;AAWD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,UAAU,CAkB1G;AAED,8GAA8G;AAC9G,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBnE;AAkCD,gDAAgD;AAChD,wBAAgB,UAAU,IAAI,UAAU,EAAE,CAezC;AAED,2EAA2E;AAC3E,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ7F;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAEvD;AAED,sDAAsD;AACtD,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|