@undefineds.co/xpod 0.3.75 → 0.4.0-rc.140
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/bin/xpod.js +43 -8
- package/config/bun.json +45 -48
- package/config/cloud.json +13 -90
- package/config/components-ignore.json +0 -1
- package/config/local.json +111 -63
- package/config/resolver.json +4 -2
- package/config/terminal.json +4 -1
- package/config/xpod.base.json +16 -8
- package/config/xpod.json +51 -54
- package/dist/acceptance/PublicCloudSemanticConformance.d.ts +4 -0
- package/dist/acceptance/PublicCloudSemanticConformance.js +214 -0
- package/dist/acceptance/QleverSearchConformance.d.ts +39 -0
- package/dist/acceptance/QleverSearchConformance.js +686 -0
- package/dist/acceptance/QleverSemanticConformance.d.ts +3 -0
- package/dist/acceptance/QleverSemanticConformance.js +178 -0
- package/dist/acceptance/RdfSemanticConformance.d.ts +114 -0
- package/dist/acceptance/RdfSemanticConformance.js +307 -0
- package/dist/acceptance/run-installed-qlever-conformance.d.ts +12 -0
- package/dist/acceptance/run-installed-qlever-conformance.js +87 -0
- package/dist/acceptance/run-installed-rdf-conformance.d.ts +12 -0
- package/dist/acceptance/run-installed-rdf-conformance.js +88 -0
- package/dist/ai/service/EmbeddingProviderError.d.ts +7 -0
- package/dist/ai/service/EmbeddingProviderError.js +42 -0
- package/dist/api/ai-gateway/connect/index.js +5 -2
- package/dist/api/auth/AuthContext.d.ts +5 -0
- package/dist/api/auth/AuthContext.js +10 -0
- package/dist/api/container/common.js +20 -1
- package/dist/api/container/rdf.d.ts +1 -0
- package/dist/api/container/rdf.js +43 -4
- package/dist/api/container/types.d.ts +4 -0
- package/dist/api/runs/InngestRunExecutionBackend.d.ts +2 -2
- package/dist/api/runs/PiAgentRuntimeDriver.d.ts +2 -0
- package/dist/api/runs/PiAgentRuntimeDriver.js +1 -0
- package/dist/api/runs/RdfRunContextRetriever.d.ts +8 -0
- package/dist/api/runs/RdfRunContextRetriever.js +23 -1
- package/dist/api/runtime.js +20 -6
- package/dist/api/service/RdfSearchIndexingService.d.ts +37 -3
- package/dist/api/service/RdfSearchIndexingService.js +130 -18
- package/dist/api/service/RdfSearchIndexingSolidFsSyncer.d.ts +8 -0
- package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js +102 -15
- package/dist/api/service/RdfSearchReconciliationWorker.d.ts +76 -0
- package/dist/api/service/RdfSearchReconciliationWorker.js +294 -0
- package/dist/api/tasks/InngestTaskScheduler.d.ts +4 -4
- package/dist/components/components.jsonld +9 -12
- package/dist/components/context.jsonld +227 -348
- package/dist/document/MarkdownRetrievalPointProjector.d.ts +33 -0
- package/dist/document/MarkdownRetrievalPointProjector.js +196 -0
- package/dist/document/MarkdownRetrievalPointProjector.jsonld +135 -0
- package/dist/document/ReaderMaterialization.d.ts +34 -0
- package/dist/document/ReaderMaterialization.js +3 -0
- package/dist/document/ReaderMaterialization.jsonld +151 -0
- package/dist/document/ReaderMaterializationRepository.d.ts +27 -0
- package/dist/document/ReaderMaterializationRepository.js +400 -0
- package/dist/document/ReaderMaterializationRepository.jsonld +84 -0
- package/dist/document/index.d.ts +3 -1
- package/dist/document/index.js +3 -1
- package/dist/http/SubgraphSparqlHttpHandler.js +34 -54
- package/dist/http/search/SearchHttpHandler.js +14 -12
- package/dist/http/terminal/TerminalHttpHandler.d.ts +3 -0
- package/dist/http/terminal/TerminalHttpHandler.js +1 -0
- package/dist/http/terminal/TerminalHttpHandler.jsonld +11 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.js +19 -39
- package/dist/identity/drizzle/db.d.ts +1 -0
- package/dist/identity/drizzle/db.js +35 -0
- package/dist/index.d.ts +9 -17
- package/dist/index.js +14 -22
- package/dist/provision/ProvisionPodCreator.d.ts +1 -1
- package/dist/provision/ProvisionPodCreator.js +4 -3
- package/dist/search/RdfSearchIntentSink.d.ts +17 -0
- package/dist/search/RdfSearchIntentSink.js +46 -0
- package/dist/search/RdfSearchIntentSink.jsonld +47 -0
- package/dist/search/RdfSearchReconciliationRepository.d.ts +81 -0
- package/dist/search/RdfSearchReconciliationRepository.js +771 -0
- package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.d.ts +15 -0
- package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.js +48 -0
- package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.jsonld +99 -0
- package/dist/solidfs/RdfIndexSolidFsSyncer.js +22 -4
- package/dist/solidfs/SolidFsSyncJournal.d.ts +7 -1
- package/dist/solidfs/SolidFsSyncJournal.js +20 -5
- package/dist/solidfs/SolidFsSyncJournal.jsonld +43 -0
- package/dist/solidfs/index.d.ts +1 -0
- package/dist/solidfs/index.js +1 -0
- package/dist/storage/SparqlUpdateResourceStore.js +3 -3
- package/dist/storage/accessors/MixDataAccessor.d.ts +21 -29
- package/dist/storage/accessors/MixDataAccessor.js +182 -399
- package/dist/storage/accessors/MixDataAccessor.jsonld +109 -87
- package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +12 -8
- package/dist/storage/accessors/SolidRdfDataAccessor.js +189 -59
- package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +14 -29
- package/dist/storage/rdf/LocalQleverNativeSparqlClient.d.ts +55 -0
- package/dist/storage/rdf/LocalQleverNativeSparqlClient.js +519 -0
- package/dist/storage/rdf/LocalQleverNativeSparqlClient.jsonld +314 -0
- package/dist/storage/rdf/PostgresRdfEngine.d.ts +3 -1
- package/dist/storage/rdf/PostgresRdfEngine.js +111 -74
- package/dist/storage/rdf/PostgresRdfEngine.jsonld +12 -22
- package/dist/storage/rdf/PostgresRdfSchemaValidation.d.ts +8 -0
- package/dist/storage/rdf/PostgresRdfSchemaValidation.js +82 -0
- package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +6 -3
- package/dist/storage/rdf/PostgresRdfTextIndex.js +158 -80
- package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +16 -4
- package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +4 -5
- package/dist/storage/rdf/PostgresRdfVectorIndex.js +124 -120
- package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +14 -18
- package/dist/storage/rdf/QleverSparqlEngine.d.ts +35 -0
- package/dist/storage/rdf/QleverSparqlEngine.js +185 -0
- package/dist/storage/rdf/QleverSparqlEngine.jsonld +70 -0
- package/dist/storage/rdf/Rdf3xIndex.js +20 -16
- package/dist/storage/rdf/RdfAccessScope.d.ts +4 -0
- package/dist/storage/rdf/RdfAccessScope.js +74 -9
- package/dist/storage/rdf/RdfAccessScope.jsonld +16 -0
- package/dist/storage/rdf/RdfEngineRdfJsSource.d.ts +14 -0
- package/dist/storage/rdf/RdfEngineRdfJsSource.js +179 -0
- package/dist/storage/rdf/RdfQuadIndex.d.ts +13 -14
- package/dist/storage/rdf/RdfQuadIndex.js +286 -99
- package/dist/storage/rdf/RdfQuadIndex.jsonld +10 -22
- package/dist/storage/rdf/RdfQueryExecutor.js +10 -4
- package/dist/storage/rdf/RdfQuerySparqlEngine.d.ts +33 -0
- package/dist/storage/rdf/RdfQuerySparqlEngine.js +215 -0
- package/dist/storage/rdf/RdfQuerySparqlEngine.jsonld +78 -0
- package/dist/storage/rdf/RdfSparqlAdapter.d.ts +0 -4
- package/dist/storage/rdf/RdfSparqlAdapter.js +75 -173
- package/dist/storage/rdf/RdfSparqlBoundary.d.ts +37 -0
- package/dist/storage/rdf/RdfSparqlBoundary.js +247 -0
- package/dist/storage/rdf/RdfSparqlSerialization.d.ts +3 -0
- package/dist/storage/rdf/RdfSparqlSerialization.js +19 -0
- package/dist/storage/rdf/RdfSqliteConnection.d.ts +7 -0
- package/dist/storage/rdf/RdfSqliteConnection.js +23 -0
- package/dist/storage/rdf/RdfTermDictionary.d.ts +0 -8
- package/dist/storage/rdf/RdfTermDictionary.js +0 -136
- package/dist/storage/rdf/RdfTermDictionary.jsonld +0 -32
- package/dist/storage/rdf/RdfTermSemantics.d.ts +6 -0
- package/dist/storage/rdf/RdfTermSemantics.js +29 -0
- package/dist/storage/rdf/RdfTextIndex.d.ts +5 -6
- package/dist/storage/rdf/RdfTextIndex.js +187 -115
- package/dist/storage/rdf/RdfTextIndex.jsonld +10 -14
- package/dist/storage/rdf/RdfVectorIndex.d.ts +4 -4
- package/dist/storage/rdf/RdfVectorIndex.js +156 -233
- package/dist/storage/rdf/RdfVectorIndex.jsonld +10 -14
- package/dist/storage/rdf/SolidRdfEngine.d.ts +16 -21
- package/dist/storage/rdf/SolidRdfEngine.js +28 -308
- package/dist/storage/rdf/SolidRdfEngine.jsonld +26 -148
- package/dist/storage/rdf/XpodComunicaQueryEngine.d.ts +10 -0
- package/dist/storage/rdf/XpodComunicaQueryEngine.js +72 -0
- package/dist/storage/rdf/index.d.ts +7 -6
- package/dist/storage/rdf/index.js +17 -12
- package/dist/storage/rdf/models-benchmark.d.ts +5 -1
- package/dist/storage/rdf/models-benchmark.js +17 -19
- package/dist/storage/rdf/types.d.ts +68 -6
- package/dist/storage/rdf/types.jsonld +69 -0
- package/dist/storage/sparql/SubgraphQueryEngine.d.ts +13 -7
- package/dist/storage/sparql/SubgraphQueryEngine.js +6 -6
- package/dist/storage/vector/index.d.ts +0 -1
- package/dist/storage/vector/index.js +0 -1
- package/dist/terminal/AclPermissionService.d.ts +4 -5
- package/dist/terminal/AclPermissionService.js +55 -75
- package/dist/terminal/TerminalSessionManager.d.ts +3 -2
- package/dist/terminal/TerminalSessionManager.js +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +29 -26
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +9 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js +6 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +6 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +13 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +31 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js +5 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js +45 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +29 -26
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +9 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js +6 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +6 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +14 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +30 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js +5 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js +45 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/package.json +5 -4
- package/package.json +22 -8
- package/static/app/assets/{index-36TJKN-3.js → index-BikOyGPu.js} +34 -34
- package/static/app/assets/inrupt-smoke.js +2 -2
- package/static/app/assets/main.css +1 -1
- package/static/app/assets/main.js +11 -11
- package/static/auth-callback/assets/{AiConfigContext-BvBdu_A3.js → AiConfigContext-iQ74JmRZ.js} +1 -1
- package/static/auth-callback/assets/{AiConfigPage-BpDw4jco.js → AiConfigPage-BBDKE1gJ.js} +1 -1
- package/static/auth-callback/assets/{DocumentProcessingPanel-BmZ_jzRr.js → DocumentProcessingPanel-D9NntIEK.js} +1 -1
- package/static/auth-callback/assets/{IndexLifecyclePanel-BfQBjN4z.js → IndexLifecyclePanel-BG07yBdA.js} +1 -1
- package/static/auth-callback/assets/{IndexSubjectPanel-BlsnatPt.js → IndexSubjectPanel-B-bUnU3G.js} +1 -1
- package/static/auth-callback/assets/{ModelAssignmentsPanel-KA6Mdndz.js → ModelAssignmentsPanel-C7I-Nqy-.js} +1 -1
- package/static/auth-callback/assets/{ModelsPage-C7jymyIY.js → ModelsPage-C2hxyrmI.js} +1 -1
- package/static/auth-callback/assets/{NetworkPage-k2ShktNm.js → NetworkPage-IGIc2q1Y.js} +1 -1
- package/static/auth-callback/assets/{PaneListHeader-mLMe_dvU.js → PaneListHeader-CebuPl_g.js} +1 -1
- package/static/auth-callback/assets/{SearchIndexingPanel-CqV9um_t.js → SearchIndexingPanel-6HnZSg00.js} +1 -1
- package/static/auth-callback/assets/{StatusSubjectPanel-BgMBTbr2.js → StatusSubjectPanel-votxBkr5.js} +1 -1
- package/static/auth-callback/assets/{StatusWorkspace-zbSyhdG2.js → StatusWorkspace-Cksl61zX.js} +1 -1
- package/static/auth-callback/assets/{SystemSettingsPage-CtW79nW6.js → SystemSettingsPage-CKZFUaZT.js} +1 -1
- package/static/auth-callback/assets/{SystemSettingsSubjectPanel-ZOPKYUtZ.js → SystemSettingsSubjectPanel-pzfUcCf4.js} +1 -1
- package/static/auth-callback/assets/{activity-BQ-CQE3O.js → activity-DQL6kZHZ.js} +1 -1
- package/static/auth-callback/assets/auth-callback-B_s8Ye5Z.css +1 -0
- package/static/auth-callback/assets/{auth-callback-Htr_CB_g.js → auth-callback-BxQMd_Mc.js} +39 -39
- package/static/auth-callback/assets/{badge-D5SGTJeO.js → badge-DvW4LUHH.js} +1 -1
- package/static/auth-callback/assets/{download-DK183Ldo.js → download-Cx_uaCR1.js} +1 -1
- package/static/auth-callback/assets/{external-link-LDHy_4bn.js → external-link-D6L6ExH1.js} +1 -1
- package/static/auth-callback/assets/{index-BWrvgHqK.js → index-BAS_hxGu.js} +1 -1
- package/static/auth-callback/assets/{index-2WmlePQ9.js → index-BmBjpCoD.js} +1 -1
- package/static/auth-callback/assets/{index-browser-DUd4E4-x.js → index-browser-pdn4D3M4.js} +1 -1
- package/static/auth-callback/assets/{key-round-ibX79Kr-.js → key-round-BTBzOggq.js} +1 -1
- package/static/auth-callback/assets/{rotate-ccw-B2_VMaiX.js → rotate-ccw-eV7Cx8sB.js} +1 -1
- package/static/auth-callback/assets/{skeleton-F4nrpycc.js → skeleton-Bg4GYgBM.js} +1 -1
- package/static/auth-callback/assets/{waypoints-DImIq93f.js → waypoints-CJbydf0B.js} +1 -1
- package/static/auth-callback/assets/{workspace-layout-IVCSYU21.js → workspace-layout-C6Hh8Xf-.js} +1 -1
- package/static/auth-callback/auth-callback.html +2 -2
- package/static/dashboard/assets/{AiConfigContext-cjjfYTo9.js → AiConfigContext-BkJj28vK.js} +1 -1
- package/static/dashboard/assets/{AiConfigPage-CO0DSD_j.js → AiConfigPage-Cs9B4uyp.js} +1 -1
- package/static/dashboard/assets/{DocumentProcessingPanel-DMGnH8Oj.js → DocumentProcessingPanel-BBWmM7mS.js} +1 -1
- package/static/dashboard/assets/{IndexLifecyclePanel-DSkIOCL5.js → IndexLifecyclePanel-D5xGTT_i.js} +1 -1
- package/static/dashboard/assets/{IndexSubjectPanel-qWN_DbAp.js → IndexSubjectPanel-d-mjDthn.js} +1 -1
- package/static/dashboard/assets/{ModelAssignmentsPanel-DCf83uM3.js → ModelAssignmentsPanel-C-OLNbqf.js} +1 -1
- package/static/dashboard/assets/{ModelsPage-CMnvSrl5.js → ModelsPage-CBrLjuUn.js} +1 -1
- package/static/dashboard/assets/{NetworkPage-C8Gkwclb.js → NetworkPage-BlYk8L1z.js} +1 -1
- package/static/dashboard/assets/{PaneListHeader-BtU_8cDK.js → PaneListHeader-A5oZJQC0.js} +1 -1
- package/static/dashboard/assets/{SearchIndexingPanel-DEn12pNU.js → SearchIndexingPanel-Bs1j8ZP2.js} +1 -1
- package/static/dashboard/assets/{StatusSubjectPanel-B1_ILg2d.js → StatusSubjectPanel-Qao3orvi.js} +1 -1
- package/static/dashboard/assets/{StatusWorkspace-BG6nMNCo.js → StatusWorkspace-rDM0yDtk.js} +1 -1
- package/static/dashboard/assets/{SystemSettingsPage-BnWYIXaM.js → SystemSettingsPage-FPRPkKaR.js} +1 -1
- package/static/dashboard/assets/{SystemSettingsSubjectPanel-C_mYVPWb.js → SystemSettingsSubjectPanel-CjlJAxnX.js} +1 -1
- package/static/dashboard/assets/{activity-DYJ7PdRl.js → activity-CJ5K6hYC.js} +1 -1
- package/static/dashboard/assets/{badge-BIaZco1P.js → badge-L-NMOi1P.js} +1 -1
- package/static/dashboard/assets/dashboard-B_s8Ye5Z.css +1 -0
- package/static/dashboard/assets/{dashboard-Dl40_MEa.js → dashboard-DyjAyYxx.js} +34 -34
- package/static/dashboard/assets/{download-By16k9VK.js → download-Bi4u5K5B.js} +1 -1
- package/static/dashboard/assets/{external-link-B92xOG_d.js → external-link-jmhLDfvT.js} +1 -1
- package/static/dashboard/assets/{index-BajZpJ48.js → index-BoaGJBxf.js} +1 -1
- package/static/dashboard/assets/{index-wsVPom_x.js → index-C22TAEi4.js} +1 -1
- package/static/dashboard/assets/{key-round-Clo5FOwA.js → key-round-Dk1VmMrn.js} +1 -1
- package/static/dashboard/assets/{rotate-ccw-smWSfi1L.js → rotate-ccw-DIfLsSwi.js} +1 -1
- package/static/dashboard/assets/{skeleton-BrTaGeJw.js → skeleton-BGPJMHb-.js} +1 -1
- package/static/dashboard/assets/{waypoints-DGPQInE7.js → waypoints-CY53egpu.js} +1 -1
- package/static/dashboard/assets/{workspace-layout-CPU4XRmb.js → workspace-layout-CoHkcx70.js} +1 -1
- package/static/dashboard/dashboard.html +2 -2
- package/static/settings/assets/{AiConfigContext-CT29_OyW.js → AiConfigContext-BcEPlEJe.js} +1 -1
- package/static/settings/assets/{AiConfigPage-WIE95S28.js → AiConfigPage-D-t3ZUhg.js} +1 -1
- package/static/settings/assets/{DocumentProcessingPanel-KG8Sq999.js → DocumentProcessingPanel-m2SasiMO.js} +1 -1
- package/static/settings/assets/{IndexLifecyclePanel-iKvtHDXY.js → IndexLifecyclePanel-BNmAvx8V.js} +1 -1
- package/static/settings/assets/{IndexSubjectPanel-BQdSCkk4.js → IndexSubjectPanel-C5-L2AcW.js} +1 -1
- package/static/settings/assets/{ModelAssignmentsPanel-P8QcVB0F.js → ModelAssignmentsPanel-Cfpkf02Y.js} +1 -1
- package/static/settings/assets/{ModelsPage-UZkZGqor.js → ModelsPage-DZrACwVN.js} +1 -1
- package/static/settings/assets/{NetworkPage-Dcpcvg15.js → NetworkPage-BlrGGfqL.js} +1 -1
- package/static/settings/assets/{PaneListHeader--gHtZws5.js → PaneListHeader-C3TCs1RI.js} +1 -1
- package/static/settings/assets/{SearchIndexingPanel-DdgJSJYQ.js → SearchIndexingPanel-Cyp3CUzX.js} +1 -1
- package/static/settings/assets/{StatusSubjectPanel-UOxp_XVL.js → StatusSubjectPanel-gRkb8WEX.js} +1 -1
- package/static/settings/assets/{StatusWorkspace-CPNXuD12.js → StatusWorkspace-Dptx4Ec2.js} +1 -1
- package/static/settings/assets/{SystemSettingsPage-B6ySeVPw.js → SystemSettingsPage-BWgGUQbs.js} +1 -1
- package/static/settings/assets/{SystemSettingsSubjectPanel-I7zWmpiI.js → SystemSettingsSubjectPanel-VflUvpgC.js} +1 -1
- package/static/settings/assets/{activity-CFhmzahP.js → activity-D7iNhTkQ.js} +1 -1
- package/static/settings/assets/{badge-BBdUc5B-.js → badge-DO0r_RT4.js} +1 -1
- package/static/settings/assets/{download-WJE9-yxQ.js → download-CsJlNSbd.js} +1 -1
- package/static/settings/assets/{external-link-RKoYyCp_.js → external-link-BCR7SHme.js} +1 -1
- package/static/settings/assets/{index-Bq2o0Bif.js → index-Cgq16ekN.js} +1 -1
- package/static/settings/assets/{index-DvxneI5O.js → index-SrhQvcrU.js} +1 -1
- package/static/settings/assets/{index-browser-Qmo6EsFT.js → index-browser-THpcMCnz.js} +1 -1
- package/static/settings/assets/{key-round-r-D9sQUK.js → key-round-Dd3jk1BT.js} +1 -1
- package/static/settings/assets/{rotate-ccw-D3IIhbPH.js → rotate-ccw-tiL14i1d.js} +1 -1
- package/static/settings/assets/settings-B_s8Ye5Z.css +1 -0
- package/static/settings/assets/{settings-D8oDBXWg.js → settings-CVLDPejo.js} +34 -34
- package/static/settings/assets/{skeleton-DrL4RQuw.js → skeleton-DBxLuNgU.js} +1 -1
- package/static/settings/assets/{waypoints-C5sRhpJw.js → waypoints-DS3e3hv7.js} +1 -1
- package/static/settings/assets/{workspace-layout-B4ALmWsM.js → workspace-layout-mucrxyTK.js} +1 -1
- package/static/settings/settings.html +2 -2
- package/config/search.json +0 -66
- package/dist/document/HeadingChunker.jsonld +0 -41
- package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +0 -124
- package/dist/security/secret-cell/SecretCellVault.jsonld +0 -207
- package/dist/storage/PostgresDerivedIndexJournal.d.ts +0 -47
- package/dist/storage/PostgresDerivedIndexJournal.js +0 -408
- package/dist/storage/PostgresDerivedIndexJournal.jsonld +0 -303
- package/dist/storage/RdfDerivedIndexingListener.d.ts +0 -32
- package/dist/storage/RdfDerivedIndexingListener.js +0 -135
- package/dist/storage/RdfDerivedIndexingListener.jsonld +0 -228
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +0 -148
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +0 -436
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +0 -172
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +0 -102
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +0 -474
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +0 -192
- package/dist/storage/rdf/RdfSparqlAdapter.jsonld +0 -486
- package/dist/storage/rdf/ShadowRdfQuintStore.d.ts +0 -59
- package/dist/storage/rdf/ShadowRdfQuintStore.js +0 -216
- package/dist/storage/rdf/ShadowRdfQuintStore.jsonld +0 -312
- package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +0 -107
- package/dist/storage/rdf/SolidRdfSparqlEngine.js +0 -1117
- package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +0 -312
- package/dist/storage/sparql/AlgebraUtils.d.ts +0 -48
- package/dist/storage/sparql/AlgebraUtils.js +0 -118
- package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +0 -37
- package/dist/storage/sparql/CompatibilitySparqlEngine.js +0 -96
- package/dist/storage/sparql/CompatibilitySparqlEngine.jsonld +0 -123
- package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +0 -36
- package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +0 -124
- package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +0 -59
- package/dist/storage/sparql/ComunicaOptimizedEngine.js +0 -254
- package/dist/storage/sparql/ComunicaQuintEngine.d.ts +0 -143
- package/dist/storage/sparql/ComunicaQuintEngine.js +0 -781
- package/dist/storage/sparql/ExpressionEvaluator.d.ts +0 -54
- package/dist/storage/sparql/ExpressionEvaluator.js +0 -340
- package/dist/storage/sparql/FilterPushdownExtractor.d.ts +0 -74
- package/dist/storage/sparql/FilterPushdownExtractor.js +0 -421
- package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +0 -65
- package/dist/storage/sparql/OptimizedQuadstoreEngine.js +0 -327
- package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +0 -46
- package/dist/storage/sparql/OptimizedQuadstoreSource.js +0 -118
- package/dist/storage/sparql/PatternBuilder.d.ts +0 -41
- package/dist/storage/sparql/PatternBuilder.js +0 -118
- package/dist/storage/sparql/QueryOptimizer.d.ts +0 -125
- package/dist/storage/sparql/QueryOptimizer.js +0 -375
- package/dist/storage/sparql/QuintEngine.d.ts +0 -92
- package/dist/storage/sparql/QuintEngine.js +0 -150
- package/dist/storage/sparql/QuintQuerySource.d.ts +0 -241
- package/dist/storage/sparql/QuintQuerySource.js +0 -1069
- package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +0 -40
- package/dist/storage/sparql/SimpleSparqlExecutor.js +0 -131
- package/dist/storage/vector/VectorIndexingListener.d.ts +0 -114
- package/dist/storage/vector/VectorIndexingListener.js +0 -346
- package/static/auth-callback/assets/auth-callback-rWdEQY5f.css +0 -1
- package/static/dashboard/assets/dashboard-rWdEQY5f.css +0 -1
- package/static/settings/assets/settings-rWdEQY5f.css +0 -1
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PostgresDerivedIndexJournal = exports.LEGACY_DERIVED_INDEX_CONSUMER_ID = void 0;
|
|
4
|
-
const PostgresRdfSqlExecutor_1 = require("./rdf/PostgresRdfSqlExecutor");
|
|
5
|
-
const PostgresPoolManager_1 = require("./database/PostgresPoolManager");
|
|
6
|
-
exports.LEGACY_DERIVED_INDEX_CONSUMER_ID = 'legacy-resource-change-listener-v1';
|
|
7
|
-
/** PostgreSQL outbox for CSS subscribe events consumed by FTS/VEC derivations. */
|
|
8
|
-
class PostgresDerivedIndexJournal {
|
|
9
|
-
constructor(connectionString, executor, resolvePodScope, retryDelayMs = 1_000, leaseMs = 60_000, consumers = [], pollIntervalMs = 1_000) {
|
|
10
|
-
this.replaying = new Map();
|
|
11
|
-
const durableConsumers = [];
|
|
12
|
-
const consumerIds = new Set();
|
|
13
|
-
for (const consumer of consumers) {
|
|
14
|
-
const consumerId = consumer.consumerId;
|
|
15
|
-
if (typeof consumerId !== 'string' || !consumerId.trim()) {
|
|
16
|
-
throw new Error('Derived-index consumer requires a non-empty consumerId');
|
|
17
|
-
}
|
|
18
|
-
if (consumerIds.has(consumerId)) {
|
|
19
|
-
throw new Error(`Duplicate derived-index consumerId: ${consumerId}`);
|
|
20
|
-
}
|
|
21
|
-
consumerIds.add(consumerId);
|
|
22
|
-
durableConsumers.push(consumer);
|
|
23
|
-
}
|
|
24
|
-
const resolvedOptions = {
|
|
25
|
-
connectionString,
|
|
26
|
-
executor,
|
|
27
|
-
resolvePodScope,
|
|
28
|
-
retryDelayMs,
|
|
29
|
-
leaseMs,
|
|
30
|
-
consumers: durableConsumers,
|
|
31
|
-
pollIntervalMs,
|
|
32
|
-
};
|
|
33
|
-
this.options = resolvedOptions;
|
|
34
|
-
if (!resolvedOptions.executor && !resolvedOptions.connectionString) {
|
|
35
|
-
throw new Error('PostgresDerivedIndexJournal requires executor or connectionString');
|
|
36
|
-
}
|
|
37
|
-
this.consumers = new Map(durableConsumers.map((consumer) => [consumer.consumerId, consumer]));
|
|
38
|
-
this.activeConsumerIds = new Set(durableConsumers.length > 0
|
|
39
|
-
? durableConsumers.map((consumer) => consumer.consumerId)
|
|
40
|
-
: [exports.LEGACY_DERIVED_INDEX_CONSUMER_ID]);
|
|
41
|
-
this.executor = resolvedOptions.executor
|
|
42
|
-
?? new PostgresRdfSqlExecutor_1.PgPoolRdfSqlExecutor((0, PostgresPoolManager_1.getSharedPool)({ connectionString: resolvedOptions.connectionString }));
|
|
43
|
-
this.ownsSharedPool = !resolvedOptions.executor;
|
|
44
|
-
this.retryDelayMs = resolvedOptions.retryDelayMs ?? 1_000;
|
|
45
|
-
this.leaseMs = resolvedOptions.leaseMs ?? 60_000;
|
|
46
|
-
if (resolvedOptions.consumers?.length) {
|
|
47
|
-
this.pollTimer = setInterval(() => this.scheduleReplay(), pollIntervalMs);
|
|
48
|
-
this.pollTimer.unref?.();
|
|
49
|
-
setImmediate(() => this.scheduleReplay());
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
async open() {
|
|
53
|
-
this.opening ??= this.initialize();
|
|
54
|
-
await this.opening;
|
|
55
|
-
}
|
|
56
|
-
async initialize() {
|
|
57
|
-
await this.executor.exec(`
|
|
58
|
-
CREATE TABLE IF NOT EXISTS derived_index_change_journal (
|
|
59
|
-
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
60
|
-
pod_scope_id TEXT NOT NULL,
|
|
61
|
-
resource_path TEXT NOT NULL,
|
|
62
|
-
action TEXT NOT NULL CHECK (action IN ('create', 'update', 'delete')),
|
|
63
|
-
is_container BOOLEAN NOT NULL,
|
|
64
|
-
occurred_at BIGINT NOT NULL,
|
|
65
|
-
stage TEXT NOT NULL DEFAULT 'pending' CHECK (stage IN ('pending', 'processing', 'done')),
|
|
66
|
-
attempts INTEGER NOT NULL DEFAULT 0,
|
|
67
|
-
available_at BIGINT NOT NULL DEFAULT 0,
|
|
68
|
-
lease_until BIGINT,
|
|
69
|
-
last_error TEXT
|
|
70
|
-
);
|
|
71
|
-
CREATE INDEX IF NOT EXISTS derived_index_change_journal_pending
|
|
72
|
-
ON derived_index_change_journal (stage, available_at, pod_scope_id, id);
|
|
73
|
-
CREATE TABLE IF NOT EXISTS derived_index_journal_metadata (
|
|
74
|
-
key TEXT PRIMARY KEY,
|
|
75
|
-
value TEXT NOT NULL
|
|
76
|
-
);
|
|
77
|
-
CREATE TABLE IF NOT EXISTS derived_index_consumers (
|
|
78
|
-
consumer_id TEXT PRIMARY KEY,
|
|
79
|
-
created_at BIGINT NOT NULL
|
|
80
|
-
);
|
|
81
|
-
CREATE TABLE IF NOT EXISTS derived_index_event_deliveries (
|
|
82
|
-
consumer_id TEXT NOT NULL REFERENCES derived_index_consumers(consumer_id),
|
|
83
|
-
event_id BIGINT NOT NULL REFERENCES derived_index_change_journal(id) ON DELETE CASCADE,
|
|
84
|
-
stage TEXT NOT NULL DEFAULT 'pending' CHECK (stage IN ('pending', 'processing', 'done')),
|
|
85
|
-
attempts INTEGER NOT NULL DEFAULT 0,
|
|
86
|
-
available_at BIGINT NOT NULL DEFAULT 0,
|
|
87
|
-
lease_until BIGINT,
|
|
88
|
-
last_error TEXT,
|
|
89
|
-
PRIMARY KEY (consumer_id, event_id)
|
|
90
|
-
);
|
|
91
|
-
CREATE INDEX IF NOT EXISTS derived_index_event_deliveries_pending
|
|
92
|
-
ON derived_index_event_deliveries (consumer_id, stage, available_at, event_id);
|
|
93
|
-
CREATE TABLE IF NOT EXISTS derived_index_resource_checkpoints (
|
|
94
|
-
consumer_id TEXT NOT NULL REFERENCES derived_index_consumers(consumer_id),
|
|
95
|
-
pod_scope_id TEXT NOT NULL,
|
|
96
|
-
resource_path TEXT NOT NULL,
|
|
97
|
-
last_event_id BIGINT NOT NULL REFERENCES derived_index_change_journal(id),
|
|
98
|
-
last_action TEXT NOT NULL CHECK (last_action IN ('create', 'update', 'delete')),
|
|
99
|
-
updated_at BIGINT NOT NULL,
|
|
100
|
-
deleted_at BIGINT,
|
|
101
|
-
PRIMARY KEY (consumer_id, pod_scope_id, resource_path)
|
|
102
|
-
);
|
|
103
|
-
`);
|
|
104
|
-
await this.executor.transaction(async (tx) => {
|
|
105
|
-
const sourceTable = await tx.query(`
|
|
106
|
-
SELECT to_regclass('rdf_sources')::text AS relation
|
|
107
|
-
`);
|
|
108
|
-
if (!sourceTable[0]?.relation)
|
|
109
|
-
return;
|
|
110
|
-
const inserted = await tx.query(`
|
|
111
|
-
INSERT INTO derived_index_journal_metadata (key, value)
|
|
112
|
-
VALUES ('rdf_sources_bootstrap_v1', 'complete')
|
|
113
|
-
ON CONFLICT (key) DO NOTHING
|
|
114
|
-
RETURNING key
|
|
115
|
-
`);
|
|
116
|
-
if (!inserted.length)
|
|
117
|
-
return;
|
|
118
|
-
await tx.exec(`
|
|
119
|
-
INSERT INTO derived_index_change_journal
|
|
120
|
-
(pod_scope_id, resource_path, action, is_container, occurred_at)
|
|
121
|
-
SELECT workspace, source, 'update', FALSE,
|
|
122
|
-
(EXTRACT(EPOCH FROM clock_timestamp()) * 1000)::bigint
|
|
123
|
-
FROM rdf_sources
|
|
124
|
-
ORDER BY id
|
|
125
|
-
`);
|
|
126
|
-
});
|
|
127
|
-
const configuredConsumers = this.options.consumers ?? [];
|
|
128
|
-
if (configuredConsumers.length === 0) {
|
|
129
|
-
await this.registerConsumer(exports.LEGACY_DERIVED_INDEX_CONSUMER_ID, true);
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
for (const consumer of configuredConsumers) {
|
|
133
|
-
await this.registerConsumer(consumer.consumerId, false);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
async registerConsumer(consumerId, legacy) {
|
|
138
|
-
await this.executor.transaction(async (tx) => {
|
|
139
|
-
const now = Date.now();
|
|
140
|
-
await tx.exec(`
|
|
141
|
-
INSERT INTO derived_index_consumers (consumer_id, created_at)
|
|
142
|
-
VALUES ($1, $2)
|
|
143
|
-
ON CONFLICT (consumer_id) DO NOTHING
|
|
144
|
-
`, [consumerId, now]);
|
|
145
|
-
await tx.exec(`
|
|
146
|
-
INSERT INTO derived_index_event_deliveries
|
|
147
|
-
(consumer_id, event_id, stage, attempts, available_at, lease_until, last_error)
|
|
148
|
-
SELECT $1, id,
|
|
149
|
-
CASE WHEN $2::boolean AND stage = 'done' THEN 'done' ELSE 'pending' END,
|
|
150
|
-
CASE WHEN $2::boolean THEN attempts ELSE 0 END,
|
|
151
|
-
CASE WHEN $2::boolean THEN available_at ELSE 0 END,
|
|
152
|
-
NULL,
|
|
153
|
-
CASE WHEN $2::boolean THEN last_error ELSE NULL END
|
|
154
|
-
FROM derived_index_change_journal
|
|
155
|
-
ON CONFLICT (consumer_id, event_id) DO NOTHING
|
|
156
|
-
`, [consumerId, legacy]);
|
|
157
|
-
if (legacy) {
|
|
158
|
-
await tx.exec(`
|
|
159
|
-
INSERT INTO derived_index_resource_checkpoints
|
|
160
|
-
(consumer_id, pod_scope_id, resource_path, last_event_id,
|
|
161
|
-
last_action, updated_at, deleted_at)
|
|
162
|
-
SELECT $1, latest.pod_scope_id, latest.resource_path, latest.id,
|
|
163
|
-
latest.action, latest.occurred_at,
|
|
164
|
-
CASE WHEN latest.action = 'delete' THEN latest.occurred_at ELSE NULL END
|
|
165
|
-
FROM (
|
|
166
|
-
SELECT DISTINCT ON (pod_scope_id, resource_path)
|
|
167
|
-
id, pod_scope_id, resource_path, action, occurred_at
|
|
168
|
-
FROM derived_index_change_journal
|
|
169
|
-
WHERE stage = 'done'
|
|
170
|
-
ORDER BY pod_scope_id, resource_path, id DESC
|
|
171
|
-
) latest
|
|
172
|
-
ON CONFLICT (consumer_id, pod_scope_id, resource_path) DO UPDATE
|
|
173
|
-
SET last_event_id = EXCLUDED.last_event_id,
|
|
174
|
-
last_action = EXCLUDED.last_action,
|
|
175
|
-
updated_at = EXCLUDED.updated_at,
|
|
176
|
-
deleted_at = EXCLUDED.deleted_at
|
|
177
|
-
WHERE derived_index_resource_checkpoints.last_event_id < EXCLUDED.last_event_id
|
|
178
|
-
`, [consumerId]);
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
async recordResourceChange(event) {
|
|
183
|
-
await this.open();
|
|
184
|
-
const podScopeId = await (this.options.resolvePodScope?.(event) ?? defaultPodScope(event.path));
|
|
185
|
-
if (!podScopeId) {
|
|
186
|
-
throw new Error(`Cannot journal derived-index change without Pod scope: ${event.path}`);
|
|
187
|
-
}
|
|
188
|
-
await this.append(podScopeId, event);
|
|
189
|
-
this.scheduleReplay();
|
|
190
|
-
}
|
|
191
|
-
async append(podScopeId, event) {
|
|
192
|
-
await this.executor.transaction(async (tx) => {
|
|
193
|
-
const inserted = await tx.query(`
|
|
194
|
-
INSERT INTO derived_index_change_journal
|
|
195
|
-
(pod_scope_id, resource_path, action, is_container, occurred_at)
|
|
196
|
-
VALUES ($1, $2, $3, $4, $5)
|
|
197
|
-
RETURNING id
|
|
198
|
-
`, [podScopeId, event.path, event.action, event.isContainer, event.timestamp]);
|
|
199
|
-
const eventId = inserted[0]?.id;
|
|
200
|
-
if (eventId === undefined) {
|
|
201
|
-
throw new Error(`Failed to append derived-index event: ${event.path}`);
|
|
202
|
-
}
|
|
203
|
-
for (const consumerId of this.activeConsumerIds) {
|
|
204
|
-
await tx.exec(`
|
|
205
|
-
INSERT INTO derived_index_event_deliveries (consumer_id, event_id)
|
|
206
|
-
VALUES ($1, $2)
|
|
207
|
-
ON CONFLICT (consumer_id, event_id) DO NOTHING
|
|
208
|
-
`, [consumerId, eventId]);
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
async replayPending(listener, limit = 100) {
|
|
213
|
-
await this.open();
|
|
214
|
-
this.activeConsumerIds.add(exports.LEGACY_DERIVED_INDEX_CONSUMER_ID);
|
|
215
|
-
await this.registerConsumer(exports.LEGACY_DERIVED_INDEX_CONSUMER_ID, true);
|
|
216
|
-
return this.replayDelivery(exports.LEGACY_DERIVED_INDEX_CONSUMER_ID, listener, limit);
|
|
217
|
-
}
|
|
218
|
-
async replayConsumer(consumerId, limit = 100) {
|
|
219
|
-
await this.open();
|
|
220
|
-
const consumer = this.consumers.get(consumerId);
|
|
221
|
-
if (!consumer) {
|
|
222
|
-
throw new Error(`Unknown derived-index consumerId: ${consumerId}`);
|
|
223
|
-
}
|
|
224
|
-
return this.replayDelivery(consumerId, consumer, limit);
|
|
225
|
-
}
|
|
226
|
-
async replayDelivery(consumerId, listener, limit) {
|
|
227
|
-
let delivered = 0;
|
|
228
|
-
let failed = 0;
|
|
229
|
-
for (let index = 0; index < limit; index += 1) {
|
|
230
|
-
const row = await this.claimNext(consumerId);
|
|
231
|
-
if (!row)
|
|
232
|
-
break;
|
|
233
|
-
const event = {
|
|
234
|
-
path: row.resource_path,
|
|
235
|
-
action: row.action,
|
|
236
|
-
isContainer: row.is_container,
|
|
237
|
-
timestamp: Number(row.occurred_at),
|
|
238
|
-
};
|
|
239
|
-
try {
|
|
240
|
-
await listener.onResourceChanged(event);
|
|
241
|
-
await this.completeDelivery(consumerId, row);
|
|
242
|
-
delivered += 1;
|
|
243
|
-
}
|
|
244
|
-
catch (error) {
|
|
245
|
-
await this.executor.exec(`
|
|
246
|
-
UPDATE derived_index_event_deliveries
|
|
247
|
-
SET stage = 'pending', attempts = attempts + 1,
|
|
248
|
-
available_at = $3, lease_until = NULL, last_error = $4
|
|
249
|
-
WHERE consumer_id = $1 AND event_id = $2
|
|
250
|
-
`, [consumerId, row.id, Date.now() + this.retryDelayMs, errorMessage(error)]);
|
|
251
|
-
failed += 1;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
return { delivered, failed };
|
|
255
|
-
}
|
|
256
|
-
async reconcilePod(podScopeId, resourcePaths) {
|
|
257
|
-
await this.open();
|
|
258
|
-
const authorityPaths = [...new Set(resourcePaths)];
|
|
259
|
-
for (const resourcePath of authorityPaths) {
|
|
260
|
-
await this.append(podScopeId, {
|
|
261
|
-
path: resourcePath,
|
|
262
|
-
action: 'update',
|
|
263
|
-
isContainer: resourcePath.endsWith('/'),
|
|
264
|
-
timestamp: Date.now(),
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
const missing = await this.executor.query(`
|
|
268
|
-
SELECT resource_path, MAX(last_event_id) AS last_event_id
|
|
269
|
-
FROM derived_index_resource_checkpoints
|
|
270
|
-
WHERE pod_scope_id = $1
|
|
271
|
-
AND deleted_at IS NULL
|
|
272
|
-
AND NOT (resource_path = ANY($2::text[]))
|
|
273
|
-
GROUP BY resource_path
|
|
274
|
-
ORDER BY resource_path
|
|
275
|
-
`, [podScopeId, authorityPaths]);
|
|
276
|
-
for (const { resource_path: resourcePath, last_event_id: lastEventId } of missing) {
|
|
277
|
-
const covered = await this.executor.query(`
|
|
278
|
-
SELECT EXISTS (
|
|
279
|
-
SELECT 1
|
|
280
|
-
FROM derived_index_change_journal event
|
|
281
|
-
WHERE event.pod_scope_id = $1
|
|
282
|
-
AND event.resource_path = $2
|
|
283
|
-
AND event.action = 'delete'
|
|
284
|
-
AND event.id > $3
|
|
285
|
-
) AS covered
|
|
286
|
-
`, [podScopeId, resourcePath, lastEventId]);
|
|
287
|
-
if (covered[0]?.covered)
|
|
288
|
-
continue;
|
|
289
|
-
await this.append(podScopeId, {
|
|
290
|
-
path: resourcePath,
|
|
291
|
-
action: 'delete',
|
|
292
|
-
isContainer: resourcePath.endsWith('/'),
|
|
293
|
-
timestamp: Date.now(),
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
async completeDelivery(consumerId, row) {
|
|
298
|
-
const completedAt = Date.now();
|
|
299
|
-
await this.executor.transaction(async (tx) => {
|
|
300
|
-
await tx.exec(`
|
|
301
|
-
UPDATE derived_index_event_deliveries
|
|
302
|
-
SET stage = 'done', lease_until = NULL, last_error = NULL
|
|
303
|
-
WHERE consumer_id = $1 AND event_id = $2
|
|
304
|
-
`, [consumerId, row.id]);
|
|
305
|
-
await tx.exec(`
|
|
306
|
-
INSERT INTO derived_index_resource_checkpoints
|
|
307
|
-
(consumer_id, pod_scope_id, resource_path, last_event_id,
|
|
308
|
-
last_action, updated_at, deleted_at)
|
|
309
|
-
VALUES ($1, $2, $3, $4, $5::text, $6::bigint,
|
|
310
|
-
CASE WHEN $5::text = 'delete' THEN $6::bigint ELSE NULL::bigint END)
|
|
311
|
-
ON CONFLICT (consumer_id, pod_scope_id, resource_path) DO UPDATE
|
|
312
|
-
SET last_event_id = EXCLUDED.last_event_id,
|
|
313
|
-
last_action = EXCLUDED.last_action,
|
|
314
|
-
updated_at = EXCLUDED.updated_at,
|
|
315
|
-
deleted_at = EXCLUDED.deleted_at
|
|
316
|
-
WHERE derived_index_resource_checkpoints.last_event_id < EXCLUDED.last_event_id
|
|
317
|
-
`, [consumerId, row.pod_scope_id, row.resource_path, row.id, row.action, completedAt]);
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
async pendingCount(podScopeId, consumerId) {
|
|
321
|
-
await this.open();
|
|
322
|
-
const rows = await this.executor.query(`
|
|
323
|
-
SELECT COUNT(DISTINCT delivery.event_id) AS count
|
|
324
|
-
FROM derived_index_event_deliveries delivery
|
|
325
|
-
JOIN derived_index_change_journal event ON event.id = delivery.event_id
|
|
326
|
-
WHERE delivery.stage <> 'done'
|
|
327
|
-
AND ($1::text IS NULL OR event.pod_scope_id = $1)
|
|
328
|
-
AND ($2::text IS NULL OR delivery.consumer_id = $2)
|
|
329
|
-
`, [podScopeId ?? null, consumerId ?? null]);
|
|
330
|
-
return Number(rows[0]?.count ?? 0);
|
|
331
|
-
}
|
|
332
|
-
async claimNext(consumerId) {
|
|
333
|
-
return this.executor.transaction(async (tx) => {
|
|
334
|
-
const now = Date.now();
|
|
335
|
-
await tx.exec(`
|
|
336
|
-
UPDATE derived_index_event_deliveries
|
|
337
|
-
SET stage = 'pending', lease_until = NULL
|
|
338
|
-
WHERE consumer_id = $1 AND stage = 'processing' AND lease_until < $2
|
|
339
|
-
`, [consumerId, now]);
|
|
340
|
-
const rows = await tx.query(`
|
|
341
|
-
SELECT event.id, event.pod_scope_id, event.resource_path, event.action,
|
|
342
|
-
event.is_container, event.occurred_at
|
|
343
|
-
FROM derived_index_event_deliveries delivery
|
|
344
|
-
JOIN derived_index_change_journal event ON event.id = delivery.event_id
|
|
345
|
-
WHERE delivery.consumer_id = $1
|
|
346
|
-
AND delivery.stage = 'pending'
|
|
347
|
-
AND delivery.available_at <= $2
|
|
348
|
-
AND NOT EXISTS (
|
|
349
|
-
SELECT 1
|
|
350
|
-
FROM derived_index_event_deliveries earlier_delivery
|
|
351
|
-
JOIN derived_index_change_journal earlier_event
|
|
352
|
-
ON earlier_event.id = earlier_delivery.event_id
|
|
353
|
-
WHERE earlier_delivery.consumer_id = delivery.consumer_id
|
|
354
|
-
AND earlier_event.pod_scope_id = event.pod_scope_id
|
|
355
|
-
AND earlier_event.id < event.id
|
|
356
|
-
AND earlier_delivery.stage <> 'done'
|
|
357
|
-
)
|
|
358
|
-
ORDER BY event.id
|
|
359
|
-
LIMIT 1
|
|
360
|
-
FOR UPDATE SKIP LOCKED
|
|
361
|
-
`, [consumerId, now]);
|
|
362
|
-
const row = rows[0];
|
|
363
|
-
if (!row)
|
|
364
|
-
return undefined;
|
|
365
|
-
await tx.exec(`
|
|
366
|
-
UPDATE derived_index_event_deliveries
|
|
367
|
-
SET stage = 'processing', lease_until = $3
|
|
368
|
-
WHERE consumer_id = $1 AND event_id = $2
|
|
369
|
-
`, [consumerId, row.id, now + this.leaseMs]);
|
|
370
|
-
return row;
|
|
371
|
-
});
|
|
372
|
-
}
|
|
373
|
-
async close() {
|
|
374
|
-
if (this.pollTimer)
|
|
375
|
-
clearInterval(this.pollTimer);
|
|
376
|
-
await Promise.all(this.replaying.values());
|
|
377
|
-
if (this.ownsSharedPool && this.options.connectionString) {
|
|
378
|
-
(0, PostgresPoolManager_1.releaseSharedPool)({ connectionString: this.options.connectionString });
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
scheduleReplay() {
|
|
382
|
-
for (const consumerId of this.consumers.keys()) {
|
|
383
|
-
if (this.replaying.has(consumerId))
|
|
384
|
-
continue;
|
|
385
|
-
const replay = this.replayConsumer(consumerId)
|
|
386
|
-
.then(() => undefined)
|
|
387
|
-
.catch(() => undefined)
|
|
388
|
-
.finally(() => { this.replaying.delete(consumerId); });
|
|
389
|
-
this.replaying.set(consumerId, replay);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
exports.PostgresDerivedIndexJournal = PostgresDerivedIndexJournal;
|
|
394
|
-
function errorMessage(error) {
|
|
395
|
-
return error instanceof Error ? error.message : String(error);
|
|
396
|
-
}
|
|
397
|
-
function defaultPodScope(resourcePath) {
|
|
398
|
-
try {
|
|
399
|
-
const url = new URL(resourcePath);
|
|
400
|
-
const firstSegment = url.pathname.split('/').filter(Boolean)[0];
|
|
401
|
-
return firstSegment ? `${url.origin}/${firstSegment}/` : `${url.origin}/`;
|
|
402
|
-
}
|
|
403
|
-
catch {
|
|
404
|
-
const firstSegment = resourcePath.split('/').filter(Boolean)[0];
|
|
405
|
-
return firstSegment ?? resourcePath;
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
//# sourceMappingURL=PostgresDerivedIndexJournal.js.map
|