aimeat 2.1.0 → 2.2.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 +9 -4
- package/dist/locales/en.json +28 -0
- package/dist/locales/fi.json +28 -0
- package/dist/public/cortex-bundled/aimeat-charts.js +158 -10
- package/dist/public/cortex-bundled/aimeat-charts.yaml +1 -1
- package/dist/public/cortex-bundled/aimeat-dag.js +515 -173
- package/dist/public/cortex-bundled/aimeat-dag.yaml +1 -1
- package/dist/public/cortex-bundled/aimeat-i18n.js +6 -1
- package/dist/public/cortex-bundled/aimeat-i18n.yaml +1 -1
- package/dist/public/cortex-bundled/aimeat-surface.js +577 -0
- package/dist/public/cortex-bundled/aimeat-surface.yaml +107 -0
- package/dist/public/cortex-bundled/aimeat-viewport.js +405 -0
- package/dist/public/cortex-bundled/aimeat-viewport.yaml +100 -0
- package/dist/public/css/views/inbox.css +1 -1
- package/dist/public/css/views/profile.css +9 -0
- package/dist/public/lib/VENDORED.md +6 -3
- package/dist/public/lib/aimeat-daisyui-bridge.css +39 -2
- package/dist/public/lib/aimeat-theme.css +538 -0
- package/dist/public/lib/fonts/LICENSE.md +11 -4
- package/dist/public/lib/fonts/fraunces-var-latin-ext.woff2 +0 -0
- package/dist/public/lib/fonts/fraunces-var-latin.woff2 +0 -0
- package/dist/public/lib/fonts/inter-var-latin-ext.woff2 +0 -0
- package/dist/public/lib/fonts/inter-var-latin.woff2 +0 -0
- package/dist/public/lib/fonts/jetbrains-mono-var-latin-ext.woff2 +0 -0
- package/dist/public/lib/fonts/jetbrains-mono-var-latin.woff2 +0 -0
- package/dist/public/lib/fonts/space-grotesk-var-latin-ext.woff2 +0 -0
- package/dist/public/lib/fonts/space-grotesk-var-latin.woff2 +0 -0
- package/dist/public/lib/samples/theme-check.html +92 -0
- package/dist/public/lib/samples/themes-boot.js +20 -0
- package/dist/public/lib/samples/themes.html +154 -0
- package/dist/public/lib/samples/themes.js +60 -0
- package/dist/public/views/profile/access-tab/connected-apps.js +81 -5
- package/dist/public/views/profile/extensions-tab.maturity.js +4 -1
- package/dist/public/views/profile/inbox-tab/components.js +17 -1
- package/dist/public/views/profile/inbox-tab/use-thread-ux.js +29 -2
- package/dist/public/views/profile/libraries-tab.js +10 -2
- package/dist/public/views/profile/wallet-tab.js +64 -0
- package/dist/scripts/check-openapi.d.ts +2 -0
- package/dist/scripts/check-openapi.d.ts.map +1 -0
- package/dist/scripts/check-openapi.js +139 -0
- package/dist/scripts/check-openapi.js.map +1 -0
- package/dist/scripts/embed-viewport.d.ts +23 -0
- package/dist/scripts/embed-viewport.d.ts.map +1 -0
- package/dist/scripts/embed-viewport.js +116 -0
- package/dist/scripts/embed-viewport.js.map +1 -0
- package/dist/src/auth/sse-domain-scopes.d.ts +50 -0
- package/dist/src/auth/sse-domain-scopes.d.ts.map +1 -0
- package/dist/src/auth/sse-domain-scopes.js +111 -0
- package/dist/src/auth/sse-domain-scopes.js.map +1 -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 +4 -1
- package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/core.js +14 -3
- package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/workspaces.d.ts +3 -0
- package/dist/src/cli/connect/mcp/tools/workspaces.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/workspaces.js +4 -2
- package/dist/src/cli/connect/mcp/tools/workspaces.js.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-core.js +13 -1
- package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
- package/dist/src/commerce/__tests__/x402-registry.test.d.ts +2 -0
- package/dist/src/commerce/__tests__/x402-registry.test.d.ts.map +1 -0
- package/dist/src/commerce/__tests__/x402-registry.test.js +105 -0
- package/dist/src/commerce/__tests__/x402-registry.test.js.map +1 -0
- package/dist/src/commerce/evm-address.d.ts +21 -0
- package/dist/src/commerce/evm-address.d.ts.map +1 -0
- package/dist/src/commerce/evm-address.js +94 -0
- package/dist/src/commerce/evm-address.js.map +1 -0
- package/dist/src/commerce/money.d.ts +18 -5
- package/dist/src/commerce/money.d.ts.map +1 -1
- package/dist/src/commerce/money.js +27 -6
- package/dist/src/commerce/money.js.map +1 -1
- package/dist/src/commerce/x402-facilitator.d.ts +64 -13
- package/dist/src/commerce/x402-facilitator.d.ts.map +1 -1
- package/dist/src/commerce/x402-facilitator.js +71 -19
- package/dist/src/commerce/x402-facilitator.js.map +1 -1
- package/dist/src/commerce/x402-handler.d.ts +13 -7
- package/dist/src/commerce/x402-handler.d.ts.map +1 -1
- package/dist/src/commerce/x402-handler.js +23 -10
- package/dist/src/commerce/x402-handler.js.map +1 -1
- package/dist/src/commerce/x402.d.ts +11 -6
- package/dist/src/commerce/x402.d.ts.map +1 -1
- package/dist/src/commerce/x402.js +10 -7
- package/dist/src/commerce/x402.js.map +1 -1
- package/dist/src/config-types.d.ts +12 -0
- package/dist/src/config-types.d.ts.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +8 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/data/app-templates/shells.d.ts +11 -3
- package/dist/src/data/app-templates/shells.d.ts.map +1 -1
- package/dist/src/data/app-templates/shells.js +87 -6
- package/dist/src/data/app-templates/shells.js.map +1 -1
- package/dist/src/data/app-templates.js +2 -2
- package/dist/src/data/app-templates.js.map +1 -1
- package/dist/src/data/library-packs/cortex.d.ts.map +1 -1
- package/dist/src/data/library-packs/cortex.js +108 -5
- package/dist/src/data/library-packs/cortex.js.map +1 -1
- package/dist/src/data/library-packs/sdk.d.ts.map +1 -1
- package/dist/src/data/library-packs/sdk.js +32 -8
- 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 +83 -6
- package/dist/src/data/library-packs/vendored.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +478 -19
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/mcp/agent-tasks.d.ts +4 -0
- package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
- package/dist/src/mcp/agent-tasks.js +20 -2
- package/dist/src/mcp/agent-tasks.js.map +1 -1
- package/dist/src/mcp/capabilities.d.ts +7 -1
- package/dist/src/mcp/capabilities.d.ts.map +1 -1
- package/dist/src/mcp/capabilities.js +5 -2
- package/dist/src/mcp/capabilities.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/commerce.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/commerce.js +4 -2
- package/dist/src/mcp/catalog/definitions/commerce.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.js +4 -3
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +1 -1
- 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 +3 -2
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js.map +1 -1
- package/dist/src/mcp/catalog/output-schemas.d.ts +6 -1
- package/dist/src/mcp/catalog/output-schemas.d.ts.map +1 -1
- package/dist/src/mcp/catalog/output-schemas.js +6 -1
- package/dist/src/mcp/catalog/output-schemas.js.map +1 -1
- package/dist/src/mcp/commerce.d.ts.map +1 -1
- package/dist/src/mcp/commerce.js +15 -3
- package/dist/src/mcp/commerce.js.map +1 -1
- package/dist/src/mcp/core-storage.d.ts +23 -0
- package/dist/src/mcp/core-storage.d.ts.map +1 -0
- package/dist/src/mcp/core-storage.js +157 -0
- package/dist/src/mcp/core-storage.js.map +1 -0
- package/dist/src/mcp/core.d.ts +16 -0
- package/dist/src/mcp/core.d.ts.map +1 -1
- package/dist/src/mcp/core.js +75 -119
- package/dist/src/mcp/core.js.map +1 -1
- package/dist/src/mcp/dm-messages.d.ts +4 -0
- package/dist/src/mcp/dm-messages.d.ts.map +1 -1
- package/dist/src/mcp/dm-messages.js +43 -2
- package/dist/src/mcp/dm-messages.js.map +1 -1
- package/dist/src/mcp/exchange.d.ts.map +1 -1
- package/dist/src/mcp/exchange.js +3 -2
- package/dist/src/mcp/exchange.js.map +1 -1
- package/dist/src/mcp/extensions.d.ts.map +1 -1
- package/dist/src/mcp/extensions.js +6 -2
- package/dist/src/mcp/extensions.js.map +1 -1
- package/dist/src/mcp/index.d.ts +5 -0
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +23 -4
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/mcp/memory-namespace-hints.d.ts +33 -0
- package/dist/src/mcp/memory-namespace-hints.d.ts.map +1 -0
- package/dist/src/mcp/memory-namespace-hints.js +60 -0
- package/dist/src/mcp/memory-namespace-hints.js.map +1 -0
- package/dist/src/mcp/workspaces.d.ts +5 -0
- package/dist/src/mcp/workspaces.d.ts.map +1 -1
- package/dist/src/mcp/workspaces.js +5 -3
- package/dist/src/mcp/workspaces.js.map +1 -1
- package/dist/src/models/agent-task-schemas.d.ts +25 -3
- package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-task-schemas.js +16 -0
- package/dist/src/models/agent-task-schemas.js.map +1 -1
- package/dist/src/models/app-tool-schemas.d.ts +518 -1
- package/dist/src/models/app-tool-schemas.d.ts.map +1 -1
- package/dist/src/models/app-tool-schemas.js +53 -1
- package/dist/src/models/app-tool-schemas.js.map +1 -1
- package/dist/src/models/odps-schemas.d.ts +305 -0
- package/dist/src/models/odps-schemas.d.ts.map +1 -0
- package/dist/src/models/odps-schemas.js +182 -0
- package/dist/src/models/odps-schemas.js.map +1 -0
- package/dist/src/models/offer-schemas.d.ts +357 -2
- package/dist/src/models/offer-schemas.d.ts.map +1 -1
- package/dist/src/models/offer-schemas.js +37 -0
- package/dist/src/models/offer-schemas.js.map +1 -1
- package/dist/src/models/schemas.d.ts +6 -3
- package/dist/src/models/schemas.d.ts.map +1 -1
- package/dist/src/models/schemas.js +10 -1
- package/dist/src/models/schemas.js.map +1 -1
- package/dist/src/models/webhook-schemas.d.ts +8 -8
- package/dist/src/routes/agent-tasks/create-read.d.ts +4 -0
- package/dist/src/routes/agent-tasks/create-read.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks/create-read.js +20 -1
- package/dist/src/routes/agent-tasks/create-read.js.map +1 -1
- package/dist/src/routes/agent-tasks/lifecycle.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks/lifecycle.js +10 -0
- package/dist/src/routes/agent-tasks/lifecycle.js.map +1 -1
- package/dist/src/routes/agents/offers.d.ts +2 -0
- package/dist/src/routes/agents/offers.d.ts.map +1 -1
- package/dist/src/routes/agents/offers.js +0 -0
- package/dist/src/routes/agents/offers.js.map +1 -1
- package/dist/src/routes/app-grants.d.ts +6 -0
- package/dist/src/routes/app-grants.d.ts.map +1 -1
- package/dist/src/routes/app-grants.js +55 -25
- package/dist/src/routes/app-grants.js.map +1 -1
- package/dist/src/routes/apps/drafts.d.ts +3 -0
- package/dist/src/routes/apps/drafts.d.ts.map +1 -1
- package/dist/src/routes/apps/drafts.js +63 -1
- package/dist/src/routes/apps/drafts.js.map +1 -1
- package/dist/src/routes/apps/publish.d.ts +2 -0
- package/dist/src/routes/apps/publish.d.ts.map +1 -1
- package/dist/src/routes/apps/publish.js +17 -2
- package/dist/src/routes/apps/publish.js.map +1 -1
- package/dist/src/routes/commerce.d.ts.map +1 -1
- package/dist/src/routes/commerce.js +122 -2
- package/dist/src/routes/commerce.js.map +1 -1
- package/dist/src/routes/exchange-market.d.ts +6 -2
- package/dist/src/routes/exchange-market.d.ts.map +1 -1
- package/dist/src/routes/exchange-market.js +154 -28
- package/dist/src/routes/exchange-market.js.map +1 -1
- package/dist/src/routes/exchange.d.ts.map +1 -1
- package/dist/src/routes/exchange.js +5 -2
- package/dist/src/routes/exchange.js.map +1 -1
- package/dist/src/routes/extensions/actions.d.ts.map +1 -1
- package/dist/src/routes/extensions/actions.js +18 -0
- package/dist/src/routes/extensions/actions.js.map +1 -1
- package/dist/src/routes/extensions/crud.d.ts.map +1 -1
- package/dist/src/routes/extensions/crud.js +36 -3
- package/dist/src/routes/extensions/crud.js.map +1 -1
- package/dist/src/routes/extensions/entitlement-gate.d.ts.map +1 -1
- package/dist/src/routes/extensions/entitlement-gate.js +13 -0
- package/dist/src/routes/extensions/entitlement-gate.js.map +1 -1
- package/dist/src/routes/extensions/manifest.d.ts +6 -0
- package/dist/src/routes/extensions/manifest.d.ts.map +1 -1
- package/dist/src/routes/extensions/manifest.js +68 -1
- package/dist/src/routes/extensions/manifest.js.map +1 -1
- package/dist/src/routes/extensions/pacing.d.ts +31 -0
- package/dist/src/routes/extensions/pacing.d.ts.map +1 -0
- package/dist/src/routes/extensions/pacing.js +73 -0
- package/dist/src/routes/extensions/pacing.js.map +1 -0
- package/dist/src/routes/extensions/paywall.d.ts.map +1 -1
- package/dist/src/routes/extensions/paywall.js +17 -17
- package/dist/src/routes/extensions/paywall.js.map +1 -1
- package/dist/src/routes/memory/crud.d.ts.map +1 -1
- package/dist/src/routes/memory/crud.js +10 -0
- package/dist/src/routes/memory/crud.js.map +1 -1
- package/dist/src/routes/organisms/crud.d.ts +3 -0
- package/dist/src/routes/organisms/crud.d.ts.map +1 -1
- package/dist/src/routes/organisms/crud.js +5 -2
- package/dist/src/routes/organisms/crud.js.map +1 -1
- package/dist/src/routes/organisms/workspace-read.d.ts.map +1 -1
- package/dist/src/routes/organisms/workspace-read.js +7 -2
- package/dist/src/routes/organisms/workspace-read.js.map +1 -1
- package/dist/src/routes/public-stats.d.ts +7 -0
- package/dist/src/routes/public-stats.d.ts.map +1 -1
- package/dist/src/routes/public-stats.js +28 -7
- package/dist/src/routes/public-stats.js.map +1 -1
- package/dist/src/routes/sse.d.ts +7 -0
- package/dist/src/routes/sse.d.ts.map +1 -1
- package/dist/src/routes/sse.js +36 -6
- package/dist/src/routes/sse.js.map +1 -1
- package/dist/src/routes/storage-files.d.ts +11 -0
- package/dist/src/routes/storage-files.d.ts.map +1 -1
- package/dist/src/routes/storage-files.js +58 -51
- package/dist/src/routes/storage-files.js.map +1 -1
- package/dist/src/routes/subdomains.d.ts +4 -0
- package/dist/src/routes/subdomains.d.ts.map +1 -1
- package/dist/src/routes/subdomains.js +42 -5
- package/dist/src/routes/subdomains.js.map +1 -1
- package/dist/src/routes/upload.d.ts +11 -0
- package/dist/src/routes/upload.d.ts.map +1 -1
- package/dist/src/routes/upload.js +108 -28
- package/dist/src/routes/upload.js.map +1 -1
- package/dist/src/routes/webmcp.d.ts.map +1 -1
- package/dist/src/routes/webmcp.js +4 -0
- package/dist/src/routes/webmcp.js.map +1 -1
- package/dist/src/schemas/knowledge-package.d.ts +1 -1
- package/dist/src/server-bootstrap/static-files.d.ts +4 -0
- package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
- package/dist/src/server-bootstrap/static-files.js +11 -0
- package/dist/src/server-bootstrap/static-files.js.map +1 -1
- package/dist/src/services/build-app-prompt.d.ts +19 -0
- package/dist/src/services/build-app-prompt.d.ts.map +1 -1
- package/dist/src/services/build-app-prompt.js +97 -11
- package/dist/src/services/build-app-prompt.js.map +1 -1
- package/dist/src/services/call-timing.d.ts +51 -0
- package/dist/src/services/call-timing.d.ts.map +1 -0
- package/dist/src/services/call-timing.js +91 -0
- package/dist/src/services/call-timing.js.map +1 -0
- package/dist/src/services/capability-invoke.d.ts +2 -0
- package/dist/src/services/capability-invoke.d.ts.map +1 -1
- package/dist/src/services/capability-invoke.js +10 -0
- package/dist/src/services/capability-invoke.js.map +1 -1
- package/dist/src/services/config-schema.d.ts.map +1 -1
- package/dist/src/services/config-schema.js +6 -0
- package/dist/src/services/config-schema.js.map +1 -1
- package/dist/src/services/draft-token.d.ts +22 -2
- package/dist/src/services/draft-token.d.ts.map +1 -1
- package/dist/src/services/draft-token.js +52 -3
- package/dist/src/services/draft-token.js.map +1 -1
- package/dist/src/services/exchange-market.d.ts +41 -8
- package/dist/src/services/exchange-market.d.ts.map +1 -1
- package/dist/src/services/exchange-market.js +24 -2
- package/dist/src/services/exchange-market.js.map +1 -1
- package/dist/src/services/exchange-odps.d.ts +58 -0
- package/dist/src/services/exchange-odps.d.ts.map +1 -0
- package/dist/src/services/exchange-odps.js +400 -0
- package/dist/src/services/exchange-odps.js.map +1 -0
- package/dist/src/services/exchange-projection.d.ts +61 -0
- package/dist/src/services/exchange-projection.d.ts.map +1 -0
- package/dist/src/services/exchange-projection.js +504 -0
- package/dist/src/services/exchange-projection.js.map +1 -0
- package/dist/src/services/exchange-proposals.d.ts.map +1 -1
- package/dist/src/services/exchange-proposals.js +2 -0
- package/dist/src/services/exchange-proposals.js.map +1 -1
- package/dist/src/services/extension-files.d.ts +64 -0
- package/dist/src/services/extension-files.d.ts.map +1 -0
- package/dist/src/services/extension-files.js +88 -0
- package/dist/src/services/extension-files.js.map +1 -0
- package/dist/src/services/extension-runtime.d.ts +33 -0
- package/dist/src/services/extension-runtime.d.ts.map +1 -1
- package/dist/src/services/extension-runtime.js +52 -0
- package/dist/src/services/extension-runtime.js.map +1 -1
- package/dist/src/services/file-refs.d.ts +105 -0
- package/dist/src/services/file-refs.d.ts.map +1 -0
- package/dist/src/services/file-refs.js +106 -0
- package/dist/src/services/file-refs.js.map +1 -0
- package/dist/src/services/metered-entitlements.d.ts +7 -0
- package/dist/src/services/metered-entitlements.d.ts.map +1 -1
- package/dist/src/services/metered-entitlements.js +4 -0
- package/dist/src/services/metered-entitlements.js.map +1 -1
- package/dist/src/services/owner-memory.d.ts +14 -1
- package/dist/src/services/owner-memory.d.ts.map +1 -1
- package/dist/src/services/owner-memory.js +8 -14
- package/dist/src/services/owner-memory.js.map +1 -1
- package/dist/src/services/task-files.d.ts +51 -0
- package/dist/src/services/task-files.d.ts.map +1 -0
- package/dist/src/services/task-files.js +58 -0
- package/dist/src/services/task-files.js.map +1 -0
- package/dist/src/services/upload-token.d.ts +29 -0
- package/dist/src/services/upload-token.d.ts.map +1 -1
- package/dist/src/services/upload-token.js +37 -0
- package/dist/src/services/upload-token.js.map +1 -1
- package/dist/src/services/upload-zip.d.ts +2 -0
- package/dist/src/services/upload-zip.d.ts.map +1 -1
- package/dist/src/services/upload-zip.js +5 -1
- package/dist/src/services/upload-zip.js.map +1 -1
- package/dist/src/services/workspace-meta.d.ts +15 -0
- package/dist/src/services/workspace-meta.d.ts.map +1 -1
- package/dist/src/services/workspace-meta.js +17 -0
- package/dist/src/services/workspace-meta.js.map +1 -1
- package/dist/src/services/workspace-provision.d.ts +3 -0
- package/dist/src/services/workspace-provision.d.ts.map +1 -1
- package/dist/src/services/workspace-provision.js +5 -3
- package/dist/src/services/workspace-provision.js.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 +10 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/memory.d.ts +2 -0
- package/dist/src/storage/providers/postgres-kysely/methods/memory.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/memory.js +12 -1
- package/dist/src/storage/providers/postgres-kysely/methods/memory.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.js +5 -1
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/migrations/0012_unique_live_app_grant.sql +29 -0
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts +3 -0
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/apps.js +7 -0
- package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/governance.d.ts +1 -0
- package/dist/src/storage/providers/sqlite/methods/governance.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/governance.js +4 -1
- package/dist/src/storage/providers/sqlite/methods/governance.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/owner.d.ts +5 -0
- package/dist/src/storage/providers/sqlite/methods/owner.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/owner.js +8 -0
- package/dist/src/storage/providers/sqlite/methods/owner.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts +3 -0
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +20 -0
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/app-grant.repository.d.ts +9 -1
- package/dist/src/storage/repositories/app-grant.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/memory.repository.d.ts +14 -0
- package/dist/src/storage/repositories/memory.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories-impl/memory-repository.d.ts +8 -1
- package/dist/src/storage/repositories-impl/memory-repository.d.ts.map +1 -1
- package/dist/src/storage/repositories-impl/memory-repository.js +15 -4
- package/dist/src/storage/repositories-impl/memory-repository.js.map +1 -1
- package/dist/src/storage/types/agents-messaging.d.ts +19 -0
- package/dist/src/storage/types/agents-messaging.d.ts.map +1 -1
- package/dist/src/storage/types/agents-messaging.js.map +1 -1
- package/dist/src/storage/types/organisms-federation.d.ts +29 -0
- package/dist/src/storage/types/organisms-federation.d.ts.map +1 -1
- package/dist/src/utils/app-badge.d.ts.map +1 -1
- package/dist/src/utils/app-badge.js +7 -3
- package/dist/src/utils/app-badge.js.map +1 -1
- package/dist/static/app-catalog/_template.html +6 -5
- package/dist/static/app-catalog/js/cortex.js +3 -1
- package/dist/static/app-catalog/js/detail.js +411 -36
- package/dist/static/app-catalog/js/i18n-data.js +279 -3
- package/dist/static/app-catalog/js/main.js +28 -37
- package/dist/static/app-catalog/js/monetize.js +204 -16
- package/dist/static/app-catalog/js/odps.js +489 -0
- package/dist/static/app-catalog/js/render.js +3 -0
- package/dist/static/app-catalog/js/workcopy.js +198 -0
- package/dist/static/app-catalog/styles/app-catalog.css +60 -0
- package/dist/static/app-catalog.html +1450 -137
- package/dist/static/sdk-libs/agents/index.js +45 -7
- package/dist/static/sdk-libs/auth/cluster.js +97 -0
- package/dist/static/sdk-libs/auth/index.js +25 -1
- package/dist/static/sdk-libs/auth/locale.js +151 -0
- package/dist/static/sdk-libs/auth/modal.js +11 -2
- package/dist/static/sdk-libs/auth/palette.js +172 -0
- package/dist/static/sdk-libs/auth/pill.js +37 -6
- package/dist/static/sdk-libs/auth/theme.js +61 -20
- package/dist/static/sdk-libs/data/index.js +70 -8
- package/dist/static/sdk-libs/dist/aimeat-agents.js +41 -8
- package/dist/static/sdk-libs/dist/aimeat-auth.js +422 -21
- package/dist/static/sdk-libs/dist/aimeat-data.js +50 -8
- package/dist/static/sdk-libs/dist/aimeat-live.js +54 -2
- package/dist/static/sdk-libs/dist/aimeat-markdown.js +32 -1
- package/dist/static/sdk-libs/live/index.js +71 -4
- package/dist/static/sdk-libs/markdown/index.js +49 -1
- package/package.json +6 -2
|
@@ -209,6 +209,11 @@
|
|
|
209
209
|
}
|
|
210
210
|
var AIMEAT_THEME_KEY = "aimeat-theme";
|
|
211
211
|
function aimeatReadTheme() {
|
|
212
|
+
try {
|
|
213
|
+
var u = new URLSearchParams(location.search).get("mode");
|
|
214
|
+
if (u === "light" || u === "dark") return u;
|
|
215
|
+
} catch {
|
|
216
|
+
}
|
|
212
217
|
try {
|
|
213
218
|
var s = localStorage.getItem(AIMEAT_THEME_KEY);
|
|
214
219
|
if (s === "light" || s === "dark") return s;
|
|
@@ -229,22 +234,40 @@
|
|
|
229
234
|
} catch {
|
|
230
235
|
}
|
|
231
236
|
}
|
|
232
|
-
function
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
237
|
+
function aimeatRestoreMode() {
|
|
238
|
+
try {
|
|
239
|
+
var u = new URLSearchParams(location.search).get("mode");
|
|
240
|
+
if (u === "light" || u === "dark") document.documentElement.dataset.theme = u;
|
|
241
|
+
} catch {
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
function modeSwitchHtml(i) {
|
|
245
|
+
var cur = aimeatReadTheme();
|
|
246
|
+
var light = i.lightMode || "Light mode";
|
|
247
|
+
var dark = i.darkMode || "Dark mode";
|
|
248
|
+
return '<span id="aimeat-mode-switch" class="aimeat-seg" role="group" aria-label="' + escHtml(i.themeLabel || "Theme") + '"><button type="button" data-mode="light" aria-pressed="' + (cur === "light") + '" title="' + escHtml(light) + '" aria-label="' + escHtml(light) + '"><span class="seg-ico" aria-hidden="true">☀</span></button><button type="button" data-mode="dark" aria-pressed="' + (cur === "dark") + '" title="' + escHtml(dark) + '" aria-label="' + escHtml(dark) + '"><span class="seg-ico" aria-hidden="true">☾</span></button></span>';
|
|
249
|
+
}
|
|
250
|
+
function wireModeSwitch(container) {
|
|
251
|
+
var root = container.querySelector("#aimeat-mode-switch");
|
|
252
|
+
if (!root) return;
|
|
253
|
+
function sync(cur) {
|
|
254
|
+
root.querySelectorAll("button[data-mode]").forEach(function(b) {
|
|
255
|
+
b.setAttribute("aria-pressed", String(b.getAttribute("data-mode") === cur));
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
root.querySelectorAll("button[data-mode]").forEach(function(b) {
|
|
259
|
+
b.addEventListener("click", function() {
|
|
260
|
+
var m = b.getAttribute("data-mode");
|
|
261
|
+
aimeatApplyTheme(m);
|
|
262
|
+
sync(m);
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
window.addEventListener("aimeat-theme-change", function(ev) {
|
|
266
|
+
var e = (
|
|
267
|
+
/** @type {CustomEvent} */
|
|
268
|
+
ev
|
|
269
|
+
);
|
|
270
|
+
if (e && e.detail && e.detail.theme) sync(e.detail.theme);
|
|
248
271
|
});
|
|
249
272
|
}
|
|
250
273
|
function ensureAuthPillStyles() {
|
|
@@ -384,7 +407,14 @@
|
|
|
384
407
|
render(true);
|
|
385
408
|
loadModalI18n(lang).then(function(fresh) {
|
|
386
409
|
if (!fresh || !Object.keys(fresh).length) return;
|
|
387
|
-
|
|
410
|
+
var differs = false;
|
|
411
|
+
for (var k in fresh) {
|
|
412
|
+
if (Object.prototype.hasOwnProperty.call(fresh, k) && fresh[k] !== i[k]) {
|
|
413
|
+
differs = true;
|
|
414
|
+
break;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
if (!differs) return;
|
|
388
418
|
var vals = captureInputs();
|
|
389
419
|
i = fresh;
|
|
390
420
|
render(false);
|
|
@@ -757,6 +787,332 @@
|
|
|
757
787
|
}
|
|
758
788
|
}
|
|
759
789
|
|
|
790
|
+
// src/static/sdk-libs/auth/cluster.js
|
|
791
|
+
function ensureClusterStyles() {
|
|
792
|
+
if (document.getElementById("aimeat-cluster-css")) return;
|
|
793
|
+
var st = document.createElement("style");
|
|
794
|
+
st.id = "aimeat-cluster-css";
|
|
795
|
+
st.textContent = [
|
|
796
|
+
/* The cluster row. Inherits text colour from its host (gold pill or page header). */
|
|
797
|
+
".aimeat-ctl{display:inline-flex;align-items:center;gap:6px}",
|
|
798
|
+
/* Segmented group: one bordered pill, every option a button. */
|
|
799
|
+
".aimeat-seg{display:inline-flex;align-items:stretch;height:30px;flex:0 0 auto;",
|
|
800
|
+
"border:1px solid color-mix(in oklab,currentColor 38%,transparent);border-radius:999px;",
|
|
801
|
+
"overflow:hidden;background:color-mix(in oklab,currentColor 5%,transparent)}",
|
|
802
|
+
".aimeat-seg button{appearance:none;border:0;background:transparent;color:currentColor;",
|
|
803
|
+
'opacity:.6;font:700 11px/1 "Inter","Segoe UI",system-ui,sans-serif;letter-spacing:.4px;',
|
|
804
|
+
"padding:0 10px;margin:0;cursor:pointer;display:inline-flex;align-items:center;gap:4px;",
|
|
805
|
+
"transition:opacity var(--motion-fast,120ms) ease,background var(--motion-fast,120ms) ease}",
|
|
806
|
+
".aimeat-seg button:hover{opacity:.9}",
|
|
807
|
+
".aimeat-seg button:focus-visible{outline:2px solid currentColor;outline-offset:-2px;opacity:1}",
|
|
808
|
+
'.aimeat-seg button[aria-pressed="true"]{opacity:1;',
|
|
809
|
+
"background:color-mix(in oklab,currentColor 16%,transparent)}",
|
|
810
|
+
".aimeat-seg button+button{border-left:1px solid color-mix(in oklab,currentColor 22%,transparent)}",
|
|
811
|
+
".aimeat-seg .seg-ico{font-size:13px;line-height:1}",
|
|
812
|
+
/* Popover trigger (palette picker; language picker when 4+ languages). */
|
|
813
|
+
".aimeat-pop-wrap{position:relative;display:inline-flex;flex:0 0 auto}",
|
|
814
|
+
".aimeat-pop-btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;",
|
|
815
|
+
"gap:5px;height:30px;min-width:30px;padding:0 7px;background:color-mix(in oklab,currentColor 5%,transparent);",
|
|
816
|
+
"border:1px solid color-mix(in oklab,currentColor 38%,transparent);border-radius:999px;",
|
|
817
|
+
'cursor:pointer;color:currentColor;font:700 11px/1 "Inter","Segoe UI",system-ui,sans-serif;letter-spacing:.4px;',
|
|
818
|
+
"transition:background var(--motion-fast,120ms) ease}",
|
|
819
|
+
".aimeat-pop-btn:hover{background:color-mix(in oklab,currentColor 12%,transparent)}",
|
|
820
|
+
".aimeat-pop-btn:focus-visible{outline:2px solid currentColor;outline-offset:-2px}",
|
|
821
|
+
/* The popover panel: a real themed surface (not the host pill), so swatches read true. */
|
|
822
|
+
".aimeat-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:1200;display:none;",
|
|
823
|
+
"background:var(--color-base-200,#ffffff);color:var(--color-base-content,#1a1a2e);",
|
|
824
|
+
"border:1px solid var(--color-base-300,#d9dbe1);border-radius:var(--radius-box,14px);",
|
|
825
|
+
"box-shadow:var(--elev-pop,0 4px 10px rgb(15 18 25 / .1),0 18px 44px rgb(15 18 25 / .16));",
|
|
826
|
+
"padding:8px;width:max-content;max-width:calc(100vw - 24px)}",
|
|
827
|
+
".aimeat-pop-wrap.aimeat-open .aimeat-pop{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}",
|
|
828
|
+
".aimeat-pop.aimeat-pop-list{grid-template-columns:minmax(0,1fr)}",
|
|
829
|
+
".aimeat-pop button{appearance:none;display:flex;align-items:center;gap:8px;padding:7px 9px;margin:0;",
|
|
830
|
+
"background:transparent;border:1px solid transparent;border-radius:calc(var(--radius-box,14px) - 6px);",
|
|
831
|
+
'cursor:pointer;color:inherit;font:600 12px/1.1 "Inter","Segoe UI",system-ui,sans-serif;text-align:left;',
|
|
832
|
+
"transition:background var(--motion-fast,120ms) ease}",
|
|
833
|
+
".aimeat-pop button:hover{background:color-mix(in oklab,currentColor 8%,transparent)}",
|
|
834
|
+
".aimeat-pop button:focus-visible{outline:2px solid var(--color-primary,#e8564a);outline-offset:-2px}",
|
|
835
|
+
'.aimeat-pop button[aria-pressed="true"]{border-color:var(--color-primary,#e8564a)}',
|
|
836
|
+
/* Palette swatch chips: page/card/accent of the palette IN THE CURRENT MODE. The three
|
|
837
|
+
colours are data (they vary per palette), so they arrive as inline background values on
|
|
838
|
+
these spans — layout and everything else stays here. */
|
|
839
|
+
".aimeat-pal-chip{position:relative;flex:0 0 auto;width:26px;height:20px;border-radius:5px;",
|
|
840
|
+
"border:1px solid color-mix(in oklab,currentColor 25%,transparent);overflow:hidden}",
|
|
841
|
+
".aimeat-pal-chip .pc-card{position:absolute;inset:5px 5px 3px 5px;border-radius:3px}",
|
|
842
|
+
".aimeat-pal-chip .pc-acc{position:absolute;right:3px;bottom:3px;width:7px;height:7px;border-radius:50%}",
|
|
843
|
+
/* The trigger's miniature: the active palette's accent as a dot. */
|
|
844
|
+
".aimeat-pal-dot{width:12px;height:12px;border-radius:50%;flex:0 0 auto;",
|
|
845
|
+
"border:1px solid color-mix(in oklab,currentColor 30%,transparent)}"
|
|
846
|
+
].join("");
|
|
847
|
+
(document.head || document.documentElement).appendChild(st);
|
|
848
|
+
}
|
|
849
|
+
function clampPopover(pop) {
|
|
850
|
+
pop.style.transform = "";
|
|
851
|
+
var r = pop.getBoundingClientRect();
|
|
852
|
+
var pad = 12;
|
|
853
|
+
var shift = 0;
|
|
854
|
+
if (r.left < pad) shift = pad - r.left;
|
|
855
|
+
else if (r.right > window.innerWidth - pad) shift = window.innerWidth - pad - r.right;
|
|
856
|
+
if (shift) pop.style.transform = "translateX(" + Math.round(shift) + "px)";
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
// src/static/sdk-libs/auth/locale.js
|
|
860
|
+
var AIMEAT_LANG_KEY = "aimeat-lang";
|
|
861
|
+
function readLocales(opts) {
|
|
862
|
+
var list = opts && Array.isArray(opts.locales) ? opts.locales : null;
|
|
863
|
+
if (!list) {
|
|
864
|
+
try {
|
|
865
|
+
var m = (
|
|
866
|
+
/** @type {HTMLMetaElement|null} */
|
|
867
|
+
document.querySelector('meta[name="aimeat-locales"]')
|
|
868
|
+
);
|
|
869
|
+
if (m && m.content) list = m.content.split(/[\s,]+/);
|
|
870
|
+
} catch {
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
if (!list) return [];
|
|
874
|
+
var seen = {}, out = [];
|
|
875
|
+
for (var i = 0; i < list.length; i++) {
|
|
876
|
+
var c = String(list[i] || "").trim().toLowerCase();
|
|
877
|
+
if (/^[a-z]{2}$/.test(c) && !seen[c]) {
|
|
878
|
+
seen[c] = 1;
|
|
879
|
+
out.push(c);
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
return out.length > 1 ? out : [];
|
|
883
|
+
}
|
|
884
|
+
function aimeatReadLang(locales) {
|
|
885
|
+
var ok = function(v) {
|
|
886
|
+
return v && locales.indexOf(v) >= 0 ? v : null;
|
|
887
|
+
};
|
|
888
|
+
try {
|
|
889
|
+
var u = ok(new URLSearchParams(location.search).get("lang"));
|
|
890
|
+
if (u) return u;
|
|
891
|
+
var s = ok(localStorage.getItem(AIMEAT_LANG_KEY));
|
|
892
|
+
if (s) return s;
|
|
893
|
+
var c = document.cookie.match(/(?:^|;\s*)aimeat-lang=([a-z]{2})(?:;|$)/);
|
|
894
|
+
if (c && ok(c[1])) return c[1];
|
|
895
|
+
} catch {
|
|
896
|
+
}
|
|
897
|
+
var nav = ok((navigator.language || "").slice(0, 2).toLowerCase());
|
|
898
|
+
return nav || locales[0];
|
|
899
|
+
}
|
|
900
|
+
function aimeatApplyLang(lang) {
|
|
901
|
+
try {
|
|
902
|
+
localStorage.setItem(AIMEAT_LANG_KEY, lang);
|
|
903
|
+
document.cookie = "aimeat-lang=" + lang + ";path=/;max-age=31536000;SameSite=Lax";
|
|
904
|
+
} catch {
|
|
905
|
+
}
|
|
906
|
+
try {
|
|
907
|
+
document.documentElement.setAttribute("lang", lang);
|
|
908
|
+
} catch {
|
|
909
|
+
}
|
|
910
|
+
try {
|
|
911
|
+
window.dispatchEvent(new CustomEvent("aimeat-lang-change", { detail: { lang } }));
|
|
912
|
+
} catch {
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
function langName(code) {
|
|
916
|
+
try {
|
|
917
|
+
var dn = new Intl.DisplayNames([code], { type: "language" });
|
|
918
|
+
var n = dn.of(code);
|
|
919
|
+
if (n && n !== code) return n.charAt(0).toUpperCase() + n.slice(1);
|
|
920
|
+
} catch {
|
|
921
|
+
}
|
|
922
|
+
return code.toUpperCase();
|
|
923
|
+
}
|
|
924
|
+
var SEGMENT_MAX = 3;
|
|
925
|
+
function langSwitchHtml(i, locales) {
|
|
926
|
+
if (!locales.length) return "";
|
|
927
|
+
var cur = aimeatReadLang(locales);
|
|
928
|
+
var group = i && i.switchLanguage ? i.switchLanguage : "Language";
|
|
929
|
+
if (locales.length <= SEGMENT_MAX) {
|
|
930
|
+
return '<span id="aimeat-lang-switch" class="aimeat-seg" role="group" aria-label="' + escHtml(group) + '">' + locales.map(function(c) {
|
|
931
|
+
return '<button type="button" data-lang="' + escHtml(c) + '" aria-pressed="' + (c === cur) + '" title="' + escHtml(langName(c)) + '" aria-label="' + escHtml(langName(c)) + '">' + escHtml(c.toUpperCase()) + "</button>";
|
|
932
|
+
}).join("") + "</span>";
|
|
933
|
+
}
|
|
934
|
+
return '<span id="aimeat-lang-switch" class="aimeat-pop-wrap"><button type="button" class="aimeat-pop-btn" aria-haspopup="listbox" aria-expanded="false" title="' + escHtml(group) + '" aria-label="' + escHtml(group) + '">' + escHtml(cur.toUpperCase()) + ' <span aria-hidden="true">▾</span></button><span class="aimeat-pop aimeat-pop-list" role="listbox">' + locales.map(function(c) {
|
|
935
|
+
return '<button type="button" role="option" data-lang="' + escHtml(c) + '" aria-pressed="' + (c === cur) + '">' + escHtml(c.toUpperCase()) + " · " + escHtml(langName(c)) + "</button>";
|
|
936
|
+
}).join("") + "</span></span>";
|
|
937
|
+
}
|
|
938
|
+
function wireLangSwitch(container, i, locales) {
|
|
939
|
+
var root = container.querySelector("#aimeat-lang-switch");
|
|
940
|
+
if (!root || !locales.length) return;
|
|
941
|
+
var trigger = root.querySelector(".aimeat-pop-btn");
|
|
942
|
+
function sync(cur) {
|
|
943
|
+
root.querySelectorAll("button[data-lang]").forEach(function(b) {
|
|
944
|
+
b.setAttribute("aria-pressed", String(b.getAttribute("data-lang") === cur));
|
|
945
|
+
});
|
|
946
|
+
if (trigger) trigger.childNodes[0].textContent = cur.toUpperCase() + " ";
|
|
947
|
+
}
|
|
948
|
+
root.querySelectorAll("button[data-lang]").forEach(function(b) {
|
|
949
|
+
b.addEventListener("click", function() {
|
|
950
|
+
aimeatApplyLang(b.getAttribute("data-lang"));
|
|
951
|
+
sync(b.getAttribute("data-lang"));
|
|
952
|
+
root.classList.remove("aimeat-open");
|
|
953
|
+
if (trigger) trigger.setAttribute("aria-expanded", "false");
|
|
954
|
+
});
|
|
955
|
+
});
|
|
956
|
+
if (trigger) trigger.addEventListener("click", function(ev) {
|
|
957
|
+
ev.stopPropagation();
|
|
958
|
+
var open = root.classList.toggle("aimeat-open");
|
|
959
|
+
trigger.setAttribute("aria-expanded", String(open));
|
|
960
|
+
if (open) clampPopover(root.querySelector(".aimeat-pop"));
|
|
961
|
+
});
|
|
962
|
+
window.addEventListener("aimeat-lang-change", function(ev) {
|
|
963
|
+
var e = (
|
|
964
|
+
/** @type {CustomEvent} */
|
|
965
|
+
ev
|
|
966
|
+
);
|
|
967
|
+
var lang = e && e.detail && e.detail.lang;
|
|
968
|
+
if (lang && locales.indexOf(lang) >= 0) sync(lang);
|
|
969
|
+
});
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
// src/static/sdk-libs/auth/palette.js
|
|
973
|
+
var AIMEAT_PALETTE_KEY = "aimeat-palette";
|
|
974
|
+
var PALETTES = [
|
|
975
|
+
{ id: "aimeat", label: "AIMEAT", swatch: {
|
|
976
|
+
light: { bg: "#efeee8", card: "#ffffff", accent: "#e8564a" },
|
|
977
|
+
dark: { bg: "#14151a", card: "#21232e", accent: "#ff6f62" }
|
|
978
|
+
} },
|
|
979
|
+
{ id: "paper", label: "Paper", swatch: {
|
|
980
|
+
light: { bg: "#eae2cf", card: "#fdfaf1", accent: "#a03040" },
|
|
981
|
+
dark: { bg: "#151110", card: "#282017", accent: "#e08590" }
|
|
982
|
+
} },
|
|
983
|
+
{ id: "circuit", label: "Circuit", swatch: {
|
|
984
|
+
light: { bg: "#e9edf1", card: "#ffffff", accent: "#0e7290" },
|
|
985
|
+
dark: { bg: "#0a0f14", card: "#18202b", accent: "#4fd2f2" }
|
|
986
|
+
} },
|
|
987
|
+
{ id: "contrast", label: "Contrast", swatch: {
|
|
988
|
+
light: { bg: "#e9e9e9", card: "#ffffff", accent: "#1d4ed8" },
|
|
989
|
+
dark: { bg: "#000000", card: "#17171c", accent: "#99c2ff" }
|
|
990
|
+
} },
|
|
991
|
+
{ id: "mist", label: "Mist", swatch: {
|
|
992
|
+
light: { bg: "#e6eae4", card: "#fbfcfa", accent: "#47695a" },
|
|
993
|
+
dark: { bg: "#141715", card: "#252b27", accent: "#9cc0ae" }
|
|
994
|
+
} }
|
|
995
|
+
];
|
|
996
|
+
function aimeatReadPalette() {
|
|
997
|
+
var ids = PALETTES.map(function(p) {
|
|
998
|
+
return p.id;
|
|
999
|
+
});
|
|
1000
|
+
try {
|
|
1001
|
+
var u = new URLSearchParams(location.search).get("palette");
|
|
1002
|
+
if (u && ids.indexOf(u) >= 0) return u;
|
|
1003
|
+
} catch {
|
|
1004
|
+
}
|
|
1005
|
+
try {
|
|
1006
|
+
var s = localStorage.getItem(AIMEAT_PALETTE_KEY);
|
|
1007
|
+
if (s && ids.indexOf(s) >= 0) return s;
|
|
1008
|
+
} catch {
|
|
1009
|
+
}
|
|
1010
|
+
var attr = document.documentElement.getAttribute("data-palette");
|
|
1011
|
+
return attr && ids.indexOf(attr) >= 0 ? attr : PALETTES[0].id;
|
|
1012
|
+
}
|
|
1013
|
+
function aimeatApplyPalette(id) {
|
|
1014
|
+
if (id === PALETTES[0].id) document.documentElement.removeAttribute("data-palette");
|
|
1015
|
+
else document.documentElement.setAttribute("data-palette", id);
|
|
1016
|
+
try {
|
|
1017
|
+
localStorage.setItem(AIMEAT_PALETTE_KEY, id);
|
|
1018
|
+
} catch {
|
|
1019
|
+
}
|
|
1020
|
+
try {
|
|
1021
|
+
window.dispatchEvent(new CustomEvent("aimeat-palette-change", { detail: { palette: id } }));
|
|
1022
|
+
} catch {
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
function aimeatRestorePalette() {
|
|
1026
|
+
var cur = aimeatReadPalette();
|
|
1027
|
+
if (cur !== PALETTES[0].id) document.documentElement.setAttribute("data-palette", cur);
|
|
1028
|
+
else document.documentElement.removeAttribute("data-palette");
|
|
1029
|
+
try {
|
|
1030
|
+
window.addEventListener("storage", function(e) {
|
|
1031
|
+
if (e.key === AIMEAT_PALETTE_KEY && e.newValue) aimeatApplyPalette(e.newValue);
|
|
1032
|
+
});
|
|
1033
|
+
} catch {
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
function paletteControlHtml(i) {
|
|
1037
|
+
var cur = aimeatReadPalette();
|
|
1038
|
+
var mode = document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light";
|
|
1039
|
+
var curAcc = (PALETTES.find(function(p) {
|
|
1040
|
+
return p.id === cur;
|
|
1041
|
+
}) || PALETTES[0]).swatch[mode].accent;
|
|
1042
|
+
var label = i && i.chooseLook || "Choose look";
|
|
1043
|
+
return '<span id="aimeat-palette-switch" class="aimeat-pop-wrap"><button type="button" class="aimeat-pop-btn" aria-haspopup="listbox" aria-expanded="false" title="' + esc(label) + '" aria-label="' + esc(label) + '"><span class="aimeat-pal-dot" style="background:' + esc(curAcc) + '"></span></button><span class="aimeat-pop" role="listbox">' + PALETTES.map(function(p) {
|
|
1044
|
+
var s = p.swatch[mode];
|
|
1045
|
+
return '<button type="button" role="option" data-palette="' + esc(p.id) + '" aria-pressed="' + (p.id === cur) + '"><span class="aimeat-pal-chip" style="background:' + esc(s.bg) + '"><span class="pc-card" style="background:' + esc(s.card) + '"></span><span class="pc-acc" style="background:' + esc(s.accent) + '"></span></span>' + esc(p.label) + "</button>";
|
|
1046
|
+
}).join("") + "</span></span>";
|
|
1047
|
+
}
|
|
1048
|
+
function wirePaletteControl(container, clampPopover2) {
|
|
1049
|
+
var root = container.querySelector("#aimeat-palette-switch");
|
|
1050
|
+
if (!root) return;
|
|
1051
|
+
var trigger = (
|
|
1052
|
+
/** @type {HTMLElement} */
|
|
1053
|
+
root.querySelector(".aimeat-pop-btn")
|
|
1054
|
+
);
|
|
1055
|
+
function syncDot() {
|
|
1056
|
+
var cur = aimeatReadPalette();
|
|
1057
|
+
var mode = document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light";
|
|
1058
|
+
var p = PALETTES.find(function(x) {
|
|
1059
|
+
return x.id === cur;
|
|
1060
|
+
}) || PALETTES[0];
|
|
1061
|
+
var dot = (
|
|
1062
|
+
/** @type {HTMLElement|null} */
|
|
1063
|
+
root.querySelector(".aimeat-pal-dot")
|
|
1064
|
+
);
|
|
1065
|
+
if (dot) dot.style.background = p.swatch[mode].accent;
|
|
1066
|
+
root.querySelectorAll("button[data-palette]").forEach(function(b) {
|
|
1067
|
+
b.setAttribute("aria-pressed", String(b.getAttribute("data-palette") === cur));
|
|
1068
|
+
var pp = PALETTES.find(function(x) {
|
|
1069
|
+
return x.id === b.getAttribute("data-palette");
|
|
1070
|
+
});
|
|
1071
|
+
if (!pp) return;
|
|
1072
|
+
var s = pp.swatch[mode];
|
|
1073
|
+
var chip = (
|
|
1074
|
+
/** @type {HTMLElement|null} */
|
|
1075
|
+
b.querySelector(".aimeat-pal-chip")
|
|
1076
|
+
);
|
|
1077
|
+
var card = (
|
|
1078
|
+
/** @type {HTMLElement|null} */
|
|
1079
|
+
b.querySelector(".pc-card")
|
|
1080
|
+
);
|
|
1081
|
+
var acc = (
|
|
1082
|
+
/** @type {HTMLElement|null} */
|
|
1083
|
+
b.querySelector(".pc-acc")
|
|
1084
|
+
);
|
|
1085
|
+
if (chip) chip.style.background = s.bg;
|
|
1086
|
+
if (card) card.style.background = s.card;
|
|
1087
|
+
if (acc) acc.style.background = s.accent;
|
|
1088
|
+
});
|
|
1089
|
+
}
|
|
1090
|
+
root.querySelectorAll("button[data-palette]").forEach(function(b) {
|
|
1091
|
+
b.addEventListener("click", function() {
|
|
1092
|
+
aimeatApplyPalette(b.getAttribute("data-palette") || PALETTES[0].id);
|
|
1093
|
+
syncDot();
|
|
1094
|
+
root.classList.remove("aimeat-open");
|
|
1095
|
+
trigger.setAttribute("aria-expanded", "false");
|
|
1096
|
+
});
|
|
1097
|
+
});
|
|
1098
|
+
trigger.addEventListener("click", function(ev) {
|
|
1099
|
+
ev.stopPropagation();
|
|
1100
|
+
var open = root.classList.toggle("aimeat-open");
|
|
1101
|
+
trigger.setAttribute("aria-expanded", String(open));
|
|
1102
|
+
if (open) clampPopover2(
|
|
1103
|
+
/** @type {HTMLElement} */
|
|
1104
|
+
root.querySelector(".aimeat-pop")
|
|
1105
|
+
);
|
|
1106
|
+
});
|
|
1107
|
+
window.addEventListener("aimeat-palette-change", syncDot);
|
|
1108
|
+
window.addEventListener("aimeat-theme-change", syncDot);
|
|
1109
|
+
}
|
|
1110
|
+
function esc(s) {
|
|
1111
|
+
var d = document.createElement("div");
|
|
1112
|
+
d.textContent = s;
|
|
1113
|
+
return d.innerHTML;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
760
1116
|
// src/static/sdk-libs/auth/pill.js
|
|
761
1117
|
function mountPill(auth2, selector, opts = {}) {
|
|
762
1118
|
let container;
|
|
@@ -778,11 +1134,12 @@
|
|
|
778
1134
|
}
|
|
779
1135
|
}
|
|
780
1136
|
const i = opts.i18n || {};
|
|
1137
|
+
const locales = readLocales(opts);
|
|
781
1138
|
const useCompact = opts.compact !== void 0 ? !!opts.compact : isAppOrigin();
|
|
782
1139
|
function render() {
|
|
783
1140
|
const stored = auth2.getSession() || load("session");
|
|
784
1141
|
if (stored) {
|
|
785
|
-
var pillHtml = '<div class="aimeat-auth-pill" style="display:inline-flex;align-items:center;gap:10px;padding:8px 18px;background:linear-gradient(160deg,#3d2e1a 0%,#6b4c2a 15%,#c9a84c 30%,#f5e6a3 45%,#c9a84c 55%,#8b6914 70%,#4a3520 100%);border:1px solid rgba(201,168,76,.6);border-top-color:rgba(245,230,163,.5);border-bottom-color:rgba(75,53,32,.8);border-radius:10px;box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 3px 10px rgba(0,0,0,.4),0 0 20px rgba(201,168,76,.15);font-family:system-ui;font-size:14px"><span class="aimeat-auth-dot" style="display:inline-block;flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#b0ffc8,#00c853 40%,#00802e 80%,#003d15);box-shadow:0 0 5px rgba(0,200,83,.7),0 0 12px rgba(0,200,83,.3),inset 0 -1px 2px rgba(0,0,0,.3)"></span><span class="aimeat-auth-label" style="display:inline-flex;align-items:center;font-size:12px;font-weight:600;letter-spacing:.5px;color:#a0ffb8;text-shadow:0 0 4px rgba(0,210,80,.6),0 0 10px rgba(0,180,70,.3)">' + escHtml(i.loggedIn || "logged in") + '</span><span class="aimeat-auth-ghii" style="color:rgba(90,65,20,.7);font-weight:700;letter-spacing:.5px;font-size:13px;text-shadow:0 1px 0 rgba(245,230,163,.6),0 -1px 0 rgba(50,35,10,.3);-webkit-text-stroke:.2px rgba(120,85,20,.3)">' + escHtml(stored.displayName || stored.ghii || stored.owner) + "</span>" + (stored.federated ? '<span style="display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;letter-spacing:.5px;color:#7dd3fc;background:rgba(56,189,248,.15);padding:2px 6px;border-radius:4px;border:1px solid rgba(56,189,248,.3)">🌐 ' + escHtml(i.federated || "Federated") + "</span>" : "") + (stored._appOrigin && stored._app && !stored._own ? '<button id="aimeat-grant-gear" title="' + escHtml(i.manageAccess || "Manage permissions") + '" aria-label="' + escHtml(i.manageAccess || "Manage permissions") + '" style="background:rgba(90,65,20,.18);color:#5a4114;border:1px solid rgba(120,85,20,.35);border-radius:6px;padding:3px 8px;cursor:pointer;font-size:13px;line-height:1">⚙️</button>' : "") +
|
|
1142
|
+
var pillHtml = '<div class="aimeat-auth-pill" style="display:inline-flex;align-items:center;gap:10px;padding:8px 18px;background:linear-gradient(160deg,#3d2e1a 0%,#6b4c2a 15%,#c9a84c 30%,#f5e6a3 45%,#c9a84c 55%,#8b6914 70%,#4a3520 100%);border:1px solid rgba(201,168,76,.6);border-top-color:rgba(245,230,163,.5);border-bottom-color:rgba(75,53,32,.8);border-radius:10px;box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 3px 10px rgba(0,0,0,.4),0 0 20px rgba(201,168,76,.15);font-family:system-ui;font-size:14px"><span class="aimeat-auth-dot" style="display:inline-block;flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#b0ffc8,#00c853 40%,#00802e 80%,#003d15);box-shadow:0 0 5px rgba(0,200,83,.7),0 0 12px rgba(0,200,83,.3),inset 0 -1px 2px rgba(0,0,0,.3)"></span><span class="aimeat-auth-label" style="display:inline-flex;align-items:center;font-size:12px;font-weight:600;letter-spacing:.5px;color:#a0ffb8;text-shadow:0 0 4px rgba(0,210,80,.6),0 0 10px rgba(0,180,70,.3)">' + escHtml(i.loggedIn || "logged in") + '</span><span class="aimeat-auth-ghii" style="color:rgba(90,65,20,.7);font-weight:700;letter-spacing:.5px;font-size:13px;text-shadow:0 1px 0 rgba(245,230,163,.6),0 -1px 0 rgba(50,35,10,.3);-webkit-text-stroke:.2px rgba(120,85,20,.3)">' + escHtml(stored.displayName || stored.ghii || stored.owner) + "</span>" + (stored.federated ? '<span style="display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;letter-spacing:.5px;color:#7dd3fc;background:rgba(56,189,248,.15);padding:2px 6px;border-radius:4px;border:1px solid rgba(56,189,248,.3)">🌐 ' + escHtml(i.federated || "Federated") + "</span>" : "") + (stored._appOrigin && stored._app && !stored._own ? '<button id="aimeat-grant-gear" title="' + escHtml(i.manageAccess || "Manage permissions") + '" aria-label="' + escHtml(i.manageAccess || "Manage permissions") + '" style="background:rgba(90,65,20,.18);color:#5a4114;border:1px solid rgba(120,85,20,.35);border-radius:6px;padding:3px 8px;cursor:pointer;font-size:13px;line-height:1">⚙️</button>' : "") + '<span class="aimeat-ctl">' + langSwitchHtml(i, locales) + modeSwitchHtml(i) + paletteControlHtml(i) + '</span><button id="aimeat-logout-btn" class="aimeat-auth-logout" style="background:radial-gradient(ellipse at 50% 30%,#ff6b6b 0%,#dc2626 35%,#991b1b 70%,#7f1d1d 100%);color:#ffd7d7;border:1px solid rgba(220,38,38,.6);border-top-color:rgba(255,130,130,.4);border-bottom-color:rgba(100,20,20,.8);border-radius:6px;padding:3px 10px;cursor:pointer;font-size:11px;font-weight:700;letter-spacing:.3px;box-shadow:0 1px 0 rgba(255,140,140,.25) inset,0 -1px 0 rgba(80,10,10,.4) inset,0 2px 6px rgba(153,27,27,.5);text-shadow:0 1px 1px rgba(0,0,0,.4)">' + escHtml(i.logoutBtn || "Logout") + "</button></div>";
|
|
786
1143
|
if (useCompact) {
|
|
787
1144
|
ensureAuthPillStyles();
|
|
788
1145
|
var ini = pillInitials(stored.displayName || stored.ghii || stored.owner);
|
|
@@ -812,7 +1169,7 @@
|
|
|
812
1169
|
compactBtn.setAttribute("aria-expanded", open ? "true" : "false");
|
|
813
1170
|
});
|
|
814
1171
|
} else {
|
|
815
|
-
container.innerHTML = '<style>.aimeat-sign-btn{padding:8px 18px;background:linear-gradient(160deg,#3d2e1a 0%,#6b4c2a 15%,#c9a84c 30%,#f5e6a3 45%,#c9a84c 55%,#8b6914 70%,#4a3520 100%);color:#2a1800;border:1px solid rgba(201,168,76,.6);border-top-color:rgba(245,230,163,.5);border-bottom-color:rgba(75,53,32,.8);border-radius:10px;cursor:pointer;font-weight:800;font-family:system-ui;font-size:14px;letter-spacing:.3px;box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 3px 10px rgba(0,0,0,.4),0 0 20px rgba(201,168,76,.15);text-shadow:0 1px 0 rgba(245,230,163,.5);transition:transform .15s,box-shadow .15s}.aimeat-sign-btn:hover{transform:translateY(-1px);box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 5px 16px rgba(0,0,0,.5),0 0 30px rgba(201,168,76,.3)}</style><span style="display:inline-flex;align-items:center;gap:10px">' +
|
|
1172
|
+
container.innerHTML = '<style>.aimeat-sign-btn{padding:8px 18px;background:linear-gradient(160deg,#3d2e1a 0%,#6b4c2a 15%,#c9a84c 30%,#f5e6a3 45%,#c9a84c 55%,#8b6914 70%,#4a3520 100%);color:#2a1800;border:1px solid rgba(201,168,76,.6);border-top-color:rgba(245,230,163,.5);border-bottom-color:rgba(75,53,32,.8);border-radius:10px;cursor:pointer;font-weight:800;font-family:system-ui;font-size:14px;letter-spacing:.3px;box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 3px 10px rgba(0,0,0,.4),0 0 20px rgba(201,168,76,.15);text-shadow:0 1px 0 rgba(245,230,163,.5);transition:transform .15s,box-shadow .15s}.aimeat-sign-btn:hover{transform:translateY(-1px);box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 5px 16px rgba(0,0,0,.5),0 0 30px rgba(201,168,76,.3)}</style><span style="display:inline-flex;align-items:center;gap:10px"><span class="aimeat-ctl">' + langSwitchHtml(i, locales) + modeSwitchHtml(i) + paletteControlHtml(i) + '</span><button id="aimeat-login-btn" class="aimeat-sign-btn">' + (opts.buttonText || i.signInBtn || "❤️ Sign In") + "</button></span>";
|
|
816
1173
|
document.getElementById("aimeat-login-btn").addEventListener("click", () => {
|
|
817
1174
|
if (isAppOrigin()) {
|
|
818
1175
|
restoreSessionFromAppOrigin(true).then((s) => {
|
|
@@ -824,9 +1181,32 @@
|
|
|
824
1181
|
}
|
|
825
1182
|
});
|
|
826
1183
|
}
|
|
827
|
-
|
|
1184
|
+
wireModeSwitch(container);
|
|
1185
|
+
wireLangSwitch(container, i, locales);
|
|
1186
|
+
wirePaletteControl(container, clampPopover);
|
|
828
1187
|
}
|
|
1188
|
+
ensureClusterStyles();
|
|
829
1189
|
render();
|
|
1190
|
+
document.addEventListener("click", (ev) => {
|
|
1191
|
+
container.querySelectorAll(".aimeat-pop-wrap.aimeat-open").forEach((w) => {
|
|
1192
|
+
if (!w.contains(
|
|
1193
|
+
/** @type {Node} */
|
|
1194
|
+
ev.target
|
|
1195
|
+
)) {
|
|
1196
|
+
w.classList.remove("aimeat-open");
|
|
1197
|
+
var b = w.querySelector(".aimeat-pop-btn");
|
|
1198
|
+
if (b) b.setAttribute("aria-expanded", "false");
|
|
1199
|
+
}
|
|
1200
|
+
});
|
|
1201
|
+
});
|
|
1202
|
+
document.addEventListener("keydown", (ev) => {
|
|
1203
|
+
if (ev.key !== "Escape") return;
|
|
1204
|
+
container.querySelectorAll(".aimeat-pop-wrap.aimeat-open").forEach((w) => {
|
|
1205
|
+
w.classList.remove("aimeat-open");
|
|
1206
|
+
var b = w.querySelector(".aimeat-pop-btn");
|
|
1207
|
+
if (b) b.setAttribute("aria-expanded", "false");
|
|
1208
|
+
});
|
|
1209
|
+
});
|
|
830
1210
|
if (useCompact) {
|
|
831
1211
|
var closeCompact = () => {
|
|
832
1212
|
var w = container.querySelector(".aimeat-auth-wrap.aimeat-open");
|
|
@@ -1826,6 +2206,27 @@
|
|
|
1826
2206
|
if (typeof window !== "undefined" && window.addEventListener) {
|
|
1827
2207
|
window.addEventListener("focus", refreshOnFocus);
|
|
1828
2208
|
}
|
|
2209
|
+
auth.getLang = function(locales) {
|
|
2210
|
+
return aimeatReadLang(readLocales({ locales }));
|
|
2211
|
+
};
|
|
2212
|
+
auth.setLang = function(lang) {
|
|
2213
|
+
aimeatApplyLang(String(lang).toLowerCase());
|
|
2214
|
+
};
|
|
2215
|
+
auth.getPalette = function() {
|
|
2216
|
+
return aimeatReadPalette();
|
|
2217
|
+
};
|
|
2218
|
+
auth.setPalette = function(id) {
|
|
2219
|
+
aimeatApplyPalette(String(id).toLowerCase());
|
|
2220
|
+
};
|
|
2221
|
+
auth.getPalettes = function() {
|
|
2222
|
+
return PALETTES.map(function(p) {
|
|
2223
|
+
return { id: p.id, label: p.label, swatch: p.swatch };
|
|
2224
|
+
});
|
|
2225
|
+
};
|
|
2226
|
+
if (typeof document !== "undefined") {
|
|
2227
|
+
aimeatRestorePalette();
|
|
2228
|
+
aimeatRestoreMode();
|
|
2229
|
+
}
|
|
1829
2230
|
var ns = attach("auth", auth);
|
|
1830
|
-
ns.version = "2026-07-
|
|
2231
|
+
ns.version = "2026-07-25-002";
|
|
1831
2232
|
})();
|
|
@@ -50,6 +50,17 @@
|
|
|
50
50
|
|
|
51
51
|
// src/static/sdk-libs/data/index.js
|
|
52
52
|
var { authFetch: authFetch2 } = makeSession("aimeat-data.js");
|
|
53
|
+
function scopeParams(opts) {
|
|
54
|
+
const p = new URLSearchParams();
|
|
55
|
+
if (opts?.agent) p.set("agent", opts.agent);
|
|
56
|
+
else if (opts?.ownerScope) p.set("owner_scope", "true");
|
|
57
|
+
return p;
|
|
58
|
+
}
|
|
59
|
+
function withParams(path, params) {
|
|
60
|
+
const qs = params.toString();
|
|
61
|
+
if (!qs) return path;
|
|
62
|
+
return path + (path.indexOf("?") >= 0 ? "&" : "?") + qs;
|
|
63
|
+
}
|
|
53
64
|
var data = {
|
|
54
65
|
// Write or upsert a memory entry
|
|
55
66
|
async set(key, value, opts) {
|
|
@@ -61,11 +72,17 @@
|
|
|
61
72
|
// Read a single entry (falls back to public read from app creator if not found or empty).
|
|
62
73
|
// Uses ?soft=1 so a missing key is a clean 200 (value null) — no browser-console 404 noise;
|
|
63
74
|
// the contract is unchanged: resolves null when the key does not exist.
|
|
64
|
-
|
|
65
|
-
|
|
75
|
+
// opts: { agent, ownerScope } — read from one of the owner's agents' namespaces, or
|
|
76
|
+
// across the owner's whole set (GHII + agents). Omitted → unchanged behaviour.
|
|
77
|
+
async get(key, opts) {
|
|
78
|
+
const res = await authFetch2(withParams(
|
|
79
|
+
"/v1/memory/" + encodeURIComponent(key) + "?soft=1",
|
|
80
|
+
scopeParams(opts)
|
|
81
|
+
));
|
|
66
82
|
var val = res.ok ? res.data.value : null;
|
|
67
83
|
var isEmpty = val == null || typeof val === "object" && Object.keys(val).length === 0;
|
|
68
84
|
if (!isEmpty) return val;
|
|
85
|
+
if (opts?.agent || opts?.ownerScope) return val;
|
|
69
86
|
var creator = document.querySelector('meta[name="aimeat-creator"]')?.getAttribute("content");
|
|
70
87
|
if (!creator) {
|
|
71
88
|
var m = location.pathname.match(/\/v1\/apps\/([^/]+)\//);
|
|
@@ -83,9 +100,12 @@
|
|
|
83
100
|
}
|
|
84
101
|
return val;
|
|
85
102
|
},
|
|
86
|
-
// Read full entry metadata
|
|
87
|
-
async getEntry(key) {
|
|
88
|
-
const res = await authFetch2(
|
|
103
|
+
// Read full entry metadata. opts: { agent, ownerScope } as in get().
|
|
104
|
+
async getEntry(key, opts) {
|
|
105
|
+
const res = await authFetch2(withParams(
|
|
106
|
+
"/v1/memory/" + encodeURIComponent(key),
|
|
107
|
+
scopeParams(opts)
|
|
108
|
+
));
|
|
89
109
|
if (!res.ok) {
|
|
90
110
|
if (res.error?.code === "NOT_FOUND") return null;
|
|
91
111
|
throw new Error(res.error?.message || "Failed to get memory");
|
|
@@ -108,20 +128,42 @@
|
|
|
108
128
|
if (!res.ok) throw new Error(res.error?.message || "Failed to delete memory");
|
|
109
129
|
return res.data;
|
|
110
130
|
},
|
|
111
|
-
|
|
131
|
+
/**
|
|
132
|
+
* List memory keys.
|
|
133
|
+
*
|
|
134
|
+
* opts:
|
|
135
|
+
* prefix, visibility, tags — as before
|
|
136
|
+
* agent — list ONE of the owner's agents' namespaces (full GAII `name#owner@node`)
|
|
137
|
+
* ownerScope — list across the owner's GHII + every same-owner agent. An owner session
|
|
138
|
+
* already gets this server-side; an app-grant token needs it stated.
|
|
139
|
+
* meta — omit every `value` and report each entry's `bytes` instead. Use this for
|
|
140
|
+
* any listing you render as a table/board: the default response inlines
|
|
141
|
+
* every value, so a fleet-wide prefix can be megabytes per call.
|
|
142
|
+
* count — return only `{ count }` (server-side COUNT, no values). A cheap
|
|
143
|
+
* "did anything change?" probe; its cache is dropped by any memory write.
|
|
144
|
+
*/
|
|
112
145
|
async list(opts) {
|
|
113
|
-
const params =
|
|
146
|
+
const params = scopeParams(opts);
|
|
114
147
|
if (opts?.prefix) params.set("prefix", opts.prefix);
|
|
115
148
|
if (opts?.visibility) params.set("visibility", opts.visibility);
|
|
116
149
|
if (opts?.tags) params.set("tags", opts.tags.join(","));
|
|
150
|
+
if (opts?.meta) params.set("include", "meta");
|
|
151
|
+
if (opts?.count) params.set("count", "true");
|
|
117
152
|
const qs = params.toString();
|
|
118
153
|
const res = await authFetch2("/v1/memory" + (qs ? "?" + qs : ""));
|
|
119
154
|
if (!res.ok) throw new Error(res.error?.message || "Failed to list memory");
|
|
120
155
|
return res.data;
|
|
121
156
|
},
|
|
157
|
+
/** Cheap change probe: the number of keys under a prefix, no values transferred. */
|
|
158
|
+
async count(opts) {
|
|
159
|
+
const d = await data.list({ ...opts || {}, count: true });
|
|
160
|
+
return d && typeof d.count === "number" ? d.count : null;
|
|
161
|
+
},
|
|
122
162
|
// Search memory entries
|
|
163
|
+
// opts: { visibility, agent, ownerScope } — scoping as in list().
|
|
123
164
|
async search(query, opts) {
|
|
124
|
-
const params =
|
|
165
|
+
const params = scopeParams(opts);
|
|
166
|
+
params.set("q", query);
|
|
125
167
|
if (opts?.visibility) params.set("visibility", opts.visibility);
|
|
126
168
|
const res = await authFetch2("/v1/memory/search?" + params.toString());
|
|
127
169
|
if (!res.ok) throw new Error(res.error?.message || "Failed to search memory");
|