@withbuddi/buddi 0.1.0-pre.46 → 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/onboarding/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/onboarding/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/onboarding/index.js +1 -0
- package/node_modules/@buddi/core/dist/onboarding/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/system-context.d.ts +6 -0
- package/node_modules/@buddi/core/dist/system-context.d.ts.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/agent-run.d.ts +6 -0
- package/node_modules/@buddi/gateway/dist/missions/agent-run.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/agent-run.js +2 -1
- package/node_modules/@buddi/gateway/dist/missions/agent-run.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 +77 -5
- package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts +11 -2
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.js +55 -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/owner-profile-edit.d.ts +3 -2
- package/node_modules/@buddi/gateway/dist/owner-profile-edit.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/owner-profile-edit.js +4 -2
- package/node_modules/@buddi/gateway/dist/owner-profile-edit.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +3 -2
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.d.ts +10 -2
- package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.js +24 -10
- package/node_modules/@buddi/gateway/dist/system-context.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/runtime/dist/index.d.ts +1 -0
- package/node_modules/@buddi/runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/index.js +1 -0
- package/node_modules/@buddi/runtime/dist/index.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/language.d.ts +65 -0
- package/node_modules/@buddi/runtime/dist/language.d.ts.map +1 -0
- package/node_modules/@buddi/runtime/dist/language.js +191 -0
- package/node_modules/@buddi/runtime/dist/language.js.map +1 -0
- package/node_modules/@buddi/runtime/dist/loop.d.ts +9 -1
- package/node_modules/@buddi/runtime/dist/loop.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/loop.js +78 -4
- package/node_modules/@buddi/runtime/dist/loop.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/express-rate-limit/dist/index.cjs +9 -7
- package/node_modules/express-rate-limit/dist/index.mjs +9 -7
- package/node_modules/express-rate-limit/package.json +9 -9
- 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/onboarding/index.d.ts +1 -0
- package/packages/core/dist/onboarding/index.d.ts.map +1 -1
- package/packages/core/dist/onboarding/index.js +1 -0
- package/packages/core/dist/onboarding/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/system-context.d.ts +6 -0
- package/packages/core/dist/system-context.d.ts.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/agent-run.d.ts +6 -0
- package/packages/gateway/dist/missions/agent-run.d.ts.map +1 -1
- package/packages/gateway/dist/missions/agent-run.js +2 -1
- package/packages/gateway/dist/missions/agent-run.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 +77 -5
- package/packages/gateway/dist/missions/execute.js.map +1 -1
- package/packages/gateway/dist/missions/reminders.d.ts +11 -2
- package/packages/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/packages/gateway/dist/missions/reminders.js +55 -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/owner-profile-edit.d.ts +3 -2
- package/packages/gateway/dist/owner-profile-edit.d.ts.map +1 -1
- package/packages/gateway/dist/owner-profile-edit.js +4 -2
- package/packages/gateway/dist/owner-profile-edit.js.map +1 -1
- package/packages/gateway/dist/serve.d.ts.map +1 -1
- package/packages/gateway/dist/serve.js +3 -2
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/system-context.d.ts +10 -2
- package/packages/gateway/dist/system-context.d.ts.map +1 -1
- package/packages/gateway/dist/system-context.js +24 -10
- package/packages/gateway/dist/system-context.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/runtime/dist/index.d.ts +1 -0
- package/packages/runtime/dist/index.d.ts.map +1 -1
- package/packages/runtime/dist/index.js +1 -0
- package/packages/runtime/dist/index.js.map +1 -1
- package/packages/runtime/dist/language.d.ts +65 -0
- package/packages/runtime/dist/language.d.ts.map +1 -0
- package/packages/runtime/dist/language.js +191 -0
- package/packages/runtime/dist/language.js.map +1 -0
- package/packages/runtime/dist/loop.d.ts +9 -1
- package/packages/runtime/dist/loop.d.ts.map +1 -1
- package/packages/runtime/dist/loop.js +78 -4
- package/packages/runtime/dist/loop.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-C2yWZED2.css → index-CkzsX0YQ.css} +1 -1
- package/packages/web/dist/assets/index-Dg5Dl0iF.js +150 -0
- package/packages/web/dist/assets/{lottie_light-CVXFbeEK.js → lottie_light-vNpJ-Svm.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/precache.json +4 -4
- package/packages/web/dist/assets/index-CIhME8Ui.js +0 -150
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one card behind a local-model download (docs/plugin-host-api.md §4.2
|
|
3
|
+
* `onnx`, 1.32).
|
|
4
|
+
*
|
|
5
|
+
* A plugin asks with `ctx.buddi.onnx.ensure({ reason, model })` or
|
|
6
|
+
* `ctx.buddi.models.ensure(...)`; nothing is fetched until the owner says
|
|
7
|
+
* yes. The card covers what is missing in one question — "Download the
|
|
8
|
+
* Whisper base model (135 MB) and the engine that runs it (114 MB)?" — and
|
|
9
|
+
* approving it runs core's own `runtimes.download`, which starts both
|
|
10
|
+
* downloads. An engine that is already there is not asked about again, so a
|
|
11
|
+
* second plugin that only needs the engine gets no card.
|
|
12
|
+
*
|
|
13
|
+
* The card is an ordinary action on the existing path (`createAction`), the
|
|
14
|
+
* way an owner secret's use is: it reaches every surface the owner decides
|
|
15
|
+
* on. While one is pending for the same thing, asking again answers that card
|
|
16
|
+
* instead of raising another.
|
|
17
|
+
*/
|
|
18
|
+
import type { Pool } from 'pg';
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
import type { ActionRecord } from '../actions/types.js';
|
|
21
|
+
import type { EffectDescription, PluginManifest } from '../tools.js';
|
|
22
|
+
import { type ModelFile } from './models.js';
|
|
23
|
+
export declare const RUNTIMES_PLUGIN = "runtimes";
|
|
24
|
+
export declare const RUNTIMES_TOOL = "runtimes.download";
|
|
25
|
+
export declare const RUNTIMES_TOOL_VERSION = "1.0.0";
|
|
26
|
+
declare const input: z.ZodObject<{
|
|
27
|
+
/** What the card is about, so a second ask for the same thing finds it. */
|
|
28
|
+
key: z.ZodString;
|
|
29
|
+
plugin: z.ZodString;
|
|
30
|
+
reason: z.ZodString;
|
|
31
|
+
engine: z.ZodOptional<z.ZodObject<{
|
|
32
|
+
version: z.ZodString;
|
|
33
|
+
platform: z.ZodString;
|
|
34
|
+
downloadBytes: z.ZodNumber;
|
|
35
|
+
sizeBytes: z.ZodNumber;
|
|
36
|
+
}, "strict", z.ZodTypeAny, {
|
|
37
|
+
version: string;
|
|
38
|
+
sizeBytes: number;
|
|
39
|
+
platform: string;
|
|
40
|
+
downloadBytes: number;
|
|
41
|
+
}, {
|
|
42
|
+
version: string;
|
|
43
|
+
sizeBytes: number;
|
|
44
|
+
platform: string;
|
|
45
|
+
downloadBytes: number;
|
|
46
|
+
}>>;
|
|
47
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
48
|
+
name: z.ZodString;
|
|
49
|
+
bytes: z.ZodNumber;
|
|
50
|
+
/** A shared model core downloads into `models/<id>/`. */
|
|
51
|
+
id: z.ZodOptional<z.ZodString>;
|
|
52
|
+
files: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
53
|
+
url: z.ZodString;
|
|
54
|
+
sha256: z.ZodString;
|
|
55
|
+
bytes: z.ZodNumber;
|
|
56
|
+
name: z.ZodString;
|
|
57
|
+
}, "strict", z.ZodTypeAny, {
|
|
58
|
+
name: string;
|
|
59
|
+
sha256: string;
|
|
60
|
+
bytes: number;
|
|
61
|
+
url: string;
|
|
62
|
+
}, {
|
|
63
|
+
name: string;
|
|
64
|
+
sha256: string;
|
|
65
|
+
bytes: number;
|
|
66
|
+
url: string;
|
|
67
|
+
}>, "many">>;
|
|
68
|
+
}, "strict", z.ZodTypeAny, {
|
|
69
|
+
name: string;
|
|
70
|
+
bytes: number;
|
|
71
|
+
id?: string | undefined;
|
|
72
|
+
files?: {
|
|
73
|
+
name: string;
|
|
74
|
+
sha256: string;
|
|
75
|
+
bytes: number;
|
|
76
|
+
url: string;
|
|
77
|
+
}[] | undefined;
|
|
78
|
+
}, {
|
|
79
|
+
name: string;
|
|
80
|
+
bytes: number;
|
|
81
|
+
id?: string | undefined;
|
|
82
|
+
files?: {
|
|
83
|
+
name: string;
|
|
84
|
+
sha256: string;
|
|
85
|
+
bytes: number;
|
|
86
|
+
url: string;
|
|
87
|
+
}[] | undefined;
|
|
88
|
+
}>>;
|
|
89
|
+
}, "strict", z.ZodTypeAny, {
|
|
90
|
+
plugin: string;
|
|
91
|
+
reason: string;
|
|
92
|
+
key: string;
|
|
93
|
+
engine?: {
|
|
94
|
+
version: string;
|
|
95
|
+
sizeBytes: number;
|
|
96
|
+
platform: string;
|
|
97
|
+
downloadBytes: number;
|
|
98
|
+
} | undefined;
|
|
99
|
+
model?: {
|
|
100
|
+
name: string;
|
|
101
|
+
bytes: number;
|
|
102
|
+
id?: string | undefined;
|
|
103
|
+
files?: {
|
|
104
|
+
name: string;
|
|
105
|
+
sha256: string;
|
|
106
|
+
bytes: number;
|
|
107
|
+
url: string;
|
|
108
|
+
}[] | undefined;
|
|
109
|
+
} | undefined;
|
|
110
|
+
}, {
|
|
111
|
+
plugin: string;
|
|
112
|
+
reason: string;
|
|
113
|
+
key: string;
|
|
114
|
+
engine?: {
|
|
115
|
+
version: string;
|
|
116
|
+
sizeBytes: number;
|
|
117
|
+
platform: string;
|
|
118
|
+
downloadBytes: number;
|
|
119
|
+
} | undefined;
|
|
120
|
+
model?: {
|
|
121
|
+
name: string;
|
|
122
|
+
bytes: number;
|
|
123
|
+
id?: string | undefined;
|
|
124
|
+
files?: {
|
|
125
|
+
name: string;
|
|
126
|
+
sha256: string;
|
|
127
|
+
bytes: number;
|
|
128
|
+
url: string;
|
|
129
|
+
}[] | undefined;
|
|
130
|
+
} | undefined;
|
|
131
|
+
}>;
|
|
132
|
+
export type RuntimesDownload = z.infer<typeof input>;
|
|
133
|
+
/** The card's question, and what it will do. Deterministic in its arguments. */
|
|
134
|
+
export declare function describeRuntimesDownload(args: RuntimesDownload): EffectDescription;
|
|
135
|
+
/** Core's manifest for the approval tool. Registered by the gateway beside the other core families. */
|
|
136
|
+
export declare function createRuntimesManifest(): PluginManifest;
|
|
137
|
+
/** What a plugin hands `ensure` about its model. */
|
|
138
|
+
export interface EnsureModel {
|
|
139
|
+
/** How the owner reads it: "Whisper base model". */
|
|
140
|
+
name?: string;
|
|
141
|
+
/** Its size, when the plugin downloads it itself. */
|
|
142
|
+
bytes?: number;
|
|
143
|
+
/** A shared model core downloads (`models.ensure`'s `id` and `files`). */
|
|
144
|
+
id?: string;
|
|
145
|
+
files?: readonly ModelFile[];
|
|
146
|
+
}
|
|
147
|
+
export interface CardFacts {
|
|
148
|
+
pool: Pool;
|
|
149
|
+
plugin: string;
|
|
150
|
+
agentId?: string | undefined;
|
|
151
|
+
conversationId?: string | undefined;
|
|
152
|
+
now: () => Date;
|
|
153
|
+
/** Tells the owner's channels (Telegram, push) a card is waiting; the composition root's. */
|
|
154
|
+
askApproval?: ((action: ActionRecord) => Promise<void>) | undefined;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* The arguments of the card for what is missing, or undefined when nothing is.
|
|
158
|
+
* `engine` is whether the engine must come too. Throws a `ModelRefusal` for a
|
|
159
|
+
* model that is not one.
|
|
160
|
+
*/
|
|
161
|
+
export declare function downloadArgs(plugin: string, reason: string, engine: boolean, model: EnsureModel | undefined): RuntimesDownload | undefined;
|
|
162
|
+
/**
|
|
163
|
+
* Raise the card, or answer the one already pending for the same thing.
|
|
164
|
+
* Answers the action id. The lookup and the insert run under one advisory
|
|
165
|
+
* lock in one transaction, so two plugins asking in the same tick (speech and
|
|
166
|
+
* news at boot) get one card between them, not two.
|
|
167
|
+
*/
|
|
168
|
+
export declare function raiseDownloadCard(facts: CardFacts, args: RuntimesDownload): Promise<string>;
|
|
169
|
+
export {};
|
|
170
|
+
//# sourceMappingURL=consent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../src/runtimes/consent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAmB,iBAAiB,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAEtG,OAAO,EAA4D,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAGvG,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAM7C,QAAA,MAAM,KAAK;IAEP,2EAA2E;;;;;;;;;;;;;;;;;;;;;;;QAYvE,yDAAyD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOtD,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAErD,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,iBAAiB,CA6BlF;AAkCD,uGAAuG;AACvG,wBAAgB,sBAAsB,IAAI,cAAc,CAQvD;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CACrE;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAkB1I;AAUD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3F"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createAction } from '../actions/store.js';
|
|
3
|
+
import { formatDownloadSize } from './download.js';
|
|
4
|
+
import { checkModelRequest, markModelApproved, startModelDownload } from './models.js';
|
|
5
|
+
import { markOnnxApproved, onnxState, startOnnxDownload } from './onnx.js';
|
|
6
|
+
export const RUNTIMES_PLUGIN = 'runtimes';
|
|
7
|
+
export const RUNTIMES_TOOL = 'runtimes.download';
|
|
8
|
+
export const RUNTIMES_TOOL_VERSION = '1.0.0';
|
|
9
|
+
const fileSchema = z
|
|
10
|
+
.object({ url: z.string(), sha256: z.string(), bytes: z.number().int().positive(), name: z.string() })
|
|
11
|
+
.strict();
|
|
12
|
+
const input = z
|
|
13
|
+
.object({
|
|
14
|
+
/** What the card is about, so a second ask for the same thing finds it. */
|
|
15
|
+
key: z.string(),
|
|
16
|
+
plugin: z.string(),
|
|
17
|
+
reason: z.string(),
|
|
18
|
+
engine: z
|
|
19
|
+
.object({ version: z.string(), platform: z.string(), downloadBytes: z.number().int(), sizeBytes: z.number().int() })
|
|
20
|
+
.strict()
|
|
21
|
+
.optional(),
|
|
22
|
+
model: z
|
|
23
|
+
.object({
|
|
24
|
+
name: z.string(),
|
|
25
|
+
bytes: z.number().int().nonnegative(),
|
|
26
|
+
/** A shared model core downloads into `models/<id>/`. */
|
|
27
|
+
id: z.string().optional(),
|
|
28
|
+
files: z.array(fileSchema).optional(),
|
|
29
|
+
})
|
|
30
|
+
.strict()
|
|
31
|
+
.optional(),
|
|
32
|
+
})
|
|
33
|
+
.strict();
|
|
34
|
+
/** The card's question, and what it will do. Deterministic in its arguments. */
|
|
35
|
+
export function describeRuntimesDownload(args) {
|
|
36
|
+
const model = args.model;
|
|
37
|
+
const engine = args.engine;
|
|
38
|
+
const modelText = model ? `the ${model.name}${model.bytes > 0 ? ` (${formatDownloadSize(model.bytes)})` : ''}` : '';
|
|
39
|
+
const question = model && engine
|
|
40
|
+
? `Download ${modelText} and the engine that runs it (${formatDownloadSize(engine.downloadBytes)})?`
|
|
41
|
+
: engine
|
|
42
|
+
? `Download the engine that runs local models (${formatDownloadSize(engine.downloadBytes)})?`
|
|
43
|
+
: `Download ${modelText}?`;
|
|
44
|
+
const reason = args.reason.trim();
|
|
45
|
+
const lines = [`${args.plugin} asks: ${/[.!?…]$/.test(reason) ? reason : `${reason}.`}`];
|
|
46
|
+
if (engine) {
|
|
47
|
+
lines.push(`The engine is ONNX Runtime ${engine.version} for this computer (${engine.platform}), from npm, checked against its pinned checksum; ` +
|
|
48
|
+
`${formatDownloadSize(engine.sizeBytes)} stays on disk, shared by every plugin that runs local models.`);
|
|
49
|
+
}
|
|
50
|
+
if (model?.files)
|
|
51
|
+
lines.push(`The model's ${model.files.length === 1 ? 'file is' : `${model.files.length} files are`} checked against their pinned checksums too.`);
|
|
52
|
+
return {
|
|
53
|
+
envelope: {
|
|
54
|
+
plugin: args.plugin,
|
|
55
|
+
reason: args.reason,
|
|
56
|
+
...(engine ? { engine } : {}),
|
|
57
|
+
...(model ? { model: { name: model.name, bytes: model.bytes, ...(model.id ? { id: model.id } : {}), ...(model.files ? { files: model.files.map((f) => ({ url: f.url, sha256: f.sha256, bytes: f.bytes })) } : {}) } } : {}),
|
|
58
|
+
},
|
|
59
|
+
// The question on a line of its own: it is the card's heading on Telegram and in notifications.
|
|
60
|
+
preview: `${question}\n${lines.join(' ')}`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const downloadTool = {
|
|
64
|
+
name: RUNTIMES_TOOL,
|
|
65
|
+
description: "Start a local-model download the owner approved. Runs only from an approved action.",
|
|
66
|
+
tier: 'gated',
|
|
67
|
+
ownerOnly: true,
|
|
68
|
+
input,
|
|
69
|
+
describe: (args) => describeRuntimesDownload(args),
|
|
70
|
+
async execute(args, _ctx) {
|
|
71
|
+
const started = [];
|
|
72
|
+
if (args.engine) {
|
|
73
|
+
// The yes is kept until the download ends: a restart mid-way resumes it on the next ensure.
|
|
74
|
+
await markOnnxApproved().catch(() => { });
|
|
75
|
+
void startOnnxDownload();
|
|
76
|
+
started.push('engine');
|
|
77
|
+
}
|
|
78
|
+
if (args.model?.id && args.model.files) {
|
|
79
|
+
try {
|
|
80
|
+
const checked = checkModelRequest({ id: args.model.id, files: args.model.files });
|
|
81
|
+
await markModelApproved(checked.id, checked.files).catch(() => { });
|
|
82
|
+
void startModelDownload({ id: args.model.id, files: args.model.files }).catch(() => { });
|
|
83
|
+
started.push(`model ${args.model.id}`);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
return { started, refused: err instanceof Error ? err.message : String(err) };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
started,
|
|
91
|
+
note: started.length === 0 ? 'Nothing to download.' : `Downloading ${started.join(' and ')}; ${args.plugin} can use it once it is ready.`,
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
/** Core's manifest for the approval tool. Registered by the gateway beside the other core families. */
|
|
96
|
+
export function createRuntimesManifest() {
|
|
97
|
+
return {
|
|
98
|
+
name: RUNTIMES_PLUGIN,
|
|
99
|
+
version: RUNTIMES_TOOL_VERSION,
|
|
100
|
+
schema: 'core',
|
|
101
|
+
migrationsDir: '',
|
|
102
|
+
tools: [downloadTool],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
106
|
+
/**
|
|
107
|
+
* The arguments of the card for what is missing, or undefined when nothing is.
|
|
108
|
+
* `engine` is whether the engine must come too. Throws a `ModelRefusal` for a
|
|
109
|
+
* model that is not one.
|
|
110
|
+
*/
|
|
111
|
+
export function downloadArgs(plugin, reason, engine, model) {
|
|
112
|
+
if (typeof reason !== 'string' || reason.trim() === '')
|
|
113
|
+
throw new TypeError('ensure needs a reason the owner reads on the card');
|
|
114
|
+
let modelArgs;
|
|
115
|
+
if (model !== undefined) {
|
|
116
|
+
if (model.files !== undefined || model.id !== undefined) {
|
|
117
|
+
const checked = checkModelRequest({ id: model.id ?? '', files: model.files ?? [] });
|
|
118
|
+
modelArgs = { name: clip(model.name ?? checked.id), bytes: checked.bytes, id: checked.id, files: checked.files };
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const bytes = model.bytes ?? 0;
|
|
122
|
+
if (!Number.isSafeInteger(bytes) || bytes < 0)
|
|
123
|
+
throw new TypeError('a model\'s bytes are a whole number');
|
|
124
|
+
modelArgs = { name: clip(model.name ?? 'model'), bytes };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const state = onnxState();
|
|
128
|
+
const engineArgs = engine ? { version: state.version, platform: state.platform, downloadBytes: state.downloadBytes, sizeBytes: state.sizeBytes } : undefined;
|
|
129
|
+
if (engineArgs === undefined && modelArgs === undefined)
|
|
130
|
+
return undefined;
|
|
131
|
+
const key = `${engineArgs ? `onnx@${engineArgs.version}/${engineArgs.platform}` : ''}|${modelArgs ? (modelArgs.id ?? `named:${modelArgs.name}`) : ''}`;
|
|
132
|
+
return { key, plugin, reason: clip(reason.trim(), 280), ...(engineArgs ? { engine: engineArgs } : {}), ...(modelArgs ? { model: modelArgs } : {}) };
|
|
133
|
+
}
|
|
134
|
+
function clip(text, max = 80) {
|
|
135
|
+
const flat = String(text).replace(/\s+/g, ' ').trim();
|
|
136
|
+
return flat.length > max ? `${flat.slice(0, max - 1)}…` : flat;
|
|
137
|
+
}
|
|
138
|
+
/** One raise at a time in this process; the database lock covers every process. */
|
|
139
|
+
let raising = Promise.resolve();
|
|
140
|
+
/**
|
|
141
|
+
* Raise the card, or answer the one already pending for the same thing.
|
|
142
|
+
* Answers the action id. The lookup and the insert run under one advisory
|
|
143
|
+
* lock in one transaction, so two plugins asking in the same tick (speech and
|
|
144
|
+
* news at boot) get one card between them, not two.
|
|
145
|
+
*/
|
|
146
|
+
export function raiseDownloadCard(facts, args) {
|
|
147
|
+
const next = raising.then(() => raiseLocked(facts, args));
|
|
148
|
+
raising = next.catch(() => { });
|
|
149
|
+
return next;
|
|
150
|
+
}
|
|
151
|
+
async function raiseLocked(facts, args) {
|
|
152
|
+
const client = await facts.pool.connect();
|
|
153
|
+
let created;
|
|
154
|
+
let id;
|
|
155
|
+
try {
|
|
156
|
+
await client.query('begin');
|
|
157
|
+
await client.query('select pg_advisory_xact_lock(hashtext($1))', [RUNTIMES_TOOL]);
|
|
158
|
+
// The engine alone is answered by any pending card that brings it: the
|
|
159
|
+
// owner is asked about the engine once, whichever plugin asked first.
|
|
160
|
+
const engineOnly = args.engine !== undefined && args.model === undefined;
|
|
161
|
+
const { rows } = await client.query(`select a.id from core.actions a join core.approvals p on p.action_id = a.id
|
|
162
|
+
where a.tool = $1 and p.state = 'pending' and a.expires_at > $3
|
|
163
|
+
and (a.canonical_args->>'key' = $2 or ($4 and starts_with(a.canonical_args->>'key', $2)))
|
|
164
|
+
order by a.created_at desc limit 1`, [RUNTIMES_TOOL, args.key, facts.now(), engineOnly]);
|
|
165
|
+
const open = rows[0];
|
|
166
|
+
if (open !== undefined) {
|
|
167
|
+
id = String(open.id);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
const card = describeRuntimesDownload(args);
|
|
171
|
+
let conversationId = null;
|
|
172
|
+
if (facts.conversationId !== undefined && UUID.test(facts.conversationId)) {
|
|
173
|
+
const found = await client.query(`select 1 from core.conversations where id = $1`, [facts.conversationId]);
|
|
174
|
+
if (found.rows.length > 0)
|
|
175
|
+
conversationId = facts.conversationId;
|
|
176
|
+
}
|
|
177
|
+
created = await createAction(client, {
|
|
178
|
+
tool: RUNTIMES_TOOL,
|
|
179
|
+
toolVersion: RUNTIMES_TOOL_VERSION,
|
|
180
|
+
agentId: facts.agentId ?? facts.plugin,
|
|
181
|
+
conversationId,
|
|
182
|
+
canonicalArgs: args,
|
|
183
|
+
envelope: card.envelope,
|
|
184
|
+
preview: card.preview,
|
|
185
|
+
tier: 'gated',
|
|
186
|
+
now: facts.now(),
|
|
187
|
+
});
|
|
188
|
+
id = created.id;
|
|
189
|
+
}
|
|
190
|
+
await client.query('commit');
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
await client.query('rollback').catch(() => { });
|
|
194
|
+
throw err;
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
client.release();
|
|
198
|
+
}
|
|
199
|
+
// Telegram and push are told about a new card; telling them never fails the ask.
|
|
200
|
+
if (created !== undefined && facts.askApproval !== undefined) {
|
|
201
|
+
await facts.askApproval(created).catch(() => { });
|
|
202
|
+
}
|
|
203
|
+
return id;
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=consent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consent.js","sourceRoot":"","sources":["../../src/runtimes/consent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { request as httpsRequest } from 'node:https';
|
|
2
|
+
import { type LookupAll } from '../host/http.js';
|
|
3
|
+
import { type AddressPolicy } from '../plugin/url.js';
|
|
4
|
+
/** An answer whose body is read as it arrives, never buffered whole. */
|
|
5
|
+
export interface DownloadResponse {
|
|
6
|
+
status: number;
|
|
7
|
+
body: AsyncIterable<Uint8Array>;
|
|
8
|
+
}
|
|
9
|
+
/** How a download asks for a URL: tests hand in one over a local server. */
|
|
10
|
+
export type DownloadGet = (url: string, opts?: {
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
}) => Promise<DownloadResponse>;
|
|
13
|
+
/** How `nodeGet` dials: tests point it at a local server and a resolver of their own. */
|
|
14
|
+
export interface NodeGetOptions {
|
|
15
|
+
request?: typeof httpsRequest;
|
|
16
|
+
/** Where a checked URL is actually sent. Tests only: the checks run on the URL before it. */
|
|
17
|
+
rewrite?: (url: string) => string;
|
|
18
|
+
/** The address rules; `DEFAULT_POLICY` in shipped code. */
|
|
19
|
+
policy?: AddressPolicy;
|
|
20
|
+
/** How a name is resolved before the guard judges it. */
|
|
21
|
+
resolve?: LookupAll;
|
|
22
|
+
}
|
|
23
|
+
/** The most redirects one download follows. */
|
|
24
|
+
export declare const DOWNLOAD_MAX_REDIRECTS = 5;
|
|
25
|
+
/**
|
|
26
|
+
* GET over `node:https`, one connection per request and no pool (the reason
|
|
27
|
+
* the shared transport exists; it buffers whole answers, and an engine is a
|
|
28
|
+
* hundred megabytes). The same guards as the shared transport: every URL —
|
|
29
|
+
* the first and every redirect — goes through `checkUrl` (no credentials, the
|
|
30
|
+
* web's own ports, no private or local host), https only, and the socket
|
|
31
|
+
* resolves through `guardedLookup`, so a name that answers a private address
|
|
32
|
+
* is refused before anything is sent. Five redirects at most.
|
|
33
|
+
*/
|
|
34
|
+
export declare function nodeGet(options?: NodeGetOptions): DownloadGet;
|
|
35
|
+
/** A file pinned by its hash and length. */
|
|
36
|
+
export interface PinnedDownload {
|
|
37
|
+
url: string;
|
|
38
|
+
sha256: string;
|
|
39
|
+
bytes: number;
|
|
40
|
+
}
|
|
41
|
+
/** Why a download was refused or failed, in a sentence for the owner. */
|
|
42
|
+
export declare class DownloadError extends Error {
|
|
43
|
+
constructor(message: string);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A fresh temporary name in `dir`: `.tmp-<random><suffix>`, or
|
|
47
|
+
* `.tmp-<owner>+<random><suffix>` when an owner (a model id) is named, so a
|
|
48
|
+
* sweep for one owner never touches another's download in the same folder.
|
|
49
|
+
* `+` is not a character an id may hold, so `.tmp-a+` never matches `a-b`'s.
|
|
50
|
+
*/
|
|
51
|
+
export declare function tempName(dir: string, suffix?: string, owner?: string): string;
|
|
52
|
+
/** The prefix of an owner's temporaries (`tempName`'s third argument). */
|
|
53
|
+
export declare function tempPrefix(owner?: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Delete every `.tmp-*` entry in `dir` (or only an owner's, `.tmp-<owner>+*`):
|
|
56
|
+
* what a download that died left. `keep` spares the entries a running download
|
|
57
|
+
* owns. Never throws.
|
|
58
|
+
*/
|
|
59
|
+
export declare function sweepTemp(dir: string, owner?: string, keep?: (name: string) => boolean): Promise<number>;
|
|
60
|
+
/**
|
|
61
|
+
* Fetch `file.url` into `dest`, checking the length and sha256 as the bytes
|
|
62
|
+
* arrive. On any failure `dest` is deleted and a `DownloadError` thrown; on
|
|
63
|
+
* success `dest` holds exactly the pinned bytes.
|
|
64
|
+
*/
|
|
65
|
+
export declare function downloadVerified(get: DownloadGet, file: PinnedDownload, dest: string, opts?: {
|
|
66
|
+
signal?: AbortSignal;
|
|
67
|
+
onProgress?: (received: number) => void;
|
|
68
|
+
}): Promise<void>;
|
|
69
|
+
/** One entry to keep from a tarball. */
|
|
70
|
+
export interface TarWanted {
|
|
71
|
+
entry: string;
|
|
72
|
+
dest: string;
|
|
73
|
+
sha256: string;
|
|
74
|
+
bytes: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Stream a `.tgz` and write only the wanted entries, each to its `dest`,
|
|
78
|
+
* checking each one's length and sha256. Throws a `DownloadError` naming the
|
|
79
|
+
* first entry that is missing, the wrong size or the wrong hash; the caller
|
|
80
|
+
* deletes the folder the entries went into.
|
|
81
|
+
*/
|
|
82
|
+
export declare function extractVerified(tgz: string, wanted: readonly TarWanted[]): Promise<void>;
|
|
83
|
+
/** The sha256 of a file on disk, streamed. */
|
|
84
|
+
export declare function sha256OfFile(file: string): Promise<string>;
|
|
85
|
+
/** The longest failure reason kept, logged or shown. */
|
|
86
|
+
export declare const REASON_MAX = 300;
|
|
87
|
+
/**
|
|
88
|
+
* A failure reason safe to log, keep on disk and show in Settings: every
|
|
89
|
+
* stored secret scrubbed, every URL cut to its host (no credentials, path or
|
|
90
|
+
* query, where a signed link keeps its key), one line, at most 300 characters.
|
|
91
|
+
*/
|
|
92
|
+
export declare function safeReason(text: string): string;
|
|
93
|
+
/** Bytes as the owner reads them: `114 MB`, `850 KB`, `1.2 GB`. */
|
|
94
|
+
export declare function formatDownloadSize(bytes: number): string;
|
|
95
|
+
//# sourceMappingURL=download.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/runtimes/download.ts"],"names":[],"mappings":"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"}
|