@undefineds.co/xpod 0.4.10 → 0.4.12
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/config/components-ignore.json +5 -1
- package/config/notifications.json +68 -0
- package/config/xpod.base.json +9 -11
- package/dist/ai/service/AiCredentialSecret.d.ts +30 -0
- package/dist/ai/service/AiCredentialSecret.js +120 -0
- package/dist/ai/service/CredentialReaderImpl.d.ts +18 -0
- package/dist/ai/service/CredentialReaderImpl.js +81 -5
- package/dist/ai/service/CredentialReaderImpl.jsonld +42 -2
- package/dist/ai/service/EmbeddingModelPolicy.d.ts +79 -0
- package/dist/ai/service/EmbeddingModelPolicy.js +134 -0
- package/dist/ai/service/EmbeddingProviderError.js +6 -0
- package/dist/ai/service/EmbeddingServiceImpl.d.ts +13 -1
- package/dist/ai/service/EmbeddingServiceImpl.js +18 -5
- package/dist/ai/service/EmbeddingServiceImpl.jsonld +35 -0
- package/dist/ai/service/index.d.ts +2 -0
- package/dist/ai/service/index.js +2 -0
- package/dist/api/ai-gateway/connect/index.d.ts +20 -2
- package/dist/api/ai-gateway/connect/index.js +162 -16
- package/dist/api/ai-gateway/credentials/AiCredentialSecretDecoder.d.ts +12 -0
- package/dist/api/ai-gateway/credentials/AiCredentialSecretDecoder.js +30 -0
- package/dist/api/ai-gateway/errors.d.ts +1 -1
- package/dist/api/ai-gateway/models/GatewayEmbeddingModelCatalog.d.ts +11 -0
- package/dist/api/ai-gateway/models/GatewayEmbeddingModelCatalog.js +31 -0
- package/dist/api/ai-gateway/models/PodModelSelectionRepository.js +7 -3
- package/dist/api/ai-gateway/models/ProviderCustomModelsService.d.ts +18 -0
- package/dist/api/ai-gateway/models/ProviderCustomModelsService.js +23 -0
- package/dist/api/ai-gateway/models/ProviderModelDiscoveryAdapters.d.ts +3 -1
- package/dist/api/ai-gateway/models/ProviderModelDiscoveryAdapters.js +2 -45
- package/dist/api/ai-gateway/models/ProviderModelSelectionService.d.ts +10 -0
- package/dist/api/ai-gateway/models/ProviderModelSelectionService.js +57 -20
- package/dist/api/ai-gateway/models/ProviderModelType.d.ts +28 -0
- package/dist/api/ai-gateway/models/ProviderModelType.js +34 -0
- package/dist/api/ai-gateway/models/ProviderModelsAdapter.d.ts +10 -0
- package/dist/api/ai-gateway/models/ProviderModelsAdapter.js +3 -4
- package/dist/api/ai-gateway/models/index.d.ts +1 -0
- package/dist/api/ai-gateway/models/index.js +3 -1
- package/dist/api/ai-gateway/providers/CustomRuntimeAdapter.d.ts +7 -0
- package/dist/api/ai-gateway/providers/CustomRuntimeAdapter.js +9 -2
- package/dist/api/ai-gateway/providers/ModelsDevCatalog.d.ts +7 -1
- package/dist/api/ai-gateway/providers/ModelsDevCatalog.js +4 -10
- package/dist/api/ai-gateway/providers/ProviderRegistry.d.ts +107 -0
- package/dist/api/ai-gateway/providers/ProviderRegistry.js +244 -21
- package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.d.ts +5 -0
- package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.js +5 -1
- package/dist/api/ai-gateway/quota/SubscriptionQuotaAdapters.d.ts +12 -4
- package/dist/api/ai-gateway/quota/SubscriptionQuotaAdapters.js +11 -11
- package/dist/api/ai-gateway/routing/ModelRouter.d.ts +14 -0
- package/dist/api/ai-gateway/routing/ModelRouter.js +43 -4
- package/dist/api/ai-gateway/service-access/AiConnectionsServiceAccess.d.ts +9 -1
- package/dist/api/ai-gateway/service-access/AiConnectionsServiceAccess.js +3 -27
- package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +0 -1
- package/dist/api/auth/ClientCredentialsAuthenticator.js +0 -3
- package/dist/api/auth/index.d.ts +1 -0
- package/dist/api/auth/index.js +1 -1
- package/dist/api/chatkit/pod-store.d.ts +31 -0
- package/dist/api/chatkit/pod-store.js +132 -8
- package/dist/api/container/common.js +24 -4
- package/dist/api/container/routes.js +17 -2
- package/dist/api/container/types.d.ts +3 -1
- package/dist/api/handlers/AdminHandler.d.ts +13 -0
- package/dist/api/handlers/AdminHandler.js +47 -18
- package/dist/api/handlers/AiConfigHandler.d.ts +6 -0
- package/dist/api/handlers/AiConfigHandler.js +28 -0
- package/dist/api/handlers/AiGatewayManagementHandler.js +36 -0
- package/dist/api/runs/RdfRunContextRetriever.d.ts +14 -0
- package/dist/api/runs/RdfRunContextRetriever.js +41 -5
- package/dist/api/runtime.js +2 -1
- package/dist/cli/commands/secret.d.ts +1 -0
- package/dist/cli/commands/secret.js +25 -7
- package/dist/components/components.jsonld +3 -1
- package/dist/components/context.jsonld +53 -1
- package/dist/http/SubgraphSparqlHttpHandler.d.ts +59 -2
- package/dist/http/SubgraphSparqlHttpHandler.js +145 -13
- package/dist/http/SubgraphSparqlHttpHandler.jsonld +37 -0
- package/dist/identity/drizzle/AccountRoleRepository.d.ts +30 -2
- package/dist/identity/drizzle/AccountRoleRepository.js +163 -15
- package/dist/identity/drizzle/EdgeNodeRepository.d.ts +0 -12
- package/dist/identity/drizzle/EdgeNodeRepository.js +5 -13
- package/dist/identity/drizzle/PodLookupRepository.d.ts +58 -4
- package/dist/identity/drizzle/PodLookupRepository.js +248 -105
- package/dist/identity/drizzle/db.d.ts +19 -0
- package/dist/identity/drizzle/db.js +39 -4
- package/dist/index.d.ts +2 -1
- package/dist/index.js +7 -3
- package/dist/logging/log-file.d.ts +17 -0
- package/dist/logging/log-file.js +69 -0
- package/dist/main.js +2 -1
- package/dist/notifications/NotificationChannelSweeper.d.ts +50 -0
- package/dist/notifications/NotificationChannelSweeper.js +131 -0
- package/dist/notifications/NotificationChannelSweeper.jsonld +136 -0
- package/dist/notifications/ReclaimingWebSocket2023Storer.d.ts +25 -0
- package/dist/notifications/ReclaimingWebSocket2023Storer.js +56 -0
- package/dist/notifications/ReclaimingWebSocket2023Storer.jsonld +77 -0
- package/dist/notifications/index.d.ts +2 -0
- package/dist/notifications/index.js +2 -0
- package/dist/runtime/Proxy.d.ts +37 -0
- package/dist/runtime/Proxy.js +88 -16
- package/dist/runtime/bootstrap.js +2 -1
- package/dist/runtime/upgrade/BunNativeUpgradeRelay.d.ts +116 -0
- package/dist/runtime/upgrade/BunNativeUpgradeRelay.js +423 -0
- package/dist/runtime/upgrade/UpgradeHandshake.d.ts +63 -0
- package/dist/runtime/upgrade/UpgradeHandshake.js +199 -0
- package/dist/runtime/upgrade/WebSocketFrames.d.ts +67 -0
- package/dist/runtime/upgrade/WebSocketFrames.js +224 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiApiKeyPool.js +8 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiAuthorizationActions.d.ts +11 -2
- package/node_modules/@undefineds.co/ai-connections/dist/AiAuthorizationActions.js +27 -10
- package/node_modules/@undefineds.co/ai-connections/dist/AiClientConfigurationSection.d.ts +7 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiClientConfigurationSection.js +13 -11
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectDialog.js +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectionsList.js +10 -6
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectionsMain.d.ts +15 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectionsMain.js +29 -3
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectionsMainHeader.js +18 -3
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectionsPanel.d.ts +16 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectionsPanel.js +92 -20
- package/node_modules/@undefineds.co/ai-connections/dist/AiCopyButton.d.ts +35 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiCopyButton.js +45 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiCredentialPoolSection.js +71 -11
- package/node_modules/@undefineds.co/ai-connections/dist/AiCredentialRow.js +9 -7
- package/node_modules/@undefineds.co/ai-connections/dist/AiEndpointList.d.ts +23 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiEndpointList.js +24 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiGatewayKeysSection.d.ts +13 -4
- package/node_modules/@undefineds.co/ai-connections/dist/AiGatewayKeysSection.js +35 -38
- package/node_modules/@undefineds.co/ai-connections/dist/AiGatewayModelsSection.d.ts +21 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiGatewayModelsSection.js +51 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiInfoTooltip.d.ts +15 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiInfoTooltip.js +16 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiModelCatalog.d.ts +175 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiModelCatalog.js +133 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiOfferingDetails.js +2 -2
- package/node_modules/@undefineds.co/ai-connections/dist/AiProviderCard.js +13 -64
- package/node_modules/@undefineds.co/ai-connections/dist/AiProviderHeader.d.ts +21 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiProviderHeader.js +12 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiRowAction.d.ts +15 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiRowAction.js +12 -0
- package/node_modules/@undefineds.co/ai-connections/dist/AiSortableCredentialList.js +2 -1
- package/node_modules/@undefineds.co/ai-connections/dist/ai-connections-client.d.ts +7 -0
- package/node_modules/@undefineds.co/ai-connections/dist/ai-connections-client.js +6 -0
- package/node_modules/@undefineds.co/ai-connections/dist/authorization-methods.d.ts +36 -5
- package/node_modules/@undefineds.co/ai-connections/dist/authorization-methods.js +52 -9
- package/node_modules/@undefineds.co/ai-connections/dist/client/normalize.js +30 -3
- package/node_modules/@undefineds.co/ai-connections/dist/client/types.d.ts +21 -1
- package/node_modules/@undefineds.co/ai-connections/dist/client-config/base-adapter.d.ts +1 -3
- package/node_modules/@undefineds.co/ai-connections/dist/client-config/base-adapter.js +3 -7
- package/node_modules/@undefineds.co/ai-connections/dist/client-config/index.cjs +9 -7
- package/node_modules/@undefineds.co/ai-connections/dist/collection-runtime.d.ts +46 -0
- package/node_modules/@undefineds.co/ai-connections/dist/collection-runtime.js +231 -0
- package/node_modules/@undefineds.co/ai-connections/dist/collections.d.ts +119 -0
- package/node_modules/@undefineds.co/ai-connections/dist/collections.js +173 -0
- package/node_modules/@undefineds.co/ai-connections/dist/controller.d.ts +71 -5
- package/node_modules/@undefineds.co/ai-connections/dist/controller.js +285 -16
- package/node_modules/@undefineds.co/ai-connections/dist/credential-labels.d.ts +5 -0
- package/node_modules/@undefineds.co/ai-connections/dist/credential-labels.js +8 -3
- package/node_modules/@undefineds.co/ai-connections/dist/credential-storage.d.ts +59 -0
- package/node_modules/@undefineds.co/ai-connections/dist/credential-storage.js +131 -0
- package/node_modules/@undefineds.co/ai-connections/dist/endpoint-urls.d.ts +15 -0
- package/node_modules/@undefineds.co/ai-connections/dist/endpoint-urls.js +20 -0
- package/node_modules/@undefineds.co/ai-connections/dist/gateway-endpoints.d.ts +14 -0
- package/node_modules/@undefineds.co/ai-connections/dist/gateway-endpoints.js +20 -0
- package/node_modules/@undefineds.co/ai-connections/dist/index.d.ts +8 -0
- package/node_modules/@undefineds.co/ai-connections/dist/index.js +8 -0
- package/node_modules/@undefineds.co/ai-connections/dist/manifest.js +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/offering-endpoints.d.ts +14 -0
- package/node_modules/@undefineds.co/ai-connections/dist/offering-endpoints.js +17 -0
- package/node_modules/@undefineds.co/ai-connections/dist/provider-catalog.cjs +68 -1
- package/node_modules/@undefineds.co/ai-connections/dist/provider-catalog.d.ts +75 -1
- package/node_modules/@undefineds.co/ai-connections/dist/provider-catalog.js +119 -0
- package/node_modules/@undefineds.co/ai-connections/dist/provider-visuals.d.ts +5 -0
- package/node_modules/@undefineds.co/ai-connections/dist/provider-visuals.js +5 -0
- package/node_modules/@undefineds.co/ai-connections/dist/service-access.js +2 -27
- package/node_modules/@undefineds.co/ai-connections/package.json +1 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/manifest.d.ts +1 -1
- package/node_modules/@undefineds.co/extension-sdk/dist/manifest.js +2 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/web.d.ts +150 -0
- package/node_modules/@undefineds.co/extension-sdk/package.json +2 -1
- package/node_modules/@undefineds.co/models/README.md +1 -1
- package/node_modules/@undefineds.co/models/dist/ai-config/index.d.ts +3 -3
- package/node_modules/@undefineds.co/models/dist/ai-gateway.schema.d.ts +5 -0
- package/node_modules/@undefineds.co/models/dist/ai-gateway.schema.js +9 -0
- package/node_modules/@undefineds.co/models/dist/ai-runtime.repository.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/approval.repository.d.ts +2 -2
- package/node_modules/@undefineds.co/models/dist/audit.presentation.d.ts +2 -2
- package/node_modules/@undefineds.co/models/dist/capture.repository.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/chat-project.repository.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/chat.repository.d.ts +2 -2
- package/node_modules/@undefineds.co/models/dist/control-request.repository.d.ts +2 -2
- package/node_modules/@undefineds.co/models/dist/conversation-share.repository.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/credential.schema.d.ts +12 -0
- package/node_modules/@undefineds.co/models/dist/credential.schema.js +15 -1
- package/node_modules/@undefineds.co/models/dist/discovery/index.d.ts +2 -2
- package/node_modules/@undefineds.co/models/dist/discovery/providers.json +248 -7
- package/node_modules/@undefineds.co/models/dist/discovery/types.d.ts +31 -0
- package/node_modules/@undefineds.co/models/dist/extension/index.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/favorite/index.d.ts +2 -2
- package/node_modules/@undefineds.co/models/dist/fixtures/contracts-chat-contact.d.ts +5 -5
- package/node_modules/@undefineds.co/models/dist/import/index.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/index.d.ts +73 -73
- package/node_modules/@undefineds.co/models/dist/index.js +1 -1
- package/node_modules/@undefineds.co/models/dist/input-request.repository.d.ts +2 -2
- package/node_modules/@undefineds.co/models/dist/knowledge/index.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/message.repository.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/namespaces.js +5 -0
- package/node_modules/@undefineds.co/models/dist/pod-storage-descriptor.d.ts +4815 -26
- package/node_modules/@undefineds.co/models/dist/pod-storage-descriptor.js +482 -132
- package/node_modules/@undefineds.co/models/dist/schema.d.ts +4 -0
- package/node_modules/@undefineds.co/models/dist/session/index.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/settings/index.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/sidecar/persistence-mapping.d.ts +5 -5
- package/node_modules/@undefineds.co/models/dist/thread.repository.d.ts +2 -2
- package/node_modules/@undefineds.co/models/dist/types/message-block.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/vocab/_namespaces.d.ts +1 -1
- package/node_modules/@undefineds.co/models/dist/vocab/index.d.ts +10 -10
- package/node_modules/@undefineds.co/models/dist/vocab/sidecar.vocab.d.ts +1 -0
- package/node_modules/@undefineds.co/models/dist/vocab/sidecar.vocab.js +1 -0
- package/node_modules/@undefineds.co/models/package.json +4 -2
- package/node_modules/@undefineds.co/pod-collections/README.md +71 -0
- package/node_modules/@undefineds.co/pod-collections/dist/diff.d.ts +85 -0
- package/node_modules/@undefineds.co/pod-collections/dist/diff.js +166 -0
- package/node_modules/@undefineds.co/pod-collections/dist/feed.d.ts +17 -0
- package/node_modules/@undefineds.co/pod-collections/dist/feed.js +27 -0
- package/node_modules/@undefineds.co/pod-collections/dist/index.cjs +1042 -0
- package/node_modules/@undefineds.co/pod-collections/dist/index.d.ts +37 -0
- package/node_modules/@undefineds.co/pod-collections/dist/index.js +89 -0
- package/node_modules/@undefineds.co/pod-collections/dist/layout.d.ts +75 -0
- package/node_modules/@undefineds.co/pod-collections/dist/layout.js +173 -0
- package/node_modules/@undefineds.co/pod-collections/dist/mapping.d.ts +78 -0
- package/node_modules/@undefineds.co/pod-collections/dist/mapping.js +287 -0
- package/node_modules/@undefineds.co/pod-collections/dist/mutations.d.ts +83 -0
- package/node_modules/@undefineds.co/pod-collections/dist/mutations.js +273 -0
- package/node_modules/@undefineds.co/pod-collections/dist/react.d.ts +21 -0
- package/node_modules/@undefineds.co/pod-collections/dist/react.js +22 -0
- package/node_modules/@undefineds.co/pod-collections/dist/read.d.ts +65 -0
- package/node_modules/@undefineds.co/pod-collections/dist/read.js +31 -0
- package/node_modules/@undefineds.co/pod-collections/dist/sync.d.ts +66 -0
- package/node_modules/@undefineds.co/pod-collections/dist/sync.js +260 -0
- package/node_modules/@undefineds.co/pod-collections/dist/types.d.ts +155 -0
- package/node_modules/@undefineds.co/pod-collections/dist/types.js +9 -0
- package/node_modules/@undefineds.co/pod-collections/package.json +42 -0
- package/node_modules/@undefineds.co/shared-ui/dist/index.d.ts +0 -1
- package/node_modules/@undefineds.co/shared-ui/dist/index.js +0 -1
- package/package.json +15 -7
- package/static/app/assets/main.css +1 -1
- package/static/app/assets/main.js +12 -13
- package/static/auth-callback/assets/AiConfigContext-DnQs1ZpW.js +1 -0
- package/static/auth-callback/assets/AiConfigPage-DOtvlxH0.js +1 -0
- package/static/auth-callback/assets/DocumentProcessingPanel-BS2voQgL.js +1 -0
- package/static/auth-callback/assets/IndexLifecyclePanel-Cvt0cJtN.js +1 -0
- package/static/auth-callback/assets/{IndexSubjectPanel-C4YG0whI.js → IndexSubjectPanel-Dhf01GqF.js} +1 -1
- package/static/auth-callback/assets/ModelAssignmentsPanel-BJutWaAF.js +1 -0
- package/static/auth-callback/assets/ModelsPage-BRS0sje3.js +11 -0
- package/static/auth-callback/assets/{NetworkPage-Cbdn_P1e.js → NetworkPage-B3qBfANA.js} +2 -2
- package/static/auth-callback/assets/{PaneListHeader-jy70Q00L.js → PaneListHeader-QQeJGTp4.js} +1 -1
- package/static/auth-callback/assets/SearchIndexingPanel-MyNUSEwT.js +1 -0
- package/static/auth-callback/assets/{StatusSubjectPanel-hfjoB5aS.js → StatusSubjectPanel-DQkEVsFs.js} +1 -1
- package/static/{settings/assets/StatusWorkspace-CKD_Rzdr.js → auth-callback/assets/StatusWorkspace-Dkv63Uwk.js} +1 -1
- package/static/auth-callback/assets/SystemSettingsPage-TIsUfX5d.js +1 -0
- package/static/auth-callback/assets/SystemSettingsSubjectPanel-BJWEt2-7.js +33 -0
- package/static/auth-callback/assets/XpodAiConnectionsPodStore-BJiXm-PF.js +3 -0
- package/static/auth-callback/assets/{activity-BcsZZxxw.js → activity-5hNeNKnL.js} +1 -1
- package/static/auth-callback/assets/admin-C6qCRFiY.js +1 -0
- package/static/auth-callback/assets/ai-connections-CryuHGKW.js +1 -0
- package/static/auth-callback/assets/{auth-callback-atKg_oig.js → auth-callback-CAFZ3R0B.js} +80 -84
- package/static/auth-callback/assets/auth-callback-rk080mvG.css +1 -0
- package/static/auth-callback/assets/{badge-BWbRHThQ.js → badge-CAIPI0CB.js} +1 -1
- package/static/auth-callback/assets/collection-runtime-D9s7h9YA.js +1 -0
- package/static/auth-callback/assets/dialog-BjA109aX.js +1 -0
- package/static/auth-callback/assets/{download-BmvG1Vya.js → download-B3Up5W2G.js} +1 -1
- package/static/auth-callback/assets/{external-link-DZ34d3g3.js → external-link-BTXgSPzB.js} +1 -1
- package/static/auth-callback/assets/index-BppXlxcp.js +41 -0
- package/static/auth-callback/assets/index-CirW4CJf.js +1 -0
- package/static/auth-callback/assets/index-DlLYWOhw.js +4 -0
- package/static/auth-callback/assets/{index-browser-B9Z7GU-T.js → index-browser-DtU38ni3.js} +1 -1
- package/static/auth-callback/assets/{key-round-tjP76Se-.js → key-round-CQCOrZ7x.js} +1 -1
- package/static/auth-callback/assets/layout-DB3pMyTl.js +1 -0
- package/static/auth-callback/assets/pod-collections-host-KnnGFZHL.js +8 -0
- package/static/auth-callback/assets/{rotate-ccw-C_L5ZLx1.js → rotate-ccw-C1zM2KtS.js} +1 -1
- package/static/auth-callback/assets/settings-projection-CUkyprDQ.js +1 -0
- package/static/auth-callback/assets/{skeleton-C7tGDQIs.js → skeleton-Cqp7_M9-.js} +1 -1
- package/static/auth-callback/assets/{waypoints-VMNQlWdU.js → waypoints-Bj6gAUSQ.js} +1 -1
- package/static/auth-callback/assets/{workspace-layout-SAp6BtYK.js → workspace-layout-DK8mDzrY.js} +1 -1
- package/static/auth-callback/auth-callback.html +2 -2
- package/static/dashboard/assets/AiConfigContext-BsE7MqX8.js +1 -0
- package/static/dashboard/assets/AiConfigPage-DvM-lRXa.js +1 -0
- package/static/dashboard/assets/DocumentProcessingPanel-BPfdlfuf.js +1 -0
- package/static/dashboard/assets/IndexLifecyclePanel--m0AGxvh.js +1 -0
- package/static/dashboard/assets/{IndexSubjectPanel-DQFPP6-p.js → IndexSubjectPanel-Bb7m1k3d.js} +1 -1
- package/static/dashboard/assets/ModelAssignmentsPanel-BLi_zbMa.js +1 -0
- package/static/dashboard/assets/ModelsPage-CxdpgnfR.js +11 -0
- package/static/dashboard/assets/{NetworkPage-CHQ3YxIB.js → NetworkPage-BAIPw-D_.js} +2 -2
- package/static/dashboard/assets/{PaneListHeader-DsXemAdR.js → PaneListHeader-BBCMei0r.js} +1 -1
- package/static/dashboard/assets/SearchIndexingPanel-Ck4Y-xjR.js +1 -0
- package/static/dashboard/assets/{StatusSubjectPanel-D3PGEYT4.js → StatusSubjectPanel-D1KWfAXE.js} +1 -1
- package/static/dashboard/assets/{StatusWorkspace-BcpePYUW.js → StatusWorkspace-JbA5gzXx.js} +1 -1
- package/static/dashboard/assets/SystemSettingsPage-BbwQWsSR.js +1 -0
- package/static/dashboard/assets/SystemSettingsSubjectPanel-N117nMt5.js +33 -0
- package/static/dashboard/assets/XpodAiConnectionsPodStore-CdDOb4SV.js +18 -0
- package/static/dashboard/assets/{activity-j5zrznu-.js → activity-DX1I96o_.js} +1 -1
- package/static/dashboard/assets/admin-C6qCRFiY.js +1 -0
- package/static/dashboard/assets/ai-connections-DwCRqOQa.js +1 -0
- package/static/dashboard/assets/{badge-CzeBdG7h.js → badge-k2vhtDqH.js} +1 -1
- package/static/dashboard/assets/collection-runtime-BFQ8teQJ.js +1 -0
- package/static/dashboard/assets/{dashboard-D-xANHk1.js → dashboard-DWZ-fmCT.js} +105 -109
- package/static/dashboard/assets/dashboard-rk080mvG.css +1 -0
- package/static/dashboard/assets/dialog-1CCw-iHT.js +1 -0
- package/static/dashboard/assets/{download-IcNdEZWi.js → download-C6-SNY1q.js} +1 -1
- package/static/dashboard/assets/{external-link-DxBxK8Vu.js → external-link-BgPcZ_j2.js} +1 -1
- package/static/dashboard/assets/index-6LcIUIYO.js +1 -0
- package/static/dashboard/assets/index-D7A8U6Pt.js +41 -0
- package/static/dashboard/assets/index-UD6QOE7H.js +4 -0
- package/static/dashboard/assets/{key-round-D1K7warM.js → key-round-BOd7Jo0Q.js} +1 -1
- package/static/dashboard/assets/layout-DB3pMyTl.js +1 -0
- package/static/dashboard/assets/pod-collections-host-KnnGFZHL.js +8 -0
- package/static/dashboard/assets/{rotate-ccw-CcN1N6p9.js → rotate-ccw-CCgJqsvx.js} +1 -1
- package/static/dashboard/assets/settings-projection-CUkyprDQ.js +1 -0
- package/static/dashboard/assets/{skeleton-CKnmJMUH.js → skeleton-Bc7abAn5.js} +1 -1
- package/static/dashboard/assets/{waypoints-DuZPO_wu.js → waypoints-s-opmJxx.js} +1 -1
- package/static/dashboard/assets/{workspace-layout-BUj3wZ_m.js → workspace-layout-DqIQeTBV.js} +1 -1
- package/static/dashboard/dashboard.html +2 -2
- package/static/settings/assets/AiConfigContext-BB9KZySa.js +1 -0
- package/static/settings/assets/AiConfigPage-DGSXUkLs.js +1 -0
- package/static/settings/assets/DocumentProcessingPanel-Da2Re6Rg.js +1 -0
- package/static/settings/assets/IndexLifecyclePanel-BSZuIzgr.js +1 -0
- package/static/settings/assets/{IndexSubjectPanel-73sM16Ma.js → IndexSubjectPanel-CFd0ay-r.js} +1 -1
- package/static/settings/assets/ModelAssignmentsPanel-CSAryvWJ.js +1 -0
- package/static/settings/assets/ModelsPage-BQwCwLHU.js +11 -0
- package/static/settings/assets/{NetworkPage-i6j-M2RY.js → NetworkPage-BKymvsQc.js} +2 -2
- package/static/settings/assets/{PaneListHeader-DpqC0jd5.js → PaneListHeader-Bjh3hRdQ.js} +1 -1
- package/static/settings/assets/SearchIndexingPanel-MjKL5QLU.js +1 -0
- package/static/settings/assets/{StatusSubjectPanel-Dv4q3PGh.js → StatusSubjectPanel-Bvl6K4mx.js} +1 -1
- package/static/settings/assets/StatusWorkspace-B0NzrP--.js +1 -0
- package/static/settings/assets/SystemSettingsPage-D2z6Z4FE.js +1 -0
- package/static/settings/assets/SystemSettingsSubjectPanel-4sxma4X4.js +33 -0
- package/static/settings/assets/XpodAiConnectionsPodStore-BkNQ8fZx.js +3 -0
- package/static/settings/assets/{activity-DaFkk8f3.js → activity-CgJJGpjx.js} +1 -1
- package/static/settings/assets/admin-C6qCRFiY.js +1 -0
- package/static/settings/assets/ai-connections-CryuHGKW.js +1 -0
- package/static/settings/assets/{badge-d5SHdc-x.js → badge-C4NypVyT.js} +1 -1
- package/static/settings/assets/collection-runtime-CTLCDxAi.js +1 -0
- package/static/settings/assets/dialog-Csq0vWUi.js +1 -0
- package/static/settings/assets/{download-CpkwomDr.js → download-DaLJJ-Wp.js} +1 -1
- package/static/settings/assets/{external-link-_4YT42Mf.js → external-link--w_iW5Au.js} +1 -1
- package/static/settings/assets/index-B0mQa59b.js +4 -0
- package/static/settings/assets/index-BukHiu4y.js +1 -0
- package/static/settings/assets/index-COmVnZi2.js +41 -0
- package/static/settings/assets/{index-browser-B06xjBdZ.js → index-browser-BGpvHwD0.js} +1 -1
- package/static/settings/assets/{key-round-Dlqmp1Kq.js → key-round-Bk4YRjBu.js} +1 -1
- package/static/settings/assets/layout-DB3pMyTl.js +1 -0
- package/static/settings/assets/pod-collections-host-KnnGFZHL.js +8 -0
- package/static/settings/assets/{rotate-ccw-TAY65xWT.js → rotate-ccw-TCabbqsr.js} +1 -1
- package/static/settings/assets/{settings-ExBXGgbj.js → settings-CJWpdbNC.js} +105 -109
- package/static/settings/assets/settings-projection-CUkyprDQ.js +1 -0
- package/static/settings/assets/settings-rk080mvG.css +1 -0
- package/static/settings/assets/{skeleton-DKIWjNr9.js → skeleton-JDHYVe7t.js} +1 -1
- package/static/settings/assets/{waypoints-9erLIxyR.js → waypoints-DDvEl-MU.js} +1 -1
- package/static/settings/assets/{workspace-layout-CYXfYIa3.js → workspace-layout-DV5QU30U.js} +1 -1
- package/static/settings/settings.html +2 -2
- package/node_modules/@undefineds.co/shared-ui/dist/oidc-consent.d.ts +0 -54
- package/node_modules/@undefineds.co/shared-ui/dist/oidc-consent.js +0 -21
- package/static/auth-callback/assets/AiConfigContext-C81deMM9.js +0 -1
- package/static/auth-callback/assets/AiConfigPage-evWI8T56.js +0 -1
- package/static/auth-callback/assets/DocumentProcessingPanel-B9GrDEMe.js +0 -1
- package/static/auth-callback/assets/IndexLifecyclePanel-qCo8ABQZ.js +0 -1
- package/static/auth-callback/assets/ModelAssignmentsPanel-DG7Lxh3t.js +0 -1
- package/static/auth-callback/assets/ModelsPage-CgEuqE6p.js +0 -10
- package/static/auth-callback/assets/SearchIndexingPanel-ByU3u7kp.js +0 -1
- package/static/auth-callback/assets/StatusWorkspace-BZd617sV.js +0 -1
- package/static/auth-callback/assets/SystemSettingsPage-BirzWAQM.js +0 -1
- package/static/auth-callback/assets/SystemSettingsSubjectPanel-CmsVWNCx.js +0 -31
- package/static/auth-callback/assets/admin-BU4m6Ko2.js +0 -1
- package/static/auth-callback/assets/ai-connections-CHNTKemd.js +0 -1
- package/static/auth-callback/assets/auth-callback-C_7MUXJb.css +0 -1
- package/static/auth-callback/assets/index-BpV1hsqs.js +0 -4
- package/static/auth-callback/assets/index-D9oE6FXK.js +0 -41
- package/static/dashboard/assets/AiConfigContext-De-OtAWo.js +0 -1
- package/static/dashboard/assets/AiConfigPage-macP4Mop.js +0 -1
- package/static/dashboard/assets/DocumentProcessingPanel-C5ObvCCl.js +0 -1
- package/static/dashboard/assets/IndexLifecyclePanel-xVNa2l40.js +0 -1
- package/static/dashboard/assets/ModelAssignmentsPanel-DMOATFpQ.js +0 -1
- package/static/dashboard/assets/ModelsPage-91UbnETA.js +0 -25
- package/static/dashboard/assets/SearchIndexingPanel-Dh70PNFZ.js +0 -1
- package/static/dashboard/assets/SystemSettingsPage-BiN5GcKx.js +0 -1
- package/static/dashboard/assets/SystemSettingsSubjectPanel-B9QrSiFp.js +0 -31
- package/static/dashboard/assets/admin-BU4m6Ko2.js +0 -1
- package/static/dashboard/assets/ai-connections-CHNTKemd.js +0 -1
- package/static/dashboard/assets/dashboard-C_7MUXJb.css +0 -1
- package/static/dashboard/assets/index-FWZ-s52O.js +0 -41
- package/static/dashboard/assets/index-ZiQZ96oC.js +0 -4
- package/static/settings/assets/AiConfigContext-C0cQMPfG.js +0 -1
- package/static/settings/assets/AiConfigPage-CPhB4iFb.js +0 -1
- package/static/settings/assets/DocumentProcessingPanel-sYI7OpuH.js +0 -1
- package/static/settings/assets/IndexLifecyclePanel-yj8iyiT8.js +0 -1
- package/static/settings/assets/ModelAssignmentsPanel-BFIgUX5v.js +0 -1
- package/static/settings/assets/ModelsPage-BdppXl7E.js +0 -10
- package/static/settings/assets/SearchIndexingPanel-BlPnrkT3.js +0 -1
- package/static/settings/assets/SystemSettingsPage-CiOm2NzV.js +0 -1
- package/static/settings/assets/SystemSettingsSubjectPanel-Cd-GECon.js +0 -31
- package/static/settings/assets/admin-BU4m6Ko2.js +0 -1
- package/static/settings/assets/ai-connections-CHNTKemd.js +0 -1
- package/static/settings/assets/index-BFi9yn7_.js +0 -41
- package/static/settings/assets/index-BGgEhIUy.js +0 -4
- package/static/settings/assets/settings-C_7MUXJb.css +0 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Deployment policy for embedding models and their endpoint.
|
|
4
|
+
*
|
|
5
|
+
* The ai-gateway provider catalog is the authority for which models a
|
|
6
|
+
* deployment provides. A Cloud deployment must not offer arbitrary embedding
|
|
7
|
+
* models — not even through a BYOK credential — and a Cloud user cannot supply an
|
|
8
|
+
* endpoint: the catalog names the provider and the endpoint, the user only brings
|
|
9
|
+
* an API key. A Local deployment may use any model and any endpoint the user
|
|
10
|
+
* configures. This module is the single decision point so the registration,
|
|
11
|
+
* configuration and runtime paths cannot drift apart.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.EmbeddingModelPolicy = exports.EmbeddingEndpointNotProvidedError = exports.EmbeddingModelNotAllowedError = exports.EmbeddingPolicyError = exports.EMBEDDING_ENDPOINT_NOT_PROVIDED = exports.EMBEDDING_MODEL_NOT_ALLOWED = void 0;
|
|
15
|
+
exports.createEmbeddingModelPolicy = createEmbeddingModelPolicy;
|
|
16
|
+
exports.isEmbeddingPolicyRejection = isEmbeddingPolicyRejection;
|
|
17
|
+
exports.isEmbeddingModelNotAllowedError = isEmbeddingModelNotAllowedError;
|
|
18
|
+
exports.parseEmbeddingModelRef = parseEmbeddingModelRef;
|
|
19
|
+
exports.EMBEDDING_MODEL_NOT_ALLOWED = 'embedding_model_not_allowed';
|
|
20
|
+
exports.EMBEDDING_ENDPOINT_NOT_PROVIDED = 'embedding_endpoint_not_provided';
|
|
21
|
+
const POLICY_REJECTION_CODES = new Set([
|
|
22
|
+
exports.EMBEDDING_MODEL_NOT_ALLOWED,
|
|
23
|
+
exports.EMBEDDING_ENDPOINT_NOT_PROVIDED,
|
|
24
|
+
]);
|
|
25
|
+
class EmbeddingPolicyError extends Error {
|
|
26
|
+
constructor(code, message) {
|
|
27
|
+
super(message);
|
|
28
|
+
this.code = code;
|
|
29
|
+
this.name = new.target.name;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.EmbeddingPolicyError = EmbeddingPolicyError;
|
|
33
|
+
class EmbeddingModelNotAllowedError extends EmbeddingPolicyError {
|
|
34
|
+
constructor(provider, model) {
|
|
35
|
+
super(exports.EMBEDDING_MODEL_NOT_ALLOWED, `Embedding model "${model}" is not provided for provider "${provider}" in this deployment`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.EmbeddingModelNotAllowedError = EmbeddingModelNotAllowedError;
|
|
39
|
+
class EmbeddingEndpointNotProvidedError extends EmbeddingPolicyError {
|
|
40
|
+
constructor(provider) {
|
|
41
|
+
super(exports.EMBEDDING_ENDPOINT_NOT_PROVIDED, `No embedding endpoint is provided for provider "${provider}" in this deployment`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.EmbeddingEndpointNotProvidedError = EmbeddingEndpointNotProvidedError;
|
|
45
|
+
class EmbeddingModelPolicy {
|
|
46
|
+
constructor(catalog) {
|
|
47
|
+
this.catalog = catalog;
|
|
48
|
+
}
|
|
49
|
+
/** Local deployments (and runtimes without a catalog) keep arbitrary BYOK models. */
|
|
50
|
+
static allowAll() {
|
|
51
|
+
return new EmbeddingModelPolicy(undefined);
|
|
52
|
+
}
|
|
53
|
+
static fromCatalog(catalog) {
|
|
54
|
+
return new EmbeddingModelPolicy(catalog);
|
|
55
|
+
}
|
|
56
|
+
isEnforced() {
|
|
57
|
+
return this.catalog !== undefined;
|
|
58
|
+
}
|
|
59
|
+
isAllowed(input) {
|
|
60
|
+
if (!this.catalog) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
const provider = input.provider.trim();
|
|
64
|
+
const model = input.model.trim();
|
|
65
|
+
if (!provider || !model) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
return this.catalog.isManagedEmbeddingModel(provider, model);
|
|
69
|
+
}
|
|
70
|
+
assertAllowed(input) {
|
|
71
|
+
if (!this.isAllowed(input)) {
|
|
72
|
+
throw new EmbeddingModelNotAllowedError(input.provider, input.model);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Resolve the endpoint an embedding call may use.
|
|
77
|
+
*
|
|
78
|
+
* Local (and catalog-less runtimes) keep whatever the Pod carries. A Cloud
|
|
79
|
+
* deployment replaces the Pod endpoint with the one its catalog provides and
|
|
80
|
+
* drops any Pod proxy, so a BYOK key can never redirect Cloud egress.
|
|
81
|
+
*/
|
|
82
|
+
resolveEndpoint(input) {
|
|
83
|
+
if (!this.catalog) {
|
|
84
|
+
return { baseUrl: input.baseUrl, proxyUrl: input.proxyUrl, source: 'pod' };
|
|
85
|
+
}
|
|
86
|
+
const baseUrl = this.catalog.managedEmbeddingBaseUrl(input.provider);
|
|
87
|
+
if (!baseUrl) {
|
|
88
|
+
throw new EmbeddingEndpointNotProvidedError(input.provider);
|
|
89
|
+
}
|
|
90
|
+
return { baseUrl, proxyUrl: undefined, source: 'catalog' };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.EmbeddingModelPolicy = EmbeddingModelPolicy;
|
|
94
|
+
function createEmbeddingModelPolicy(input) {
|
|
95
|
+
if (input.deployment !== 'cloud' || !input.catalog) {
|
|
96
|
+
return EmbeddingModelPolicy.allowAll();
|
|
97
|
+
}
|
|
98
|
+
return EmbeddingModelPolicy.fromCatalog(input.catalog);
|
|
99
|
+
}
|
|
100
|
+
/** True for every deployment rejection, so callers never retry a policy decision. */
|
|
101
|
+
function isEmbeddingPolicyRejection(error) {
|
|
102
|
+
if (error instanceof EmbeddingPolicyError) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
const code = typeof error === 'object' && error !== null ? error.code : undefined;
|
|
106
|
+
return typeof code === 'string' && POLICY_REJECTION_CODES.has(code);
|
|
107
|
+
}
|
|
108
|
+
function isEmbeddingModelNotAllowedError(error) {
|
|
109
|
+
if (error instanceof EmbeddingModelNotAllowedError) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
const code = typeof error === 'object' && error !== null ? error.code : undefined;
|
|
113
|
+
return code === exports.EMBEDDING_MODEL_NOT_ALLOWED;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Parse an AI Config model assignment (`settings/providers/<provider>.ttl#<model>`
|
|
117
|
+
* or its absolute form) into the provider/model pair the policy checks. A ref
|
|
118
|
+
* that does not name both cannot be proven to be provided, so it resolves to
|
|
119
|
+
* `undefined` and an enforcing policy rejects it.
|
|
120
|
+
*/
|
|
121
|
+
function parseEmbeddingModelRef(ref) {
|
|
122
|
+
const trimmed = ref.trim();
|
|
123
|
+
const hashIndex = trimmed.lastIndexOf('#');
|
|
124
|
+
if (hashIndex < 0) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const provider = /(?:^|\/)settings\/providers\/([^/]+)\.ttl$/u.exec(trimmed.slice(0, hashIndex))?.[1];
|
|
128
|
+
const model = trimmed.slice(hashIndex + 1).trim();
|
|
129
|
+
if (!provider || !model) {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
return { provider: decodeURIComponent(provider), model: decodeURIComponent(model) };
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=EmbeddingModelPolicy.js.map
|
|
@@ -2,11 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.classifyEmbeddingProviderFailure = classifyEmbeddingProviderFailure;
|
|
4
4
|
const ai_1 = require("ai");
|
|
5
|
+
const EmbeddingModelPolicy_1 = require("./EmbeddingModelPolicy");
|
|
5
6
|
/** Classify AI SDK failures without inspecting provider-specific message text. */
|
|
6
7
|
function classifyEmbeddingProviderFailure(error) {
|
|
7
8
|
if (ai_1.RetryError.isInstance(error) && error.lastError !== error) {
|
|
8
9
|
return classifyEmbeddingProviderFailure(error.lastError);
|
|
9
10
|
}
|
|
11
|
+
// A deployment rejecting the model or the endpoint is a permanent
|
|
12
|
+
// configuration problem: the same request must not be retried against the provider.
|
|
13
|
+
if ((0, EmbeddingModelPolicy_1.isEmbeddingPolicyRejection)(error)) {
|
|
14
|
+
return { retryable: false, category: 'embedding_model_invalid' };
|
|
15
|
+
}
|
|
10
16
|
if (ai_1.NoSuchModelError.isInstance(error)) {
|
|
11
17
|
return { retryable: false, category: 'embedding_model_invalid' };
|
|
12
18
|
}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import { EmbeddingService } from './EmbeddingService';
|
|
2
|
+
import { EmbeddingModelPolicy } from './EmbeddingModelPolicy';
|
|
2
3
|
import type { ProviderRegistry } from './ProviderRegistry';
|
|
3
4
|
import type { AiCredential } from './types';
|
|
5
|
+
export interface EmbeddingServiceImplOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Deployment embedding policy. Every embedding call goes through this service,
|
|
8
|
+
* so this is the hard boundary: Cloud never reaches a provider with an
|
|
9
|
+
* embedding model — or an endpoint — its gateway catalog does not provide,
|
|
10
|
+
* regardless of what the user's Pod contains.
|
|
11
|
+
*/
|
|
12
|
+
policy?: EmbeddingModelPolicy;
|
|
13
|
+
}
|
|
4
14
|
export declare class EmbeddingServiceImpl extends EmbeddingService {
|
|
15
|
+
protected readonly logger: import("global-logger-factory").Logger<unknown>;
|
|
5
16
|
private providerRegistry;
|
|
6
|
-
|
|
17
|
+
private readonly policy;
|
|
18
|
+
constructor(providerRegistry: ProviderRegistry, options?: EmbeddingServiceImplOptions);
|
|
7
19
|
embed(text: string, credential: AiCredential, modelId: string): Promise<number[]>;
|
|
8
20
|
embedBatch(texts: string[], credential: AiCredential, modelId: string): Promise<number[][]>;
|
|
9
21
|
private createEmbeddingModel;
|
|
@@ -26,13 +26,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.EmbeddingServiceImpl = void 0;
|
|
27
27
|
const openai_1 = require("@ai-sdk/openai");
|
|
28
28
|
const ai_1 = require("ai");
|
|
29
|
+
const global_logger_factory_1 = require("global-logger-factory");
|
|
29
30
|
const EmbeddingService_1 = require("./EmbeddingService");
|
|
31
|
+
const EmbeddingModelPolicy_1 = require("./EmbeddingModelPolicy");
|
|
30
32
|
class EmbeddingServiceImpl extends EmbeddingService_1.EmbeddingService {
|
|
31
|
-
constructor(providerRegistry) {
|
|
33
|
+
constructor(providerRegistry, options = {}) {
|
|
32
34
|
super();
|
|
35
|
+
this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
|
|
33
36
|
this.providerRegistry = providerRegistry;
|
|
37
|
+
this.policy = options.policy ?? EmbeddingModelPolicy_1.EmbeddingModelPolicy.allowAll();
|
|
34
38
|
}
|
|
35
39
|
async embed(text, credential, modelId) {
|
|
40
|
+
this.policy.assertAllowed({ provider: credential.provider, model: modelId });
|
|
36
41
|
const model = await this.createEmbeddingModel(credential, modelId);
|
|
37
42
|
const result = await (0, ai_1.embed)({ model, value: text });
|
|
38
43
|
return result.embedding;
|
|
@@ -40,6 +45,7 @@ class EmbeddingServiceImpl extends EmbeddingService_1.EmbeddingService {
|
|
|
40
45
|
async embedBatch(texts, credential, modelId) {
|
|
41
46
|
if (texts.length === 0)
|
|
42
47
|
return [];
|
|
48
|
+
this.policy.assertAllowed({ provider: credential.provider, model: modelId });
|
|
43
49
|
const model = await this.createEmbeddingModel(credential, modelId);
|
|
44
50
|
const modelInfo = await this.providerRegistry.getEmbeddingModel(credential.provider, modelId);
|
|
45
51
|
const maxBatchSize = modelInfo?.maxBatchSize;
|
|
@@ -57,17 +63,24 @@ class EmbeddingServiceImpl extends EmbeddingService_1.EmbeddingService {
|
|
|
57
63
|
}
|
|
58
64
|
async createEmbeddingModel(credential, modelName) {
|
|
59
65
|
const provider = await this.providerRegistry.getProvider(credential.provider);
|
|
60
|
-
const
|
|
61
|
-
|
|
66
|
+
const endpoint = this.policy.resolveEndpoint({
|
|
67
|
+
provider: credential.provider,
|
|
68
|
+
baseUrl: credential.baseUrl || provider?.baseUrl,
|
|
69
|
+
proxyUrl: credential.proxyUrl || provider?.proxyUrl,
|
|
70
|
+
});
|
|
71
|
+
const baseUrl = endpoint.baseUrl;
|
|
62
72
|
if (!baseUrl) {
|
|
63
73
|
throw new Error(`No baseUrl found for provider: ${credential.provider}`);
|
|
64
74
|
}
|
|
75
|
+
if (endpoint.source === 'catalog' && credential.baseUrl && credential.baseUrl !== baseUrl) {
|
|
76
|
+
this.logger.info(`Ignoring Pod-provided embedding endpoint for ${credential.provider}; this deployment provides ${baseUrl}`);
|
|
77
|
+
}
|
|
65
78
|
const clientConfig = {
|
|
66
79
|
apiKey: credential.apiKey,
|
|
67
80
|
baseURL: baseUrl,
|
|
68
81
|
};
|
|
69
|
-
if (proxyUrl) {
|
|
70
|
-
clientConfig.fetch = await this.createProxyFetch(proxyUrl);
|
|
82
|
+
if (endpoint.proxyUrl) {
|
|
83
|
+
clientConfig.fetch = await this.createProxyFetch(endpoint.proxyUrl);
|
|
71
84
|
}
|
|
72
85
|
const client = (0, openai_1.createOpenAI)(clientConfig);
|
|
73
86
|
return client.embedding(modelName);
|
|
@@ -15,13 +15,37 @@
|
|
|
15
15
|
{
|
|
16
16
|
"@id": "undefineds:dist/ai/service/EmbeddingServiceImpl.jsonld#EmbeddingServiceImpl_providerRegistry",
|
|
17
17
|
"range": "undefineds:dist/ai/service/ProviderRegistry.jsonld#ProviderRegistry"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"@id": "undefineds:dist/ai/service/EmbeddingServiceImpl.jsonld#EmbeddingServiceImpl_options_policy",
|
|
21
|
+
"range": {
|
|
22
|
+
"@type": "ParameterRangeUnion",
|
|
23
|
+
"parameterRangeElements": [
|
|
24
|
+
"undefineds:dist/ai/service/EmbeddingModelPolicy.jsonld#EmbeddingModelPolicy",
|
|
25
|
+
{
|
|
26
|
+
"@type": "ParameterRangeUndefined"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"comment": "Deployment embedding policy. Every embedding call goes through this service, so this is the hard boundary: Cloud never reaches a provider with an embedding model — or an endpoint — its gateway catalog does not provide, regardless of what the user's Pod contains."
|
|
18
31
|
}
|
|
19
32
|
],
|
|
20
33
|
"memberFields": [
|
|
34
|
+
{
|
|
35
|
+
"@id": "undefineds:dist/ai/service/EmbeddingServiceImpl.jsonld#EmbeddingServiceImpl__member_logger",
|
|
36
|
+
"memberFieldName": "logger",
|
|
37
|
+
"range": {
|
|
38
|
+
"@type": "ParameterRangeWildcard"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
21
41
|
{
|
|
22
42
|
"@id": "undefineds:dist/ai/service/EmbeddingServiceImpl.jsonld#EmbeddingServiceImpl__member_providerRegistry",
|
|
23
43
|
"memberFieldName": "providerRegistry"
|
|
24
44
|
},
|
|
45
|
+
{
|
|
46
|
+
"@id": "undefineds:dist/ai/service/EmbeddingServiceImpl.jsonld#EmbeddingServiceImpl__member_policy",
|
|
47
|
+
"memberFieldName": "policy"
|
|
48
|
+
},
|
|
25
49
|
{
|
|
26
50
|
"@id": "undefineds:dist/ai/service/EmbeddingServiceImpl.jsonld#EmbeddingServiceImpl__member_constructor",
|
|
27
51
|
"memberFieldName": "constructor"
|
|
@@ -46,6 +70,17 @@
|
|
|
46
70
|
"constructorArguments": [
|
|
47
71
|
{
|
|
48
72
|
"@id": "undefineds:dist/ai/service/EmbeddingServiceImpl.jsonld#EmbeddingServiceImpl_providerRegistry"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"@id": "undefineds:dist/ai/service/EmbeddingServiceImpl.jsonld#EmbeddingServiceImpl_options__constructorArgument",
|
|
76
|
+
"fields": [
|
|
77
|
+
{
|
|
78
|
+
"keyRaw": "policy",
|
|
79
|
+
"value": {
|
|
80
|
+
"@id": "undefineds:dist/ai/service/EmbeddingServiceImpl.jsonld#EmbeddingServiceImpl_options_policy"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
]
|
|
49
84
|
}
|
|
50
85
|
]
|
|
51
86
|
}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
export * from './types';
|
|
5
5
|
export * from './EmbeddingService';
|
|
6
6
|
export * from './EmbeddingServiceImpl';
|
|
7
|
+
export * from './EmbeddingModelPolicy';
|
|
8
|
+
export * from './AiCredentialSecret';
|
|
7
9
|
export * from './CredentialReader';
|
|
8
10
|
export * from './CredentialReaderImpl';
|
|
9
11
|
export * from './ProviderRegistry';
|
package/dist/ai/service/index.js
CHANGED
|
@@ -22,6 +22,8 @@ __exportStar(require("./types"), exports);
|
|
|
22
22
|
// Services
|
|
23
23
|
__exportStar(require("./EmbeddingService"), exports);
|
|
24
24
|
__exportStar(require("./EmbeddingServiceImpl"), exports);
|
|
25
|
+
__exportStar(require("./EmbeddingModelPolicy"), exports);
|
|
26
|
+
__exportStar(require("./AiCredentialSecret"), exports);
|
|
25
27
|
__exportStar(require("./CredentialReader"), exports);
|
|
26
28
|
__exportStar(require("./CredentialReaderImpl"), exports);
|
|
27
29
|
__exportStar(require("./ProviderRegistry"), exports);
|
|
@@ -2,7 +2,7 @@ import { aiModelResource, aiProviderResource, credentialResource } from '@undefi
|
|
|
2
2
|
import type { EncryptedCredentialSecret } from '../credentials/KeyWrapper';
|
|
3
3
|
import type { CredentialVault, ProviderSecret } from '../credentials/CredentialVault';
|
|
4
4
|
import type { GatewayDeployment } from '../auth/InvocationTokenCodec';
|
|
5
|
-
import { type ProviderOfferingEndpointDescriptor, type ProviderRegistry } from '../providers/ProviderRegistry';
|
|
5
|
+
import { type ProviderOfferingEndpointDescriptor, type ProviderCapabilities, type ProviderRegistry } from '../providers/ProviderRegistry';
|
|
6
6
|
import type { OfferingAuthorizationMethod } from '../providers/OfferingAuthorization';
|
|
7
7
|
import type { AuthContext } from '../../auth/AuthContext';
|
|
8
8
|
import type { InternalPodAccessTokenProvider } from '../pod/HostedPodDataAccess';
|
|
@@ -269,6 +269,8 @@ export declare class PodConnectedCredentialRepository implements PodCredentialRe
|
|
|
269
269
|
accountLabel?: string;
|
|
270
270
|
priority?: number;
|
|
271
271
|
models?: string[];
|
|
272
|
+
/** Display names the Pod recorded for `models`, keyed by model id. */
|
|
273
|
+
modelNames?: Record<string, string>;
|
|
272
274
|
customModels?: CustomProviderModel[];
|
|
273
275
|
defaultModel?: string;
|
|
274
276
|
health?: 'healthy' | 'reauthRequired' | 'disabled' | 'error' | 'invalid' | 'unknown';
|
|
@@ -548,7 +550,14 @@ export interface AiGatewayModelSummary {
|
|
|
548
550
|
custom?: boolean;
|
|
549
551
|
inputModalities?: string[];
|
|
550
552
|
outputModalities?: string[];
|
|
551
|
-
|
|
553
|
+
/** Custom models declare their own tokens; catalog models carry the object flags. */
|
|
554
|
+
capabilities?: string[] | ProviderCapabilities;
|
|
555
|
+
/** Token list the client reads first, so custom declarations survive normalisation. */
|
|
556
|
+
custom_capabilities?: string[];
|
|
557
|
+
modalities?: {
|
|
558
|
+
input?: string[];
|
|
559
|
+
output?: string[];
|
|
560
|
+
};
|
|
552
561
|
}
|
|
553
562
|
export interface AiProviderPoolSummary {
|
|
554
563
|
id: string;
|
|
@@ -608,6 +617,15 @@ export interface ProviderCredentialTestModelsService {
|
|
|
608
617
|
}>;
|
|
609
618
|
}
|
|
610
619
|
export declare class ProviderConnectService {
|
|
620
|
+
/** Cloud settings only manage providers this deployment provides. */
|
|
621
|
+
private requireProvidedProvider;
|
|
622
|
+
/**
|
|
623
|
+
* Cloud owns the endpoint: a caller may not point a provided provider at its
|
|
624
|
+
* own base URL or proxy. Supplying the provided endpoint verbatim (what the
|
|
625
|
+
* applet does when it fills the offering default) stays valid.
|
|
626
|
+
*/
|
|
627
|
+
private assertEndpointIsProvided;
|
|
628
|
+
private providedEndpoints;
|
|
611
629
|
private static readonly localImportLocks;
|
|
612
630
|
private readonly registry;
|
|
613
631
|
private readonly credentialRepository?;
|