chore: prepare GoodBuddy 0.8.2
Cross-platform packages / Validate source (push) Waiting to run
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, macos, macos-15) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, windows, windows-2025) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, linux, ubuntu-24.04) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, macos, macos-15-intel) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, windows, windows-2025) (push) Blocked by required conditions
Cross-platform packages / Publish GitHub Release (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, linux, ubuntu-24.04-arm) (push) Blocked by required conditions
Cross-platform packages / Validate source (push) Waiting to run
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, macos, macos-15) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, windows, windows-2025) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, linux, ubuntu-24.04) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, macos, macos-15-intel) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, windows, windows-2025) (push) Blocked by required conditions
Cross-platform packages / Publish GitHub Release (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, linux, ubuntu-24.04-arm) (push) Blocked by required conditions
This commit is contained in:
@@ -19,6 +19,7 @@ import {
|
||||
resolve
|
||||
} from 'node:path'
|
||||
import { chunkDocument, parseDocument, supportedDocumentExtensions } from './document-parser'
|
||||
import { classifyEmbeddingError } from './embedding-errors'
|
||||
import {
|
||||
extractKnowledgeGraph,
|
||||
normalizeEntityAlias,
|
||||
@@ -178,54 +179,8 @@ export class KnowledgeService {
|
||||
}
|
||||
|
||||
setEmbeddingProvider(provider?: EmbeddingProvider): Promise<void> {
|
||||
if (
|
||||
this.embeddingProvider === provider ||
|
||||
(this.embeddingProvider?.fingerprint !== undefined &&
|
||||
this.embeddingProvider.fingerprint === provider?.fingerprint)
|
||||
) {
|
||||
this.embeddingProvider = provider
|
||||
return Promise.resolve()
|
||||
}
|
||||
this.embeddingProvider = provider
|
||||
if (!provider) {
|
||||
return Promise.resolve()
|
||||
}
|
||||
const reindex = this.reindexEmbeddings(provider)
|
||||
this.activeSyncs.set('embedding-reindex', reindex)
|
||||
void reindex.then(
|
||||
() => {
|
||||
if (this.activeSyncs.get('embedding-reindex') === reindex) {
|
||||
this.activeSyncs.delete('embedding-reindex')
|
||||
}
|
||||
},
|
||||
() => {
|
||||
if (this.activeSyncs.get('embedding-reindex') === reindex) {
|
||||
this.activeSyncs.delete('embedding-reindex')
|
||||
}
|
||||
}
|
||||
)
|
||||
return reindex
|
||||
}
|
||||
|
||||
private async reindexEmbeddings(
|
||||
provider: EmbeddingProvider
|
||||
): Promise<void> {
|
||||
for (const library of this.database.listKnowledgeBases(100)) {
|
||||
if (this.embeddingProvider !== provider) {
|
||||
return
|
||||
}
|
||||
for (const document of this.database.listDocuments(
|
||||
library.id,
|
||||
500
|
||||
)) {
|
||||
if (this.embeddingProvider !== provider) {
|
||||
return
|
||||
}
|
||||
if (document.metadata.status === 'ready') {
|
||||
await this.indexDocumentEmbeddings(document, provider)
|
||||
}
|
||||
}
|
||||
}
|
||||
return Promise.resolve()
|
||||
}
|
||||
|
||||
createLibrary(input: CreateKnowledgeBaseInput): KnowledgeBase {
|
||||
@@ -780,14 +735,13 @@ export class KnowledgeService {
|
||||
if (this.lifecycleController.signal.aborted) {
|
||||
return
|
||||
}
|
||||
const message =
|
||||
error instanceof Error ? error.message : 'Embedding indexing failed'
|
||||
const safeError = classifyEmbeddingError(error)
|
||||
try {
|
||||
this.database.recordEmbeddingIndexError(
|
||||
document.id,
|
||||
provider.provider,
|
||||
provider.model,
|
||||
message.slice(0, 2_000)
|
||||
safeError.message
|
||||
)
|
||||
} catch {
|
||||
// FTS indexing is authoritative; embedding diagnostics are best effort.
|
||||
|
||||
Reference in New Issue
Block a user