@undefineds.co/xpod 0.4.12 → 0.4.13
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/dist/acceptance/QleverSemanticConformance.js +7 -0
- package/dist/api/ai-gateway/providers/OfferingAuthorization.d.ts +6 -1
- package/dist/api/ai-gateway/providers/OfferingAuthorization.js +0 -3
- package/dist/api/ai-gateway/providers/ProviderRegistry.js +2 -2
- package/dist/api/ai-gateway/service-access/AiConnectionsServiceAccess.d.ts +1 -1
- package/dist/api/ai-gateway/service-access/AiConnectionsServiceAccess.js +1 -1
- package/dist/api/service/AiClientConfigurationService.d.ts +1 -1
- package/dist/api/service/AiClientConfigurationService.js +1 -1
- package/dist/storage/rdf/PostgresRdfEngine.js +10 -4
- package/dist/storage/rdf/RdfAccessScope.js +15 -1
- package/dist/storage/rdf/RdfEngineRdfJsSource.js +10 -2
- package/node_modules/@undefineds.co/ai-connections/dist/AiApiKeyPool.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiApiKeyPool.js +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiAuthorizationActions.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiClientConfigurationSection.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiClientConfigurationSection.js +3 -3
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectDialog.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectionsPanel.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiConnectionsPanel.js +2 -2
- package/node_modules/@undefineds.co/ai-connections/dist/AiCredentialPoolSection.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiCredentialRow.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiCustomProviderDialog.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiGatewayKeyRow.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiGatewayKeysSection.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiGatewayModelsSection.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiOfferingDetails.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiProviderCard.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiQuotaCard.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/AiSortableCredentialList.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/authorization-methods.d.ts +13 -11
- package/node_modules/@undefineds.co/ai-connections/dist/authorization-methods.js +16 -13
- package/node_modules/@undefineds.co/ai-connections/dist/collection-runtime.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/collection-runtime.js +3 -3
- package/node_modules/@undefineds.co/ai-connections/dist/collections.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/collections.js +3 -3
- package/node_modules/@undefineds.co/ai-connections/dist/controller.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/controller.js +3 -2
- package/node_modules/@undefineds.co/ai-connections/dist/credential-labels.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/display-wording.d.ts +20 -0
- package/node_modules/@undefineds.co/ai-connections/dist/display-wording.js +73 -0
- package/node_modules/@undefineds.co/ai-connections/dist/error-wording.d.ts +24 -0
- package/node_modules/@undefineds.co/ai-connections/dist/error-wording.js +253 -0
- package/node_modules/@undefineds.co/ai-connections/dist/gateway-endpoints.js +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/index.d.ts +2 -3
- package/node_modules/@undefineds.co/ai-connections/dist/index.js +2 -3
- package/node_modules/@undefineds.co/ai-connections/dist/offering-endpoints.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/offering-label.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/provider-visuals.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/service-access.js +1 -1
- package/node_modules/@undefineds.co/ai-connections/dist/useAiConnectDialog.d.ts +1 -1
- package/node_modules/@undefineds.co/ai-connections/package.json +1 -24
- package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/ai-connections-client.d.ts +5 -3
- package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/ai-connections-client.js +5 -3
- package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client/normalize.d.ts +17 -7
- package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client/normalize.js +18 -213
- package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client/request.js +3 -3
- package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client/types.d.ts +11 -2
- package/node_modules/@undefineds.co/ai-connections-core/dist/index.d.ts +9 -0
- package/node_modules/@undefineds.co/ai-connections-core/dist/index.js +9 -0
- package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/provider-catalog.cjs +2 -25
- package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/provider-catalog.d.ts +9 -8
- package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/provider-catalog.js +11 -31
- package/node_modules/@undefineds.co/ai-connections-core/package.json +61 -0
- package/node_modules/@undefineds.co/shared-ui/dist/index.d.ts +4 -2
- package/node_modules/@undefineds.co/shared-ui/dist/index.js +4 -2
- package/node_modules/@undefineds.co/shared-ui/dist/login/LoginModal.d.ts +4 -1
- package/node_modules/@undefineds.co/shared-ui/dist/login/LoginModal.js +12 -6
- package/node_modules/@undefineds.co/shared-ui/dist/login/LoginView.d.ts +1 -1
- package/node_modules/@undefineds.co/shared-ui/dist/login/host-types.d.ts +7 -1
- package/node_modules/@undefineds.co/shared-ui/dist/login/login-branding.d.ts +6 -0
- package/node_modules/@undefineds.co/shared-ui/dist/login/login-branding.js +18 -0
- package/node_modules/@undefineds.co/shared-ui/dist/user-facing-errors.d.ts +14 -2
- package/node_modules/@undefineds.co/shared-ui/dist/user-facing-errors.js +26 -17
- package/node_modules/@undefineds.co/solid-sdk/dist/login-store.d.ts +3 -3
- package/node_modules/@undefineds.co/solid-sdk/dist/login-store.js +3 -3
- package/package.json +5 -3
- package/static/app/assets/main.css +1 -1
- package/static/auth-callback/assets/{AiConfigContext-DnQs1ZpW.js → AiConfigContext-DlFyEWy9.js} +1 -1
- package/static/auth-callback/assets/{AiConfigPage-DOtvlxH0.js → AiConfigPage-CkYk-SFW.js} +1 -1
- package/static/auth-callback/assets/{DocumentProcessingPanel-BS2voQgL.js → DocumentProcessingPanel-CqIr3JqN.js} +1 -1
- package/static/auth-callback/assets/{IndexLifecyclePanel-Cvt0cJtN.js → IndexLifecyclePanel-C1GKV3Vx.js} +1 -1
- package/static/auth-callback/assets/{IndexSubjectPanel-Dhf01GqF.js → IndexSubjectPanel-ro9lC6XW.js} +1 -1
- package/static/auth-callback/assets/{ModelAssignmentsPanel-BJutWaAF.js → ModelAssignmentsPanel-DxNdyKRJ.js} +1 -1
- package/static/auth-callback/assets/{ModelsPage-BRS0sje3.js → ModelsPage-BVtWSPBU.js} +6 -6
- package/static/auth-callback/assets/{NetworkPage-B3qBfANA.js → NetworkPage-cEvxRMAl.js} +1 -1
- package/static/auth-callback/assets/{PaneListHeader-QQeJGTp4.js → PaneListHeader-ByKw8ada.js} +1 -1
- package/static/auth-callback/assets/{SearchIndexingPanel-MyNUSEwT.js → SearchIndexingPanel-CulBKcYT.js} +1 -1
- package/static/auth-callback/assets/{StatusSubjectPanel-DQkEVsFs.js → StatusSubjectPanel-VOcfrt8o.js} +1 -1
- package/static/auth-callback/assets/{StatusWorkspace-Dkv63Uwk.js → StatusWorkspace-Jsz6hAdE.js} +1 -1
- package/static/auth-callback/assets/{SystemSettingsPage-TIsUfX5d.js → SystemSettingsPage-BFNvGAle.js} +1 -1
- package/static/auth-callback/assets/{SystemSettingsSubjectPanel-BJWEt2-7.js → SystemSettingsSubjectPanel-DFRdrSfK.js} +1 -1
- package/static/auth-callback/assets/XpodAiConnectionsPodStore-C6KpvHVg.js +3 -0
- package/static/auth-callback/assets/{activity-5hNeNKnL.js → activity-DnTlb9iM.js} +1 -1
- package/static/auth-callback/assets/ai-connections-C6yaE6WQ.js +1 -0
- package/static/auth-callback/assets/auth-callback-Cx9D_1qj.css +1 -0
- package/static/auth-callback/assets/{auth-callback-CAFZ3R0B.js → auth-callback-D2UkK5Xj.js} +3 -3
- package/static/auth-callback/assets/{badge-CAIPI0CB.js → badge-D7IJuuTM.js} +1 -1
- package/static/auth-callback/assets/{collection-runtime-D9s7h9YA.js → collection-runtime-wT1n4GS2.js} +1 -1
- package/static/auth-callback/assets/{dialog-BjA109aX.js → dialog-DickLu5z.js} +1 -1
- package/static/auth-callback/assets/{download-B3Up5W2G.js → download-kn8WnRu3.js} +1 -1
- package/static/auth-callback/assets/{external-link-BTXgSPzB.js → external-link-B6B8jfSn.js} +1 -1
- package/static/auth-callback/assets/{index-DlLYWOhw.js → index-Cu0EguPo.js} +2 -2
- package/static/auth-callback/assets/{index-BppXlxcp.js → index-DHF97YLP.js} +1 -1
- package/static/auth-callback/assets/{index-CirW4CJf.js → index-Dz83EEHD.js} +1 -1
- package/static/auth-callback/assets/{index-browser-DtU38ni3.js → index-browser-CSghinyi.js} +1 -1
- package/static/auth-callback/assets/{key-round-CQCOrZ7x.js → key-round-ChkOx3E1.js} +1 -1
- package/static/auth-callback/assets/{rotate-ccw-C1zM2KtS.js → rotate-ccw-B3hE-nyd.js} +1 -1
- package/static/auth-callback/assets/{skeleton-Cqp7_M9-.js → skeleton-kEqR7tpI.js} +1 -1
- package/static/auth-callback/assets/{waypoints-Bj6gAUSQ.js → waypoints-D6Jo-SZa.js} +1 -1
- package/static/auth-callback/assets/{workspace-layout-DK8mDzrY.js → workspace-layout-BHwT_cHd.js} +1 -1
- package/static/auth-callback/auth-callback.html +2 -2
- package/static/dashboard/assets/{AiConfigContext-BsE7MqX8.js → AiConfigContext-BfC3v-x2.js} +1 -1
- package/static/dashboard/assets/{AiConfigPage-DvM-lRXa.js → AiConfigPage-QNS3u7Ff.js} +1 -1
- package/static/dashboard/assets/{DocumentProcessingPanel-BPfdlfuf.js → DocumentProcessingPanel-Dr4XLeT4.js} +1 -1
- package/static/dashboard/assets/{IndexLifecyclePanel--m0AGxvh.js → IndexLifecyclePanel-KtM_gpeO.js} +1 -1
- package/static/dashboard/assets/{IndexSubjectPanel-Bb7m1k3d.js → IndexSubjectPanel-DLaiKdLc.js} +1 -1
- package/static/dashboard/assets/{ModelAssignmentsPanel-BLi_zbMa.js → ModelAssignmentsPanel-Bk7TvQRq.js} +1 -1
- package/static/dashboard/assets/{ModelsPage-CxdpgnfR.js → ModelsPage-Cci3vlos.js} +6 -6
- package/static/dashboard/assets/{NetworkPage-BAIPw-D_.js → NetworkPage-Ot4G2dX5.js} +1 -1
- package/static/dashboard/assets/{PaneListHeader-BBCMei0r.js → PaneListHeader-qHME_s08.js} +1 -1
- package/static/dashboard/assets/{SearchIndexingPanel-Ck4Y-xjR.js → SearchIndexingPanel-HZPKj8H9.js} +1 -1
- package/static/dashboard/assets/{StatusSubjectPanel-D1KWfAXE.js → StatusSubjectPanel-ij7IpI8d.js} +1 -1
- package/static/dashboard/assets/{StatusWorkspace-JbA5gzXx.js → StatusWorkspace-Cp02JcaN.js} +1 -1
- package/static/dashboard/assets/{SystemSettingsPage-BbwQWsSR.js → SystemSettingsPage-BSeuvb8X.js} +1 -1
- package/static/dashboard/assets/{SystemSettingsSubjectPanel-N117nMt5.js → SystemSettingsSubjectPanel-CP4_luGS.js} +1 -1
- package/static/dashboard/assets/{XpodAiConnectionsPodStore-CdDOb4SV.js → XpodAiConnectionsPodStore-urO6zaHL.js} +7 -7
- package/static/dashboard/assets/{activity-DX1I96o_.js → activity-DxjgQNvr.js} +1 -1
- package/static/dashboard/assets/ai-connections-CXp5gd1J.js +1 -0
- package/static/dashboard/assets/{badge-k2vhtDqH.js → badge-53qCrRbl.js} +1 -1
- package/static/dashboard/assets/{collection-runtime-BFQ8teQJ.js → collection-runtime-BPAmHG46.js} +1 -1
- package/static/dashboard/assets/{dashboard-DWZ-fmCT.js → dashboard-BcT2ByXw.js} +2 -2
- package/static/dashboard/assets/dashboard-Cx9D_1qj.css +1 -0
- package/static/dashboard/assets/{dialog-1CCw-iHT.js → dialog-B28YtNhS.js} +1 -1
- package/static/dashboard/assets/{download-C6-SNY1q.js → download-DkLNceJ4.js} +1 -1
- package/static/dashboard/assets/{external-link-BgPcZ_j2.js → external-link-D3TXnlo3.js} +1 -1
- package/static/dashboard/assets/{index-D7A8U6Pt.js → index-CFIenkeK.js} +1 -1
- package/static/dashboard/assets/{index-6LcIUIYO.js → index-CIiBu9mr.js} +1 -1
- package/static/dashboard/assets/{index-UD6QOE7H.js → index-Gp3cLolR.js} +2 -2
- package/static/dashboard/assets/{key-round-BOd7Jo0Q.js → key-round-B5ccp6nx.js} +1 -1
- package/static/dashboard/assets/{rotate-ccw-CCgJqsvx.js → rotate-ccw-DUpfkNnk.js} +1 -1
- package/static/dashboard/assets/{skeleton-Bc7abAn5.js → skeleton-BRe19fO0.js} +1 -1
- package/static/dashboard/assets/{waypoints-s-opmJxx.js → waypoints-BKDMxEvu.js} +1 -1
- package/static/dashboard/assets/{workspace-layout-DqIQeTBV.js → workspace-layout-ZTF7C16h.js} +1 -1
- package/static/dashboard/dashboard.html +2 -2
- package/static/settings/assets/{AiConfigContext-BB9KZySa.js → AiConfigContext-DsyWgu2i.js} +1 -1
- package/static/settings/assets/{AiConfigPage-DGSXUkLs.js → AiConfigPage-CSCBckKo.js} +1 -1
- package/static/settings/assets/{DocumentProcessingPanel-Da2Re6Rg.js → DocumentProcessingPanel-w9yQDbBe.js} +1 -1
- package/static/settings/assets/{IndexLifecyclePanel-BSZuIzgr.js → IndexLifecyclePanel-CUUXI8mP.js} +1 -1
- package/static/settings/assets/{IndexSubjectPanel-CFd0ay-r.js → IndexSubjectPanel-BypAU5TJ.js} +1 -1
- package/static/settings/assets/{ModelAssignmentsPanel-CSAryvWJ.js → ModelAssignmentsPanel-BetgXw1G.js} +1 -1
- package/static/settings/assets/{ModelsPage-BQwCwLHU.js → ModelsPage-DZpTlTZ3.js} +6 -6
- package/static/settings/assets/{NetworkPage-BKymvsQc.js → NetworkPage-BVkasFGM.js} +1 -1
- package/static/settings/assets/{PaneListHeader-Bjh3hRdQ.js → PaneListHeader-BGOqGec4.js} +1 -1
- package/static/settings/assets/{SearchIndexingPanel-MjKL5QLU.js → SearchIndexingPanel-DYAbpZ_9.js} +1 -1
- package/static/settings/assets/{StatusSubjectPanel-Bvl6K4mx.js → StatusSubjectPanel-CFgzeQ8Q.js} +1 -1
- package/static/settings/assets/{StatusWorkspace-B0NzrP--.js → StatusWorkspace-4Z6g4Jvv.js} +1 -1
- package/static/settings/assets/{SystemSettingsPage-D2z6Z4FE.js → SystemSettingsPage-C1tlrgvI.js} +1 -1
- package/static/settings/assets/{SystemSettingsSubjectPanel-4sxma4X4.js → SystemSettingsSubjectPanel-CcURI-1L.js} +1 -1
- package/static/settings/assets/XpodAiConnectionsPodStore-owBQc5nY.js +3 -0
- package/static/settings/assets/{activity-CgJJGpjx.js → activity-CtBc9cNy.js} +1 -1
- package/static/settings/assets/ai-connections-C6yaE6WQ.js +1 -0
- package/static/settings/assets/{badge-C4NypVyT.js → badge--r-FDIhU.js} +1 -1
- package/static/settings/assets/{collection-runtime-CTLCDxAi.js → collection-runtime-CnhPmwAM.js} +1 -1
- package/static/settings/assets/{dialog-Csq0vWUi.js → dialog-B7ZRsjN7.js} +1 -1
- package/static/settings/assets/{download-DaLJJ-Wp.js → download-DgQ1F8QR.js} +1 -1
- package/static/settings/assets/{external-link--w_iW5Au.js → external-link-Bz7NckNO.js} +1 -1
- package/static/settings/assets/{index-B0mQa59b.js → index-BdXwm8nh.js} +2 -2
- package/static/settings/assets/{index-COmVnZi2.js → index-CkGda_Pg.js} +1 -1
- package/static/settings/assets/{index-BukHiu4y.js → index-Vv-8Vslg.js} +1 -1
- package/static/settings/assets/{index-browser-BGpvHwD0.js → index-browser-Dq7omlpY.js} +1 -1
- package/static/settings/assets/{key-round-Bk4YRjBu.js → key-round-CvuhloKV.js} +1 -1
- package/static/settings/assets/{rotate-ccw-TCabbqsr.js → rotate-ccw-DgFKDaz7.js} +1 -1
- package/static/settings/assets/{settings-CJWpdbNC.js → settings-BvqY7K96.js} +3 -3
- package/static/settings/assets/settings-Cx9D_1qj.css +1 -0
- package/static/settings/assets/{skeleton-JDHYVe7t.js → skeleton-D3OeFDF6.js} +1 -1
- package/static/settings/assets/{waypoints-DDvEl-MU.js → waypoints-C4WbspTb.js} +1 -1
- package/static/settings/assets/{workspace-layout-DV5QU30U.js → workspace-layout-B9H1Tqrk.js} +1 -1
- package/static/settings/settings.html +2 -2
- package/static/auth-callback/assets/XpodAiConnectionsPodStore-BJiXm-PF.js +0 -3
- package/static/auth-callback/assets/ai-connections-CryuHGKW.js +0 -1
- package/static/auth-callback/assets/auth-callback-rk080mvG.css +0 -1
- package/static/dashboard/assets/ai-connections-DwCRqOQa.js +0 -1
- package/static/dashboard/assets/dashboard-rk080mvG.css +0 -1
- package/static/settings/assets/XpodAiConnectionsPodStore-BkNQ8fZx.js +0 -3
- package/static/settings/assets/ai-connections-CryuHGKW.js +0 -1
- package/static/settings/assets/settings-rk080mvG.css +0 -1
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client/request.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client/types.js +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/base-adapter.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/base-adapter.js +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/codex.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/codex.js +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/index.cjs +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/index.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/index.js +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/json-env-adapter.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/json-env-adapter.js +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/pi.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/pi.js +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/transaction.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/transaction.js +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/types.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/client-config/types.js +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/credential-storage.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/credential-storage.js +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/endpoint-urls.d.ts +0 -0
- /package/node_modules/@undefineds.co/{ai-connections → ai-connections-core}/dist/endpoint-urls.js +0 -0
|
@@ -161,8 +161,15 @@ async function prepareAndApplyUpdate(engine, sparql, sourceUri, timeoutMs) {
|
|
|
161
161
|
}
|
|
162
162
|
const nativeSemanticCaseExecutor = {
|
|
163
163
|
prepareAndApplyUpdate,
|
|
164
|
+
// The fixture queries a container endpoint (`DEFAULT_BASE_PATH`), and every
|
|
165
|
+
// `Pod` query that is not inside `GRAPH` reads that container plus its
|
|
166
|
+
// subgraphs. `scopedUnion` is the dataset mode the product uses for a
|
|
167
|
+
// container endpoint (`SubgraphSparqlHttpHandler`), so the native authority is
|
|
168
|
+
// exercised under the same rule as the public authority, which has no dataset
|
|
169
|
+
// switch and always reads the endpoint scope.
|
|
164
170
|
query: (engine, testCase, timeoutMs) => nativeSparqlQuery(engine, testCase.query, {
|
|
165
171
|
basePath: RdfSemanticConformance_1.DEFAULT_BASE_PATH,
|
|
172
|
+
defaultDataset: 'scopedUnion',
|
|
166
173
|
operation: (0, RdfSemanticConformance_1.queryOperation)(testCase.acceptMediaType),
|
|
167
174
|
acceptMediaType: testCase.acceptMediaType,
|
|
168
175
|
timeoutMs,
|
|
@@ -3,7 +3,12 @@ export interface OfferingAuthorizationMethod {
|
|
|
3
3
|
id: string;
|
|
4
4
|
authMode: 'oauth' | 'deviceCode' | 'local' | 'apiKey';
|
|
5
5
|
connectMode?: 'authorizationCodeOAuth' | 'deviceCodeOAuth' | 'browserAssistedApiKey';
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Wording is the applet's (`display-wording.ts` in `@undefineds.co/ai-connections`),
|
|
8
|
+
* decided from the entry's id. The gateway names the entry and says whether this
|
|
9
|
+
* deployment can offer it; it does not write the button.
|
|
10
|
+
*/
|
|
11
|
+
label?: string;
|
|
7
12
|
lifecycle: 'active' | 'unavailable';
|
|
8
13
|
reason?: string;
|
|
9
14
|
}
|
|
@@ -12,7 +12,6 @@ function subscriptionAuthorizationMethods(deployment, binding) {
|
|
|
12
12
|
id: 'browser-oauth',
|
|
13
13
|
authMode: 'oauth',
|
|
14
14
|
connectMode: 'authorizationCodeOAuth',
|
|
15
|
-
label: '浏览器登录',
|
|
16
15
|
lifecycle: deployment === 'local' ? 'active' : 'unavailable',
|
|
17
16
|
...(deployment === 'local' ? {} : { reason: '浏览器登录需要本机回调,请在本机 Xpod 中使用,或选择设备码登录。' }),
|
|
18
17
|
}] : [];
|
|
@@ -22,13 +21,11 @@ function subscriptionAuthorizationMethods(deployment, binding) {
|
|
|
22
21
|
id: 'device-code',
|
|
23
22
|
authMode: 'deviceCode',
|
|
24
23
|
connectMode: 'deviceCodeOAuth',
|
|
25
|
-
label: '设备码登录',
|
|
26
24
|
lifecycle: 'active',
|
|
27
25
|
},
|
|
28
26
|
{
|
|
29
27
|
id: 'local-session-import',
|
|
30
28
|
authMode: 'local',
|
|
31
|
-
label: '已有登录态',
|
|
32
29
|
lifecycle: deployment === 'local' ? 'active' : 'unavailable',
|
|
33
30
|
...(deployment === 'local' ? {} : { reason: '请在运行本机客户端的 Xpod 上导入登录态。' }),
|
|
34
31
|
},
|
|
@@ -8,7 +8,7 @@ exports.offeringDeclaresUpstreamCapability = offeringDeclaresUpstreamCapability;
|
|
|
8
8
|
exports.normalizeProviderId = normalizeProviderId;
|
|
9
9
|
const models_1 = require("@undefineds.co/models");
|
|
10
10
|
const defaultEmbeddingProfile_1 = require("../../../ai/service/defaultEmbeddingProfile");
|
|
11
|
-
const provider_catalog_1 = require("@undefineds.co/ai-connections/provider-catalog");
|
|
11
|
+
const provider_catalog_1 = require("@undefineds.co/ai-connections-core/provider-catalog");
|
|
12
12
|
const OfferingAuthorization_1 = require("./OfferingAuthorization");
|
|
13
13
|
exports.OPENAI_SUBSCRIPTION_BASE_URL = 'https://chatgpt.com/backend-api/codex';
|
|
14
14
|
exports.MANAGED_PROVIDER_VOCABULARY = [
|
|
@@ -280,7 +280,7 @@ function providerProductsForDeployment(deployment) {
|
|
|
280
280
|
}
|
|
281
281
|
else if (offering.kind === 'local') {
|
|
282
282
|
authorizationMethods.push({
|
|
283
|
-
id: 'local-service', authMode: 'local',
|
|
283
|
+
id: 'local-service', authMode: 'local',
|
|
284
284
|
lifecycle: offering.lifecycle === 'unavailable' ? 'unavailable' : 'active',
|
|
285
285
|
});
|
|
286
286
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AI_CONNECTIONS_PROVIDER_DOCUMENT_IDS } from '@undefineds.co/ai-connections/provider-catalog';
|
|
1
|
+
import { AI_CONNECTIONS_PROVIDER_DOCUMENT_IDS } from '@undefineds.co/ai-connections-core/provider-catalog';
|
|
2
2
|
export declare const AI_CONNECTIONS_APPLET_ID = "co.undefineds.ai-connections";
|
|
3
3
|
/**
|
|
4
4
|
* Provider documents this service may reach. The list is projected from the
|
|
@@ -7,7 +7,7 @@ exports.resolveGatewayAccessKeySecretResourceUrl = resolveGatewayAccessKeySecret
|
|
|
7
7
|
exports.resolveGatewayAccessKeySparqlEndpoint = resolveGatewayAccessKeySparqlEndpoint;
|
|
8
8
|
exports.isGatewayAccessKeySparqlEndpoint = isGatewayAccessKeySparqlEndpoint;
|
|
9
9
|
const drizzle_solid_1 = require("@undefineds.co/drizzle-solid");
|
|
10
|
-
const provider_catalog_1 = require("@undefineds.co/ai-connections/provider-catalog");
|
|
10
|
+
const provider_catalog_1 = require("@undefineds.co/ai-connections-core/provider-catalog");
|
|
11
11
|
Object.defineProperty(exports, "AI_CONNECTIONS_PROVIDER_DOCUMENT_IDS", { enumerable: true, get: function () { return provider_catalog_1.AI_CONNECTIONS_PROVIDER_DOCUMENT_IDS; } });
|
|
12
12
|
const models_1 = require("@undefineds.co/models");
|
|
13
13
|
exports.AI_CONNECTIONS_APPLET_ID = 'co.undefineds.ai-connections';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AiClientModelReference } from '@undefineds.co/ai-connections/client-config';
|
|
1
|
+
import { type AiClientModelReference } from '@undefineds.co/ai-connections-core/client-config';
|
|
2
2
|
import type { AuthContext } from '../auth/AuthContext';
|
|
3
3
|
export type AiClientId = 'codex' | 'claude-code' | 'pi' | 'codebuddy';
|
|
4
4
|
export interface AiClientConfigurationCapabilityDescriptor {
|
|
@@ -10,7 +10,7 @@ const node_crypto_1 = require("node:crypto");
|
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
11
|
const node_fs_1 = require("node:fs");
|
|
12
12
|
const node_child_process_1 = require("node:child_process");
|
|
13
|
-
const client_config_1 = require("@undefineds.co/ai-connections/client-config");
|
|
13
|
+
const client_config_1 = require("@undefineds.co/ai-connections-core/client-config");
|
|
14
14
|
const PLAN_SECRET_PLACEHOLDER = '[redacted]';
|
|
15
15
|
const MANUAL_INSTRUCTIONS = 'Manual client setup is available when this host cannot safely write local coding-client files.';
|
|
16
16
|
const CLIENT_LABELS = {
|
|
@@ -5716,12 +5716,18 @@ class PostgresRdfEngine {
|
|
|
5716
5716
|
continue;
|
|
5717
5717
|
}
|
|
5718
5718
|
if ((0, types_1.isTerm)(value)) {
|
|
5719
|
-
//
|
|
5720
|
-
//
|
|
5721
|
-
//
|
|
5722
|
-
//
|
|
5719
|
+
// A query that names no graph asks its own scope's container, so the
|
|
5720
|
+
// scope's container prefix becomes the graph prefix: Pod documents are
|
|
5721
|
+
// stored as named graphs (their document IRI) and a client cannot name
|
|
5722
|
+
// one, because the SPARQL endpoint takes no dataset parameter. Without a
|
|
5723
|
+
// prefix there is nothing to scope by and the condition stays off, which
|
|
5724
|
+
// is what used to keep ordinary Pod queries from returning nothing.
|
|
5725
|
+
// See docs/rdf-graph-semantics.md.
|
|
5723
5726
|
const sourceScope = explicitSourceScope ?? pattern.sourceScope;
|
|
5724
5727
|
if (key === 'graph' && value.termType === 'DefaultGraph' && sourceScopeHasFilters(sourceScope)) {
|
|
5728
|
+
if (sourceScope?.sourcePrefix) {
|
|
5729
|
+
graphPrefix = sourceScope.sourcePrefix;
|
|
5730
|
+
}
|
|
5725
5731
|
continue;
|
|
5726
5732
|
}
|
|
5727
5733
|
const id = await this.requireDictionary().find(value);
|
|
@@ -168,7 +168,21 @@ function scopeOptionalGroup(group, scope, state) {
|
|
|
168
168
|
}
|
|
169
169
|
function scopePattern(pattern, filters, scope, state) {
|
|
170
170
|
const sourceScope = scopeFactSources(pattern.sourceScope, scope);
|
|
171
|
-
const
|
|
171
|
+
const requested = pattern.graph;
|
|
172
|
+
// A container IRI names a container, not a graph: asking for it asks for that
|
|
173
|
+
// container and its subgraphs (LDP containment). The trailing slash is what
|
|
174
|
+
// keeps `<pod/a/>` from matching `<pod/ab`, and a document IRI stays exact.
|
|
175
|
+
// Resolving it here rather than inside one engine means every query path - the
|
|
176
|
+
// public authority, the Pod endpoint, a direct engine query - reads the same
|
|
177
|
+
// rule. See docs/rdf-graph-semantics.md.
|
|
178
|
+
const containerPrefix = (0, types_1.isTerm)(requested)
|
|
179
|
+
&& requested.termType === 'NamedNode'
|
|
180
|
+
&& requested.value.endsWith('/')
|
|
181
|
+
? { $startsWith: requested.value }
|
|
182
|
+
: undefined;
|
|
183
|
+
const graph = containerPrefix
|
|
184
|
+
?? pattern.graph
|
|
185
|
+
?? { $startsWith: scope.basePath };
|
|
172
186
|
if (isVariable(graph)) {
|
|
173
187
|
addGraphAccessFilters(filters, graph.variable, scope);
|
|
174
188
|
return {
|
|
@@ -64,7 +64,15 @@ class RdfEngineMatchIterator extends asynciterator_1.BufferedIterator {
|
|
|
64
64
|
}
|
|
65
65
|
const SLOT_NAMES = ['subject', 'predicate', 'object', 'graph'];
|
|
66
66
|
async function executeMatch(rdfEngine, terms, options) {
|
|
67
|
-
|
|
67
|
+
// A graph term that names a container - or names nothing at all - is a *prefix*
|
|
68
|
+
// the facts must fall under, not a graph the rows belong to. Reporting it back
|
|
69
|
+
// would show the caller a graph that no triple is stored in (the container IRI,
|
|
70
|
+
// or the default-graph marker); the row's own graph is the truthful answer and
|
|
71
|
+
// is always under that prefix. See docs/rdf-graph-semantics.md.
|
|
72
|
+
const graphIsScopedPrefix = isUnboundMatchTerm(terms.graph)
|
|
73
|
+
|| terms.graph.termType === 'DefaultGraph'
|
|
74
|
+
|| (terms.graph.termType === 'NamedNode' && terms.graph.value.endsWith('/'));
|
|
75
|
+
const select = SLOT_NAMES.filter((slot) => isUnboundMatchTerm(terms[slot]) || (slot === 'graph' && graphIsScopedPrefix));
|
|
68
76
|
const result = await queryWithAbort(rdfEngine, (0, RdfAccessScope_1.applyRdfAccessScope)({
|
|
69
77
|
patterns: [matchPattern(terms)],
|
|
70
78
|
select,
|
|
@@ -72,7 +80,7 @@ async function executeMatch(rdfEngine, terms, options) {
|
|
|
72
80
|
assertNotAborted(options.signal);
|
|
73
81
|
return result.bindings.map((row) => {
|
|
74
82
|
assertNotAborted(options.signal);
|
|
75
|
-
return quad(requireQuadSubject(isUnboundMatchTerm(terms.subject) ? requireBinding(row, 'subject') : terms.subject), requireQuadPredicate(isUnboundMatchTerm(terms.predicate) ? requireBinding(row, 'predicate') : terms.predicate), requireQuadObject(isUnboundMatchTerm(terms.object) ? requireBinding(row, 'object') : terms.object), requireQuadGraph(
|
|
83
|
+
return quad(requireQuadSubject(isUnboundMatchTerm(terms.subject) ? requireBinding(row, 'subject') : terms.subject), requireQuadPredicate(isUnboundMatchTerm(terms.predicate) ? requireBinding(row, 'predicate') : terms.predicate), requireQuadObject(isUnboundMatchTerm(terms.object) ? requireBinding(row, 'object') : terms.object), requireQuadGraph(graphIsScopedPrefix ? (row.graph ?? defaultGraph()) : terms.graph));
|
|
76
84
|
});
|
|
77
85
|
}
|
|
78
86
|
async function executeCount(rdfEngine, terms, options) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiConnectAttempt, AiProviderCredentialSummary, AiProviderOffering } from '
|
|
1
|
+
import type { AiConnectAttempt, AiProviderCredentialSummary, AiProviderOffering } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
import type { AiProviderDefinition } from './controller';
|
|
3
3
|
import type { ProviderConnectionState } from './AiProviderCard';
|
|
4
4
|
export declare function AiApiKeyPool({ definition, offering, createOfferings, status, credentials, attempt, apiKey, baseUrl, busy, disabled, error, onApiKeyChange, onBaseUrlChange, onBeginApiKey, onBeginBrowser, onSaveApiKey, onDisconnect, onCreateApiKeyCredential, onUpdateCredential, initialEditing, initialCreate, onSavingChange, onCloseEdit, }: {
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { Button, Input, cn } from '@undefineds.co/shared-ui';
|
|
4
4
|
import { ExternalLink, Eye, EyeOff, KeyRound, Loader2, LogOut, Plus, RotateCw } from 'lucide-react';
|
|
5
|
-
import { normalizeProxyUrl } from '
|
|
5
|
+
import { normalizeProxyUrl } from '@undefineds.co/ai-connections-core/client';
|
|
6
6
|
import { offeringTitle } from './offering-label.js';
|
|
7
7
|
import { authorizationMethodsForOffering, isApiKeyMethod } from './authorization-methods.js';
|
|
8
8
|
import { nextCredentialPriority } from './credential-labels.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiConnectionsMode, AiProviderAuthorizationMethod, AiProviderOffering } from '
|
|
1
|
+
import type { AiConnectionsMode, AiProviderAuthorizationMethod, AiProviderOffering } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
/**
|
|
3
3
|
* The offering's own entries, one button per declared `authorizationMethod`.
|
|
4
4
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AiClientConfigurationModel } from '@undefineds.co/extension-sdk/web';
|
|
2
|
-
import { normalizeV1Endpoint } from '
|
|
2
|
+
import { normalizeV1Endpoint } from '@undefineds.co/ai-connections-core/endpoint-urls';
|
|
3
3
|
export declare const AI_CONNECTIONS_CLIENTS: readonly ["codex", "claude-code", "pi", "codebuddy"];
|
|
4
4
|
export type AiConnectionsClientId = (typeof AI_CONNECTIONS_CLIENTS)[number];
|
|
5
5
|
export interface AiClientConfigurationStatus {
|
|
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { Badge, Button, Input, } from '@undefineds.co/shared-ui';
|
|
4
4
|
import { RotateCcw, SquareTerminal } from 'lucide-react';
|
|
5
|
-
import {
|
|
5
|
+
import { aiConnectionsErrorMessage } from './error-wording.js';
|
|
6
6
|
import { getClientAvatar } from './client-visuals.js';
|
|
7
|
-
import { normalizeMessagesEndpoint, normalizeV1Endpoint } from '
|
|
7
|
+
import { normalizeMessagesEndpoint, normalizeV1Endpoint } from '@undefineds.co/ai-connections-core/endpoint-urls';
|
|
8
8
|
import { AiCopyButton } from './AiCopyButton.js';
|
|
9
9
|
export const AI_CONNECTIONS_CLIENTS = ['codex', 'claude-code', 'pi', 'codebuddy'];
|
|
10
10
|
export const AI_CLIENT_LABELS = {
|
|
@@ -246,5 +246,5 @@ function failedAndRestoredError(error) {
|
|
|
246
246
|
error.code === 'verification_failed_restored');
|
|
247
247
|
}
|
|
248
248
|
function errorMessage(error) {
|
|
249
|
-
return
|
|
249
|
+
return aiConnectionsErrorMessage(error);
|
|
250
250
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiConnectAttempt, AiConnectionsMode, AiProviderAuthorizationMethod, AiProviderCredentialSummary, AiProviderOffering } from '
|
|
1
|
+
import type { AiConnectAttempt, AiConnectionsMode, AiProviderAuthorizationMethod, AiProviderCredentialSummary, AiProviderOffering } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
import type { AiProviderDefinition } from './controller';
|
|
3
3
|
import type { ProviderConnectionState } from './AiProviderCard';
|
|
4
4
|
import type { AiOfferingActionError } from './AiCredentialPoolSection';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AiConnectionsClient, type AiConnectionsProvider, type AiProviderConnectionSummary, type AiProviderSummary } from '
|
|
1
|
+
import { type AiConnectionsClient, type AiConnectionsProvider, type AiProviderConnectionSummary, type AiProviderSummary } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
import { type AiConnectionsWorkspaceSection, type ProviderProductState } from './controller';
|
|
3
3
|
import type { AiClientConfigurationBridge } from './AiClientConfigurationSection';
|
|
4
4
|
import { type CredentialRow } from './collections';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
3
|
import { Toaster, toast, } from '@undefineds.co/shared-ui';
|
|
4
|
-
import { normalizeAiConnectionsThrownError, } from './ai-connections-client.js';
|
|
5
4
|
import { PROVIDERS, } from './controller.js';
|
|
5
|
+
import { aiConnectionsErrorMessage } from './error-wording.js';
|
|
6
6
|
import { offeringTitle } from './offering-label.js';
|
|
7
7
|
import { AiProviderCard, } from './AiProviderCard.js';
|
|
8
8
|
import { AiModelEditorDialog, } from './AiModelEditorDialog.js';
|
|
@@ -878,7 +878,7 @@ function errorMessage(error) {
|
|
|
878
878
|
if (error instanceof TypeError && /failed to fetch|fetch failed|networkerror|load failed/i.test(error.message)) {
|
|
879
879
|
return '暂时无法连接 Xpod,请在连接恢复后确认操作结果,再重试。';
|
|
880
880
|
}
|
|
881
|
-
const message =
|
|
881
|
+
const message = aiConnectionsErrorMessage(error);
|
|
882
882
|
return message === 'AI Connection request failed. Please try again.'
|
|
883
883
|
? '请求未完成。请确认 Xpod 正在运行且登录仍有效,然后重试。'
|
|
884
884
|
: message;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiConnectAttempt, AiConnectionsMode, AiProviderAuthorizationMethod, AiProviderCredentialSummary, AiProviderOffering, AiProviderSummary, AiQuotaSnapshot } from '
|
|
1
|
+
import type { AiConnectAttempt, AiConnectionsMode, AiProviderAuthorizationMethod, AiProviderCredentialSummary, AiProviderOffering, AiProviderSummary, AiQuotaSnapshot } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
import type { AiProviderDefinition } from './controller';
|
|
3
3
|
import type { ProviderConnectionState } from './AiProviderCard';
|
|
4
4
|
export interface AiOfferingActionError {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type { AiProviderCredentialSummary } from '
|
|
2
|
+
import type { AiProviderCredentialSummary } from '@undefineds.co/ai-connections-core/client';
|
|
3
3
|
export declare function AiCredentialRow({ credential, label, busy, disabled, dragHandle, kindLabel, quota, onToggle, onTest, onEdit, onDelete, deleteAriaLabel, }: {
|
|
4
4
|
credential: AiProviderCredentialSummary;
|
|
5
5
|
label: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CreateApiKeyCredentialInput } from '
|
|
1
|
+
import type { CreateApiKeyCredentialInput } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
export type CustomProviderCompatibility = 'auto' | 'openai' | 'anthropic';
|
|
3
3
|
export interface CustomProviderValue extends CreateApiKeyCredentialInput {
|
|
4
4
|
compatibility: CustomProviderCompatibility;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GatewayKeyRecord } from '
|
|
1
|
+
import type { GatewayKeyRecord } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
import { type AiConnectionsClientId } from './AiClientConfigurationSection';
|
|
3
3
|
export interface AiGatewayKeyBinding {
|
|
4
4
|
clientId?: AiConnectionsClientId;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiConnectionsClient, AiGatewayModel } from '
|
|
1
|
+
import type { AiConnectionsClient, AiGatewayModel } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
import { type AiClientConfigurationBridge } from './AiClientConfigurationSection';
|
|
3
3
|
import { type GatewayModelSelection } from './AiGatewayModelsSection';
|
|
4
4
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiProviderAuthorizationMethod, AiProviderOffering } from '
|
|
1
|
+
import type { AiProviderAuthorizationMethod, AiProviderOffering } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
export declare function AiOfferingDetails({ offering, methods }: {
|
|
3
3
|
offering: AiProviderOffering;
|
|
4
4
|
methods?: AiProviderAuthorizationMethod[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiConnectAttempt, AiConnectionsMode, AiGatewayModel, AiProviderCredentialSummary, AiProviderAuthorizationMethod, AiProviderOffering, AiProviderSummary } from '
|
|
1
|
+
import type { AiConnectAttempt, AiConnectionsMode, AiGatewayModel, AiProviderCredentialSummary, AiProviderAuthorizationMethod, AiProviderOffering, AiProviderSummary } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
import { type AiOfferingActionError, type AiOfferingQuotaState } from './AiCredentialPoolSection';
|
|
3
3
|
export type { AiProviderDefinition } from './controller';
|
|
4
4
|
import type { AiProviderDefinition } from './controller';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiQuotaSnapshot } from '
|
|
1
|
+
import type { AiQuotaSnapshot } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
export declare function AiQuotaCard({ providerName, offeringName, quota, busy, disabled, credentialLabel, multiple, compact, paused, error, onRefresh, }: {
|
|
3
3
|
providerName: string;
|
|
4
4
|
offeringName: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
-
import type { AiProviderCredentialSummary } from '
|
|
2
|
+
import type { AiProviderCredentialSummary } from '@undefineds.co/ai-connections-core/client';
|
|
3
3
|
export declare function AiSortableCredentialList({ credentials, disabled, onMove, children }: {
|
|
4
4
|
credentials: AiProviderCredentialSummary[];
|
|
5
5
|
disabled: boolean;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import type { AiConnectAttempt, AiConnectionsMode, AiProviderAuthorizationMethod, AiProviderOffering } from '
|
|
1
|
+
import type { AiConnectAttempt, AiConnectionsMode, AiProviderAuthorizationMethod, AiProviderOffering } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
/**
|
|
3
|
-
* Authorization methods an offering exposes
|
|
4
|
-
* keeps that list - including an empty one, which is how the server says "this
|
|
5
|
-
* offering has no connect entry here" instead of publishing an entry that
|
|
6
|
-
* cannot be used. The rest derive one method per entry of `authModes`, which is
|
|
7
|
-
* what a payload without the field (a catalog consumer that never asked the
|
|
8
|
-
* server) falls back to.
|
|
3
|
+
* Authorization methods an offering exposes, worded for display.
|
|
9
4
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
5
|
+
* An offering that declares them keeps that list - including an empty one, which
|
|
6
|
+
* is how the server says "this offering has no connect entry here" instead of
|
|
7
|
+
* publishing an entry that cannot be used. The rest derive one method per entry
|
|
8
|
+
* of `authModes`, which is what a payload without the field (a catalog consumer
|
|
9
|
+
* that never asked the server) falls back to.
|
|
10
|
+
*
|
|
11
|
+
* Neither branch carries wording of its own: every path that renders a connect
|
|
12
|
+
* entry goes through here, so this is the one place the applet's wording table
|
|
13
|
+
* is applied, and an entry the table does not know keeps whatever the payload
|
|
14
|
+
* declared - or stays unrendered, which is how "the offering did not ask for
|
|
15
|
+
* this button" has always been said.
|
|
14
16
|
*/
|
|
15
17
|
export declare function authorizationMethodsForOffering(offering: AiProviderOffering): AiProviderAuthorizationMethod[];
|
|
16
18
|
export declare function connectModeForMethod(method: AiProviderAuthorizationMethod): AiConnectionsMode | undefined;
|
|
@@ -1,17 +1,23 @@
|
|
|
1
|
+
import { withAuthorizationMethodLabels } from './display-wording.js';
|
|
1
2
|
/**
|
|
2
|
-
* Authorization methods an offering exposes
|
|
3
|
-
* keeps that list - including an empty one, which is how the server says "this
|
|
4
|
-
* offering has no connect entry here" instead of publishing an entry that
|
|
5
|
-
* cannot be used. The rest derive one method per entry of `authModes`, which is
|
|
6
|
-
* what a payload without the field (a catalog consumer that never asked the
|
|
7
|
-
* server) falls back to.
|
|
3
|
+
* Authorization methods an offering exposes, worded for display.
|
|
8
4
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
5
|
+
* An offering that declares them keeps that list - including an empty one, which
|
|
6
|
+
* is how the server says "this offering has no connect entry here" instead of
|
|
7
|
+
* publishing an entry that cannot be used. The rest derive one method per entry
|
|
8
|
+
* of `authModes`, which is what a payload without the field (a catalog consumer
|
|
9
|
+
* that never asked the server) falls back to.
|
|
10
|
+
*
|
|
11
|
+
* Neither branch carries wording of its own: every path that renders a connect
|
|
12
|
+
* entry goes through here, so this is the one place the applet's wording table
|
|
13
|
+
* is applied, and an entry the table does not know keeps whatever the payload
|
|
14
|
+
* declared - or stays unrendered, which is how "the offering did not ask for
|
|
15
|
+
* this button" has always been said.
|
|
13
16
|
*/
|
|
14
17
|
export function authorizationMethodsForOffering(offering) {
|
|
18
|
+
return withAuthorizationMethodLabels(declaredOrDerivedMethods(offering));
|
|
19
|
+
}
|
|
20
|
+
function declaredOrDerivedMethods(offering) {
|
|
15
21
|
if (Array.isArray(offering.authorizationMethods))
|
|
16
22
|
return offering.authorizationMethods;
|
|
17
23
|
const lifecycle = offering.lifecycle === 'unavailable' ? 'unavailable' : 'active';
|
|
@@ -21,7 +27,6 @@ export function authorizationMethodsForOffering(offering) {
|
|
|
21
27
|
id: 'api-key',
|
|
22
28
|
authMode: 'apiKey',
|
|
23
29
|
connectMode: 'browserAssistedApiKey',
|
|
24
|
-
label: 'API Key',
|
|
25
30
|
lifecycle,
|
|
26
31
|
};
|
|
27
32
|
}
|
|
@@ -30,7 +35,6 @@ export function authorizationMethodsForOffering(offering) {
|
|
|
30
35
|
return {
|
|
31
36
|
id: localService ? 'local-service' : 'local-session-import',
|
|
32
37
|
authMode: 'local',
|
|
33
|
-
label: localService ? '本地服务' : '已有登录态',
|
|
34
38
|
lifecycle,
|
|
35
39
|
};
|
|
36
40
|
}
|
|
@@ -38,7 +42,6 @@ export function authorizationMethodsForOffering(offering) {
|
|
|
38
42
|
id: 'device-code',
|
|
39
43
|
authMode: mode,
|
|
40
44
|
connectMode: 'deviceCodeOAuth',
|
|
41
|
-
label: '浏览器登录',
|
|
42
45
|
lifecycle,
|
|
43
46
|
};
|
|
44
47
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AiConnectionsPodStore, WebExtensionHost } from '@undefineds.co/extension-sdk/web';
|
|
2
|
-
import type { AiConnectionsClient } from '
|
|
2
|
+
import type { AiConnectionsClient } from '@undefineds.co/ai-connections-core/client';
|
|
3
3
|
import { type CredentialCollection } from './collections';
|
|
4
4
|
/**
|
|
5
5
|
* The half of the credentials table that needs the collection layer at runtime.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { credentialDescriptor, credentialResource } from '@undefineds.co/models';
|
|
2
2
|
import { rowKeyOf } from '@undefineds.co/pod-collections';
|
|
3
|
-
import { credentialProviderRelation, credentialRowKeyFor, customCredentialProviderRelation, } from '
|
|
3
|
+
import { credentialProviderRelation, credentialRowKeyFor, customCredentialProviderRelation, } from '@undefineds.co/ai-connections-core/client';
|
|
4
4
|
import { credentialSummaryFromRow } from './collections.js';
|
|
5
|
-
import { normalizeProxyUrl } from '
|
|
6
|
-
import { credentialOfferingMetadata, defaultOfferingFor, offeringBaseUrl, storedOfferingIdFor, } from '
|
|
5
|
+
import { normalizeProxyUrl } from '@undefineds.co/ai-connections-core/client';
|
|
6
|
+
import { credentialOfferingMetadata, defaultOfferingFor, offeringBaseUrl, storedOfferingIdFor, } from '@undefineds.co/ai-connections-core/provider-catalog';
|
|
7
7
|
/**
|
|
8
8
|
* The half of the credentials table that needs the collection layer at runtime.
|
|
9
9
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { credentialDescriptor } from '@undefineds.co/models';
|
|
2
2
|
import type { PodCollection, RowOf } from '@undefineds.co/pod-collections';
|
|
3
|
-
import type { AiConnectionsProvider, AiProviderCredentialSummary, AiProviderSummary } from '
|
|
3
|
+
import type { AiConnectionsProvider, AiProviderCredentialSummary, AiProviderSummary } from '@undefineds.co/ai-connections-core/client';
|
|
4
4
|
/**
|
|
5
5
|
* The credentials table, declared once (`docs/pod-collections.md` §6.4-2).
|
|
6
6
|
*
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { credentialResource } from '@undefineds.co/models';
|
|
2
2
|
import { useSyncExternalStore } from 'react';
|
|
3
|
-
import { AI_CONNECTIONS_PROVIDERS } from '
|
|
4
|
-
import { defaultOfferingFor } from '
|
|
5
|
-
import { providerOfCredentialKey, providerResourceKey } from '
|
|
3
|
+
import { AI_CONNECTIONS_PROVIDERS } from '@undefineds.co/ai-connections-core/client';
|
|
4
|
+
import { defaultOfferingFor } from '@undefineds.co/ai-connections-core/provider-catalog';
|
|
5
|
+
import { providerOfCredentialKey, providerResourceKey } from '@undefineds.co/ai-connections-core/client';
|
|
6
6
|
/**
|
|
7
7
|
* Live rows for the credentials table. Re-renders on sync and on optimistic
|
|
8
8
|
* writes, because the source is the collection's own change feed.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SolidLiveUpdateState, WebExtensionHost } from '@undefineds.co/extension-sdk/web';
|
|
2
|
-
import { type AiConnectionsClient, type AiConnectionsProvider, type AiProviderConnectionSummary, type AiProviderSummary } from '
|
|
2
|
+
import { type AiConnectionsClient, type AiConnectionsProvider, type AiProviderConnectionSummary, type AiProviderSummary } from '@undefineds.co/ai-connections-core/client';
|
|
3
3
|
import type { AiClientConfigurationBridge } from './AiClientConfigurationSection';
|
|
4
4
|
import { type CredentialRow } from './collections';
|
|
5
5
|
import type { PodCollection } from '@undefineds.co/pod-collections';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useSyncExternalStore } from 'react';
|
|
2
|
-
import { AI_CONNECTIONS_PROVIDERS, AiConnectionsRequestError, createAiConnectionsClient,
|
|
2
|
+
import { AI_CONNECTIONS_PROVIDERS, AiConnectionsRequestError, createAiConnectionsClient, } from '@undefineds.co/ai-connections-core/client';
|
|
3
|
+
import { aiConnectionsErrorMessage } from './error-wording.js';
|
|
3
4
|
import { credentialCollectionRuntime, } from './collections.js';
|
|
4
5
|
/**
|
|
5
6
|
* Provider pages explain themselves through the header's ⓘ tooltip, so each
|
|
@@ -1014,7 +1015,7 @@ function isDefined(value) {
|
|
|
1014
1015
|
return value !== undefined;
|
|
1015
1016
|
}
|
|
1016
1017
|
function errorMessage(error) {
|
|
1017
|
-
return
|
|
1018
|
+
return aiConnectionsErrorMessage(error);
|
|
1018
1019
|
}
|
|
1019
1020
|
/** The wrapper carries the OIDC client id; parsing it needs no stored secret. */
|
|
1020
1021
|
function clientIdFromApiKey(apiKey) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiProviderCredentialSummary } from '
|
|
1
|
+
import type { AiProviderCredentialSummary } from '@undefineds.co/ai-connections-core/client';
|
|
2
2
|
/** Highest priority first: a new credential joins the end of the pool. */
|
|
3
3
|
export declare function nextCredentialPriority(credentials: AiProviderCredentialSummary[]): number;
|
|
4
4
|
export declare function credentialDisplayLabel(credential: AiProviderCredentialSummary): string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AiConnectionsProvider, AiProviderAuthorizationMethod } from '@undefineds.co/ai-connections-core/client';
|
|
2
|
+
/**
|
|
3
|
+
* Wording for one connect entry.
|
|
4
|
+
*
|
|
5
|
+
* A payload that declares its own wording keeps it: the entry's own name is the
|
|
6
|
+
* more specific statement, and it is how a provider the user configured names
|
|
7
|
+
* its entry, and how one offering renames a shared action for its context. The
|
|
8
|
+
* table only fills the gap the shared core deliberately leaves - it names the
|
|
9
|
+
* action by `id` and no longer writes the button.
|
|
10
|
+
*/
|
|
11
|
+
export declare function authorizationMethodLabel(method: AiProviderAuthorizationMethod): string | undefined;
|
|
12
|
+
/** Fills in the wording of every entry that has one. */
|
|
13
|
+
export declare function withAuthorizationMethodLabels(methods: readonly AiProviderAuthorizationMethod[]): AiProviderAuthorizationMethod[];
|
|
14
|
+
/**
|
|
15
|
+
* The name this applet shows for a provider. English for the providers whose
|
|
16
|
+
* product name is English, Chinese where the product is known by its Chinese
|
|
17
|
+
* name - a display decision, so it lives with the display layer instead of
|
|
18
|
+
* travelling in every payload.
|
|
19
|
+
*/
|
|
20
|
+
export declare function providerDisplayName(provider: AiConnectionsProvider): string;
|