aimeat 1.40.1 → 2.1.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 +24 -15
- package/dist/.env.example +528 -495
- package/dist/locales/en.json +349 -298
- package/dist/locales/fi.json +349 -298
- package/dist/public/components/ContactPicker.js +145 -0
- package/dist/public/components/EmptyState.js +22 -7
- package/dist/public/components/LinkPreview.js +101 -0
- package/dist/public/components/NotificationBell.js +110 -8
- package/dist/public/cortex-bundled/aimeat-dag.js +553 -0
- package/dist/public/cortex-bundled/aimeat-dag.yaml +77 -0
- package/dist/public/cortex-bundled/aimeat-flow.js +225 -0
- package/dist/public/cortex-bundled/aimeat-flow.yaml +101 -0
- package/dist/public/cortex-bundled/aimeat-ui-motion.js +323 -0
- package/dist/public/cortex-bundled/aimeat-ui-motion.yaml +86 -0
- package/dist/public/css/components/contact-picker.css +26 -0
- package/dist/public/css/theme.css +109 -9
- package/dist/public/css/views/admin.css +59 -2
- package/dist/public/css/views/agents-detail.css +78 -14
- package/dist/public/css/views/app-grant.css +18 -0
- package/dist/public/css/views/capabilities.css +2 -0
- package/dist/public/css/views/companies.css +0 -1
- package/dist/public/css/views/inbox.css +188 -7
- package/dist/public/css/views/landing.css +2 -0
- package/dist/public/css/views/members.css +0 -1
- package/dist/public/css/views/my-company.css +5 -5
- package/dist/public/css/views/offers.css +0 -3
- package/dist/public/css/views/portal-dev.css +49 -0
- package/dist/public/css/views/portfolio.css +46 -0
- package/dist/public/css/views/profile.css +200 -17
- package/dist/public/css/views/public-knowledge-viewer.css +0 -17
- package/dist/public/css/views/scheduler.css +37 -1
- package/dist/public/css/views/workflows.css +1 -1
- package/dist/public/js/services/admin.js +10 -0
- package/dist/public/js/services/agent-activity.js +15 -0
- package/dist/public/js/services/agent-directives.js +14 -0
- package/dist/public/js/services/agent-integration.js +15 -0
- package/dist/public/js/services/agent-messages.js +14 -0
- package/dist/public/js/services/agent-tasks.js +14 -0
- package/dist/public/js/services/appdev.js +67 -0
- package/dist/public/js/services/apps.js +47 -3
- package/dist/public/js/services/calibrator.js +14 -1
- package/dist/public/js/services/consent.js +17 -0
- package/dist/public/js/services/contacts.js +47 -0
- package/dist/public/js/services/ecosystem.js +14 -0
- package/dist/public/js/services/generator.js +71 -35
- package/dist/public/js/services/knowledge.js +14 -0
- package/dist/public/js/services/ledger.js +18 -0
- package/dist/public/js/services/living.js +14 -0
- package/dist/public/js/services/messages-ai-prompts.js +38 -0
- package/dist/public/js/services/messages.js +33 -5
- package/dist/public/js/services/notebook.js +76 -0
- package/dist/public/js/services/organisms.js +48 -4
- package/dist/public/js/services/schedules.js +19 -2
- package/dist/public/js/services/security.js +14 -0
- package/dist/public/js/services/unfurl.js +43 -0
- package/dist/public/js/services/work.js +14 -0
- package/dist/public/lib/VENDORED.md +77 -0
- package/dist/public/lib/drawflow@0.min.css +1 -0
- package/dist/public/lib/drawflow@0.min.js +1 -0
- package/dist/public/lib/fonts/LICENSE.md +13 -0
- package/dist/public/lib/fonts/baloo2-latin-ext.woff2 +0 -0
- package/dist/public/lib/fonts/baloo2-latin.woff2 +0 -0
- package/dist/public/lib/fonts/bangers-latin-ext.woff2 +0 -0
- package/dist/public/lib/fonts/bangers-latin.woff2 +0 -0
- package/dist/public/lib/fonts.css +51 -0
- package/dist/public/lib/p5@1.min.js +2 -0
- package/dist/public/lib/phaser@3.min.js +1 -0
- package/dist/public/lib/pixi-unsafe-eval@8.min.js +22 -0
- package/dist/public/lib/pixi@8.min.js +2329 -0
- package/dist/public/lib/realtime.js +120 -3
- package/dist/public/lib/samples/LICENSE.md +31 -8
- package/dist/public/lib/samples/bass/A1.mp3 +0 -0
- package/dist/public/lib/samples/bass/B2.mp3 +0 -0
- package/dist/public/lib/samples/bass/D2.mp3 +0 -0
- package/dist/public/lib/samples/bass/E1.mp3 +0 -0
- package/dist/public/lib/samples/bass/E3.mp3 +0 -0
- package/dist/public/lib/samples/bass/G2.mp3 +0 -0
- package/dist/public/lib/samples/drums/clap.mp3 +0 -0
- package/dist/public/lib/samples/drums/cowbell.mp3 +0 -0
- package/dist/public/lib/samples/drums/crash.mp3 +0 -0
- package/dist/public/lib/samples/drums/hihat-open.mp3 +0 -0
- package/dist/public/lib/samples/drums/hihat.mp3 +0 -0
- package/dist/public/lib/samples/drums/kick.mp3 +0 -0
- package/dist/public/lib/samples/drums/ride.mp3 +0 -0
- package/dist/public/lib/samples/drums/snare.mp3 +0 -0
- package/dist/public/lib/samples/drums/tom-high.mp3 +0 -0
- package/dist/public/lib/samples/drums/tom-low.mp3 +0 -0
- package/dist/public/lib/samples/drums/tom-mid.mp3 +0 -0
- package/dist/public/lib/samples/epiano/C2.mp3 +0 -0
- package/dist/public/lib/samples/epiano/C3.mp3 +0 -0
- package/dist/public/lib/samples/epiano/C4.mp3 +0 -0
- package/dist/public/lib/samples/epiano/C5.mp3 +0 -0
- package/dist/public/lib/samples/epiano/C6.mp3 +0 -0
- package/dist/public/lib/samples/epiano/G2.mp3 +0 -0
- package/dist/public/lib/samples/epiano/G3.mp3 +0 -0
- package/dist/public/lib/samples/epiano/G4.mp3 +0 -0
- package/dist/public/lib/samples/epiano/G5.mp3 +0 -0
- package/dist/public/lib/samples/flute/A4.mp3 +0 -0
- package/dist/public/lib/samples/flute/A5.mp3 +0 -0
- package/dist/public/lib/samples/flute/C4.mp3 +0 -0
- package/dist/public/lib/samples/flute/C5.mp3 +0 -0
- package/dist/public/lib/samples/flute/C6.mp3 +0 -0
- package/dist/public/lib/samples/flute/E4.mp3 +0 -0
- package/dist/public/lib/samples/flute/E5.mp3 +0 -0
- package/dist/public/lib/samples/guitar/A2.mp3 +0 -0
- package/dist/public/lib/samples/guitar/A4.mp3 +0 -0
- package/dist/public/lib/samples/guitar/B3.mp3 +0 -0
- package/dist/public/lib/samples/guitar/D3.mp3 +0 -0
- package/dist/public/lib/samples/guitar/E2.mp3 +0 -0
- package/dist/public/lib/samples/guitar/E4.mp3 +0 -0
- package/dist/public/lib/samples/guitar/E5.mp3 +0 -0
- package/dist/public/lib/samples/guitar/G3.mp3 +0 -0
- package/dist/public/lib/samples/guitar-el/A2.mp3 +0 -0
- package/dist/public/lib/samples/guitar-el/A4.mp3 +0 -0
- package/dist/public/lib/samples/guitar-el/B3.mp3 +0 -0
- package/dist/public/lib/samples/guitar-el/D3.mp3 +0 -0
- package/dist/public/lib/samples/guitar-el/E2.mp3 +0 -0
- package/dist/public/lib/samples/guitar-el/E4.mp3 +0 -0
- package/dist/public/lib/samples/guitar-el/E5.mp3 +0 -0
- package/dist/public/lib/samples/guitar-el/G3.mp3 +0 -0
- package/dist/public/lib/samples/guitar-steel/A2.mp3 +0 -0
- package/dist/public/lib/samples/guitar-steel/A4.mp3 +0 -0
- package/dist/public/lib/samples/guitar-steel/B3.mp3 +0 -0
- package/dist/public/lib/samples/guitar-steel/D3.mp3 +0 -0
- package/dist/public/lib/samples/guitar-steel/E2.mp3 +0 -0
- package/dist/public/lib/samples/guitar-steel/E4.mp3 +0 -0
- package/dist/public/lib/samples/guitar-steel/E5.mp3 +0 -0
- package/dist/public/lib/samples/guitar-steel/G3.mp3 +0 -0
- package/dist/public/lib/samples/organ/C2.mp3 +0 -0
- package/dist/public/lib/samples/organ/C3.mp3 +0 -0
- package/dist/public/lib/samples/organ/C4.mp3 +0 -0
- package/dist/public/lib/samples/organ/C5.mp3 +0 -0
- package/dist/public/lib/samples/organ/C6.mp3 +0 -0
- package/dist/public/lib/samples/organ/G2.mp3 +0 -0
- package/dist/public/lib/samples/organ/G3.mp3 +0 -0
- package/dist/public/lib/samples/organ/G4.mp3 +0 -0
- package/dist/public/lib/samples/organ/G5.mp3 +0 -0
- package/dist/public/lib/samples/strings/C2.mp3 +0 -0
- package/dist/public/lib/samples/strings/C3.mp3 +0 -0
- package/dist/public/lib/samples/strings/C4.mp3 +0 -0
- package/dist/public/lib/samples/strings/C5.mp3 +0 -0
- package/dist/public/lib/samples/strings/C6.mp3 +0 -0
- package/dist/public/lib/samples/strings/G2.mp3 +0 -0
- package/dist/public/lib/samples/strings/G3.mp3 +0 -0
- package/dist/public/lib/samples/strings/G4.mp3 +0 -0
- package/dist/public/lib/samples/strings/G5.mp3 +0 -0
- package/dist/public/lib/samples/trumpet/A3.mp3 +0 -0
- package/dist/public/lib/samples/trumpet/A4.mp3 +0 -0
- package/dist/public/lib/samples/trumpet/A5.mp3 +0 -0
- package/dist/public/lib/samples/trumpet/C4.mp3 +0 -0
- package/dist/public/lib/samples/trumpet/C5.mp3 +0 -0
- package/dist/public/lib/samples/trumpet/E3.mp3 +0 -0
- package/dist/public/lib/samples/trumpet/E4.mp3 +0 -0
- package/dist/public/lib/samples/trumpet/E5.mp3 +0 -0
- package/dist/public/llms-template.txt +42 -21
- package/dist/public/spa.html +42 -34
- package/dist/public/style-testbed.html +0 -2
- package/dist/public/sw.js +23 -4
- package/dist/public/views/_template.js +21 -8
- package/dist/public/views/admin/cortex-tab.js +2 -2
- package/dist/public/views/admin/database-tab.js +140 -0
- package/dist/public/views/admin/feedback-tab.js +162 -0
- package/dist/public/views/admin/owners-tab.js +19 -29
- package/dist/public/views/admin/push-tab.js +2 -2
- package/dist/public/views/admin/services-tab.js +4 -4
- package/dist/public/views/admin/shared.js +9 -3
- package/dist/public/views/admin/sharing-groups-tab.js +13 -25
- package/dist/public/views/admin/stats-tab.js +33 -33
- package/dist/public/views/admin.js +52 -49
- package/dist/public/views/app-grant.js +24 -4
- package/dist/public/views/companies.js +9 -7
- package/dist/public/views/help.js +2 -1
- package/dist/public/views/invite-accept.js +64 -19
- package/dist/public/views/landing.js +41 -8
- package/dist/public/views/members.js +4 -2
- package/dist/public/views/my-company.js +27 -77
- package/dist/public/views/my-company.payments.js +177 -0
- package/dist/public/views/portal-classic.js +0 -4
- package/dist/public/views/portal-dev.js +11 -0
- package/dist/public/views/portal-dev.panels.js +52 -58
- package/dist/public/views/portal.components.js +18 -36
- package/dist/public/views/portal.prompts.js +9 -10
- package/dist/public/views/portfolio.js +61 -6
- package/dist/public/views/profile/access-tab/access-tokens.js +3 -3
- package/dist/public/views/profile/access-tab/agent-defaults.js +3 -3
- package/dist/public/views/profile/access-tab/connected-apps.js +5 -3
- package/dist/public/views/profile/access-tab/sharing-groups.js +8 -7
- package/dist/public/views/profile/access-tab.js +26 -10
- package/dist/public/views/profile/agents/agent-card.js +16 -5
- package/dist/public/views/profile/agents/tab-activity.js +27 -9
- package/dist/public/views/profile/agents/tab-agent-config.js +4 -1
- package/dist/public/views/profile/agents/tab-contracts.js +11 -3
- package/dist/public/views/profile/agents/tab-data-access.js +36 -20
- package/dist/public/views/profile/agents/tab-directives.js +2 -1
- package/dist/public/views/profile/agents/tab-integration.js +46 -23
- package/dist/public/views/profile/agents/tab-messages.js +37 -6
- package/dist/public/views/profile/agents/tab-quality.js +32 -8
- package/dist/public/views/profile/agents/tab-schedules.js +15 -10
- package/dist/public/views/profile/agents/tab-usage.js +19 -8
- package/dist/public/views/profile/agents-capabilities-subtab.js +3 -3
- package/dist/public/views/profile/agents-tab.js +11 -1
- package/dist/public/views/profile/appdev-tab.js +275 -0
- package/dist/public/views/profile/apps-tab.js +248 -2
- package/dist/public/views/profile/calibrator-batch.js +2 -2
- package/dist/public/views/profile/calibrator-tab.js +69 -37
- package/dist/public/views/profile/capabilities-tab.js +24 -13
- package/dist/public/views/profile/contacts-tab.js +139 -0
- package/dist/public/views/profile/data-wallet-tab.js +37 -18
- package/dist/public/views/profile/discover-tab.js +2 -1
- package/dist/public/views/profile/ecosystem-tab.automation.js +21 -7
- package/dist/public/views/profile/extensions-tab.js +4 -2
- package/dist/public/views/profile/extensions-tab.maturity.js +40 -0
- package/dist/public/views/profile/generator-dashboard/DebugPanel.js +16 -9
- package/dist/public/views/profile/generator-dashboard/use-dashboard-core.js +46 -26
- package/dist/public/views/profile/generator-dashboard/use-edit-mode.js +29 -25
- package/dist/public/views/profile/generator-dashboard/use-test-execution.js +14 -14
- package/dist/public/views/profile/generator-detail.ai.js +21 -0
- package/dist/public/views/profile/generator-detail.js +59 -26
- package/dist/public/views/profile/generator-detail.results.js +1 -1
- package/dist/public/views/profile/generator-settings.js +51 -47
- package/dist/public/views/profile/generator-tab.js +28 -7
- package/dist/public/views/profile/inbox-tab/ai-actions.js +86 -0
- package/dist/public/views/profile/inbox-tab/components.js +229 -14
- package/dist/public/views/profile/inbox-tab/helpers.js +38 -0
- package/dist/public/views/profile/inbox-tab/panels.js +51 -6
- package/dist/public/views/profile/inbox-tab/use-thread-ux.js +121 -0
- package/dist/public/views/profile/inbox-tab.js +134 -90
- package/dist/public/views/profile/knowledge-tab.helpers.js +20 -0
- package/dist/public/views/profile/knowledge-tab.js +31 -28
- package/dist/public/views/profile/landing-page.cards.js +66 -46
- package/dist/public/views/profile/landing-page.js +18 -6
- package/dist/public/views/profile/landing-page.modals.js +5 -2
- package/dist/public/views/profile/libraries-tab.js +196 -0
- package/dist/public/views/profile/living-tab.js +11 -0
- package/dist/public/views/profile/memory-tab.js +45 -4
- package/dist/public/views/profile/node-stats-tab.js +29 -24
- package/dist/public/views/profile/notebook-card.js +1 -1
- package/dist/public/views/profile/notebook-tab.js +20 -1
- package/dist/public/views/profile/offers-tab.js +2 -1
- package/dist/public/views/profile/openrouter-settings.js +613 -0
- package/dist/public/views/profile/organisms/invite-panel.js +254 -0
- package/dist/public/views/profile/organisms/members.js +110 -177
- package/dist/public/views/profile/organisms/participants-panel.js +6 -2
- package/dist/public/views/profile/organisms/skills-panel.js +2 -1
- package/dist/public/views/profile/organisms/workspace/generator.js +1 -1
- package/dist/public/views/profile/organisms-tab.js +24 -16
- package/dist/public/views/profile/packages-tab.js +28 -38
- package/dist/public/views/profile/scheduler-calendar.js +72 -4
- package/dist/public/views/profile/scheduler-tab.js +16 -5
- package/dist/public/views/profile/security-tab.js +44 -44
- package/dist/public/views/profile/skills-tab.js +4 -3
- package/dist/public/views/profile/wallet-tab.js +34 -7
- package/dist/public/views/profile/work-tab.js +10 -1
- package/dist/public/views/profile/workflows-tab.js +3 -2
- package/dist/public/views/profile.js +38 -44
- package/dist/public/views/public-knowledge-viewer.js +6 -7
- package/dist/public/views/public-workspace-viewer.js +1 -1
- package/dist/public/views/start-flows.js +16 -0
- package/dist/public/views/start.js +2 -1
- package/dist/scripts/aeb-ledger.d.ts +2 -0
- package/dist/scripts/aeb-ledger.d.ts.map +1 -0
- package/dist/scripts/aeb-ledger.js +28 -0
- package/dist/scripts/aeb-ledger.js.map +1 -0
- package/dist/scripts/aeb-prove.d.ts +2 -0
- package/dist/scripts/aeb-prove.d.ts.map +1 -0
- package/dist/scripts/aeb-prove.js +124 -0
- package/dist/scripts/aeb-prove.js.map +1 -0
- package/dist/scripts/archive-stale-versions.js +1 -59
- package/dist/scripts/archive-stale-versions.js.map +1 -1
- package/dist/scripts/audit-mcp-tools.d.ts +1 -0
- package/dist/scripts/audit-mcp-tools.d.ts.map +1 -1
- package/dist/scripts/audit-mcp-tools.js +25 -0
- package/dist/scripts/audit-mcp-tools.js.map +1 -1
- package/dist/scripts/build-sdk-libs.d.ts +16 -0
- package/dist/scripts/build-sdk-libs.d.ts.map +1 -0
- package/dist/scripts/build-sdk-libs.js +112 -0
- package/dist/scripts/build-sdk-libs.js.map +1 -0
- package/dist/scripts/consent-audit-prune.js +5 -58
- package/dist/scripts/consent-audit-prune.js.map +1 -1
- package/dist/scripts/db-reset.d.ts +3 -3
- package/dist/scripts/db-reset.js +21 -62
- package/dist/scripts/db-reset.js.map +1 -1
- package/dist/scripts/kill-port.js +25 -5
- package/dist/scripts/kill-port.js.map +1 -1
- package/dist/scripts/kill-test-servers.d.ts +3 -0
- package/dist/scripts/kill-test-servers.d.ts.map +1 -0
- package/dist/scripts/kill-test-servers.js +84 -0
- package/dist/scripts/kill-test-servers.js.map +1 -0
- package/dist/scripts/migrate-to-postgres-kysely.d.ts +2 -0
- package/dist/scripts/migrate-to-postgres-kysely.d.ts.map +1 -0
- package/dist/scripts/migrate-to-postgres-kysely.js +194 -0
- package/dist/scripts/migrate-to-postgres-kysely.js.map +1 -0
- package/dist/scripts/reassign-apps.js +1 -1
- package/dist/scripts/telemetry-prune.d.ts +2 -1
- package/dist/scripts/telemetry-prune.d.ts.map +1 -1
- package/dist/scripts/telemetry-prune.js +7 -58
- package/dist/scripts/telemetry-prune.js.map +1 -1
- package/dist/src/auth/middleware.d.ts +9 -0
- package/dist/src/auth/middleware.d.ts.map +1 -1
- package/dist/src/auth/middleware.js +31 -0
- package/dist/src/auth/middleware.js.map +1 -1
- package/dist/src/cli/config-import.js +2 -2
- package/dist/src/cli/config-import.js.map +1 -1
- package/dist/src/cli/connect/auth.d.ts +15 -0
- package/dist/src/cli/connect/auth.d.ts.map +1 -1
- package/dist/src/cli/connect/auth.js +25 -6
- package/dist/src/cli/connect/auth.js.map +1 -1
- package/dist/src/cli/connect/keychain.d.ts +9 -0
- package/dist/src/cli/connect/keychain.d.ts.map +1 -1
- package/dist/src/cli/connect/keychain.js +21 -8
- package/dist/src/cli/connect/keychain.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-management.d.ts +2 -0
- package/dist/src/cli/connect/mcp/tools/agent-management.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-management.js +8 -0
- package/dist/src/cli/connect/mcp/tools/agent-management.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/appdev.d.ts +17 -0
- package/dist/src/cli/connect/mcp/tools/appdev.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/appdev.js +123 -0
- package/dist/src/cli/connect/mcp/tools/appdev.js.map +1 -0
- package/dist/src/cli/connect/mcp/tools/apps.d.ts +3 -1
- package/dist/src/cli/connect/mcp/tools/apps.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/apps.js +49 -1
- package/dist/src/cli/connect/mcp/tools/apps.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/commerce.d.ts +16 -0
- package/dist/src/cli/connect/mcp/tools/commerce.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/commerce.js +102 -0
- package/dist/src/cli/connect/mcp/tools/commerce.js.map +1 -0
- package/dist/src/cli/connect/mcp/tools/contacts.d.ts +13 -0
- package/dist/src/cli/connect/mcp/tools/contacts.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/contacts.js +35 -0
- package/dist/src/cli/connect/mcp/tools/contacts.js.map +1 -0
- package/dist/src/cli/connect/mcp/tools/dm-messages.d.ts +3 -0
- package/dist/src/cli/connect/mcp/tools/dm-messages.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/dm-messages.js +24 -0
- package/dist/src/cli/connect/mcp/tools/dm-messages.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/exchange.d.ts +18 -0
- package/dist/src/cli/connect/mcp/tools/exchange.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/exchange.js +170 -0
- package/dist/src/cli/connect/mcp/tools/exchange.js.map +1 -0
- package/dist/src/cli/connect/mcp/tools/feedback.d.ts +14 -0
- package/dist/src/cli/connect/mcp/tools/feedback.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/feedback.js +29 -0
- package/dist/src/cli/connect/mcp/tools/feedback.js.map +1 -0
- package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/index.js +12 -0
- package/dist/src/cli/connect/mcp/tools/index.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/onboarding.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/onboarding.js +4 -1
- package/dist/src/cli/connect/mcp/tools/onboarding.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/operator.d.ts +18 -0
- package/dist/src/cli/connect/mcp/tools/operator.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/operator.js +65 -0
- package/dist/src/cli/connect/mcp/tools/operator.js.map +1 -0
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts +2 -0
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.js +101 -2
- package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/workflows.d.ts +1 -0
- package/dist/src/cli/connect/mcp/tools/workflows.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/workflows.js +13 -0
- package/dist/src/cli/connect/mcp/tools/workflows.js.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-agent.d.ts +6 -0
- package/dist/src/cli/connect/tool-call-defs-agent.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-agent.js +126 -0
- package/dist/src/cli/connect/tool-call-defs-agent.js.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-apps.d.ts +4 -0
- package/dist/src/cli/connect/tool-call-defs-apps.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-apps.js +379 -1
- package/dist/src/cli/connect/tool-call-defs-apps.js.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-exchange.d.ts +3 -0
- package/dist/src/cli/connect/tool-call-defs-exchange.d.ts.map +1 -0
- package/dist/src/cli/connect/tool-call-defs-exchange.js +146 -0
- package/dist/src/cli/connect/tool-call-defs-exchange.js.map +1 -0
- package/dist/src/cli/connect/tool-call-defs-organism.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-organism.js +46 -1
- package/dist/src/cli/connect/tool-call-defs-organism.js.map +1 -1
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +2 -0
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/cli/init-wizard/generate.js +2 -2
- package/dist/src/cli/init-wizard/generate.js.map +1 -1
- package/dist/src/cli/init-wizard/helpers.d.ts +1 -1
- package/dist/src/cli/init-wizard/helpers.d.ts.map +1 -1
- package/dist/src/cli/init-wizard/helpers.js +2 -5
- package/dist/src/cli/init-wizard/helpers.js.map +1 -1
- package/dist/src/cli/init-wizard/presets.d.ts.map +1 -1
- package/dist/src/cli/init-wizard/presets.js +0 -1
- package/dist/src/cli/init-wizard/presets.js.map +1 -1
- package/dist/src/cli/init-wizard/steps-core.d.ts.map +1 -1
- package/dist/src/cli/init-wizard/steps-core.js +7 -11
- package/dist/src/cli/init-wizard/steps-core.js.map +1 -1
- package/dist/src/commerce/sellable-resolvers.d.ts +11 -1
- package/dist/src/commerce/sellable-resolvers.d.ts.map +1 -1
- package/dist/src/commerce/sellable-resolvers.js +55 -0
- package/dist/src/commerce/sellable-resolvers.js.map +1 -1
- package/dist/src/commerce/session-service.d.ts +14 -0
- package/dist/src/commerce/session-service.d.ts.map +1 -1
- package/dist/src/commerce/session-service.js +1 -1
- package/dist/src/commerce/session-service.js.map +1 -1
- package/dist/src/commerce/test-money-handler.d.ts +5 -0
- package/dist/src/commerce/test-money-handler.d.ts.map +1 -0
- package/dist/src/commerce/test-money-handler.js +27 -0
- package/dist/src/commerce/test-money-handler.js.map +1 -0
- package/dist/src/commerce/x402-facilitator.d.ts +113 -0
- package/dist/src/commerce/x402-facilitator.d.ts.map +1 -0
- package/dist/src/commerce/x402-facilitator.js +143 -0
- package/dist/src/commerce/x402-facilitator.js.map +1 -0
- package/dist/src/commerce/x402-handler.d.ts +35 -0
- package/dist/src/commerce/x402-handler.d.ts.map +1 -0
- package/dist/src/commerce/x402-handler.js +54 -0
- package/dist/src/commerce/x402-handler.js.map +1 -0
- package/dist/src/commerce/x402.d.ts +32 -8
- package/dist/src/commerce/x402.d.ts.map +1 -1
- package/dist/src/commerce/x402.js +41 -9
- package/dist/src/commerce/x402.js.map +1 -1
- package/dist/src/config-types.d.ts +21 -2
- package/dist/src/config-types.d.ts.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +27 -5
- package/dist/src/config.js.map +1 -1
- package/dist/src/data/app-templates/components.d.ts +13 -1
- package/dist/src/data/app-templates/components.d.ts.map +1 -1
- package/dist/src/data/app-templates/components.js +149 -1
- package/dist/src/data/app-templates/components.js.map +1 -1
- package/dist/src/data/app-templates/shells.d.ts +7 -3
- package/dist/src/data/app-templates/shells.d.ts.map +1 -1
- package/dist/src/data/app-templates/shells.js +10 -6
- package/dist/src/data/app-templates/shells.js.map +1 -1
- package/dist/src/data/app-templates.d.ts +13 -0
- package/dist/src/data/app-templates.d.ts.map +1 -1
- package/dist/src/data/app-templates.js +39 -1
- package/dist/src/data/app-templates.js.map +1 -1
- package/dist/src/data/appdev-pitfalls.d.ts +58 -0
- package/dist/src/data/appdev-pitfalls.d.ts.map +1 -0
- package/dist/src/data/appdev-pitfalls.js +365 -0
- package/dist/src/data/appdev-pitfalls.js.map +1 -0
- package/dist/src/data/builtin-skills.d.ts +6 -0
- package/dist/src/data/builtin-skills.d.ts.map +1 -1
- package/dist/src/data/builtin-skills.js +151 -0
- package/dist/src/data/builtin-skills.js.map +1 -1
- package/dist/src/data/library-packs/cortex.d.ts +18 -0
- package/dist/src/data/library-packs/cortex.d.ts.map +1 -0
- package/dist/src/data/library-packs/cortex.js +339 -0
- package/dist/src/data/library-packs/cortex.js.map +1 -0
- package/dist/src/data/library-packs/sdk.d.ts +16 -0
- package/dist/src/data/library-packs/sdk.d.ts.map +1 -0
- package/dist/src/data/library-packs/sdk.js +439 -0
- package/dist/src/data/library-packs/sdk.js.map +1 -0
- package/dist/src/data/library-packs/vendored.d.ts +21 -0
- package/dist/src/data/library-packs/vendored.d.ts.map +1 -0
- package/dist/src/data/library-packs/vendored.js +381 -0
- package/dist/src/data/library-packs/vendored.js.map +1 -0
- package/dist/src/data/library-packs.d.ts +151 -0
- package/dist/src/data/library-packs.d.ts.map +1 -0
- package/dist/src/data/library-packs.js +169 -0
- package/dist/src/data/library-packs.js.map +1 -0
- package/dist/src/generated/api-types.d.ts +30401 -17751
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/index-help.d.ts +1 -1
- package/dist/src/index-help.d.ts.map +1 -1
- package/dist/src/index-help.js +3 -3
- package/dist/src/mcp/agent-onboarding.d.ts.map +1 -1
- package/dist/src/mcp/agent-onboarding.js +8 -2
- package/dist/src/mcp/agent-onboarding.js.map +1 -1
- package/dist/src/mcp/annotations.d.ts +1 -0
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +44 -0
- package/dist/src/mcp/annotations.js.map +1 -1
- package/dist/src/mcp/app-template-proposals.d.ts +17 -0
- package/dist/src/mcp/app-template-proposals.d.ts.map +1 -0
- package/dist/src/mcp/app-template-proposals.js +94 -0
- package/dist/src/mcp/app-template-proposals.js.map +1 -0
- package/dist/src/mcp/appdev-pitfalls.d.ts +22 -0
- package/dist/src/mcp/appdev-pitfalls.d.ts.map +1 -0
- package/dist/src/mcp/appdev-pitfalls.js +208 -0
- package/dist/src/mcp/appdev-pitfalls.js.map +1 -0
- package/dist/src/mcp/appdev-proofs.d.ts +21 -0
- package/dist/src/mcp/appdev-proofs.d.ts.map +1 -0
- package/dist/src/mcp/appdev-proofs.js +103 -0
- package/dist/src/mcp/appdev-proofs.js.map +1 -0
- package/dist/src/mcp/appdev-research.d.ts +17 -0
- package/dist/src/mcp/appdev-research.d.ts.map +1 -0
- package/dist/src/mcp/appdev-research.js +27 -0
- package/dist/src/mcp/appdev-research.js.map +1 -0
- package/dist/src/mcp/apps.d.ts +6 -0
- package/dist/src/mcp/apps.d.ts.map +1 -1
- package/dist/src/mcp/apps.js +64 -5
- package/dist/src/mcp/apps.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/agent-messaging.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/agent-messaging.js +38 -0
- package/dist/src/mcp/catalog/definitions/agent-messaging.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/capabilities-groups-skills.d.ts +2 -0
- package/dist/src/mcp/catalog/definitions/capabilities-groups-skills.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/capabilities-groups-skills.js +139 -5
- package/dist/src/mcp/catalog/definitions/capabilities-groups-skills.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/exchange.d.ts +18 -0
- package/dist/src/mcp/catalog/definitions/exchange.d.ts.map +1 -0
- package/dist/src/mcp/catalog/definitions/exchange.js +182 -0
- package/dist/src/mcp/catalog/definitions/exchange.js.map +1 -0
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +41 -3
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js +20 -0
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js.map +1 -1
- package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions.js +2 -0
- package/dist/src/mcp/catalog/definitions.js.map +1 -1
- package/dist/src/mcp/catalog/scopes.d.ts +1 -0
- package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
- package/dist/src/mcp/catalog/scopes.js +40 -0
- package/dist/src/mcp/catalog/scopes.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +31 -4
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/catalogue.d.ts +1 -0
- package/dist/src/mcp/catalogue.d.ts.map +1 -1
- package/dist/src/mcp/catalogue.js +10 -2
- package/dist/src/mcp/catalogue.js.map +1 -1
- package/dist/src/mcp/commerce.js +1 -1
- package/dist/src/mcp/commerce.js.map +1 -1
- package/dist/src/mcp/contacts.d.ts +19 -0
- package/dist/src/mcp/contacts.d.ts.map +1 -0
- package/dist/src/mcp/contacts.js +58 -0
- package/dist/src/mcp/contacts.js.map +1 -0
- package/dist/src/mcp/core-admin.js +1 -1
- package/dist/src/mcp/core-admin.js.map +1 -1
- package/dist/src/mcp/exchange-run.d.ts +5 -0
- package/dist/src/mcp/exchange-run.d.ts.map +1 -0
- package/dist/src/mcp/exchange-run.js +226 -0
- package/dist/src/mcp/exchange-run.js.map +1 -0
- package/dist/src/mcp/exchange.d.ts +5 -0
- package/dist/src/mcp/exchange.d.ts.map +1 -0
- package/dist/src/mcp/exchange.js +351 -0
- package/dist/src/mcp/exchange.js.map +1 -0
- package/dist/src/mcp/extensions.d.ts +4 -0
- package/dist/src/mcp/extensions.d.ts.map +1 -1
- package/dist/src/mcp/extensions.js +85 -12
- package/dist/src/mcp/extensions.js.map +1 -1
- package/dist/src/mcp/feedback.d.ts +20 -0
- package/dist/src/mcp/feedback.d.ts.map +1 -0
- package/dist/src/mcp/feedback.js +61 -0
- package/dist/src/mcp/feedback.js.map +1 -0
- package/dist/src/mcp/index.d.ts +1 -0
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +19 -2
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/mcp/knowledge.d.ts +4 -0
- package/dist/src/mcp/knowledge.d.ts.map +1 -1
- package/dist/src/mcp/knowledge.js +39 -22
- package/dist/src/mcp/knowledge.js.map +1 -1
- package/dist/src/mcp/organisms-name-invites.d.ts +18 -0
- package/dist/src/mcp/organisms-name-invites.d.ts.map +1 -0
- package/dist/src/mcp/organisms-name-invites.js +143 -0
- package/dist/src/mcp/organisms-name-invites.js.map +1 -0
- package/dist/src/mcp/organisms.d.ts +3 -0
- package/dist/src/mcp/organisms.d.ts.map +1 -1
- package/dist/src/mcp/organisms.js +12 -86
- package/dist/src/mcp/organisms.js.map +1 -1
- package/dist/src/mcp/workflows.d.ts +2 -0
- package/dist/src/mcp/workflows.d.ts.map +1 -1
- package/dist/src/mcp/workflows.js +43 -3
- package/dist/src/mcp/workflows.js.map +1 -1
- package/dist/src/mcp/workspaces.d.ts +4 -0
- package/dist/src/mcp/workspaces.d.ts.map +1 -1
- package/dist/src/mcp/workspaces.js +15 -12
- package/dist/src/mcp/workspaces.js.map +1 -1
- package/dist/src/middleware/workspace-access.d.ts +3 -0
- package/dist/src/middleware/workspace-access.d.ts.map +1 -1
- package/dist/src/middleware/workspace-access.js +7 -3
- package/dist/src/middleware/workspace-access.js.map +1 -1
- package/dist/src/models/agent-onboarding-schemas.d.ts +2 -0
- package/dist/src/models/agent-onboarding-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-onboarding-schemas.js +5 -0
- package/dist/src/models/agent-onboarding-schemas.js.map +1 -1
- package/dist/src/models/app-tool-schemas.d.ts +55 -1
- package/dist/src/models/app-tool-schemas.d.ts.map +1 -1
- package/dist/src/models/app-tool-schemas.js +20 -1
- package/dist/src/models/app-tool-schemas.js.map +1 -1
- package/dist/src/models/contribution-proof.d.ts +29 -0
- package/dist/src/models/contribution-proof.d.ts.map +1 -0
- package/dist/src/models/contribution-proof.js +23 -0
- package/dist/src/models/contribution-proof.js.map +1 -0
- package/dist/src/models/crew-def-schemas.d.ts +114 -0
- package/dist/src/models/crew-def-schemas.d.ts.map +1 -0
- package/dist/src/models/crew-def-schemas.js +140 -0
- package/dist/src/models/crew-def-schemas.js.map +1 -0
- package/dist/src/models/offer-schemas.d.ts +2 -2
- package/dist/src/models/schemas.d.ts +1 -0
- package/dist/src/models/schemas.d.ts.map +1 -1
- package/dist/src/models/schemas.js +3 -0
- package/dist/src/models/schemas.js.map +1 -1
- package/dist/src/models/workflow-schemas.d.ts +69 -1
- package/dist/src/models/workflow-schemas.d.ts.map +1 -1
- package/dist/src/models/workflow-schemas.js +26 -0
- package/dist/src/models/workflow-schemas.js.map +1 -1
- package/dist/src/routes/access-tokens.d.ts +2 -0
- package/dist/src/routes/access-tokens.d.ts.map +1 -1
- package/dist/src/routes/access-tokens.js +15 -0
- package/dist/src/routes/access-tokens.js.map +1 -1
- package/dist/src/routes/admin-config.js +1 -1
- package/dist/src/routes/admin-config.js.map +1 -1
- package/dist/src/routes/admin-maintenance.d.ts +3 -0
- package/dist/src/routes/admin-maintenance.d.ts.map +1 -1
- package/dist/src/routes/admin-maintenance.js +20 -0
- package/dist/src/routes/admin-maintenance.js.map +1 -1
- package/dist/src/routes/admin-storage-stats.d.ts +17 -0
- package/dist/src/routes/admin-storage-stats.d.ts.map +1 -0
- package/dist/src/routes/admin-storage-stats.js +56 -0
- package/dist/src/routes/admin-storage-stats.js.map +1 -0
- package/dist/src/routes/admin.d.ts +1 -0
- package/dist/src/routes/admin.d.ts.map +1 -1
- package/dist/src/routes/admin.js +10 -12
- package/dist/src/routes/admin.js.map +1 -1
- package/dist/src/routes/agent-activity.d.ts +6 -0
- package/dist/src/routes/agent-activity.d.ts.map +1 -1
- package/dist/src/routes/agent-activity.js +57 -0
- package/dist/src/routes/agent-activity.js.map +1 -1
- package/dist/src/routes/agent-directives.d.ts.map +1 -1
- package/dist/src/routes/agent-directives.js +30 -0
- package/dist/src/routes/agent-directives.js.map +1 -1
- package/dist/src/routes/agent-messages.d.ts +2 -0
- package/dist/src/routes/agent-messages.d.ts.map +1 -1
- package/dist/src/routes/agent-messages.js +18 -0
- package/dist/src/routes/agent-messages.js.map +1 -1
- package/dist/src/routes/agent-onboarding.d.ts +16 -0
- package/dist/src/routes/agent-onboarding.d.ts.map +1 -1
- package/dist/src/routes/agent-onboarding.js +6 -1
- package/dist/src/routes/agent-onboarding.js.map +1 -1
- package/dist/src/routes/agent-webhook.d.ts +3 -0
- package/dist/src/routes/agent-webhook.d.ts.map +1 -1
- package/dist/src/routes/agent-webhook.js +28 -0
- package/dist/src/routes/agent-webhook.js.map +1 -1
- package/dist/src/routes/agents/device-auth.d.ts +10 -0
- package/dist/src/routes/agents/device-auth.d.ts.map +1 -1
- package/dist/src/routes/agents/device-auth.js +241 -139
- package/dist/src/routes/agents/device-auth.js.map +1 -1
- package/dist/src/routes/agents/offers.d.ts +4 -0
- package/dist/src/routes/agents/offers.d.ts.map +1 -1
- package/dist/src/routes/agents/offers.js +0 -0
- package/dist/src/routes/agents/offers.js.map +1 -1
- package/dist/src/routes/agents/profile-metadata.d.ts +3 -0
- package/dist/src/routes/agents/profile-metadata.d.ts.map +1 -1
- package/dist/src/routes/agents/profile-metadata.js +23 -10
- package/dist/src/routes/agents/profile-metadata.js.map +1 -1
- package/dist/src/routes/app-grants.d.ts +6 -0
- package/dist/src/routes/app-grants.d.ts.map +1 -1
- package/dist/src/routes/app-grants.js +37 -2
- package/dist/src/routes/app-grants.js.map +1 -1
- package/dist/src/routes/appdev-overview.d.ts +17 -0
- package/dist/src/routes/appdev-overview.d.ts.map +1 -0
- package/dist/src/routes/appdev-overview.js +75 -0
- package/dist/src/routes/appdev-overview.js.map +1 -0
- package/dist/src/routes/appdev-pitfalls.d.ts +20 -0
- package/dist/src/routes/appdev-pitfalls.d.ts.map +1 -0
- package/dist/src/routes/appdev-pitfalls.js +103 -0
- package/dist/src/routes/appdev-pitfalls.js.map +1 -0
- package/dist/src/routes/appeals.d.ts +1 -0
- package/dist/src/routes/appeals.d.ts.map +1 -1
- package/dist/src/routes/appeals.js +3 -1
- package/dist/src/routes/appeals.js.map +1 -1
- package/dist/src/routes/apps/agents-deploy.d.ts +24 -0
- package/dist/src/routes/apps/agents-deploy.d.ts.map +1 -0
- package/dist/src/routes/apps/agents-deploy.js +214 -0
- package/dist/src/routes/apps/agents-deploy.js.map +1 -0
- package/dist/src/routes/apps/catalogue-admin.d.ts +5 -0
- package/dist/src/routes/apps/catalogue-admin.d.ts.map +1 -1
- package/dist/src/routes/apps/catalogue-admin.js +34 -10
- package/dist/src/routes/apps/catalogue-admin.js.map +1 -1
- package/dist/src/routes/apps/drafts.d.ts +2 -0
- package/dist/src/routes/apps/drafts.d.ts.map +1 -1
- package/dist/src/routes/apps/drafts.js +4 -0
- package/dist/src/routes/apps/drafts.js.map +1 -1
- package/dist/src/routes/apps/fork-manage.d.ts +3 -1
- package/dist/src/routes/apps/fork-manage.d.ts.map +1 -1
- package/dist/src/routes/apps/fork-manage.js +50 -1
- package/dist/src/routes/apps/fork-manage.js.map +1 -1
- package/dist/src/routes/apps/publish.d.ts +7 -0
- package/dist/src/routes/apps/publish.d.ts.map +1 -1
- package/dist/src/routes/apps/publish.js +69 -1
- package/dist/src/routes/apps/publish.js.map +1 -1
- package/dist/src/routes/apps-cost.d.ts +25 -0
- package/dist/src/routes/apps-cost.d.ts.map +1 -0
- package/dist/src/routes/apps-cost.js +107 -0
- package/dist/src/routes/apps-cost.js.map +1 -0
- package/dist/src/routes/apps.d.ts +2 -0
- package/dist/src/routes/apps.d.ts.map +1 -1
- package/dist/src/routes/apps.js +4 -0
- package/dist/src/routes/apps.js.map +1 -1
- package/dist/src/routes/auth.d.ts +2 -0
- package/dist/src/routes/auth.d.ts.map +1 -1
- package/dist/src/routes/auth.js +11 -0
- package/dist/src/routes/auth.js.map +1 -1
- package/dist/src/routes/bootstrap.d.ts +5 -0
- package/dist/src/routes/bootstrap.d.ts.map +1 -1
- package/dist/src/routes/bootstrap.js +21 -14
- package/dist/src/routes/bootstrap.js.map +1 -1
- package/dist/src/routes/calibrator.d.ts +2 -0
- package/dist/src/routes/calibrator.d.ts.map +1 -1
- package/dist/src/routes/calibrator.js +43 -0
- package/dist/src/routes/calibrator.js.map +1 -1
- package/dist/src/routes/catalogue.d.ts +2 -0
- package/dist/src/routes/catalogue.d.ts.map +1 -1
- package/dist/src/routes/catalogue.js +20 -30
- package/dist/src/routes/catalogue.js.map +1 -1
- package/dist/src/routes/commerce.d.ts.map +1 -1
- package/dist/src/routes/commerce.js +18 -8
- package/dist/src/routes/commerce.js.map +1 -1
- package/dist/src/routes/consent.d.ts.map +1 -1
- package/dist/src/routes/consent.js +10 -0
- package/dist/src/routes/consent.js.map +1 -1
- package/dist/src/routes/contacts.d.ts +20 -0
- package/dist/src/routes/contacts.d.ts.map +1 -0
- package/dist/src/routes/contacts.js +86 -0
- package/dist/src/routes/contacts.js.map +1 -0
- package/dist/src/routes/ecosystem-apps.d.ts +2 -0
- package/dist/src/routes/ecosystem-apps.d.ts.map +1 -1
- package/dist/src/routes/ecosystem-apps.js +34 -0
- package/dist/src/routes/ecosystem-apps.js.map +1 -1
- package/dist/src/routes/exchange-market.d.ts +28 -0
- package/dist/src/routes/exchange-market.d.ts.map +1 -0
- package/dist/src/routes/exchange-market.js +454 -0
- package/dist/src/routes/exchange-market.js.map +1 -0
- package/dist/src/routes/exchange.d.ts +33 -0
- package/dist/src/routes/exchange.d.ts.map +1 -0
- package/dist/src/routes/exchange.js +395 -0
- package/dist/src/routes/exchange.js.map +1 -0
- package/dist/src/routes/extensions/actions.d.ts +3 -0
- package/dist/src/routes/extensions/actions.d.ts.map +1 -1
- package/dist/src/routes/extensions/actions.js +43 -6
- package/dist/src/routes/extensions/actions.js.map +1 -1
- package/dist/src/routes/extensions/entitlement-gate.d.ts +33 -0
- package/dist/src/routes/extensions/entitlement-gate.d.ts.map +1 -0
- package/dist/src/routes/extensions/entitlement-gate.js +143 -0
- package/dist/src/routes/extensions/entitlement-gate.js.map +1 -0
- package/dist/src/routes/extensions/manifest.d.ts +11 -0
- package/dist/src/routes/extensions/manifest.d.ts.map +1 -1
- package/dist/src/routes/extensions/manifest.js +100 -8
- package/dist/src/routes/extensions/manifest.js.map +1 -1
- package/dist/src/routes/extensions/paywall.d.ts +30 -0
- package/dist/src/routes/extensions/paywall.d.ts.map +1 -0
- package/dist/src/routes/extensions/paywall.js +116 -0
- package/dist/src/routes/extensions/paywall.js.map +1 -0
- package/dist/src/routes/federation-sync/messaging.d.ts.map +1 -1
- package/dist/src/routes/federation-sync/messaging.js +7 -1
- package/dist/src/routes/federation-sync/messaging.js.map +1 -1
- package/dist/src/routes/feedback.d.ts +23 -0
- package/dist/src/routes/feedback.d.ts.map +1 -0
- package/dist/src/routes/feedback.js +111 -0
- package/dist/src/routes/feedback.js.map +1 -0
- package/dist/src/routes/generator/projects.d.ts.map +1 -1
- package/dist/src/routes/generator/projects.js +18 -0
- package/dist/src/routes/generator/projects.js.map +1 -1
- package/dist/src/routes/generator/prompts.d.ts +14 -3
- package/dist/src/routes/generator/prompts.d.ts.map +1 -1
- package/dist/src/routes/generator/prompts.js +165 -90
- package/dist/src/routes/generator/prompts.js.map +1 -1
- package/dist/src/routes/generator.d.ts +2 -0
- package/dist/src/routes/generator.d.ts.map +1 -1
- package/dist/src/routes/generator.js +2 -0
- package/dist/src/routes/generator.js.map +1 -1
- package/dist/src/routes/ghii/profile.d.ts +2 -0
- package/dist/src/routes/ghii/profile.d.ts.map +1 -1
- package/dist/src/routes/ghii/profile.js +16 -11
- package/dist/src/routes/ghii/profile.js.map +1 -1
- package/dist/src/routes/ghii/recovery.d.ts +2 -0
- package/dist/src/routes/ghii/recovery.d.ts.map +1 -1
- package/dist/src/routes/ghii/recovery.js +7 -0
- package/dist/src/routes/ghii/recovery.js.map +1 -1
- package/dist/src/routes/ghii/register-login.d.ts +4 -0
- package/dist/src/routes/ghii/register-login.d.ts.map +1 -1
- package/dist/src/routes/ghii/register-login.js +45 -22
- package/dist/src/routes/ghii/register-login.js.map +1 -1
- package/dist/src/routes/ghii/web-verify.d.ts +5 -0
- package/dist/src/routes/ghii/web-verify.d.ts.map +1 -1
- package/dist/src/routes/ghii/web-verify.js +24 -3
- package/dist/src/routes/ghii/web-verify.js.map +1 -1
- package/dist/src/routes/knowledge/admin.d.ts +1 -0
- package/dist/src/routes/knowledge/admin.d.ts.map +1 -1
- package/dist/src/routes/knowledge/admin.js +30 -40
- package/dist/src/routes/knowledge/admin.js.map +1 -1
- package/dist/src/routes/knowledge/helpers.d.ts +1 -0
- package/dist/src/routes/knowledge/helpers.d.ts.map +1 -1
- package/dist/src/routes/knowledge/helpers.js +5 -1
- package/dist/src/routes/knowledge/helpers.js.map +1 -1
- package/dist/src/routes/knowledge/organism.d.ts +1 -0
- package/dist/src/routes/knowledge/organism.d.ts.map +1 -1
- package/dist/src/routes/knowledge/organism.js +7 -11
- package/dist/src/routes/knowledge/organism.js.map +1 -1
- package/dist/src/routes/knowledge/packages-core.d.ts +1 -0
- package/dist/src/routes/knowledge/packages-core.d.ts.map +1 -1
- package/dist/src/routes/knowledge/packages-core.js +6 -16
- package/dist/src/routes/knowledge/packages-core.js.map +1 -1
- package/dist/src/routes/knowledge/sharing.d.ts +1 -0
- package/dist/src/routes/knowledge/sharing.d.ts.map +1 -1
- package/dist/src/routes/knowledge/sharing.js +11 -31
- package/dist/src/routes/knowledge/sharing.js.map +1 -1
- package/dist/src/routes/knowledge.d.ts +2 -0
- package/dist/src/routes/knowledge.d.ts.map +1 -1
- package/dist/src/routes/knowledge.js +15 -0
- package/dist/src/routes/knowledge.js.map +1 -1
- package/dist/src/routes/ledger.d.ts +4 -0
- package/dist/src/routes/ledger.d.ts.map +1 -1
- package/dist/src/routes/ledger.js +93 -53
- package/dist/src/routes/ledger.js.map +1 -1
- package/dist/src/routes/lib-data.d.ts +2 -0
- package/dist/src/routes/lib-data.d.ts.map +1 -1
- package/dist/src/routes/lib-data.js +7 -4
- package/dist/src/routes/lib-data.js.map +1 -1
- package/dist/src/routes/lib-intake.d.ts +21 -0
- package/dist/src/routes/lib-intake.d.ts.map +1 -0
- package/dist/src/routes/lib-intake.js +63 -0
- package/dist/src/routes/lib-intake.js.map +1 -0
- package/dist/src/routes/lib-organism.d.ts +13 -0
- package/dist/src/routes/lib-organism.d.ts.map +1 -1
- package/dist/src/routes/lib-organism.js +80 -0
- package/dist/src/routes/lib-organism.js.map +1 -1
- package/dist/src/routes/lib-workflows.d.ts +24 -0
- package/dist/src/routes/lib-workflows.d.ts.map +1 -0
- package/dist/src/routes/lib-workflows.js +125 -0
- package/dist/src/routes/lib-workflows.js.map +1 -0
- package/dist/src/routes/library-packs.d.ts +31 -0
- package/dist/src/routes/library-packs.d.ts.map +1 -0
- package/dist/src/routes/library-packs.js +187 -0
- package/dist/src/routes/library-packs.js.map +1 -0
- package/dist/src/routes/libs/audio-lib-part2.d.ts +2 -0
- package/dist/src/routes/libs/audio-lib-part2.d.ts.map +1 -1
- package/dist/src/routes/libs/audio-lib-part2.js +4 -0
- package/dist/src/routes/libs/audio-lib-part2.js.map +1 -1
- package/dist/src/routes/libs/auth-lib-part2.d.ts +5 -0
- package/dist/src/routes/libs/auth-lib-part2.d.ts.map +1 -1
- package/dist/src/routes/libs/auth-lib-part2.js +118 -5
- package/dist/src/routes/libs/auth-lib-part2.js.map +1 -1
- package/dist/src/routes/libs/sdk-serve.d.ts +11 -0
- package/dist/src/routes/libs/sdk-serve.d.ts.map +1 -0
- package/dist/src/routes/libs/sdk-serve.js +53 -0
- package/dist/src/routes/libs/sdk-serve.js.map +1 -0
- package/dist/src/routes/libs.d.ts +17 -1
- package/dist/src/routes/libs.d.ts.map +1 -1
- package/dist/src/routes/libs.js +83 -285
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/living.d.ts +2 -0
- package/dist/src/routes/living.d.ts.map +1 -1
- package/dist/src/routes/living.js +12 -0
- package/dist/src/routes/living.js.map +1 -1
- package/dist/src/routes/matches.d.ts +3 -0
- package/dist/src/routes/matches.d.ts.map +1 -1
- package/dist/src/routes/matches.js +47 -51
- 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 +185 -70
- package/dist/src/routes/memory/bulk.js.map +1 -1
- package/dist/src/routes/memory/crud.d.ts +2 -0
- package/dist/src/routes/memory/crud.d.ts.map +1 -1
- package/dist/src/routes/memory/crud.js +70 -39
- package/dist/src/routes/memory/crud.js.map +1 -1
- package/dist/src/routes/memory/key.d.ts +2 -0
- package/dist/src/routes/memory/key.d.ts.map +1 -1
- package/dist/src/routes/memory/key.js +23 -4
- package/dist/src/routes/memory/key.js.map +1 -1
- package/dist/src/routes/memory/shared.d.ts +4 -0
- package/dist/src/routes/memory/shared.d.ts.map +1 -1
- package/dist/src/routes/memory/shared.js.map +1 -1
- package/dist/src/routes/memory.d.ts.map +1 -1
- package/dist/src/routes/memory.js +29 -1
- package/dist/src/routes/memory.js.map +1 -1
- package/dist/src/routes/messages.d.ts +9 -0
- package/dist/src/routes/messages.d.ts.map +1 -1
- package/dist/src/routes/messages.js +48 -26
- package/dist/src/routes/messages.js.map +1 -1
- package/dist/src/routes/notifications.d.ts +8 -3
- package/dist/src/routes/notifications.d.ts.map +1 -1
- package/dist/src/routes/notifications.js +53 -5
- package/dist/src/routes/notifications.js.map +1 -1
- package/dist/src/routes/organisms/crud.d.ts +6 -0
- package/dist/src/routes/organisms/crud.d.ts.map +1 -1
- package/dist/src/routes/organisms/crud.js +80 -62
- 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 +82 -1
- package/dist/src/routes/organisms/gates.js.map +1 -1
- package/dist/src/routes/organisms/intake.d.ts +29 -0
- package/dist/src/routes/organisms/intake.d.ts.map +1 -0
- package/dist/src/routes/organisms/intake.js +251 -0
- package/dist/src/routes/organisms/intake.js.map +1 -0
- package/dist/src/routes/organisms/membership.d.ts +4 -1
- package/dist/src/routes/organisms/membership.d.ts.map +1 -1
- package/dist/src/routes/organisms/membership.js +103 -60
- package/dist/src/routes/organisms/membership.js.map +1 -1
- package/dist/src/routes/organisms/shared.d.ts +28 -0
- package/dist/src/routes/organisms/shared.d.ts.map +1 -1
- package/dist/src/routes/organisms/shared.js +339 -26
- package/dist/src/routes/organisms/shared.js.map +1 -1
- package/dist/src/routes/organisms/workspace-access.d.ts +16 -0
- package/dist/src/routes/organisms/workspace-access.d.ts.map +1 -1
- package/dist/src/routes/organisms/workspace-access.js +174 -72
- package/dist/src/routes/organisms/workspace-access.js.map +1 -1
- package/dist/src/routes/organisms/workspace-ops.d.ts +6 -0
- package/dist/src/routes/organisms/workspace-ops.d.ts.map +1 -1
- package/dist/src/routes/organisms/workspace-ops.js +224 -11
- package/dist/src/routes/organisms/workspace-ops.js.map +1 -1
- package/dist/src/routes/organisms/workspace-read.d.ts +4 -0
- package/dist/src/routes/organisms/workspace-read.d.ts.map +1 -1
- package/dist/src/routes/organisms/workspace-read.js +14 -6
- package/dist/src/routes/organisms/workspace-read.js.map +1 -1
- package/dist/src/routes/organisms.d.ts.map +1 -1
- package/dist/src/routes/organisms.js +2 -0
- package/dist/src/routes/organisms.js.map +1 -1
- package/dist/src/routes/owners.d.ts +2 -0
- package/dist/src/routes/owners.d.ts.map +1 -1
- package/dist/src/routes/owners.js +17 -7
- package/dist/src/routes/owners.js.map +1 -1
- package/dist/src/routes/packages.d.ts.map +1 -1
- package/dist/src/routes/packages.js +10 -0
- package/dist/src/routes/packages.js.map +1 -1
- package/dist/src/routes/portal.d.ts +1 -1
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +3 -7
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/routes/portfolio.d.ts +2 -0
- package/dist/src/routes/portfolio.d.ts.map +1 -1
- package/dist/src/routes/portfolio.js +41 -31
- 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 +23 -0
- package/dist/src/routes/prompts.js.map +1 -1
- package/dist/src/routes/schedules.d.ts +7 -0
- package/dist/src/routes/schedules.d.ts.map +1 -1
- package/dist/src/routes/schedules.js +102 -39
- package/dist/src/routes/schedules.js.map +1 -1
- package/dist/src/routes/unfurl.d.ts +27 -0
- package/dist/src/routes/unfurl.d.ts.map +1 -0
- package/dist/src/routes/unfurl.js +180 -0
- package/dist/src/routes/unfurl.js.map +1 -0
- package/dist/src/routes/upload.d.ts +6 -0
- package/dist/src/routes/upload.d.ts.map +1 -1
- package/dist/src/routes/upload.js +28 -1
- package/dist/src/routes/upload.js.map +1 -1
- package/dist/src/routes/usage.d.ts +9 -5
- package/dist/src/routes/usage.d.ts.map +1 -1
- package/dist/src/routes/usage.js +26 -5
- package/dist/src/routes/usage.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 +17 -1
- package/dist/src/routes/wallet.js.map +1 -1
- package/dist/src/routes/webmcp.d.ts +3 -0
- package/dist/src/routes/webmcp.d.ts.map +1 -1
- package/dist/src/routes/webmcp.js +55 -0
- package/dist/src/routes/webmcp.js.map +1 -1
- package/dist/src/routes/work.d.ts.map +1 -1
- package/dist/src/routes/work.js +14 -9
- package/dist/src/routes/work.js.map +1 -1
- package/dist/src/routes/workflows.d.ts +4 -0
- package/dist/src/routes/workflows.d.ts.map +1 -1
- package/dist/src/routes/workflows.js +58 -1
- package/dist/src/routes/workflows.js.map +1 -1
- package/dist/src/server-bootstrap/config-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/config-init.js +7 -6
- package/dist/src/server-bootstrap/config-init.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts +2 -0
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +35 -7
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +4 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/agent-face.d.ts +10 -2
- package/dist/src/services/agent-face.d.ts.map +1 -1
- package/dist/src/services/agent-face.js +10 -4
- package/dist/src/services/agent-face.js.map +1 -1
- package/dist/src/services/app-agent-deploy.d.ts +26 -0
- package/dist/src/services/app-agent-deploy.d.ts.map +1 -0
- package/dist/src/services/app-agent-deploy.js +91 -0
- package/dist/src/services/app-agent-deploy.js.map +1 -0
- package/dist/src/services/app-template-proposals.d.ts +94 -0
- package/dist/src/services/app-template-proposals.d.ts.map +1 -0
- package/dist/src/services/app-template-proposals.js +114 -0
- package/dist/src/services/app-template-proposals.js.map +1 -0
- package/dist/src/services/app-tool-interfaces.d.ts +37 -0
- package/dist/src/services/app-tool-interfaces.d.ts.map +1 -0
- package/dist/src/services/app-tool-interfaces.js +101 -0
- package/dist/src/services/app-tool-interfaces.js.map +1 -0
- package/dist/src/services/appdev-flow-constants.d.ts +33 -0
- package/dist/src/services/appdev-flow-constants.d.ts.map +1 -0
- package/dist/src/services/appdev-flow-constants.js +43 -0
- package/dist/src/services/appdev-flow-constants.js.map +1 -0
- package/dist/src/services/appdev-flow-prompt.d.ts +15 -0
- package/dist/src/services/appdev-flow-prompt.d.ts.map +1 -0
- package/dist/src/services/appdev-flow-prompt.js +40 -0
- package/dist/src/services/appdev-flow-prompt.js.map +1 -0
- package/dist/src/services/appdev-kb.d.ts +71 -0
- package/dist/src/services/appdev-kb.d.ts.map +1 -0
- package/dist/src/services/appdev-kb.js +178 -0
- package/dist/src/services/appdev-kb.js.map +1 -0
- package/dist/src/services/appdev-overview.d.ts +28 -0
- package/dist/src/services/appdev-overview.d.ts.map +1 -0
- package/dist/src/services/appdev-overview.js +189 -0
- package/dist/src/services/appdev-overview.js.map +1 -0
- package/dist/src/services/build-app-prompt.d.ts +17 -0
- package/dist/src/services/build-app-prompt.d.ts.map +1 -1
- package/dist/src/services/build-app-prompt.js +74 -35
- package/dist/src/services/build-app-prompt.js.map +1 -1
- package/dist/src/services/config-schema.d.ts.map +1 -1
- package/dist/src/services/config-schema.js +1 -3
- package/dist/src/services/config-schema.js.map +1 -1
- package/dist/src/services/consent.d.ts.map +1 -1
- package/dist/src/services/consent.js +8 -3
- package/dist/src/services/consent.js.map +1 -1
- package/dist/src/services/contacts.d.ts +88 -0
- package/dist/src/services/contacts.d.ts.map +1 -0
- package/dist/src/services/contacts.js +163 -0
- package/dist/src/services/contacts.js.map +1 -0
- package/dist/src/services/core-jobs.d.ts +4 -0
- package/dist/src/services/core-jobs.d.ts.map +1 -1
- package/dist/src/services/core-jobs.js +23 -0
- package/dist/src/services/core-jobs.js.map +1 -1
- package/dist/src/services/dangling-refs.d.ts +2 -0
- package/dist/src/services/dangling-refs.d.ts.map +1 -1
- package/dist/src/services/dangling-refs.js +3 -2
- package/dist/src/services/dangling-refs.js.map +1 -1
- package/dist/src/services/db/access-tab-db-service.d.ts +49 -0
- package/dist/src/services/db/access-tab-db-service.d.ts.map +1 -0
- package/dist/src/services/db/access-tab-db-service.js +87 -0
- package/dist/src/services/db/access-tab-db-service.js.map +1 -0
- package/dist/src/services/db/agent-activity-overview-db-service.d.ts +62 -0
- package/dist/src/services/db/agent-activity-overview-db-service.d.ts.map +1 -0
- package/dist/src/services/db/agent-activity-overview-db-service.js +88 -0
- package/dist/src/services/db/agent-activity-overview-db-service.js.map +1 -0
- package/dist/src/services/db/agent-data-access-overview-db-service.d.ts +45 -0
- package/dist/src/services/db/agent-data-access-overview-db-service.d.ts.map +1 -0
- package/dist/src/services/db/agent-data-access-overview-db-service.js +42 -0
- package/dist/src/services/db/agent-data-access-overview-db-service.js.map +1 -0
- package/dist/src/services/db/agent-db-service.d.ts +58 -0
- package/dist/src/services/db/agent-db-service.d.ts.map +1 -0
- package/dist/src/services/db/agent-db-service.js +49 -0
- package/dist/src/services/db/agent-db-service.js.map +1 -0
- package/dist/src/services/db/agent-integration-overview-db-service.d.ts +44 -0
- package/dist/src/services/db/agent-integration-overview-db-service.d.ts.map +1 -0
- package/dist/src/services/db/agent-integration-overview-db-service.js +44 -0
- package/dist/src/services/db/agent-integration-overview-db-service.js.map +1 -0
- package/dist/src/services/db/agent-messages-overview-db-service.d.ts +40 -0
- package/dist/src/services/db/agent-messages-overview-db-service.d.ts.map +1 -0
- package/dist/src/services/db/agent-messages-overview-db-service.js +47 -0
- package/dist/src/services/db/agent-messages-overview-db-service.js.map +1 -0
- package/dist/src/services/db/agent-quality-overview-db-service.d.ts +43 -0
- package/dist/src/services/db/agent-quality-overview-db-service.d.ts.map +1 -0
- package/dist/src/services/db/agent-quality-overview-db-service.js +34 -0
- package/dist/src/services/db/agent-quality-overview-db-service.js.map +1 -0
- package/dist/src/services/db/calibrator-detail-db-service.d.ts +41 -0
- package/dist/src/services/db/calibrator-detail-db-service.d.ts.map +1 -0
- package/dist/src/services/db/calibrator-detail-db-service.js +61 -0
- package/dist/src/services/db/calibrator-detail-db-service.js.map +1 -0
- package/dist/src/services/db/data-wallet-db-service.d.ts +48 -0
- package/dist/src/services/db/data-wallet-db-service.d.ts.map +1 -0
- package/dist/src/services/db/data-wallet-db-service.js +74 -0
- package/dist/src/services/db/data-wallet-db-service.js.map +1 -0
- package/dist/src/services/db/generator-state-db-service.d.ts +48 -0
- package/dist/src/services/db/generator-state-db-service.d.ts.map +1 -0
- package/dist/src/services/db/generator-state-db-service.js +45 -0
- package/dist/src/services/db/generator-state-db-service.js.map +1 -0
- package/dist/src/services/db/home-dashboard-service.d.ts +65 -0
- package/dist/src/services/db/home-dashboard-service.d.ts.map +1 -0
- package/dist/src/services/db/home-dashboard-service.js +57 -0
- package/dist/src/services/db/home-dashboard-service.js.map +1 -0
- package/dist/src/services/db/index.d.ts +48 -0
- package/dist/src/services/db/index.d.ts.map +1 -0
- package/dist/src/services/db/index.js +40 -0
- package/dist/src/services/db/index.js.map +1 -0
- package/dist/src/services/db/knowledge-tab-db-service.d.ts +35 -0
- package/dist/src/services/db/knowledge-tab-db-service.d.ts.map +1 -0
- package/dist/src/services/db/knowledge-tab-db-service.js +37 -0
- package/dist/src/services/db/knowledge-tab-db-service.js.map +1 -0
- package/dist/src/services/db/living-docs-db-service.d.ts +43 -0
- package/dist/src/services/db/living-docs-db-service.d.ts.map +1 -0
- package/dist/src/services/db/living-docs-db-service.js +45 -0
- package/dist/src/services/db/living-docs-db-service.js.map +1 -0
- package/dist/src/services/db/memory-db-service.d.ts +122 -0
- package/dist/src/services/db/memory-db-service.d.ts.map +1 -0
- package/dist/src/services/db/memory-db-service.js +171 -0
- package/dist/src/services/db/memory-db-service.js.map +1 -0
- package/dist/src/services/db/memory-tab-db-service.d.ts +54 -0
- package/dist/src/services/db/memory-tab-db-service.d.ts.map +1 -0
- package/dist/src/services/db/memory-tab-db-service.js +94 -0
- package/dist/src/services/db/memory-tab-db-service.js.map +1 -0
- package/dist/src/services/db/messages-inbox-db-service.d.ts +47 -0
- package/dist/src/services/db/messages-inbox-db-service.d.ts.map +1 -0
- package/dist/src/services/db/messages-inbox-db-service.js +76 -0
- package/dist/src/services/db/messages-inbox-db-service.js.map +1 -0
- package/dist/src/services/db/messaging-db-service.d.ts +40 -0
- package/dist/src/services/db/messaging-db-service.d.ts.map +1 -0
- package/dist/src/services/db/messaging-db-service.js +55 -0
- package/dist/src/services/db/messaging-db-service.js.map +1 -0
- package/dist/src/services/db/notebook-db-service.d.ts +35 -0
- package/dist/src/services/db/notebook-db-service.d.ts.map +1 -0
- package/dist/src/services/db/notebook-db-service.js +44 -0
- package/dist/src/services/db/notebook-db-service.js.map +1 -0
- package/dist/src/services/db/owner-identity.d.ts +36 -0
- package/dist/src/services/db/owner-identity.d.ts.map +1 -0
- package/dist/src/services/db/owner-identity.js +27 -0
- package/dist/src/services/db/owner-identity.js.map +1 -0
- package/dist/src/services/db/packages-tab-db-service.d.ts +42 -0
- package/dist/src/services/db/packages-tab-db-service.d.ts.map +1 -0
- package/dist/src/services/db/packages-tab-db-service.js +33 -0
- package/dist/src/services/db/packages-tab-db-service.js.map +1 -0
- package/dist/src/services/db/security-tab-db-service.d.ts +47 -0
- package/dist/src/services/db/security-tab-db-service.d.ts.map +1 -0
- package/dist/src/services/db/security-tab-db-service.js +61 -0
- package/dist/src/services/db/security-tab-db-service.js.map +1 -0
- package/dist/src/services/db/wallet-tab-db-service.d.ts +47 -0
- package/dist/src/services/db/wallet-tab-db-service.d.ts.map +1 -0
- package/dist/src/services/db/wallet-tab-db-service.js +80 -0
- package/dist/src/services/db/wallet-tab-db-service.js.map +1 -0
- package/dist/src/services/db/work-tab-db-service.d.ts +32 -0
- package/dist/src/services/db/work-tab-db-service.d.ts.map +1 -0
- package/dist/src/services/db/work-tab-db-service.js +49 -0
- package/dist/src/services/db/work-tab-db-service.js.map +1 -0
- package/dist/src/services/directory.d.ts +1 -0
- package/dist/src/services/directory.d.ts.map +1 -1
- package/dist/src/services/directory.js +6 -2
- package/dist/src/services/directory.js.map +1 -1
- package/dist/src/services/discovery/setup.d.ts +3 -0
- package/dist/src/services/discovery/setup.d.ts.map +1 -1
- package/dist/src/services/discovery/setup.js +2 -0
- package/dist/src/services/discovery/setup.js.map +1 -1
- package/dist/src/services/discovery/sources/memory-source.d.ts +2 -0
- package/dist/src/services/discovery/sources/memory-source.d.ts.map +1 -1
- package/dist/src/services/discovery/sources/memory-source.js.map +1 -1
- package/dist/src/services/discovery/sources/templates-source.d.ts +20 -0
- package/dist/src/services/discovery/sources/templates-source.d.ts.map +1 -0
- package/dist/src/services/discovery/sources/templates-source.js +52 -0
- package/dist/src/services/discovery/sources/templates-source.js.map +1 -0
- package/dist/src/services/entitlement-money.d.ts +55 -0
- package/dist/src/services/entitlement-money.d.ts.map +1 -0
- package/dist/src/services/entitlement-money.js +68 -0
- package/dist/src/services/entitlement-money.js.map +1 -0
- package/dist/src/services/exchange-market.d.ts +247 -0
- package/dist/src/services/exchange-market.d.ts.map +1 -0
- package/dist/src/services/exchange-market.js +254 -0
- package/dist/src/services/exchange-market.js.map +1 -0
- package/dist/src/services/exchange-proposals.d.ts +47 -0
- package/dist/src/services/exchange-proposals.d.ts.map +1 -0
- package/dist/src/services/exchange-proposals.js +71 -0
- package/dist/src/services/exchange-proposals.js.map +1 -0
- package/dist/src/services/exchange-work.d.ts +30 -0
- package/dist/src/services/exchange-work.d.ts.map +1 -0
- package/dist/src/services/exchange-work.js +43 -0
- package/dist/src/services/exchange-work.js.map +1 -0
- package/dist/src/services/ext-pay-token.d.ts +29 -0
- package/dist/src/services/ext-pay-token.d.ts.map +1 -0
- package/dist/src/services/ext-pay-token.js +63 -0
- package/dist/src/services/ext-pay-token.js.map +1 -0
- package/dist/src/services/extension-runtime.d.ts.map +1 -1
- package/dist/src/services/extension-runtime.js +9 -2
- package/dist/src/services/extension-runtime.js.map +1 -1
- package/dist/src/services/feedback.d.ts +38 -0
- package/dist/src/services/feedback.d.ts.map +1 -0
- package/dist/src/services/feedback.js +118 -0
- package/dist/src/services/feedback.js.map +1 -0
- package/dist/src/services/generator-autopilot.d.ts.map +1 -1
- package/dist/src/services/generator-autopilot.js +12 -19
- package/dist/src/services/generator-autopilot.js.map +1 -1
- package/dist/src/services/generator-prompt-seeds/blueprint-prompts.d.ts.map +1 -1
- package/dist/src/services/generator-prompt-seeds/blueprint-prompts.js +28 -1
- package/dist/src/services/generator-prompt-seeds/blueprint-prompts.js.map +1 -1
- package/dist/src/services/generator-prompt-seeds/cortex-code.d.ts +5 -0
- package/dist/src/services/generator-prompt-seeds/cortex-code.d.ts.map +1 -1
- package/dist/src/services/generator-prompt-seeds/cortex-code.js +54 -3
- package/dist/src/services/generator-prompt-seeds/cortex-code.js.map +1 -1
- package/dist/src/services/generator-prompt-seeds/extension-prompts.d.ts.map +1 -1
- package/dist/src/services/generator-prompt-seeds/extension-prompts.js +106 -2
- package/dist/src/services/generator-prompt-seeds/extension-prompts.js.map +1 -1
- package/dist/src/services/generator-prompt-seeds/shared-fragments.js +1 -1
- package/dist/src/services/generator-prompts/resolvers-blueprint.d.ts.map +1 -1
- package/dist/src/services/generator-prompts/resolvers-blueprint.js +9 -0
- package/dist/src/services/generator-prompts/resolvers-blueprint.js.map +1 -1
- package/dist/src/services/generator-prompts/resolvers-cortex.d.ts.map +1 -1
- package/dist/src/services/generator-prompts/resolvers-cortex.js +4 -0
- package/dist/src/services/generator-prompts/resolvers-cortex.js.map +1 -1
- package/dist/src/services/generator-prompts/resolvers-fix.d.ts +4 -0
- package/dist/src/services/generator-prompts/resolvers-fix.d.ts.map +1 -1
- package/dist/src/services/generator-prompts/resolvers-fix.js +68 -0
- package/dist/src/services/generator-prompts/resolvers-fix.js.map +1 -1
- package/dist/src/services/generator-prompts/resolvers.d.ts.map +1 -1
- package/dist/src/services/generator-prompts/resolvers.js +5 -1
- package/dist/src/services/generator-prompts/resolvers.js.map +1 -1
- package/dist/src/services/generator-prompts/types.d.ts +9 -0
- package/dist/src/services/generator-prompts/types.d.ts.map +1 -1
- package/dist/src/services/handbooks/agent.d.ts +2 -1
- package/dist/src/services/handbooks/agent.d.ts.map +1 -1
- package/dist/src/services/handbooks/agent.js +8 -0
- package/dist/src/services/handbooks/agent.js.map +1 -1
- package/dist/src/services/handbooks/appdev.d.ts +2 -1
- package/dist/src/services/handbooks/appdev.d.ts.map +1 -1
- package/dist/src/services/handbooks/appdev.js +19 -0
- package/dist/src/services/handbooks/appdev.js.map +1 -1
- package/dist/src/services/invitations.d.ts +76 -1
- package/dist/src/services/invitations.d.ts.map +1 -1
- package/dist/src/services/invitations.js +295 -9
- package/dist/src/services/invitations.js.map +1 -1
- package/dist/src/services/job-seeding.d.ts.map +1 -1
- package/dist/src/services/job-seeding.js +2 -0
- package/dist/src/services/job-seeding.js.map +1 -1
- package/dist/src/services/living-author.js +1 -1
- package/dist/src/services/living-author.js.map +1 -1
- package/dist/src/services/llm-strip.d.ts +13 -0
- package/dist/src/services/llm-strip.d.ts.map +1 -0
- package/dist/src/services/llm-strip.js +60 -0
- package/dist/src/services/llm-strip.js.map +1 -0
- package/dist/src/services/manifest-schema.d.ts.map +1 -1
- package/dist/src/services/manifest-schema.js +1 -0
- package/dist/src/services/manifest-schema.js.map +1 -1
- package/dist/src/services/matching.d.ts +1 -0
- package/dist/src/services/matching.d.ts.map +1 -1
- package/dist/src/services/matching.js +28 -19
- package/dist/src/services/matching.js.map +1 -1
- package/dist/src/services/message-send.d.ts.map +1 -1
- package/dist/src/services/message-send.js +9 -1
- package/dist/src/services/message-send.js.map +1 -1
- package/dist/src/services/metered-entitlements.d.ts +203 -0
- package/dist/src/services/metered-entitlements.d.ts.map +1 -0
- package/dist/src/services/metered-entitlements.js +264 -0
- package/dist/src/services/metered-entitlements.js.map +1 -0
- package/dist/src/services/notebook-classify.js +1 -1
- package/dist/src/services/notebook-classify.js.map +1 -1
- package/dist/src/services/notebook-plan.js +1 -1
- package/dist/src/services/notebook-plan.js.map +1 -1
- package/dist/src/services/notify.d.ts +52 -0
- package/dist/src/services/notify.d.ts.map +1 -1
- package/dist/src/services/notify.js +56 -2
- package/dist/src/services/notify.js.map +1 -1
- package/dist/src/services/owner-memory.d.ts +25 -0
- package/dist/src/services/owner-memory.d.ts.map +1 -1
- package/dist/src/services/owner-memory.js +65 -18
- package/dist/src/services/owner-memory.js.map +1 -1
- package/dist/src/services/owner-provisioning.d.ts +5 -0
- package/dist/src/services/owner-provisioning.d.ts.map +1 -1
- package/dist/src/services/owner-provisioning.js +20 -2
- package/dist/src/services/owner-provisioning.js.map +1 -1
- package/dist/src/services/perf-trace.d.ts +43 -0
- package/dist/src/services/perf-trace.d.ts.map +1 -0
- package/dist/src/services/perf-trace.js +149 -0
- package/dist/src/services/perf-trace.js.map +1 -0
- package/dist/src/services/prompt-defaults.d.ts.map +1 -1
- package/dist/src/services/prompt-defaults.js +0 -5
- package/dist/src/services/prompt-defaults.js.map +1 -1
- package/dist/src/services/push.d.ts +5 -0
- package/dist/src/services/push.d.ts.map +1 -1
- package/dist/src/services/push.js.map +1 -1
- package/dist/src/services/quota.d.ts +3 -1
- package/dist/src/services/quota.d.ts.map +1 -1
- package/dist/src/services/quota.js +6 -9
- package/dist/src/services/quota.js.map +1 -1
- package/dist/src/services/structure-overview.d.ts +3 -0
- package/dist/src/services/structure-overview.d.ts.map +1 -1
- package/dist/src/services/structure-overview.js +3 -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 +24 -1
- package/dist/src/services/structure-snapshot.js.map +1 -1
- package/dist/src/services/tracked-classify.js +1 -1
- package/dist/src/services/tracked-classify.js.map +1 -1
- package/dist/src/services/usage-summary.d.ts +3 -0
- package/dist/src/services/usage-summary.d.ts.map +1 -1
- package/dist/src/services/usage-summary.js +31 -29
- package/dist/src/services/usage-summary.js.map +1 -1
- package/dist/src/services/workflow/engine-human.d.ts +33 -0
- package/dist/src/services/workflow/engine-human.d.ts.map +1 -0
- package/dist/src/services/workflow/engine-human.js +44 -0
- package/dist/src/services/workflow/engine-human.js.map +1 -0
- package/dist/src/services/workflow/engine-steps.d.ts +13 -0
- package/dist/src/services/workflow/engine-steps.d.ts.map +1 -1
- package/dist/src/services/workflow/engine-steps.js +33 -2
- package/dist/src/services/workflow/engine-steps.js.map +1 -1
- package/dist/src/services/workflow/engine.d.ts +20 -0
- package/dist/src/services/workflow/engine.d.ts.map +1 -1
- package/dist/src/services/workflow/engine.js +77 -3
- package/dist/src/services/workflow/engine.js.map +1 -1
- package/dist/src/services/workflow/store.d.ts +3 -0
- package/dist/src/services/workflow/store.d.ts.map +1 -1
- package/dist/src/services/workflow/store.js +29 -4
- package/dist/src/services/workflow/store.js.map +1 -1
- package/dist/src/services/workspace-access.d.ts +12 -0
- package/dist/src/services/workspace-access.d.ts.map +1 -1
- package/dist/src/services/workspace-access.js +24 -5
- package/dist/src/services/workspace-access.js.map +1 -1
- package/dist/src/services/workspace-provision.d.ts +51 -0
- package/dist/src/services/workspace-provision.d.ts.map +1 -0
- package/dist/src/services/workspace-provision.js +56 -0
- package/dist/src/services/workspace-provision.js.map +1 -0
- package/dist/src/services/workspace-versions.d.ts +110 -0
- package/dist/src/services/workspace-versions.d.ts.map +1 -0
- package/dist/src/services/workspace-versions.js +0 -0
- package/dist/src/services/workspace-versions.js.map +1 -0
- package/dist/src/storage/adapter/legacy-memory-adapter.d.ts +61 -0
- package/dist/src/storage/adapter/legacy-memory-adapter.d.ts.map +1 -0
- package/dist/src/storage/adapter/legacy-memory-adapter.js +135 -0
- package/dist/src/storage/adapter/legacy-memory-adapter.js.map +1 -0
- package/dist/src/storage/adapter/memory-adapter.d.ts +126 -0
- package/dist/src/storage/adapter/memory-adapter.d.ts.map +1 -0
- package/dist/src/storage/adapter/memory-adapter.js +2 -0
- package/dist/src/storage/adapter/memory-adapter.js.map +1 -0
- package/dist/src/storage/interface.d.ts +3 -1
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +28 -0
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +91 -1
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/apps.d.ts +9 -0
- package/dist/src/storage/providers/mongodb/methods/apps.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/apps.js +38 -0
- package/dist/src/storage/providers/mongodb/methods/apps.js.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/governance.d.ts +5 -0
- package/dist/src/storage/providers/mongodb/methods/governance.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/governance.js +23 -2
- package/dist/src/storage/providers/mongodb/methods/governance.js.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/identity.d.ts +6 -0
- package/dist/src/storage/providers/mongodb/methods/identity.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/identity.js +51 -9
- package/dist/src/storage/providers/mongodb/methods/identity.js.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/owner-memory-scope.d.ts +34 -0
- package/dist/src/storage/providers/mongodb/methods/owner-memory-scope.d.ts.map +1 -0
- package/dist/src/storage/providers/mongodb/methods/owner-memory-scope.js +77 -0
- package/dist/src/storage/providers/mongodb/methods/owner-memory-scope.js.map +1 -0
- package/dist/src/storage/providers/mongodb/methods/owners-memory-bulk.d.ts +30 -0
- package/dist/src/storage/providers/mongodb/methods/owners-memory-bulk.d.ts.map +1 -0
- package/dist/src/storage/providers/mongodb/methods/owners-memory-bulk.js +0 -0
- package/dist/src/storage/providers/mongodb/methods/owners-memory-bulk.js.map +1 -0
- package/dist/src/storage/providers/mongodb/methods/owners.d.ts +8 -4
- package/dist/src/storage/providers/mongodb/methods/owners.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/owners.js +112 -21
- package/dist/src/storage/providers/mongodb/methods/owners.js.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/sessions.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/sessions.js +4 -0
- package/dist/src/storage/providers/mongodb/methods/sessions.js.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/storage-stats.d.ts +21 -0
- package/dist/src/storage/providers/mongodb/methods/storage-stats.d.ts.map +1 -0
- package/dist/src/storage/providers/mongodb/methods/storage-stats.js +58 -0
- package/dist/src/storage/providers/mongodb/methods/storage-stats.js.map +1 -0
- package/dist/src/storage/providers/mongodb/methods/work.d.ts +8 -0
- package/dist/src/storage/providers/mongodb/methods/work.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/methods/work.js +42 -0
- package/dist/src/storage/providers/mongodb/methods/work.js.map +1 -1
- package/dist/src/storage/providers/postgres/index.d.ts +1 -0
- package/dist/src/storage/providers/postgres/index.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres/index.js +1 -0
- package/dist/src/storage/providers/postgres/index.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/db-types.d.ts +1538 -0
- package/dist/src/storage/providers/postgres-kysely/db-types.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/db-types.js +6 -0
- package/dist/src/storage/providers/postgres-kysely/db-types.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/helpers.d.ts +23 -0
- package/dist/src/storage/providers/postgres-kysely/helpers.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/helpers.js +91 -0
- package/dist/src/storage/providers/postgres-kysely/helpers.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/index.d.ts +38 -0
- package/dist/src/storage/providers/postgres-kysely/index.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/index.js +81 -0
- package/dist/src/storage/providers/postgres-kysely/index.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/actions.d.ts +16 -0
- package/dist/src/storage/providers/postgres-kysely/methods/actions.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/actions.js +103 -0
- package/dist/src/storage/providers/postgres-kysely/methods/actions.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-misc.d.ts +37 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-misc.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-misc.js +306 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-misc.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-msg-dispute-invite.d.ts +55 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-msg-dispute-invite.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-msg-dispute-invite.js +247 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-msg-dispute-invite.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-onboarding.d.ts +11 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-onboarding.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-onboarding.js +81 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-onboarding.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.d.ts +50 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.js +238 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.d.ts +10 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.js +146 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts +11 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js +51 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-purchases.d.ts +10 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-purchases.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-purchases.js +53 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-purchases.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/apps.d.ts +49 -0
- package/dist/src/storage/providers/postgres-kysely/methods/apps.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/apps.js +369 -0
- package/dist/src/storage/providers/postgres-kysely/methods/apps.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/boards.d.ts +28 -0
- package/dist/src/storage/providers/postgres-kysely/methods/boards.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/boards.js +104 -0
- package/dist/src/storage/providers/postgres-kysely/methods/boards.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/capabilities.d.ts +36 -0
- package/dist/src/storage/providers/postgres-kysely/methods/capabilities.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/capabilities.js +222 -0
- package/dist/src/storage/providers/postgres-kysely/methods/capabilities.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/catalogue.d.ts +19 -0
- package/dist/src/storage/providers/postgres-kysely/methods/catalogue.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/catalogue.js +96 -0
- package/dist/src/storage/providers/postgres-kysely/methods/catalogue.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/consent.d.ts +26 -0
- package/dist/src/storage/providers/postgres-kysely/methods/consent.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/consent.js +119 -0
- package/dist/src/storage/providers/postgres-kysely/methods/consent.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/device-auth.d.ts +13 -0
- package/dist/src/storage/providers/postgres-kysely/methods/device-auth.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/device-auth.js +68 -0
- package/dist/src/storage/providers/postgres-kysely/methods/device-auth.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/direct-message.d.ts +72 -0
- package/dist/src/storage/providers/postgres-kysely/methods/direct-message.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/direct-message.js +352 -0
- package/dist/src/storage/providers/postgres-kysely/methods/direct-message.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/ecosystem.d.ts +22 -0
- package/dist/src/storage/providers/postgres-kysely/methods/ecosystem.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/ecosystem.js +201 -0
- package/dist/src/storage/providers/postgres-kysely/methods/ecosystem.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/federation.d.ts +42 -0
- package/dist/src/storage/providers/postgres-kysely/methods/federation.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/federation.js +295 -0
- package/dist/src/storage/providers/postgres-kysely/methods/federation.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/feedback.d.ts +15 -0
- package/dist/src/storage/providers/postgres-kysely/methods/feedback.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/feedback.js +52 -0
- package/dist/src/storage/providers/postgres-kysely/methods/feedback.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts +20 -0
- package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/files.js +108 -0
- package/dist/src/storage/providers/postgres-kysely/methods/files.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/identity-extras.d.ts +19 -0
- package/dist/src/storage/providers/postgres-kysely/methods/identity-extras.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/identity-extras.js +101 -0
- package/dist/src/storage/providers/postgres-kysely/methods/identity-extras.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/identity.d.ts +35 -0
- package/dist/src/storage/providers/postgres-kysely/methods/identity.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/identity.js +302 -0
- package/dist/src/storage/providers/postgres-kysely/methods/identity.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/knowledge.d.ts +21 -0
- package/dist/src/storage/providers/postgres-kysely/methods/knowledge.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/knowledge.js +65 -0
- package/dist/src/storage/providers/postgres-kysely/methods/knowledge.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/marketplace.d.ts +24 -0
- package/dist/src/storage/providers/postgres-kysely/methods/marketplace.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/marketplace.js +122 -0
- package/dist/src/storage/providers/postgres-kysely/methods/marketplace.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/memory.d.ts +81 -0
- package/dist/src/storage/providers/postgres-kysely/methods/memory.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/memory.js +342 -0
- package/dist/src/storage/providers/postgres-kysely/methods/memory.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/micro-memory.d.ts +15 -0
- package/dist/src/storage/providers/postgres-kysely/methods/micro-memory.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/micro-memory.js +55 -0
- package/dist/src/storage/providers/postgres-kysely/methods/micro-memory.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/moderation.d.ts +38 -0
- package/dist/src/storage/providers/postgres-kysely/methods/moderation.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/moderation.js +176 -0
- package/dist/src/storage/providers/postgres-kysely/methods/moderation.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/node-ext-escrow.d.ts +38 -0
- package/dist/src/storage/providers/postgres-kysely/methods/node-ext-escrow.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/node-ext-escrow.js +243 -0
- package/dist/src/storage/providers/postgres-kysely/methods/node-ext-escrow.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/node-infra.d.ts +30 -0
- package/dist/src/storage/providers/postgres-kysely/methods/node-infra.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/node-infra.js +158 -0
- package/dist/src/storage/providers/postgres-kysely/methods/node-infra.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/notifications.d.ts +19 -0
- package/dist/src/storage/providers/postgres-kysely/methods/notifications.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/notifications.js +106 -0
- package/dist/src/storage/providers/postgres-kysely/methods/notifications.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/oauth.d.ts +20 -0
- package/dist/src/storage/providers/postgres-kysely/methods/oauth.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/oauth.js +94 -0
- package/dist/src/storage/providers/postgres-kysely/methods/oauth.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.d.ts +46 -0
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.js +247 -0
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/otk.d.ts +10 -0
- package/dist/src/storage/providers/postgres-kysely/methods/otk.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/otk.js +60 -0
- package/dist/src/storage/providers/postgres-kysely/methods/otk.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/packages.d.ts +32 -0
- package/dist/src/storage/providers/postgres-kysely/methods/packages.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/packages.js +228 -0
- package/dist/src/storage/providers/postgres-kysely/methods/packages.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/pat.d.ts +10 -0
- package/dist/src/storage/providers/postgres-kysely/methods/pat.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/pat.js +36 -0
- package/dist/src/storage/providers/postgres-kysely/methods/pat.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/schedules.d.ts +32 -0
- package/dist/src/storage/providers/postgres-kysely/methods/schedules.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/schedules.js +131 -0
- package/dist/src/storage/providers/postgres-kysely/methods/schedules.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/schema.d.ts +10 -0
- package/dist/src/storage/providers/postgres-kysely/methods/schema.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/schema.js +88 -0
- package/dist/src/storage/providers/postgres-kysely/methods/schema.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/sessions.d.ts +38 -0
- package/dist/src/storage/providers/postgres-kysely/methods/sessions.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/sessions.js +66 -0
- package/dist/src/storage/providers/postgres-kysely/methods/sessions.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/subdomain-sites.d.ts +10 -0
- package/dist/src/storage/providers/postgres-kysely/methods/subdomain-sites.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/subdomain-sites.js +36 -0
- package/dist/src/storage/providers/postgres-kysely/methods/subdomain-sites.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/system-extras.d.ts +23 -0
- package/dist/src/storage/providers/postgres-kysely/methods/system-extras.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/system-extras.js +109 -0
- package/dist/src/storage/providers/postgres-kysely/methods/system-extras.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/system.d.ts +32 -0
- package/dist/src/storage/providers/postgres-kysely/methods/system.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/system.js +144 -0
- package/dist/src/storage/providers/postgres-kysely/methods/system.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/template-listings.d.ts +34 -0
- package/dist/src/storage/providers/postgres-kysely/methods/template-listings.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/template-listings.js +278 -0
- package/dist/src/storage/providers/postgres-kysely/methods/template-listings.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.d.ts +13 -0
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.js +129 -0
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/work.d.ts +14 -0
- package/dist/src/storage/providers/postgres-kysely/methods/work.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/work.js +80 -0
- package/dist/src/storage/providers/postgres-kysely/methods/work.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/migrate.d.ts +4 -0
- package/dist/src/storage/providers/postgres-kysely/migrate.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/migrate.js +40 -0
- package/dist/src/storage/providers/postgres-kysely/migrate.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0001_base_schema.sql +2406 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0002_memory_fts.sql +20 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0003_id_defaults.sql +15 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0004_otk_initial.sql +4 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0005_storage_stats.sql +9 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0006_membership_invited_workspaces.sql +5 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0007_contacts_origin.sql +5 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0008_feedback.sql +21 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0009_invitation_return_url.sql +7 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0010_agent_model.sql +5 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0011_unique_verified_email.sql +25 -0
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +4 -1
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts +12 -1
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/apps.js +42 -0
- package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/capability-agents.d.ts +12 -1
- package/dist/src/storage/providers/sqlite/methods/capability-agents.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/capability-agents.js +42 -0
- package/dist/src/storage/providers/sqlite/methods/capability-agents.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/community.d.ts +6 -0
- package/dist/src/storage/providers/sqlite/methods/community.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/community.js +29 -3
- package/dist/src/storage/providers/sqlite/methods/community.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/extensions-notify.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/extensions-notify.js +11 -2
- package/dist/src/storage/providers/sqlite/methods/extensions-notify.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/feedback.d.ts +23 -0
- package/dist/src/storage/providers/sqlite/methods/feedback.d.ts.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/feedback.js +64 -0
- package/dist/src/storage/providers/sqlite/methods/feedback.js.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/governance.d.ts +5 -0
- package/dist/src/storage/providers/sqlite/methods/governance.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/governance.js +43 -9
- package/dist/src/storage/providers/sqlite/methods/governance.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts +9 -0
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.js +52 -0
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/messaging.d.ts +15 -1
- package/dist/src/storage/providers/sqlite/methods/messaging.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/messaging.js +11 -2
- package/dist/src/storage/providers/sqlite/methods/messaging.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/owner-memory-bulk.d.ts +28 -0
- package/dist/src/storage/providers/sqlite/methods/owner-memory-bulk.d.ts.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/owner-memory-bulk.js +101 -0
- package/dist/src/storage/providers/sqlite/methods/owner-memory-bulk.js.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/owner-memory-scope.d.ts +35 -0
- package/dist/src/storage/providers/sqlite/methods/owner-memory-scope.d.ts.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/owner-memory-scope.js +118 -0
- package/dist/src/storage/providers/sqlite/methods/owner-memory-scope.js.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/owner.d.ts +6 -0
- package/dist/src/storage/providers/sqlite/methods/owner.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/owner.js +41 -9
- package/dist/src/storage/providers/sqlite/methods/owner.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/work.d.ts +8 -0
- package/dist/src/storage/providers/sqlite/methods/work.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/work.js +31 -0
- package/dist/src/storage/providers/sqlite/methods/work.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/action.d.ts +3 -0
- package/dist/src/storage/providers/sqlite/repos/action.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/action.js +9 -0
- package/dist/src/storage/providers/sqlite/repos/action.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent.js +8 -4
- package/dist/src/storage/providers/sqlite/repos/agent.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/community.d.ts +1 -0
- package/dist/src/storage/providers/sqlite/repos/community.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/community.js +9 -3
- package/dist/src/storage/providers/sqlite/repos/community.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/direct-message.d.ts +13 -1
- package/dist/src/storage/providers/sqlite/repos/direct-message.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/direct-message.js +70 -5
- package/dist/src/storage/providers/sqlite/repos/direct-message.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/memory.d.ts +7 -0
- package/dist/src/storage/providers/sqlite/repos/memory.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/memory.js +24 -3
- package/dist/src/storage/providers/sqlite/repos/memory.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/storage-file.d.ts +12 -0
- package/dist/src/storage/providers/sqlite/repos/storage-file.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/storage-file.js +24 -0
- package/dist/src/storage/providers/sqlite/repos/storage-file.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-1.d.ts +1 -0
- package/dist/src/storage/providers/sqlite/schema-tables-1.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-1.js +18 -1
- package/dist/src/storage/providers/sqlite/schema-tables-1.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-2.d.ts +1 -0
- package/dist/src/storage/providers/sqlite/schema-tables-2.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-2.js +4 -1
- package/dist/src/storage/providers/sqlite/schema-tables-2.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-3.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-3.js +11 -1
- package/dist/src/storage/providers/sqlite/schema-tables-3.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts +0 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +44 -0
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/action.repository.d.ts +2 -0
- package/dist/src/storage/repositories/action.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/agent.repository.d.ts +3 -0
- package/dist/src/storage/repositories/agent.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/app.repository.d.ts +0 -0
- package/dist/src/storage/repositories/app.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/consent.repository.d.ts +10 -0
- package/dist/src/storage/repositories/consent.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/direct-message.repository.d.ts +36 -11
- package/dist/src/storage/repositories/direct-message.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/direct-message.repository.js +2 -0
- package/dist/src/storage/repositories/direct-message.repository.js.map +1 -1
- package/dist/src/storage/repositories/feedback.repository.d.ts +28 -0
- package/dist/src/storage/repositories/feedback.repository.d.ts.map +1 -0
- package/dist/src/storage/repositories/feedback.repository.js +13 -0
- package/dist/src/storage/repositories/feedback.repository.js.map +1 -0
- package/dist/src/storage/repositories/file.repository.d.ts +11 -0
- package/dist/src/storage/repositories/file.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/identity.repository.d.ts +13 -0
- package/dist/src/storage/repositories/identity.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/index.d.ts +1 -0
- package/dist/src/storage/repositories/index.d.ts.map +1 -1
- package/dist/src/storage/repositories/invitation.repository.d.ts +3 -0
- package/dist/src/storage/repositories/invitation.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/invitation.repository.js +2 -0
- package/dist/src/storage/repositories/invitation.repository.js.map +1 -1
- package/dist/src/storage/repositories/memory.repository.d.ts +133 -1
- package/dist/src/storage/repositories/memory.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/micro-memory.repository.d.ts +6 -0
- package/dist/src/storage/repositories/micro-memory.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/organism.repository.d.ts +10 -0
- package/dist/src/storage/repositories/organism.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/stats.repository.d.ts +31 -2
- package/dist/src/storage/repositories/stats.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/stats.repository.js +5 -2
- package/dist/src/storage/repositories/stats.repository.js.map +1 -1
- package/dist/src/storage/repositories/work.repository.d.ts +7 -0
- package/dist/src/storage/repositories/work.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories-impl/memory-repository.d.ts +78 -0
- package/dist/src/storage/repositories-impl/memory-repository.d.ts.map +1 -0
- package/dist/src/storage/repositories-impl/memory-repository.js +121 -0
- package/dist/src/storage/repositories-impl/memory-repository.js.map +1 -0
- package/dist/src/storage/schema-lock-cache.d.ts +24 -0
- package/dist/src/storage/schema-lock-cache.d.ts.map +1 -0
- package/dist/src/storage/schema-lock-cache.js +19 -0
- package/dist/src/storage/schema-lock-cache.js.map +1 -0
- package/dist/src/storage/storage-factory.d.ts +6 -3
- package/dist/src/storage/storage-factory.d.ts.map +1 -1
- package/dist/src/storage/storage-factory.js +19 -12
- package/dist/src/storage/storage-factory.js.map +1 -1
- package/dist/src/storage/types/agents-messaging.d.ts +33 -0
- package/dist/src/storage/types/agents-messaging.d.ts.map +1 -1
- package/dist/src/storage/types/agents-messaging.js +3 -0
- package/dist/src/storage/types/agents-messaging.js.map +1 -1
- package/dist/src/storage/types/apps.d.ts +14 -0
- package/dist/src/storage/types/apps.d.ts.map +1 -1
- package/dist/src/storage/types/identity.d.ts +8 -0
- package/dist/src/storage/types/identity.d.ts.map +1 -1
- package/dist/src/storage/types/organisms-federation.d.ts +48 -0
- package/dist/src/storage/types/organisms-federation.d.ts.map +1 -1
- package/dist/src/storage/uow/batch-loader.d.ts +44 -0
- package/dist/src/storage/uow/batch-loader.d.ts.map +1 -0
- package/dist/src/storage/uow/batch-loader.js +101 -0
- package/dist/src/storage/uow/batch-loader.js.map +1 -0
- package/dist/src/storage/uow/identity-map.d.ts +0 -0
- package/dist/src/storage/uow/identity-map.d.ts.map +1 -0
- package/dist/src/storage/uow/identity-map.js +0 -0
- package/dist/src/storage/uow/identity-map.js.map +1 -0
- package/dist/src/storage/uow/unit-of-work.d.ts +42 -0
- package/dist/src/storage/uow/unit-of-work.d.ts.map +1 -0
- package/dist/src/storage/uow/unit-of-work.js +89 -0
- package/dist/src/storage/uow/unit-of-work.js.map +1 -0
- package/dist/src/utils/app-badge.d.ts +7 -22
- package/dist/src/utils/app-badge.d.ts.map +1 -1
- package/dist/src/utils/app-badge.js +59 -22
- package/dist/src/utils/app-badge.js.map +1 -1
- package/dist/src/utils/app-mobile-lint.d.ts +17 -0
- package/dist/src/utils/app-mobile-lint.d.ts.map +1 -0
- package/dist/src/utils/app-mobile-lint.js +40 -0
- package/dist/src/utils/app-mobile-lint.js.map +1 -0
- package/dist/src/utils/app-protect.d.ts +2 -0
- package/dist/src/utils/app-protect.d.ts.map +1 -1
- package/dist/src/utils/app-protect.js +3 -9
- package/dist/src/utils/app-protect.js.map +1 -1
- package/dist/src/utils/env-config/sections-node.js +4 -4
- package/dist/src/utils/env-config/sections-node.js.map +1 -1
- package/dist/src/utils/env-config/sections-platform.d.ts.map +1 -1
- package/dist/src/utils/env-config/sections-platform.js +0 -11
- package/dist/src/utils/env-config/sections-platform.js.map +1 -1
- package/dist/src/utils/env-validator.d.ts.map +1 -1
- package/dist/src/utils/env-validator.js +10 -6
- package/dist/src/utils/env-validator.js.map +1 -1
- package/dist/src/utils/html-inject.d.ts +23 -0
- package/dist/src/utils/html-inject.d.ts.map +1 -0
- package/dist/src/utils/html-inject.js +42 -0
- package/dist/src/utils/html-inject.js.map +1 -0
- package/dist/src/utils/node-descriptor.d.ts.map +1 -1
- package/dist/src/utils/node-descriptor.js +0 -1
- package/dist/src/utils/node-descriptor.js.map +1 -1
- package/dist/static/app-catalog/_template.html +27 -77
- package/dist/static/app-catalog/js/app-agents.js +232 -0
- package/dist/static/app-catalog/js/apps-io.js +51 -165
- package/dist/static/app-catalog/js/cortex.js +114 -0
- package/dist/static/app-catalog/js/cost.js +100 -0
- package/dist/static/app-catalog/js/db.js +23 -93
- package/dist/static/app-catalog/js/detail.js +196 -24
- package/dist/static/app-catalog/js/favorites.js +71 -0
- package/dist/static/app-catalog/js/i18n-data.js +168 -16
- package/dist/static/app-catalog/js/main.js +29 -103
- package/dist/static/app-catalog/js/migrate.js +88 -0
- package/dist/static/app-catalog/js/monetize.js +1 -1
- package/dist/static/app-catalog/js/promote.js +70 -0
- package/dist/static/app-catalog/js/render.js +56 -150
- package/dist/static/app-catalog/js/server-io.js +126 -214
- package/dist/static/app-catalog/js/settings.js +11 -204
- package/dist/static/app-catalog/styles/app-catalog.css +136 -9
- package/dist/static/app-catalog.html +1364 -976
- package/dist/static/sdk-libs/_core/config.js +52 -0
- package/dist/static/sdk-libs/_core/http.js +52 -0
- package/dist/static/sdk-libs/_core/namespace.js +33 -0
- package/dist/static/sdk-libs/_core/sdk-globals.d.ts +50 -0
- package/dist/static/sdk-libs/_core/session.js +66 -0
- package/dist/static/sdk-libs/agentface/index.js +102 -0
- package/dist/static/sdk-libs/agents/index.js +267 -0
- package/dist/static/sdk-libs/ai/index.js +153 -0
- package/dist/static/sdk-libs/audio/core.js +111 -0
- package/dist/static/sdk-libs/audio/index.js +380 -0
- package/dist/static/sdk-libs/audio/instruments.js +369 -0
- package/dist/static/sdk-libs/auth/config.js +46 -0
- package/dist/static/sdk-libs/auth/crypto.js +166 -0
- package/dist/static/sdk-libs/auth/events.js +27 -0
- package/dist/static/sdk-libs/auth/i18n.js +64 -0
- package/dist/static/sdk-libs/auth/index.js +37 -0
- package/dist/static/sdk-libs/auth/modal.js +545 -0
- package/dist/static/sdk-libs/auth/pill.js +167 -0
- package/dist/static/sdk-libs/auth/session.js +792 -0
- package/dist/static/sdk-libs/auth/signup.js +232 -0
- package/dist/static/sdk-libs/auth/theme.js +96 -0
- package/dist/static/sdk-libs/capabilities/index.js +179 -0
- package/dist/static/sdk-libs/commerce/index.js +243 -0
- package/dist/static/sdk-libs/data/index.js +188 -0
- package/dist/static/sdk-libs/dist/aimeat-agentface.js +91 -0
- package/dist/static/sdk-libs/dist/aimeat-agents.js +315 -0
- package/dist/static/sdk-libs/dist/aimeat-ai.js +168 -0
- package/dist/static/sdk-libs/dist/aimeat-audio.js +979 -0
- package/dist/static/sdk-libs/dist/aimeat-auth.js +1831 -0
- package/dist/static/sdk-libs/dist/aimeat-capabilities.js +177 -0
- package/dist/static/sdk-libs/dist/aimeat-commerce.js +265 -0
- package/dist/static/sdk-libs/dist/aimeat-data.js +205 -0
- package/dist/static/sdk-libs/dist/aimeat-editor.js +299 -0
- package/dist/static/sdk-libs/dist/aimeat-header.js +270 -0
- package/dist/static/sdk-libs/dist/aimeat-intake.js +94 -0
- package/dist/static/sdk-libs/dist/aimeat-live.js +265 -0
- package/dist/static/sdk-libs/dist/aimeat-markdown.js +602 -0
- package/dist/static/sdk-libs/dist/aimeat-organism.js +394 -0
- package/dist/static/sdk-libs/dist/aimeat-portfolio-standalone.js +90 -0
- package/dist/static/sdk-libs/dist/aimeat-social.js +157 -0
- package/dist/static/sdk-libs/dist/aimeat-speech.js +300 -0
- package/dist/static/sdk-libs/dist/aimeat-storage.js +210 -0
- package/dist/static/sdk-libs/dist/aimeat-tunnel.js +383 -0
- package/dist/static/sdk-libs/dist/aimeat-wallet.js +118 -0
- package/dist/static/sdk-libs/dist/aimeat-webmcp.js +187 -0
- package/dist/static/sdk-libs/dist/aimeat-work.js +213 -0
- package/dist/static/sdk-libs/dist/aimeat-workflows.js +147 -0
- package/dist/static/sdk-libs/editor/index.js +229 -0
- package/dist/static/sdk-libs/header/index.js +249 -0
- package/dist/static/sdk-libs/intake/index.js +75 -0
- package/dist/static/sdk-libs/live/index.js +156 -0
- package/dist/static/sdk-libs/markdown/index.js +522 -0
- package/dist/static/sdk-libs/organism/index.js +381 -0
- package/dist/static/sdk-libs/portfolio-standalone/index.js +78 -0
- package/dist/static/sdk-libs/social/index.js +140 -0
- package/dist/static/sdk-libs/speech/index.js +321 -0
- package/dist/static/sdk-libs/storage/index.js +189 -0
- package/dist/static/sdk-libs/tunnel/index.js +428 -0
- package/dist/static/sdk-libs/wallet/index.js +115 -0
- package/dist/static/sdk-libs/webmcp/index.js +185 -0
- package/dist/static/sdk-libs/work/index.js +191 -0
- package/dist/static/sdk-libs/workflows/index.js +113 -0
- package/package.json +23 -21
- package/prisma/schema.postgres.prisma +0 -1789
- package/prisma/schema.prisma +0 -1787
|
@@ -0,0 +1,1831 @@
|
|
|
1
|
+
// GENERATED FILE — do not edit directly. Source: src/static/sdk-libs/auth/ (+ _core/).
|
|
2
|
+
// Rebuild: pnpm build:sdk · Served at /v1/libs/aimeat-auth.js (with a per-node config prelude).
|
|
3
|
+
"use strict";
|
|
4
|
+
(() => {
|
|
5
|
+
// src/static/sdk-libs/auth/crypto.js
|
|
6
|
+
async function importEd25519Key(privateKeyBase64) {
|
|
7
|
+
const privBytes = Uint8Array.from(atob(privateKeyBase64), (c) => c.charCodeAt(0));
|
|
8
|
+
const pkcs8Prefix = new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32]);
|
|
9
|
+
const pkcs8 = new Uint8Array(pkcs8Prefix.length + privBytes.length);
|
|
10
|
+
pkcs8.set(pkcs8Prefix);
|
|
11
|
+
pkcs8.set(privBytes, pkcs8Prefix.length);
|
|
12
|
+
const cryptoKey = await crypto.subtle.importKey("pkcs8", pkcs8, "Ed25519", false, ["sign"]);
|
|
13
|
+
privBytes.fill(0);
|
|
14
|
+
pkcs8.fill(0);
|
|
15
|
+
return cryptoKey;
|
|
16
|
+
}
|
|
17
|
+
function isCryptoKey(value) {
|
|
18
|
+
if (!value || typeof value !== "object") return false;
|
|
19
|
+
if (typeof CryptoKey !== "undefined" && value instanceof CryptoKey) return true;
|
|
20
|
+
return Object.prototype.toString.call(value) === "[object CryptoKey]";
|
|
21
|
+
}
|
|
22
|
+
async function sign(keyOrB64, message) {
|
|
23
|
+
let key = keyOrB64;
|
|
24
|
+
if (typeof keyOrB64 === "string") {
|
|
25
|
+
key = await importEd25519Key(keyOrB64);
|
|
26
|
+
}
|
|
27
|
+
if (!isCryptoKey(key)) {
|
|
28
|
+
throw new Error("AIMEAT signing key is missing or invalid. Please sign in again.");
|
|
29
|
+
}
|
|
30
|
+
const msgBytes = new TextEncoder().encode(message);
|
|
31
|
+
const sigBytes = await crypto.subtle.sign("Ed25519", key, msgBytes);
|
|
32
|
+
return btoa(String.fromCharCode(...new Uint8Array(sigBytes)));
|
|
33
|
+
}
|
|
34
|
+
var KEY_DB_NAME = "aimeat_keys";
|
|
35
|
+
var KEY_STORE_NAME = "cryptokeys";
|
|
36
|
+
function openKeyDB() {
|
|
37
|
+
return new Promise((resolve, reject) => {
|
|
38
|
+
const req = indexedDB.open(KEY_DB_NAME, 1);
|
|
39
|
+
req.onupgradeneeded = () => req.result.createObjectStore(KEY_STORE_NAME);
|
|
40
|
+
req.onsuccess = () => resolve(req.result);
|
|
41
|
+
req.onerror = () => reject(req.error);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async function storeKey(name, cryptoKey) {
|
|
45
|
+
const db = (
|
|
46
|
+
/** @type {IDBDatabase} */
|
|
47
|
+
await openKeyDB()
|
|
48
|
+
);
|
|
49
|
+
return new Promise((resolve, reject) => {
|
|
50
|
+
const tx = db.transaction(KEY_STORE_NAME, "readwrite");
|
|
51
|
+
tx.objectStore(KEY_STORE_NAME).put(cryptoKey, name);
|
|
52
|
+
tx.oncomplete = () => {
|
|
53
|
+
db.close();
|
|
54
|
+
resolve(void 0);
|
|
55
|
+
};
|
|
56
|
+
tx.onerror = () => {
|
|
57
|
+
db.close();
|
|
58
|
+
reject(tx.error);
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async function loadKey(name) {
|
|
63
|
+
const db = (
|
|
64
|
+
/** @type {IDBDatabase} */
|
|
65
|
+
await openKeyDB()
|
|
66
|
+
);
|
|
67
|
+
return new Promise((resolve) => {
|
|
68
|
+
const tx = db.transaction(KEY_STORE_NAME, "readonly");
|
|
69
|
+
const req = tx.objectStore(KEY_STORE_NAME).get(name);
|
|
70
|
+
req.onsuccess = () => {
|
|
71
|
+
db.close();
|
|
72
|
+
resolve(req.result || null);
|
|
73
|
+
};
|
|
74
|
+
req.onerror = () => {
|
|
75
|
+
db.close();
|
|
76
|
+
resolve(null);
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
async function deleteKey(name) {
|
|
81
|
+
try {
|
|
82
|
+
const db = (
|
|
83
|
+
/** @type {IDBDatabase} */
|
|
84
|
+
await openKeyDB()
|
|
85
|
+
);
|
|
86
|
+
return new Promise((resolve) => {
|
|
87
|
+
const tx = db.transaction(KEY_STORE_NAME, "readwrite");
|
|
88
|
+
tx.objectStore(KEY_STORE_NAME).delete(name);
|
|
89
|
+
tx.oncomplete = () => {
|
|
90
|
+
db.close();
|
|
91
|
+
resolve(void 0);
|
|
92
|
+
};
|
|
93
|
+
tx.onerror = () => {
|
|
94
|
+
db.close();
|
|
95
|
+
resolve(void 0);
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
} catch {
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async function migrateKeysToIndexedDB() {
|
|
102
|
+
try {
|
|
103
|
+
const session = load("session");
|
|
104
|
+
if (session && session.privateKey) {
|
|
105
|
+
const cryptoKey = await importEd25519Key(session.privateKey);
|
|
106
|
+
await storeKey("agent_key", cryptoKey);
|
|
107
|
+
delete session.privateKey;
|
|
108
|
+
save("session", session);
|
|
109
|
+
}
|
|
110
|
+
const ownerKey = load("owner_key");
|
|
111
|
+
if (typeof ownerKey === "string" && ownerKey.length > 0) {
|
|
112
|
+
const cryptoKey = await importEd25519Key(ownerKey);
|
|
113
|
+
await storeKey("owner_key", cryptoKey);
|
|
114
|
+
remove("owner_key");
|
|
115
|
+
}
|
|
116
|
+
} catch (e) {
|
|
117
|
+
console.warn("AIMEAT: Key migration to IndexedDB failed, falling back to localStorage", e);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
var STORAGE_PREFIX = "aimeat_";
|
|
121
|
+
function save(key, value) {
|
|
122
|
+
try {
|
|
123
|
+
localStorage.setItem(STORAGE_PREFIX + key, JSON.stringify(value));
|
|
124
|
+
} catch {
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function load(key) {
|
|
128
|
+
try {
|
|
129
|
+
const v = localStorage.getItem(STORAGE_PREFIX + key);
|
|
130
|
+
return v ? JSON.parse(v) : null;
|
|
131
|
+
} catch {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function remove(key) {
|
|
136
|
+
try {
|
|
137
|
+
localStorage.removeItem(STORAGE_PREFIX + key);
|
|
138
|
+
} catch {
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function parseJwt(token) {
|
|
142
|
+
try {
|
|
143
|
+
const parts = token.split(".");
|
|
144
|
+
if (parts.length !== 3) return null;
|
|
145
|
+
const payload = JSON.parse(atob(parts[1].replace(/-/g, "+").replace(/_/g, "/")));
|
|
146
|
+
return payload;
|
|
147
|
+
} catch {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function isExpired(jwt) {
|
|
152
|
+
const payload = parseJwt(jwt);
|
|
153
|
+
if (!payload || !payload.exp) return true;
|
|
154
|
+
return Date.now() / 1e3 > payload.exp - 60;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// src/static/sdk-libs/_core/config.js
|
|
158
|
+
function cfg() {
|
|
159
|
+
return window.__AIMEAT_SDK_CFG__ || { nodeId: "", baseUrl: "" };
|
|
160
|
+
}
|
|
161
|
+
function resolveNodeUrl() {
|
|
162
|
+
const meta = document.querySelector('meta[name="aimeat-node"]');
|
|
163
|
+
if (meta) return (meta.getAttribute("content") || "").replace(/\/$/, "");
|
|
164
|
+
if (location.protocol === "http:" || location.protocol === "https:") return location.origin;
|
|
165
|
+
return cfg().baseUrl;
|
|
166
|
+
}
|
|
167
|
+
var NODE_URL = resolveNodeUrl();
|
|
168
|
+
var APEX_URL = cfg().baseUrl;
|
|
169
|
+
var NODE_ID = cfg().nodeId;
|
|
170
|
+
var HEARTBEAT_MS = cfg().heartbeatMs || 3e4;
|
|
171
|
+
|
|
172
|
+
// src/static/sdk-libs/auth/config.js
|
|
173
|
+
var APP_DEFAULT_SCOPES = "memory:read memory:write storage:read storage:write";
|
|
174
|
+
function appDeclaredScopes() {
|
|
175
|
+
try {
|
|
176
|
+
var m = document.querySelector('meta[name="aimeat-scopes"]');
|
|
177
|
+
var c = m && m.getAttribute("content");
|
|
178
|
+
if (c && c.trim()) return c.trim().replace(/\s+/g, " ");
|
|
179
|
+
} catch {
|
|
180
|
+
}
|
|
181
|
+
return APP_DEFAULT_SCOPES;
|
|
182
|
+
}
|
|
183
|
+
var AUTH_PROVIDERS = window.__AIMEAT_AUTH_CFG__ && window.__AIMEAT_AUTH_CFG__.providers || [];
|
|
184
|
+
var PROVIDER_ICONS = {
|
|
185
|
+
google: '<svg width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><path fill="#4285F4" d="M17.64 9.2c0-.64-.06-1.25-.16-1.84H9v3.48h4.84a4.14 4.14 0 0 1-1.8 2.72v2.26h2.92c1.7-1.57 2.68-3.88 2.68-6.62z"/><path fill="#34A853" d="M9 18c2.43 0 4.47-.8 5.96-2.18l-2.92-2.26c-.8.54-1.84.86-3.04.86-2.34 0-4.32-1.58-5.03-3.7H.96v2.33A9 9 0 0 0 9 18z"/><path fill="#FBBC05" d="M3.97 10.72a5.4 5.4 0 0 1 0-3.44V4.95H.96a9 9 0 0 0 0 8.1l3.01-2.33z"/><path fill="#EA4335" d="M9 3.58c1.32 0 2.5.45 3.44 1.35l2.58-2.58A9 9 0 0 0 .96 4.95l3.01 2.33C4.68 5.16 6.66 3.58 9 3.58z"/></svg>',
|
|
186
|
+
entra: '<svg width="18" height="18" viewBox="0 0 21 21" aria-hidden="true"><rect x="1" y="1" width="9" height="9" fill="#F25022"/><rect x="11" y="1" width="9" height="9" fill="#7FBA00"/><rect x="1" y="11" width="9" height="9" fill="#00A4EF"/><rect x="11" y="11" width="9" height="9" fill="#FFB900"/></svg>',
|
|
187
|
+
casdoor: '<svg width="18" height="18" viewBox="0 0 24 24" aria-hidden="true"><rect x="4" y="3" width="16" height="18" rx="2" fill="#4757F6"/><circle cx="14" cy="11" r="1.6" fill="#fff"/><rect x="13.2" y="11.5" width="1.6" height="4" fill="#fff"/></svg>'
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
// src/static/sdk-libs/auth/events.js
|
|
191
|
+
var listeners = {};
|
|
192
|
+
function emit(event, data) {
|
|
193
|
+
(listeners[event] || []).forEach((fn) => fn(data));
|
|
194
|
+
}
|
|
195
|
+
function on(event, fn) {
|
|
196
|
+
if (!listeners[event]) listeners[event] = [];
|
|
197
|
+
listeners[event].push(fn);
|
|
198
|
+
}
|
|
199
|
+
function off(event, fn) {
|
|
200
|
+
if (!listeners[event]) return;
|
|
201
|
+
listeners[event] = listeners[event].filter((f) => f !== fn);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// src/static/sdk-libs/auth/theme.js
|
|
205
|
+
function escHtml(s) {
|
|
206
|
+
const d = document.createElement("div");
|
|
207
|
+
d.textContent = s;
|
|
208
|
+
return d.innerHTML;
|
|
209
|
+
}
|
|
210
|
+
var AIMEAT_THEME_KEY = "aimeat-theme";
|
|
211
|
+
function aimeatReadTheme() {
|
|
212
|
+
try {
|
|
213
|
+
var s = localStorage.getItem(AIMEAT_THEME_KEY);
|
|
214
|
+
if (s === "light" || s === "dark") return s;
|
|
215
|
+
} catch {
|
|
216
|
+
}
|
|
217
|
+
var attr = document.documentElement.dataset.theme;
|
|
218
|
+
if (attr === "light" || attr === "dark") return attr;
|
|
219
|
+
return window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
220
|
+
}
|
|
221
|
+
function aimeatApplyTheme(t) {
|
|
222
|
+
document.documentElement.dataset.theme = t;
|
|
223
|
+
try {
|
|
224
|
+
localStorage.setItem(AIMEAT_THEME_KEY, t);
|
|
225
|
+
} catch {
|
|
226
|
+
}
|
|
227
|
+
try {
|
|
228
|
+
window.dispatchEvent(new CustomEvent("aimeat-theme-change", { detail: { theme: t } }));
|
|
229
|
+
} catch {
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
function themeToggleHtml(i) {
|
|
233
|
+
var dark = aimeatReadTheme() === "dark";
|
|
234
|
+
var title = dark ? i.themeToLight || "Switch to light mode" : i.themeToDark || "Switch to dark mode";
|
|
235
|
+
return '<button id="aimeat-theme-toggle" class="aimeat-theme-toggle" title="' + escHtml(title) + '" aria-label="' + escHtml(title) + '" style="display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:0 0 auto;background:transparent;border:1px solid rgba(127,127,127,.4);border-radius:8px;cursor:pointer;font-size:15px;line-height:1;padding:0;color:currentColor">' + (dark ? "☀" : "☾") + "</button>";
|
|
236
|
+
}
|
|
237
|
+
function wireThemeToggle(container, i) {
|
|
238
|
+
var btn = container.querySelector("#aimeat-theme-toggle");
|
|
239
|
+
if (!btn) return;
|
|
240
|
+
btn.addEventListener("click", function() {
|
|
241
|
+
var next = aimeatReadTheme() === "dark" ? "light" : "dark";
|
|
242
|
+
aimeatApplyTheme(next);
|
|
243
|
+
var dark = next === "dark";
|
|
244
|
+
btn.textContent = dark ? "☀" : "☾";
|
|
245
|
+
var title = dark ? i.themeToLight || "Switch to light mode" : i.themeToDark || "Switch to dark mode";
|
|
246
|
+
btn.title = title;
|
|
247
|
+
btn.setAttribute("aria-label", title);
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
function ensureAuthPillStyles() {
|
|
251
|
+
if (document.getElementById("aimeat-auth-pill-css")) return;
|
|
252
|
+
var st = document.createElement("style");
|
|
253
|
+
st.id = "aimeat-auth-pill-css";
|
|
254
|
+
st.textContent = [
|
|
255
|
+
".aimeat-auth-wrap{position:relative;display:inline-flex;align-items:center}",
|
|
256
|
+
".aimeat-auth-compact{display:none;align-items:center;gap:7px;padding:5px 11px 5px 9px;cursor:pointer;",
|
|
257
|
+
"background:linear-gradient(160deg,#3d2e1a 0%,#6b4c2a 15%,#c9a84c 30%,#f5e6a3 45%,#c9a84c 55%,#8b6914 70%,#4a3520 100%);",
|
|
258
|
+
"border:1px solid rgba(201,168,76,.6);border-top-color:rgba(245,230,163,.5);border-bottom-color:rgba(75,53,32,.8);",
|
|
259
|
+
"border-radius:10px;box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 3px 10px rgba(0,0,0,.4);",
|
|
260
|
+
"font-family:system-ui;font-size:13px;color:#2a1800;text-shadow:0 1px 0 rgba(245,230,163,.5)}",
|
|
261
|
+
".aimeat-auth-compact .cdot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;",
|
|
262
|
+
"background:radial-gradient(circle at 35% 35%,#b0ffc8,#00c853 40%,#00802e 80%,#003d15);box-shadow:0 0 5px rgba(0,200,83,.6)}",
|
|
263
|
+
".aimeat-auth-compact .cini{font-weight:800;letter-spacing:.3px;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}",
|
|
264
|
+
".aimeat-auth-compact .ccar{font-size:9px;opacity:.75;transition:transform .18s}",
|
|
265
|
+
".aimeat-auth-wrap.aimeat-open .aimeat-auth-compact .ccar{transform:rotate(180deg)}",
|
|
266
|
+
"@media (max-width:600px){",
|
|
267
|
+
".aimeat-auth-compact{display:inline-flex}",
|
|
268
|
+
".aimeat-auth-wrap>.aimeat-auth-pill{position:absolute;top:calc(100% + 8px);right:0;z-index:1000;",
|
|
269
|
+
"display:none!important;flex-wrap:wrap!important;justify-content:flex-start;row-gap:9px;",
|
|
270
|
+
"min-width:210px;max-width:calc(100vw - 24px)}",
|
|
271
|
+
".aimeat-auth-wrap.aimeat-open>.aimeat-auth-pill{display:flex!important}",
|
|
272
|
+
"}"
|
|
273
|
+
].join("");
|
|
274
|
+
(document.head || document.documentElement).appendChild(st);
|
|
275
|
+
}
|
|
276
|
+
function pillInitials(s) {
|
|
277
|
+
s = (s || "").trim();
|
|
278
|
+
if (!s) return "•";
|
|
279
|
+
s = s.split("@")[0].split("#")[0].trim();
|
|
280
|
+
var parts = s.split(/\s+/).filter(Boolean);
|
|
281
|
+
if (parts.length >= 2) return (parts[0].charAt(0) + parts[1].charAt(0)).toUpperCase();
|
|
282
|
+
return s.slice(0, 2).toUpperCase();
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// src/static/sdk-libs/auth/i18n.js
|
|
286
|
+
var MODAL_LANG_KEY = "aimeat-lang";
|
|
287
|
+
function currentModalLang() {
|
|
288
|
+
try {
|
|
289
|
+
var u = new URLSearchParams(location.search).get("lang");
|
|
290
|
+
if (u === "en" || u === "fi") return u;
|
|
291
|
+
var s = localStorage.getItem(MODAL_LANG_KEY);
|
|
292
|
+
if (s === "en" || s === "fi") return s;
|
|
293
|
+
} catch {
|
|
294
|
+
}
|
|
295
|
+
return (navigator.language || "en").slice(0, 2).toLowerCase() === "fi" ? "fi" : "en";
|
|
296
|
+
}
|
|
297
|
+
function flattenModalI18n(obj, prefix, out) {
|
|
298
|
+
out = out || {};
|
|
299
|
+
prefix = prefix || "";
|
|
300
|
+
for (var k in obj) {
|
|
301
|
+
if (!Object.prototype.hasOwnProperty.call(obj, k)) continue;
|
|
302
|
+
var key = prefix ? prefix + "." + k : k;
|
|
303
|
+
var v = obj[k];
|
|
304
|
+
if (v && typeof v === "object" && !Array.isArray(v)) flattenModalI18n(v, key, out);
|
|
305
|
+
else out[key] = v;
|
|
306
|
+
}
|
|
307
|
+
return out;
|
|
308
|
+
}
|
|
309
|
+
async function loadModalI18n(lang) {
|
|
310
|
+
var v = Date.now();
|
|
311
|
+
var t = {};
|
|
312
|
+
try {
|
|
313
|
+
var enRes = await fetch(NODE_URL + "/locales/en.json?v=" + v);
|
|
314
|
+
if (enRes.ok) t = flattenModalI18n(await enRes.json());
|
|
315
|
+
} catch {
|
|
316
|
+
}
|
|
317
|
+
if (lang !== "en") {
|
|
318
|
+
try {
|
|
319
|
+
var locRes = await fetch(NODE_URL + "/locales/" + lang + ".json?v=" + v);
|
|
320
|
+
if (locRes.ok) {
|
|
321
|
+
var loc = flattenModalI18n(await locRes.json());
|
|
322
|
+
for (var lk in loc) if (Object.prototype.hasOwnProperty.call(loc, lk)) t[lk] = loc[lk];
|
|
323
|
+
}
|
|
324
|
+
} catch {
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
var out = {};
|
|
328
|
+
for (var k in t) {
|
|
329
|
+
if (Object.prototype.hasOwnProperty.call(t, k) && k.indexOf("modal.") === 0) out[k.slice(6)] = t[k];
|
|
330
|
+
}
|
|
331
|
+
return out;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// src/static/sdk-libs/auth/modal.js
|
|
335
|
+
function showLoginModal(opts, renderBtn) {
|
|
336
|
+
var i = opts.i18n || {};
|
|
337
|
+
var lang = currentModalLang();
|
|
338
|
+
const old = document.getElementById("aimeat-modal");
|
|
339
|
+
if (old) old.remove();
|
|
340
|
+
const modal = document.createElement("div");
|
|
341
|
+
modal.id = "aimeat-modal";
|
|
342
|
+
function captureInputs() {
|
|
343
|
+
var g = function(id) {
|
|
344
|
+
var el = (
|
|
345
|
+
/** @type {any} */
|
|
346
|
+
document.getElementById(id)
|
|
347
|
+
);
|
|
348
|
+
return el ? el.value : "";
|
|
349
|
+
};
|
|
350
|
+
return { u: g("aimeat-username"), p: g("aimeat-password"), d: g("aimeat-displayname") };
|
|
351
|
+
}
|
|
352
|
+
function restoreInputs(vals) {
|
|
353
|
+
var s = function(id, val) {
|
|
354
|
+
var el = (
|
|
355
|
+
/** @type {any} */
|
|
356
|
+
document.getElementById(id)
|
|
357
|
+
);
|
|
358
|
+
if (el && val) el.value = val;
|
|
359
|
+
};
|
|
360
|
+
s("aimeat-username", vals.u);
|
|
361
|
+
s("aimeat-password", vals.p);
|
|
362
|
+
s("aimeat-displayname", vals.d);
|
|
363
|
+
}
|
|
364
|
+
function switchLang(next) {
|
|
365
|
+
if (next === lang) return;
|
|
366
|
+
try {
|
|
367
|
+
localStorage.setItem(MODAL_LANG_KEY, next);
|
|
368
|
+
document.cookie = "aimeat-lang=" + next + ";path=/;max-age=31536000;SameSite=Lax";
|
|
369
|
+
} catch {
|
|
370
|
+
}
|
|
371
|
+
var vals = captureInputs();
|
|
372
|
+
loadModalI18n(next).then(function(fresh) {
|
|
373
|
+
lang = next;
|
|
374
|
+
if (fresh && Object.keys(fresh).length) i = fresh;
|
|
375
|
+
render(false);
|
|
376
|
+
restoreInputs(vals);
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
function render(anim) {
|
|
380
|
+
modal.innerHTML = buildModalInner(i, lang, anim);
|
|
381
|
+
wireModal();
|
|
382
|
+
}
|
|
383
|
+
document.body.appendChild(modal);
|
|
384
|
+
render(true);
|
|
385
|
+
loadModalI18n(lang).then(function(fresh) {
|
|
386
|
+
if (!fresh || !Object.keys(fresh).length) return;
|
|
387
|
+
if (fresh.signInBtn === i.signInBtn && fresh.descNew === i.descNew) return;
|
|
388
|
+
var vals = captureInputs();
|
|
389
|
+
i = fresh;
|
|
390
|
+
render(false);
|
|
391
|
+
restoreInputs(vals);
|
|
392
|
+
});
|
|
393
|
+
function buildModalInner(i2, lang2, anim) {
|
|
394
|
+
return '<style>.aimeat-inp{width:100%;padding:11px 14px;border:1.5px solid #E5E7EB;border-radius:10px;font-family:DM Sans,system-ui,sans-serif;font-size:15px;color:#1A1A2E;background:#FAFAF8;box-sizing:border-box;transition:all .15s;outline:none}.aimeat-inp:focus{border-color:#E8564A;box-shadow:0 0 0 3px rgba(232,86,74,.1)}.aimeat-inp::placeholder{color:#9CA3AF}.aimeat-go{flex:1;padding:12px;background:linear-gradient(135deg,#E8564A,#D4493F);color:#fff;border:none;border-radius:10px;cursor:pointer;font-weight:700;font-size:15px;font-family:DM Sans,system-ui,sans-serif;box-shadow:0 2px 8px rgba(232,86,74,.25);transition:transform .15s,box-shadow .15s}.aimeat-go:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(232,86,74,.35)}.aimeat-label{display:block;margin-bottom:5px;font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:#6B7280}.aimeat-cancel{padding:12px 20px;background:none;color:#1A1A2E;border:1px solid #E5E7EB;border-radius:10px;cursor:pointer;font-size:15px;font-weight:500;font-family:DM Sans,system-ui,sans-serif;transition:background .15s}.aimeat-cancel:hover{background:#F3F4F6}.aimeat-fi{width:20px;height:20px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;margin-top:1px}.aimeat-langsw{position:absolute;top:24px;right:28px;display:flex;gap:5px}.aimeat-lang{padding:4px 9px;border:1px solid #E5E7EB;background:#fff;color:#6B7280;border-radius:7px;cursor:pointer;font-size:11px;font-weight:700;letter-spacing:.4px;line-height:1;font-family:DM Sans,system-ui,sans-serif;transition:all .15s}.aimeat-lang:hover{border-color:#E8564A;color:#E8564A}.aimeat-lang.active{background:#E8564A;color:#fff;border-color:#E8564A;cursor:default}@keyframes aimeatModalIn{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}</style><div style="position:fixed;inset:0;background:rgba(26,26,46,.4);backdrop-filter:blur(8px);display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;z-index:99999;font-family:DM Sans,system-ui,sans-serif;padding:24px"><div style="background:#FFFFFF;border-radius:16px;max-width:420px;width:100%;margin:auto;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.15),0 0 0 1px rgba(0,0,0,.05);' + (anim ? "animation:aimeatModalIn .3s ease" : "") + '"><div style="padding:28px 32px 0;position:relative"><div class="aimeat-langsw"><button type="button" class="aimeat-lang' + (lang2 === "en" ? " active" : "") + '" data-lang="en">EN</button><button type="button" class="aimeat-lang' + (lang2 === "fi" ? " active" : "") + '" data-lang="fi">FI</button></div><h2 style="margin:0;font-size:22px;font-weight:800;display:flex;align-items:center;gap:8px;color:#1A1A2E">AIME <span style="width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,#E8564A,#D4493F);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:14px">♥</span> AT Sign In</h2><p style="margin:8px 0 0;font-size:14px;color:#6B7280;line-height:1.5">' + escHtml(i2.descNew || "New? Pick a username and password to create an account.") + " " + escHtml(i2.descReturning || "Already have an account? Enter your username and password.") + '</p></div><div id="aimeat-modal-body" style="padding:24px 32px"><div style="margin-bottom:14px"><label class="aimeat-label">' + escHtml(i2.usernameLabel || "Username") + '</label><input id="aimeat-username" class="aimeat-inp" placeholder="' + escHtml(i2.usernamePlaceholder || "Username") + '"></div><div style="margin-bottom:14px"><label class="aimeat-label">' + escHtml(i2.passwordLabel || "Password") + '</label><input id="aimeat-password" type="password" class="aimeat-inp" placeholder="' + escHtml(i2.passwordPlaceholder || "Password (min 4 chars)") + '"></div><div style="margin-bottom:14px"><label class="aimeat-label">' + escHtml(i2.displayNameLabel || "Display Name") + ' <span style="font-weight:400;text-transform:none;letter-spacing:0">(' + escHtml(i2.displayNameHint || "optional, for new accounts") + ')</span></label><input id="aimeat-displayname" class="aimeat-inp" placeholder="' + escHtml(i2.displayNamePlaceholder || "Display Name") + '"></div><div style="display:flex;gap:10px;margin-top:20px"><button id="aimeat-go-btn" class="aimeat-go">' + escHtml(i2.signInBtn || "Sign In / Register") + '</button><button id="aimeat-cancel-btn" class="aimeat-cancel">' + escHtml(i2.cancelBtn || "Cancel") + '</button></div><p id="aimeat-error" style="margin:8px 0 0;font-size:13px;color:#ef4444;display:none"></p>' + (AUTH_PROVIDERS.length ? '<div style="display:flex;align-items:center;gap:12px;margin:18px 0 14px;color:#9CA3AF;font-size:12px;font-weight:600;letter-spacing:.5px"><span style="flex:1;height:1px;background:#E5E7EB"></span>' + escHtml(i2.orLabel || "OR") + '<span style="flex:1;height:1px;background:#E5E7EB"></span></div>' + AUTH_PROVIDERS.map(function(p) {
|
|
395
|
+
return '<button type="button" class="aimeat-oauth-btn" data-provider="' + escHtml(p.id) + '" style="width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:11px;margin-bottom:8px;background:#fff;color:#1A1A2E;border:1.5px solid #E5E7EB;border-radius:10px;cursor:pointer;font-weight:600;font-size:15px;font-family:DM Sans,system-ui,sans-serif;transition:background .15s,border-color .15s">' + (PROVIDER_ICONS[p.id] || "") + escHtml(i2[p.i18nKey] || p.label) + "</button>";
|
|
396
|
+
}).join("") : "") + '<div style="margin-top:14px;display:flex;gap:16px"><a href="#" id="aimeat-forgot-pw" style="font-size:13px;color:#6B7280;cursor:pointer;text-decoration:underline">' + escHtml(i2.forgotPassword || "Forgot password?") + '</a><a href="#" id="aimeat-forgot-user" style="font-size:13px;color:#6B7280;cursor:pointer;text-decoration:underline">' + escHtml(i2.forgotUsername || "Forgot username?") + '</a></div></div><div id="aimeat-forgot-pw-view" style="padding:24px 32px;display:none"><div id="aimeat-fpw-step1"><h3 style="margin:0 0 8px;font-size:17px;font-weight:700;color:#1A1A2E">' + escHtml(i2.resetPasswordTitle || "Reset Password") + '</h3><p style="font-size:13px;color:#6B7280;margin-bottom:14px">' + escHtml(i2.resetPasswordDesc || "Enter your username to receive a reset code by email.") + '</p><div style="margin-bottom:14px"><label class="aimeat-label">' + escHtml(i2.usernameLabel || "Username") + '</label><input id="aimeat-fpw-username" class="aimeat-inp" placeholder="' + escHtml(i2.usernamePlaceholder || "Username") + '"></div><div style="display:flex;gap:10px"><button id="aimeat-fpw-send" class="aimeat-go">' + escHtml(i2.sendResetCode || "Send Reset Code") + '</button><button id="aimeat-fpw-back" class="aimeat-cancel">' + escHtml(i2.backToLogin || "Back to Login") + '</button></div><p id="aimeat-fpw-msg" style="margin:8px 0 0;font-size:13px;color:#22C55E;display:none"></p><p id="aimeat-fpw-err" style="margin:8px 0 0;font-size:13px;color:#ef4444;display:none"></p></div><div id="aimeat-fpw-step2" style="display:none"><h3 style="margin:0 0 8px;font-size:17px;font-weight:700;color:#1A1A2E">' + escHtml(i2.enterNewPasswordTitle || "Enter New Password") + '</h3><p style="font-size:13px;color:#6B7280;margin-bottom:14px">' + escHtml(i2.resetCodeSent || "A reset code was sent to your email. Enter it below with your new password.") + '</p><div style="margin-bottom:14px"><label class="aimeat-label">' + escHtml(i2.codeLabel || "Reset Code") + '</label><input id="aimeat-fpw-code" class="aimeat-inp" placeholder="123456" maxlength="6"></div><div style="margin-bottom:14px"><label class="aimeat-label">' + escHtml(i2.newPasswordLabel || "New Password") + '</label><input id="aimeat-fpw-newpass" type="password" class="aimeat-inp" placeholder="' + escHtml(i2.newPasswordPlaceholder || "New password (min 8 chars)") + '"></div><div style="display:flex;gap:10px"><button id="aimeat-fpw-reset" class="aimeat-go">' + escHtml(i2.resetPassword || "Reset Password") + '</button><button id="aimeat-fpw-back2" class="aimeat-cancel">' + escHtml(i2.backToLogin || "Back to Login") + '</button></div><p id="aimeat-fpw-msg2" style="margin:8px 0 0;font-size:13px;color:#22C55E;display:none"></p><p id="aimeat-fpw-err2" style="margin:8px 0 0;font-size:13px;color:#ef4444;display:none"></p></div></div><div id="aimeat-forgot-user-view" style="padding:24px 32px;display:none"><h3 style="margin:0 0 8px;font-size:17px;font-weight:700;color:#1A1A2E">' + escHtml(i2.recoverUsernameTitle || "Recover Username") + '</h3><p style="font-size:13px;color:#6B7280;margin-bottom:14px">' + escHtml(i2.recoverUsernameDesc || "Enter the email address associated with your account.") + '</p><div style="margin-bottom:14px"><label class="aimeat-label">' + escHtml(i2.emailLabel || "Email") + '</label><input id="aimeat-fu-email" class="aimeat-inp" type="email" placeholder="you@example.com"></div><div style="display:flex;gap:10px"><button id="aimeat-fu-send" class="aimeat-go">' + escHtml(i2.sendUsername || "Send My Username") + '</button><button id="aimeat-fu-back" class="aimeat-cancel">' + escHtml(i2.backToLogin || "Back to Login") + '</button></div><p id="aimeat-fu-msg" style="margin:8px 0 0;font-size:13px;color:#22C55E;display:none"></p></div><div id="aimeat-email-view" style="padding:24px 32px;display:none"><div id="aimeat-em-step1"><h3 style="margin:0 0 8px;font-size:17px;font-weight:700;color:#1A1A2E">' + escHtml(i2.completeAccountTitle || "One last step") + '</h3><p style="font-size:13px;color:#6B7280;margin-bottom:14px">' + escHtml(i2.completeAccountDesc || "Add an email to finish setting up your account. We’ll send a verification code to confirm it.") + '</p><div style="margin-bottom:14px"><label class="aimeat-label">' + escHtml(i2.emailLabel || "Email") + '</label><input id="aimeat-em-email" class="aimeat-inp" type="email" placeholder="you@example.com"></div><div style="display:flex;gap:10px"><button id="aimeat-em-send" class="aimeat-go">' + escHtml(i2.sendVerificationCode || "Send Verification Code") + '</button><button id="aimeat-em-back" class="aimeat-cancel">' + escHtml(i2.backToLogin || "Back to Login") + '</button></div><p id="aimeat-em-err" style="margin:8px 0 0;font-size:13px;color:#ef4444;display:none"></p></div><div id="aimeat-em-step2" style="display:none"><h3 style="margin:0 0 8px;font-size:17px;font-weight:700;color:#1A1A2E">' + escHtml(i2.enterCodeTitle || "Enter Verification Code") + '</h3><p style="font-size:13px;color:#6B7280;margin-bottom:14px">' + escHtml(i2.enterCodeDesc || "We sent a 6-digit code to your email. Enter it below to finish and sign in.") + '</p><div style="margin-bottom:14px"><label class="aimeat-label">' + escHtml(i2.codeLabel || "Verification Code") + '</label><input id="aimeat-em-code" class="aimeat-inp" placeholder="123456" maxlength="6" inputmode="numeric"></div><div style="display:flex;gap:10px"><button id="aimeat-em-confirm" class="aimeat-go">' + escHtml(i2.confirmAndSignIn || "Confirm & Sign In") + '</button><button id="aimeat-em-back2" class="aimeat-cancel">' + escHtml(i2.backToLogin || "Back to Login") + '</button></div><p id="aimeat-em-msg2" style="margin:8px 0 0;font-size:13px;color:#22C55E;display:none"></p><p id="aimeat-em-err2" style="margin:8px 0 0;font-size:13px;color:#ef4444;display:none"></p></div></div><div style="padding:20px 32px 28px;background:#F9FAFB;border-top:1px solid #E5E7EB"><h4 style="margin:0 0 12px;font-size:13px;font-weight:700;color:#1A1A2E;display:flex;align-items:center;gap:6px">✨ ' + escHtml(i2.whyTitle || "What do you get?") + '</h4><div style="display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:#6B7280;margin-bottom:8px;line-height:1.45"><div class="aimeat-fi" style="background:#FFF1F0;color:#E8564A">♥</div><span>' + escHtml(i2.whyGhii || "A free GHII (Global Human Intelligence Identifier), your personal AI identity") + '</span></div><div style="display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:#6B7280;margin-bottom:8px;line-height:1.45"><div class="aimeat-fi" style="background:#EFF6FF;color:#3B82F6">🔒</div><span>' + escHtml(i2.whyPrivacy || "Your own private memory space, protected by your password") + '</span></div><div style="display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:#6B7280;margin-bottom:8px;line-height:1.45"><div class="aimeat-fi" style="background:#F0FDF4;color:#22C55E">🤖</div><span>' + escHtml(i2.whyAgents || "Connect AI agents that remember you and work on your behalf") + '</span></div><div style="display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:#6B7280;line-height:1.45"><div class="aimeat-fi" style="background:#FFF1F0;color:#E8564A">♥</div><span><strong>' + escHtml(i2.whyMorsels || "Your own AI-built apps and agents work for you — a digital agency under your own roof.") + "</strong></span></div></div></div></div>";
|
|
397
|
+
}
|
|
398
|
+
function wireModal() {
|
|
399
|
+
modal.querySelectorAll(".aimeat-lang").forEach(function(b) {
|
|
400
|
+
b.addEventListener("click", function() {
|
|
401
|
+
switchLang(b.getAttribute("data-lang"));
|
|
402
|
+
});
|
|
403
|
+
});
|
|
404
|
+
document.getElementById("aimeat-cancel-btn").addEventListener("click", () => modal.remove());
|
|
405
|
+
modal.querySelectorAll(".aimeat-oauth-btn").forEach(function(btn) {
|
|
406
|
+
btn.addEventListener("click", function() {
|
|
407
|
+
var id = btn.getAttribute("data-provider");
|
|
408
|
+
var back = encodeURIComponent(location.pathname + location.search + location.hash);
|
|
409
|
+
location.href = NODE_URL + "/v1/ghii/login/" + id + "?redirect=" + back;
|
|
410
|
+
});
|
|
411
|
+
});
|
|
412
|
+
function showView(view) {
|
|
413
|
+
document.getElementById("aimeat-modal-body").style.display = view === "login" ? "" : "none";
|
|
414
|
+
document.getElementById("aimeat-forgot-pw-view").style.display = view === "forgot-pw" ? "" : "none";
|
|
415
|
+
document.getElementById("aimeat-forgot-user-view").style.display = view === "forgot-user" ? "" : "none";
|
|
416
|
+
document.getElementById("aimeat-email-view").style.display = view === "email" ? "" : "none";
|
|
417
|
+
}
|
|
418
|
+
var pendingEmailLogin = null;
|
|
419
|
+
function openEmailCompletion(user, pass, hasEmail, mode, displayName) {
|
|
420
|
+
pendingEmailLogin = { username: user, password: pass, mode: mode || "attach", displayName: displayName || user };
|
|
421
|
+
showView("email");
|
|
422
|
+
document.getElementById("aimeat-em-step1").style.display = "";
|
|
423
|
+
document.getElementById("aimeat-em-step2").style.display = "none";
|
|
424
|
+
var emailInput = (
|
|
425
|
+
/** @type {any} */
|
|
426
|
+
document.getElementById("aimeat-em-email")
|
|
427
|
+
);
|
|
428
|
+
emailInput.value = "";
|
|
429
|
+
var titleEl = document.querySelector("#aimeat-em-step1 h3");
|
|
430
|
+
var desc = document.querySelector("#aimeat-em-step1 p");
|
|
431
|
+
if (pendingEmailLogin.mode === "register") {
|
|
432
|
+
if (titleEl) titleEl.textContent = i.registerEmailTitle || "Add your email";
|
|
433
|
+
if (desc) desc.textContent = i.registerEmailDesc || "Enter your email to create your account. We’ll send a verification code to confirm it.";
|
|
434
|
+
} else {
|
|
435
|
+
if (titleEl) titleEl.textContent = i.completeAccountTitle || "One last step";
|
|
436
|
+
if (desc) {
|
|
437
|
+
desc.textContent = hasEmail ? i.completeAccountDescResend || "Confirm your email to finish signing in. We’ll send a verification code — edit the address if it’s wrong." : i.completeAccountDesc || "Add an email to finish setting up your account. We’ll send a verification code to confirm it.";
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
document.getElementById("aimeat-em-err").style.display = "none";
|
|
441
|
+
setTimeout(function() {
|
|
442
|
+
emailInput.focus();
|
|
443
|
+
}, 50);
|
|
444
|
+
}
|
|
445
|
+
document.getElementById("aimeat-forgot-pw").addEventListener("click", function(e) {
|
|
446
|
+
e.preventDefault();
|
|
447
|
+
showView("forgot-pw");
|
|
448
|
+
document.getElementById("aimeat-fpw-step1").style.display = "";
|
|
449
|
+
document.getElementById("aimeat-fpw-step2").style.display = "none";
|
|
450
|
+
});
|
|
451
|
+
document.getElementById("aimeat-forgot-user").addEventListener("click", function(e) {
|
|
452
|
+
e.preventDefault();
|
|
453
|
+
showView("forgot-user");
|
|
454
|
+
});
|
|
455
|
+
["aimeat-fpw-back", "aimeat-fpw-back2", "aimeat-fu-back", "aimeat-em-back", "aimeat-em-back2"].forEach(function(id) {
|
|
456
|
+
document.getElementById(id).addEventListener("click", function() {
|
|
457
|
+
showView("login");
|
|
458
|
+
});
|
|
459
|
+
});
|
|
460
|
+
document.getElementById("aimeat-em-send").addEventListener("click", async function() {
|
|
461
|
+
var email = (
|
|
462
|
+
/** @type {any} */
|
|
463
|
+
document.getElementById("aimeat-em-email").value.trim()
|
|
464
|
+
);
|
|
465
|
+
var errEl = document.getElementById("aimeat-em-err");
|
|
466
|
+
errEl.style.display = "none";
|
|
467
|
+
if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
468
|
+
errEl.textContent = i.errEmailInvalid || "Please enter a valid email address.";
|
|
469
|
+
errEl.style.display = "block";
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
if (!pendingEmailLogin) {
|
|
473
|
+
showView("login");
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
var btn = (
|
|
477
|
+
/** @type {any} */
|
|
478
|
+
document.getElementById("aimeat-em-send")
|
|
479
|
+
);
|
|
480
|
+
btn.textContent = i.working || "Working...";
|
|
481
|
+
btn.disabled = true;
|
|
482
|
+
try {
|
|
483
|
+
var res;
|
|
484
|
+
if (pendingEmailLogin.mode === "register") {
|
|
485
|
+
res = await api("/v1/ghii", {
|
|
486
|
+
method: "POST",
|
|
487
|
+
credentials: "include",
|
|
488
|
+
body: JSON.stringify({
|
|
489
|
+
username: pendingEmailLogin.username,
|
|
490
|
+
display_name: pendingEmailLogin.displayName,
|
|
491
|
+
password: pendingEmailLogin.password,
|
|
492
|
+
email
|
|
493
|
+
})
|
|
494
|
+
});
|
|
495
|
+
} else {
|
|
496
|
+
res = await api("/v1/ghii/login/attach-email", {
|
|
497
|
+
method: "POST",
|
|
498
|
+
body: JSON.stringify({ username: pendingEmailLogin.username, password: pendingEmailLogin.password, email })
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
pendingEmailLogin.verificationId = res.data && res.data.verification_id;
|
|
502
|
+
document.getElementById("aimeat-em-step1").style.display = "none";
|
|
503
|
+
document.getElementById("aimeat-em-step2").style.display = "";
|
|
504
|
+
setTimeout(function() {
|
|
505
|
+
document.getElementById("aimeat-em-code").focus();
|
|
506
|
+
}, 50);
|
|
507
|
+
} catch (e) {
|
|
508
|
+
errEl.textContent = e.message;
|
|
509
|
+
errEl.style.display = "block";
|
|
510
|
+
} finally {
|
|
511
|
+
btn.textContent = i.sendVerificationCode || "Send Verification Code";
|
|
512
|
+
btn.disabled = false;
|
|
513
|
+
}
|
|
514
|
+
});
|
|
515
|
+
document.getElementById("aimeat-em-confirm").addEventListener("click", async function() {
|
|
516
|
+
var code = (
|
|
517
|
+
/** @type {any} */
|
|
518
|
+
document.getElementById("aimeat-em-code").value.trim()
|
|
519
|
+
);
|
|
520
|
+
var msgEl = document.getElementById("aimeat-em-msg2");
|
|
521
|
+
var errEl = document.getElementById("aimeat-em-err2");
|
|
522
|
+
msgEl.style.display = "none";
|
|
523
|
+
errEl.style.display = "none";
|
|
524
|
+
if (!code) {
|
|
525
|
+
errEl.textContent = i.errCodeRequired || "Enter the verification code.";
|
|
526
|
+
errEl.style.display = "block";
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
if (!pendingEmailLogin) {
|
|
530
|
+
showView("login");
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
533
|
+
var btn = (
|
|
534
|
+
/** @type {any} */
|
|
535
|
+
document.getElementById("aimeat-em-confirm")
|
|
536
|
+
);
|
|
537
|
+
btn.textContent = i.working || "Working...";
|
|
538
|
+
btn.disabled = true;
|
|
539
|
+
try {
|
|
540
|
+
await api("/v1/ghii/verify-email", {
|
|
541
|
+
method: "POST",
|
|
542
|
+
body: JSON.stringify({ verification_id: pendingEmailLogin.verificationId, code })
|
|
543
|
+
});
|
|
544
|
+
msgEl.textContent = i.emailVerifiedSigningIn || "Verified! Signing you in...";
|
|
545
|
+
msgEl.style.display = "block";
|
|
546
|
+
var session = await auth.loginWithPassword(pendingEmailLogin.username, pendingEmailLogin.password);
|
|
547
|
+
pendingEmailLogin = null;
|
|
548
|
+
modal.remove();
|
|
549
|
+
renderBtn();
|
|
550
|
+
if (opts.onLogin) opts.onLogin(session);
|
|
551
|
+
} catch (e) {
|
|
552
|
+
errEl.textContent = e.message;
|
|
553
|
+
errEl.style.display = "block";
|
|
554
|
+
btn.textContent = i.confirmAndSignIn || "Confirm & Sign In";
|
|
555
|
+
btn.disabled = false;
|
|
556
|
+
}
|
|
557
|
+
});
|
|
558
|
+
document.getElementById("aimeat-fpw-send").addEventListener("click", async function() {
|
|
559
|
+
var username = (
|
|
560
|
+
/** @type {any} */
|
|
561
|
+
document.getElementById("aimeat-fpw-username").value.trim().toLowerCase()
|
|
562
|
+
);
|
|
563
|
+
var msgEl = document.getElementById("aimeat-fpw-msg");
|
|
564
|
+
var errEl = document.getElementById("aimeat-fpw-err");
|
|
565
|
+
msgEl.style.display = "none";
|
|
566
|
+
errEl.style.display = "none";
|
|
567
|
+
if (!username) {
|
|
568
|
+
errEl.textContent = i.errUserShort || "Username is required";
|
|
569
|
+
errEl.style.display = "block";
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
572
|
+
try {
|
|
573
|
+
await api("/v1/ghii/password/reset-request", { method: "POST", body: JSON.stringify({ username }) });
|
|
574
|
+
msgEl.textContent = i.resetCodeSent || "If your account has a verified email, a reset code was sent.";
|
|
575
|
+
msgEl.style.display = "block";
|
|
576
|
+
document.getElementById("aimeat-fpw-step1").style.display = "none";
|
|
577
|
+
document.getElementById("aimeat-fpw-step2").style.display = "";
|
|
578
|
+
window.__aimeatResetUser = username;
|
|
579
|
+
} catch (e) {
|
|
580
|
+
errEl.textContent = e.message;
|
|
581
|
+
errEl.style.display = "block";
|
|
582
|
+
}
|
|
583
|
+
});
|
|
584
|
+
document.getElementById("aimeat-fpw-reset").addEventListener("click", async function() {
|
|
585
|
+
var code = (
|
|
586
|
+
/** @type {any} */
|
|
587
|
+
document.getElementById("aimeat-fpw-code").value.trim()
|
|
588
|
+
);
|
|
589
|
+
var newPass = (
|
|
590
|
+
/** @type {any} */
|
|
591
|
+
document.getElementById("aimeat-fpw-newpass").value
|
|
592
|
+
);
|
|
593
|
+
var msgEl = document.getElementById("aimeat-fpw-msg2");
|
|
594
|
+
var errEl = document.getElementById("aimeat-fpw-err2");
|
|
595
|
+
msgEl.style.display = "none";
|
|
596
|
+
errEl.style.display = "none";
|
|
597
|
+
if (!code) {
|
|
598
|
+
errEl.textContent = "Code is required";
|
|
599
|
+
errEl.style.display = "block";
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
if (!newPass || newPass.length < 8) {
|
|
603
|
+
errEl.textContent = i.errPassWeak || "Password must be at least 8 characters";
|
|
604
|
+
errEl.style.display = "block";
|
|
605
|
+
return;
|
|
606
|
+
}
|
|
607
|
+
try {
|
|
608
|
+
await api("/v1/ghii/password/reset", { method: "POST", body: JSON.stringify({
|
|
609
|
+
username: window.__aimeatResetUser || "",
|
|
610
|
+
code,
|
|
611
|
+
newPassword: newPass
|
|
612
|
+
}) });
|
|
613
|
+
msgEl.textContent = i.resetSuccess || "Password reset successful! You can now sign in.";
|
|
614
|
+
msgEl.style.display = "block";
|
|
615
|
+
setTimeout(function() {
|
|
616
|
+
showView("login");
|
|
617
|
+
}, 2e3);
|
|
618
|
+
} catch (e) {
|
|
619
|
+
errEl.textContent = e.message;
|
|
620
|
+
errEl.style.display = "block";
|
|
621
|
+
}
|
|
622
|
+
});
|
|
623
|
+
document.getElementById("aimeat-fu-send").addEventListener("click", async function() {
|
|
624
|
+
var email = (
|
|
625
|
+
/** @type {any} */
|
|
626
|
+
document.getElementById("aimeat-fu-email").value.trim()
|
|
627
|
+
);
|
|
628
|
+
var msgEl = document.getElementById("aimeat-fu-msg");
|
|
629
|
+
msgEl.style.display = "none";
|
|
630
|
+
if (!email) return;
|
|
631
|
+
try {
|
|
632
|
+
await api("/v1/ghii/account/recover", { method: "POST", body: JSON.stringify({ email }) });
|
|
633
|
+
} catch {
|
|
634
|
+
}
|
|
635
|
+
msgEl.textContent = i.usernameSent || "If an account with that email exists, your username was sent.";
|
|
636
|
+
msgEl.style.display = "block";
|
|
637
|
+
});
|
|
638
|
+
["aimeat-username", "aimeat-password", "aimeat-displayname"].forEach(function(id) {
|
|
639
|
+
var el = document.getElementById(id);
|
|
640
|
+
if (!el) return;
|
|
641
|
+
el.addEventListener("keydown", function(e) {
|
|
642
|
+
if (e.key !== "Enter") return;
|
|
643
|
+
e.preventDefault();
|
|
644
|
+
var btn = (
|
|
645
|
+
/** @type {any} */
|
|
646
|
+
document.getElementById("aimeat-go-btn")
|
|
647
|
+
);
|
|
648
|
+
if (btn && !btn.disabled) btn.click();
|
|
649
|
+
});
|
|
650
|
+
});
|
|
651
|
+
document.getElementById("aimeat-go-btn").addEventListener("click", async () => {
|
|
652
|
+
let username = (
|
|
653
|
+
/** @type {any} */
|
|
654
|
+
document.getElementById("aimeat-username").value.trim().toLowerCase()
|
|
655
|
+
);
|
|
656
|
+
const password = (
|
|
657
|
+
/** @type {any} */
|
|
658
|
+
document.getElementById("aimeat-password").value
|
|
659
|
+
);
|
|
660
|
+
const errEl = document.getElementById("aimeat-error");
|
|
661
|
+
let isGhii = false;
|
|
662
|
+
let isFederated = false;
|
|
663
|
+
let fullUsername = username;
|
|
664
|
+
if (username.includes("@")) {
|
|
665
|
+
const atIdx = username.indexOf("@");
|
|
666
|
+
const nodePart = username.substring(atIdx + 1);
|
|
667
|
+
if (nodePart && nodePart !== NODE_ID) {
|
|
668
|
+
isFederated = true;
|
|
669
|
+
isGhii = true;
|
|
670
|
+
} else {
|
|
671
|
+
username = username.substring(0, atIdx);
|
|
672
|
+
isGhii = true;
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
const displayName = (
|
|
676
|
+
/** @type {any} */
|
|
677
|
+
document.getElementById("aimeat-displayname").value.trim() || username
|
|
678
|
+
);
|
|
679
|
+
if (!username || username.length < 3) {
|
|
680
|
+
errEl.textContent = i.errUserShort || "Username must be at least 3 characters";
|
|
681
|
+
errEl.style.display = "block";
|
|
682
|
+
return;
|
|
683
|
+
}
|
|
684
|
+
if (!password || password.length < 4) {
|
|
685
|
+
errEl.textContent = i.errPassShort || "Password must be at least 4 characters";
|
|
686
|
+
errEl.style.display = "block";
|
|
687
|
+
return;
|
|
688
|
+
}
|
|
689
|
+
const btn = (
|
|
690
|
+
/** @type {any} */
|
|
691
|
+
document.getElementById("aimeat-go-btn")
|
|
692
|
+
);
|
|
693
|
+
btn.textContent = i.working || "Working...";
|
|
694
|
+
btn.disabled = true;
|
|
695
|
+
if (isGhii) {
|
|
696
|
+
try {
|
|
697
|
+
if (isFederated) {
|
|
698
|
+
btn.textContent = i.connectingHome || "Connecting to home node...";
|
|
699
|
+
}
|
|
700
|
+
const loginUser = isFederated ? fullUsername : username;
|
|
701
|
+
const session = await auth.loginWithPassword(loginUser, password);
|
|
702
|
+
modal.remove();
|
|
703
|
+
renderBtn();
|
|
704
|
+
if (opts.onLogin) opts.onLogin(session);
|
|
705
|
+
} catch (e2) {
|
|
706
|
+
if (e2.code === "EMAIL_NOT_VERIFIED" && !isFederated) {
|
|
707
|
+
btn.textContent = i.signInBtn || "Sign In / Register";
|
|
708
|
+
btn.disabled = false;
|
|
709
|
+
openEmailCompletion(username, password, !!(e2.details && e2.details.has_email));
|
|
710
|
+
return;
|
|
711
|
+
}
|
|
712
|
+
errEl.textContent = e2.message.includes("Invalid username or password") ? i.errWrongPass || "Wrong password for that username." : e2.message;
|
|
713
|
+
errEl.style.display = "block";
|
|
714
|
+
btn.textContent = i.signInBtn || "Sign In / Register";
|
|
715
|
+
btn.disabled = false;
|
|
716
|
+
}
|
|
717
|
+
return;
|
|
718
|
+
}
|
|
719
|
+
try {
|
|
720
|
+
const session = await auth.register(username, displayName, { password });
|
|
721
|
+
modal.remove();
|
|
722
|
+
renderBtn();
|
|
723
|
+
if (opts.onLogin) opts.onLogin(session);
|
|
724
|
+
} catch (e) {
|
|
725
|
+
if (e.code === "EMAIL_REQUIRED") {
|
|
726
|
+
btn.textContent = i.signInBtn || "Sign In / Register";
|
|
727
|
+
btn.disabled = false;
|
|
728
|
+
openEmailCompletion(username, password, false, "register", displayName);
|
|
729
|
+
return;
|
|
730
|
+
}
|
|
731
|
+
if (e.message.includes("already registered") || e.message.includes("NAME_TAKEN")) {
|
|
732
|
+
try {
|
|
733
|
+
const session = await auth.loginWithPassword(username, password);
|
|
734
|
+
modal.remove();
|
|
735
|
+
renderBtn();
|
|
736
|
+
if (opts.onLogin) opts.onLogin(session);
|
|
737
|
+
} catch (e2) {
|
|
738
|
+
if (e2.code === "EMAIL_NOT_VERIFIED") {
|
|
739
|
+
btn.textContent = i.signInBtn || "Sign In / Register";
|
|
740
|
+
btn.disabled = false;
|
|
741
|
+
openEmailCompletion(username, password, !!(e2.details && e2.details.has_email));
|
|
742
|
+
return;
|
|
743
|
+
}
|
|
744
|
+
errEl.textContent = e2.message.includes("Invalid username or password") ? i.errWrongPass || "Wrong password for that username." : e2.message;
|
|
745
|
+
errEl.style.display = "block";
|
|
746
|
+
btn.textContent = i.signInBtn || "Sign In";
|
|
747
|
+
btn.disabled = false;
|
|
748
|
+
}
|
|
749
|
+
} else {
|
|
750
|
+
errEl.textContent = e.message;
|
|
751
|
+
errEl.style.display = "block";
|
|
752
|
+
btn.textContent = i.signInBtn || "Sign In / Register";
|
|
753
|
+
btn.disabled = false;
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
});
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// src/static/sdk-libs/auth/pill.js
|
|
761
|
+
function mountPill(auth2, selector, opts = {}) {
|
|
762
|
+
let container;
|
|
763
|
+
if (selector && typeof selector === "object" && selector.nodeType === 1) {
|
|
764
|
+
container = selector;
|
|
765
|
+
} else if (selector && typeof selector === "object") {
|
|
766
|
+
opts = selector;
|
|
767
|
+
container = document.getElementById("aimeat-auth-bar");
|
|
768
|
+
if (!container) {
|
|
769
|
+
container = document.createElement("div");
|
|
770
|
+
container.id = "aimeat-auth-bar";
|
|
771
|
+
document.body.appendChild(container);
|
|
772
|
+
}
|
|
773
|
+
} else {
|
|
774
|
+
container = document.querySelector(selector);
|
|
775
|
+
if (!container) {
|
|
776
|
+
console.error("AIMEAT: mountLoginButton container not found for selector:", selector, "— pass a CSS selector string, a DOM element, or an options object.");
|
|
777
|
+
return;
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
const i = opts.i18n || {};
|
|
781
|
+
const useCompact = opts.compact !== void 0 ? !!opts.compact : isAppOrigin();
|
|
782
|
+
function render() {
|
|
783
|
+
const stored = auth2.getSession() || load("session");
|
|
784
|
+
if (stored) {
|
|
785
|
+
var pillHtml = '<div class="aimeat-auth-pill" style="display:inline-flex;align-items:center;gap:10px;padding:8px 18px;background:linear-gradient(160deg,#3d2e1a 0%,#6b4c2a 15%,#c9a84c 30%,#f5e6a3 45%,#c9a84c 55%,#8b6914 70%,#4a3520 100%);border:1px solid rgba(201,168,76,.6);border-top-color:rgba(245,230,163,.5);border-bottom-color:rgba(75,53,32,.8);border-radius:10px;box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 3px 10px rgba(0,0,0,.4),0 0 20px rgba(201,168,76,.15);font-family:system-ui;font-size:14px"><span class="aimeat-auth-dot" style="display:inline-block;flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#b0ffc8,#00c853 40%,#00802e 80%,#003d15);box-shadow:0 0 5px rgba(0,200,83,.7),0 0 12px rgba(0,200,83,.3),inset 0 -1px 2px rgba(0,0,0,.3)"></span><span class="aimeat-auth-label" style="display:inline-flex;align-items:center;font-size:12px;font-weight:600;letter-spacing:.5px;color:#a0ffb8;text-shadow:0 0 4px rgba(0,210,80,.6),0 0 10px rgba(0,180,70,.3)">' + escHtml(i.loggedIn || "logged in") + '</span><span class="aimeat-auth-ghii" style="color:rgba(90,65,20,.7);font-weight:700;letter-spacing:.5px;font-size:13px;text-shadow:0 1px 0 rgba(245,230,163,.6),0 -1px 0 rgba(50,35,10,.3);-webkit-text-stroke:.2px rgba(120,85,20,.3)">' + escHtml(stored.displayName || stored.ghii || stored.owner) + "</span>" + (stored.federated ? '<span style="display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;letter-spacing:.5px;color:#7dd3fc;background:rgba(56,189,248,.15);padding:2px 6px;border-radius:4px;border:1px solid rgba(56,189,248,.3)">🌐 ' + escHtml(i.federated || "Federated") + "</span>" : "") + (stored._appOrigin && stored._app && !stored._own ? '<button id="aimeat-grant-gear" title="' + escHtml(i.manageAccess || "Manage permissions") + '" aria-label="' + escHtml(i.manageAccess || "Manage permissions") + '" style="background:rgba(90,65,20,.18);color:#5a4114;border:1px solid rgba(120,85,20,.35);border-radius:6px;padding:3px 8px;cursor:pointer;font-size:13px;line-height:1">⚙️</button>' : "") + themeToggleHtml(i) + '<button id="aimeat-logout-btn" class="aimeat-auth-logout" style="background:radial-gradient(ellipse at 50% 30%,#ff6b6b 0%,#dc2626 35%,#991b1b 70%,#7f1d1d 100%);color:#ffd7d7;border:1px solid rgba(220,38,38,.6);border-top-color:rgba(255,130,130,.4);border-bottom-color:rgba(100,20,20,.8);border-radius:6px;padding:3px 10px;cursor:pointer;font-size:11px;font-weight:700;letter-spacing:.3px;box-shadow:0 1px 0 rgba(255,140,140,.25) inset,0 -1px 0 rgba(80,10,10,.4) inset,0 2px 6px rgba(153,27,27,.5);text-shadow:0 1px 1px rgba(0,0,0,.4)">' + escHtml(i.logoutBtn || "Logout") + "</button></div>";
|
|
786
|
+
if (useCompact) {
|
|
787
|
+
ensureAuthPillStyles();
|
|
788
|
+
var ini = pillInitials(stored.displayName || stored.ghii || stored.owner);
|
|
789
|
+
container.innerHTML = '<div class="aimeat-auth-wrap"><button class="aimeat-auth-compact" id="aimeat-auth-compact" aria-haspopup="true" aria-expanded="false" aria-label="' + escHtml(i.account || "Account") + '"><span class="cdot" aria-hidden="true"></span><span class="cini">' + escHtml(ini) + '</span><span class="ccar" aria-hidden="true">▾</span></button>' + pillHtml + "</div>";
|
|
790
|
+
} else {
|
|
791
|
+
container.innerHTML = pillHtml;
|
|
792
|
+
}
|
|
793
|
+
document.getElementById("aimeat-logout-btn").addEventListener("click", () => {
|
|
794
|
+
auth2.logout();
|
|
795
|
+
render();
|
|
796
|
+
if (opts.onLogout) opts.onLogout();
|
|
797
|
+
});
|
|
798
|
+
var gearBtn = document.getElementById("aimeat-grant-gear");
|
|
799
|
+
if (gearBtn) gearBtn.addEventListener("click", () => {
|
|
800
|
+
auth2.manageGrant().then((res) => {
|
|
801
|
+
render();
|
|
802
|
+
if (res && res.revoked && opts.onLogout) opts.onLogout();
|
|
803
|
+
}).catch(() => {
|
|
804
|
+
});
|
|
805
|
+
});
|
|
806
|
+
var compactBtn = document.getElementById("aimeat-auth-compact");
|
|
807
|
+
if (compactBtn) compactBtn.addEventListener("click", (ev) => {
|
|
808
|
+
ev.stopPropagation();
|
|
809
|
+
var w = container.querySelector(".aimeat-auth-wrap");
|
|
810
|
+
if (!w) return;
|
|
811
|
+
var open = w.classList.toggle("aimeat-open");
|
|
812
|
+
compactBtn.setAttribute("aria-expanded", open ? "true" : "false");
|
|
813
|
+
});
|
|
814
|
+
} else {
|
|
815
|
+
container.innerHTML = '<style>.aimeat-sign-btn{padding:8px 18px;background:linear-gradient(160deg,#3d2e1a 0%,#6b4c2a 15%,#c9a84c 30%,#f5e6a3 45%,#c9a84c 55%,#8b6914 70%,#4a3520 100%);color:#2a1800;border:1px solid rgba(201,168,76,.6);border-top-color:rgba(245,230,163,.5);border-bottom-color:rgba(75,53,32,.8);border-radius:10px;cursor:pointer;font-weight:800;font-family:system-ui;font-size:14px;letter-spacing:.3px;box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 3px 10px rgba(0,0,0,.4),0 0 20px rgba(201,168,76,.15);text-shadow:0 1px 0 rgba(245,230,163,.5);transition:transform .15s,box-shadow .15s}.aimeat-sign-btn:hover{transform:translateY(-1px);box-shadow:0 1px 0 rgba(245,230,163,.3) inset,0 -1px 0 rgba(75,53,32,.5) inset,0 5px 16px rgba(0,0,0,.5),0 0 30px rgba(201,168,76,.3)}</style><span style="display:inline-flex;align-items:center;gap:10px">' + themeToggleHtml(i) + '<button id="aimeat-login-btn" class="aimeat-sign-btn">' + (opts.buttonText || i.signInBtn || "❤️ Sign In") + "</button></span>";
|
|
816
|
+
document.getElementById("aimeat-login-btn").addEventListener("click", () => {
|
|
817
|
+
if (isAppOrigin()) {
|
|
818
|
+
restoreSessionFromAppOrigin(true).then((s) => {
|
|
819
|
+
if (s) render();
|
|
820
|
+
}).catch(() => {
|
|
821
|
+
});
|
|
822
|
+
} else {
|
|
823
|
+
showLoginModal(opts, render);
|
|
824
|
+
}
|
|
825
|
+
});
|
|
826
|
+
}
|
|
827
|
+
wireThemeToggle(container, i);
|
|
828
|
+
}
|
|
829
|
+
render();
|
|
830
|
+
if (useCompact) {
|
|
831
|
+
var closeCompact = () => {
|
|
832
|
+
var w = container.querySelector(".aimeat-auth-wrap.aimeat-open");
|
|
833
|
+
if (!w) return;
|
|
834
|
+
w.classList.remove("aimeat-open");
|
|
835
|
+
var cb = w.querySelector(".aimeat-auth-compact");
|
|
836
|
+
if (cb) cb.setAttribute("aria-expanded", "false");
|
|
837
|
+
};
|
|
838
|
+
document.addEventListener("click", (ev) => {
|
|
839
|
+
var w = container.querySelector(".aimeat-auth-wrap.aimeat-open");
|
|
840
|
+
if (w && !w.contains(ev.target)) closeCompact();
|
|
841
|
+
});
|
|
842
|
+
document.addEventListener("keydown", (ev) => {
|
|
843
|
+
if (ev.key === "Escape") closeCompact();
|
|
844
|
+
});
|
|
845
|
+
}
|
|
846
|
+
auth2.on("login", render);
|
|
847
|
+
auth2.on("logout", render);
|
|
848
|
+
auth2.on("session-updated", render);
|
|
849
|
+
if (isAppOrigin() && !auth2.getSession()) {
|
|
850
|
+
restoreSessionFromAppOrigin(false).then((s) => {
|
|
851
|
+
if (!s && load("session")) {
|
|
852
|
+
remove("session");
|
|
853
|
+
emit("logout");
|
|
854
|
+
}
|
|
855
|
+
}).catch(() => {
|
|
856
|
+
});
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
// src/static/sdk-libs/auth/session.js
|
|
861
|
+
var currentSession = null;
|
|
862
|
+
var refreshTimer = null;
|
|
863
|
+
var ownerRefreshInFlight = null;
|
|
864
|
+
var _appOriginLoginInFlight = null;
|
|
865
|
+
var focusRefreshInFlight = null;
|
|
866
|
+
async function api(path, opts = {}) {
|
|
867
|
+
const url = NODE_URL + path;
|
|
868
|
+
const headers = { "Content-Type": "application/json", ...opts.headers };
|
|
869
|
+
const resp = await fetch(url, { ...opts, headers });
|
|
870
|
+
const data = await resp.json();
|
|
871
|
+
if (!data.ok) {
|
|
872
|
+
const err = (
|
|
873
|
+
/** @type {Error & { code?: string, details?: unknown }} */
|
|
874
|
+
new Error(data.error?.message || "API error")
|
|
875
|
+
);
|
|
876
|
+
err.code = data.error?.code;
|
|
877
|
+
err.details = data.error?.details;
|
|
878
|
+
throw err;
|
|
879
|
+
}
|
|
880
|
+
return data;
|
|
881
|
+
}
|
|
882
|
+
function persistSession(session) {
|
|
883
|
+
save("session", {
|
|
884
|
+
owner: session.owner,
|
|
885
|
+
gaii: session.gaii,
|
|
886
|
+
ghii: session.ghii,
|
|
887
|
+
jwt: session.jwt,
|
|
888
|
+
publicKey: session.publicKey,
|
|
889
|
+
roles: session.roles,
|
|
890
|
+
displayName: session.displayName || "",
|
|
891
|
+
federated: session.federated || false,
|
|
892
|
+
homeNode: session.homeNode || "",
|
|
893
|
+
homeUrl: session.homeUrl || "",
|
|
894
|
+
// H-2 app-origin grant session metadata (drives the consent gear on the login pill).
|
|
895
|
+
_appOrigin: session._appOrigin || false,
|
|
896
|
+
_app: session._app || null,
|
|
897
|
+
_own: session._own || false
|
|
898
|
+
});
|
|
899
|
+
}
|
|
900
|
+
async function restoreSessionFromCookie() {
|
|
901
|
+
try {
|
|
902
|
+
const data = await api("/v1/auth/refresh", {
|
|
903
|
+
method: "POST",
|
|
904
|
+
credentials: "include",
|
|
905
|
+
headers: { "X-AIMEAT-Refresh": "1" }
|
|
906
|
+
});
|
|
907
|
+
const token = data && data.data && data.data.token;
|
|
908
|
+
if (!token) return null;
|
|
909
|
+
const payload = parseJwt(token) || {};
|
|
910
|
+
const ownerName = payload.owner || payload.sub;
|
|
911
|
+
if (!ownerName) return null;
|
|
912
|
+
const session = createSession({
|
|
913
|
+
owner: ownerName,
|
|
914
|
+
ghii: String(ownerName).indexOf("@") >= 0 ? ownerName : ownerName + "@" + NODE_ID,
|
|
915
|
+
gaii: null,
|
|
916
|
+
jwt: token,
|
|
917
|
+
roles: payload.roles || [],
|
|
918
|
+
displayName: ""
|
|
919
|
+
});
|
|
920
|
+
persistSession(session);
|
|
921
|
+
currentSession = session;
|
|
922
|
+
scheduleAutoRefresh(session);
|
|
923
|
+
emit("login", session);
|
|
924
|
+
return session;
|
|
925
|
+
} catch {
|
|
926
|
+
return null;
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
function isAppOrigin() {
|
|
930
|
+
try {
|
|
931
|
+
return location.origin !== new URL(APEX_URL).origin;
|
|
932
|
+
} catch {
|
|
933
|
+
return false;
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
function appScopeDrift(session) {
|
|
937
|
+
if (!session || !session._appOrigin || !session.jwt) return [];
|
|
938
|
+
var have = (parseJwt(session.jwt) || {}).scopes || [];
|
|
939
|
+
return appDeclaredScopes().split(" ").filter(function(s) {
|
|
940
|
+
return s && have.indexOf(s) < 0;
|
|
941
|
+
});
|
|
942
|
+
}
|
|
943
|
+
function silentAppToken() {
|
|
944
|
+
return new Promise(function(resolve) {
|
|
945
|
+
var apexOrigin;
|
|
946
|
+
try {
|
|
947
|
+
apexOrigin = new URL(APEX_URL).origin;
|
|
948
|
+
} catch {
|
|
949
|
+
resolve(null);
|
|
950
|
+
return;
|
|
951
|
+
}
|
|
952
|
+
if (location.origin === apexOrigin) {
|
|
953
|
+
resolve(null);
|
|
954
|
+
return;
|
|
955
|
+
}
|
|
956
|
+
var settled = false, iframe = null, timer = null;
|
|
957
|
+
function finish(v) {
|
|
958
|
+
if (settled) return;
|
|
959
|
+
settled = true;
|
|
960
|
+
window.removeEventListener("message", onMsg);
|
|
961
|
+
if (timer) clearTimeout(timer);
|
|
962
|
+
if (iframe && iframe.parentNode) iframe.parentNode.removeChild(iframe);
|
|
963
|
+
resolve(v);
|
|
964
|
+
}
|
|
965
|
+
function onMsg(e) {
|
|
966
|
+
if (e.origin !== apexOrigin) return;
|
|
967
|
+
var d = e.data || {};
|
|
968
|
+
if (d.type !== "aimeat_app_login") return;
|
|
969
|
+
finish(d.result || null);
|
|
970
|
+
}
|
|
971
|
+
window.addEventListener("message", onMsg);
|
|
972
|
+
iframe = document.createElement("iframe");
|
|
973
|
+
iframe.style.display = "none";
|
|
974
|
+
iframe.setAttribute("aria-hidden", "true");
|
|
975
|
+
iframe.src = apexOrigin + "/app-silent.html?scope=" + encodeURIComponent(appDeclaredScopes());
|
|
976
|
+
(document.body || document.documentElement).appendChild(iframe);
|
|
977
|
+
timer = setTimeout(function() {
|
|
978
|
+
finish(null);
|
|
979
|
+
}, 8e3);
|
|
980
|
+
});
|
|
981
|
+
}
|
|
982
|
+
function apexLogout() {
|
|
983
|
+
return new Promise(function(resolve) {
|
|
984
|
+
var apexOrigin;
|
|
985
|
+
try {
|
|
986
|
+
apexOrigin = new URL(APEX_URL).origin;
|
|
987
|
+
} catch {
|
|
988
|
+
resolve(false);
|
|
989
|
+
return;
|
|
990
|
+
}
|
|
991
|
+
if (location.origin === apexOrigin) {
|
|
992
|
+
resolve(false);
|
|
993
|
+
return;
|
|
994
|
+
}
|
|
995
|
+
var settled = false, iframe = null, timer = null;
|
|
996
|
+
function finish(v) {
|
|
997
|
+
if (settled) return;
|
|
998
|
+
settled = true;
|
|
999
|
+
window.removeEventListener("message", onMsg);
|
|
1000
|
+
if (timer) clearTimeout(timer);
|
|
1001
|
+
if (iframe && iframe.parentNode) iframe.parentNode.removeChild(iframe);
|
|
1002
|
+
resolve(v);
|
|
1003
|
+
}
|
|
1004
|
+
function onMsg(e) {
|
|
1005
|
+
if (e.origin !== apexOrigin) return;
|
|
1006
|
+
var d = e.data || {};
|
|
1007
|
+
if (d.type !== "aimeat_app_logout") return;
|
|
1008
|
+
finish(!!(d.result && d.result.ok));
|
|
1009
|
+
}
|
|
1010
|
+
window.addEventListener("message", onMsg);
|
|
1011
|
+
iframe = document.createElement("iframe");
|
|
1012
|
+
iframe.style.display = "none";
|
|
1013
|
+
iframe.setAttribute("aria-hidden", "true");
|
|
1014
|
+
iframe.src = apexOrigin + "/app-silent.html?mode=logout";
|
|
1015
|
+
(document.body || document.documentElement).appendChild(iframe);
|
|
1016
|
+
timer = setTimeout(function() {
|
|
1017
|
+
finish(false);
|
|
1018
|
+
}, 8e3);
|
|
1019
|
+
});
|
|
1020
|
+
}
|
|
1021
|
+
function _b64url(buf) {
|
|
1022
|
+
var bytes = new Uint8Array(buf), s = "";
|
|
1023
|
+
for (var i = 0; i < bytes.length; i++) s += String.fromCharCode(bytes[i]);
|
|
1024
|
+
return btoa(s).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
1025
|
+
}
|
|
1026
|
+
async function _pkce() {
|
|
1027
|
+
var verifier = _b64url(crypto.getRandomValues(new Uint8Array(32)).buffer);
|
|
1028
|
+
if (crypto.subtle && crypto.subtle.digest) {
|
|
1029
|
+
var digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(verifier));
|
|
1030
|
+
return { verifier, challenge: _b64url(digest), method: "S256" };
|
|
1031
|
+
}
|
|
1032
|
+
return { verifier, challenge: verifier, method: "plain" };
|
|
1033
|
+
}
|
|
1034
|
+
async function requestConsentPopup(app, scopeStr, manage) {
|
|
1035
|
+
var apexOrigin;
|
|
1036
|
+
try {
|
|
1037
|
+
apexOrigin = new URL(APEX_URL).origin;
|
|
1038
|
+
} catch {
|
|
1039
|
+
return null;
|
|
1040
|
+
}
|
|
1041
|
+
var p = await _pkce();
|
|
1042
|
+
var state = _b64url(crypto.getRandomValues(new Uint8Array(16)).buffer);
|
|
1043
|
+
var redirectUri = location.origin + "/";
|
|
1044
|
+
var scope = scopeStr || appDeclaredScopes();
|
|
1045
|
+
var url = apexOrigin + "/v1/app-grants/authorize?response_type=code&response_mode=web_message" + (manage ? "&manage=1" : "") + "&app=" + encodeURIComponent(app) + "&scope=" + encodeURIComponent(scope) + "&redirect_uri=" + encodeURIComponent(redirectUri) + "&code_challenge=" + encodeURIComponent(p.challenge) + "&code_challenge_method=" + encodeURIComponent(p.method) + "&state=" + encodeURIComponent(state);
|
|
1046
|
+
var w = 460, h = 660;
|
|
1047
|
+
var left = window.screen && window.screen.width ? (window.screen.width - w) / 2 : 0;
|
|
1048
|
+
var top = window.screen && window.screen.height ? (window.screen.height - h) / 2 : 0;
|
|
1049
|
+
var popup = window.open(url, "aimeat_consent", "width=" + w + ",height=" + h + ",left=" + left + ",top=" + top);
|
|
1050
|
+
if (!popup) {
|
|
1051
|
+
try {
|
|
1052
|
+
console.warn("[aimeat-auth] consent popup blocked — app-origin sign-in needs a real user click (user activation). Synthetic/automated clicks cannot open the consent window.");
|
|
1053
|
+
} catch {
|
|
1054
|
+
}
|
|
1055
|
+
emit("popup-blocked", { app });
|
|
1056
|
+
return null;
|
|
1057
|
+
}
|
|
1058
|
+
var msg = await new Promise(function(resolve) {
|
|
1059
|
+
var done = false, iv = null;
|
|
1060
|
+
function onMsg(e) {
|
|
1061
|
+
if (e.origin !== apexOrigin) return;
|
|
1062
|
+
var d = e.data || {};
|
|
1063
|
+
if (d.type !== "aimeat_app_grant" || d.state !== state) return;
|
|
1064
|
+
done = true;
|
|
1065
|
+
cleanup();
|
|
1066
|
+
resolve(d);
|
|
1067
|
+
}
|
|
1068
|
+
function cleanup() {
|
|
1069
|
+
window.removeEventListener("message", onMsg);
|
|
1070
|
+
if (iv) clearInterval(iv);
|
|
1071
|
+
}
|
|
1072
|
+
window.addEventListener("message", onMsg);
|
|
1073
|
+
iv = setInterval(function() {
|
|
1074
|
+
if (popup.closed && !done) {
|
|
1075
|
+
cleanup();
|
|
1076
|
+
resolve(null);
|
|
1077
|
+
}
|
|
1078
|
+
}, 500);
|
|
1079
|
+
});
|
|
1080
|
+
if (msg && msg.revoked) return { revoked: true };
|
|
1081
|
+
if (!msg || !msg.code) return null;
|
|
1082
|
+
try {
|
|
1083
|
+
var resp = await fetch(apexOrigin + "/v1/app-grants/token", {
|
|
1084
|
+
method: "POST",
|
|
1085
|
+
headers: { "Content-Type": "application/json" },
|
|
1086
|
+
body: JSON.stringify({ grant_type: "authorization_code", code: msg.code, code_verifier: p.verifier, redirect_uri: redirectUri })
|
|
1087
|
+
});
|
|
1088
|
+
var j = await resp.json();
|
|
1089
|
+
return j && j.ok && j.data && j.data.access_token ? j.data : null;
|
|
1090
|
+
} catch {
|
|
1091
|
+
return null;
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
function _buildAppSession(accessToken, appId, own, displayName) {
|
|
1095
|
+
var payload = parseJwt(accessToken) || {};
|
|
1096
|
+
var ownerName = payload.owner || payload.sub;
|
|
1097
|
+
if (!ownerName) return null;
|
|
1098
|
+
var session = createSession({
|
|
1099
|
+
owner: ownerName,
|
|
1100
|
+
ghii: String(ownerName).indexOf("@") >= 0 ? ownerName : ownerName + "@" + NODE_ID,
|
|
1101
|
+
gaii: null,
|
|
1102
|
+
jwt: accessToken,
|
|
1103
|
+
roles: payload.roles || [],
|
|
1104
|
+
displayName: displayName || ""
|
|
1105
|
+
});
|
|
1106
|
+
session._appOrigin = true;
|
|
1107
|
+
session._app = appId || null;
|
|
1108
|
+
session._own = !!own;
|
|
1109
|
+
persistSession(session);
|
|
1110
|
+
currentSession = session;
|
|
1111
|
+
scheduleAutoRefresh(session);
|
|
1112
|
+
emit("login", session);
|
|
1113
|
+
return session;
|
|
1114
|
+
}
|
|
1115
|
+
function restoreSessionFromAppOrigin(interactive) {
|
|
1116
|
+
if (currentSession) return Promise.resolve(currentSession);
|
|
1117
|
+
if (_appOriginLoginInFlight) return _appOriginLoginInFlight;
|
|
1118
|
+
_appOriginLoginInFlight = (async function() {
|
|
1119
|
+
var r = await silentAppToken();
|
|
1120
|
+
var grant = r && r.ok && r.access_token ? r : null;
|
|
1121
|
+
var appId = r && r.app || null;
|
|
1122
|
+
var own = !!(r && r.own);
|
|
1123
|
+
if (!grant && interactive && r && (r.error === "consent_required" || r.error === "login_required") && r.app) {
|
|
1124
|
+
appId = r.app;
|
|
1125
|
+
grant = await requestConsentPopup(r.app, r.scope);
|
|
1126
|
+
own = !!(grant && grant.own);
|
|
1127
|
+
if (grant && grant.app) appId = grant.app;
|
|
1128
|
+
}
|
|
1129
|
+
if (!grant || !grant.access_token) return null;
|
|
1130
|
+
return _buildAppSession(grant.access_token, appId, own, grant.display_name);
|
|
1131
|
+
})();
|
|
1132
|
+
_appOriginLoginInFlight.finally(function() {
|
|
1133
|
+
_appOriginLoginInFlight = null;
|
|
1134
|
+
});
|
|
1135
|
+
return _appOriginLoginInFlight;
|
|
1136
|
+
}
|
|
1137
|
+
function scheduleAutoRefresh(session) {
|
|
1138
|
+
if (refreshTimer) clearTimeout(refreshTimer);
|
|
1139
|
+
if (!session?.jwt) return;
|
|
1140
|
+
try {
|
|
1141
|
+
const payload = JSON.parse(atob(session.jwt.split(".")[1].replace(/-/g, "+").replace(/_/g, "/")));
|
|
1142
|
+
if (!payload.exp) return;
|
|
1143
|
+
const msUntilExpiry = payload.exp * 1e3 - Date.now();
|
|
1144
|
+
const refreshIn = Math.max(msUntilExpiry - 5 * 60 * 1e3, 1e4);
|
|
1145
|
+
refreshTimer = setTimeout(async () => {
|
|
1146
|
+
try {
|
|
1147
|
+
await session.refresh();
|
|
1148
|
+
emit("refreshed", session);
|
|
1149
|
+
scheduleAutoRefresh(session);
|
|
1150
|
+
} catch (e) {
|
|
1151
|
+
console.warn("[aimeat-auth] Auto-refresh failed:", e.message);
|
|
1152
|
+
emit("expired", { reason: "refresh_failed", error: e.message });
|
|
1153
|
+
}
|
|
1154
|
+
}, refreshIn);
|
|
1155
|
+
} catch {
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
function createSession(data) {
|
|
1159
|
+
const jwtPayload = data.jwt ? parseJwt(data.jwt) : null;
|
|
1160
|
+
let ownerVal = data.owner;
|
|
1161
|
+
if (ownerVal != null && typeof ownerVal !== "string") {
|
|
1162
|
+
ownerVal = typeof ownerVal === "object" && typeof ownerVal.name === "string" ? ownerVal.name : String(ownerVal);
|
|
1163
|
+
}
|
|
1164
|
+
let ghiiVal = data.ghii;
|
|
1165
|
+
if (ghiiVal != null && typeof ghiiVal !== "string") {
|
|
1166
|
+
ghiiVal = typeof ghiiVal === "object" && typeof ghiiVal.ghii === "string" ? ghiiVal.ghii : String(ghiiVal);
|
|
1167
|
+
}
|
|
1168
|
+
const session = (
|
|
1169
|
+
/** @type {Record<string, any>} */
|
|
1170
|
+
{
|
|
1171
|
+
ghii: ghiiVal || null,
|
|
1172
|
+
owner: ownerVal,
|
|
1173
|
+
gaii: data.gaii || null,
|
|
1174
|
+
identity: data.gaii || ghiiVal || null,
|
|
1175
|
+
jwt: data.jwt,
|
|
1176
|
+
roles: jwtPayload?.roles || data.roles || [],
|
|
1177
|
+
displayName: data.displayName || "",
|
|
1178
|
+
// SECURITY: Private keys are non-extractable CryptoKeys in IndexedDB, NOT here. _cryptoKey = in-memory ref only.
|
|
1179
|
+
_cryptoKey: data._cryptoKey || null,
|
|
1180
|
+
publicKey: data.publicKey,
|
|
1181
|
+
nodeUrl: NODE_URL,
|
|
1182
|
+
federated: data.federated || false,
|
|
1183
|
+
homeNode: data.homeNode || "",
|
|
1184
|
+
homeUrl: data.homeUrl || "",
|
|
1185
|
+
// Authenticated fetch wrapper — returns parsed JSON without throwing on error so callers
|
|
1186
|
+
// (e.g. AIMEAT.data.get) can inspect res.ok / res.error themselves.
|
|
1187
|
+
async fetch(path, opts = {}) {
|
|
1188
|
+
if (isExpired(session.jwt)) {
|
|
1189
|
+
await session.refresh();
|
|
1190
|
+
}
|
|
1191
|
+
const url = NODE_URL + path;
|
|
1192
|
+
const headers = { "Content-Type": "application/json", "Authorization": "Bearer " + session.jwt, ...opts.headers || {} };
|
|
1193
|
+
const resp = await fetch(url, { ...opts, headers });
|
|
1194
|
+
if (resp.status === 403 && session._appOrigin && !session._scopeHealTried) {
|
|
1195
|
+
var missing = appScopeDrift(session);
|
|
1196
|
+
if (missing.length) {
|
|
1197
|
+
session._scopeHealTried = true;
|
|
1198
|
+
var t = await silentAppToken();
|
|
1199
|
+
if (t && t.ok && t.access_token && !appScopeDrift({ _appOrigin: true, jwt: t.access_token })) {
|
|
1200
|
+
session.jwt = t.access_token;
|
|
1201
|
+
persistSession(session);
|
|
1202
|
+
scheduleAutoRefresh(session);
|
|
1203
|
+
var retry = await fetch(url, { ...opts, headers: { ...headers, "Authorization": "Bearer " + session.jwt } });
|
|
1204
|
+
return retry.json();
|
|
1205
|
+
}
|
|
1206
|
+
emit("scopes-stale", { app: session._app || null, missing });
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
return resp.json();
|
|
1210
|
+
},
|
|
1211
|
+
// Notify the signed-in owner (header bell + browser push if subscribed).
|
|
1212
|
+
async notify(title, opts = {}) {
|
|
1213
|
+
return session.fetch("/v1/notifications", {
|
|
1214
|
+
method: "POST",
|
|
1215
|
+
body: JSON.stringify({ title, body: opts.body, link: opts.link, type: opts.type })
|
|
1216
|
+
});
|
|
1217
|
+
},
|
|
1218
|
+
// Get a fresh access token. Owner sessions use the httpOnly refresh cookie; agent sessions
|
|
1219
|
+
// re-sign with their IndexedDB key. Concurrent owner refreshes share one in-flight request.
|
|
1220
|
+
async refresh() {
|
|
1221
|
+
if (session._appOrigin) {
|
|
1222
|
+
var t = await silentAppToken();
|
|
1223
|
+
if (!t || !t.access_token) throw new Error("App session expired — the owner is not logged in on the node.");
|
|
1224
|
+
session.jwt = t.access_token;
|
|
1225
|
+
session.roles = (parseJwt(session.jwt) || {}).roles || session.roles || [];
|
|
1226
|
+
persistSession(session);
|
|
1227
|
+
scheduleAutoRefresh(session);
|
|
1228
|
+
return session;
|
|
1229
|
+
}
|
|
1230
|
+
if (session.federated) {
|
|
1231
|
+
throw new Error("Federated session expired. Please log in again.");
|
|
1232
|
+
}
|
|
1233
|
+
if (session.gaii) {
|
|
1234
|
+
const key = session._cryptoKey || await loadKey("agent_key");
|
|
1235
|
+
if (!key) throw new Error("Cannot refresh — no signing key found in IndexedDB");
|
|
1236
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
1237
|
+
const signature = await sign(key, session.gaii + timestamp);
|
|
1238
|
+
const d2 = await api("/v1/auth/token", {
|
|
1239
|
+
method: "POST",
|
|
1240
|
+
body: JSON.stringify({ gaii: session.gaii, timestamp, signature })
|
|
1241
|
+
});
|
|
1242
|
+
session.jwt = d2.data.token;
|
|
1243
|
+
session.roles = (parseJwt(session.jwt) || {}).roles || session.roles || [];
|
|
1244
|
+
persistSession(session);
|
|
1245
|
+
scheduleAutoRefresh(session);
|
|
1246
|
+
return session;
|
|
1247
|
+
}
|
|
1248
|
+
if (ownerRefreshInFlight) return ownerRefreshInFlight;
|
|
1249
|
+
ownerRefreshInFlight = (async () => {
|
|
1250
|
+
const resp = await fetch(NODE_URL + "/v1/auth/refresh", {
|
|
1251
|
+
method: "POST",
|
|
1252
|
+
credentials: "include",
|
|
1253
|
+
headers: { "Content-Type": "application/json", "X-AIMEAT-Refresh": "1" }
|
|
1254
|
+
});
|
|
1255
|
+
let data2 = null;
|
|
1256
|
+
try {
|
|
1257
|
+
data2 = await resp.json();
|
|
1258
|
+
} catch {
|
|
1259
|
+
}
|
|
1260
|
+
if (!resp.ok || !data2 || data2.ok === false) {
|
|
1261
|
+
throw new Error(data2?.error?.message || "Session refresh failed");
|
|
1262
|
+
}
|
|
1263
|
+
session.jwt = data2.data.token;
|
|
1264
|
+
session.roles = (parseJwt(session.jwt) || {}).roles || session.roles || [];
|
|
1265
|
+
var freshClaims = parseJwt(session.jwt) || {};
|
|
1266
|
+
if (freshClaims.owner && freshClaims.owner !== session.owner) {
|
|
1267
|
+
session.owner = freshClaims.owner;
|
|
1268
|
+
if (freshClaims.node) session.ghii = freshClaims.owner + "@" + freshClaims.node;
|
|
1269
|
+
session.identity = session.gaii || session.ghii || null;
|
|
1270
|
+
}
|
|
1271
|
+
if (typeof data2.data.display_name === "string") session.displayName = data2.data.display_name;
|
|
1272
|
+
persistSession(session);
|
|
1273
|
+
scheduleAutoRefresh(session);
|
|
1274
|
+
return session;
|
|
1275
|
+
})();
|
|
1276
|
+
try {
|
|
1277
|
+
return await ownerRefreshInFlight;
|
|
1278
|
+
} finally {
|
|
1279
|
+
ownerRefreshInFlight = null;
|
|
1280
|
+
}
|
|
1281
|
+
},
|
|
1282
|
+
// Check if session is valid
|
|
1283
|
+
get valid() {
|
|
1284
|
+
return session.jwt && !isExpired(session.jwt);
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
);
|
|
1288
|
+
return session;
|
|
1289
|
+
}
|
|
1290
|
+
function refreshOnFocus() {
|
|
1291
|
+
const session = currentSession;
|
|
1292
|
+
if (!session || !session.jwt || session.federated) return;
|
|
1293
|
+
const payload = parseJwt(session.jwt);
|
|
1294
|
+
if (!payload || !payload.exp) return;
|
|
1295
|
+
const msUntilExpiry = payload.exp * 1e3 - Date.now();
|
|
1296
|
+
if (msUntilExpiry > 5 * 60 * 1e3) return;
|
|
1297
|
+
if (focusRefreshInFlight) return;
|
|
1298
|
+
const wasExpired = msUntilExpiry <= 0;
|
|
1299
|
+
focusRefreshInFlight = session.refresh().then(() => {
|
|
1300
|
+
emit("refreshed", session);
|
|
1301
|
+
}).catch((e) => {
|
|
1302
|
+
console.warn("[aimeat-auth] Focus refresh failed:", e.message);
|
|
1303
|
+
if (wasExpired) emit("expired", { reason: "refresh_failed", error: e.message });
|
|
1304
|
+
}).finally(() => {
|
|
1305
|
+
focusRefreshInFlight = null;
|
|
1306
|
+
});
|
|
1307
|
+
}
|
|
1308
|
+
var auth = {
|
|
1309
|
+
nodeUrl: NODE_URL,
|
|
1310
|
+
nodeId: NODE_ID,
|
|
1311
|
+
/**
|
|
1312
|
+
* Register a new human identity (GHII) and get an authenticated session.
|
|
1313
|
+
* @returns {Promise<object>} Session object with .fetch(), .refresh(), .jwt, .ghii
|
|
1314
|
+
*/
|
|
1315
|
+
async register(username, displayName, opts = {}) {
|
|
1316
|
+
const regData = await api("/v1/ghii", {
|
|
1317
|
+
method: "POST",
|
|
1318
|
+
credentials: "include",
|
|
1319
|
+
body: JSON.stringify({
|
|
1320
|
+
username,
|
|
1321
|
+
display_name: displayName,
|
|
1322
|
+
bio: opts.bio,
|
|
1323
|
+
avatar: opts.avatar,
|
|
1324
|
+
locale: opts.locale,
|
|
1325
|
+
password: opts.password || void 0
|
|
1326
|
+
})
|
|
1327
|
+
});
|
|
1328
|
+
if (opts.password) {
|
|
1329
|
+
return this.loginWithPassword(username, opts.password);
|
|
1330
|
+
}
|
|
1331
|
+
const ownerName = regData.data.owner.name;
|
|
1332
|
+
const ghii = regData.data.ghii.ghii;
|
|
1333
|
+
const serverPrivateKey = regData.data.private_key || regData.data.owner_private_key;
|
|
1334
|
+
const serverPublicKey = regData.data.public_key || regData.data.owner_public_key || "";
|
|
1335
|
+
if (!serverPrivateKey) {
|
|
1336
|
+
throw new Error("Server did not return an owner signing key. Please try signing in again.");
|
|
1337
|
+
}
|
|
1338
|
+
let ownerToken = regData.data.token || null;
|
|
1339
|
+
if (!ownerToken) {
|
|
1340
|
+
const ownerTimestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
1341
|
+
const ownerMessage = ownerName + NODE_ID + ownerTimestamp;
|
|
1342
|
+
const ownerSig = await sign(serverPrivateKey, ownerMessage);
|
|
1343
|
+
const ownerTokenData = await api("/v1/auth/token", {
|
|
1344
|
+
method: "POST",
|
|
1345
|
+
body: JSON.stringify({ owner: ownerName, timestamp: ownerTimestamp, signature: ownerSig })
|
|
1346
|
+
});
|
|
1347
|
+
ownerToken = ownerTokenData.data.token;
|
|
1348
|
+
}
|
|
1349
|
+
const ownerCryptoKey = await importEd25519Key(serverPrivateKey);
|
|
1350
|
+
await storeKey("owner_key", ownerCryptoKey);
|
|
1351
|
+
const session = createSession({
|
|
1352
|
+
ghii,
|
|
1353
|
+
owner: ownerName,
|
|
1354
|
+
gaii: null,
|
|
1355
|
+
jwt: ownerToken,
|
|
1356
|
+
_cryptoKey: ownerCryptoKey,
|
|
1357
|
+
publicKey: serverPublicKey,
|
|
1358
|
+
displayName: regData.data.ghii.display_name || ""
|
|
1359
|
+
});
|
|
1360
|
+
save("session", {
|
|
1361
|
+
owner: ownerName,
|
|
1362
|
+
gaii: null,
|
|
1363
|
+
ghii,
|
|
1364
|
+
jwt: session.jwt,
|
|
1365
|
+
publicKey: serverPublicKey,
|
|
1366
|
+
roles: session.roles,
|
|
1367
|
+
displayName: session.displayName || ""
|
|
1368
|
+
});
|
|
1369
|
+
currentSession = session;
|
|
1370
|
+
scheduleAutoRefresh(session);
|
|
1371
|
+
emit("login", session);
|
|
1372
|
+
return session;
|
|
1373
|
+
},
|
|
1374
|
+
/**
|
|
1375
|
+
* Login with stored credentials (auto-refreshes JWT if expired).
|
|
1376
|
+
* @returns {Promise<object|null>} Session or null if no stored credentials
|
|
1377
|
+
*/
|
|
1378
|
+
async login(username) {
|
|
1379
|
+
if (isAppOrigin()) return await restoreSessionFromAppOrigin(false);
|
|
1380
|
+
const stored = load("session");
|
|
1381
|
+
if (!stored) return await restoreSessionFromCookie();
|
|
1382
|
+
if (username && stored.owner !== username) return null;
|
|
1383
|
+
await migrateKeysToIndexedDB();
|
|
1384
|
+
if (stored.gaii) {
|
|
1385
|
+
stored.gaii = null;
|
|
1386
|
+
}
|
|
1387
|
+
const cryptoKey = stored.gaii ? await loadKey("agent_key") : await loadKey("owner_key");
|
|
1388
|
+
const session = createSession({ ...stored, _cryptoKey: cryptoKey });
|
|
1389
|
+
const isOwnerLocal = !session.federated && !session.gaii;
|
|
1390
|
+
if (isOwnerLocal || isExpired(session.jwt)) {
|
|
1391
|
+
try {
|
|
1392
|
+
await session.refresh();
|
|
1393
|
+
} catch {
|
|
1394
|
+
remove("session");
|
|
1395
|
+
emit("expired");
|
|
1396
|
+
return null;
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
currentSession = session;
|
|
1400
|
+
scheduleAutoRefresh(session);
|
|
1401
|
+
emit("login", session);
|
|
1402
|
+
return session;
|
|
1403
|
+
},
|
|
1404
|
+
/**
|
|
1405
|
+
* Login with username + password (works from any device).
|
|
1406
|
+
* @returns {Promise<object>} Session object
|
|
1407
|
+
*/
|
|
1408
|
+
async loginWithPassword(username, password) {
|
|
1409
|
+
const data = await api("/v1/ghii/login", {
|
|
1410
|
+
method: "POST",
|
|
1411
|
+
credentials: "include",
|
|
1412
|
+
body: JSON.stringify({ username, password })
|
|
1413
|
+
});
|
|
1414
|
+
const d = data.data;
|
|
1415
|
+
let ownerCryptoKey = null;
|
|
1416
|
+
if (d.owner_private_key) {
|
|
1417
|
+
ownerCryptoKey = await importEd25519Key(d.owner_private_key);
|
|
1418
|
+
await storeKey("owner_key", ownerCryptoKey);
|
|
1419
|
+
}
|
|
1420
|
+
const session = createSession({
|
|
1421
|
+
ghii: d.ghii.ghii,
|
|
1422
|
+
owner: d.owner.name,
|
|
1423
|
+
gaii: null,
|
|
1424
|
+
jwt: d.token,
|
|
1425
|
+
_cryptoKey: ownerCryptoKey,
|
|
1426
|
+
publicKey: d.owner_public_key || "",
|
|
1427
|
+
displayName: d.ghii.display_name || "",
|
|
1428
|
+
federated: d.federated || false,
|
|
1429
|
+
homeNode: d.home_node || "",
|
|
1430
|
+
homeUrl: d.home_url || ""
|
|
1431
|
+
});
|
|
1432
|
+
if (d.key_credentials) session._keyCredentials = d.key_credentials;
|
|
1433
|
+
persistSession(session);
|
|
1434
|
+
currentSession = session;
|
|
1435
|
+
scheduleAutoRefresh(session);
|
|
1436
|
+
emit("login", session);
|
|
1437
|
+
return session;
|
|
1438
|
+
},
|
|
1439
|
+
/** Get the current session (or null if not logged in) */
|
|
1440
|
+
getSession() {
|
|
1441
|
+
return currentSession;
|
|
1442
|
+
},
|
|
1443
|
+
/**
|
|
1444
|
+
* Patch mutable, non-secret session metadata in place (e.g. displayName after a profile edit),
|
|
1445
|
+
* persist it, and notify the login pill so it re-renders live — no page reload.
|
|
1446
|
+
*/
|
|
1447
|
+
updateSessionMeta(patch) {
|
|
1448
|
+
if (!currentSession || !patch) return;
|
|
1449
|
+
Object.assign(currentSession, patch);
|
|
1450
|
+
persistSession(currentSession);
|
|
1451
|
+
emit("session-updated", currentSession);
|
|
1452
|
+
},
|
|
1453
|
+
/** Logout — clear stored credentials from localStorage and IndexedDB */
|
|
1454
|
+
async logout() {
|
|
1455
|
+
if (refreshTimer) {
|
|
1456
|
+
clearTimeout(refreshTimer);
|
|
1457
|
+
refreshTimer = null;
|
|
1458
|
+
}
|
|
1459
|
+
ownerRefreshInFlight = null;
|
|
1460
|
+
try {
|
|
1461
|
+
await fetch(NODE_URL + "/v1/auth/revoke", {
|
|
1462
|
+
method: "POST",
|
|
1463
|
+
credentials: "include",
|
|
1464
|
+
headers: {
|
|
1465
|
+
"Content-Type": "application/json",
|
|
1466
|
+
...currentSession?.jwt ? { "Authorization": "Bearer " + currentSession.jwt } : {}
|
|
1467
|
+
}
|
|
1468
|
+
});
|
|
1469
|
+
} catch {
|
|
1470
|
+
}
|
|
1471
|
+
if (isAppOrigin()) {
|
|
1472
|
+
try {
|
|
1473
|
+
await apexLogout();
|
|
1474
|
+
} catch {
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
currentSession = null;
|
|
1478
|
+
remove("session");
|
|
1479
|
+
remove("owner_key");
|
|
1480
|
+
await deleteKey("agent_key");
|
|
1481
|
+
await deleteKey("owner_key");
|
|
1482
|
+
emit("logout");
|
|
1483
|
+
},
|
|
1484
|
+
/**
|
|
1485
|
+
* Re-open the consent screen for the current app (H-2 in-app grant management).
|
|
1486
|
+
*/
|
|
1487
|
+
async manageGrant() {
|
|
1488
|
+
const s = currentSession || load("session");
|
|
1489
|
+
if (!s || !s._app) return null;
|
|
1490
|
+
const res = await requestConsentPopup(s._app, appDeclaredScopes(), true);
|
|
1491
|
+
if (res && res.revoked) {
|
|
1492
|
+
await auth.logout();
|
|
1493
|
+
return { revoked: true };
|
|
1494
|
+
}
|
|
1495
|
+
if (res && res.access_token) return _buildAppSession(res.access_token, res.app || s._app, res.own != null ? !!res.own : s._own);
|
|
1496
|
+
return null;
|
|
1497
|
+
},
|
|
1498
|
+
/** True when running inside a published app on its isolated origin (not the apex). */
|
|
1499
|
+
isAppOrigin() {
|
|
1500
|
+
return isAppOrigin();
|
|
1501
|
+
},
|
|
1502
|
+
/** Open the sign-in modal (password + Google if configured). */
|
|
1503
|
+
showLoginModal(opts) {
|
|
1504
|
+
showLoginModal(opts || {}, function() {
|
|
1505
|
+
});
|
|
1506
|
+
},
|
|
1507
|
+
/** Check if there are stored credentials */
|
|
1508
|
+
get hasSession() {
|
|
1509
|
+
return !!load("session");
|
|
1510
|
+
},
|
|
1511
|
+
/** Get stored GHII without authenticating */
|
|
1512
|
+
get storedGhii() {
|
|
1513
|
+
const s = load("session");
|
|
1514
|
+
return s?.ghii || null;
|
|
1515
|
+
},
|
|
1516
|
+
/** Register an event listener */
|
|
1517
|
+
on(event, fn) {
|
|
1518
|
+
on(event, fn);
|
|
1519
|
+
},
|
|
1520
|
+
/** Remove an event listener */
|
|
1521
|
+
off(event, fn) {
|
|
1522
|
+
off(event, fn);
|
|
1523
|
+
},
|
|
1524
|
+
/** Check if running inside a sandboxed iframe (no localStorage access) */
|
|
1525
|
+
get inSandbox() {
|
|
1526
|
+
try {
|
|
1527
|
+
localStorage.getItem("_test");
|
|
1528
|
+
return false;
|
|
1529
|
+
} catch {
|
|
1530
|
+
return true;
|
|
1531
|
+
}
|
|
1532
|
+
},
|
|
1533
|
+
/**
|
|
1534
|
+
* Request auth credentials from the parent window via postMessage (sandboxed-iframe fallback).
|
|
1535
|
+
* @returns {Promise<object|null>} Session-like object with .jwt and .fetch(), or null
|
|
1536
|
+
*/
|
|
1537
|
+
requestParentAuth(timeout = 3e3) {
|
|
1538
|
+
return new Promise((resolve) => {
|
|
1539
|
+
if (window === window.parent) {
|
|
1540
|
+
resolve(null);
|
|
1541
|
+
return;
|
|
1542
|
+
}
|
|
1543
|
+
let resolved = false;
|
|
1544
|
+
const timer = setTimeout(() => {
|
|
1545
|
+
if (!resolved) {
|
|
1546
|
+
resolved = true;
|
|
1547
|
+
resolve(null);
|
|
1548
|
+
}
|
|
1549
|
+
}, timeout);
|
|
1550
|
+
function handler(e) {
|
|
1551
|
+
if (resolved) return;
|
|
1552
|
+
if (!e.data || e.data.type !== "aimeat-auth") return;
|
|
1553
|
+
resolved = true;
|
|
1554
|
+
clearTimeout(timer);
|
|
1555
|
+
window.removeEventListener("message", handler);
|
|
1556
|
+
const jwt = e.data.jwt;
|
|
1557
|
+
const parentNodeUrl = e.data.nodeUrl;
|
|
1558
|
+
if (!jwt) {
|
|
1559
|
+
resolve(null);
|
|
1560
|
+
return;
|
|
1561
|
+
}
|
|
1562
|
+
const effectiveNodeUrl = parentNodeUrl || NODE_URL;
|
|
1563
|
+
const session = (
|
|
1564
|
+
/** @type {Record<string, any>} */
|
|
1565
|
+
{
|
|
1566
|
+
jwt,
|
|
1567
|
+
nodeUrl: effectiveNodeUrl,
|
|
1568
|
+
owner: null,
|
|
1569
|
+
gaii: null,
|
|
1570
|
+
ghii: null,
|
|
1571
|
+
identity: null,
|
|
1572
|
+
get valid() {
|
|
1573
|
+
return jwt && !isExpired(jwt);
|
|
1574
|
+
},
|
|
1575
|
+
async fetch(path, opts = {}) {
|
|
1576
|
+
const url = effectiveNodeUrl + path;
|
|
1577
|
+
const headers = { "Content-Type": "application/json", "Authorization": "Bearer " + jwt, ...opts.headers || {} };
|
|
1578
|
+
const resp = await fetch(url, { ...opts, headers });
|
|
1579
|
+
return resp.json();
|
|
1580
|
+
},
|
|
1581
|
+
async notify(title, opts = {}) {
|
|
1582
|
+
return session.fetch("/v1/notifications", {
|
|
1583
|
+
method: "POST",
|
|
1584
|
+
body: JSON.stringify({ title, body: opts.body, link: opts.link, type: opts.type })
|
|
1585
|
+
});
|
|
1586
|
+
}
|
|
1587
|
+
}
|
|
1588
|
+
);
|
|
1589
|
+
const payload = parseJwt(jwt);
|
|
1590
|
+
if (payload) {
|
|
1591
|
+
session.gaii = payload.sub || null;
|
|
1592
|
+
session.owner = payload.owner || null;
|
|
1593
|
+
session.identity = session.gaii || session.ghii || null;
|
|
1594
|
+
}
|
|
1595
|
+
currentSession = session;
|
|
1596
|
+
emit("login", session);
|
|
1597
|
+
resolve(session);
|
|
1598
|
+
}
|
|
1599
|
+
window.addEventListener("message", handler);
|
|
1600
|
+
window.parent.postMessage({ type: "aimeat-request-auth" }, "*");
|
|
1601
|
+
});
|
|
1602
|
+
},
|
|
1603
|
+
// Capability flag so an embedding app can feature-detect the compact login pill.
|
|
1604
|
+
compactPill: true,
|
|
1605
|
+
/**
|
|
1606
|
+
* Mount a login/register button that handles the full flow. Delegates the render to pill.js.
|
|
1607
|
+
* @param {string|Element|object} selector - CSS selector, DOM element, OR (options-first) the opts.
|
|
1608
|
+
* @param {object} [opts] - { onLogin, onLogout, buttonText, compact }.
|
|
1609
|
+
*/
|
|
1610
|
+
mountLoginButton(selector, opts = {}) {
|
|
1611
|
+
return mountPill(auth, selector, opts);
|
|
1612
|
+
}
|
|
1613
|
+
};
|
|
1614
|
+
|
|
1615
|
+
// src/static/sdk-libs/auth/signup.js
|
|
1616
|
+
var USERNAME_RE = new RegExp("^[a-z0-9][a-z0-9-]{1,62}[a-z0-9]$");
|
|
1617
|
+
function fillTemplate(str, vars) {
|
|
1618
|
+
return String(str || "").replace(/\{(\w+)\}/g, function(_, k) {
|
|
1619
|
+
return vars[k] != null ? vars[k] : "";
|
|
1620
|
+
});
|
|
1621
|
+
}
|
|
1622
|
+
function cleanSignupParam() {
|
|
1623
|
+
try {
|
|
1624
|
+
var url = new URL(location.href);
|
|
1625
|
+
if (!url.searchParams.has("aimeat_signup")) return;
|
|
1626
|
+
url.searchParams.delete("aimeat_signup");
|
|
1627
|
+
history.replaceState(null, "", url.pathname + (url.search ? url.search : "") + url.hash);
|
|
1628
|
+
} catch {
|
|
1629
|
+
}
|
|
1630
|
+
}
|
|
1631
|
+
function showSignupNoticeModal(i, opts) {
|
|
1632
|
+
var old = document.getElementById("aimeat-modal");
|
|
1633
|
+
if (old) old.remove();
|
|
1634
|
+
var modal = document.createElement("div");
|
|
1635
|
+
modal.id = "aimeat-modal";
|
|
1636
|
+
document.body.appendChild(modal);
|
|
1637
|
+
modal.innerHTML = '<style>.aimeat-go{flex:1;padding:12px;background:linear-gradient(135deg,#E8564A,#D4493F);color:#fff;border:none;border-radius:10px;cursor:pointer;font-weight:700;font-size:15px;font-family:DM Sans,system-ui,sans-serif;box-shadow:0 2px 8px rgba(232,86,74,.25);transition:transform .15s,box-shadow .15s}.aimeat-cancel{padding:12px 20px;background:none;color:#1A1A2E;border:1px solid #E5E7EB;border-radius:10px;cursor:pointer;font-size:15px;font-weight:500;font-family:DM Sans,system-ui,sans-serif;transition:background .15s}.aimeat-cancel:hover{background:#F3F4F6}</style><div style="position:fixed;inset:0;background:rgba(26,26,46,.4);backdrop-filter:blur(8px);display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;z-index:99999;font-family:DM Sans,system-ui,sans-serif;padding:24px"><div style="background:#FFFFFF;border-radius:16px;max-width:440px;width:100%;margin:auto;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.15),0 0 0 1px rgba(0,0,0,.05)"><div style="padding:28px 32px 24px"><h2 style="margin:0 0 8px;font-size:21px;font-weight:800;color:#1A1A2E">' + escHtml(opts.title || "") + '</h2><p style="margin:0 0 18px;font-size:14px;color:#6B7280;line-height:1.55">' + escHtml(opts.body || "") + '</p><div style="display:flex;gap:10px"><button id="aimeat-sn-primary" class="aimeat-go">' + escHtml(opts.primaryLabel || "OK") + "</button>" + (opts.showCancel ? '<button id="aimeat-sn-cancel" class="aimeat-cancel">' + escHtml(i.signupCancelBtn || "Cancel") + "</button>" : "") + "</div></div></div></div>";
|
|
1638
|
+
function close() {
|
|
1639
|
+
modal.remove();
|
|
1640
|
+
cleanSignupParam();
|
|
1641
|
+
}
|
|
1642
|
+
document.getElementById("aimeat-sn-primary").addEventListener("click", function() {
|
|
1643
|
+
close();
|
|
1644
|
+
if (opts.onPrimary) opts.onPrimary();
|
|
1645
|
+
});
|
|
1646
|
+
var cancelEl = document.getElementById("aimeat-sn-cancel");
|
|
1647
|
+
if (cancelEl) cancelEl.addEventListener("click", close);
|
|
1648
|
+
}
|
|
1649
|
+
function showGoogleSignupModal(pending, i) {
|
|
1650
|
+
i = i || {};
|
|
1651
|
+
if (pending && pending.mode === "link_existing") {
|
|
1652
|
+
var hint = pending.existing_hint ? " " + fillTemplate(i.signupLinkHint || "(Username hint: {hint}.)", { hint: pending.existing_hint }) : "";
|
|
1653
|
+
showSignupNoticeModal(i, {
|
|
1654
|
+
title: i.signupLinkTitle || "This email already has an account",
|
|
1655
|
+
body: fillTemplate(i.signupLinkIntro || "An AIMEAT account already uses {email}, but its email has not been verified yet. Sign in with your username and password once — that verifies your email, and after that this sign-in connects to your account automatically.", { email: pending.email || "" }) + hint,
|
|
1656
|
+
primaryLabel: i.signupLinkSignInBtn || "Sign in with password",
|
|
1657
|
+
showCancel: true,
|
|
1658
|
+
onPrimary: function() {
|
|
1659
|
+
showLoginModal({ i18n: i }, function() {
|
|
1660
|
+
});
|
|
1661
|
+
}
|
|
1662
|
+
});
|
|
1663
|
+
return;
|
|
1664
|
+
}
|
|
1665
|
+
var old = document.getElementById("aimeat-modal");
|
|
1666
|
+
if (old) old.remove();
|
|
1667
|
+
var modal = document.createElement("div");
|
|
1668
|
+
modal.id = "aimeat-modal";
|
|
1669
|
+
document.body.appendChild(modal);
|
|
1670
|
+
var emailNote = pending.email ? '<p style="margin:0 0 14px;font-size:13px;color:#6B7280">' + escHtml(fillTemplate(i.signupEmailNote || "Signing up as {email}", { email: pending.email })) + "</p>" : "";
|
|
1671
|
+
modal.innerHTML = '<style>.aimeat-inp{width:100%;padding:11px 14px;border:1.5px solid #E5E7EB;border-radius:10px;font-family:DM Sans,system-ui,sans-serif;font-size:15px;color:#1A1A2E;background:#FAFAF8;box-sizing:border-box;transition:all .15s;outline:none}.aimeat-inp:focus{border-color:#E8564A;box-shadow:0 0 0 3px rgba(232,86,74,.1)}.aimeat-go{flex:1;padding:12px;background:linear-gradient(135deg,#E8564A,#D4493F);color:#fff;border:none;border-radius:10px;cursor:pointer;font-weight:700;font-size:15px;font-family:DM Sans,system-ui,sans-serif;box-shadow:0 2px 8px rgba(232,86,74,.25);transition:transform .15s,box-shadow .15s}.aimeat-go:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.aimeat-label{display:block;margin-bottom:5px;font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:#6B7280}.aimeat-cancel{padding:12px 20px;background:none;color:#1A1A2E;border:1px solid #E5E7EB;border-radius:10px;cursor:pointer;font-size:15px;font-weight:500;font-family:DM Sans,system-ui,sans-serif;transition:background .15s}.aimeat-cancel:hover{background:#F3F4F6}</style><div style="position:fixed;inset:0;background:rgba(26,26,46,.4);backdrop-filter:blur(8px);display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;z-index:99999;font-family:DM Sans,system-ui,sans-serif;padding:24px"><div style="background:#FFFFFF;border-radius:16px;max-width:440px;width:100%;margin:auto;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.15),0 0 0 1px rgba(0,0,0,.05)"><div style="padding:28px 32px 24px"><h2 style="margin:0 0 8px;font-size:21px;font-weight:800;color:#1A1A2E">' + escHtml(i.signupTitle || "Choose your username") + '</h2><p style="margin:0 0 6px;font-size:14px;color:#6B7280;line-height:1.5">' + escHtml(i.signupIntro || "You're signing in for the first time. Pick the username for your AIMEAT account.") + "</p>" + emailNote + '<label class="aimeat-label" for="aimeat-su-name">' + escHtml(i.signupUsernameLabel || "Username") + '</label><input id="aimeat-su-name" class="aimeat-inp" autocomplete="off" autocapitalize="none" spellcheck="false" value="' + escHtml(pending.suggested || "") + '"><p id="aimeat-su-status" style="margin:6px 0 0;font-size:13px;min-height:18px"></p><p style="margin:8px 0 0;font-size:12px;color:#9CA3AF;line-height:1.45">' + escHtml(i.signupSuggestedHint || "We suggested one from your account — change it to anything you like.") + '</p><div style="margin:16px 0 0;padding:12px 14px;background:#FFF7ED;border:1px solid #FED7AA;border-radius:10px;font-size:13px;color:#9A3412;line-height:1.5">' + escHtml(i.signupPermanentWarning || "This username is permanent. It identifies you across AIMEAT and cannot be changed later — the only way to change it is to delete your account and create a new one.") + '</div><label class="aimeat-label" for="aimeat-su-display" style="margin-top:16px">' + escHtml(i.signupDisplayNameLabel || "Display name") + '</label><input id="aimeat-su-display" class="aimeat-inp" autocomplete="off" maxlength="80" value="' + escHtml(pending.displayName || "") + '"><p style="margin:6px 0 0;font-size:12px;color:#9CA3AF;line-height:1.45">' + escHtml(i.signupDisplayNameHint || "Shown to others — not permanent, you can change it anytime later.") + '</p><div style="display:flex;gap:10px;margin-top:20px"><button id="aimeat-su-create" class="aimeat-go">' + escHtml(i.signupCreateBtn || "Create my account") + '</button><button id="aimeat-su-cancel" class="aimeat-cancel">' + escHtml(i.signupCancelBtn || "Cancel") + '</button></div><p id="aimeat-su-err" style="margin:10px 0 0;font-size:13px;color:#ef4444;display:none"></p></div></div></div>';
|
|
1672
|
+
var input = (
|
|
1673
|
+
/** @type {any} */
|
|
1674
|
+
document.getElementById("aimeat-su-name")
|
|
1675
|
+
);
|
|
1676
|
+
var statusEl = document.getElementById("aimeat-su-status");
|
|
1677
|
+
var createBtn = (
|
|
1678
|
+
/** @type {any} */
|
|
1679
|
+
document.getElementById("aimeat-su-create")
|
|
1680
|
+
);
|
|
1681
|
+
var cancelBtn = document.getElementById("aimeat-su-cancel");
|
|
1682
|
+
var errEl = document.getElementById("aimeat-su-err");
|
|
1683
|
+
var checkTimer = null;
|
|
1684
|
+
var lastChecked = "";
|
|
1685
|
+
function setStatus(text, color) {
|
|
1686
|
+
statusEl.textContent = text || "";
|
|
1687
|
+
statusEl.style.color = color || "#6B7280";
|
|
1688
|
+
}
|
|
1689
|
+
function evaluate() {
|
|
1690
|
+
errEl.style.display = "none";
|
|
1691
|
+
var name = (input.value || "").trim().toLowerCase();
|
|
1692
|
+
if (!USERNAME_RE.test(name)) {
|
|
1693
|
+
createBtn.disabled = true;
|
|
1694
|
+
setStatus(i.signupInvalid || "Username must be 3–64 characters: lowercase letters, numbers and hyphens.", "#ef4444");
|
|
1695
|
+
return;
|
|
1696
|
+
}
|
|
1697
|
+
createBtn.disabled = true;
|
|
1698
|
+
setStatus("…", "#9CA3AF");
|
|
1699
|
+
if (checkTimer) clearTimeout(checkTimer);
|
|
1700
|
+
checkTimer = setTimeout(function() {
|
|
1701
|
+
lastChecked = name;
|
|
1702
|
+
api("/v1/ghii/username-available?name=" + encodeURIComponent(name)).then(function(res) {
|
|
1703
|
+
var d = res && res.data;
|
|
1704
|
+
if (!d || (input.value || "").trim().toLowerCase() !== lastChecked) return;
|
|
1705
|
+
if (d.valid && d.available) {
|
|
1706
|
+
createBtn.disabled = false;
|
|
1707
|
+
setStatus(i.signupAvailable || "✓ Available", "#16a34a");
|
|
1708
|
+
} else if (!d.valid) {
|
|
1709
|
+
createBtn.disabled = true;
|
|
1710
|
+
setStatus(i.signupInvalid || d.reason || "Invalid username", "#ef4444");
|
|
1711
|
+
} else {
|
|
1712
|
+
createBtn.disabled = true;
|
|
1713
|
+
setStatus(i.signupTaken || "That username is already taken — pick another.", "#ef4444");
|
|
1714
|
+
}
|
|
1715
|
+
}).catch(function() {
|
|
1716
|
+
createBtn.disabled = false;
|
|
1717
|
+
setStatus("", "#6B7280");
|
|
1718
|
+
});
|
|
1719
|
+
}, 350);
|
|
1720
|
+
}
|
|
1721
|
+
input.addEventListener("input", evaluate);
|
|
1722
|
+
input.addEventListener("keydown", function(e) {
|
|
1723
|
+
if (e.key === "Enter" && !createBtn.disabled) {
|
|
1724
|
+
e.preventDefault();
|
|
1725
|
+
createBtn.click();
|
|
1726
|
+
}
|
|
1727
|
+
});
|
|
1728
|
+
function close() {
|
|
1729
|
+
if (checkTimer) clearTimeout(checkTimer);
|
|
1730
|
+
modal.remove();
|
|
1731
|
+
cleanSignupParam();
|
|
1732
|
+
}
|
|
1733
|
+
cancelBtn.addEventListener("click", close);
|
|
1734
|
+
createBtn.addEventListener("click", async function() {
|
|
1735
|
+
var name = (input.value || "").trim().toLowerCase();
|
|
1736
|
+
if (!USERNAME_RE.test(name)) {
|
|
1737
|
+
evaluate();
|
|
1738
|
+
return;
|
|
1739
|
+
}
|
|
1740
|
+
var displayEl = (
|
|
1741
|
+
/** @type {any} */
|
|
1742
|
+
document.getElementById("aimeat-su-display")
|
|
1743
|
+
);
|
|
1744
|
+
var displayName = displayEl ? (displayEl.value || "").trim() : "";
|
|
1745
|
+
createBtn.disabled = true;
|
|
1746
|
+
createBtn.textContent = i.signupCreating || "Creating account...";
|
|
1747
|
+
errEl.style.display = "none";
|
|
1748
|
+
try {
|
|
1749
|
+
var res = await api("/v1/ghii/login/" + (pending.provider || "google") + "/finalize", {
|
|
1750
|
+
method: "POST",
|
|
1751
|
+
credentials: "include",
|
|
1752
|
+
body: JSON.stringify({ username: name, displayName })
|
|
1753
|
+
});
|
|
1754
|
+
cleanSignupParam();
|
|
1755
|
+
var redirect = res && res.data && res.data.redirect || pending.redirect || "/";
|
|
1756
|
+
location.href = NODE_URL + redirect;
|
|
1757
|
+
} catch (e) {
|
|
1758
|
+
var msg = e && e.message ? e.message : "Could not create account";
|
|
1759
|
+
if (msg.indexOf("already registered") >= 0 || msg.indexOf("NAME_TAKEN") >= 0) msg = i.signupTaken || msg;
|
|
1760
|
+
errEl.textContent = msg;
|
|
1761
|
+
errEl.style.display = "block";
|
|
1762
|
+
createBtn.textContent = i.signupCreateBtn || "Create my account";
|
|
1763
|
+
evaluate();
|
|
1764
|
+
}
|
|
1765
|
+
});
|
|
1766
|
+
evaluate();
|
|
1767
|
+
}
|
|
1768
|
+
function maybeShowGoogleSignup() {
|
|
1769
|
+
var params;
|
|
1770
|
+
try {
|
|
1771
|
+
params = new URLSearchParams(location.search);
|
|
1772
|
+
} catch {
|
|
1773
|
+
return;
|
|
1774
|
+
}
|
|
1775
|
+
if (params.get("aimeat_signup") !== "1") return;
|
|
1776
|
+
function showExpired() {
|
|
1777
|
+
function open(i) {
|
|
1778
|
+
showSignupNoticeModal(i || {}, {
|
|
1779
|
+
title: i && i.signupExpiredTitle || "Sign-in session expired",
|
|
1780
|
+
body: i && i.signupExpiredBody || "Your sign-in session expired or was interrupted. No password is needed — just click “Continue with Google” again to restart.",
|
|
1781
|
+
primaryLabel: i && i.signupExpiredOkBtn || "OK",
|
|
1782
|
+
showCancel: false
|
|
1783
|
+
});
|
|
1784
|
+
}
|
|
1785
|
+
loadModalI18n(currentModalLang()).then(open).catch(function() {
|
|
1786
|
+
open({});
|
|
1787
|
+
});
|
|
1788
|
+
}
|
|
1789
|
+
api("/v1/ghii/login/pending", { credentials: "include" }).then(function(res) {
|
|
1790
|
+
var pending = res && res.data;
|
|
1791
|
+
if (!pending) {
|
|
1792
|
+
showExpired();
|
|
1793
|
+
return;
|
|
1794
|
+
}
|
|
1795
|
+
loadModalI18n(currentModalLang()).then(function(i) {
|
|
1796
|
+
showGoogleSignupModal(pending, i || {});
|
|
1797
|
+
}).catch(function() {
|
|
1798
|
+
showGoogleSignupModal(pending, {});
|
|
1799
|
+
});
|
|
1800
|
+
}).catch(function() {
|
|
1801
|
+
showExpired();
|
|
1802
|
+
});
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
// src/static/sdk-libs/_core/namespace.js
|
|
1806
|
+
function namespace() {
|
|
1807
|
+
if (!window.AIMEAT) window.AIMEAT = {};
|
|
1808
|
+
return window.AIMEAT;
|
|
1809
|
+
}
|
|
1810
|
+
function attach(key, value) {
|
|
1811
|
+
const ns2 = namespace();
|
|
1812
|
+
ns2[key] = value;
|
|
1813
|
+
return ns2;
|
|
1814
|
+
}
|
|
1815
|
+
|
|
1816
|
+
// src/static/sdk-libs/auth/index.js
|
|
1817
|
+
if (typeof document !== "undefined" && document.addEventListener) {
|
|
1818
|
+
if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", maybeShowGoogleSignup);
|
|
1819
|
+
else maybeShowGoogleSignup();
|
|
1820
|
+
}
|
|
1821
|
+
if (typeof document !== "undefined" && document.addEventListener) {
|
|
1822
|
+
document.addEventListener("visibilitychange", () => {
|
|
1823
|
+
if (document.visibilityState === "visible") refreshOnFocus();
|
|
1824
|
+
});
|
|
1825
|
+
}
|
|
1826
|
+
if (typeof window !== "undefined" && window.addEventListener) {
|
|
1827
|
+
window.addEventListener("focus", refreshOnFocus);
|
|
1828
|
+
}
|
|
1829
|
+
var ns = attach("auth", auth);
|
|
1830
|
+
ns.version = "2026-07-02-001";
|
|
1831
|
+
})();
|