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
|
@@ -21,6 +21,7 @@ import { Markdown } from '/components/Markdown.js';
|
|
|
21
21
|
import { getAutomationRecipe } from '/js/services/ecosystem.js';
|
|
22
22
|
import { listOrganisms, currentGhii } from '/js/services/organisms.js';
|
|
23
23
|
import { keyFp, OUTBOUND_EVENTS, resolveOrganismName } from './ecosystem-tab.helpers.js';
|
|
24
|
+
import { swallowed } from '/js/swallowed.js';
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* One "Data this app wrote" entry: collapsed row (key + visibility chip + timeAgo) that expands to
|
|
@@ -90,8 +91,8 @@ export function EcoAskInClaude({ app }) {
|
|
|
90
91
|
const load = async () => {
|
|
91
92
|
const ownerName = (currentGhii().split('@')[0]) || '';
|
|
92
93
|
const [recipeResp, orgResp] = await Promise.all([
|
|
93
|
-
getAutomationRecipe(app.app).catch(()
|
|
94
|
-
(ownerName ? listOrganisms({ member: ownerName }) : Promise.resolve(null)).catch(()
|
|
94
|
+
getAutomationRecipe(app.app).catch(err => { swallowed('ecosystem-tab.cards: ownerName', err); return null; }),
|
|
95
|
+
(ownerName ? listOrganisms({ member: ownerName }) : Promise.resolve(null)).catch(err => { swallowed('ecosystem-tab.cards: ownerName', err); return null; }),
|
|
95
96
|
]);
|
|
96
97
|
setRecipe(recipeResp);
|
|
97
98
|
setOrgs(orgResp?.data?.organisms || []);
|
|
@@ -124,6 +124,7 @@ import { listEcosystemApps, listAppData, listPending, approve, revoke, listSubsc
|
|
|
124
124
|
import { ECO_PRESETS } from './ecosystem-tab.helpers.js';
|
|
125
125
|
import { EcoAutomationSection } from './ecosystem-tab.automation.js';
|
|
126
126
|
import { EcoDataEntry, EcoSetupGuide, EcoAskInClaude, EcoTechDetails } from './ecosystem-tab.cards.js';
|
|
127
|
+
import { swallowed } from '/js/swallowed.js';
|
|
127
128
|
|
|
128
129
|
export default function EcosystemTab({ onStats, showToast }) {
|
|
129
130
|
const [apps, setApps] = useState([]);
|
|
@@ -142,8 +143,9 @@ export default function EcosystemTab({ onStats, showToast }) {
|
|
|
142
143
|
try {
|
|
143
144
|
const items = await listAppData(app);
|
|
144
145
|
setAppData(d => ({ ...d, [geai]: items }));
|
|
145
|
-
} catch {
|
|
146
|
+
} catch (err) {
|
|
146
147
|
// Leave the cached value (if any); a transient failure shouldn't blank the section.
|
|
148
|
+
swallowed('ecosystem-tab: loadAppData', err);
|
|
147
149
|
}
|
|
148
150
|
};
|
|
149
151
|
|
|
@@ -157,7 +159,8 @@ export default function EcosystemTab({ onStats, showToast }) {
|
|
|
157
159
|
const [a, p, s] = await Promise.all([listEcosystemApps(), listPending(), listSubscriptions()]);
|
|
158
160
|
setApps(a); setPending(p); setSubs(s);
|
|
159
161
|
onStats?.({ ecosystem: a.length });
|
|
160
|
-
} catch {
|
|
162
|
+
} catch (err) {
|
|
163
|
+
swallowed('ecosystem-tab: loadData', err);
|
|
161
164
|
showToast?.(t('profile.ecosystem.loadError'), 'error');
|
|
162
165
|
} finally {
|
|
163
166
|
setLoading(false);
|
|
@@ -198,26 +201,26 @@ export default function EcosystemTab({ onStats, showToast }) {
|
|
|
198
201
|
await approve(userCode, { action: 'approve', scopes: ECO_PRESETS[preset] });
|
|
199
202
|
showToast?.(t('profile.ecosystem.approved'), 'success');
|
|
200
203
|
await loadData();
|
|
201
|
-
} catch { showToast?.(t('profile.ecosystem.approveError'), 'error'); }
|
|
204
|
+
} catch (err) { swallowed('ecosystem-tab', err); showToast?.(t('profile.ecosystem.approveError'), 'error'); }
|
|
202
205
|
}
|
|
203
206
|
async function onDeny(userCode) {
|
|
204
207
|
try { await approve(userCode, { action: 'deny' }); await loadData(); }
|
|
205
|
-
catch { showToast?.(t('profile.ecosystem.approveError'), 'error'); }
|
|
208
|
+
catch (err) { swallowed('ecosystem-tab', err); showToast?.(t('profile.ecosystem.approveError'), 'error'); }
|
|
206
209
|
}
|
|
207
210
|
async function onRevokeConfirm() {
|
|
208
211
|
const app = revokeApp;
|
|
209
212
|
setRevokeApp(null); setRevokeInput('');
|
|
210
213
|
try { await revoke(app); showToast?.(t('profile.ecosystem.revoked'), 'success'); await loadData(); }
|
|
211
|
-
catch { showToast?.(t('profile.ecosystem.revokeError'), 'error'); }
|
|
214
|
+
catch (err) { swallowed('ecosystem-tab', err); showToast?.(t('profile.ecosystem.revokeError'), 'error'); }
|
|
212
215
|
}
|
|
213
216
|
async function onSubscribe(app) {
|
|
214
217
|
const event = subForm[app]?.event || 'memory.write';
|
|
215
218
|
try { await subscribe(app, event); setSubForm(f => ({ ...f, [app]: {} })); await loadData(); }
|
|
216
|
-
catch { showToast?.(t('profile.ecosystem.subError'), 'error'); }
|
|
219
|
+
catch (err) { swallowed('ecosystem-tab', err); showToast?.(t('profile.ecosystem.subError'), 'error'); }
|
|
217
220
|
}
|
|
218
221
|
async function onUnsubscribe(app, event) {
|
|
219
222
|
try { await unsubscribe(app, event); await loadData(); }
|
|
220
|
-
catch { showToast?.(t('profile.ecosystem.subError'), 'error'); }
|
|
223
|
+
catch (err) { swallowed('ecosystem-tab', err); showToast?.(t('profile.ecosystem.subError'), 'error'); }
|
|
221
224
|
}
|
|
222
225
|
|
|
223
226
|
if (loading) return html`<div class="pf-eco"><${Spinner} /></div>`;
|
|
@@ -15,6 +15,7 @@ import { t } from '/js/i18n.js';
|
|
|
15
15
|
import { Spinner, GlassCard } from './shared.js';
|
|
16
16
|
import { apiPost } from '/js/api.js';
|
|
17
17
|
import { getProfile } from '/js/services/auth.js';
|
|
18
|
+
import { swallowed } from '/js/swallowed.js';
|
|
18
19
|
|
|
19
20
|
export default function EmailTab({ session, showToast }) {
|
|
20
21
|
const [loading, setLoading] = useState(true);
|
|
@@ -41,7 +42,7 @@ export default function EmailTab({ session, showToast }) {
|
|
|
41
42
|
setStep('verified');
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
} catch {
|
|
45
|
+
} catch (err) { swallowed('email-tab: loadData', err); }
|
|
45
46
|
setLoading(false);
|
|
46
47
|
}
|
|
47
48
|
|
|
@@ -45,8 +45,9 @@ import { useMaturityLedger, maturityBadge } from './extensions-tab.maturity.js';
|
|
|
45
45
|
import * as cortexService from '/js/services/cortex.js';
|
|
46
46
|
import * as v8Ext from '/js/services/extensions.js';
|
|
47
47
|
import { getNodeUrl, getSession } from '/js/services/auth.js';
|
|
48
|
-
import { buildCortexPrompt,
|
|
48
|
+
import { buildCortexPrompt, fetchServerExtensionPrompt } from './extensions-tab.prompts.js';
|
|
49
49
|
import { COMP_ICONS, COMP_TAG_CLASSES, BUNDLED } from './extensions-tab.constants.js';
|
|
50
|
+
import { swallowed } from '/js/swallowed.js';
|
|
50
51
|
|
|
51
52
|
export default function ExtensionsTab({ session, showToast }) {
|
|
52
53
|
const { confirm, ConfirmUI } = useConfirm();
|
|
@@ -86,7 +87,7 @@ export default function ExtensionsTab({ session, showToast }) {
|
|
|
86
87
|
try {
|
|
87
88
|
const resp = await cortexService.listExtensions();
|
|
88
89
|
setExtensions(resp?.extensions || []);
|
|
89
|
-
} catch { setExtensions([]); }
|
|
90
|
+
} catch (err) { swallowed('extensions-tab', err); setExtensions([]); }
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
function onSrvManifestChange(text) {
|
|
@@ -104,7 +105,7 @@ export default function ExtensionsTab({ session, showToast }) {
|
|
|
104
105
|
return entries.length > 0 ? entries : prev;
|
|
105
106
|
});
|
|
106
107
|
}
|
|
107
|
-
} catch {
|
|
108
|
+
} catch (err) { swallowed('extensions-tab: onSrvManifestChange', err); }
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
async function handleSrvInstall() {
|
|
@@ -134,7 +135,7 @@ export default function ExtensionsTab({ session, showToast }) {
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
async function loadServerExtensions() {
|
|
137
|
-
try { setSrvExts(await v8Ext.listV8Extensions()); } catch { setSrvExts([]); }
|
|
138
|
+
try { setSrvExts(await v8Ext.listV8Extensions()); } catch (err) { swallowed('extensions-tab', err); setSrvExts([]); }
|
|
138
139
|
}
|
|
139
140
|
|
|
140
141
|
async function loadSrvDetail(name) {
|
|
@@ -144,7 +145,7 @@ export default function ExtensionsTab({ session, showToast }) {
|
|
|
144
145
|
try {
|
|
145
146
|
const ext = await v8Ext.getV8Extension(name);
|
|
146
147
|
setSrvDetail(ext);
|
|
147
|
-
try { setSrvInstances(await v8Ext.listInstances(name)); } catch { setSrvInstances([]); }
|
|
148
|
+
try { setSrvInstances(await v8Ext.listInstances(name)); } catch (err) { swallowed('extensions-tab', err); setSrvInstances([]); }
|
|
148
149
|
} catch(e) { setSrvDetail({ error: e.message }); }
|
|
149
150
|
}
|
|
150
151
|
|
|
@@ -610,7 +611,7 @@ export default function ExtensionsTab({ session, showToast }) {
|
|
|
610
611
|
<div class="section-title">${t('profile.v8ext.title')}</div>
|
|
611
612
|
<div class="section-desc">${t('profile.v8ext.desc')}</div>
|
|
612
613
|
<div class="ext-hero-actions">
|
|
613
|
-
<button class="btn-primary" onClick=${() => { const p =
|
|
614
|
+
<button class="btn-primary" onClick=${async () => { const p = await fetchServerExtensionPrompt(getSession() || {}); copyToClipboard(p); showToast(t('profile.extensions.promptCopied')); }}>${'\u{1F916}'} Create with AI</button>
|
|
614
615
|
<button class="btn-outline" onClick=${() => setShowSrvInstall(true)}>+ Add</button>
|
|
615
616
|
</div>
|
|
616
617
|
${hasSrv ? html`
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* v1.0.0 — 2026-07-18 — initial: surface tier + proof ledger on the Cortex Libraries cards.
|
|
11
11
|
*/
|
|
12
12
|
import { useState, useEffect } from 'preact/hooks';
|
|
13
|
+
import { swallowed } from '/js/swallowed.js';
|
|
13
14
|
|
|
14
15
|
/** Fetch the node's library-pack tier/proof ledger once, keyed by pack id (public endpoint). */
|
|
15
16
|
export function useMaturityLedger() {
|
|
@@ -19,7 +20,7 @@ export function useMaturityLedger() {
|
|
|
19
20
|
const map = {};
|
|
20
21
|
for (const p of (d.data?.packs || [])) if (p.modelTier) map[p.id] = p;
|
|
21
22
|
setLedger(map);
|
|
22
|
-
}).catch(
|
|
23
|
+
}).catch(err => { swallowed('extensions-tab.maturity: useMaturityLedger', err); });
|
|
23
24
|
}, []);
|
|
24
25
|
return ledger;
|
|
25
26
|
}
|
|
@@ -143,6 +143,30 @@ To install: go to Profile > Extensions > + Add > paste the YAML manifest > add J
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
/* ── Server Extension scaffolding prompt builder ── */
|
|
146
|
+
/**
|
|
147
|
+
* The canonical extension prompt, from the node. GET /v1/prompts/build-extension is the single
|
|
148
|
+
* source of truth (services/build-extension-prompt.ts) so this tab, an agentic coder, the
|
|
149
|
+
* aimeat-extension-builder skill and llms.txt all read the same text.
|
|
150
|
+
*
|
|
151
|
+
* buildServerExtensionPrompt below is the OFFLINE FALLBACK only. It is deliberately shorter and
|
|
152
|
+
* older; improve the guidance in the node service, never here.
|
|
153
|
+
*/
|
|
154
|
+
export async function fetchServerExtensionPrompt(sess) {
|
|
155
|
+
const owner = sess?.owner || '';
|
|
156
|
+
try {
|
|
157
|
+
const res = await fetch(`${getNodeUrl()}/v1/prompts/build-extension?format=txt`
|
|
158
|
+
+ (owner ? `&owner=${encodeURIComponent(owner)}` : ''));
|
|
159
|
+
if (res.ok) {
|
|
160
|
+
const text = await res.text();
|
|
161
|
+
if (text && text.length > 400) return text;
|
|
162
|
+
}
|
|
163
|
+
// The fallback IS the handling: offline, or a node too old to serve this route, must still
|
|
164
|
+
// yield a usable prompt rather than an error toast.
|
|
165
|
+
// eslint-disable-next-line aimeat/no-silent-catch -- see the two lines above
|
|
166
|
+
} catch { /* fall through to the bundled copy */ }
|
|
167
|
+
return buildServerExtensionPrompt(sess || {});
|
|
168
|
+
}
|
|
169
|
+
|
|
146
170
|
export function buildServerExtensionPrompt(sess) {
|
|
147
171
|
const url = getNodeUrl();
|
|
148
172
|
const owner = sess?.owner || 'user';
|
|
@@ -19,6 +19,7 @@ import { escHtml } from '/js/utils.js';
|
|
|
19
19
|
import { Spinner } from './shared.js';
|
|
20
20
|
import { StatusDot } from '/components/StatusDot.js';
|
|
21
21
|
import { listPeers } from '/js/services/federation.js';
|
|
22
|
+
import { swallowed } from '/js/swallowed.js';
|
|
22
23
|
|
|
23
24
|
export default function FederationTab() {
|
|
24
25
|
const [federation, setFederation] = useState(null);
|
|
@@ -31,7 +32,7 @@ export default function FederationTab() {
|
|
|
31
32
|
try {
|
|
32
33
|
const peers = await listPeers();
|
|
33
34
|
setFederation(peers);
|
|
34
|
-
} catch { setFederation([]); }
|
|
35
|
+
} catch (err) { swallowed('federation-tab', err); setFederation([]); }
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
// Live update listener
|
|
@@ -44,6 +44,7 @@ import { minidenticon } from '/lib/minidenticons.min.js';
|
|
|
44
44
|
import * as schedules from '/js/services/schedules.js';
|
|
45
45
|
import { MODES } from '/js/services/messages-ai-prompts.js';
|
|
46
46
|
import { loadToastUI, prepareBody, quoteSnippet, statusTick, timeShort, trackStateLabel, ATTACH_ICO, attachKind, IFORM_OTHER } from './helpers.js';
|
|
47
|
+
import { swallowed } from '/js/swallowed.js';
|
|
47
48
|
|
|
48
49
|
export function Avatar({ seed, size = 36 }) {
|
|
49
50
|
const svg = minidenticon(typeof seed === 'string' && seed ? seed : 'user');
|
|
@@ -327,7 +328,7 @@ export function MessageBubble({ msg, mine, urlMap, starred, onStar, onTrack, onP
|
|
|
327
328
|
* the draft doesn't leak between threads. */
|
|
328
329
|
export function Composer({ recipient, sendLabel, sending, onSend, initialText = '', draftKey = '', focusNonce = 0 }) {
|
|
329
330
|
// Restore an in-progress draft for this conversation/compose (localStorage), or the passed initialText.
|
|
330
|
-
const readDraft = () => { try { return draftKey ? (localStorage.getItem(draftKey) || '') : ''; } catch { return ''; } };
|
|
331
|
+
const readDraft = () => { try { return draftKey ? (localStorage.getItem(draftKey) || '') : ''; } catch { return ''; } }; // eslint-disable-line aimeat/no-silent-catch -- a browser API refusing here IS the answer
|
|
331
332
|
const seeded = initialText || readDraft(); // an explicit suggested reply wins; else restore a draft
|
|
332
333
|
// 'rich' = Toast UI (desktop); 'simple' = a plain auto-growing textarea (mobile chat input, no toolbar/
|
|
333
334
|
// preview — a phone keyboard + heavy WYSIWYG toolbar is miserable); 'markdown' = the textarea+preview
|
|
@@ -348,10 +349,10 @@ export function Composer({ recipient, sendLabel, sending, onSend, initialText =
|
|
|
348
349
|
if (!draftKey) return;
|
|
349
350
|
if (saveTimer.current) clearTimeout(saveTimer.current);
|
|
350
351
|
saveTimer.current = setTimeout(() => {
|
|
351
|
-
try { if (text && text.trim()) localStorage.setItem(draftKey, text); else localStorage.removeItem(draftKey); } catch { /* quota */ }
|
|
352
|
+
try { if (text && text.trim()) localStorage.setItem(draftKey, text); else localStorage.removeItem(draftKey); } catch { /* quota */ } // eslint-disable-line aimeat/no-silent-catch -- quota
|
|
352
353
|
}, 400);
|
|
353
354
|
};
|
|
354
|
-
const clearDraft = () => { try { if (draftKey) localStorage.removeItem(draftKey); } catch { /* noop */ } };
|
|
355
|
+
const clearDraft = () => { try { if (draftKey) localStorage.removeItem(draftKey); } catch { /* noop */ } }; // eslint-disable-line aimeat/no-silent-catch -- noop
|
|
355
356
|
|
|
356
357
|
// A pasted / dropped image is added to the SAME file-attachment queue as the 📎 button (uploaded to
|
|
357
358
|
// storage + rendered as an image on the bubble) — never base64-inlined into the body, which would
|
|
@@ -385,7 +386,7 @@ export function Composer({ recipient, sendLabel, sending, onSend, initialText =
|
|
|
385
386
|
if (mode !== 'rich') return undefined;
|
|
386
387
|
let inst = null, cancelled = false;
|
|
387
388
|
(async () => {
|
|
388
|
-
const Editor = await loadToastUI().catch(()
|
|
389
|
+
const Editor = await loadToastUI().catch(err => { swallowed('components: handleImagePaste', err); return null; });
|
|
389
390
|
if (cancelled) return;
|
|
390
391
|
if (!Editor) { setMode('markdown'); return; }
|
|
391
392
|
if (!containerRef.current) return;
|
|
@@ -413,7 +414,7 @@ export function Composer({ recipient, sendLabel, sending, onSend, initialText =
|
|
|
413
414
|
})();
|
|
414
415
|
return () => {
|
|
415
416
|
cancelled = true;
|
|
416
|
-
if (inst) { try { inst.destroy(); } catch {
|
|
417
|
+
if (inst) { try { inst.destroy(); } catch (err) { swallowed('components: handleImagePaste', err); } }
|
|
417
418
|
editorRef.current = null;
|
|
418
419
|
};
|
|
419
420
|
// Create the editor once when mode becomes 'rich': `seeded` is intentionally read only at
|
|
@@ -426,7 +427,7 @@ export function Composer({ recipient, sendLabel, sending, onSend, initialText =
|
|
|
426
427
|
// Seed the rich editor with an initial draft (e.g. a Tracked Response suggested reply) once it mounts.
|
|
427
428
|
useEffect(() => {
|
|
428
429
|
if (mode === 'rich' && initialText && editorRef.current) {
|
|
429
|
-
try { editorRef.current.setMarkdown(initialText); } catch {
|
|
430
|
+
try { editorRef.current.setMarkdown(initialText); } catch (err) { swallowed('components: handleImagePaste', err); }
|
|
430
431
|
}
|
|
431
432
|
}, [mode, initialText]);
|
|
432
433
|
|
|
@@ -439,7 +440,7 @@ export function Composer({ recipient, sendLabel, sending, onSend, initialText =
|
|
|
439
440
|
try {
|
|
440
441
|
if (mode === 'rich' && editorRef.current?.focus) editorRef.current.focus();
|
|
441
442
|
else if (taRef.current) taRef.current.focus();
|
|
442
|
-
} catch {
|
|
443
|
+
} catch (err) { swallowed('components: handleImagePaste', err); }
|
|
443
444
|
}, 60);
|
|
444
445
|
return () => clearTimeout(id);
|
|
445
446
|
// Only focusNonce is the trigger; mode/refs are read at fire time.
|
|
@@ -452,7 +453,7 @@ export function Composer({ recipient, sendLabel, sending, onSend, initialText =
|
|
|
452
453
|
useEffect(() => {
|
|
453
454
|
if (mode !== 'rich' || !editorRef.current?.setHeight) return;
|
|
454
455
|
const tall = typeof window !== 'undefined' ? Math.round(window.innerHeight * 0.6) : 400;
|
|
455
|
-
try { editorRef.current.setHeight(expanded ? tall + 'px' : '160px'); } catch {
|
|
456
|
+
try { editorRef.current.setHeight(expanded ? tall + 'px' : '160px'); } catch (err) { swallowed('components: handleImagePaste', err); }
|
|
456
457
|
}, [expanded, mode]);
|
|
457
458
|
|
|
458
459
|
// Auto-grow the simple (mobile) textarea to fit its content, capped so it never eats the thread. When
|
|
@@ -469,7 +470,7 @@ export function Composer({ recipient, sendLabel, sending, onSend, initialText =
|
|
|
469
470
|
|
|
470
471
|
const getText = () => (mode === 'rich' && editorRef.current) ? editorRef.current.getMarkdown() : md;
|
|
471
472
|
const reset = () => {
|
|
472
|
-
try { editorRef.current?.setMarkdown(''); } catch {
|
|
473
|
+
try { editorRef.current?.setMarkdown(''); } catch (err) { swallowed('components: reset', err); }
|
|
473
474
|
setMd(''); setFiles([]); if (fileRef.current) fileRef.current.value = '';
|
|
474
475
|
if (mode === 'simple' && taRef.current) taRef.current.style.height = 'auto';
|
|
475
476
|
clearDraft(); // a sent message is no longer a draft
|
|
@@ -563,7 +564,7 @@ export function SchedulePanel({ agentName, onClose, showToast }) {
|
|
|
563
564
|
const [busy, setBusy] = useState(false);
|
|
564
565
|
const load = useCallback(async () => {
|
|
565
566
|
try { const r = await schedules.listAgentSchedules(agentName); setJobs(r?.data?.managed || []); }
|
|
566
|
-
catch { setJobs([]); }
|
|
567
|
+
catch (err) { swallowed('components', err); setJobs([]); }
|
|
567
568
|
}, [agentName]);
|
|
568
569
|
useEffect(() => { setJobs(null); load(); }, [load]);
|
|
569
570
|
const create = async () => {
|
|
@@ -612,6 +613,7 @@ export function ReplyWithAiPopover({ title, build, onClose, showToast }) {
|
|
|
612
613
|
else { const ta = document.createElement('textarea'); ta.value = text; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); ta.remove(); }
|
|
613
614
|
setCopied(true); setTimeout(() => setCopied(false), 1800);
|
|
614
615
|
showToast?.(t('inbox.ai.copied'));
|
|
616
|
+
// eslint-disable-next-line aimeat/no-silent-catch -- a browser API refusing here IS the answer
|
|
615
617
|
} catch { showToast?.(t('inbox.failed'), true); }
|
|
616
618
|
};
|
|
617
619
|
return html`
|
|
@@ -658,6 +660,7 @@ export function ConversationToNotebookPopover({ title, promptText, runServerSumm
|
|
|
658
660
|
else { const ta = document.createElement('textarea'); ta.value = promptText; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); ta.remove(); }
|
|
659
661
|
setCopied(true); setTimeout(() => setCopied(false), 1800);
|
|
660
662
|
showToast?.(t('inbox.ai.copied'));
|
|
663
|
+
// eslint-disable-next-line aimeat/no-silent-catch -- a browser API refusing here IS the answer
|
|
661
664
|
} catch { showToast?.(t('inbox.failed'), true); }
|
|
662
665
|
};
|
|
663
666
|
|
|
@@ -5,12 +5,26 @@
|
|
|
5
5
|
* pixel defense), tracked-state labels, attachment classification, the interactive-answer summary +
|
|
6
6
|
* poll tally, and the lazy Toast UI editor loader. Extracted from inbox-tab.js to satisfy max-file-lines.
|
|
7
7
|
* @version-history
|
|
8
|
+
* v1.3.0 — 2026-07-27 — sendFailure(): pick the toast text for a failed send, preferring the thrown
|
|
9
|
+
* reason (attachment too large, out of quota) over the generic "could not send".
|
|
8
10
|
* v1.2.0 — 2026-07-21 — resolveThreadAttachmentUrls(): resolve non-inline attachment URLs for a loaded
|
|
9
11
|
* thread (reusing the previous conversation's cache), extracted from inbox-tab loadThread.
|
|
10
12
|
* v1.1.0 — 2026-07-17 — quoteSnippet(): one-line plain-text excerpt of a message body for reply-quotes.
|
|
11
13
|
* v1.0.0 — 2026-07-13 — Extracted from inbox-tab.js (max-file-lines)
|
|
12
14
|
*/
|
|
13
15
|
import { t, getLocale } from '/js/i18n.js';
|
|
16
|
+
import { swallowed } from '/js/swallowed.js';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Toast text for a failed send. An attachment upload throws for reasons the sender can act on: the file
|
|
20
|
+
* is over this node's per-file limit, or the account is out of storage quota. The generic "could not
|
|
21
|
+
* send" hid every one of them, so an oversized video read as a dead button, with nothing in the console
|
|
22
|
+
* either. Prefer the thrown message; keep the generic line for errors that carry none of their own.
|
|
23
|
+
*/
|
|
24
|
+
export function sendFailure(err) {
|
|
25
|
+
const msg = String(err?.message || '').trim();
|
|
26
|
+
return msg && msg !== 'Failed to fetch' ? msg : t('inbox.failed');
|
|
27
|
+
}
|
|
14
28
|
|
|
15
29
|
/**
|
|
16
30
|
* Resolve presigned URLs for a thread's non-inline attachments, reusing already-resolved URLs from the
|
|
@@ -30,7 +44,7 @@ export async function resolveThreadAttachmentUrls(msgs, conversationId, prevCach
|
|
|
30
44
|
const key = (a.mode === 'duplicate' && a.localKey) ? a.localKey
|
|
31
45
|
: (m.direction === 'outbound' && a.storageKey) ? a.storageKey : null;
|
|
32
46
|
if (!key) return;
|
|
33
|
-
const u = await resolveUrl(key).catch(()
|
|
47
|
+
const u = await resolveUrl(key).catch(err => { swallowed('helpers: key', err); return null; });
|
|
34
48
|
if (u) map[uk] = u;
|
|
35
49
|
})));
|
|
36
50
|
return { convId: conversationId, map };
|
|
@@ -34,7 +34,7 @@ export function useLinkPreviewToggle() {
|
|
|
34
34
|
try { return localStorage.getItem(LINK_PREVIEWS_KEY) !== 'off'; } catch { return true; }
|
|
35
35
|
});
|
|
36
36
|
const toggleLinkPreviews = () => setShow((v) => {
|
|
37
|
-
try { localStorage.setItem(LINK_PREVIEWS_KEY, v ? 'off' : 'on'); } catch { /* quota */ }
|
|
37
|
+
try { localStorage.setItem(LINK_PREVIEWS_KEY, v ? 'off' : 'on'); } catch { /* quota */ } // eslint-disable-line aimeat/no-silent-catch -- quota
|
|
38
38
|
return !v;
|
|
39
39
|
});
|
|
40
40
|
return { showLinkPreviews, toggleLinkPreviews };
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* (./inbox-tab/use-thread-ux.js)
|
|
15
15
|
* @usage Lazy-loaded profile tab; registered in profile.js TABS as id `messages`.
|
|
16
16
|
* @version-history
|
|
17
|
+
* v1.26.0 -- 2026-07-27 -- Failed sends toast the thrown REASON (helpers.sendFailure); the flat generic line hid every actionable attachment error.
|
|
17
18
|
* v1.25.0 -- 2026-07-21 -- Thread history is no longer capped at the newest 50: threads open showing
|
|
18
19
|
* their FULL history by default (getConversation(all)); a header "Show last 50 / all" toggle
|
|
19
20
|
* (threadAll) collapses/expands. loadThread's attachment-URL resolution extracted to
|
|
@@ -135,12 +136,13 @@ import { apiGet } from '/js/api.js';
|
|
|
135
136
|
import { getSession } from '/js/services/auth.js';
|
|
136
137
|
import { TrackResponseModal } from './track-response-modal.js';
|
|
137
138
|
import { peerLabel } from '/js/services/messages-ai-prompts.js';
|
|
138
|
-
import { peerName, ownerKeyOf, isAgentPeer, buildAnswerSummary, resolveThreadAttachmentUrls } from './inbox-tab/helpers.js';
|
|
139
|
+
import { peerName, ownerKeyOf, isAgentPeer, buildAnswerSummary, resolveThreadAttachmentUrls, sendFailure } from './inbox-tab/helpers.js';
|
|
139
140
|
import { Composer, PollBuilder, MarkdownViewer, ReplyWithAiPopover, ConversationToNotebookPopover } from './inbox-tab/components.js';
|
|
140
141
|
import { buildConversationReplyProps, buildMessageReplyProps, buildConversationNotebookProps } from './inbox-tab/ai-actions.js';
|
|
141
142
|
import { ListPanel, ThreadPanel, TrackedPanel, ResultsPanel } from './inbox-tab/panels.js';
|
|
142
143
|
import { useThreadAutoScroll, useMobileComposerKeyboard, useLinkPreviewToggle } from './inbox-tab/use-thread-ux.js';
|
|
143
144
|
import { ContactPicker } from '/components/ContactPicker.js';
|
|
145
|
+
import { swallowed } from '/js/swallowed.js';
|
|
144
146
|
|
|
145
147
|
export default function InboxTab({ showToast }) {
|
|
146
148
|
const [requests, setRequests] = useState([]);
|
|
@@ -192,10 +194,10 @@ export default function InboxTab({ showToast }) {
|
|
|
192
194
|
|
|
193
195
|
const loadLists = useCallback(async () => {
|
|
194
196
|
const [reqs, convs, impIds, trs] = await Promise.all([
|
|
195
|
-
messages.listRequests().catch(()
|
|
196
|
-
messages.listConversations().catch(()
|
|
197
|
-
tracked.listImportantMessageIds().catch(()
|
|
198
|
-
tracked.listTrackedResponses().catch(()
|
|
197
|
+
messages.listRequests().catch(err => { swallowed('inbox-tab: isOperator', err); return []; }),
|
|
198
|
+
messages.listConversations().catch(err => { swallowed('inbox-tab: isOperator', err); return []; }),
|
|
199
|
+
tracked.listImportantMessageIds().catch(err => { swallowed('inbox-tab: isOperator', err); return []; }),
|
|
200
|
+
tracked.listTrackedResponses().catch(err => { swallowed('inbox-tab: isOperator', err); return []; }),
|
|
199
201
|
]);
|
|
200
202
|
setRequests(reqs);
|
|
201
203
|
setConversations(convs);
|
|
@@ -208,12 +210,12 @@ export default function InboxTab({ showToast }) {
|
|
|
208
210
|
// the 6-request fan-out. Interactive refreshes (live-update, post-send) keep using loadLists (the 4
|
|
209
211
|
// lists); a composite failure falls back to the individual loaders so the inbox still populates.
|
|
210
212
|
const loadOverview = useCallback(async () => {
|
|
211
|
-
const r = await apiGet('/v1/messages/overview').catch(()
|
|
213
|
+
const r = await apiGet('/v1/messages/overview').catch(err => { swallowed('inbox-tab: isOperator', err); return null; });
|
|
212
214
|
const d = r?.data;
|
|
213
215
|
if (!d) {
|
|
214
216
|
loadLists();
|
|
215
|
-
agentsSvc.listAgents().then(a => setMyAgents(a || [])).catch(
|
|
216
|
-
apiGet('/v1/groups').then(gr => setMyGroups(gr?.data?.groups || [])).catch(
|
|
217
|
+
agentsSvc.listAgents().then(a => setMyAgents(a || [])).catch(err => { swallowed('inbox-tab: isOperator', err); });
|
|
218
|
+
apiGet('/v1/groups').then(gr => setMyGroups(gr?.data?.groups || [])).catch(err => { swallowed('inbox-tab: isOperator', err); });
|
|
217
219
|
return;
|
|
218
220
|
}
|
|
219
221
|
setRequests(d.requests || []);
|
|
@@ -230,7 +232,7 @@ export default function InboxTab({ showToast }) {
|
|
|
230
232
|
// requests = 5 requests) on each is the request storm. Direct-message changes ('messages') still
|
|
231
233
|
// do the full refresh below.
|
|
232
234
|
const loadTrackedOnly = useCallback(async () => {
|
|
233
|
-
const trs = await tracked.listTrackedResponses().catch(()
|
|
235
|
+
const trs = await tracked.listTrackedResponses().catch(err => { swallowed('inbox-tab: isOperator', err); return []; });
|
|
234
236
|
setTrackedList(trs.filter(tr => tr.state !== 'cancelled' && !dismissedRef.current.has(tr.id)));
|
|
235
237
|
}, []);
|
|
236
238
|
|
|
@@ -288,11 +290,11 @@ export default function InboxTab({ showToast }) {
|
|
|
288
290
|
const on = !next.has(msg.id);
|
|
289
291
|
if (on) next.add(msg.id); else next.delete(msg.id);
|
|
290
292
|
setImportant(next);
|
|
291
|
-
await tracked.setMessageImportant(msg.id, on).catch(
|
|
293
|
+
await tracked.setMessageImportant(msg.id, on).catch(err => { swallowed('inbox-tab: toggleImportant', err); });
|
|
292
294
|
};
|
|
293
295
|
|
|
294
296
|
const startSuggestedReply = async (tr) => {
|
|
295
|
-
const d = await tracked.getTrackedResponseDraft(tr.id).catch(()
|
|
297
|
+
const d = await tracked.getTrackedResponseDraft(tr.id).catch(err => { swallowed('inbox-tab: startSuggestedReply', err); return null; });
|
|
296
298
|
setDraftPrefill(d?.draft?.body || awaitingDrafts[tr.id] || '');
|
|
297
299
|
setReplyingTrId(tr.id);
|
|
298
300
|
};
|
|
@@ -307,6 +309,7 @@ export default function InboxTab({ showToast }) {
|
|
|
307
309
|
sessionStorage.setItem('aimeat-profile-tab', 'organisms');
|
|
308
310
|
sessionStorage.setItem('aimeat.ws.openId', r.organismId);
|
|
309
311
|
sessionStorage.setItem('aimeat.ws.openWs', r.workspaceId);
|
|
312
|
+
// eslint-disable-next-line aimeat/no-silent-catch -- noop
|
|
310
313
|
} catch { /* noop */ }
|
|
311
314
|
window.location.assign('/v1/profile?tab=organisms');
|
|
312
315
|
};
|
|
@@ -318,7 +321,7 @@ export default function InboxTab({ showToast }) {
|
|
|
318
321
|
let cancelled = false;
|
|
319
322
|
(async () => {
|
|
320
323
|
const entries = await Promise.all(awaitingForConv.map(async tr => {
|
|
321
|
-
const d = await tracked.getTrackedResponseDraft(tr.id).catch(()
|
|
324
|
+
const d = await tracked.getTrackedResponseDraft(tr.id).catch(err => { swallowed('inbox-tab', err); return null; });
|
|
322
325
|
return [tr.id, d?.draft?.body || ''];
|
|
323
326
|
}));
|
|
324
327
|
if (!cancelled) setAwaitingDrafts(Object.fromEntries(entries));
|
|
@@ -341,7 +344,7 @@ export default function InboxTab({ showToast }) {
|
|
|
341
344
|
const loadThread = useCallback(async (conv, markRead = false) => {
|
|
342
345
|
if (!conv) return;
|
|
343
346
|
// threadAllRef: false = newest 50 (fast default); true = the FULL history (header "All messages" toggle).
|
|
344
|
-
const msgs = (await messages.getConversation(conv.conversationId, conv.viaAgent, threadAllRef.current).catch(()
|
|
347
|
+
const msgs = (await messages.getConversation(conv.conversationId, conv.viaAgent, threadAllRef.current).catch(err => { swallowed('inbox-tab: msgs', err); return []; })).slice().reverse();
|
|
345
348
|
setThread(msgs);
|
|
346
349
|
// Reuse already-resolved attachment URLs for the same conversation (a refresh must not re-download
|
|
347
350
|
// every image); a different conversation starts a fresh cache.
|
|
@@ -349,7 +352,7 @@ export default function InboxTab({ showToast }) {
|
|
|
349
352
|
urlCacheRef.current = cache;
|
|
350
353
|
setUrlMap(cache.map);
|
|
351
354
|
// Agent-owned ("via <agent>") threads are read-only for the owner — don't post a read receipt as them.
|
|
352
|
-
if (markRead && !conv.viaAgent) await messages.markConversationRead(conv.conversationId).catch(
|
|
355
|
+
if (markRead && !conv.viaAgent) await messages.markConversationRead(conv.conversationId).catch(err => { swallowed('inbox-tab: msgs', err); });
|
|
353
356
|
}, []);
|
|
354
357
|
const toggleThreadAll = () => setThreadAll(v => { const nv = !v; threadAllRef.current = nv; if (activeConv) loadThread(activeConv); return nv; });
|
|
355
358
|
|
|
@@ -369,21 +372,21 @@ export default function InboxTab({ showToast }) {
|
|
|
369
372
|
const cmds = val && Array.isArray(val.commands) ? val.commands.filter(c => c && c.id) : [];
|
|
370
373
|
if (!cancelled && cmds.length) setAgentCommands(cmds);
|
|
371
374
|
})
|
|
372
|
-
.catch(
|
|
375
|
+
.catch(err => { swallowed('inbox-tab: toggleThreadAll', err); });
|
|
373
376
|
return () => { cancelled = true; };
|
|
374
377
|
}, [activePeer]);
|
|
375
378
|
|
|
376
379
|
// Recent broadcasts/polls the user sent — tracked in localStorage so results stay re-accessible.
|
|
377
380
|
const BC_STORE = 'aimeat.inbox.broadcasts';
|
|
378
|
-
useEffect(() => { try { setRecentBroadcasts(JSON.parse(localStorage.getItem(BC_STORE) || '[]')); } catch { /* none */ } }, []);
|
|
381
|
+
useEffect(() => { try { setRecentBroadcasts(JSON.parse(localStorage.getItem(BC_STORE) || '[]')); } catch { /* none */ } }, []); // eslint-disable-line aimeat/no-silent-catch -- none
|
|
379
382
|
const trackBroadcast = (entry) => setRecentBroadcasts(prev => {
|
|
380
383
|
const next = [entry, ...prev.filter(b => b.id !== entry.id)].slice(0, 30);
|
|
381
|
-
try { localStorage.setItem(BC_STORE, JSON.stringify(next)); } catch { /* quota */ }
|
|
384
|
+
try { localStorage.setItem(BC_STORE, JSON.stringify(next)); } catch { /* quota */ } // eslint-disable-line aimeat/no-silent-catch -- quota
|
|
382
385
|
return next;
|
|
383
386
|
});
|
|
384
387
|
const openResults = async (id) => {
|
|
385
388
|
setMode('results'); setResultsId(id); setResults(null); setActiveConv(null);
|
|
386
|
-
setResults(await messages.getBroadcastResults(id).catch(()
|
|
389
|
+
setResults(await messages.getBroadcastResults(id).catch(err => { swallowed('inbox-tab', err); return null; }));
|
|
387
390
|
};
|
|
388
391
|
|
|
389
392
|
// Inbox-link (mailto-style): /v1/profile?tab=messages&to=<id>[,<id>]&subject=<s> opens a prefilled
|
|
@@ -399,7 +402,7 @@ export default function InboxTab({ showToast }) {
|
|
|
399
402
|
} else {
|
|
400
403
|
setMode('compose'); setActiveConv(null); setTo(recips[0]); setComposeSubject(subject);
|
|
401
404
|
}
|
|
402
|
-
try { window.history.replaceState({}, '', '/v1/profile?tab=messages'); } catch {
|
|
405
|
+
try { window.history.replaceState({}, '', '/v1/profile?tab=messages'); } catch (err) { swallowed('inbox-tab: toParam', err); }
|
|
403
406
|
}, []);
|
|
404
407
|
|
|
405
408
|
// Recipient suggestions for a new message: your own agents (GAIIs) + everyone you've a thread with.
|
|
@@ -473,7 +476,7 @@ export default function InboxTab({ showToast }) {
|
|
|
473
476
|
todo.forEach(id => { peerNamesRef.current[id] = ''; }); // reserve (fallback = handle) so we look it up once
|
|
474
477
|
Promise.all(todo.map(async (id) => {
|
|
475
478
|
const path = String(id).includes('#') ? `/v1/agents/${encodeURIComponent(id)}` : `/v1/ghii/${encodeURIComponent(id)}`;
|
|
476
|
-
const r = await apiGet(path).catch(()
|
|
479
|
+
const r = await apiGet(path).catch(err => { swallowed('inbox-tab: openConversation', err); return null; });
|
|
477
480
|
const dn = String(r?.data?.display_name || '').trim();
|
|
478
481
|
if (dn) peerNamesRef.current[id] = dn;
|
|
479
482
|
})).then(() => setPeerNames({ ...peerNamesRef.current }));
|
|
@@ -555,7 +558,7 @@ export default function InboxTab({ showToast }) {
|
|
|
555
558
|
loadLists();
|
|
556
559
|
if (id) openResults(id); else setMode('idle');
|
|
557
560
|
}
|
|
558
|
-
} catch {
|
|
561
|
+
} catch (err) { swallowed('inbox-tab', err); showToast?.(sendFailure(err), true); }
|
|
559
562
|
setSending(false);
|
|
560
563
|
};
|
|
561
564
|
|
|
@@ -571,12 +574,12 @@ export default function InboxTab({ showToast }) {
|
|
|
571
574
|
// thread once accepted, else falls back to the list (sender still pending accept/block).
|
|
572
575
|
const consumeDeepLink = useCallback(async () => {
|
|
573
576
|
let target = null;
|
|
574
|
-
try { target = sessionStorage.getItem('aimeat.inbox.open'); } catch { /* noop */ }
|
|
577
|
+
try { target = sessionStorage.getItem('aimeat.inbox.open'); } catch { /* noop */ } // eslint-disable-line aimeat/no-silent-catch -- noop
|
|
575
578
|
if (!target) return;
|
|
576
|
-
try { sessionStorage.removeItem('aimeat.inbox.open'); } catch { /* noop */ }
|
|
579
|
+
try { sessionStorage.removeItem('aimeat.inbox.open'); } catch { /* noop */ } // eslint-disable-line aimeat/no-silent-catch -- noop
|
|
577
580
|
if (target === 'requests') { await loadLists(); return; }
|
|
578
581
|
const fromRequest = target.startsWith('req:'); if (fromRequest) target = target.slice(4);
|
|
579
|
-
const convs = await messages.listConversations().catch(()
|
|
582
|
+
const convs = await messages.listConversations().catch(err => { swallowed('inbox-tab', err); return []; });
|
|
580
583
|
const conv = convs.find(c => c.conversationId === target);
|
|
581
584
|
if (conv) openConversation(conv); else if (fromRequest) await loadLists();
|
|
582
585
|
// openConversation uses only stable setters/refs (no stale-closure risk); keeping it out of deps
|
|
@@ -591,12 +594,12 @@ export default function InboxTab({ showToast }) {
|
|
|
591
594
|
}, [consumeDeepLink]);
|
|
592
595
|
|
|
593
596
|
const accept = async (contactId) => {
|
|
594
|
-
await messages.acceptRequest(contactId).catch(()
|
|
597
|
+
await messages.acceptRequest(contactId).catch(err => { swallowed('inbox-tab', err); return {}; });
|
|
595
598
|
showToast?.(t('inbox.acceptedToast'));
|
|
596
599
|
await loadLists();
|
|
597
600
|
};
|
|
598
601
|
const block = async (contactId) => {
|
|
599
|
-
await messages.blockContact(contactId).catch(()
|
|
602
|
+
await messages.blockContact(contactId).catch(err => { swallowed('inbox-tab', err); return {}; });
|
|
600
603
|
showToast?.(t('inbox.blockedToast'));
|
|
601
604
|
await loadLists();
|
|
602
605
|
if (activeConv?.peerGhii === contactId) { setActiveConv(null); setThread([]); setMode('idle'); }
|
|
@@ -615,7 +618,7 @@ export default function InboxTab({ showToast }) {
|
|
|
615
618
|
});
|
|
616
619
|
if (resp?.ok === false) showToast?.(resp?.error?.message || t('inbox.failed'), true);
|
|
617
620
|
else { await loadThread(activeConv); loadLists(); }
|
|
618
|
-
} catch { showToast?.(t('inbox.failed'), true); }
|
|
621
|
+
} catch (err) { swallowed('inbox-tab', err); showToast?.(t('inbox.failed'), true); }
|
|
619
622
|
setSending(false);
|
|
620
623
|
};
|
|
621
624
|
|
|
@@ -657,7 +660,7 @@ export default function InboxTab({ showToast }) {
|
|
|
657
660
|
setReplyQuote(null);
|
|
658
661
|
// If this send fulfils a Tracked Response awaiting approval, mark it replied.
|
|
659
662
|
if (replyingTrId) {
|
|
660
|
-
await tracked.markTrackedResponseReplied(replyingTrId, resp?.data?.message?.id).catch(
|
|
663
|
+
await tracked.markTrackedResponseReplied(replyingTrId, resp?.data?.message?.id).catch(err => { swallowed('inbox-tab: replyTo', err); });
|
|
661
664
|
setReplyingTrId(null); setDraftPrefill('');
|
|
662
665
|
}
|
|
663
666
|
const conv = activeConv || { conversationId: resp?.data?.message?.conversationId, peerGhii: recipient };
|
|
@@ -665,8 +668,8 @@ export default function InboxTab({ showToast }) {
|
|
|
665
668
|
await loadThread(conv);
|
|
666
669
|
loadLists();
|
|
667
670
|
}
|
|
668
|
-
} catch {
|
|
669
|
-
showToast?.(
|
|
671
|
+
} catch (err) { swallowed('inbox-tab: replyTo', err);
|
|
672
|
+
showToast?.(sendFailure(err), true);
|
|
670
673
|
}
|
|
671
674
|
setSending(false);
|
|
672
675
|
};
|
|
@@ -21,6 +21,7 @@ import * as memoryService from '/js/services/memory.js';
|
|
|
21
21
|
import { listSubscriptions } from '/js/services/boards.js';
|
|
22
22
|
import { listInstances, listPackages } from '/js/services/packages.js';
|
|
23
23
|
import { Spinner } from './shared.js';
|
|
24
|
+
import { swallowed } from '/js/swallowed.js';
|
|
24
25
|
|
|
25
26
|
/* ───── Panel registry ───── */
|
|
26
27
|
|
|
@@ -88,7 +89,7 @@ function AgentsPanel({ session, switchTab }) {
|
|
|
88
89
|
try {
|
|
89
90
|
const list = await listAgents(session.owner);
|
|
90
91
|
setAgents(Array.isArray(list) ? list.slice(0, 5) : []);
|
|
91
|
-
} catch { setAgents([]); }
|
|
92
|
+
} catch (err) { swallowed('inline-panels', err); setAgents([]); }
|
|
92
93
|
setLoading(false);
|
|
93
94
|
}, [session.owner]);
|
|
94
95
|
|
|
@@ -133,7 +134,7 @@ function MemoryPanel({ switchTab }) {
|
|
|
133
134
|
try {
|
|
134
135
|
const list = await memoryService.listMemories();
|
|
135
136
|
setItems(Array.isArray(list) ? list.slice(0, 3) : []);
|
|
136
|
-
} catch { setItems([]); }
|
|
137
|
+
} catch (err) { swallowed('inline-panels', err); setItems([]); }
|
|
137
138
|
setLoading(false);
|
|
138
139
|
}, []);
|
|
139
140
|
|
|
@@ -178,7 +179,7 @@ function BoardsPanel({ switchTab }) {
|
|
|
178
179
|
try {
|
|
179
180
|
const list = await listSubscriptions();
|
|
180
181
|
setBoards(Array.isArray(list) ? list.slice(0, 4) : []);
|
|
181
|
-
} catch { setBoards([]); }
|
|
182
|
+
} catch (err) { swallowed('inline-panels', err); setBoards([]); }
|
|
182
183
|
setLoading(false);
|
|
183
184
|
}, []);
|
|
184
185
|
|
|
@@ -231,7 +232,7 @@ function PackagesPanel({ switchTab }) {
|
|
|
231
232
|
const list = pkgs.value?.data || pkgs.value || [];
|
|
232
233
|
setAvailable(Array.isArray(list) ? list.slice(0, 3) : []);
|
|
233
234
|
}
|
|
234
|
-
} catch {
|
|
235
|
+
} catch (err) { swallowed('inline-panels: PackagesPanel', err); }
|
|
235
236
|
setLoading(false);
|
|
236
237
|
}, []);
|
|
237
238
|
|