aimeat 2.2.0 → 2.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/README.md +110 -84
- package/dist/.env.example +47 -11
- package/dist/locales/en.json +251 -371
- package/dist/locales/fi.json +255 -375
- package/dist/public/components/ContactCard.js +30 -5
- package/dist/public/components/ContactPicker.js +3 -2
- package/dist/public/components/ImageDeliverable.js +2 -1
- package/dist/public/components/JsonView.js +1 -0
- package/dist/public/components/LinkPreview.js +1 -1
- package/dist/public/components/NotificationBell.js +6 -4
- package/dist/public/components/UsageChart.js +2 -1
- package/dist/public/css/theme.css +1516 -1432
- package/dist/public/css/views/app-grant.css +95 -36
- package/dist/public/css/views/help.css +28 -0
- package/dist/public/css/views/landing.css +20 -0
- package/dist/public/css/views/members.css +40 -10
- package/dist/public/css/views/portal-dev.css +64 -45
- package/dist/public/css/views/profile.css +8 -0
- package/dist/public/js/api.js +1 -0
- package/dist/public/js/app-sandbox.js +1 -0
- package/dist/public/js/components/auth-image.js +3 -1
- package/dist/public/js/i18n.js +3 -1
- package/dist/public/js/presence-store.js +3 -1
- package/dist/public/js/recents.js +2 -0
- package/dist/public/js/services/agent-activity.js +2 -1
- package/dist/public/js/services/agent-directives.js +2 -1
- package/dist/public/js/services/agent-integration.js +2 -1
- package/dist/public/js/services/agent-messages.js +2 -1
- package/dist/public/js/services/agent-tasks.js +2 -1
- package/dist/public/js/services/agents.js +3 -2
- package/dist/public/js/services/calibrator.js +2 -1
- package/dist/public/js/services/consent.js +2 -1
- package/dist/public/js/services/contacts.js +2 -1
- package/dist/public/js/services/cortex.js +5 -4
- package/dist/public/js/services/ecosystem.js +2 -1
- package/dist/public/js/services/knowledge.js +2 -1
- package/dist/public/js/services/ledger.js +2 -1
- package/dist/public/js/services/living.js +10 -9
- package/dist/public/js/services/memory.js +2 -1
- package/dist/public/js/services/messages.js +53 -8
- package/dist/public/js/services/nodes.js +3 -2
- package/dist/public/js/services/notebook-plan.js +2 -1
- package/dist/public/js/services/notebook.js +6 -5
- package/dist/public/js/services/offers.js +6 -5
- package/dist/public/js/services/organisms.js +26 -25
- package/dist/public/js/services/organisms.prompts.js +3 -2
- package/dist/public/js/services/organisms.shared.js +2 -1
- package/dist/public/js/services/organisms.workspace-gen.js +3 -2
- package/dist/public/js/services/packages.js +1 -0
- package/dist/public/js/services/schedules.js +2 -1
- package/dist/public/js/services/security.js +3 -2
- package/dist/public/js/services/skills.js +1 -0
- package/dist/public/js/services/tracked-responses.js +4 -3
- package/dist/public/js/services/unfurl.js +4 -4
- package/dist/public/js/services/work.js +2 -1
- package/dist/public/js/site.js +74 -0
- package/dist/public/js/swallowed.js +69 -0
- package/dist/public/js/theme.js +2 -1
- package/dist/public/js/utils.js +3 -1
- package/dist/public/lib/VENDORED.md +1 -0
- package/dist/public/lib/aimeat-game/board.css +262 -0
- package/dist/public/lib/aimeat-game/progress.css +406 -0
- package/dist/public/lib/aimeat-game/shell.css +388 -0
- package/dist/public/lib/aimeat-game.css +394 -0
- package/dist/public/lib/pdfjs@6/pdf.min.mjs +29 -0
- package/dist/public/lib/pdfjs@6/pdf.worker.min.mjs +29 -0
- package/dist/public/privacy.fi.html +1 -1
- package/dist/public/privacy.html +1 -1
- package/dist/public/spa.html +885 -793
- package/dist/public/sw.js +4 -2
- package/dist/public/views/admin/agent-integration-tab.js +7 -6
- package/dist/public/views/admin/ai-usage-tab.js +2 -1
- package/dist/public/views/admin/cortex-tab.js +2 -1
- package/dist/public/views/admin/economy-tab.js +0 -1
- package/dist/public/views/admin/email-tab.js +4 -2
- package/dist/public/views/admin/federation-tab.js +3 -2
- package/dist/public/views/admin/feedback-tab.js +2 -1
- package/dist/public/views/admin/knowledge-tab.js +2 -1
- package/dist/public/views/admin/messages-tab.js +2 -1
- package/dist/public/views/admin/msm-tab.js +2 -1
- package/dist/public/views/admin/packages-tab.js +3 -2
- package/dist/public/views/admin/portal-tab.js +7 -2
- package/dist/public/views/admin/push-tab.js +9 -4
- package/dist/public/views/admin/stats-tab.js +2 -1
- package/dist/public/views/admin/usage-tab.js +4 -3
- package/dist/public/views/admin.js +6 -4
- package/dist/public/views/agent-solo.js +4 -3
- package/dist/public/views/app-grant.js +105 -32
- package/dist/public/views/business.js +139 -55
- package/dist/public/views/command-palette.js +5 -3
- package/dist/public/views/companies.js +3 -2
- package/dist/public/views/doc-solo.js +2 -1
- package/dist/public/views/help.js +95 -15
- package/dist/public/views/how-it-works.js +41 -8
- package/dist/public/views/invite-accept.js +3 -2
- package/dist/public/views/landing-activity.js +3 -2
- package/dist/public/views/landing-node-totals.js +2 -1
- package/dist/public/views/landing.js +75 -152
- package/dist/public/views/members.js +29 -2
- package/dist/public/views/my-company.js +9 -7
- package/dist/public/views/my-company.payments.js +2 -1
- package/dist/public/views/portal-classic.js +2 -1
- package/dist/public/views/portal-dev.js +64 -35
- package/dist/public/views/portal-dev.panels.js +39 -2
- package/dist/public/views/portal-dev.upload.js +25 -196
- package/dist/public/views/portal.components.js +4 -3
- package/dist/public/views/portfolio.js +5 -4
- package/dist/public/views/profile/access-tab/access-tokens.js +2 -1
- package/dist/public/views/profile/access-tab/agent-defaults.js +3 -1
- package/dist/public/views/profile/access-tab/connected-apps.js +72 -3
- package/dist/public/views/profile/access-tab/sharing-groups.js +4 -1
- package/dist/public/views/profile/access-tab.js +3 -1
- package/dist/public/views/profile/agents/agent-card.js +6 -5
- package/dist/public/views/profile/agents/tab-activity.js +10 -8
- package/dist/public/views/profile/agents/tab-agent-config.js +3 -1
- package/dist/public/views/profile/agents/tab-contracts.js +2 -1
- package/dist/public/views/profile/agents/tab-data-access.js +10 -7
- package/dist/public/views/profile/agents/tab-helpers.js +5 -0
- package/dist/public/views/profile/agents/tab-integration.js +12 -9
- package/dist/public/views/profile/agents/tab-messages.js +6 -4
- package/dist/public/views/profile/agents/tab-quality.js +3 -2
- package/dist/public/views/profile/agents/tab-usage.js +5 -3
- package/dist/public/views/profile/agents/task-item.js +12 -7
- package/dist/public/views/profile/agents-activity-subtab.js +5 -2
- package/dist/public/views/profile/agents-capabilities-subtab.js +4 -2
- package/dist/public/views/profile/agents-messages-subtab.js +5 -2
- package/dist/public/views/profile/agents-services-subtab.js +1 -0
- package/dist/public/views/profile/agents-tab.js +11 -7
- package/dist/public/views/profile/appdev-tab.js +3 -2
- package/dist/public/views/profile/apps-tab.js +10 -8
- package/dist/public/views/profile/boards-tab.js +5 -4
- package/dist/public/views/profile/calibrator-batch.helpers.js +3 -2
- package/dist/public/views/profile/calibrator-batch.js +3 -1
- package/dist/public/views/profile/calibrator-llm-editor.js +3 -2
- package/dist/public/views/profile/calibrator-tab.js +5 -4
- package/dist/public/views/profile/capabilities-tab.js +2 -1
- package/dist/public/views/profile/chat-sessions-tab.js +6 -3
- package/dist/public/views/profile/contacts-tab.js +2 -1
- package/dist/public/views/profile/data-wallet-tab.js +5 -4
- package/dist/public/views/profile/discover-tab.js +4 -1
- package/dist/public/views/profile/ecosystem-tab.automation.js +13 -9
- package/dist/public/views/profile/ecosystem-tab.cards.js +3 -2
- package/dist/public/views/profile/ecosystem-tab.js +10 -7
- package/dist/public/views/profile/email-tab.js +2 -1
- package/dist/public/views/profile/extensions-tab.js +7 -6
- package/dist/public/views/profile/extensions-tab.maturity.js +2 -1
- package/dist/public/views/profile/extensions-tab.prompts.js +24 -0
- package/dist/public/views/profile/federation-tab.js +2 -1
- package/dist/public/views/profile/inbox-tab/components.js +13 -10
- package/dist/public/views/profile/inbox-tab/helpers.js +15 -1
- package/dist/public/views/profile/inbox-tab/use-thread-ux.js +1 -1
- package/dist/public/views/profile/inbox-tab.js +33 -30
- package/dist/public/views/profile/inline-panels.js +5 -4
- package/dist/public/views/profile/knowledge-tab.js +15 -13
- package/dist/public/views/profile/landing-page.cards.js +14 -9
- package/dist/public/views/profile/landing-page.helpers.js +5 -2
- package/dist/public/views/profile/landing-page.js +11 -7
- package/dist/public/views/profile/landing-page.modals.js +8 -5
- package/dist/public/views/profile/living-tab.js +3 -2
- package/dist/public/views/profile/mcp-tab.js +4 -2
- package/dist/public/views/profile/memory-tab/browse-view.js +3 -2
- package/dist/public/views/profile/memory-tab/components.js +4 -3
- package/dist/public/views/profile/memory-tab/entries-view.js +3 -2
- package/dist/public/views/profile/memory-tab.js +18 -16
- package/dist/public/views/profile/nodes-tab.js +2 -1
- package/dist/public/views/profile/notebook-card.js +4 -3
- package/dist/public/views/profile/notebook-tab.js +7 -5
- package/dist/public/views/profile/notifications-tab.js +9 -5
- package/dist/public/views/profile/offers-tab.js +5 -4
- package/dist/public/views/profile/openrouter-settings.js +5 -4
- package/dist/public/views/profile/organisms/activity-panel.js +2 -1
- package/dist/public/views/profile/organisms/agents.js +2 -1
- package/dist/public/views/profile/organisms/document.js +13 -12
- package/dist/public/views/profile/organisms/helpers.js +2 -1
- package/dist/public/views/profile/organisms/home.js +7 -6
- package/dist/public/views/profile/organisms/invite-panel.js +1 -1
- package/dist/public/views/profile/organisms/members.js +7 -6
- package/dist/public/views/profile/organisms/mindmap.js +1 -1
- package/dist/public/views/profile/organisms/panels.js +4 -3
- package/dist/public/views/profile/organisms/participants-panel.js +11 -10
- package/dist/public/views/profile/organisms/readme-panel.js +1 -0
- package/dist/public/views/profile/organisms/sources-panel.js +2 -1
- package/dist/public/views/profile/organisms/workspace/doc-space.js +2 -1
- package/dist/public/views/profile/organisms/workspace/model.js +1 -0
- package/dist/public/views/profile/organisms/workspace-apps.js +4 -2
- package/dist/public/views/profile/organisms/workspace-comments.js +3 -2
- package/dist/public/views/profile/organisms/workspace-list.js +5 -4
- package/dist/public/views/profile/organisms/workspace.js +19 -16
- package/dist/public/views/profile/organisms-tab.js +20 -12
- package/dist/public/views/profile/packages-tab.js +6 -4
- package/dist/public/views/profile/portfolio-tab.js +1 -1
- package/dist/public/views/profile/scheduler-calendar.js +2 -1
- package/dist/public/views/profile/scheduler-tab.js +2 -1
- package/dist/public/views/profile/security-tab.js +2 -1
- package/dist/public/views/profile/services-tab.js +4 -3
- package/dist/public/views/profile/wallet-tab.js +90 -84
- package/dist/public/views/profile/work-tab.js +3 -2
- package/dist/public/views/profile/workflows-form.js +2 -1
- package/dist/public/views/profile/workflows-tab.js +3 -2
- package/dist/public/views/public-workspace-viewer.js +7 -4
- package/dist/scripts/build-sdk-libs.d.ts.map +1 -1
- package/dist/scripts/build-sdk-libs.js +4 -0
- package/dist/scripts/build-sdk-libs.js.map +1 -1
- package/dist/scripts/check-silent-catch.d.ts +2 -0
- package/dist/scripts/check-silent-catch.d.ts.map +1 -0
- package/dist/scripts/check-silent-catch.js +159 -0
- package/dist/scripts/check-silent-catch.js.map +1 -0
- package/dist/src/auth/jwt.d.ts +2 -0
- package/dist/src/auth/jwt.d.ts.map +1 -1
- package/dist/src/auth/jwt.js +15 -3
- package/dist/src/auth/jwt.js.map +1 -1
- package/dist/src/auth/keypair.d.ts.map +1 -1
- package/dist/src/auth/keypair.js +3 -0
- package/dist/src/auth/keypair.js.map +1 -1
- package/dist/src/auth/middleware.d.ts +2 -0
- package/dist/src/auth/middleware.d.ts.map +1 -1
- package/dist/src/auth/middleware.js +33 -14
- package/dist/src/auth/middleware.js.map +1 -1
- package/dist/src/auth/node-keys.d.ts.map +1 -1
- package/dist/src/auth/node-keys.js +59 -16
- package/dist/src/auth/node-keys.js.map +1 -1
- package/dist/src/cli/config-import.d.ts.map +1 -1
- package/dist/src/cli/config-import.js +3 -1
- package/dist/src/cli/config-import.js.map +1 -1
- package/dist/src/cli/connect/auth.d.ts.map +1 -1
- package/dist/src/cli/connect/auth.js +1 -0
- package/dist/src/cli/connect/auth.js.map +1 -1
- package/dist/src/cli/connect/config.d.ts.map +1 -1
- package/dist/src/cli/connect/config.js +3 -1
- package/dist/src/cli/connect/config.js.map +1 -1
- package/dist/src/cli/connect/keychain.d.ts.map +1 -1
- package/dist/src/cli/connect/keychain.js +6 -2
- package/dist/src/cli/connect/keychain.js.map +1 -1
- package/dist/src/cli/connect/mcp/local-server.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/local-server.js +9 -2
- package/dist/src/cli/connect/mcp/local-server.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/workspaces.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/workspaces.js +2 -0
- package/dist/src/cli/connect/mcp/tools/workspaces.js.map +1 -1
- package/dist/src/cli/connect/task-runner.d.ts.map +1 -1
- package/dist/src/cli/connect/task-runner.js +11 -4
- package/dist/src/cli/connect/task-runner.js.map +1 -1
- package/dist/src/cli/connect/tool-call-helpers.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-helpers.js +1 -0
- package/dist/src/cli/connect/tool-call-helpers.js.map +1 -1
- package/dist/src/cli/connect/tunnel-client.d.ts.map +1 -1
- package/dist/src/cli/connect/tunnel-client.js +26 -8
- package/dist/src/cli/connect/tunnel-client.js.map +1 -1
- package/dist/src/cli/federation-join.d.ts.map +1 -1
- package/dist/src/cli/federation-join.js +7 -3
- package/dist/src/cli/federation-join.js.map +1 -1
- package/dist/src/cli/init-wizard/presets.d.ts.map +1 -1
- package/dist/src/cli/init-wizard/presets.js +21 -0
- package/dist/src/cli/init-wizard/presets.js.map +1 -1
- package/dist/src/cli/init-wizard/steps-advanced.d.ts.map +1 -1
- package/dist/src/cli/init-wizard/steps-advanced.js +2 -0
- package/dist/src/cli/init-wizard/steps-advanced.js.map +1 -1
- package/dist/src/cli/init-wizard/steps-operator.d.ts.map +1 -1
- package/dist/src/cli/init-wizard/steps-operator.js +10 -0
- package/dist/src/cli/init-wizard/steps-operator.js.map +1 -1
- package/dist/src/commerce/invoice-handler.d.ts +5 -0
- package/dist/src/commerce/invoice-handler.d.ts.map +1 -0
- package/dist/src/commerce/invoice-handler.js +41 -0
- package/dist/src/commerce/invoice-handler.js.map +1 -0
- package/dist/src/commerce/payable-book.d.ts +31 -0
- package/dist/src/commerce/payable-book.d.ts.map +1 -0
- package/dist/src/commerce/payable-book.js +27 -0
- package/dist/src/commerce/payable-book.js.map +1 -0
- package/dist/src/commerce/payment-handlers.d.ts.map +1 -1
- package/dist/src/commerce/payment-handlers.js +8 -4
- package/dist/src/commerce/payment-handlers.js.map +1 -1
- package/dist/src/commerce/sellable-resolvers.d.ts +6 -6
- package/dist/src/commerce/sellable-resolvers.d.ts.map +1 -1
- package/dist/src/commerce/sellable-resolvers.js +17 -4
- package/dist/src/commerce/sellable-resolvers.js.map +1 -1
- package/dist/src/commerce/session-service.js +2 -2
- package/dist/src/commerce/session-service.js.map +1 -1
- package/dist/src/commerce/stripe-handler.d.ts +33 -0
- package/dist/src/commerce/stripe-handler.d.ts.map +1 -0
- package/dist/src/commerce/stripe-handler.js +108 -0
- package/dist/src/commerce/stripe-handler.js.map +1 -0
- package/dist/src/commerce/types.d.ts +10 -12
- package/dist/src/commerce/types.d.ts.map +1 -1
- package/dist/src/commerce/x402-facilitator.d.ts.map +1 -1
- package/dist/src/commerce/x402-facilitator.js +1 -0
- package/dist/src/commerce/x402-facilitator.js.map +1 -1
- package/dist/src/config-types.d.ts +66 -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 +62 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/data/library-packs/sdk.d.ts +4 -0
- package/dist/src/data/library-packs/sdk.d.ts.map +1 -1
- package/dist/src/data/library-packs/sdk.js +46 -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 +88 -0
- package/dist/src/data/library-packs/vendored.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +472 -26
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/index-connect.d.ts.map +1 -1
- package/dist/src/index-connect.js +4 -1
- package/dist/src/index-connect.js.map +1 -1
- package/dist/src/index-start.d.ts.map +1 -1
- package/dist/src/index-start.js +10 -6
- package/dist/src/index-start.js.map +1 -1
- package/dist/src/mcp/app-template-proposals.d.ts.map +1 -1
- package/dist/src/mcp/app-template-proposals.js +2 -1
- package/dist/src/mcp/app-template-proposals.js.map +1 -1
- package/dist/src/mcp/apps.d.ts.map +1 -1
- package/dist/src/mcp/apps.js +4 -3
- package/dist/src/mcp/apps.js.map +1 -1
- package/dist/src/mcp/capabilities.d.ts.map +1 -1
- package/dist/src/mcp/capabilities.js +3 -2
- package/dist/src/mcp/capabilities.js.map +1 -1
- package/dist/src/mcp/catalog/scopes.d.ts +0 -1
- package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
- package/dist/src/mcp/catalog/scopes.js +2 -11
- package/dist/src/mcp/catalog/scopes.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.d.ts +1 -7
- package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +10 -16
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/commerce.d.ts.map +1 -1
- package/dist/src/mcp/commerce.js +35 -3
- package/dist/src/mcp/commerce.js.map +1 -1
- package/dist/src/mcp/core.d.ts.map +1 -1
- package/dist/src/mcp/core.js +3 -2
- package/dist/src/mcp/core.js.map +1 -1
- package/dist/src/mcp/exchange-run.d.ts +28 -0
- package/dist/src/mcp/exchange-run.d.ts.map +1 -1
- package/dist/src/mcp/exchange-run.js +58 -37
- package/dist/src/mcp/exchange-run.js.map +1 -1
- package/dist/src/mcp/exchange.d.ts.map +1 -1
- package/dist/src/mcp/exchange.js +9 -7
- 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 +60 -106
- package/dist/src/mcp/extensions.js.map +1 -1
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +1 -5
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/mcp/knowledge.d.ts.map +1 -1
- package/dist/src/mcp/knowledge.js +1 -0
- package/dist/src/mcp/knowledge.js.map +1 -1
- package/dist/src/mcp/oauth.d.ts +3 -0
- package/dist/src/mcp/oauth.d.ts.map +1 -1
- package/dist/src/mcp/oauth.js +13 -8
- package/dist/src/mcp/oauth.js.map +1 -1
- package/dist/src/mcp/workspaces.d.ts.map +1 -1
- package/dist/src/mcp/workspaces.js +7 -4
- package/dist/src/mcp/workspaces.js.map +1 -1
- package/dist/src/middleware/cors.d.ts.map +1 -1
- package/dist/src/middleware/cors.js +3 -1
- package/dist/src/middleware/cors.js.map +1 -1
- package/dist/src/middleware/subdomain.d.ts +4 -0
- package/dist/src/middleware/subdomain.d.ts.map +1 -1
- package/dist/src/middleware/subdomain.js +23 -2
- package/dist/src/middleware/subdomain.js.map +1 -1
- package/dist/src/models/app-tool-schemas.d.ts +35 -0
- package/dist/src/models/app-tool-schemas.d.ts.map +1 -1
- package/dist/src/models/app-tool-schemas.js +44 -0
- package/dist/src/models/app-tool-schemas.js.map +1 -1
- package/dist/src/routes/admin-config.d.ts.map +1 -1
- package/dist/src/routes/admin-config.js +4 -1
- package/dist/src/routes/admin-config.js.map +1 -1
- package/dist/src/routes/admin-extensions.d.ts.map +1 -1
- package/dist/src/routes/admin-extensions.js +2 -1
- package/dist/src/routes/admin-extensions.js.map +1 -1
- package/dist/src/routes/admin-monitoring.js +14 -5
- package/dist/src/routes/admin-monitoring.js.map +1 -1
- package/dist/src/routes/admin-security.d.ts.map +1 -1
- package/dist/src/routes/admin-security.js +4 -1
- package/dist/src/routes/admin-security.js.map +1 -1
- package/dist/src/routes/admin.d.ts.map +1 -1
- package/dist/src/routes/admin.js +6 -4
- package/dist/src/routes/admin.js.map +1 -1
- package/dist/src/routes/agent-activity.d.ts.map +1 -1
- package/dist/src/routes/agent-activity.js +4 -1
- package/dist/src/routes/agent-activity.js.map +1 -1
- package/dist/src/routes/agent-directives.d.ts +3 -10
- package/dist/src/routes/agent-directives.d.ts.map +1 -1
- package/dist/src/routes/agent-directives.js +7 -12
- package/dist/src/routes/agent-directives.js.map +1 -1
- package/dist/src/routes/agent-integration.d.ts.map +1 -1
- package/dist/src/routes/agent-integration.js +3 -1
- package/dist/src/routes/agent-integration.js.map +1 -1
- package/dist/src/routes/agent-messages.d.ts.map +1 -1
- package/dist/src/routes/agent-messages.js +5 -2
- package/dist/src/routes/agent-messages.js.map +1 -1
- package/dist/src/routes/agent-onboarding.d.ts.map +1 -1
- package/dist/src/routes/agent-onboarding.js +19 -6
- package/dist/src/routes/agent-onboarding.js.map +1 -1
- package/dist/src/routes/agent-skills-discovery.d.ts.map +1 -1
- package/dist/src/routes/agent-skills-discovery.js +2 -1
- package/dist/src/routes/agent-skills-discovery.js.map +1 -1
- package/dist/src/routes/agent-tasks/completion.js +1 -1
- package/dist/src/routes/agent-tasks/completion.js.map +1 -1
- package/dist/src/routes/agent-tasks/create-read.js +3 -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 +28 -9
- package/dist/src/routes/agent-tasks/lifecycle.js.map +1 -1
- package/dist/src/routes/agents/management.d.ts.map +1 -1
- package/dist/src/routes/agents/management.js +4 -1
- package/dist/src/routes/agents/management.js.map +1 -1
- 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/agents/profile-metadata.d.ts.map +1 -1
- package/dist/src/routes/agents/profile-metadata.js +2 -1
- package/dist/src/routes/agents/profile-metadata.js.map +1 -1
- package/dist/src/routes/app-grants.d.ts +7 -0
- package/dist/src/routes/app-grants.d.ts.map +1 -1
- package/dist/src/routes/app-grants.js +69 -4
- package/dist/src/routes/app-grants.js.map +1 -1
- package/dist/src/routes/appdev-overview.d.ts.map +1 -1
- package/dist/src/routes/appdev-overview.js +2 -1
- package/dist/src/routes/appdev-overview.js.map +1 -1
- package/dist/src/routes/apps/catalogue-admin.d.ts.map +1 -1
- package/dist/src/routes/apps/catalogue-admin.js +2 -1
- package/dist/src/routes/apps/catalogue-admin.js.map +1 -1
- package/dist/src/routes/apps/drafts.d.ts.map +1 -1
- package/dist/src/routes/apps/drafts.js +2 -1
- package/dist/src/routes/apps/drafts.js.map +1 -1
- package/dist/src/routes/apps/fork-manage.d.ts.map +1 -1
- package/dist/src/routes/apps/fork-manage.js +6 -3
- package/dist/src/routes/apps/fork-manage.js.map +1 -1
- package/dist/src/routes/apps/helpers.d.ts.map +1 -1
- package/dist/src/routes/apps/helpers.js +5 -1
- package/dist/src/routes/apps/helpers.js.map +1 -1
- package/dist/src/routes/apps/publish.d.ts.map +1 -1
- package/dist/src/routes/apps/publish.js +8 -3
- package/dist/src/routes/apps/publish.js.map +1 -1
- package/dist/src/routes/apps/read.d.ts.map +1 -1
- package/dist/src/routes/apps/read.js +2 -1
- package/dist/src/routes/apps/read.js.map +1 -1
- package/dist/src/routes/auth.d.ts.map +1 -1
- package/dist/src/routes/auth.js +2 -1
- package/dist/src/routes/auth.js.map +1 -1
- package/dist/src/routes/boards.js +1 -1
- package/dist/src/routes/boards.js.map +1 -1
- package/dist/src/routes/bootstrap.d.ts.map +1 -1
- package/dist/src/routes/bootstrap.js +8 -3
- package/dist/src/routes/bootstrap.js.map +1 -1
- package/dist/src/routes/capabilities.d.ts.map +1 -1
- package/dist/src/routes/capabilities.js +4 -3
- package/dist/src/routes/capabilities.js.map +1 -1
- package/dist/src/routes/commerce-acp.js +1 -1
- package/dist/src/routes/commerce-acp.js.map +1 -1
- package/dist/src/routes/commerce-ucp.d.ts +2 -3
- package/dist/src/routes/commerce-ucp.d.ts.map +1 -1
- package/dist/src/routes/commerce-ucp.js +6 -12
- package/dist/src/routes/commerce-ucp.js.map +1 -1
- package/dist/src/routes/commerce.d.ts +7 -1
- package/dist/src/routes/commerce.d.ts.map +1 -1
- package/dist/src/routes/commerce.js +65 -15
- package/dist/src/routes/commerce.js.map +1 -1
- package/dist/src/routes/csm.d.ts.map +1 -1
- package/dist/src/routes/csm.js +3 -1
- package/dist/src/routes/csm.js.map +1 -1
- package/dist/src/routes/ecosystem-apps.d.ts.map +1 -1
- package/dist/src/routes/ecosystem-apps.js +7 -6
- package/dist/src/routes/ecosystem-apps.js.map +1 -1
- package/dist/src/routes/exchange-market.d.ts.map +1 -1
- package/dist/src/routes/exchange-market.js +10 -6
- package/dist/src/routes/exchange-market.js.map +1 -1
- package/dist/src/routes/exchange.d.ts +10 -1
- package/dist/src/routes/exchange.d.ts.map +1 -1
- package/dist/src/routes/exchange.js +344 -9
- package/dist/src/routes/exchange.js.map +1 -1
- package/dist/src/routes/extensions/actions.d.ts +2 -0
- package/dist/src/routes/extensions/actions.d.ts.map +1 -1
- package/dist/src/routes/extensions/actions.js +47 -8
- package/dist/src/routes/extensions/actions.js.map +1 -1
- package/dist/src/routes/extensions/entitlement-gate.d.ts +44 -7
- package/dist/src/routes/extensions/entitlement-gate.d.ts.map +1 -1
- package/dist/src/routes/extensions/entitlement-gate.js +21 -142
- package/dist/src/routes/extensions/entitlement-gate.js.map +1 -1
- package/dist/src/routes/extensions/internal-pass.d.ts +23 -0
- package/dist/src/routes/extensions/internal-pass.d.ts.map +1 -0
- package/dist/src/routes/extensions/internal-pass.js +70 -0
- package/dist/src/routes/extensions/internal-pass.js.map +1 -0
- package/dist/src/routes/extensions/manifest.d.ts +4 -0
- package/dist/src/routes/extensions/manifest.d.ts.map +1 -1
- package/dist/src/routes/extensions/manifest.js +68 -4
- package/dist/src/routes/extensions/manifest.js.map +1 -1
- package/dist/src/routes/extensions/metered-response.d.ts +37 -0
- package/dist/src/routes/extensions/metered-response.d.ts.map +1 -0
- package/dist/src/routes/extensions/metered-response.js +60 -0
- package/dist/src/routes/extensions/metered-response.js.map +1 -0
- package/dist/src/routes/extensions/pacing.d.ts +31 -0
- package/dist/src/routes/extensions/pacing.d.ts.map +1 -1
- package/dist/src/routes/extensions/pacing.js +5 -33
- package/dist/src/routes/extensions/pacing.js.map +1 -1
- package/dist/src/routes/extensions/paywall.d.ts +16 -0
- package/dist/src/routes/extensions/paywall.d.ts.map +1 -1
- package/dist/src/routes/extensions/paywall.js +157 -8
- package/dist/src/routes/extensions/paywall.js.map +1 -1
- package/dist/src/routes/extensions/priced-binding.d.ts +50 -0
- package/dist/src/routes/extensions/priced-binding.d.ts.map +1 -0
- package/dist/src/routes/extensions/priced-binding.js +46 -0
- package/dist/src/routes/extensions/priced-binding.js.map +1 -0
- package/dist/src/routes/federation-genesis.d.ts.map +1 -1
- package/dist/src/routes/federation-genesis.js +14 -5
- package/dist/src/routes/federation-genesis.js.map +1 -1
- package/dist/src/routes/federation-peer/introduce.d.ts.map +1 -1
- package/dist/src/routes/federation-peer/introduce.js +3 -1
- package/dist/src/routes/federation-peer/introduce.js.map +1 -1
- package/dist/src/routes/federation-peer/lifecycle.d.ts.map +1 -1
- package/dist/src/routes/federation-peer/lifecycle.js +3 -2
- package/dist/src/routes/federation-peer/lifecycle.js.map +1 -1
- package/dist/src/routes/federation-peer/peers.d.ts.map +1 -1
- package/dist/src/routes/federation-peer/peers.js +5 -3
- package/dist/src/routes/federation-peer/peers.js.map +1 -1
- package/dist/src/routes/federation-peer/policy-book.d.ts.map +1 -1
- package/dist/src/routes/federation-peer/policy-book.js +2 -1
- package/dist/src/routes/federation-peer/policy-book.js.map +1 -1
- package/dist/src/routes/federation-peer/promotion.d.ts.map +1 -1
- package/dist/src/routes/federation-peer/promotion.js +4 -1
- package/dist/src/routes/federation-peer/promotion.js.map +1 -1
- package/dist/src/routes/federation-settlements.js +2 -2
- package/dist/src/routes/federation-settlements.js.map +1 -1
- package/dist/src/routes/federation-sync/catalogue-trust.js +5 -3
- package/dist/src/routes/federation-sync/catalogue-trust.js.map +1 -1
- package/dist/src/routes/federation-sync/messaging.js +5 -3
- package/dist/src/routes/federation-sync/messaging.js.map +1 -1
- package/dist/src/routes/federation-sync/routing.d.ts.map +1 -1
- package/dist/src/routes/federation-sync/routing.js +7 -5
- package/dist/src/routes/federation-sync/routing.js.map +1 -1
- package/dist/src/routes/flags.d.ts.map +1 -1
- package/dist/src/routes/flags.js +3 -1
- package/dist/src/routes/flags.js.map +1 -1
- package/dist/src/routes/ghii/register-login.js +1 -1
- package/dist/src/routes/ghii/register-login.js.map +1 -1
- package/dist/src/routes/instances/install.d.ts.map +1 -1
- package/dist/src/routes/instances/install.js +2 -1
- package/dist/src/routes/instances/install.js.map +1 -1
- package/dist/src/routes/instances/manage.d.ts.map +1 -1
- package/dist/src/routes/instances/manage.js +2 -1
- package/dist/src/routes/instances/manage.js.map +1 -1
- package/dist/src/routes/knowledge/packages-core.d.ts.map +1 -1
- package/dist/src/routes/knowledge/packages-core.js +2 -1
- package/dist/src/routes/knowledge/packages-core.js.map +1 -1
- package/dist/src/routes/knowledge/sharing.d.ts.map +1 -1
- package/dist/src/routes/knowledge/sharing.js +2 -1
- package/dist/src/routes/knowledge/sharing.js.map +1 -1
- package/dist/src/routes/library-packs.d.ts.map +1 -1
- package/dist/src/routes/library-packs.js +10 -3
- package/dist/src/routes/library-packs.js.map +1 -1
- package/dist/src/routes/libs.d.ts +9 -0
- package/dist/src/routes/libs.d.ts.map +1 -1
- package/dist/src/routes/libs.js +11 -2
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/matches.d.ts.map +1 -1
- package/dist/src/routes/matches.js +7 -3
- package/dist/src/routes/matches.js.map +1 -1
- package/dist/src/routes/memory/bulk.d.ts.map +1 -1
- package/dist/src/routes/memory/bulk.js +3 -1
- package/dist/src/routes/memory/bulk.js.map +1 -1
- package/dist/src/routes/memory/crud.d.ts.map +1 -1
- package/dist/src/routes/memory/crud.js +4 -2
- package/dist/src/routes/memory/crud.js.map +1 -1
- package/dist/src/routes/memory/federation.d.ts.map +1 -1
- package/dist/src/routes/memory/federation.js +5 -0
- package/dist/src/routes/memory/federation.js.map +1 -1
- package/dist/src/routes/memory/key.d.ts.map +1 -1
- package/dist/src/routes/memory/key.js +9 -4
- package/dist/src/routes/memory/key.js.map +1 -1
- package/dist/src/routes/messages.d.ts.map +1 -1
- package/dist/src/routes/messages.js +2 -1
- package/dist/src/routes/messages.js.map +1 -1
- package/dist/src/routes/msm.d.ts.map +1 -1
- package/dist/src/routes/msm.js +3 -1
- package/dist/src/routes/msm.js.map +1 -1
- package/dist/src/routes/oauth-login.d.ts.map +1 -1
- package/dist/src/routes/oauth-login.js +1 -0
- package/dist/src/routes/oauth-login.js.map +1 -1
- package/dist/src/routes/openrouter.js +2 -2
- package/dist/src/routes/openrouter.js.map +1 -1
- package/dist/src/routes/organisms/crud.d.ts.map +1 -1
- package/dist/src/routes/organisms/crud.js +3 -2
- package/dist/src/routes/organisms/crud.js.map +1 -1
- package/dist/src/routes/organisms/gates.d.ts.map +1 -1
- package/dist/src/routes/organisms/gates.js +3 -2
- package/dist/src/routes/organisms/gates.js.map +1 -1
- package/dist/src/routes/organisms/intake.d.ts.map +1 -1
- package/dist/src/routes/organisms/intake.js +13 -1
- package/dist/src/routes/organisms/intake.js.map +1 -1
- package/dist/src/routes/organisms/shared.d.ts.map +1 -1
- package/dist/src/routes/organisms/shared.js +7 -3
- package/dist/src/routes/organisms/shared.js.map +1 -1
- package/dist/src/routes/organisms/workspace-ops.d.ts.map +1 -1
- package/dist/src/routes/organisms/workspace-ops.js +6 -5
- package/dist/src/routes/organisms/workspace-ops.js.map +1 -1
- package/dist/src/routes/organisms/workspace-read.d.ts.map +1 -1
- package/dist/src/routes/organisms/workspace-read.js +4 -2
- package/dist/src/routes/organisms/workspace-read.js.map +1 -1
- package/dist/src/routes/owners.d.ts.map +1 -1
- package/dist/src/routes/owners.js +37 -12
- package/dist/src/routes/owners.js.map +1 -1
- package/dist/src/routes/personal.js +3 -1
- package/dist/src/routes/personal.js.map +1 -1
- package/dist/src/routes/portal.d.ts +6 -1
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +75 -10
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/routes/portfolio.d.ts.map +1 -1
- package/dist/src/routes/portfolio.js +5 -1
- package/dist/src/routes/portfolio.js.map +1 -1
- package/dist/src/routes/prompts.d.ts.map +1 -1
- package/dist/src/routes/prompts.js +36 -2
- package/dist/src/routes/prompts.js.map +1 -1
- package/dist/src/routes/public-events.d.ts.map +1 -1
- package/dist/src/routes/public-events.js +4 -1
- package/dist/src/routes/public-events.js.map +1 -1
- package/dist/src/routes/public-stats.d.ts.map +1 -1
- package/dist/src/routes/public-stats.js +29 -10
- package/dist/src/routes/public-stats.js.map +1 -1
- package/dist/src/routes/schedules.d.ts +3 -0
- package/dist/src/routes/schedules.d.ts.map +1 -1
- package/dist/src/routes/schedules.js +14 -1
- package/dist/src/routes/schedules.js.map +1 -1
- package/dist/src/routes/stats.d.ts.map +1 -1
- package/dist/src/routes/stats.js +5 -1
- package/dist/src/routes/stats.js.map +1 -1
- package/dist/src/routes/storage-files.d.ts +4 -0
- package/dist/src/routes/storage-files.d.ts.map +1 -1
- package/dist/src/routes/storage-files.js +11 -0
- package/dist/src/routes/storage-files.js.map +1 -1
- package/dist/src/routes/subdomains.d.ts +9 -0
- package/dist/src/routes/subdomains.d.ts.map +1 -1
- package/dist/src/routes/subdomains.js +66 -5
- package/dist/src/routes/subdomains.js.map +1 -1
- package/dist/src/routes/unfurl.d.ts.map +1 -1
- package/dist/src/routes/unfurl.js +13 -3
- package/dist/src/routes/unfurl.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 +99 -9
- package/dist/src/routes/upload.js.map +1 -1
- package/dist/src/routes/wallet.d.ts +3 -0
- package/dist/src/routes/wallet.d.ts.map +1 -1
- package/dist/src/routes/wallet.js +6 -1
- package/dist/src/routes/wallet.js.map +1 -1
- package/dist/src/routes/webmcp.d.ts +8 -0
- package/dist/src/routes/webmcp.d.ts.map +1 -1
- package/dist/src/routes/webmcp.js +96 -49
- package/dist/src/routes/webmcp.js.map +1 -1
- package/dist/src/routes/wellknown.d.ts.map +1 -1
- package/dist/src/routes/wellknown.js +1 -0
- package/dist/src/routes/wellknown.js.map +1 -1
- package/dist/src/server-bootstrap/config-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/config-init.js +2 -0
- package/dist/src/server-bootstrap/config-init.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts +4 -2
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +11 -22
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server-bootstrap/service-init.js +3 -1
- 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 +3 -1
- package/dist/src/server-bootstrap/static-files.js.map +1 -1
- package/dist/src/services/agent-statistics.d.ts.map +1 -1
- package/dist/src/services/agent-statistics.js +4 -1
- package/dist/src/services/agent-statistics.js.map +1 -1
- package/dist/src/services/app-agent-deploy.d.ts.map +1 -1
- package/dist/src/services/app-agent-deploy.js +4 -1
- package/dist/src/services/app-agent-deploy.js.map +1 -1
- package/dist/src/services/app-agent-surface.d.ts +78 -0
- package/dist/src/services/app-agent-surface.d.ts.map +1 -0
- package/dist/src/services/app-agent-surface.js +74 -0
- package/dist/src/services/app-agent-surface.js.map +1 -0
- package/dist/src/services/app-tool-names.d.ts +15 -0
- package/dist/src/services/app-tool-names.d.ts.map +1 -0
- package/dist/src/services/app-tool-names.js +24 -0
- package/dist/src/services/app-tool-names.js.map +1 -0
- package/dist/src/services/appdev-overview.d.ts.map +1 -1
- package/dist/src/services/appdev-overview.js +3 -2
- package/dist/src/services/appdev-overview.js.map +1 -1
- package/dist/src/services/attachment-duplication.js +3 -3
- package/dist/src/services/attachment-duplication.js.map +1 -1
- package/dist/src/services/build-extension-prompt.d.ts +40 -0
- package/dist/src/services/build-extension-prompt.d.ts.map +1 -0
- package/dist/src/services/build-extension-prompt.js +253 -0
- package/dist/src/services/build-extension-prompt.js.map +1 -0
- package/dist/src/services/cache-cleanup.d.ts.map +1 -1
- package/dist/src/services/cache-cleanup.js +2 -1
- package/dist/src/services/cache-cleanup.js.map +1 -1
- package/dist/src/services/call-timing.d.ts.map +1 -1
- package/dist/src/services/call-timing.js +2 -1
- package/dist/src/services/call-timing.js.map +1 -1
- package/dist/src/services/capability-invoke.d.ts +6 -1
- package/dist/src/services/capability-invoke.d.ts.map +1 -1
- package/dist/src/services/capability-invoke.js +14 -2
- package/dist/src/services/capability-invoke.js.map +1 -1
- package/dist/src/services/catalogue-sync.d.ts.map +1 -1
- package/dist/src/services/catalogue-sync.js +1 -0
- package/dist/src/services/catalogue-sync.js.map +1 -1
- package/dist/src/services/component-registrar.d.ts.map +1 -1
- package/dist/src/services/component-registrar.js +22 -6
- package/dist/src/services/component-registrar.js.map +1 -1
- package/dist/src/services/config-loader.d.ts.map +1 -1
- package/dist/src/services/config-loader.js +6 -1
- package/dist/src/services/config-loader.js.map +1 -1
- package/dist/src/services/config-schema.d.ts.map +1 -1
- package/dist/src/services/config-schema.js +1 -0
- package/dist/src/services/config-schema.js.map +1 -1
- package/dist/src/services/connect-tunnel.d.ts.map +1 -1
- package/dist/src/services/connect-tunnel.js +17 -6
- package/dist/src/services/connect-tunnel.js.map +1 -1
- package/dist/src/services/consent.d.ts.map +1 -1
- package/dist/src/services/consent.js +3 -1
- package/dist/src/services/consent.js.map +1 -1
- package/dist/src/services/consul-config.d.ts.map +1 -1
- package/dist/src/services/consul-config.js +7 -2
- package/dist/src/services/consul-config.js.map +1 -1
- package/dist/src/services/contacts.js +4 -2
- package/dist/src/services/contacts.js.map +1 -1
- package/dist/src/services/core-jobs.js +1 -1
- package/dist/src/services/core-jobs.js.map +1 -1
- package/dist/src/services/db/agent-messages-overview-db-service.d.ts.map +1 -1
- package/dist/src/services/db/agent-messages-overview-db-service.js +2 -1
- package/dist/src/services/db/agent-messages-overview-db-service.js.map +1 -1
- package/dist/src/services/db/agent-quality-overview-db-service.d.ts.map +1 -1
- package/dist/src/services/db/agent-quality-overview-db-service.js +2 -1
- package/dist/src/services/db/agent-quality-overview-db-service.js.map +1 -1
- package/dist/src/services/db/messages-inbox-db-service.d.ts.map +1 -1
- package/dist/src/services/db/messages-inbox-db-service.js +3 -2
- package/dist/src/services/db/messages-inbox-db-service.js.map +1 -1
- package/dist/src/services/db/messaging-db-service.d.ts.map +1 -1
- package/dist/src/services/db/messaging-db-service.js +3 -2
- package/dist/src/services/db/messaging-db-service.js.map +1 -1
- package/dist/src/services/db/wallet-tab-db-service.d.ts +3 -3
- package/dist/src/services/doc-images.d.ts.map +1 -1
- package/dist/src/services/doc-images.js +7 -4
- package/dist/src/services/doc-images.js.map +1 -1
- package/dist/src/services/ecosystem-automation-notify.d.ts.map +1 -1
- package/dist/src/services/ecosystem-automation-notify.js +10 -4
- package/dist/src/services/ecosystem-automation-notify.js.map +1 -1
- package/dist/src/services/ecosystem-automation.d.ts.map +1 -1
- package/dist/src/services/ecosystem-automation.js +3 -2
- package/dist/src/services/ecosystem-automation.js.map +1 -1
- package/dist/src/services/ecosystem-events.js +1 -1
- package/dist/src/services/ecosystem-events.js.map +1 -1
- package/dist/src/services/entitlement-merge.d.ts +50 -0
- package/dist/src/services/entitlement-merge.d.ts.map +1 -0
- package/dist/src/services/entitlement-merge.js +116 -0
- package/dist/src/services/entitlement-merge.js.map +1 -0
- package/dist/src/services/entitlement-money.d.ts.map +1 -1
- package/dist/src/services/entitlement-money.js +4 -1
- package/dist/src/services/entitlement-money.js.map +1 -1
- package/dist/src/services/exchange-market.d.ts +47 -2
- package/dist/src/services/exchange-market.d.ts.map +1 -1
- package/dist/src/services/exchange-market.js +80 -9
- package/dist/src/services/exchange-market.js.map +1 -1
- package/dist/src/services/exchange-projection.d.ts +8 -2
- package/dist/src/services/exchange-projection.d.ts.map +1 -1
- package/dist/src/services/exchange-projection.js +146 -21
- package/dist/src/services/exchange-projection.js.map +1 -1
- package/dist/src/services/exchange-proposals.d.ts.map +1 -1
- package/dist/src/services/exchange-proposals.js +4 -2
- package/dist/src/services/exchange-proposals.js.map +1 -1
- package/dist/src/services/extension-purchase.d.ts +36 -0
- package/dist/src/services/extension-purchase.d.ts.map +1 -0
- package/dist/src/services/extension-purchase.js +110 -0
- package/dist/src/services/extension-purchase.js.map +1 -0
- package/dist/src/services/extension-runtime.d.ts +23 -1
- package/dist/src/services/extension-runtime.d.ts.map +1 -1
- package/dist/src/services/extension-runtime.js +21 -4
- package/dist/src/services/extension-runtime.js.map +1 -1
- package/dist/src/services/extension-secrets.d.ts +8 -0
- package/dist/src/services/extension-secrets.d.ts.map +1 -1
- package/dist/src/services/extension-secrets.js +14 -0
- package/dist/src/services/extension-secrets.js.map +1 -1
- package/dist/src/services/federation-availability.d.ts.map +1 -1
- package/dist/src/services/federation-availability.js +1 -0
- package/dist/src/services/federation-availability.js.map +1 -1
- package/dist/src/services/federation-book.js +15 -7
- package/dist/src/services/federation-book.js.map +1 -1
- package/dist/src/services/federation-helpers.d.ts.map +1 -1
- package/dist/src/services/federation-helpers.js +1 -0
- package/dist/src/services/federation-helpers.js.map +1 -1
- package/dist/src/services/federation.d.ts.map +1 -1
- package/dist/src/services/federation.js +8 -6
- package/dist/src/services/federation.js.map +1 -1
- package/dist/src/services/gate-expiry.d.ts.map +1 -1
- package/dist/src/services/gate-expiry.js +2 -1
- package/dist/src/services/gate-expiry.js.map +1 -1
- package/dist/src/services/genesis-sync.d.ts.map +1 -1
- package/dist/src/services/genesis-sync.js +9 -4
- package/dist/src/services/genesis-sync.js.map +1 -1
- package/dist/src/services/handbooks/commerce.d.ts +13 -0
- package/dist/src/services/handbooks/commerce.d.ts.map +1 -0
- package/dist/src/services/handbooks/commerce.js +60 -0
- package/dist/src/services/handbooks/commerce.js.map +1 -0
- package/dist/src/services/handbooks/index.d.ts +1 -0
- package/dist/src/services/handbooks/index.d.ts.map +1 -1
- package/dist/src/services/handbooks/index.js +2 -2
- package/dist/src/services/handbooks/index.js.map +1 -1
- package/dist/src/services/hooks.d.ts.map +1 -1
- package/dist/src/services/hooks.js +2 -0
- package/dist/src/services/hooks.js.map +1 -1
- package/dist/src/services/invitations.d.ts.map +1 -1
- package/dist/src/services/invitations.js +2 -0
- package/dist/src/services/invitations.js.map +1 -1
- package/dist/src/services/living-author.d.ts.map +1 -1
- package/dist/src/services/living-author.js +4 -1
- package/dist/src/services/living-author.js.map +1 -1
- package/dist/src/services/living-pulse.js +18 -6
- package/dist/src/services/living-pulse.js.map +1 -1
- package/dist/src/services/mailbox-notification.d.ts.map +1 -1
- package/dist/src/services/mailbox-notification.js +1 -0
- package/dist/src/services/mailbox-notification.js.map +1 -1
- package/dist/src/services/match-notification.d.ts.map +1 -1
- package/dist/src/services/match-notification.js +2 -1
- package/dist/src/services/match-notification.js.map +1 -1
- package/dist/src/services/matching.d.ts.map +1 -1
- package/dist/src/services/matching.js +5 -2
- package/dist/src/services/matching.js.map +1 -1
- package/dist/src/services/memory-replication.d.ts.map +1 -1
- package/dist/src/services/memory-replication.js +3 -1
- package/dist/src/services/memory-replication.js.map +1 -1
- package/dist/src/services/message-broadcast.d.ts.map +1 -1
- package/dist/src/services/message-broadcast.js +2 -1
- package/dist/src/services/message-broadcast.js.map +1 -1
- package/dist/src/services/message-delivery.d.ts.map +1 -1
- package/dist/src/services/message-delivery.js +9 -4
- package/dist/src/services/message-delivery.js.map +1 -1
- package/dist/src/services/metered-access.d.ts +148 -0
- package/dist/src/services/metered-access.d.ts.map +1 -0
- package/dist/src/services/metered-access.js +128 -0
- package/dist/src/services/metered-access.js.map +1 -0
- package/dist/src/services/metered-entitlements.d.ts +140 -5
- package/dist/src/services/metered-entitlements.d.ts.map +1 -1
- package/dist/src/services/metered-entitlements.js +247 -30
- package/dist/src/services/metered-entitlements.js.map +1 -1
- package/dist/src/services/metered-settlement.d.ts +45 -0
- package/dist/src/services/metered-settlement.d.ts.map +1 -0
- package/dist/src/services/metered-settlement.js +117 -0
- package/dist/src/services/metered-settlement.js.map +1 -0
- package/dist/src/services/network-policy.d.ts.map +1 -1
- package/dist/src/services/network-policy.js +6 -2
- package/dist/src/services/network-policy.js.map +1 -1
- package/dist/src/services/notebook-classify.d.ts.map +1 -1
- package/dist/src/services/notebook-classify.js +7 -2
- package/dist/src/services/notebook-classify.js.map +1 -1
- package/dist/src/services/notebook-plan.d.ts.map +1 -1
- package/dist/src/services/notebook-plan.js +4 -1
- package/dist/src/services/notebook-plan.js.map +1 -1
- package/dist/src/services/notify.d.ts.map +1 -1
- package/dist/src/services/notify.js +6 -3
- package/dist/src/services/notify.js.map +1 -1
- package/dist/src/services/openrouter.d.ts.map +1 -1
- package/dist/src/services/openrouter.js +1 -0
- package/dist/src/services/openrouter.js.map +1 -1
- package/dist/src/services/organism-export.d.ts.map +1 -1
- package/dist/src/services/organism-export.js +4 -1
- package/dist/src/services/organism-export.js.map +1 -1
- package/dist/src/services/organism-import.d.ts.map +1 -1
- package/dist/src/services/organism-import.js +5 -1
- package/dist/src/services/organism-import.js.map +1 -1
- package/dist/src/services/perf-trace.js +3 -1
- package/dist/src/services/perf-trace.js.map +1 -1
- package/dist/src/services/personal-tunnel.js +14 -8
- package/dist/src/services/personal-tunnel.js.map +1 -1
- package/dist/src/services/presence.d.ts.map +1 -1
- package/dist/src/services/presence.js +11 -5
- package/dist/src/services/presence.js.map +1 -1
- package/dist/src/services/protected-resource.d.ts +60 -0
- package/dist/src/services/protected-resource.d.ts.map +1 -0
- package/dist/src/services/protected-resource.js +137 -0
- package/dist/src/services/protected-resource.js.map +1 -0
- package/dist/src/services/realtime-manager.d.ts.map +1 -1
- package/dist/src/services/realtime-manager.js +8 -5
- package/dist/src/services/realtime-manager.js.map +1 -1
- package/dist/src/services/safe-zip.d.ts.map +1 -1
- package/dist/src/services/safe-zip.js +4 -1
- package/dist/src/services/safe-zip.js.map +1 -1
- package/dist/src/services/scheduler-extension-job.js +2 -2
- package/dist/src/services/scheduler-extension-job.js.map +1 -1
- package/dist/src/services/scheduler.js +13 -7
- package/dist/src/services/scheduler.js.map +1 -1
- package/dist/src/services/security-incident.d.ts.map +1 -1
- package/dist/src/services/security-incident.js +7 -2
- package/dist/src/services/security-incident.js.map +1 -1
- package/dist/src/services/site-sync.d.ts.map +1 -1
- package/dist/src/services/site-sync.js +1 -0
- package/dist/src/services/site-sync.js.map +1 -1
- package/dist/src/services/site.d.ts +1 -1
- package/dist/src/services/site.d.ts.map +1 -1
- package/dist/src/services/site.js +29 -8
- package/dist/src/services/site.js.map +1 -1
- package/dist/src/services/structure-overview.d.ts.map +1 -1
- package/dist/src/services/structure-overview.js +4 -1
- package/dist/src/services/structure-overview.js.map +1 -1
- package/dist/src/services/structure-snapshot.d.ts.map +1 -1
- package/dist/src/services/structure-snapshot.js +3 -2
- package/dist/src/services/structure-snapshot.js.map +1 -1
- package/dist/src/services/sync-scheduler.js +3 -2
- package/dist/src/services/sync-scheduler.js.map +1 -1
- package/dist/src/services/tracked-response.js +1 -1
- package/dist/src/services/tracked-response.js.map +1 -1
- package/dist/src/services/trust-broadcast.d.ts.map +1 -1
- package/dist/src/services/trust-broadcast.js +1 -0
- package/dist/src/services/trust-broadcast.js.map +1 -1
- package/dist/src/services/upload-zip.d.ts +7 -0
- package/dist/src/services/upload-zip.d.ts.map +1 -1
- package/dist/src/services/upload-zip.js +19 -85
- package/dist/src/services/upload-zip.js.map +1 -1
- package/dist/src/services/web-bot-auth.d.ts.map +1 -1
- package/dist/src/services/web-bot-auth.js +1 -0
- package/dist/src/services/web-bot-auth.js.map +1 -1
- package/dist/src/services/workflow/engine-steps.d.ts.map +1 -1
- package/dist/src/services/workflow/engine-steps.js +12 -6
- package/dist/src/services/workflow/engine-steps.js.map +1 -1
- package/dist/src/services/workspace-export.d.ts.map +1 -1
- package/dist/src/services/workspace-export.js +5 -2
- package/dist/src/services/workspace-export.js.map +1 -1
- package/dist/src/services/workspace-import.d.ts.map +1 -1
- package/dist/src/services/workspace-import.js +2 -1
- package/dist/src/services/workspace-import.js.map +1 -1
- package/dist/src/services/workspace-versions.d.ts.map +1 -1
- package/dist/src/services/workspace-versions.js +0 -0
- package/dist/src/services/workspace-versions.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/db-types.d.ts +5 -0
- package/dist/src/storage/providers/postgres-kysely/db-types.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/helpers.d.ts +11 -0
- package/dist/src/storage/providers/postgres-kysely/helpers.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/helpers.js +14 -0
- package/dist/src/storage/providers/postgres-kysely/helpers.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts +1 -1
- 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 +6 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/capabilities.js +3 -3
- package/dist/src/storage/providers/postgres-kysely/methods/capabilities.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/ecosystem.js +3 -3
- package/dist/src/storage/providers/postgres-kysely/methods/ecosystem.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/federation.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/federation.js +12 -10
- package/dist/src/storage/providers/postgres-kysely/methods/federation.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/identity.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/identity.js +26 -12
- package/dist/src/storage/providers/postgres-kysely/methods/identity.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/marketplace.js +5 -5
- package/dist/src/storage/providers/postgres-kysely/methods/marketplace.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/node-ext-escrow.d.ts +9 -0
- package/dist/src/storage/providers/postgres-kysely/methods/node-ext-escrow.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/node-ext-escrow.js +31 -27
- package/dist/src/storage/providers/postgres-kysely/methods/node-ext-escrow.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 +10 -14
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/otk.js +3 -3
- package/dist/src/storage/providers/postgres-kysely/methods/otk.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/packages.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/packages.js +4 -14
- package/dist/src/storage/providers/postgres-kysely/methods/packages.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/template-listings.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/template-listings.js +11 -10
- package/dist/src/storage/providers/postgres-kysely/methods/template-listings.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.js +3 -1
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/migrate.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/migrate.js +3 -0
- package/dist/src/storage/providers/postgres-kysely/migrate.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/migrations/0013_ghii_password_lockout.sql +12 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0014_transaction_initiator.sql +6 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0015_app_grant_spend_cap.sql +5 -0
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts +1 -1
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/apps.js +12 -2
- package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/community.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/community.js +6 -1
- package/dist/src/storage/providers/sqlite/methods/community.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.js +9 -2
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/work.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/work.js +4 -2
- package/dist/src/storage/providers/sqlite/methods/work.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/community.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/community.js +6 -1
- package/dist/src/storage/providers/sqlite/repos/community.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/identity.d.ts +3 -0
- package/dist/src/storage/providers/sqlite/repos/identity.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/identity.js +13 -4
- package/dist/src/storage/providers/sqlite/repos/identity.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/work.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/work.js +4 -2
- package/dist/src/storage/providers/sqlite/repos/work.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-1.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-1.js +1 -0
- package/dist/src/storage/providers/sqlite/schema-tables-1.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-2.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-2.js +2 -0
- package/dist/src/storage/providers/sqlite/schema-tables-2.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +14 -1
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/app-grant.repository.d.ts +1 -1
- package/dist/src/storage/repositories/app-grant.repository.d.ts.map +1 -1
- package/dist/src/storage/types/auth.d.ts +9 -0
- package/dist/src/storage/types/auth.d.ts.map +1 -1
- package/dist/src/storage/types/commerce.d.ts +13 -0
- package/dist/src/storage/types/commerce.d.ts.map +1 -1
- package/dist/src/utils/app-agent-discovery.d.ts +31 -0
- package/dist/src/utils/app-agent-discovery.d.ts.map +1 -0
- package/dist/src/utils/app-agent-discovery.js +96 -0
- package/dist/src/utils/app-agent-discovery.js.map +1 -0
- package/dist/src/utils/app-protect.d.ts.map +1 -1
- package/dist/src/utils/app-protect.js +1 -0
- package/dist/src/utils/app-protect.js.map +1 -1
- package/dist/src/utils/env-validator.d.ts.map +1 -1
- package/dist/src/utils/env-validator.js +5 -1
- package/dist/src/utils/env-validator.js.map +1 -1
- package/dist/src/utils/gaii.d.ts +50 -0
- package/dist/src/utils/gaii.d.ts.map +1 -1
- package/dist/src/utils/gaii.js +66 -0
- package/dist/src/utils/gaii.js.map +1 -1
- package/dist/src/utils/url-validator.d.ts.map +1 -1
- package/dist/src/utils/url-validator.js +4 -1
- package/dist/src/utils/url-validator.js.map +1 -1
- package/dist/src/utils/version.d.ts.map +1 -1
- package/dist/src/utils/version.js +1 -0
- package/dist/src/utils/version.js.map +1 -1
- package/dist/static/sdk-libs/auth/session.js +7 -3
- package/dist/static/sdk-libs/dist/aimeat-auth.js +1 -1
- package/dist/static/sdk-libs/dist/aimeat-exchange.js +675 -0
- package/dist/static/sdk-libs/dist/aimeat-game.js +1555 -0
- package/dist/static/sdk-libs/dist/aimeat-webmcp.js +46 -0
- package/dist/static/sdk-libs/exchange/browse.js +81 -0
- package/dist/static/sdk-libs/exchange/client.js +131 -0
- package/dist/static/sdk-libs/exchange/contracts.js +228 -0
- package/dist/static/sdk-libs/exchange/demand.js +106 -0
- package/dist/static/sdk-libs/exchange/earnings.js +39 -0
- package/dist/static/sdk-libs/exchange/format.js +51 -0
- package/dist/static/sdk-libs/exchange/index.js +70 -0
- package/dist/static/sdk-libs/exchange/odps-completeness.js +177 -0
- package/dist/static/sdk-libs/exchange/sell.js +253 -0
- package/dist/static/sdk-libs/game/board.js +331 -0
- package/dist/static/sdk-libs/game/dom.js +223 -0
- package/dist/static/sdk-libs/game/i18n.js +201 -0
- package/dist/static/sdk-libs/game/index.js +72 -0
- package/dist/static/sdk-libs/game/markers.js +150 -0
- package/dist/static/sdk-libs/game/menu.js +260 -0
- package/dist/static/sdk-libs/game/overlay.js +193 -0
- package/dist/static/sdk-libs/game/progress.js +280 -0
- package/dist/static/sdk-libs/game/score.js +134 -0
- package/dist/static/sdk-libs/game/screen.js +120 -0
- package/dist/static/sdk-libs/game/units.js +55 -0
- package/dist/static/sdk-libs/webmcp/index.js +63 -0
- package/package.json +2 -1
|
@@ -22,6 +22,18 @@
|
|
|
22
22
|
* shows "Your app" instead of "not yours"; manage mode pre-checks the UNION of granted +
|
|
23
23
|
* requested scopes and badges newly requested ones "new" (they used to come unchecked, so
|
|
24
24
|
* users silently kept the old grant after an app added a scope).
|
|
25
|
+
* v1.3.0 — 2026-07-27 — Weight + framing pass (outside feedback: the screen "was heavy and would
|
|
26
|
+
* easily scare people away"). Generic for every app, nothing app-specific here:
|
|
27
|
+
* • identity first — icon (manifest) or a monogram, name, origin, and the app's own
|
|
28
|
+
* description, so a stranger sees WHAT this is before what it asks for;
|
|
29
|
+
* • the scope wall collapses to ONE line of areas ("Works with: your saved data, your
|
|
30
|
+
* files") behind "Show the exact permissions (N)". The exact list is unchanged and one
|
|
31
|
+
* click away — the wording is not softened, because app-grant memory scopes really do
|
|
32
|
+
* reach the owner's whole namespace;
|
|
33
|
+
* • one disclosure instead of two: expanding shows the list WITH the per-scope checkboxes
|
|
34
|
+
* (the old "Advanced" toggle hid subset selection from everyone who never found it);
|
|
35
|
+
* • the guarantees read as promises, not as the warning "This app is not yours";
|
|
36
|
+
* • "Don't trust" → "Not now": cancelling no longer means declaring the app untrustworthy.
|
|
25
37
|
*/
|
|
26
38
|
import { h } from 'preact';
|
|
27
39
|
import { useState, useEffect } from 'preact/hooks';
|
|
@@ -29,14 +41,41 @@ import htm from 'htm';
|
|
|
29
41
|
import { t } from '/js/i18n.js';
|
|
30
42
|
import { api } from '/js/api.js';
|
|
31
43
|
import { escHtml } from '/js/utils.js';
|
|
44
|
+
import { swallowed } from '/js/swallowed.js';
|
|
32
45
|
|
|
33
46
|
const html = htm.bind(h);
|
|
34
|
-
|
|
47
|
+
/** t() with a literal fallback; {vars} are interpolated into the fallback too (missing-key safety). */
|
|
48
|
+
const tr = (key, fallback, vars) => {
|
|
49
|
+
const v = t(key, vars);
|
|
50
|
+
if (v && v !== key) return v;
|
|
51
|
+
let s = fallback;
|
|
52
|
+
if (vars) for (const [k, val] of Object.entries(vars)) s = s.replaceAll(`{${k}}`, String(val));
|
|
53
|
+
return s;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Plain-language area per scope family, for the one-line summary. The summary names WHAT the app
|
|
58
|
+
* touches; the exact verbs (read / create / delete) stay in the expandable list, unchanged.
|
|
59
|
+
*/
|
|
60
|
+
const AREA_FALLBACKS = {
|
|
61
|
+
memory: 'your saved data',
|
|
62
|
+
storage: 'your files',
|
|
63
|
+
catalogue: 'the public catalogue',
|
|
64
|
+
social: 'boards',
|
|
65
|
+
messages: 'your messages',
|
|
66
|
+
wallet: 'your morsel balance',
|
|
67
|
+
knowledge: 'your knowledge packages',
|
|
68
|
+
task: "your agents' tasks",
|
|
69
|
+
workflow: 'your automations',
|
|
70
|
+
ai: 'your AI budget',
|
|
71
|
+
notifications: 'notifications to you',
|
|
72
|
+
organism: 'your workspaces',
|
|
73
|
+
};
|
|
35
74
|
|
|
36
75
|
export default function AppGrant() {
|
|
37
76
|
const [state, setState] = useState({ status: 'loading', request: null, error: '' });
|
|
38
77
|
const [submitting, setSubmitting] = useState(false);
|
|
39
|
-
const [
|
|
78
|
+
const [details, setDetails] = useState(false); // exact per-scope list + checkboxes, collapsed by default
|
|
40
79
|
const [selected, setSelected] = useState(() => new Set());
|
|
41
80
|
const [existingGrant, setExistingGrant] = useState(null); // the grant this app already holds (manage mode)
|
|
42
81
|
const [ownApp, setOwnApp] = useState(false); // server-verified: origin-bound request for the signed-in owner's own app
|
|
@@ -70,7 +109,7 @@ export default function AppGrant() {
|
|
|
70
109
|
try {
|
|
71
110
|
const list = await api('/v1/app-grants');
|
|
72
111
|
grant = (list.data?.grants || []).find((g) => g.app === res.data.app) || null;
|
|
73
|
-
} catch {
|
|
112
|
+
} catch (err) { swallowed('app-grant: doLogin', err); }
|
|
74
113
|
if (!live) return;
|
|
75
114
|
const reqScopes = (res.data.scopes || []).map((s) => s.scope);
|
|
76
115
|
// The owner's OWN app (server-verified: the redirect origin is bound to exactly this app):
|
|
@@ -90,7 +129,7 @@ export default function AppGrant() {
|
|
|
90
129
|
// covers what it's asking for, just approve silently — no second prompt for an app you trust.
|
|
91
130
|
const covers = grant && reqScopes.every((s) => grant.scopes.includes(s));
|
|
92
131
|
if (grant && !res.data.manage && covers) { setState({ status: 'autoapprove', request: res.data }); return; }
|
|
93
|
-
if (grant)
|
|
132
|
+
if (grant) setDetails(true); // manage / add-scopes → open the exact list + checkboxes up front
|
|
94
133
|
setState({ status: 'ready', request: res.data });
|
|
95
134
|
})
|
|
96
135
|
.catch((e) => { if (live) setState({ status: 'error', error: e.message || tr('appGrant.expired', 'This request has expired.') }); });
|
|
@@ -183,48 +222,82 @@ export default function AppGrant() {
|
|
|
183
222
|
}
|
|
184
223
|
|
|
185
224
|
const req = state.request;
|
|
225
|
+
// Areas, in the order the app asked for them — one plain line instead of a wall of boxes.
|
|
226
|
+
const areas = [];
|
|
227
|
+
for (const s of req.scopes) {
|
|
228
|
+
const family = String(s.scope).split(':')[0];
|
|
229
|
+
if (!areas.includes(family)) areas.push(family);
|
|
230
|
+
}
|
|
231
|
+
const areaLine = areas.map((a) => tr(`appGrant.area.${a}`, AREA_FALLBACKS[a] || a)).join(', ');
|
|
232
|
+
const keepsData = areas.includes('memory') || areas.includes('storage');
|
|
233
|
+
const icon = String(req.app_icon || '').trim();
|
|
234
|
+
const iconIsUrl = /^(https?:\/\/|\/)/.test(icon);
|
|
235
|
+
const monogram = (Array.from(String(req.app_name || '?').trim())[0] || '?').toUpperCase();
|
|
236
|
+
|
|
186
237
|
return html`
|
|
187
238
|
<div class="agr-wrap">
|
|
188
239
|
<div class="agr-card">
|
|
189
|
-
<
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
240
|
+
<div class="agr-head">
|
|
241
|
+
<div class="agr-icon" aria-hidden="true">
|
|
242
|
+
${icon
|
|
243
|
+
? (iconIsUrl
|
|
244
|
+
? html`<img class="agr-icon-img" src=${icon} alt="" />`
|
|
245
|
+
: html`<span class="agr-icon-glyph">${escHtml(icon)}</span>`)
|
|
246
|
+
: html`<span class="agr-icon-mono">${escHtml(monogram)}</span>`}
|
|
247
|
+
</div>
|
|
248
|
+
<div class="agr-head-text">
|
|
249
|
+
<div class="agr-app-name">${escHtml(req.app_name)}</div>
|
|
250
|
+
<div class="agr-app-origin">${escHtml(req.app_origin)}</div>
|
|
251
|
+
</div>
|
|
252
|
+
<span class="agr-badge ${ownApp ? 'agr-badge-own' : ''}">${ownApp ? tr('appGrant.ownBadge', 'Your app') : tr('appGrant.externalBadge', 'External app')}</span>
|
|
194
253
|
</div>
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
254
|
+
|
|
255
|
+
<h1 class="agr-title">${existingGrant
|
|
256
|
+
? tr('appGrant.manageTitle', 'Manage this app’s access')
|
|
257
|
+
: tr('appGrant.connectTitle', 'Connect {app} to your account', { app: req.app_name })}</h1>
|
|
258
|
+
${req.app_description && html`<p class="agr-lede">${escHtml(req.app_description)}</p>`}
|
|
259
|
+
|
|
260
|
+
<div class="agr-summary">
|
|
261
|
+
<span class="agr-summary-label">${tr('appGrant.worksWith', 'Works with:')}</span>
|
|
262
|
+
<span class="agr-summary-areas">${escHtml(areaLine)}</span>
|
|
263
|
+
</div>
|
|
264
|
+
<button class="agr-details-toggle" aria-expanded=${details} onClick=${() => setDetails((v) => !v)}>
|
|
265
|
+
${details
|
|
266
|
+
? tr('appGrant.hideDetails', 'Hide the exact permissions')
|
|
267
|
+
: tr('appGrant.showDetails', 'Show the exact permissions ({n})', { n: req.scopes.length })}
|
|
268
|
+
</button>
|
|
269
|
+
|
|
270
|
+
${details && html`
|
|
271
|
+
<ul class="agr-scopes">
|
|
272
|
+
${req.scopes.map((s) => html`
|
|
273
|
+
<li class="agr-scope" key=${s.scope}>
|
|
204
274
|
<input type="checkbox" class="agr-scope-check" checked=${selected.has(s.scope)}
|
|
205
|
-
onChange=${() => toggle(s.scope)} aria-label=${s.scope}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
275
|
+
onChange=${() => toggle(s.scope)} aria-label=${s.scope} />
|
|
276
|
+
<span class="agr-scope-text">
|
|
277
|
+
<span class="agr-scope-desc">${escHtml(s.description || s.scope)}
|
|
278
|
+
${existingGrant && !existingGrant.scopes.includes(s.scope) && html`<span class="agr-scope-newbadge">${tr('appGrant.newScope', 'new')}</span>`}
|
|
279
|
+
</span>
|
|
280
|
+
<span class="agr-scope-name">${escHtml(s.scope)}</span>
|
|
209
281
|
</span>
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
</ul>
|
|
282
|
+
</li>`)}
|
|
283
|
+
</ul>
|
|
284
|
+
<p class="agr-details-hint">${tr('appGrant.subsetHint', 'Uncheck anything you would rather not give. The app gets exactly what stays checked.')}</p>`}
|
|
214
285
|
|
|
215
|
-
<
|
|
216
|
-
|
|
217
|
-
|
|
286
|
+
<ul class="agr-assure">
|
|
287
|
+
<li>${tr('appGrant.assureKey', 'It gets its own key, never your password.')}</li>
|
|
288
|
+
${keepsData && html`<li>${tr('appGrant.assureHome', 'What it saves lives in your own AIMEAT account.')}</li>`}
|
|
289
|
+
<li>${tr('appGrant.assureRevoke', 'You can revoke it in one click: Profile › Access.')}</li>
|
|
290
|
+
${!existingGrant && html`<li>${tr('appGrant.assureNext', 'Next time it signs you in without this screen.')}</li>`}
|
|
291
|
+
</ul>
|
|
218
292
|
|
|
219
293
|
<div class="agr-actions">
|
|
220
294
|
${existingGrant
|
|
221
295
|
? html`<button class="btn-danger agr-btn" onClick=${revoke} disabled=${submitting}>${tr('appGrant.revoke', 'Revoke access')}</button>`
|
|
222
|
-
: html`<button class="btn-outline agr-btn" onClick=${deny} disabled=${submitting}>${tr('appGrant.
|
|
296
|
+
: html`<button class="btn-outline agr-btn" onClick=${deny} disabled=${submitting}>${tr('appGrant.notNow', 'Not now')}</button>`}
|
|
223
297
|
<button class="btn-primary agr-btn" onClick=${approve} disabled=${submitting || selected.size === 0}>
|
|
224
|
-
${submitting ? tr('appGrant.approving', 'Allowing…') : (existingGrant ? tr('appGrant.saveCta', 'Save changes') : tr('appGrant.
|
|
298
|
+
${submitting ? tr('appGrant.approving', 'Allowing…') : (existingGrant ? tr('appGrant.saveCta', 'Save changes') : tr('appGrant.connectCta', 'Connect'))}
|
|
225
299
|
</button>
|
|
226
300
|
</div>
|
|
227
|
-
${!existingGrant && html`<p class="agr-next">${tr('appGrant.nextNote', 'Next time this app logs you in automatically — no prompt.')}</p>`}
|
|
228
301
|
</div>
|
|
229
302
|
</div>`;
|
|
230
303
|
}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file business.js
|
|
3
|
-
* @description "For your business" page: night-shift hero,
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
3
|
+
* @description "For your business" page: night-shift hero, then cases grouped by how far
|
|
4
|
+
* up the value ladder they sit — work happens without you, the company runs here, the
|
|
5
|
+
* company earns here — a sovereignty section (the reason a regulated buyer signs), a
|
|
6
|
+
* free assessment as the entry point, and the shared ContactCard.
|
|
7
|
+
*
|
|
8
|
+
* EVERY app referenced here resolves through siteLinks (window.__SITE). A node that has
|
|
9
|
+
* not configured a given app renders that case without its proof link, or drops the case
|
|
10
|
+
* entirely when the app IS the case. Another operator's business page must never point
|
|
11
|
+
* at aimeat.io's apps. No protocol terms; "organism" and "node" are product names,
|
|
12
|
+
* explained on first use.
|
|
9
13
|
* @usage routed at /v1/business by spa.html
|
|
10
14
|
* @version-history
|
|
11
15
|
* v1.0.0 — 2026-06-10 — Initial (owner spec).
|
|
12
16
|
* v1.1.0 — 2026-06-20 — H-2: published-app proof links open in a sandboxed opaque-origin
|
|
13
17
|
* iframe (openAppSandboxed) instead of a top-level apex ?mode=inline tab.
|
|
18
|
+
* v2.0.0 — 2026-07-28 — Six cases from June became three groups following the value ladder,
|
|
19
|
+
* with what shipped since then: a CRM, a marketplace, an API accelerator, playbooks, a
|
|
20
|
+
* public roadmap. Four of six CTAs used to be a mailto even where a working product
|
|
21
|
+
* existed; each case now opens the real thing. Adds the sovereignty section (EU AI Act,
|
|
22
|
+
* NIS2, own server, revocable grants, MIT) which is often the actual reason to buy, and
|
|
23
|
+
* a free assessment as the low-commitment entry. Every app link is operator-configurable.
|
|
14
24
|
*/
|
|
15
25
|
import { h } from 'preact';
|
|
16
26
|
import { useState, useEffect } from 'preact/hooks';
|
|
@@ -19,26 +29,15 @@ const html = htm.bind(h);
|
|
|
19
29
|
import { t } from '/js/i18n.js';
|
|
20
30
|
import { ContactCard } from '/components/ContactCard.js';
|
|
21
31
|
import { openAppSandboxed, isAppHtmlUrl } from '/js/app-sandbox.js';
|
|
32
|
+
import { siteLink, hasSite, contactHref } from '/js/site.js';
|
|
33
|
+
import { swallowed } from '/js/swallowed.js';
|
|
22
34
|
|
|
23
35
|
const tr = (key, fallback) => { const v = t(key); return v && v !== key ? v : fallback; };
|
|
24
|
-
const CONTACT = 'mailto:jouni.miikki@aimeat.io';
|
|
25
36
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const [paper, setPaper] = useState(null);
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
fetch('/v1/apps?limit=100').then(r => r.json()).then(j => {
|
|
33
|
-
const apps = j?.data?.apps || [];
|
|
34
|
-
setPaper(apps.find(a => /sanomat/i.test(a.filename || '') || /sanomat/i.test(a.name || '')) || null);
|
|
35
|
-
}).catch(() => {});
|
|
36
|
-
}, []);
|
|
37
|
-
// The FreePartyLights public status page (org + workspace ids on aimeat.io; public
|
|
38
|
-
// document sharing verified ON — 5 docs readable without auth). NEVER Wellprepd.
|
|
39
|
-
const fplHref = 'https://aimeat.io/v1/publicworkspaceviewer?org=27b89c13-1cc7-4fde-9c3f-91c4c7d06aa9&ws=ws-mq4y3131522';
|
|
40
|
-
|
|
41
|
-
const Case = ({ id, title, text, quote, quoteBy, proofHref, proofLabel, proofNote, ctaLabel, ctaHref }) => html`
|
|
37
|
+
/* One outcome, told in the first person, with a way to check it and a way to start.
|
|
38
|
+
`proofHref` empty → the case still renders, just without the proof link. */
|
|
39
|
+
function Case({ id, title, text, quote, quoteBy, proofHref, proofLabel, proofNote, ctaLabel, ctaHref }) {
|
|
40
|
+
return html`
|
|
42
41
|
<div class="ld-case" id=${id}>
|
|
43
42
|
<h3 class="ld-case-title">${title}</h3>
|
|
44
43
|
<p class="ld-case-text">${text}</p>
|
|
@@ -50,9 +49,43 @@ export default function Business({ navigate }) {
|
|
|
50
49
|
? html`<a class="ld-case-proof" href="#" role="button" onClick=${(e) => { e.preventDefault(); openAppSandboxed(proofHref, proofLabel); }}>${proofLabel}</a>`
|
|
51
50
|
: html`<a class="ld-case-proof" href=${proofHref} target="_blank" rel="noopener">${proofLabel}</a>`)
|
|
52
51
|
: proofNote && html`<div class="ld-case-proofnote">${proofNote}</div>`}
|
|
53
|
-
|
|
52
|
+
${ctaHref ? html`<a class="ld-path-cta" href=${ctaHref}>${ctaLabel}</a>` : ''}
|
|
54
53
|
</div>
|
|
55
54
|
`;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* A group whose every case is gated off (this node has none of those apps) renders nothing
|
|
58
|
+
at all. Checked here rather than in CSS: htm leaves whitespace text nodes between the
|
|
59
|
+
conditionals, so `.ld-cases:empty` would never match and the heading would sit alone. */
|
|
60
|
+
function Group({ title, children }) {
|
|
61
|
+
const kids = (Array.isArray(children) ? children.flat(Infinity) : [children])
|
|
62
|
+
.filter(c => c !== null && c !== undefined && c !== false && c !== '');
|
|
63
|
+
if (kids.length === 0) return null;
|
|
64
|
+
return html`
|
|
65
|
+
<section class="ld-casegroup">
|
|
66
|
+
<h2 class="ld-casegroup-title">${title}</h2>
|
|
67
|
+
<div class="ld-cases">${kids}</div>
|
|
68
|
+
</section>
|
|
69
|
+
`;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export default function Business({ navigate }) {
|
|
73
|
+
const CONTACT = contactHref();
|
|
74
|
+
|
|
75
|
+
// Live proof: the paper this node's agents write. Resolved from the apps API when the
|
|
76
|
+
// operator has not pinned a URL, so the link survives a rename.
|
|
77
|
+
const [paper, setPaper] = useState(null);
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (hasSite('paper')) return undefined;
|
|
80
|
+
fetch('/v1/apps?limit=100').then(r => r.json()).then(j => {
|
|
81
|
+
const apps = j?.data?.apps || [];
|
|
82
|
+
setPaper(apps.find(a => /sanomat/i.test(a.filename || '') || /sanomat/i.test(a.name || '')) || null);
|
|
83
|
+
}).catch(err => { swallowed('business: paper lookup', err); });
|
|
84
|
+
return undefined;
|
|
85
|
+
}, []);
|
|
86
|
+
const paperHref = hasSite('paper')
|
|
87
|
+
? siteLink('paper')
|
|
88
|
+
: (paper ? `/v1/apps/${encodeURIComponent(paper.owner)}/${encodeURIComponent(paper.filename)}?mode=inline` : '');
|
|
56
89
|
|
|
57
90
|
return html`
|
|
58
91
|
<div class="ld ld-business">
|
|
@@ -63,58 +96,109 @@ export default function Business({ navigate }) {
|
|
|
63
96
|
onError=${(e) => { e.target.style.display = 'none'; e.target.closest('.ld-bhero')?.classList.add('ld-bhero--noimg'); }} />
|
|
64
97
|
<div class="ld-bhero-text">
|
|
65
98
|
<h1 class="ld-h1">${tr('biz.heroTitle', 'A digital employee that never sleeps')}</h1>
|
|
66
|
-
<p class="ld-hero-sub">${tr('biz.heroSub', 'Scheduled agents fetch, write, report and ship while you do something else. Every step traceable.')}</p>
|
|
99
|
+
<p class="ld-hero-sub">${tr('biz.heroSub', 'Scheduled agents fetch, write, report and ship while you do something else. Every step traceable, and what they produce is yours.')}</p>
|
|
67
100
|
</div>
|
|
68
101
|
</section>
|
|
69
102
|
|
|
70
|
-
|
|
103
|
+
<${Group} title=${tr('biz.g1Title', 'The work happens without you')}>
|
|
71
104
|
<${Case} id="case-news"
|
|
72
105
|
title=${tr('biz.c1Title', 'I wake up already knowing what happened in my field')}
|
|
73
|
-
text=${tr('biz.c1Text', '
|
|
74
|
-
proofHref=${
|
|
75
|
-
|
|
76
|
-
: 'https://aimeat.io/v1/apps/happydude500001/laimeat-sanomat.html?mode=inline'}
|
|
77
|
-
proofLabel=${tr('biz.c1Proof', "Read tonight's paper →") + (paper?.created_at && paper.created_at.slice(0, 10) === new Date().toISOString().slice(0, 10) ? ` · ${tr('biz.writtenToday', 'written today at')} ${new Date(paper.created_at).toLocaleTimeString('fi-FI', { hour: '2-digit', minute: '2-digit' })}` : '')}
|
|
106
|
+
text=${tr('biz.c1Text', 'A publication that writes itself every evening. Agents pull the raw material, write the pieces and ship the edition. Zero human hours.')}
|
|
107
|
+
proofHref=${paperHref}
|
|
108
|
+
proofLabel=${tr('biz.c1Proof', "Read tonight's edition →")}
|
|
78
109
|
ctaLabel=${tr('biz.c1Cta', 'The same, from your topics →')} ctaHref=${CONTACT} />
|
|
79
110
|
<${Case} id="case-report"
|
|
80
|
-
title=${tr('biz.c2Title', 'My
|
|
81
|
-
text=${tr('biz.c2Text', '
|
|
82
|
-
|
|
83
|
-
|
|
111
|
+
title=${tr('biz.c2Title', 'My morning briefing is waiting, and it knows what is stale')}
|
|
112
|
+
text=${tr('biz.c2Text', 'Say once what you want to know every morning. An agent gathers, summarises and sends, and the board shows how old each answer is with a button that puts the agent back to work.')}
|
|
113
|
+
proofHref=${siteLink('briefing')}
|
|
114
|
+
proofLabel=${tr('biz.c2Proof', 'Open the briefing board →')}
|
|
115
|
+
proofNote=${tr('biz.c2ProofNote', 'Example, sent today at 07:00: "3 new bookings · 1 review (4★, answered) · a competitor dropped prices · suggested action: weekend campaign."')}
|
|
116
|
+
ctaLabel=${tr('biz.c2Cta', 'Order your morning briefing →')} ctaHref=${CONTACT} />
|
|
84
117
|
<${Case} id="case-radar"
|
|
85
|
-
title=${tr('biz.c3Title',
|
|
86
|
-
text=${tr('biz.c3Text', 'An agent tracks mentions, competitors and
|
|
87
|
-
|
|
118
|
+
title=${tr('biz.c3Title', 'I know what is being said about us, and what to do about it')}
|
|
119
|
+
text=${tr('biz.c3Text', 'An agent tracks mentions, competitors and registry changes, and produces an action list. Company cards fill themselves from open data.')}
|
|
120
|
+
proofHref=${siteLink('radar')}
|
|
121
|
+
proofLabel=${tr('biz.c3Proof', 'Open the company radar →')}
|
|
122
|
+
proofNote=${tr('biz.c3ProofNote', 'Example action list: "1) Answer the review on platform Y today. 2) Trend Z is rising, draft a post. 3) A competitor launched a campaign, counter-offer attached."')}
|
|
88
123
|
ctaLabel=${tr('biz.c3Cta', 'Start the radar →')} ctaHref=${CONTACT} />
|
|
124
|
+
<//>
|
|
125
|
+
|
|
126
|
+
<${Group} title=${tr('biz.g2Title', 'The company runs on it')}>
|
|
127
|
+
${hasSite('crm') ? html`
|
|
128
|
+
<${Case} id="case-crm"
|
|
129
|
+
title=${tr('biz.c7Title', 'My CRM costs less than lunch, and my agents keep it fed')}
|
|
130
|
+
text=${tr('biz.c7Text', 'Contacts, companies, deals and follow-ups as versioned records you own. Tap to dial, dictate the note by voice, set the next follow-up. Company cards enrich themselves from the trade register.')}
|
|
131
|
+
proofHref=${siteLink('crm')}
|
|
132
|
+
proofLabel=${tr('biz.c7Proof', 'Open the CRM →')}
|
|
133
|
+
ctaLabel=${tr('biz.c7Cta', 'Move your CRM here →')} ctaHref=${CONTACT} />` : ''}
|
|
89
134
|
<${Case} id="case-dev"
|
|
90
135
|
title=${tr('biz.c4Title', 'My project knows its own status')}
|
|
91
136
|
text=${tr('biz.c4Text', 'When developers have agents, sprints slow things down. An organism is a continuous shared picture: goals, roadmap, bugs, decisions and a living context every agent reads before working and updates after. A human approves the decisions; everything else moves at agent speed.')}
|
|
92
137
|
quote=${tr('biz.c4Quote', 'This could replace Jira.')} quoteBy=${tr('biz.c4QuoteBy', 'game developer, large studio')}
|
|
93
|
-
proofHref=${
|
|
94
|
-
proofLabel=${tr('biz.c4Proof', 'Open
|
|
95
|
-
proofNote=${tr('biz.proofUnavailable', 'Live proof runs on
|
|
138
|
+
proofHref=${siteLink('roadmap')}
|
|
139
|
+
proofLabel=${tr('biz.c4Proof', 'Open our own roadmap, live →')}
|
|
140
|
+
proofNote=${tr('biz.proofUnavailable', 'Live proof runs on the operator’s node.')}
|
|
96
141
|
ctaLabel=${tr('biz.c4Cta', 'Turn your project into an organism →')} ctaHref=${CONTACT} />
|
|
97
142
|
<${Case} id="case-feedback"
|
|
98
143
|
title=${tr('biz.c5Title', "A user's idea shipped the same day")}
|
|
99
|
-
text=${tr('biz.c5Text', 'A user left an idea in the morning. An agent triaged it into a task, implemented it, ran the tests
|
|
100
|
-
proofHref=${
|
|
101
|
-
proofLabel=${tr('biz.c5Proof', '
|
|
102
|
-
proofNote=${tr('biz.proofUnavailable', 'Live proof runs on
|
|
144
|
+
text=${tr('biz.c5Text', 'A user left an idea in the morning. An agent triaged it into a task, implemented it, ran the tests, updated the status page and marked the feedback resolved. A human confirmed it works. The whole chain is traceable: feedback → task → release.')}
|
|
145
|
+
proofHref=${siteLink('roadmap')}
|
|
146
|
+
proofLabel=${tr('biz.c5Proof', 'Follow one from idea to release →')}
|
|
147
|
+
proofNote=${tr('biz.proofUnavailable', 'Live proof runs on the operator’s node.')}
|
|
103
148
|
ctaLabel=${tr('biz.c5Cta', 'Open a feedback loop for your customers →')} ctaHref=${CONTACT} />
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
149
|
+
<//>
|
|
150
|
+
|
|
151
|
+
<${Group} title=${tr('biz.g3Title', 'The company earns on it')}>
|
|
152
|
+
${hasSite('apiAccelerator') ? html`
|
|
153
|
+
<${Case} id="case-api"
|
|
154
|
+
title=${tr('biz.c8Title', 'My API is something agents can find, use and pay for')}
|
|
155
|
+
text=${tr('biz.c8Text', 'You already have an API. Agents cannot find it, cannot read it and cannot pay for it. That is a day of work, not a project.')}
|
|
156
|
+
proofHref=${siteLink('apiAccelerator')}
|
|
157
|
+
proofLabel=${tr('biz.c8Proof', 'See what agent-native looks like →')}
|
|
158
|
+
ctaLabel=${tr('biz.c8Cta', 'Make your API agent-native →')} ctaHref=${CONTACT} />` : ''}
|
|
159
|
+
${hasSite('exchange') ? html`
|
|
160
|
+
<${Case} id="case-exchange"
|
|
161
|
+
title=${tr('biz.c9Title', 'My data sells itself while I sleep')}
|
|
162
|
+
text=${tr('biz.c9Text', 'Publish a capability once and it carries a price. Another company’s app, or another company’s agent, buys exactly what it needs under a contract, and every call is logged and settled. You see what it earned; the buyer saw the price before the first call.')}
|
|
163
|
+
proofHref=${siteLink('exchange')}
|
|
164
|
+
proofLabel=${tr('biz.c9Proof', 'Open the marketplace →')}
|
|
165
|
+
ctaLabel=${tr('biz.c9Cta', 'List your first capability →')} ctaHref=${CONTACT} />` : ''}
|
|
166
|
+
${hasSite('playbooks') ? html`
|
|
167
|
+
<${Case} id="case-playbooks"
|
|
168
|
+
title=${tr('biz.c10Title', 'What we know how to do is now a product')}
|
|
169
|
+
text=${tr('biz.c10Text', 'A way of working, packaged: the steps, the prompts, the checks. Run it for one team, then for the next customer without rebuilding it.')}
|
|
170
|
+
proofHref=${siteLink('playbooks')}
|
|
171
|
+
proofLabel=${tr('biz.c10Proof', 'Open a playbook →')}
|
|
172
|
+
ctaLabel=${tr('biz.c10Cta', 'Package what you know →')} ctaHref=${CONTACT} />` : ''}
|
|
173
|
+
${hasSite('showcase') ? html`
|
|
174
|
+
<${Case} id="case-node"
|
|
175
|
+
title=${tr('biz.c6Title', 'A whole company running on its own node')}
|
|
176
|
+
text=${tr('biz.c6Text', "The homepage lives in agent memory on its own AIMEAT node, federated into the network. One crew audits the node every morning at 04:00; another runs research overnight.")}
|
|
177
|
+
quote=${'Every discovery is a mistake that survived long enough to prove itself.'}
|
|
178
|
+
quoteBy=${'Kalle Määttä, founder, The Original Miskate Oy'}
|
|
179
|
+
proofHref=${siteLink('showcase')}
|
|
180
|
+
proofLabel=${tr('biz.c6Proof', 'Open a living node →')}
|
|
181
|
+
ctaLabel=${tr('biz.c6Cta', 'See hosting packages →')} ctaHref="/v1/pricing" />` : ''}
|
|
182
|
+
<//>
|
|
183
|
+
|
|
184
|
+
<!-- The reason a regulated buyer signs. Often decisive before any of the cases above. -->
|
|
185
|
+
<section class="ld-sovereignty">
|
|
186
|
+
<h2 class="ld-casegroup-title">${tr('biz.sovTitle', 'Why owning it is the reason to buy')}</h2>
|
|
187
|
+
<ul class="ld-sov-list">
|
|
188
|
+
<li>${tr('biz.sov0', 'A company here is a node, not an account type. You take your own AIMEAT node, put your business identity and your own payment keys on it, invite your people and build the apps your work needs. Nothing about it is a separate product tier.')}</li>
|
|
189
|
+
<li>${tr('biz.sov1', 'Your data stays on a server you control. We do not see it and do not keep it, so your own certification is the one that counts.')}</li>
|
|
190
|
+
<li>${tr('biz.sov2', 'Every action is logged: who read what, who authorised it, what it cost. The audit is a report, not a project.')}</li>
|
|
191
|
+
<li>${tr('biz.sov3', 'Agents and apps work under named permissions you can take back with one click, and every action is attributed to whoever took it.')}</li>
|
|
192
|
+
<li>${tr('biz.sov4', 'The code is MIT licensed and readable. A closed competitor can only promise the same thing.')}</li>
|
|
193
|
+
</ul>
|
|
194
|
+
</section>
|
|
113
195
|
|
|
114
196
|
<div class="ld-stats">
|
|
115
197
|
<div class="ld-stats-line">${tr('biz.allLive', 'Everything above runs in production right now. No proof is a mockup.')}</div>
|
|
116
198
|
<div class="ld-ctarow">
|
|
117
|
-
|
|
199
|
+
${hasSite('assessment') ? html`
|
|
200
|
+
<a class="btn-primary" href=${siteLink('assessment')} target="_blank" rel="noopener">${tr('biz.ctaAssessment', 'Free: where is your AI right now? →')}</a>` : ''}
|
|
201
|
+
${CONTACT ? html`<a class=${hasSite('assessment') ? 'btn-outline' : 'btn-primary'} href=${CONTACT}>${tr('biz.ctaDemo', 'Book a demo →')}</a>` : ''}
|
|
118
202
|
<a class="btn-outline" href="/v1/pricing" onClick=${(e) => { e.preventDefault(); navigate('/v1/pricing'); }}>${tr('biz.ctaPricing', 'See pricing →')}</a>
|
|
119
203
|
</div>
|
|
120
204
|
</div>
|
|
@@ -26,6 +26,7 @@ import { librarianSearch } from '/js/services/memory.js';
|
|
|
26
26
|
import { listOrganisms } from '/js/services/organisms.js';
|
|
27
27
|
import { getOwner } from '/js/services/auth.js';
|
|
28
28
|
import { listRecents } from '/js/recents.js';
|
|
29
|
+
import { swallowed } from '/js/swallowed.js';
|
|
29
30
|
|
|
30
31
|
/** Hand off to the organisms tab using the app's existing nav contract: prime the sessionStorage the
|
|
31
32
|
* OrganismsTab reads on mount (open id + workspace + an optional ws-search pre-fill), then switch to
|
|
@@ -37,11 +38,12 @@ function openTarget(navigate, { orgId, wsId, query }) {
|
|
|
37
38
|
if (orgId) sessionStorage.setItem('aimeat.ws.openId', orgId);
|
|
38
39
|
if (wsId) sessionStorage.setItem('aimeat.ws.openWs', wsId); else sessionStorage.removeItem('aimeat.ws.openWs');
|
|
39
40
|
if (orgId && wsId && query) sessionStorage.setItem(`aimeat.ws.${orgId}.${wsId}.search`, query);
|
|
41
|
+
// eslint-disable-next-line aimeat/no-silent-catch -- private mode — the route fallback still works
|
|
40
42
|
} catch { /* private mode — the route fallback still works */ }
|
|
41
43
|
try {
|
|
42
44
|
window.dispatchEvent(new CustomEvent('aimeat-open-tab', { detail: { tabId: 'organisms' } }));
|
|
43
45
|
window.dispatchEvent(new CustomEvent('aimeat-open-organism', { detail: { orgId, wsId: wsId || null } }));
|
|
44
|
-
} catch {
|
|
46
|
+
} catch (err) { swallowed('command-palette: openTarget', err); }
|
|
45
47
|
if (!location.pathname.startsWith('/v1/profile')) navigate('/v1/profile?tab=organisms');
|
|
46
48
|
}
|
|
47
49
|
|
|
@@ -70,7 +72,7 @@ export function CommandPalette({ navigate }) {
|
|
|
70
72
|
useEffect(() => {
|
|
71
73
|
if (!open) { setQ(''); setHits(null); setSel(0); return; }
|
|
72
74
|
const me = getOwner();
|
|
73
|
-
if (me) listOrganisms({ member: me }).then(r => setOrgs((r?.data?.organisms) || [])).catch(
|
|
75
|
+
if (me) listOrganisms({ member: me }).then(r => setOrgs((r?.data?.organisms) || [])).catch(err => { swallowed('command-palette: onKey', err); });
|
|
74
76
|
setTimeout(() => inputRef.current?.querySelector('input')?.focus(), 30);
|
|
75
77
|
}, [open]);
|
|
76
78
|
|
|
@@ -82,7 +84,7 @@ export function CommandPalette({ navigate }) {
|
|
|
82
84
|
let cancelled = false;
|
|
83
85
|
setBusy(true);
|
|
84
86
|
const tid = setTimeout(async () => {
|
|
85
|
-
const r = await librarianSearch(query, 30, 'own').catch(()
|
|
87
|
+
const r = await librarianSearch(query, 30, 'own').catch(err => { swallowed('command-palette: onKey', err); return []; });
|
|
86
88
|
if (!cancelled) { setHits(r || []); setBusy(false); setSel(0); }
|
|
87
89
|
}, 200);
|
|
88
90
|
return () => { cancelled = true; clearTimeout(tid); };
|
|
@@ -20,6 +20,7 @@ import { DeliverableBody } from '/components/ImageDeliverable.js';
|
|
|
20
20
|
import { OfferCardView } from '/components/offer-card-view.js';
|
|
21
21
|
import { Spinner } from '/components/Spinner.js';
|
|
22
22
|
import { EmptyState } from '/components/EmptyState.js';
|
|
23
|
+
import { swallowed } from '/js/swallowed.js';
|
|
23
24
|
|
|
24
25
|
const html = htm.bind(h);
|
|
25
26
|
|
|
@@ -98,7 +99,7 @@ export default function CompaniesView() {
|
|
|
98
99
|
|
|
99
100
|
async function loadMyOrders() {
|
|
100
101
|
try { const r = await apiGet('/v1/orders'); setMyOrders(r.data?.orders ?? []); }
|
|
101
|
-
catch { setMyOrders([]); }
|
|
102
|
+
catch (err) { swallowed('companies', err); setMyOrders([]); }
|
|
102
103
|
}
|
|
103
104
|
function toggleOrders() { const n = !showOrders; setShowOrders(n); if (n) loadMyOrders(); }
|
|
104
105
|
|
|
@@ -113,7 +114,7 @@ export default function CompaniesView() {
|
|
|
113
114
|
|
|
114
115
|
async function openCompany(owner, slug) {
|
|
115
116
|
setSelected({ owner, slug }); setProfile(null); setErr('');
|
|
116
|
-
try { history.replaceState(null, '', `/v1/companies?c=${encodeURIComponent(owner)}/${encodeURIComponent(slug)}`); } catch {
|
|
117
|
+
try { history.replaceState(null, '', `/v1/companies?c=${encodeURIComponent(owner)}/${encodeURIComponent(slug)}`); } catch (err) { swallowed('companies: openCompany', err); }
|
|
117
118
|
try {
|
|
118
119
|
const r = await apiGet(`/v1/orgs/${encodeURIComponent(owner)}/${encodeURIComponent(slug)}/offerings`);
|
|
119
120
|
setProfile(r.data ?? null);
|
|
@@ -21,6 +21,7 @@ import { connect, disconnect, onUpdate, offUpdate } from '/lib/live-updates.js';
|
|
|
21
21
|
import { useViewCSS } from '/components/useViewCSS.js';
|
|
22
22
|
import * as orgService from '/js/services/organisms.js';
|
|
23
23
|
import { DocumentView, DocumentEditor } from './profile/organisms/document.js';
|
|
24
|
+
import { swallowed } from '/js/swallowed.js';
|
|
24
25
|
|
|
25
26
|
const html = htm.bind(h);
|
|
26
27
|
|
|
@@ -55,7 +56,7 @@ export default function DocSolo() {
|
|
|
55
56
|
for (const d of (w.objects?.[type] || [])) byId.set(d.id, { ...d, _draft: false, _published: true });
|
|
56
57
|
for (const d of (w.drafts?.[type] || [])) { const pub = byId.get(d.id); byId.set(d.id, { ...d, _draft: true, _published: !!pub, _pub: pub || null }); }
|
|
57
58
|
setDoc(byId.get(id) || null);
|
|
58
|
-
} catch { setDoc(null); }
|
|
59
|
+
} catch (err) { swallowed('doc-solo', err); setDoc(null); }
|
|
59
60
|
}, [session, org, ws, type, id]);
|
|
60
61
|
|
|
61
62
|
useEffect(() => { load(); }, [load]);
|