aimeat 3.2.0 → 3.3.0
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/dist/.env.example +58 -1
- package/dist/build-stamp.json +4 -4
- package/dist/locales/en.json +41 -1
- package/dist/locales/es.json +41 -1
- package/dist/locales/fi.json +43 -3
- package/dist/public/changelog.json +12 -0
- package/dist/public/css/views/chat.css +388 -0
- package/dist/public/js/services/chat.js +190 -0
- package/dist/public/js/services/speech-reader.js +26 -0
- package/dist/public/lib/VENDORED.md +1 -0
- package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser-eh.worker.js +14 -0
- package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser.js +23 -0
- package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-eh.wasm +0 -0
- package/dist/public/lib/duckdb-wasm@1.32.0/extensions/v1.4.3/wasm_eh/parquet.duckdb_extension.wasm +0 -0
- package/dist/public/lib/vendored-assets.json +19 -0
- package/dist/public/llms-full-template.txt +2706 -0
- package/dist/public/llms-index-template.txt +60 -0
- package/dist/public/robots.node.txt +64 -23
- package/dist/public/spa.html +8 -1
- package/dist/public/views/chat/parts.js +257 -0
- package/dist/public/views/chat.js +327 -0
- package/dist/public/views/landing.js +24 -1
- package/dist/public/views/profile/agents/scope-model.js +320 -315
- package/dist/scripts/audit-mcp-schemas.js +41 -0
- package/dist/scripts/audit-mcp-schemas.js.map +1 -1
- package/dist/scripts/build-sdk-libs.d.ts.map +1 -1
- package/dist/scripts/build-sdk-libs.js +1 -0
- package/dist/scripts/build-sdk-libs.js.map +1 -1
- package/dist/scripts/check-ai-disclosure.js +11 -0
- package/dist/scripts/check-ai-disclosure.js.map +1 -1
- package/dist/scripts/check-denial-coverage.d.ts +29 -0
- package/dist/scripts/check-denial-coverage.d.ts.map +1 -0
- package/dist/scripts/check-denial-coverage.js +237 -0
- package/dist/scripts/check-denial-coverage.js.map +1 -0
- package/dist/scripts/check-ext-entrypoints.js +14 -2
- package/dist/scripts/check-ext-entrypoints.js.map +1 -1
- package/dist/scripts/check-outbound-fetch.d.ts.map +1 -1
- package/dist/scripts/check-outbound-fetch.js +16 -2
- package/dist/scripts/check-outbound-fetch.js.map +1 -1
- package/dist/scripts/check-sse-parity.js +14 -0
- package/dist/scripts/check-sse-parity.js.map +1 -1
- package/dist/scripts/indexnow.js +9 -7
- package/dist/scripts/indexnow.js.map +1 -1
- package/dist/src/auth/middleware.d.ts +7 -0
- package/dist/src/auth/middleware.d.ts.map +1 -1
- package/dist/src/auth/middleware.js +15 -21
- package/dist/src/auth/middleware.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts +4 -0
- package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-tasks.js +11 -1
- package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/apps.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/apps.js +88 -0
- package/dist/src/cli/connect/mcp/tools/apps.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/core.d.ts +7 -0
- package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/core.js +83 -4
- package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
- package/dist/src/cli/connect/onboarding-prompt.js +1 -1
- package/dist/src/cli/connect/skill-bundle.js +1 -1
- package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts +21 -0
- package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts.map +1 -0
- package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js +137 -0
- package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js.map +1 -0
- package/dist/src/cli/connect/tool-call-defs-core.d.ts +1 -0
- package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-core.js +30 -0
- package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +2 -0
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/config-types-ai.d.ts +76 -0
- package/dist/src/config-types-ai.d.ts.map +1 -0
- package/dist/src/config-types-ai.js +15 -0
- package/dist/src/config-types-ai.js.map +1 -0
- package/dist/src/config-types.d.ts +11 -2
- package/dist/src/config-types.d.ts.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +25 -4
- package/dist/src/config.js.map +1 -1
- package/dist/src/data/builtin-skills.d.ts.map +1 -1
- package/dist/src/data/builtin-skills.js +3 -2
- package/dist/src/data/builtin-skills.js.map +1 -1
- package/dist/src/data/digital-signage-package.js +1 -1
- package/dist/src/data/library-packs/sdk.d.ts.map +1 -1
- package/dist/src/data/library-packs/sdk.js +76 -0
- package/dist/src/data/library-packs/sdk.js.map +1 -1
- package/dist/src/data/library-packs/vendored.d.ts.map +1 -1
- package/dist/src/data/library-packs/vendored.js +81 -0
- package/dist/src/data/library-packs/vendored.js.map +1 -1
- package/dist/src/data/library-packs.d.ts +2 -2
- package/dist/src/data/library-packs.js +2 -2
- package/dist/src/data/public-pages.d.ts +13 -0
- package/dist/src/data/public-pages.d.ts.map +1 -1
- package/dist/src/data/public-pages.js +153 -113
- package/dist/src/data/public-pages.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +1652 -36
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/index-start.d.ts.map +1 -1
- package/dist/src/index-start.js +3 -0
- package/dist/src/index-start.js.map +1 -1
- package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
- package/dist/src/mcp/agent-tasks.js +5 -0
- package/dist/src/mcp/agent-tasks.js.map +1 -1
- package/dist/src/mcp/ai-image.d.ts +22 -0
- package/dist/src/mcp/ai-image.d.ts.map +1 -0
- package/dist/src/mcp/ai-image.js +60 -0
- package/dist/src/mcp/ai-image.js.map +1 -0
- package/dist/src/mcp/annotations.d.ts +5 -0
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +18 -0
- package/dist/src/mcp/annotations.js.map +1 -1
- package/dist/src/mcp/apps-draft-edit.d.ts +28 -0
- package/dist/src/mcp/apps-draft-edit.d.ts.map +1 -0
- package/dist/src/mcp/apps-draft-edit.js +164 -0
- package/dist/src/mcp/apps-draft-edit.js.map +1 -0
- package/dist/src/mcp/apps-screenshot.d.ts +26 -0
- package/dist/src/mcp/apps-screenshot.d.ts.map +1 -0
- package/dist/src/mcp/apps-screenshot.js +39 -0
- package/dist/src/mcp/apps-screenshot.js.map +1 -0
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts +1 -0
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.js +40 -0
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts +3 -0
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +74 -0
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js +1 -0
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js.map +1 -1
- package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
- package/dist/src/mcp/catalog/scopes.js +19 -1
- package/dist/src/mcp/catalog/scopes.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +18 -4
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/core-datapackage.d.ts +32 -0
- package/dist/src/mcp/core-datapackage.d.ts.map +1 -0
- package/dist/src/mcp/core-datapackage.js +188 -0
- package/dist/src/mcp/core-datapackage.js.map +1 -0
- package/dist/src/mcp/core-storage.d.ts +7 -3
- package/dist/src/mcp/core-storage.d.ts.map +1 -1
- package/dist/src/mcp/core-storage.js +27 -4
- package/dist/src/mcp/core-storage.js.map +1 -1
- package/dist/src/mcp/core.d.ts.map +1 -1
- package/dist/src/mcp/core.js +3 -0
- package/dist/src/mcp/core.js.map +1 -1
- package/dist/src/mcp/extensions.d.ts.map +1 -1
- package/dist/src/mcp/extensions.js +11 -1
- package/dist/src/mcp/extensions.js.map +1 -1
- package/dist/src/mcp/index.d.ts +9 -0
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +34 -0
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-task-schemas.js +12 -1
- package/dist/src/models/agent-task-schemas.js.map +1 -1
- package/dist/src/models/workflow-schemas.d.ts +178 -1
- package/dist/src/models/workflow-schemas.d.ts.map +1 -1
- package/dist/src/models/workflow-schemas.js +75 -0
- package/dist/src/models/workflow-schemas.js.map +1 -1
- package/dist/src/routes/admin-extensions.d.ts +4 -0
- package/dist/src/routes/admin-extensions.d.ts.map +1 -1
- package/dist/src/routes/admin-extensions.js +135 -142
- package/dist/src/routes/admin-extensions.js.map +1 -1
- package/dist/src/routes/agent-conventions.d.ts.map +1 -1
- package/dist/src/routes/agent-conventions.js +4 -2
- package/dist/src/routes/agent-conventions.js.map +1 -1
- package/dist/src/routes/agent-docs.d.ts +4 -4
- package/dist/src/routes/agent-docs.js +145 -145
- package/dist/src/routes/agent-docs.js.map +1 -1
- package/dist/src/routes/agent-messages.d.ts +6 -0
- package/dist/src/routes/agent-messages.d.ts.map +1 -1
- package/dist/src/routes/agent-messages.js +23 -1
- package/dist/src/routes/agent-messages.js.map +1 -1
- package/dist/src/routes/agent-tasks/create-read.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks/create-read.js +8 -1
- package/dist/src/routes/agent-tasks/create-read.js.map +1 -1
- package/dist/src/routes/agent-tasks/lifecycle.d.ts +4 -1
- package/dist/src/routes/agent-tasks/lifecycle.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks/lifecycle.js +80 -2
- package/dist/src/routes/agent-tasks/lifecycle.js.map +1 -1
- package/dist/src/routes/ai.d.ts +5 -0
- package/dist/src/routes/ai.d.ts.map +1 -1
- package/dist/src/routes/ai.js +51 -1
- package/dist/src/routes/ai.js.map +1 -1
- package/dist/src/routes/app-grants.d.ts.map +1 -1
- package/dist/src/routes/app-grants.js +5 -0
- package/dist/src/routes/app-grants.js.map +1 -1
- package/dist/src/routes/apps/drafts.d.ts +6 -0
- package/dist/src/routes/apps/drafts.d.ts.map +1 -1
- package/dist/src/routes/apps/drafts.js +133 -1
- package/dist/src/routes/apps/drafts.js.map +1 -1
- package/dist/src/routes/apps/read.d.ts.map +1 -1
- package/dist/src/routes/apps/read.js +38 -1
- package/dist/src/routes/apps/read.js.map +1 -1
- package/dist/src/routes/auth-otk.d.ts +28 -0
- package/dist/src/routes/auth-otk.d.ts.map +1 -0
- package/dist/src/routes/auth-otk.js +190 -0
- package/dist/src/routes/auth-otk.js.map +1 -0
- package/dist/src/routes/auth.d.ts +17 -0
- package/dist/src/routes/auth.d.ts.map +1 -1
- package/dist/src/routes/auth.js +44 -153
- package/dist/src/routes/auth.js.map +1 -1
- package/dist/src/routes/bootstrap.d.ts +6 -0
- package/dist/src/routes/bootstrap.d.ts.map +1 -1
- package/dist/src/routes/bootstrap.js +47 -20
- package/dist/src/routes/bootstrap.js.map +1 -1
- package/dist/src/routes/chat.d.ts +23 -0
- package/dist/src/routes/chat.d.ts.map +1 -0
- package/dist/src/routes/chat.js +165 -0
- package/dist/src/routes/chat.js.map +1 -0
- package/dist/src/routes/commerce.js +4 -4
- package/dist/src/routes/commerce.js.map +1 -1
- package/dist/src/routes/datapackages.d.ts +35 -0
- package/dist/src/routes/datapackages.d.ts.map +1 -0
- package/dist/src/routes/datapackages.js +217 -0
- package/dist/src/routes/datapackages.js.map +1 -0
- package/dist/src/routes/disputes.d.ts +8 -0
- package/dist/src/routes/disputes.d.ts.map +1 -1
- package/dist/src/routes/disputes.js +52 -1
- package/dist/src/routes/disputes.js.map +1 -1
- package/dist/src/routes/ecosystem-apps-advisories.d.ts +16 -0
- package/dist/src/routes/ecosystem-apps-advisories.d.ts.map +1 -0
- package/dist/src/routes/ecosystem-apps-advisories.js +104 -0
- package/dist/src/routes/ecosystem-apps-advisories.js.map +1 -0
- package/dist/src/routes/ecosystem-apps.d.ts +6 -0
- package/dist/src/routes/ecosystem-apps.d.ts.map +1 -1
- package/dist/src/routes/ecosystem-apps.js +31 -99
- package/dist/src/routes/ecosystem-apps.js.map +1 -1
- package/dist/src/routes/extensions/actions.d.ts.map +1 -1
- package/dist/src/routes/extensions/actions.js +29 -1
- package/dist/src/routes/extensions/actions.js.map +1 -1
- package/dist/src/routes/federation-sync/routing.d.ts.map +1 -1
- package/dist/src/routes/federation-sync/routing.js +12 -3
- package/dist/src/routes/federation-sync/routing.js.map +1 -1
- package/dist/src/routes/glossary.js +1 -1
- package/dist/src/routes/glossary.js.map +1 -1
- package/dist/src/routes/home/track.d.ts +5 -1
- package/dist/src/routes/home/track.d.ts.map +1 -1
- package/dist/src/routes/home/track.js +20 -6
- package/dist/src/routes/home/track.js.map +1 -1
- package/dist/src/routes/instances/install.d.ts +3 -0
- package/dist/src/routes/instances/install.d.ts.map +1 -1
- package/dist/src/routes/instances/install.js +17 -24
- package/dist/src/routes/instances/install.js.map +1 -1
- package/dist/src/routes/libs.js +1 -1
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/markdown-mirrors.js +1 -1
- package/dist/src/routes/markdown-mirrors.js.map +1 -1
- package/dist/src/routes/odata.d.ts +36 -0
- package/dist/src/routes/odata.d.ts.map +1 -0
- package/dist/src/routes/odata.js +143 -0
- package/dist/src/routes/odata.js.map +1 -0
- package/dist/src/routes/openrouter.d.ts +4 -0
- package/dist/src/routes/openrouter.d.ts.map +1 -1
- package/dist/src/routes/openrouter.js +10 -1
- package/dist/src/routes/openrouter.js.map +1 -1
- package/dist/src/routes/organisms/gates.d.ts.map +1 -1
- package/dist/src/routes/organisms/gates.js +9 -2
- package/dist/src/routes/organisms/gates.js.map +1 -1
- package/dist/src/routes/portal.d.ts +1 -0
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +13 -0
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/routes/schedules.d.ts +4 -0
- package/dist/src/routes/schedules.d.ts.map +1 -1
- package/dist/src/routes/schedules.js +9 -1
- package/dist/src/routes/schedules.js.map +1 -1
- package/dist/src/routes/storage-files.d.ts +23 -0
- package/dist/src/routes/storage-files.d.ts.map +1 -1
- package/dist/src/routes/storage-files.js +103 -82
- package/dist/src/routes/storage-files.js.map +1 -1
- package/dist/src/routes/workflows.d.ts.map +1 -1
- package/dist/src/routes/workflows.js +9 -1
- package/dist/src/routes/workflows.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts +2 -0
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +20 -2
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/service-init.js +12 -7
- package/dist/src/server-bootstrap/service-init.js.map +1 -1
- package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
- package/dist/src/server-bootstrap/static-files.js +44 -10
- package/dist/src/server-bootstrap/static-files.js.map +1 -1
- package/dist/src/services/ai-allowance.d.ts +82 -0
- package/dist/src/services/ai-allowance.d.ts.map +1 -0
- package/dist/src/services/ai-allowance.js +117 -0
- package/dist/src/services/ai-allowance.js.map +1 -0
- package/dist/src/services/ai-completion.d.ts +26 -0
- package/dist/src/services/ai-completion.d.ts.map +1 -1
- package/dist/src/services/ai-completion.js +41 -13
- package/dist/src/services/ai-completion.js.map +1 -1
- package/dist/src/services/ai-image.d.ts +70 -0
- package/dist/src/services/ai-image.d.ts.map +1 -0
- package/dist/src/services/ai-image.js +104 -0
- package/dist/src/services/ai-image.js.map +1 -0
- package/dist/src/services/ai-model-defaults.d.ts +45 -0
- package/dist/src/services/ai-model-defaults.d.ts.map +1 -0
- package/dist/src/services/ai-model-defaults.js +42 -0
- package/dist/src/services/ai-model-defaults.js.map +1 -0
- package/dist/src/services/ai-tool-setup.d.ts +5 -1
- package/dist/src/services/ai-tool-setup.d.ts.map +1 -1
- package/dist/src/services/ai-tool-setup.js +36 -0
- package/dist/src/services/ai-tool-setup.js.map +1 -1
- package/dist/src/services/ai-transcription.d.ts +5 -0
- package/dist/src/services/ai-transcription.d.ts.map +1 -1
- package/dist/src/services/ai-transcription.js +5 -2
- package/dist/src/services/ai-transcription.js.map +1 -1
- package/dist/src/services/app-agent-surfaces.js +4 -4
- package/dist/src/services/app-agent-surfaces.js.map +1 -1
- package/dist/src/services/app-draft-edit.d.ts +144 -0
- package/dist/src/services/app-draft-edit.d.ts.map +1 -0
- package/dist/src/services/app-draft-edit.js +203 -0
- package/dist/src/services/app-draft-edit.js.map +1 -0
- package/dist/src/services/auth-md.js +2 -2
- package/dist/src/services/auth-md.js.map +1 -1
- package/dist/src/services/board-write.d.ts +11 -3
- package/dist/src/services/board-write.d.ts.map +1 -1
- package/dist/src/services/board-write.js +24 -3
- package/dist/src/services/board-write.js.map +1 -1
- package/dist/src/services/chat-agent.d.ts +36 -0
- package/dist/src/services/chat-agent.d.ts.map +1 -0
- package/dist/src/services/chat-agent.js +123 -0
- package/dist/src/services/chat-agent.js.map +1 -0
- package/dist/src/services/chat-session.d.ts +58 -0
- package/dist/src/services/chat-session.d.ts.map +1 -0
- package/dist/src/services/chat-session.js +151 -0
- package/dist/src/services/chat-session.js.map +1 -0
- package/dist/src/services/chat-threads.d.ts +61 -0
- package/dist/src/services/chat-threads.d.ts.map +1 -0
- package/dist/src/services/chat-threads.js +137 -0
- package/dist/src/services/chat-threads.js.map +1 -0
- package/dist/src/services/config-schema.d.ts.map +1 -1
- package/dist/src/services/config-schema.js +2 -1
- package/dist/src/services/config-schema.js.map +1 -1
- package/dist/src/services/datapackage/contract.d.ts +198 -0
- package/dist/src/services/datapackage/contract.d.ts.map +1 -0
- package/dist/src/services/datapackage/contract.js +140 -0
- package/dist/src/services/datapackage/contract.js.map +1 -0
- package/dist/src/services/datapackage/ext-capability.d.ts +85 -0
- package/dist/src/services/datapackage/ext-capability.d.ts.map +1 -0
- package/dist/src/services/datapackage/ext-capability.js +72 -0
- package/dist/src/services/datapackage/ext-capability.js.map +1 -0
- package/dist/src/services/datapackage/odata.d.ts +92 -0
- package/dist/src/services/datapackage/odata.d.ts.map +1 -0
- package/dist/src/services/datapackage/odata.js +256 -0
- package/dist/src/services/datapackage/odata.js.map +1 -0
- package/dist/src/services/datapackage/odps.d.ts +24 -0
- package/dist/src/services/datapackage/odps.d.ts.map +1 -0
- package/dist/src/services/datapackage/odps.js +183 -0
- package/dist/src/services/datapackage/odps.js.map +1 -0
- package/dist/src/services/datapackage/store.d.ts +143 -0
- package/dist/src/services/datapackage/store.d.ts.map +1 -0
- package/dist/src/services/datapackage/store.js +533 -0
- package/dist/src/services/datapackage/store.js.map +1 -0
- package/dist/src/services/datapackage/table.d.ts +67 -0
- package/dist/src/services/datapackage/table.d.ts.map +1 -0
- package/dist/src/services/datapackage/table.js +0 -0
- package/dist/src/services/datapackage/table.js.map +1 -0
- package/dist/src/services/extension-ctx.d.ts +1 -0
- package/dist/src/services/extension-ctx.d.ts.map +1 -1
- package/dist/src/services/extension-ctx.js +31 -6
- package/dist/src/services/extension-ctx.js.map +1 -1
- package/dist/src/services/extension-files.d.ts +20 -0
- package/dist/src/services/extension-files.d.ts.map +1 -1
- package/dist/src/services/extension-files.js +9 -2
- package/dist/src/services/extension-files.js.map +1 -1
- package/dist/src/services/extension-lifecycle.d.ts +3 -0
- package/dist/src/services/extension-lifecycle.d.ts.map +1 -1
- package/dist/src/services/extension-lifecycle.js +2 -26
- package/dist/src/services/extension-lifecycle.js.map +1 -1
- package/dist/src/services/extension-runtime.d.ts +28 -2
- package/dist/src/services/extension-runtime.d.ts.map +1 -1
- package/dist/src/services/extension-runtime.js +22 -0
- package/dist/src/services/extension-runtime.js.map +1 -1
- package/dist/src/services/extension-schedules.d.ts +90 -0
- package/dist/src/services/extension-schedules.d.ts.map +1 -0
- package/dist/src/services/extension-schedules.js +123 -0
- package/dist/src/services/extension-schedules.js.map +1 -0
- package/dist/src/services/extension-system-run.d.ts +91 -0
- package/dist/src/services/extension-system-run.d.ts.map +1 -0
- package/dist/src/services/extension-system-run.js +100 -0
- package/dist/src/services/extension-system-run.js.map +1 -0
- package/dist/src/services/extension-upsert.d.ts +2 -0
- package/dist/src/services/extension-upsert.d.ts.map +1 -1
- package/dist/src/services/extension-upsert.js +6 -24
- package/dist/src/services/extension-upsert.js.map +1 -1
- package/dist/src/services/goose-acp.d.ts +84 -0
- package/dist/src/services/goose-acp.d.ts.map +1 -0
- package/dist/src/services/goose-acp.js +304 -0
- package/dist/src/services/goose-acp.js.map +1 -0
- package/dist/src/services/markdown-negotiation.js +1 -1
- package/dist/src/services/markdown-negotiation.js.map +1 -1
- package/dist/src/services/openrouter.d.ts +20 -1
- package/dist/src/services/openrouter.d.ts.map +1 -1
- package/dist/src/services/openrouter.js +66 -0
- package/dist/src/services/openrouter.js.map +1 -1
- package/dist/src/services/prompt-defaults/tiers-core.js +4 -4
- package/dist/src/services/scheduler-extension-job.d.ts +29 -6
- package/dist/src/services/scheduler-extension-job.d.ts.map +1 -1
- package/dist/src/services/scheduler-extension-job.js +29 -75
- package/dist/src/services/scheduler-extension-job.js.map +1 -1
- package/dist/src/services/scope-vocabulary-migration.d.ts +34 -1
- package/dist/src/services/scope-vocabulary-migration.d.ts.map +1 -1
- package/dist/src/services/scope-vocabulary-migration.js +60 -0
- package/dist/src/services/scope-vocabulary-migration.js.map +1 -1
- package/dist/src/services/screenshot-capture.d.ts +40 -1
- package/dist/src/services/screenshot-capture.d.ts.map +1 -1
- package/dist/src/services/screenshot-capture.js +142 -60
- package/dist/src/services/screenshot-capture.js.map +1 -1
- package/dist/src/services/skill-bundle/generator.js +1 -1
- package/dist/src/services/skill-bundle/generic-adapter.js +1 -1
- package/dist/src/services/skill-bundle/hermes-adapter.js +1 -1
- package/dist/src/services/storage-file-write.d.ts +36 -1
- package/dist/src/services/storage-file-write.d.ts.map +1 -1
- package/dist/src/services/storage-file-write.js +49 -3
- package/dist/src/services/storage-file-write.js.map +1 -1
- package/dist/src/services/task-outcome.d.ts +53 -0
- package/dist/src/services/task-outcome.d.ts.map +1 -0
- package/dist/src/services/task-outcome.js +28 -0
- package/dist/src/services/task-outcome.js.map +1 -0
- package/dist/src/services/workflow/engine-human.d.ts +15 -0
- package/dist/src/services/workflow/engine-human.d.ts.map +1 -1
- package/dist/src/services/workflow/engine-human.js +10 -1
- package/dist/src/services/workflow/engine-human.js.map +1 -1
- package/dist/src/services/workflow/engine-steps.d.ts +48 -3
- package/dist/src/services/workflow/engine-steps.d.ts.map +1 -1
- package/dist/src/services/workflow/engine-steps.js +361 -0
- package/dist/src/services/workflow/engine-steps.js.map +1 -1
- package/dist/src/services/workflow/engine.d.ts +1 -0
- package/dist/src/services/workflow/engine.d.ts.map +1 -1
- package/dist/src/services/workflow/engine.js +2 -1
- package/dist/src/services/workflow/engine.js.map +1 -1
- package/dist/src/services/workflow/store.d.ts.map +1 -1
- package/dist/src/services/workflow/store.js +60 -4
- package/dist/src/services/workflow/store.js.map +1 -1
- package/dist/src/services/write-guards.d.ts +27 -1
- package/dist/src/services/write-guards.d.ts.map +1 -1
- package/dist/src/services/write-guards.js +39 -9
- package/dist/src/services/write-guards.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/db-types.d.ts +1 -0
- package/dist/src/storage/providers/postgres-kysely/db-types.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js +3 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts +2 -0
- package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/files.js +34 -2
- package/dist/src/storage/providers/postgres-kysely/methods/files.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/migrations/0039_storage_file_utf8_verified.sql +19 -0
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +2 -1
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts +1 -0
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/apps.js +33 -28
- package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts +1 -12
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.js +28 -135
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts +38 -0
- package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/storage-files.js +109 -0
- package/dist/src/storage/providers/sqlite/methods/storage-files.js.map +1 -0
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +134 -130
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/app-grant.repository.d.ts +11 -0
- package/dist/src/storage/repositories/app-grant.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/file.repository.d.ts +13 -0
- package/dist/src/storage/repositories/file.repository.d.ts.map +1 -1
- package/dist/src/storage/types/commerce.d.ts +6 -0
- package/dist/src/storage/types/commerce.d.ts.map +1 -1
- package/dist/src/utils/agent-footer.d.ts.map +1 -1
- package/dist/src/utils/agent-footer.js +1 -0
- package/dist/src/utils/agent-footer.js.map +1 -1
- package/dist/src/utils/app-content-type.d.ts +57 -3
- package/dist/src/utils/app-content-type.d.ts.map +1 -1
- package/dist/src/utils/app-content-type.js +81 -12
- package/dist/src/utils/app-content-type.js.map +1 -1
- package/dist/src/utils/env-config/sections-features.d.ts.map +1 -1
- package/dist/src/utils/env-config/sections-features.js +9 -3
- package/dist/src/utils/env-config/sections-features.js.map +1 -1
- package/dist/src/utils/file-download-headers.d.ts +5 -3
- package/dist/src/utils/file-download-headers.d.ts.map +1 -1
- package/dist/src/utils/file-download-headers.js +18 -5
- package/dist/src/utils/file-download-headers.js.map +1 -1
- package/dist/src/utils/http-range.d.ts +151 -0
- package/dist/src/utils/http-range.d.ts.map +1 -0
- package/dist/src/utils/http-range.js +190 -0
- package/dist/src/utils/http-range.js.map +1 -0
- package/dist/src/utils/page-head.d.ts +5 -0
- package/dist/src/utils/page-head.d.ts.map +1 -1
- package/dist/src/utils/page-head.js +10 -1
- package/dist/src/utils/page-head.js.map +1 -1
- package/dist/src/utils/reserved-keys.d.ts +4 -1
- package/dist/src/utils/reserved-keys.d.ts.map +1 -1
- package/dist/src/utils/reserved-keys.js +4 -1
- package/dist/src/utils/reserved-keys.js.map +1 -1
- package/dist/static/sdk-libs/datapackage/index.js +336 -0
- package/dist/static/sdk-libs/dist/aimeat-datapackage.js +305 -0
- package/package.json +10 -2
|
@@ -51,6 +51,19 @@ function resolveServerDir() {
|
|
|
51
51
|
const __filename = fileURLToPath(import.meta.url);
|
|
52
52
|
return dirname(__filename);
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* The Content Signals Policy directive (contentsignals.org) served in robots.txt, in its two
|
|
56
|
+
* shipped forms. CONTENT_SIGNAL_DEFAULT is the literal line `public/robots.node.txt` already
|
|
57
|
+
* carries, so it is the one value that needs no rewrite at boot; the other is what
|
|
58
|
+
* AIMEAT_AI_TRAINING=allow pairs to.
|
|
59
|
+
*
|
|
60
|
+
* They live here rather than in config.ts because config.ts is downstream of this module in the
|
|
61
|
+
* import graph on the test-server entry point, and importing a VALUE (rather than a type) from it
|
|
62
|
+
* turns that into a live ESM cycle: `does not provide an export named CONTENT_SIGNAL_DEFAULT`, at
|
|
63
|
+
* boot, on one entry point and not the other.
|
|
64
|
+
*/
|
|
65
|
+
const CONTENT_SIGNAL_DEFAULT = 'search=yes, ai-input=yes, ai-train=no';
|
|
66
|
+
const CONTENT_SIGNAL_TRAINING_ALLOWED = 'search=yes, ai-input=yes, ai-train=yes';
|
|
54
67
|
/**
|
|
55
68
|
* Say so at boot when a vendored /lib/ asset the manifest promises is not on disk. These are the
|
|
56
69
|
* files too large for git (see public/lib/vendored-assets.json, `pnpm vendor:libs`), so a deploy
|
|
@@ -131,13 +144,16 @@ export function setupStaticFiles(app, config) {
|
|
|
131
144
|
const publicDir = publicCandidates.find(p => existsSync(p));
|
|
132
145
|
if (publicDir) {
|
|
133
146
|
warnAboutMissingVendoredAssets(publicDir);
|
|
134
|
-
// Redirect legacy and template
|
|
135
|
-
// The privacy and connect pages are TEMPLATES with {{placeholder}}
|
|
136
|
-
// substituted server-side
|
|
137
|
-
//
|
|
138
|
-
//
|
|
139
|
-
//
|
|
140
|
-
|
|
147
|
+
// Redirect legacy and template URLs to the canonical route that renders them.
|
|
148
|
+
// The privacy and connect pages, and both llms documents, are TEMPLATES with {{placeholder}}
|
|
149
|
+
// tokens substituted server-side — direct access to the underlying file serves the raw
|
|
150
|
+
// template with unresolved tokens visible to users + search engines. 301-redirect forces
|
|
151
|
+
// everyone through the substituted route.
|
|
152
|
+
//
|
|
153
|
+
// The llms entries are not decorative: both templates live in public/, so express.static was
|
|
154
|
+
// serving /llms-template.txt with its {{BASE_URL}}, {{NODE_ID}} and {{LIBRARY_PACKS_TABLE}}
|
|
155
|
+
// tokens intact, under the 7-day static cache, to anyone who guessed the name.
|
|
156
|
+
const STATIC_REDIRECTS = {
|
|
141
157
|
'/wizard.html': '/v1/setup/wizard',
|
|
142
158
|
'/privacy.html': '/v1/privacy',
|
|
143
159
|
'/privacy.fi.html': '/v1/privacy/fi',
|
|
@@ -145,9 +161,13 @@ export function setupStaticFiles(app, config) {
|
|
|
145
161
|
'/terms.fi.html': '/v1/terms/fi',
|
|
146
162
|
'/connect.html': '/v1/connect',
|
|
147
163
|
'/connect.fi.html': '/v1/connect/fi',
|
|
164
|
+
'/llms-index-template.txt': '/llms.txt',
|
|
165
|
+
'/llms-full-template.txt': '/llms-full.txt',
|
|
166
|
+
'/llms-template.txt': '/llms-full.txt',
|
|
167
|
+
'/robots.node.txt': '/robots.txt',
|
|
148
168
|
};
|
|
149
169
|
app.use((req, res, next) => {
|
|
150
|
-
const target =
|
|
170
|
+
const target = STATIC_REDIRECTS[req.path];
|
|
151
171
|
if (target) {
|
|
152
172
|
const qs = req.url.includes('?') ? req.url.substring(req.url.indexOf('?')) : '';
|
|
153
173
|
res.redirect(301, target + qs);
|
|
@@ -199,13 +219,27 @@ export function setupStaticFiles(app, config) {
|
|
|
199
219
|
const robotsFile = join(publicDir, 'robots.node.txt');
|
|
200
220
|
if (existsSync(robotsFile)) {
|
|
201
221
|
let robotsTxt = readFileSync(robotsFile, 'utf-8');
|
|
202
|
-
|
|
222
|
+
// AIMEAT_AI_TRAINING=allow opens the training crawlers: every Disallow between the markers
|
|
223
|
+
// becomes Allow, and the Content-Signal default pairs to ai-train=yes so the two cannot
|
|
224
|
+
// contradict each other. An explicit AIMEAT_CONTENT_SIGNAL still wins over the pairing.
|
|
225
|
+
const trainingAllowed = config.aiTraining === 'allow';
|
|
226
|
+
if (trainingAllowed) {
|
|
227
|
+
robotsTxt = robotsTxt.replace(/#AIMEAT-TRAINING-BEGIN[\s\S]*?#AIMEAT-TRAINING-END/, (block) => block.replace(/^Disallow: \/$/gm, 'Allow: /'));
|
|
228
|
+
}
|
|
229
|
+
const defaultSignal = trainingAllowed ? CONTENT_SIGNAL_TRAINING_ALLOWED : CONTENT_SIGNAL_DEFAULT;
|
|
230
|
+
const signal = config.contentSignal || defaultSignal;
|
|
203
231
|
if (signal.toLowerCase() === 'off') {
|
|
204
232
|
robotsTxt = robotsTxt.replace(/^Content-Signal:.*\r?\n/m, '');
|
|
205
233
|
}
|
|
206
|
-
else if (signal
|
|
234
|
+
else if (signal !== CONTENT_SIGNAL_DEFAULT) {
|
|
235
|
+
// CONTENT_SIGNAL_DEFAULT is what the file already carries, so it is the one value that
|
|
236
|
+
// needs no rewrite. Anything else — an operator override, or the ai-train=yes pairing
|
|
237
|
+
// above — replaces the line.
|
|
207
238
|
robotsTxt = robotsTxt.replace(/^Content-Signal:.*$/m, `Content-Signal: ${signal}`);
|
|
208
239
|
}
|
|
240
|
+
// The Sitemap line is templated. It used to hardcode aimeat.io, so every other node running
|
|
241
|
+
// this software advertised somebody else's sitemap to every crawler that read it.
|
|
242
|
+
robotsTxt = robotsTxt.replaceAll('{{BASE_URL}}', config.baseUrl.replace(/\/$/, ''));
|
|
209
243
|
// The text is prepared here; the route is registered by routes-loader, after the subdomain
|
|
210
244
|
// router, so a mapped app origin has already answered with its own.
|
|
211
245
|
nodeRobotsTxt = robotsTxt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-files.js","sourceRoot":"","sources":["../../../src/server-bootstrap/static-files.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"static-files.js","sourceRoot":"","sources":["../../../src/server-bootstrap/static-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file ai-allowance.ts
|
|
3
|
+
* @description Whose key pays for a completion, and how much of the node's key one person may use.
|
|
4
|
+
*
|
|
5
|
+
* A node can hold one OpenRouter key of its own (AIMEAT_OPENROUTER_INSTANCE_KEY) so that a person
|
|
6
|
+
* who has not brought their own can still do something on the day they arrive. That key is shared
|
|
7
|
+
* by everyone on the node, so the node — not the provider — has to decide how much of it each
|
|
8
|
+
* person may spend. The allowance record here is that decision, and it is checked BEFORE the call
|
|
9
|
+
* rather than reconciled after: a gate, not a ledger entry.
|
|
10
|
+
*
|
|
11
|
+
* This is deliberately not per-user provisioning of provider keys. OpenRouter's terms are respected
|
|
12
|
+
* as written: the node runs its own product on its own key and meters its own users, and nobody is
|
|
13
|
+
* handed raw API access. Someone who wants unmetered use brings their own key, which is the
|
|
14
|
+
* recommended path and bypasses every line of this file.
|
|
15
|
+
*
|
|
16
|
+
* Selection order, one place, no exceptions: the person's own key, then the node's key if they have
|
|
17
|
+
* allowance left, then nothing.
|
|
18
|
+
* @structure
|
|
19
|
+
* - AiKeyChoice — which key pays, and whether the allowance is spent
|
|
20
|
+
* - resolveAiKey() — the order above, with the free starter grant applied lazily
|
|
21
|
+
* - debitAllowance() / grantAllowance() / readAllowance()
|
|
22
|
+
* @usage
|
|
23
|
+
* const choice = await resolveAiKey(storage, config, gaii, prefs, apiKeyRecord?.value);
|
|
24
|
+
* if (choice.scope === 'node' && choice.exhausted) { … degrade or refuse … }
|
|
25
|
+
* @version-history
|
|
26
|
+
* v1.0.0 — 2026-08-16 — Initial. Before this the node had no key of its own at all: every
|
|
27
|
+
* completion spent one individual owner's key, so a person with none simply had no AI.
|
|
28
|
+
*/
|
|
29
|
+
import type { AimeatConfig } from '../config.js';
|
|
30
|
+
import type { Storage } from '../storage/interface.js';
|
|
31
|
+
import type { ProviderType } from './openrouter.js';
|
|
32
|
+
/**
|
|
33
|
+
* One person's standing on the node's key. Lives under the reserved `ai-usage.` prefix, so an
|
|
34
|
+
* app-grant token cannot write it: the balance decides what the node pays for, and a principal that
|
|
35
|
+
* could edit its own balance would be deciding that for itself.
|
|
36
|
+
*/
|
|
37
|
+
export interface AllowanceRecord {
|
|
38
|
+
/** Total ever granted, in USD. Free starter plus everything bought. */
|
|
39
|
+
granted_usd: number;
|
|
40
|
+
/** Total ever spent against the node's key. */
|
|
41
|
+
spent_usd: number;
|
|
42
|
+
/** Whether the free starter grant has been applied, so it is applied once and not once per read. */
|
|
43
|
+
free_granted: boolean;
|
|
44
|
+
updated_at: string;
|
|
45
|
+
}
|
|
46
|
+
export interface AiKeyChoice {
|
|
47
|
+
/** The key to call with. Undefined only for a provider that needs none (a local model server). */
|
|
48
|
+
key: string | undefined;
|
|
49
|
+
/** Which pocket it comes from. Mirrors the ledger dimension of the same name. */
|
|
50
|
+
scope: 'own' | 'node';
|
|
51
|
+
/** Node key only: the allowance is used up. The caller decides whether to degrade or refuse. */
|
|
52
|
+
exhausted: boolean;
|
|
53
|
+
/** Node key only: what is left, in USD. */
|
|
54
|
+
remainingUsd: number;
|
|
55
|
+
}
|
|
56
|
+
/** Read the allowance, applying the node's free starter grant the first time it is asked for. */
|
|
57
|
+
export declare function readAllowance(storage: Storage, config: AimeatConfig, gaii: string): Promise<AllowanceRecord>;
|
|
58
|
+
/** What is left to spend on the node's key. Never negative: a call may overshoot by its own cost. */
|
|
59
|
+
export declare function remainingOf(rec: AllowanceRecord): number;
|
|
60
|
+
/**
|
|
61
|
+
* Decide which key pays.
|
|
62
|
+
*
|
|
63
|
+
* The person's own key always wins when they have one, and no allowance applies to it: it is their
|
|
64
|
+
* money, their provider account and their rate limits, which is exactly why bringing one is the
|
|
65
|
+
* recommended path.
|
|
66
|
+
*/
|
|
67
|
+
export declare function resolveAiKey(storage: Storage, config: AimeatConfig, gaii: string, provider: ProviderType, apiKeyRecordValue: unknown): Promise<AiKeyChoice>;
|
|
68
|
+
/**
|
|
69
|
+
* Charge the node's key. Only ever called after a call that actually used it, so a person's own key
|
|
70
|
+
* never touches the balance.
|
|
71
|
+
*
|
|
72
|
+
* Best-effort by design: the call has happened and the money is spent, so a failure to record must
|
|
73
|
+
* not turn a served answer into an error. It is logged loudly, because an operator seeing this knows
|
|
74
|
+
* spend is happening that the balance will not show.
|
|
75
|
+
*/
|
|
76
|
+
export declare function debitAllowance(storage: Storage, config: AimeatConfig, gaii: string, costUsd: number): Promise<AllowanceRecord | null>;
|
|
77
|
+
/**
|
|
78
|
+
* Add to someone's allowance. The one door a purchase, an operator gift or a refund comes through,
|
|
79
|
+
* so there is a single place to look when a balance is wrong.
|
|
80
|
+
*/
|
|
81
|
+
export declare function grantAllowance(storage: Storage, config: AimeatConfig, gaii: string, usd: number, source: string): Promise<AllowanceRecord>;
|
|
82
|
+
//# sourceMappingURL=ai-allowance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-allowance.d.ts","sourceRoot":"","sources":["../../../src/services/ai-allowance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,kGAAkG;IAClG,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,iFAAiF;IACjF,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,gGAAgG;IAChG,SAAS,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;CACtB;AAQD,iGAAiG;AACjG,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GACnD,OAAO,CAAC,eAAe,CAAC,CAiB1B;AAkBD,qGAAqG;AACrG,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAExD;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,YAAY,EACtB,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,WAAW,CAAC,CAsBtB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GACpE,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAiBjC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAChF,OAAO,CAAC,eAAe,CAAC,CAW1B"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { AiCompletionError, decryptOwnerKey } from './ai-completion.js';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
const allowanceKey = (gaii) => `ai-usage.allowance.${gaii}`;
|
|
4
|
+
function empty() {
|
|
5
|
+
return { granted_usd: 0, spent_usd: 0, free_granted: false, updated_at: new Date().toISOString() };
|
|
6
|
+
}
|
|
7
|
+
/** Read the allowance, applying the node's free starter grant the first time it is asked for. */
|
|
8
|
+
export async function readAllowance(storage, config, gaii) {
|
|
9
|
+
const rec = (await storage.getMemory(gaii, allowanceKey(gaii)))?.value;
|
|
10
|
+
const current = rec ?? empty();
|
|
11
|
+
const free = Number(config.chatFreeAllowanceUsd) || 0;
|
|
12
|
+
if (free > 0 && !current.free_granted) {
|
|
13
|
+
const seeded = {
|
|
14
|
+
...current,
|
|
15
|
+
granted_usd: current.granted_usd + free,
|
|
16
|
+
free_granted: true,
|
|
17
|
+
updated_at: new Date().toISOString(),
|
|
18
|
+
};
|
|
19
|
+
await writeAllowance(storage, gaii, seeded);
|
|
20
|
+
logger.info(`[allowance] gaii=${gaii} free starter grant $${free.toFixed(2)}`);
|
|
21
|
+
return seeded;
|
|
22
|
+
}
|
|
23
|
+
return current;
|
|
24
|
+
}
|
|
25
|
+
async function writeAllowance(storage, gaii, rec) {
|
|
26
|
+
const now = new Date().toISOString();
|
|
27
|
+
const existing = await storage.getMemory(gaii, allowanceKey(gaii));
|
|
28
|
+
await storage.setMemory({
|
|
29
|
+
key: allowanceKey(gaii),
|
|
30
|
+
ownerGaii: gaii,
|
|
31
|
+
value: rec,
|
|
32
|
+
visibility: 'private',
|
|
33
|
+
tags: ['ai', 'allowance'],
|
|
34
|
+
ttlHours: null,
|
|
35
|
+
version: existing ? existing.version + 1 : 1,
|
|
36
|
+
createdAt: existing?.createdAt ?? now,
|
|
37
|
+
updatedAt: now,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/** What is left to spend on the node's key. Never negative: a call may overshoot by its own cost. */
|
|
41
|
+
export function remainingOf(rec) {
|
|
42
|
+
return Math.max(0, rec.granted_usd - rec.spent_usd);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Decide which key pays.
|
|
46
|
+
*
|
|
47
|
+
* The person's own key always wins when they have one, and no allowance applies to it: it is their
|
|
48
|
+
* money, their provider account and their rate limits, which is exactly why bringing one is the
|
|
49
|
+
* recommended path.
|
|
50
|
+
*/
|
|
51
|
+
export async function resolveAiKey(storage, config, gaii, provider, apiKeyRecordValue) {
|
|
52
|
+
const hasOwn = !!apiKeyRecordValue?.encrypted;
|
|
53
|
+
if (hasOwn) {
|
|
54
|
+
return {
|
|
55
|
+
key: decryptOwnerKey(config, apiKeyRecordValue, provider),
|
|
56
|
+
scope: 'own', exhausted: false, remainingUsd: 0,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const instanceKey = (config.openrouterInstanceKey || '').trim();
|
|
60
|
+
if (instanceKey && provider === 'openrouter') {
|
|
61
|
+
const rec = await readAllowance(storage, config, gaii);
|
|
62
|
+
const remaining = remainingOf(rec);
|
|
63
|
+
return { key: instanceKey, scope: 'node', exhausted: remaining <= 0, remainingUsd: remaining };
|
|
64
|
+
}
|
|
65
|
+
// No own key, no node key: the existing refusal, unchanged. decryptOwnerKey words it and throws
|
|
66
|
+
// for openrouter, and returns undefined for a provider that legitimately needs no key.
|
|
67
|
+
return {
|
|
68
|
+
key: decryptOwnerKey(config, apiKeyRecordValue, provider),
|
|
69
|
+
scope: 'own', exhausted: false, remainingUsd: 0,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Charge the node's key. Only ever called after a call that actually used it, so a person's own key
|
|
74
|
+
* never touches the balance.
|
|
75
|
+
*
|
|
76
|
+
* Best-effort by design: the call has happened and the money is spent, so a failure to record must
|
|
77
|
+
* not turn a served answer into an error. It is logged loudly, because an operator seeing this knows
|
|
78
|
+
* spend is happening that the balance will not show.
|
|
79
|
+
*/
|
|
80
|
+
export async function debitAllowance(storage, config, gaii, costUsd) {
|
|
81
|
+
if (!(costUsd > 0))
|
|
82
|
+
return null;
|
|
83
|
+
try {
|
|
84
|
+
const rec = await readAllowance(storage, config, gaii);
|
|
85
|
+
const next = {
|
|
86
|
+
...rec,
|
|
87
|
+
spent_usd: rec.spent_usd + costUsd,
|
|
88
|
+
updated_at: new Date().toISOString(),
|
|
89
|
+
};
|
|
90
|
+
await writeAllowance(storage, gaii, next);
|
|
91
|
+
return next;
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
logger.warn('[allowance] debit failed; the node key was used and the balance will not show it', {
|
|
95
|
+
gaii, costUsd, error: String(err),
|
|
96
|
+
});
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Add to someone's allowance. The one door a purchase, an operator gift or a refund comes through,
|
|
102
|
+
* so there is a single place to look when a balance is wrong.
|
|
103
|
+
*/
|
|
104
|
+
export async function grantAllowance(storage, config, gaii, usd, source) {
|
|
105
|
+
if (!(usd > 0))
|
|
106
|
+
throw new AiCompletionError('INVALID_BODY', 400, 'A grant must be a positive amount.');
|
|
107
|
+
const rec = await readAllowance(storage, config, gaii);
|
|
108
|
+
const next = {
|
|
109
|
+
...rec,
|
|
110
|
+
granted_usd: rec.granted_usd + usd,
|
|
111
|
+
updated_at: new Date().toISOString(),
|
|
112
|
+
};
|
|
113
|
+
await writeAllowance(storage, gaii, next);
|
|
114
|
+
logger.info(`[allowance] gaii=${gaii} granted $${usd.toFixed(2)} (${source}); balance $${remainingOf(next).toFixed(2)}`);
|
|
115
|
+
return next;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=ai-allowance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-allowance.js","sourceRoot":"","sources":["../../../src/services/ai-allowance.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,16 @@
|
|
|
19
19
|
* import { completeForOwner, AiCompletionError } from '../services/ai-completion.js';
|
|
20
20
|
* const r = await completeForOwner(storage, config, gaii, { prompt });
|
|
21
21
|
* @version-history
|
|
22
|
+
* v1.x — 2026-08-16 — Which key pays is decided in services/ai-allowance.ts: the person's own,
|
|
23
|
+
* then the node's if they have allowance left. `apiKeyScope` stops being hardcoded to 'own' —
|
|
24
|
+
* it was hardcoded because before the node had a key of its own there was only one possible
|
|
25
|
+
* answer. A node-key caller whose allowance is spent gets a free model and is TOLD so
|
|
26
|
+
* (degradedToFreeModel), rather than a dead end; an explicit model override is left alone,
|
|
27
|
+
* because a caller that named a model is not asking the node to choose.
|
|
28
|
+
* v1.x — 2026-08-16 — Model selection asks the node as well as the owner, per role, through
|
|
29
|
+
* services/ai-model-defaults.ts. A node that pays for its own inference can now name a model
|
|
30
|
+
* for a person who has chosen none. Inert until an operator sets one: with the environment
|
|
31
|
+
* untouched every branch resolves exactly as it did before.
|
|
22
32
|
* v1.8.0 — 2026-08-01 — Speech-to-text groundwork: the preflight (provider allowlist, app
|
|
23
33
|
* allowlist, key decrypt, budget) and the usage write are now exported helpers, so
|
|
24
34
|
* ai-transcription.ts runs the IDENTICAL gate instead of a second copy that could drift — this
|
|
@@ -124,6 +134,9 @@ export declare function recordAiUsage(storage: Storage, gaii: string, usage: Usa
|
|
|
124
134
|
promptTokens?: number;
|
|
125
135
|
completionTokens?: number;
|
|
126
136
|
source?: string;
|
|
137
|
+
/** Which key paid. The ledger has carried this dimension since it was written; before the node
|
|
138
|
+
* had a key of its own there was only one possible answer, so it was hardcoded. */
|
|
139
|
+
apiKeyScope?: 'own' | 'node';
|
|
127
140
|
}): Promise<UsageRecord>;
|
|
128
141
|
export interface CompleteForOwnerOptions {
|
|
129
142
|
prompt: string;
|
|
@@ -162,6 +175,19 @@ export interface CompleteForOwnerResult {
|
|
|
162
175
|
* `content`, which is what the public hash lookup is keyed on.
|
|
163
176
|
*/
|
|
164
177
|
provenance?: AiProvenanceRecordRow;
|
|
178
|
+
/**
|
|
179
|
+
* Which pocket paid, and — on the node's key — what is left. A caller showing a person their spend
|
|
180
|
+
* has to be able to tell "you spent your own money" from "you used the node's allowance", and the
|
|
181
|
+
* two are different sentences.
|
|
182
|
+
*/
|
|
183
|
+
keySource: 'own' | 'node';
|
|
184
|
+
allowanceRemainingUsd?: number;
|
|
185
|
+
/**
|
|
186
|
+
* True when the allowance was spent and the answer came from a free model instead of a refusal.
|
|
187
|
+
* Surfaced rather than hidden: a weaker answer the person was told about is an honest trade, and
|
|
188
|
+
* an unannounced one is not.
|
|
189
|
+
*/
|
|
190
|
+
degradedToFreeModel?: boolean;
|
|
165
191
|
}
|
|
166
192
|
/** Read today's usage record for an owner (used by the daily_limit constraint + the usage route). */
|
|
167
193
|
export declare function getTodayUsage(storage: Storage, gaii: string): Promise<UsageRecord>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-completion.d.ts","sourceRoot":"","sources":["../../../src/services/ai-completion.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ai-completion.d.ts","sourceRoot":"","sources":["../../../src/services/ai-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { decrypt, getEncryptionKey } from './encryption.js';
|
|
|
2
2
|
import { complete, DEFAULT_BASE_URLS } from './openrouter.js';
|
|
3
3
|
import { mintProvenance } from './ai-provenance.js';
|
|
4
4
|
import { logger } from '../utils/logger.js';
|
|
5
|
+
import { resolveModelFor } from './ai-model-defaults.js';
|
|
6
|
+
import { resolveAiKey, debitAllowance } from './ai-allowance.js';
|
|
5
7
|
import { recordUsageEvent } from './usage-metering.js';
|
|
6
8
|
/**
|
|
7
9
|
* Rough cost estimate when the provider didn't report one (LM Studio, custom).
|
|
@@ -157,8 +159,7 @@ export async function recordAiUsage(storage, gaii, usage, call) {
|
|
|
157
159
|
// reported cost or this node's estimate, and priceUsd() prefers what it is given.
|
|
158
160
|
providerCostUsd: call.costUsd,
|
|
159
161
|
source: call.source ?? 'ai-complete',
|
|
160
|
-
|
|
161
|
-
apiKeyScope: 'own',
|
|
162
|
+
apiKeyScope: call.apiKeyScope ?? 'own',
|
|
162
163
|
appId: call.appId ?? '',
|
|
163
164
|
surface: 'app',
|
|
164
165
|
});
|
|
@@ -266,33 +267,51 @@ export async function completeForOwner(storage, config, gaii, opts) {
|
|
|
266
267
|
const baseUrl = prefs.baseUrl || DEFAULT_BASE_URLS[provider];
|
|
267
268
|
assertProviderAllowed(config, baseUrl);
|
|
268
269
|
assertAppAllowed(prefs, opts.appId);
|
|
269
|
-
|
|
270
|
+
// Whose key pays is one decision and it lives in services/ai-allowance.ts: the person's own key,
|
|
271
|
+
// then the node's if they have allowance left. An own key is never metered here — it is their
|
|
272
|
+
// money and their provider account, which is the whole reason bringing one is recommended.
|
|
273
|
+
const keyChoice = await resolveAiKey(storage, config, gaii, provider, apiKeyRecord?.value);
|
|
274
|
+
const decryptedKey = keyChoice.key;
|
|
270
275
|
const usage = usageRecord?.value ?? emptyUsage();
|
|
271
276
|
const dailyBudget = assertWithinBudget(usage, prefs, opts.appId);
|
|
272
277
|
// ── Model selection ──
|
|
273
278
|
const hasImages = Array.isArray(opts.images) && opts.images.length > 0;
|
|
279
|
+
// Each role asks the owner first and the node second (services/ai-model-defaults.ts). With no
|
|
280
|
+
// instance defaults configured every branch resolves exactly as it did before that existed.
|
|
281
|
+
const roleModel = (role) => resolveModelFor(config, prefs, role);
|
|
274
282
|
let selectedModel;
|
|
275
283
|
if (typeof opts.model === 'string' && opts.model) {
|
|
276
284
|
selectedModel = opts.model;
|
|
277
285
|
}
|
|
278
|
-
else if (hasImages &&
|
|
286
|
+
else if (hasImages && roleModel('vision')) {
|
|
279
287
|
// Image inputs need a vision-capable model — the owner's default may be text-only. Use the
|
|
280
288
|
// configured visionModel (e.g. qwen-2.5-VL) for any request carrying images.
|
|
281
|
-
selectedModel =
|
|
289
|
+
selectedModel = roleModel('vision');
|
|
282
290
|
}
|
|
283
|
-
else if (opts.modelRole === 'reasoning' &&
|
|
284
|
-
selectedModel =
|
|
291
|
+
else if (opts.modelRole === 'reasoning' && roleModel('reasoning')) {
|
|
292
|
+
selectedModel = roleModel('reasoning');
|
|
285
293
|
}
|
|
286
|
-
else if (opts.modelRole === 'execution' &&
|
|
287
|
-
selectedModel =
|
|
294
|
+
else if (opts.modelRole === 'execution' && roleModel('execution')) {
|
|
295
|
+
selectedModel = roleModel('execution');
|
|
288
296
|
}
|
|
289
297
|
else {
|
|
290
|
-
selectedModel =
|
|
291
|
-
||
|
|
292
|
-
||
|
|
298
|
+
selectedModel = roleModel('chat')
|
|
299
|
+
|| roleModel('execution')
|
|
300
|
+
|| roleModel('reasoning')
|
|
293
301
|
// Vendor-neutral default: OpenRouter's free-models router (no specific vendor hardcoded).
|
|
294
302
|
|| 'openrouter/free';
|
|
295
303
|
}
|
|
304
|
+
// Allowance spent, on the node's key: answer on a free model rather than stopping, and say so.
|
|
305
|
+
// A refusal is a dead end; a weaker answer with an honest label is not. An explicit model override
|
|
306
|
+
// is left alone — a caller that named one is not asking the node to choose.
|
|
307
|
+
let degradedToFree = false;
|
|
308
|
+
if (keyChoice.scope === 'node' && keyChoice.exhausted && !opts.model) {
|
|
309
|
+
if (!config.modelFreeFallback) {
|
|
310
|
+
throw new AiCompletionError('QUOTA_EXHAUSTED', 402, 'Your allowance on this node is used up. Add more, or set your own OpenRouter key in Settings.');
|
|
311
|
+
}
|
|
312
|
+
selectedModel = config.modelFreeFallback;
|
|
313
|
+
degradedToFree = true;
|
|
314
|
+
}
|
|
296
315
|
const options = {
|
|
297
316
|
temperature: opts.temperature ?? (typeof prefs.temperature === 'number' ? prefs.temperature : undefined),
|
|
298
317
|
top_p: opts.topP ?? (typeof prefs.top_p === 'number' ? prefs.top_p : undefined),
|
|
@@ -321,8 +340,12 @@ export async function completeForOwner(storage, config, gaii, opts) {
|
|
|
321
340
|
const updated = await recordAiUsage(storage, gaii, usage, {
|
|
322
341
|
costUsd, tokens: totalTok, appId: opts.appId,
|
|
323
342
|
model: result.model, provider, promptTokens: promptTok, completionTokens: completionTok,
|
|
324
|
-
source: 'ai-complete',
|
|
343
|
+
source: 'ai-complete', apiKeyScope: keyChoice.scope,
|
|
325
344
|
});
|
|
345
|
+
// Only the node's key draws down an allowance. An own key is the person's own account.
|
|
346
|
+
const allowanceAfter = keyChoice.scope === 'node'
|
|
347
|
+
? await debitAllowance(storage, config, gaii, costUsd)
|
|
348
|
+
: null;
|
|
326
349
|
logger.info(`[ai] gaii=${gaii} app=${opts.appId || '_unknown'} model=${result.model} tokens=${totalTok} cost=$${costUsd.toFixed(4)} day_total=$${updated.total_cost_usd.toFixed(4)}`);
|
|
327
350
|
// ── Mint the provenance record (TARGET-058) ──
|
|
328
351
|
// THE mint point for an observed generation. The node just watched a model produce these exact
|
|
@@ -379,6 +402,11 @@ export async function completeForOwner(storage, config, gaii, opts) {
|
|
|
379
402
|
remainingUsd: Math.max(0, dailyBudget - updated.total_cost_usd),
|
|
380
403
|
},
|
|
381
404
|
provenance,
|
|
405
|
+
keySource: keyChoice.scope,
|
|
406
|
+
...(keyChoice.scope === 'node'
|
|
407
|
+
? { allowanceRemainingUsd: allowanceAfter ? Math.max(0, allowanceAfter.granted_usd - allowanceAfter.spent_usd) : keyChoice.remainingUsd }
|
|
408
|
+
: {}),
|
|
409
|
+
...(degradedToFree ? { degradedToFreeModel: true } : {}),
|
|
382
410
|
};
|
|
383
411
|
}
|
|
384
412
|
//# sourceMappingURL=ai-completion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-completion.js","sourceRoot":"","sources":["../../../src/services/ai-completion.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-completion.js","sourceRoot":"","sources":["../../../src/services/ai-completion.ts"],"names":[],"mappings":"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"}
|