@undefineds.co/xpod 0.4.11 → 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/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/EdgeNodeRepository.d.ts +0 -12
- package/dist/identity/drizzle/EdgeNodeRepository.js +5 -13
- 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/package.json +15 -7
- package/static/app/assets/main.css +1 -1
- 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-BbUqop4b.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-Vp2PrMxs.js → NetworkPage-B3qBfANA.js} +2 -2
- package/static/auth-callback/assets/{PaneListHeader-DY7baSFl.js → PaneListHeader-QQeJGTp4.js} +1 -1
- package/static/auth-callback/assets/SearchIndexingPanel-MyNUSEwT.js +1 -0
- package/static/auth-callback/assets/{StatusSubjectPanel-ArIS-TxT.js → StatusSubjectPanel-DQkEVsFs.js} +1 -1
- package/static/{settings/assets/StatusWorkspace-CoMFRXoV.js → auth-callback/assets/StatusWorkspace-Dkv63Uwk.js} +1 -1
- package/static/auth-callback/assets/{SystemSettingsPage-BDvT1NUz.js → SystemSettingsPage-TIsUfX5d.js} +1 -1
- package/static/{dashboard/assets/SystemSettingsSubjectPanel-WaE8mTQi.js → auth-callback/assets/SystemSettingsSubjectPanel-BJWEt2-7.js} +5 -5
- package/static/auth-callback/assets/XpodAiConnectionsPodStore-BJiXm-PF.js +3 -0
- package/static/auth-callback/assets/{activity-D1Dsfa_0.js → activity-5hNeNKnL.js} +1 -1
- package/static/auth-callback/assets/ai-connections-CryuHGKW.js +1 -0
- package/static/auth-callback/assets/{auth-callback-Cmf4hXVZ.js → auth-callback-CAFZ3R0B.js} +6 -6
- package/static/auth-callback/assets/auth-callback-rk080mvG.css +1 -0
- package/static/auth-callback/assets/{badge-CZsHq3Ih.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-DU9ntlHw.js → download-B3Up5W2G.js} +1 -1
- package/static/auth-callback/assets/{external-link-BfzaaZDx.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-BNFqqC74.js → index-browser-DtU38ni3.js} +1 -1
- package/static/auth-callback/assets/{key-round-BwP3DBWo.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-VMwnmyab.js → rotate-ccw-C1zM2KtS.js} +1 -1
- package/static/auth-callback/assets/{skeleton-CoD55rBT.js → skeleton-Cqp7_M9-.js} +1 -1
- package/static/auth-callback/assets/{waypoints-DRo_1Ca7.js → waypoints-Bj6gAUSQ.js} +1 -1
- package/static/auth-callback/assets/{workspace-layout--mcXl3My.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-B2cXwl8X.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-DV2V0qWO.js → NetworkPage-BAIPw-D_.js} +2 -2
- package/static/dashboard/assets/{PaneListHeader-D0c1yCFH.js → PaneListHeader-BBCMei0r.js} +1 -1
- package/static/dashboard/assets/SearchIndexingPanel-Ck4Y-xjR.js +1 -0
- package/static/dashboard/assets/{StatusSubjectPanel-oPSECj7i.js → StatusSubjectPanel-D1KWfAXE.js} +1 -1
- package/static/dashboard/assets/{StatusWorkspace-PdovQPKa.js → StatusWorkspace-JbA5gzXx.js} +1 -1
- package/static/dashboard/assets/{SystemSettingsPage-CtNDklkx.js → SystemSettingsPage-BbwQWsSR.js} +1 -1
- package/static/{settings/assets/SystemSettingsSubjectPanel-DExjDo_v.js → dashboard/assets/SystemSettingsSubjectPanel-N117nMt5.js} +5 -5
- package/static/dashboard/assets/XpodAiConnectionsPodStore-CdDOb4SV.js +18 -0
- package/static/dashboard/assets/{activity-B9ylSoyr.js → activity-DX1I96o_.js} +1 -1
- package/static/dashboard/assets/ai-connections-DwCRqOQa.js +1 -0
- package/static/dashboard/assets/{badge-BNbFbpIb.js → badge-k2vhtDqH.js} +1 -1
- package/static/dashboard/assets/collection-runtime-BFQ8teQJ.js +1 -0
- package/static/dashboard/assets/{dashboard-CD-FFVRD.js → dashboard-DWZ-fmCT.js} +4 -4
- package/static/dashboard/assets/dashboard-rk080mvG.css +1 -0
- package/static/dashboard/assets/dialog-1CCw-iHT.js +1 -0
- package/static/dashboard/assets/{download-nOP38LtW.js → download-C6-SNY1q.js} +1 -1
- package/static/dashboard/assets/{external-link-Bh2ewN9E.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-bGmguBLv.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-D2x__ODW.js → rotate-ccw-CCgJqsvx.js} +1 -1
- package/static/dashboard/assets/{skeleton-VOqft8WS.js → skeleton-Bc7abAn5.js} +1 -1
- package/static/dashboard/assets/{waypoints-fgRqm4oH.js → waypoints-s-opmJxx.js} +1 -1
- package/static/dashboard/assets/{workspace-layout-DV4dgeHX.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-BgbI9c-a.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-C8OA9Mtp.js → NetworkPage-BKymvsQc.js} +2 -2
- package/static/settings/assets/{PaneListHeader-COvlPJWj.js → PaneListHeader-Bjh3hRdQ.js} +1 -1
- package/static/settings/assets/SearchIndexingPanel-MjKL5QLU.js +1 -0
- package/static/settings/assets/{StatusSubjectPanel-BuLml7qn.js → StatusSubjectPanel-Bvl6K4mx.js} +1 -1
- package/static/settings/assets/StatusWorkspace-B0NzrP--.js +1 -0
- package/static/settings/assets/{SystemSettingsPage-DlzmaWV-.js → SystemSettingsPage-D2z6Z4FE.js} +1 -1
- package/static/{auth-callback/assets/SystemSettingsSubjectPanel-CDqRuC4t.js → settings/assets/SystemSettingsSubjectPanel-4sxma4X4.js} +5 -5
- package/static/settings/assets/XpodAiConnectionsPodStore-BkNQ8fZx.js +3 -0
- package/static/settings/assets/{activity-TLerXgMs.js → activity-CgJJGpjx.js} +1 -1
- package/static/settings/assets/ai-connections-CryuHGKW.js +1 -0
- package/static/settings/assets/{badge-Bcs8iWrH.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-Ct3QmHPt.js → download-DaLJJ-Wp.js} +1 -1
- package/static/settings/assets/{external-link-C8KiHbss.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-CazX1pc2.js → index-browser-BGpvHwD0.js} +1 -1
- package/static/settings/assets/{key-round-B19YD1GA.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-AQm2kMgU.js → rotate-ccw-TCabbqsr.js} +1 -1
- package/static/settings/assets/{settings-C-VBtt9r.js → settings-CJWpdbNC.js} +5 -5
- package/static/settings/assets/settings-rk080mvG.css +1 -0
- package/static/settings/assets/{skeleton-DyZ1OBYf.js → skeleton-JDHYVe7t.js} +1 -1
- package/static/settings/assets/{waypoints-CC3wq-SU.js → waypoints-DDvEl-MU.js} +1 -1
- package/static/settings/assets/{workspace-layout-BxXNKgf9.js → workspace-layout-DV5QU30U.js} +1 -1
- package/static/settings/settings.html +2 -2
- package/static/auth-callback/assets/AiConfigContext-DqWRSm7n.js +0 -1
- package/static/auth-callback/assets/AiConfigPage-C5YYyvzl.js +0 -1
- package/static/auth-callback/assets/DocumentProcessingPanel-DZCiacBz.js +0 -1
- package/static/auth-callback/assets/IndexLifecyclePanel-CCLeOljB.js +0 -1
- package/static/auth-callback/assets/ModelAssignmentsPanel-jUUTDKuh.js +0 -1
- package/static/auth-callback/assets/ModelsPage-B08zdtff.js +0 -10
- package/static/auth-callback/assets/SearchIndexingPanel-D4YRg1-8.js +0 -1
- package/static/auth-callback/assets/StatusWorkspace-Cp5LQ9Yx.js +0 -1
- package/static/auth-callback/assets/ai-connections-CHNTKemd.js +0 -1
- package/static/auth-callback/assets/auth-callback-DWMMiFjh.css +0 -1
- package/static/auth-callback/assets/index-DSNnLUbU.js +0 -4
- package/static/auth-callback/assets/index-FHhHoKgp.js +0 -41
- package/static/dashboard/assets/AiConfigContext-BpPDKSzI.js +0 -1
- package/static/dashboard/assets/AiConfigPage-wsqEZDIX.js +0 -1
- package/static/dashboard/assets/DocumentProcessingPanel-CDSy3juc.js +0 -1
- package/static/dashboard/assets/IndexLifecyclePanel-CVd6vQCX.js +0 -1
- package/static/dashboard/assets/ModelAssignmentsPanel-BeBZhnQd.js +0 -1
- package/static/dashboard/assets/ModelsPage-B6McSCJw.js +0 -25
- package/static/dashboard/assets/SearchIndexingPanel-CGs0OZ12.js +0 -1
- package/static/dashboard/assets/ai-connections-CHNTKemd.js +0 -1
- package/static/dashboard/assets/dashboard-DWMMiFjh.css +0 -1
- package/static/dashboard/assets/index-PgS-Bt7X.js +0 -41
- package/static/dashboard/assets/index-QN2QgEwr.js +0 -4
- package/static/settings/assets/AiConfigContext-zKQYdfai.js +0 -1
- package/static/settings/assets/AiConfigPage-Bs1EE3Ei.js +0 -1
- package/static/settings/assets/DocumentProcessingPanel-CSFfdOXS.js +0 -1
- package/static/settings/assets/IndexLifecyclePanel-BR9Su49B.js +0 -1
- package/static/settings/assets/ModelAssignmentsPanel-C0BE7nbk.js +0 -1
- package/static/settings/assets/ModelsPage-CU-YQ8_7.js +0 -10
- package/static/settings/assets/SearchIndexingPanel-Bdd46mIV.js +0 -1
- package/static/settings/assets/ai-connections-CHNTKemd.js +0 -1
- package/static/settings/assets/index-1Q2cRjZd.js +0 -41
- package/static/settings/assets/index-DBO_Vq0P.js +0 -4
- package/static/settings/assets/settings-DWMMiFjh.css +0 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { OpenPodRuntime, SolidSessionRuntime } from '@undefineds.co/solid-sdk';
|
|
2
|
+
import type { PodModelDescriptor } from '@undefineds.co/models';
|
|
3
|
+
import type { PodCollection, PodCollectionOptions, PodSyncState, RowOf } from '@undefineds.co/pod-collections';
|
|
2
4
|
import { type ReactElement } from 'react';
|
|
3
5
|
import { type AppletLayoutType, SinglePaneAppletLayoutDescriptor, ThreePaneAppletLayoutDescriptor, TwoPaneAppletLayoutDescriptor } from './layout';
|
|
4
6
|
import type { AppletManifest, ExtensionManifest } from './manifest';
|
|
@@ -69,6 +71,19 @@ export interface AiClientConfigurationCapability {
|
|
|
69
71
|
export interface AiConnectionsPodStore {
|
|
70
72
|
listProviders(): Promise<unknown[]>;
|
|
71
73
|
listModels?(): Promise<unknown[]>;
|
|
74
|
+
/**
|
|
75
|
+
* `settings/credentials.ttl`: the document credential rows live in, and
|
|
76
|
+
* therefore the live-update topic of the credentials table.
|
|
77
|
+
*/
|
|
78
|
+
credentialsTableDocument?(): string;
|
|
79
|
+
/**
|
|
80
|
+
* The document a provider's own row and its model rows live in
|
|
81
|
+
* (`providers/<provider>.ttl`), and therefore that table's live-update topic.
|
|
82
|
+
*
|
|
83
|
+
* `instanceId` selects the document of a user-defined provider instance,
|
|
84
|
+
* which owns its own document; catalog providers ignore it.
|
|
85
|
+
*/
|
|
86
|
+
providerTableDocument?(provider: string, instanceId?: string): string;
|
|
72
87
|
createApiKeyCredential?(provider: string, input: {
|
|
73
88
|
offeringId?: string;
|
|
74
89
|
apiKey: string;
|
|
@@ -77,6 +92,16 @@ export interface AiConnectionsPodStore {
|
|
|
77
92
|
proxyUrl?: string;
|
|
78
93
|
priority?: number;
|
|
79
94
|
compatibility?: 'auto' | 'openai' | 'anthropic';
|
|
95
|
+
/**
|
|
96
|
+
* The row this credential must be written at.
|
|
97
|
+
*
|
|
98
|
+
* A live collection creates the row optimistically from the models
|
|
99
|
+
* descriptor and then asks the store for the complete row at that id: the
|
|
100
|
+
* secret envelope and the columns the descriptor does not declare are the
|
|
101
|
+
* store's to write. The row already exists then, so the store updates it in
|
|
102
|
+
* place instead of inserting a second one. Omitted = create a new id.
|
|
103
|
+
*/
|
|
104
|
+
id?: string;
|
|
80
105
|
}): Promise<unknown>;
|
|
81
106
|
createLocalCredential?(provider: string, input: {
|
|
82
107
|
authorizationMethodId?: string;
|
|
@@ -84,6 +109,8 @@ export interface AiConnectionsPodStore {
|
|
|
84
109
|
label?: string;
|
|
85
110
|
baseUrl?: string;
|
|
86
111
|
priority?: number;
|
|
112
|
+
/** See {@link AiConnectionsPodStore.createApiKeyCredential}. */
|
|
113
|
+
id?: string;
|
|
87
114
|
}): Promise<unknown>;
|
|
88
115
|
saveOAuthCredential?(provider: string, input: AiConnectionsOAuthCredential): Promise<unknown>;
|
|
89
116
|
updateOAuthCredential?(provider: string, credentialId: string, expectedVersion: number, input: AiConnectionsOAuthCredential): Promise<unknown>;
|
|
@@ -182,6 +209,129 @@ export interface WebExtensionHostCapabilities {
|
|
|
182
209
|
aiConnectionsPodStore?: AiConnectionsPodStore;
|
|
183
210
|
/** Account-owned credentials; the applet never receives the Account session token. */
|
|
184
211
|
aiClientCredentials?: AiClientCredentialsCapability;
|
|
212
|
+
/** Live updates for the Pod documents an applet is rendering. */
|
|
213
|
+
solidNotifications?: SolidNotificationsCapability;
|
|
214
|
+
/** Live Pod table collections; the applet declares the table, the host owns the I/O. */
|
|
215
|
+
podCollections?: PodCollectionsCapability;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Whether live Pod updates are reaching this page.
|
|
219
|
+
*
|
|
220
|
+
* `idle` covers "nothing is being watched", "still opening a channel" and
|
|
221
|
+
* "paused because the tab is hidden"; `live` means at least one watched
|
|
222
|
+
* document has an open channel; `unavailable` means live updates could not be
|
|
223
|
+
* established at all, so the page must keep working from explicit reads only.
|
|
224
|
+
*/
|
|
225
|
+
export type SolidLiveUpdateState = 'idle' | 'live' | 'unavailable';
|
|
226
|
+
/**
|
|
227
|
+
* One dirty signal from a watched Pod table document.
|
|
228
|
+
*
|
|
229
|
+
* It carries delivery metadata only - never table data, and never an opinion
|
|
230
|
+
* about what the consumer should do with it. Conflict resolution, rollback,
|
|
231
|
+
* pending/confirmed row state and "server wins" reconciliation belong to the
|
|
232
|
+
* table consumer; this transport neither mutates nor interprets rows.
|
|
233
|
+
*
|
|
234
|
+
* A consumer that needs to tell a foreign change from the echo of its own write
|
|
235
|
+
* must correlate `receivedAt` with the write windows it tracks itself: applet
|
|
236
|
+
* writes do not travel through the notification channel, so the transport
|
|
237
|
+
* cannot know whether a local write was in flight and does not guess.
|
|
238
|
+
*/
|
|
239
|
+
export interface SolidLiveUpdateSignal {
|
|
240
|
+
/** The watched table document that changed. */
|
|
241
|
+
topic: string;
|
|
242
|
+
/** Per-topic delivery counter, starting at 1 and strictly increasing. */
|
|
243
|
+
sequence: number;
|
|
244
|
+
/** When this client received the signal, in epoch milliseconds. */
|
|
245
|
+
receivedAt: number;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Live updates for Pod table documents (Solid Notifications, WebSocketChannel2023).
|
|
249
|
+
*
|
|
250
|
+
* A table is one RDF document and that document is the topic; rows inside it are
|
|
251
|
+
* never separate subscriptions. A signal only says "this document changed", so
|
|
252
|
+
* the consumer re-reads through its own read path and coalesces bursts.
|
|
253
|
+
*/
|
|
254
|
+
export interface SolidNotificationsCapability {
|
|
255
|
+
/**
|
|
256
|
+
* Watch one table document.
|
|
257
|
+
*
|
|
258
|
+
* Listeners of the same topic share a single channel and a single socket; the
|
|
259
|
+
* returned function detaches this listener, and detaching the last one closes
|
|
260
|
+
* the socket and deletes the subscription. Watching a row IRI watches the
|
|
261
|
+
* document that holds the row.
|
|
262
|
+
*
|
|
263
|
+
* We are given a plain resource URL: which documents a page watches is the
|
|
264
|
+
* caller's decision, and no schema flag or registry declares it.
|
|
265
|
+
*/
|
|
266
|
+
watch(topicUrl: string, listener: (signal: SolidLiveUpdateSignal) => void): () => void;
|
|
267
|
+
/** Current state, for a status affordance that stays out of the way. */
|
|
268
|
+
getState(): SolidLiveUpdateState;
|
|
269
|
+
/** Observe {@link SolidNotificationsCapability.getState}. */
|
|
270
|
+
subscribeState(listener: (state: SolidLiveUpdateState) => void): () => void;
|
|
271
|
+
/** Drops every subscription; called when the page that wanted them goes away. */
|
|
272
|
+
dispose(): void;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* The declaration an applet hands to {@link PodCollectionsCapability.define}.
|
|
276
|
+
*
|
|
277
|
+
* Everything schema-shaped comes from the table's models descriptor and its
|
|
278
|
+
* drizzle table; the host fills in the I/O wiring (database, Pod URL, change
|
|
279
|
+
* feed), so an applet never names a document, a predicate or a refetch policy.
|
|
280
|
+
*/
|
|
281
|
+
export type PodCollectionHostRequest<D extends PodModelDescriptor> = Omit<PodCollectionOptions<D>, 'database' | 'podUrl' | 'feed'>;
|
|
282
|
+
/**
|
|
283
|
+
* Live Pod table collections (`docs/pod-collections.md` §6.4).
|
|
284
|
+
*
|
|
285
|
+
* A table is declared once, by the applet that renders it, and the host turns
|
|
286
|
+
* that declaration into a live collection: reads land in the collection's own
|
|
287
|
+
* view of the table, writes are optimistic and roll back on rejection, and the
|
|
288
|
+
* host's change feed - the same notification primitive that drives
|
|
289
|
+
* {@link SolidNotificationsCapability} - refreshes it. No polling is installed.
|
|
290
|
+
*/
|
|
291
|
+
export interface PodCollectionsCapability {
|
|
292
|
+
/**
|
|
293
|
+
* The collection for one table, loading whatever the host needs first.
|
|
294
|
+
*
|
|
295
|
+
* This is the accessor a page should use. A host may keep the collection
|
|
296
|
+
* engine out of the page's initial bundle and fetch it on first use, so the
|
|
297
|
+
* only honest answer to "give me this table" is a promise: a host whose engine
|
|
298
|
+
* is already in memory answers on the next microtask, a deferring host answers
|
|
299
|
+
* once the engine is there.
|
|
300
|
+
*
|
|
301
|
+
* Optional so that an eager host - one whose engine is unconditionally loaded -
|
|
302
|
+
* needs nothing beyond {@link define}: a page falls back to `define` when this
|
|
303
|
+
* is absent.
|
|
304
|
+
*/
|
|
305
|
+
load?<D extends PodModelDescriptor>(descriptor: D, request: PodCollectionHostRequest<D>): Promise<PodCollection<RowOf<D>>>;
|
|
306
|
+
/**
|
|
307
|
+
* The collection for one table.
|
|
308
|
+
*
|
|
309
|
+
* One `(descriptor.uri, document)` pair is one collection: defining the same
|
|
310
|
+
* table twice returns the same instance, so two pages of one applet share one
|
|
311
|
+
* sync engine and one subscription instead of racing two.
|
|
312
|
+
*
|
|
313
|
+
* A table whose document the descriptor cannot derive throws
|
|
314
|
+
* `layout_document_required`; the caller passes `document`/`scope` explicitly
|
|
315
|
+
* rather than guessing a layout.
|
|
316
|
+
*
|
|
317
|
+
* This call is synchronous by contract, so a host that defers its engine (see
|
|
318
|
+
* {@link load}) cannot answer it before that engine has arrived: such a host
|
|
319
|
+
* reports the reservation instead of inventing a collection.
|
|
320
|
+
*/
|
|
321
|
+
define<D extends PodModelDescriptor>(descriptor: D, request: PodCollectionHostRequest<D>): PodCollection<RowOf<D>>;
|
|
322
|
+
/**
|
|
323
|
+
* How the collection is keeping up: `live` when its change feed is
|
|
324
|
+
* established, `unavailable` when it is read-once-plus-explicit-refresh,
|
|
325
|
+
* `degraded` after a failed read. This is the availability signal a page
|
|
326
|
+
* shows, in place of the transport's own state.
|
|
327
|
+
*/
|
|
328
|
+
syncState<R extends {
|
|
329
|
+
id: string;
|
|
330
|
+
}>(collection: PodCollection<R>): PodSyncState;
|
|
331
|
+
/** Observe every collection's {@link PodCollectionsCapability.syncState}. */
|
|
332
|
+
subscribeSyncState(listener: () => void): () => void;
|
|
333
|
+
/** Releases every collection this capability created (session teardown). */
|
|
334
|
+
dispose(): void;
|
|
185
335
|
}
|
|
186
336
|
export interface AiClientCredentialSummary {
|
|
187
337
|
/** CSS label, i.e. the `client_id` inside the `sk-` wrapper. */
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"test": "vitest run test --config ../../vitest.packages.config.mts"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@inrupt/solid-client": "^3.0.0"
|
|
38
|
+
"@inrupt/solid-client": "^3.0.0",
|
|
39
|
+
"@undefineds.co/models": "0.2.59"
|
|
39
40
|
},
|
|
40
41
|
"peerDependencies": {
|
|
41
42
|
"react": "^19.2.0"
|
|
@@ -150,7 +150,7 @@ const selected = selectAIConfigCredential('openai', credentialRows, providerRows
|
|
|
150
150
|
Embedding defaults:
|
|
151
151
|
|
|
152
152
|
- `dashscope` is the canonical provider id for Qwen/DashScope embedding; `qwen`, `alibaba`, and `dashscope-cn` normalize to `dashscope`.
|
|
153
|
-
- The catalog default embedding model is `text-embedding-v4
|
|
153
|
+
- The catalog default embedding model is `text-embedding-v4`, represented as an `EmbeddingModel`; callers can use it as a fallback when the user has a DashScope credential but no explicit `AIConfig.embeddingModel`. Legacy adapter DTOs may still expose `modelType: "embedding"`, but persisted RDF uses the subclass URI.
|
|
154
154
|
- `paddleocr` has the official PaddleOCR AI Studio endpoint as provider `baseUrl`; users should only provide the TOKEN/API key credential.
|
|
155
155
|
|
|
156
156
|
Selection semantics:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type AIModelInsert, type AIModelRow } from '../ai-model.schema';
|
|
2
|
-
import { type AIProviderInsert, type AIProviderRow } from '../ai-provider.schema';
|
|
3
|
-
import type { CredentialInsert, CredentialRow } from '../credential.schema';
|
|
1
|
+
import { type AIModelInsert, type AIModelRow } from '../ai-model.schema.js';
|
|
2
|
+
import { type AIProviderInsert, type AIProviderRow } from '../ai-provider.schema.js';
|
|
3
|
+
import type { CredentialInsert, CredentialRow } from '../credential.schema.js';
|
|
4
4
|
export interface AIConfigProviderCatalogEntry {
|
|
5
5
|
id: string;
|
|
6
6
|
displayName: string;
|
|
@@ -123,6 +123,11 @@ export declare const aiGatewayRepository: {
|
|
|
123
123
|
id: string;
|
|
124
124
|
revokedAt?: Date | string | number;
|
|
125
125
|
}) => Promise<GatewayAccessKeyRow | null>;
|
|
126
|
+
readonly setAccessKeyEnabled: (db: AIGatewayRepositoryDb, input: {
|
|
127
|
+
id: string;
|
|
128
|
+
enabled: boolean;
|
|
129
|
+
disabledAt?: Date | string | number;
|
|
130
|
+
}) => Promise<GatewayAccessKeyRow | null>;
|
|
126
131
|
readonly upsertQuotaSnapshot: (db: AIGatewayRepositoryDb, snapshot: QuotaSnapshotUpsert) => Promise<QuotaSnapshotRow | null>;
|
|
127
132
|
readonly findFreshQuotaSnapshot: (db: AIGatewayRepositoryDb, input: FindFreshQuotaSnapshotInput) => Promise<QuotaSnapshotRow | null>;
|
|
128
133
|
readonly findLatestQuotaSnapshot: (db: AIGatewayRepositoryDb, input: FindLatestQuotaSnapshotInput) => Promise<QuotaSnapshotRow | null>;
|
|
@@ -167,6 +167,15 @@ export const aiGatewayRepository = {
|
|
|
167
167
|
}
|
|
168
168
|
return db.updateById(gatewayAccessKeyResource, input.id, patch);
|
|
169
169
|
},
|
|
170
|
+
setAccessKeyEnabled(db, input) {
|
|
171
|
+
const patch = {
|
|
172
|
+
disabledAt: input.enabled ? null : (asDate(input.disabledAt) ?? new Date()),
|
|
173
|
+
};
|
|
174
|
+
if (isAbsoluteIri(input.id)) {
|
|
175
|
+
return db.updateByIri(gatewayAccessKeyResource, input.id, patch);
|
|
176
|
+
}
|
|
177
|
+
return db.updateById(gatewayAccessKeyResource, input.id, patch);
|
|
178
|
+
},
|
|
170
179
|
async upsertQuotaSnapshot(db, snapshot) {
|
|
171
180
|
const validSnapshot = validateQuotaSnapshot(snapshot);
|
|
172
181
|
const existing = isAbsoluteIri(validSnapshot.id)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { credentialResource, type CredentialInsert, type CredentialRow, type CredentialUpdate } from './credential.schema';
|
|
1
|
+
import { credentialResource, type CredentialInsert, type CredentialRow, type CredentialUpdate } from './credential.schema.js';
|
|
2
2
|
export type AiRuntimeDeployment = 'local' | 'cloud' | string;
|
|
3
3
|
export interface AiRuntimeCredentialTargetInput {
|
|
4
4
|
deployment: AiRuntimeDeployment;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type ControlRequestClaimDatabase, type ControlRequestClaimStatus } from './control-request.repository';
|
|
2
|
-
import { approvalResource, type ApprovalRow } from './approval.schema';
|
|
1
|
+
import { type ControlRequestClaimDatabase, type ControlRequestClaimStatus } from './control-request.repository.js';
|
|
2
|
+
import { approvalResource, type ApprovalRow } from './approval.schema.js';
|
|
3
3
|
export type ApprovalClaimStatus = ControlRequestClaimStatus;
|
|
4
4
|
export interface ApprovalClaimRequest {
|
|
5
5
|
/** Full ApprovalRequest IRI. Subscribe/watch envelopes should pass as:object. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ApprovalRow } from './approval.schema';
|
|
2
|
-
import type { AuditRow } from './audit.schema';
|
|
1
|
+
import type { ApprovalRow } from './approval.schema.js';
|
|
2
|
+
import type { AuditRow } from './audit.schema.js';
|
|
3
3
|
export interface AuditPresentation {
|
|
4
4
|
title: string;
|
|
5
5
|
description: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { captureEventResource, type CaptureDecisionType, type CaptureEventRow } from './capture.schema';
|
|
1
|
+
import { captureEventResource, type CaptureDecisionType, type CaptureEventRow } from './capture.schema.js';
|
|
2
2
|
export interface CaptureCandidateListWhere extends Record<string, unknown> {
|
|
3
3
|
source?: string | null;
|
|
4
4
|
suggestedType?: string | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { definePodRepository } from './repository';
|
|
2
|
-
import { chatResource, type ChatRow, type ChatInsert, type ChatUpdate } from './chat.schema';
|
|
1
|
+
import { definePodRepository } from './repository.js';
|
|
2
|
+
import { chatResource, type ChatRow, type ChatInsert, type ChatUpdate } from './chat.schema.js';
|
|
3
3
|
export declare function buildChatRepositoryTarget(chatIdOrRef: string): {
|
|
4
4
|
id: string;
|
|
5
5
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { approvalResource, ApprovalRow, ApprovalUpdate } from './approval.schema';
|
|
2
|
-
import type { inputRequestResource, InputRequestRow, InputRequestUpdate } from './input-request.schema';
|
|
1
|
+
import type { approvalResource, ApprovalRow, ApprovalUpdate } from './approval.schema.js';
|
|
2
|
+
import type { inputRequestResource, InputRequestRow, InputRequestUpdate } from './input-request.schema.js';
|
|
3
3
|
export type ControlRequestClaimStatus = 'claimed' | 'lost' | 'not_found' | 'not_actionable';
|
|
4
4
|
export interface ClaimableControlRequestRow {
|
|
5
5
|
status?: string | null;
|
|
@@ -18,6 +18,7 @@ export declare const credentialResource: import("@undefineds.co/drizzle-solid/di
|
|
|
18
18
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
19
19
|
provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
20
20
|
authMode: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, true>;
|
|
21
|
+
offeringId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
21
22
|
service: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
22
23
|
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
23
24
|
apiKey: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
@@ -49,11 +50,13 @@ export declare const credentialResource: import("@undefineds.co/drizzle-solid/di
|
|
|
49
50
|
oauthExpiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
50
51
|
projectId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
51
52
|
organizationId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
53
|
+
metadata: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"json", null, false, false>;
|
|
52
54
|
}>>;
|
|
53
55
|
export declare const credentialTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
54
56
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
55
57
|
provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
56
58
|
authMode: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, true>;
|
|
59
|
+
offeringId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
57
60
|
service: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
58
61
|
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
59
62
|
apiKey: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
@@ -85,11 +88,13 @@ export declare const credentialTable: import("@undefineds.co/drizzle-solid/dist/
|
|
|
85
88
|
oauthExpiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
86
89
|
projectId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
87
90
|
organizationId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
91
|
+
metadata: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"json", null, false, false>;
|
|
88
92
|
}>>;
|
|
89
93
|
export declare const apiKeyCredentialResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
90
94
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
91
95
|
provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
92
96
|
authMode: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, true>;
|
|
97
|
+
offeringId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
93
98
|
service: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
94
99
|
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
95
100
|
apiKey: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
@@ -121,11 +126,13 @@ export declare const apiKeyCredentialResource: import("@undefineds.co/drizzle-so
|
|
|
121
126
|
oauthExpiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
122
127
|
projectId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
123
128
|
organizationId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
129
|
+
metadata: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"json", null, false, false>;
|
|
124
130
|
}>>;
|
|
125
131
|
export declare const apiKeyCredentialTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
126
132
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
127
133
|
provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
128
134
|
authMode: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, true>;
|
|
135
|
+
offeringId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
129
136
|
service: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
130
137
|
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
131
138
|
apiKey: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
@@ -157,11 +164,13 @@ export declare const apiKeyCredentialTable: import("@undefineds.co/drizzle-solid
|
|
|
157
164
|
oauthExpiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
158
165
|
projectId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
159
166
|
organizationId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
167
|
+
metadata: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"json", null, false, false>;
|
|
160
168
|
}>>;
|
|
161
169
|
export declare const oauthCredentialResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
162
170
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
163
171
|
provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
164
172
|
authMode: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, true>;
|
|
173
|
+
offeringId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
165
174
|
service: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
166
175
|
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
167
176
|
apiKey: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
@@ -193,11 +202,13 @@ export declare const oauthCredentialResource: import("@undefineds.co/drizzle-sol
|
|
|
193
202
|
oauthExpiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
194
203
|
projectId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
195
204
|
organizationId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
205
|
+
metadata: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"json", null, false, false>;
|
|
196
206
|
}>>;
|
|
197
207
|
export declare const oauthCredentialTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
198
208
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
199
209
|
provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
200
210
|
authMode: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, true>;
|
|
211
|
+
offeringId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
201
212
|
service: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
202
213
|
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
203
214
|
apiKey: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
@@ -229,6 +240,7 @@ export declare const oauthCredentialTable: import("@undefineds.co/drizzle-solid/
|
|
|
229
240
|
oauthExpiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
230
241
|
projectId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
231
242
|
organizationId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
243
|
+
metadata: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"json", null, false, false>;
|
|
232
244
|
}>>;
|
|
233
245
|
export type CredentialRow = typeof credentialResource.$inferSelect;
|
|
234
246
|
export type CredentialInsert = typeof credentialResource.$inferInsert;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { boolean, id, integer, podTable, string, text, timestamp, uri } from "@undefineds.co/drizzle-solid";
|
|
1
|
+
import { boolean, id, integer, json, podTable, string, text, timestamp, uri } from "@undefineds.co/drizzle-solid";
|
|
2
2
|
import { DCTerms, UDFS } from "./namespaces.js";
|
|
3
3
|
export const ProviderAuthMode = {
|
|
4
4
|
oauth: "oauth",
|
|
@@ -19,6 +19,14 @@ export const credentialResource = podTable("credential", {
|
|
|
19
19
|
// Keep the write default while allowing credentials created before authMode
|
|
20
20
|
// was introduced to remain queryable and migratable.
|
|
21
21
|
authMode: string("authMode").predicate(UDFS.authMode).default(ProviderAuthMode.apiKey),
|
|
22
|
+
// Which offering of the provider this credential connects through, by the
|
|
23
|
+
// offering id the provider catalog publishes (`api-platform`,
|
|
24
|
+
// `official-subscription`, `subscription-key`, `token-plan`,
|
|
25
|
+
// `pay-as-you-go`, `local`, …). A plain attribute rather than a relation:
|
|
26
|
+
// offerings are catalog content, not Pod resources, and the set grows with
|
|
27
|
+
// the catalog, so the schema does not enumerate it. Never encode it in the
|
|
28
|
+
// provider resource id - `provider` says which provider, this says how.
|
|
29
|
+
offeringId: string("offeringId").predicate(UDFS.offeringId),
|
|
22
30
|
service: string("service").predicate(UDFS.service).notNull().default("ai"),
|
|
23
31
|
status: string("status").predicate(UDFS.status).notNull().default("active"),
|
|
24
32
|
apiKey: string("apiKey").predicate(UDFS.apiKey),
|
|
@@ -37,6 +45,7 @@ export const credentialResource = podTable("credential", {
|
|
|
37
45
|
proxyUrl: string("proxyUrl").predicate(UDFS.proxyUrl),
|
|
38
46
|
label: string("label").predicate(UDFS.label),
|
|
39
47
|
isDefault: boolean("isDefault").predicate(UDFS.isDefault).default(false),
|
|
48
|
+
// Older credentials predate this field; keep reads optional and default new writes.
|
|
40
49
|
createdAt: timestamp("createdAt").predicate(DCTerms.created).defaultNow(),
|
|
41
50
|
lastUsedAt: timestamp("lastUsedAt").predicate(UDFS.lastUsedAt),
|
|
42
51
|
// A credential Xpod itself issued to a client (the gateway `sk-` key) names the
|
|
@@ -56,6 +65,11 @@ export const credentialResource = podTable("credential", {
|
|
|
56
65
|
oauthExpiresAt: timestamp("oauthExpiresAt").predicate(UDFS.oauthExpiresAt),
|
|
57
66
|
projectId: string("projectId").predicate(UDFS.projectId),
|
|
58
67
|
organizationId: string("organizationId").predicate(UDFS.organizationId),
|
|
68
|
+
// Opaque adapter-local metadata only (account identity, compat switches, UI
|
|
69
|
+
// health/priority …). Shared relations must be explicit typed columns: a write
|
|
70
|
+
// to an undeclared column is dropped silently, so this declaration is what
|
|
71
|
+
// keeps existing callers' `metadata.*` reads and writes working.
|
|
72
|
+
metadata: json("metadata").predicate(UDFS.metadata),
|
|
59
73
|
}, {
|
|
60
74
|
base: "/settings/",
|
|
61
75
|
sparqlEndpoint: "/settings/-/sparql",
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* 提供 AI 供应商、模型等元数据的发现服务
|
|
5
5
|
* 支持内置数据 + 远程 API 获取(有 Key 时)
|
|
6
6
|
*/
|
|
7
|
-
export * from './types';
|
|
8
|
-
import type { ProviderMetadata, ModelMetadata, DiscoveryService } from './types';
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
import type { ProviderMetadata, ModelMetadata, DiscoveryService } from './types.js';
|
|
9
9
|
declare class BuiltinDiscoveryService implements DiscoveryService {
|
|
10
10
|
getProviders(): Promise<ProviderMetadata[]>;
|
|
11
11
|
getProvider(slug: string): Promise<ProviderMetadata | undefined>;
|