@askdkc/kiokuko 0.2.6 → 0.2.8
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/README.ja.md +18 -0
- package/README.ko.md +17 -0
- package/README.md +23 -0
- package/README.zh-CN.md +16 -0
- package/dist/akinator/agent-task.d.ts +5 -0
- package/dist/akinator/agent-task.d.ts.map +1 -1
- package/dist/akinator/agent-task.js +98 -28
- package/dist/akinator/agent-task.js.map +1 -1
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +94 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts +4 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +46 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/embeddings.d.ts +26 -0
- package/dist/commands/embeddings.d.ts.map +1 -0
- package/dist/commands/embeddings.js +190 -0
- package/dist/commands/embeddings.js.map +1 -0
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +7 -0
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/use.d.ts.map +1 -1
- package/dist/commands/use.js +22 -8
- package/dist/commands/use.js.map +1 -1
- package/dist/config/paths.d.ts +5 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +34 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/context/broker.d.ts +3 -1
- package/dist/context/broker.d.ts.map +1 -1
- package/dist/context/broker.js +11 -7
- package/dist/context/broker.js.map +1 -1
- package/dist/context/delivery.d.ts.map +1 -1
- package/dist/context/delivery.js +5 -3
- package/dist/context/delivery.js.map +1 -1
- package/dist/context/ranking.d.ts +1 -1
- package/dist/context/ranking.d.ts.map +1 -1
- package/dist/context/ranking.js +1 -0
- package/dist/context/ranking.js.map +1 -1
- package/dist/context/scoped-broker.d.ts +4 -3
- package/dist/context/scoped-broker.d.ts.map +1 -1
- package/dist/context/scoped-broker.js +45 -7
- package/dist/context/scoped-broker.js.map +1 -1
- package/dist/context/selection-state.d.ts +12 -0
- package/dist/context/selection-state.d.ts.map +1 -1
- package/dist/context/selection-state.js +117 -7
- package/dist/context/selection-state.js.map +1 -1
- package/dist/db/capabilities.d.ts +8 -0
- package/dist/db/capabilities.d.ts.map +1 -1
- package/dist/db/capabilities.js +14 -0
- package/dist/db/capabilities.js.map +1 -1
- package/dist/db/connection.d.ts +7 -0
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +56 -0
- package/dist/db/connection.js.map +1 -1
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +3 -0
- package/dist/db/migrate.js.map +1 -1
- package/dist/embedding/backend.d.ts +27 -0
- package/dist/embedding/backend.d.ts.map +1 -0
- package/dist/embedding/backend.js +67 -0
- package/dist/embedding/backend.js.map +1 -0
- package/dist/embedding/config.d.ts +10 -0
- package/dist/embedding/config.d.ts.map +1 -0
- package/dist/embedding/config.js +142 -0
- package/dist/embedding/config.js.map +1 -0
- package/dist/embedding/diagnostics.d.ts +34 -0
- package/dist/embedding/diagnostics.d.ts.map +1 -0
- package/dist/embedding/diagnostics.js +263 -0
- package/dist/embedding/diagnostics.js.map +1 -0
- package/dist/embedding/document.d.ts +20 -0
- package/dist/embedding/document.d.ts.map +1 -0
- package/dist/embedding/document.js +122 -0
- package/dist/embedding/document.js.map +1 -0
- package/dist/embedding/javascript-backend.d.ts +11 -0
- package/dist/embedding/javascript-backend.d.ts.map +1 -0
- package/dist/embedding/javascript-backend.js +164 -0
- package/dist/embedding/javascript-backend.js.map +1 -0
- package/dist/embedding/jobs.d.ts +67 -0
- package/dist/embedding/jobs.d.ts.map +1 -0
- package/dist/embedding/jobs.js +259 -0
- package/dist/embedding/jobs.js.map +1 -0
- package/dist/embedding/local-model-loader.d.ts +24 -0
- package/dist/embedding/local-model-loader.d.ts.map +1 -0
- package/dist/embedding/local-model-loader.js +64 -0
- package/dist/embedding/local-model-loader.js.map +1 -0
- package/dist/embedding/local-transformers-provider.d.ts +17 -0
- package/dist/embedding/local-transformers-provider.d.ts.map +1 -0
- package/dist/embedding/local-transformers-provider.js +54 -0
- package/dist/embedding/local-transformers-provider.js.map +1 -0
- package/dist/embedding/model-download.d.ts +32 -0
- package/dist/embedding/model-download.d.ts.map +1 -0
- package/dist/embedding/model-download.js +41 -0
- package/dist/embedding/model-download.js.map +1 -0
- package/dist/embedding/model-installation.d.ts +17 -0
- package/dist/embedding/model-installation.d.ts.map +1 -0
- package/dist/embedding/model-installation.js +71 -0
- package/dist/embedding/model-installation.js.map +1 -0
- package/dist/embedding/model-manifest.d.ts +18 -0
- package/dist/embedding/model-manifest.d.ts.map +1 -0
- package/dist/embedding/model-manifest.js +86 -0
- package/dist/embedding/model-manifest.js.map +1 -0
- package/dist/embedding/openai-compatible-provider.d.ts +24 -0
- package/dist/embedding/openai-compatible-provider.d.ts.map +1 -0
- package/dist/embedding/openai-compatible-provider.js +330 -0
- package/dist/embedding/openai-compatible-provider.js.map +1 -0
- package/dist/embedding/presets/local-small.d.ts +8 -0
- package/dist/embedding/presets/local-small.d.ts.map +1 -0
- package/dist/embedding/presets/local-small.js +67 -0
- package/dist/embedding/presets/local-small.js.map +1 -0
- package/dist/embedding/presets/manifest.d.ts +27 -0
- package/dist/embedding/presets/manifest.d.ts.map +1 -0
- package/dist/embedding/presets/manifest.js +5 -0
- package/dist/embedding/presets/manifest.js.map +1 -0
- package/dist/embedding/profile.d.ts +10 -0
- package/dist/embedding/profile.d.ts.map +1 -0
- package/dist/embedding/profile.js +67 -0
- package/dist/embedding/profile.js.map +1 -0
- package/dist/embedding/provider.d.ts +13 -0
- package/dist/embedding/provider.d.ts.map +1 -0
- package/dist/embedding/provider.js +17 -0
- package/dist/embedding/provider.js.map +1 -0
- package/dist/embedding/query-cache.d.ts +45 -0
- package/dist/embedding/query-cache.d.ts.map +1 -0
- package/dist/embedding/query-cache.js +181 -0
- package/dist/embedding/query-cache.js.map +1 -0
- package/dist/embedding/runtime.d.ts +14 -0
- package/dist/embedding/runtime.d.ts.map +1 -0
- package/dist/embedding/runtime.js +407 -0
- package/dist/embedding/runtime.js.map +1 -0
- package/dist/embedding/settings.d.ts +6 -0
- package/dist/embedding/settings.d.ts.map +1 -0
- package/dist/embedding/settings.js +69 -0
- package/dist/embedding/settings.js.map +1 -0
- package/dist/embedding/setup-lock.d.ts +7 -0
- package/dist/embedding/setup-lock.d.ts.map +1 -0
- package/dist/embedding/setup-lock.js +35 -0
- package/dist/embedding/setup-lock.js.map +1 -0
- package/dist/embedding/setup-service.d.ts +53 -0
- package/dist/embedding/setup-service.d.ts.map +1 -0
- package/dist/embedding/setup-service.js +184 -0
- package/dist/embedding/setup-service.js.map +1 -0
- package/dist/embedding/sqlite-vec-backend.d.ts +9 -0
- package/dist/embedding/sqlite-vec-backend.d.ts.map +1 -0
- package/dist/embedding/sqlite-vec-backend.js +106 -0
- package/dist/embedding/sqlite-vec-backend.js.map +1 -0
- package/dist/embedding/sqlite-vec-loader.d.ts +17 -0
- package/dist/embedding/sqlite-vec-loader.d.ts.map +1 -0
- package/dist/embedding/sqlite-vec-loader.js +51 -0
- package/dist/embedding/sqlite-vec-loader.js.map +1 -0
- package/dist/embedding/store.d.ts +66 -0
- package/dist/embedding/store.d.ts.map +1 -0
- package/dist/embedding/store.js +490 -0
- package/dist/embedding/store.js.map +1 -0
- package/dist/embedding/types.d.ts +126 -0
- package/dist/embedding/types.d.ts.map +1 -0
- package/dist/embedding/types.js +2 -0
- package/dist/embedding/types.js.map +1 -0
- package/dist/embedding/vector.d.ts +9 -0
- package/dist/embedding/vector.d.ts.map +1 -0
- package/dist/embedding/vector.js +90 -0
- package/dist/embedding/vector.js.map +1 -0
- package/dist/embedding/worker.d.ts +23 -0
- package/dist/embedding/worker.d.ts.map +1 -0
- package/dist/embedding/worker.js +84 -0
- package/dist/embedding/worker.js.map +1 -0
- package/dist/enno-oduno/schemas.d.ts +2 -2
- package/dist/ledger/checkpoint-contract.d.ts +2 -2
- package/dist/mcp/bounded-stdio-transport.d.ts +3 -0
- package/dist/mcp/bounded-stdio-transport.d.ts.map +1 -1
- package/dist/mcp/bounded-stdio-transport.js +15 -3
- package/dist/mcp/bounded-stdio-transport.js.map +1 -1
- package/dist/mcp/request-deadline.d.ts +51 -0
- package/dist/mcp/request-deadline.d.ts.map +1 -0
- package/dist/mcp/request-deadline.js +155 -0
- package/dist/mcp/request-deadline.js.map +1 -0
- package/dist/mcp/runtime-owner.d.ts +27 -0
- package/dist/mcp/runtime-owner.d.ts.map +1 -0
- package/dist/mcp/runtime-owner.js +129 -0
- package/dist/mcp/runtime-owner.js.map +1 -0
- package/dist/mcp/server.d.ts +11 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +83 -22
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/checkpoint-contract.d.ts +3 -3
- package/dist/memory/entries.d.ts.map +1 -1
- package/dist/memory/entries.js +13 -0
- package/dist/memory/entries.js.map +1 -1
- package/dist/memory/federated-retrieval.d.ts +3 -2
- package/dist/memory/federated-retrieval.d.ts.map +1 -1
- package/dist/memory/federated-retrieval.js +112 -31
- package/dist/memory/federated-retrieval.js.map +1 -1
- package/dist/memory/hybrid-retrieval.d.ts +9 -2
- package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
- package/dist/memory/hybrid-retrieval.js +60 -13
- package/dist/memory/hybrid-retrieval.js.map +1 -1
- package/dist/memory/retrieval.d.ts +4 -3
- package/dist/memory/retrieval.d.ts.map +1 -1
- package/dist/memory/retrieval.js +6 -6
- package/dist/memory/retrieval.js.map +1 -1
- package/dist/memory/scoped-memory.d.ts +3 -2
- package/dist/memory/scoped-memory.d.ts.map +1 -1
- package/dist/memory/scoped-memory.js +7 -3
- package/dist/memory/scoped-memory.js.map +1 -1
- package/dist/server/agent-application.js +1 -1
- package/dist/server/agent-application.js.map +1 -1
- package/dist/server/http.d.ts +17 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +79 -13
- package/dist/server/http.js.map +1 -1
- package/dist/skills/discovery-service.d.ts.map +1 -1
- package/dist/skills/discovery-service.js +10 -8
- package/dist/skills/discovery-service.js.map +1 -1
- package/dist/skills/find.d.ts +1 -0
- package/dist/skills/find.d.ts.map +1 -1
- package/dist/skills/find.js +1 -0
- package/dist/skills/find.js.map +1 -1
- package/dist/skills/materialization-authority.d.ts +1 -1
- package/dist/skills/materialization-authority.d.ts.map +1 -1
- package/dist/skills/materialization-authority.js +2 -2
- package/dist/skills/materialization-authority.js.map +1 -1
- package/dist/skills/providers/skills-sh-compat.d.ts.map +1 -1
- package/dist/skills/providers/skills-sh-compat.js +4 -2
- package/dist/skills/providers/skills-sh-compat.js.map +1 -1
- package/dist/skills/providers/skills-sh-v1.d.ts +2 -2
- package/dist/skills/providers/skills-sh-v1.d.ts.map +1 -1
- package/dist/skills/providers/skills-sh-v1.js +22 -4
- package/dist/skills/providers/skills-sh-v1.js.map +1 -1
- package/dist/skills/source/github-fetcher.d.ts.map +1 -1
- package/dist/skills/source/github-fetcher.js +8 -4
- package/dist/skills/source/github-fetcher.js.map +1 -1
- package/dist/skills/types.d.ts +3 -2
- package/dist/skills/types.d.ts.map +1 -1
- package/docs/agent-file.md +72 -0
- package/docs/agent-gateway.md +104 -0
- package/docs/architecture.md +12 -0
- package/docs/cli-contract.md +13 -0
- package/docs/client-compatibility.md +298 -0
- package/docs/database.md +11 -0
- package/docs/execution-ledger.md +89 -0
- package/docs/release-notes-0.1.18.md +103 -0
- package/docs/retrieval-evaluation.md +10 -0
- package/docs/security.md +11 -0
- package/docs/sqlite-driver-adr.md +8 -0
- package/migrations/021_semantic_embeddings.sql +122 -0
- package/migrations/022_embedding_setup_v2.sql +236 -0
- package/migrations/down/021_semantic_embeddings.sql +17 -0
- package/migrations/down/022_embedding_setup_v2.sql +133 -0
- package/package.json +10 -1
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
import { withImmediateTransaction } from '../db/transaction.js';
|
|
2
|
+
import { KiokukoError } from '../errors.js';
|
|
3
|
+
import { validateTimestamp } from '../ledger/validate.js';
|
|
4
|
+
import { requireWorkspace } from '../serialization/validate.js';
|
|
5
|
+
import { embeddingProfileId } from './profile.js';
|
|
6
|
+
import { decodeVector, encodeVector, hashVectorBytes } from './vector.js';
|
|
7
|
+
const HASH_PATTERN = /^[0-9a-f]{64}$/u;
|
|
8
|
+
const EMBEDDING_TABLES = [
|
|
9
|
+
'embedding_profiles',
|
|
10
|
+
'embedding_runtime',
|
|
11
|
+
'entry_embeddings',
|
|
12
|
+
'embedding_jobs',
|
|
13
|
+
'query_embeddings',
|
|
14
|
+
];
|
|
15
|
+
function invalid(message) {
|
|
16
|
+
throw new KiokukoError('VALIDATION_ERROR', message);
|
|
17
|
+
}
|
|
18
|
+
function integrity(message) {
|
|
19
|
+
throw new KiokukoError('INTEGRITY_ERROR', message);
|
|
20
|
+
}
|
|
21
|
+
function conflict(message) {
|
|
22
|
+
throw new KiokukoError('CONFLICT', message);
|
|
23
|
+
}
|
|
24
|
+
function positiveInteger(value, label) {
|
|
25
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 1) {
|
|
26
|
+
invalid(`${label} must be a positive integer`);
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
function hashValue(value, label) {
|
|
31
|
+
if (typeof value !== 'string' || !HASH_PATTERN.test(value))
|
|
32
|
+
invalid(`${label} must be a lowercase SHA-256 hash`);
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
function storedHash(value, label) {
|
|
36
|
+
if (typeof value !== 'string' || !HASH_PATTERN.test(value))
|
|
37
|
+
integrity(`${label} is invalid`);
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
function storedTimestamp(value, label) {
|
|
41
|
+
if (typeof value !== 'string')
|
|
42
|
+
integrity(`${label} is invalid`);
|
|
43
|
+
try {
|
|
44
|
+
return validateTimestamp(value, label);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
integrity(`${label} is invalid`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function entryIdValue(value, label) {
|
|
51
|
+
if (typeof value !== 'string' || value.length === 0 || value.length > 512 || /[\u0000-\u001f\u007f]/u.test(value)) {
|
|
52
|
+
invalid(`${label} is invalid`);
|
|
53
|
+
}
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
function requireProfileIdentity(identity) {
|
|
57
|
+
if (identity.schemaVersion === 2) {
|
|
58
|
+
if (identity.providerKind !== 'local-transformers'
|
|
59
|
+
|| identity.presetId !== 'local-small'
|
|
60
|
+
|| identity.sourceModel !== 'intfloat/multilingual-e5-small'
|
|
61
|
+
|| identity.artifactRepository !== 'Xenova/multilingual-e5-small'
|
|
62
|
+
|| !/^[0-9a-f]{40}$/u.test(identity.modelRevision)
|
|
63
|
+
|| !HASH_PATTERN.test(identity.artifactManifestHash)
|
|
64
|
+
|| identity.inferenceEngine !== 'transformers-js'
|
|
65
|
+
|| identity.inferenceEngineVersion.length === 0
|
|
66
|
+
|| identity.dtype !== 'q8'
|
|
67
|
+
|| identity.pooling !== 'mean'
|
|
68
|
+
|| identity.normalize !== true
|
|
69
|
+
|| identity.maximumTokens !== 512
|
|
70
|
+
|| identity.dimensions !== 384
|
|
71
|
+
|| identity.distanceMetric !== 'cosine'
|
|
72
|
+
|| identity.documentTemplateVersion !== 2
|
|
73
|
+
|| identity.queryTemplateVersion !== 2
|
|
74
|
+
|| identity.inputContract !== 'e5-query-passage-v1'
|
|
75
|
+
|| identity.queryPrefix !== 'query: '
|
|
76
|
+
|| identity.documentPrefix !== 'passage: '
|
|
77
|
+
|| !Number.isFinite(identity.distanceCeiling)
|
|
78
|
+
|| identity.distanceCeiling <= 0 || identity.distanceCeiling >= 2) {
|
|
79
|
+
invalid('Embedding local profile identity is invalid');
|
|
80
|
+
}
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (identity.schemaVersion !== 1
|
|
84
|
+
|| identity.providerKind !== 'openai-compatible'
|
|
85
|
+
|| !HASH_PATTERN.test(identity.endpointFingerprint)
|
|
86
|
+
|| typeof identity.model !== 'string'
|
|
87
|
+
|| identity.model.length === 0
|
|
88
|
+
|| identity.model.length > 256
|
|
89
|
+
|| /[\u0000-\u001f\u007f]/u.test(identity.model)
|
|
90
|
+
|| !Number.isSafeInteger(identity.dimensions)
|
|
91
|
+
|| identity.dimensions < 2
|
|
92
|
+
|| identity.dimensions > 8192
|
|
93
|
+
|| identity.distanceMetric !== 'cosine'
|
|
94
|
+
|| identity.documentTemplateVersion !== 1
|
|
95
|
+
|| identity.queryTemplateVersion !== 1
|
|
96
|
+
|| !Number.isFinite(identity.distanceCeiling)
|
|
97
|
+
|| identity.distanceCeiling <= 0
|
|
98
|
+
|| identity.distanceCeiling >= 2) {
|
|
99
|
+
invalid('Embedding profile identity is invalid');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function requireProfile(profile) {
|
|
103
|
+
if (typeof profile.profileId !== 'string' || !HASH_PATTERN.test(profile.profileId))
|
|
104
|
+
invalid('Embedding profile ID is invalid');
|
|
105
|
+
requireProfileIdentity(profile.identity);
|
|
106
|
+
if (embeddingProfileId(profile.identity) !== profile.profileId) {
|
|
107
|
+
invalid('Embedding profile ID does not match its identity');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function profileIdentityFromRow(row) {
|
|
111
|
+
if (row.schema_version === 2) {
|
|
112
|
+
if (typeof row.profile_id !== 'string' || !HASH_PATTERN.test(row.profile_id)
|
|
113
|
+
|| row.provider_kind !== 'local-transformers' || row.endpoint_fingerprint !== null
|
|
114
|
+
|| row.preset_id !== 'local-small' || row.source_model !== 'intfloat/multilingual-e5-small'
|
|
115
|
+
|| row.artifact_repository !== 'Xenova/multilingual-e5-small'
|
|
116
|
+
|| typeof row.model_revision !== 'string' || !/^[0-9a-f]{40}$/u.test(row.model_revision)
|
|
117
|
+
|| typeof row.artifact_manifest_hash !== 'string' || !HASH_PATTERN.test(row.artifact_manifest_hash)
|
|
118
|
+
|| row.inference_engine !== 'transformers-js'
|
|
119
|
+
|| typeof row.inference_engine_version !== 'string' || row.inference_engine_version.length === 0
|
|
120
|
+
|| row.dtype !== 'q8' || row.pooling !== 'mean' || row.normalize !== 1
|
|
121
|
+
|| row.maximum_tokens !== 512 || row.dimensions !== 384 || row.distance_metric !== 'cosine'
|
|
122
|
+
|| row.document_template_version !== 2 || row.query_template_version !== 2
|
|
123
|
+
|| row.input_contract !== 'e5-query-passage-v1' || row.query_prefix !== 'query: '
|
|
124
|
+
|| row.document_prefix !== 'passage: '
|
|
125
|
+
|| typeof row.distance_ceiling !== 'number' || !Number.isFinite(row.distance_ceiling)
|
|
126
|
+
|| row.distance_ceiling <= 0 || row.distance_ceiling >= 2)
|
|
127
|
+
integrity('Stored local embedding profile is invalid');
|
|
128
|
+
const identity = {
|
|
129
|
+
schemaVersion: 2,
|
|
130
|
+
providerKind: 'local-transformers',
|
|
131
|
+
presetId: 'local-small',
|
|
132
|
+
sourceModel: 'intfloat/multilingual-e5-small',
|
|
133
|
+
artifactRepository: 'Xenova/multilingual-e5-small',
|
|
134
|
+
modelRevision: row.model_revision,
|
|
135
|
+
artifactManifestHash: row.artifact_manifest_hash,
|
|
136
|
+
inferenceEngine: 'transformers-js',
|
|
137
|
+
inferenceEngineVersion: row.inference_engine_version,
|
|
138
|
+
dtype: 'q8',
|
|
139
|
+
pooling: 'mean',
|
|
140
|
+
normalize: true,
|
|
141
|
+
maximumTokens: 512,
|
|
142
|
+
dimensions: 384,
|
|
143
|
+
distanceMetric: 'cosine',
|
|
144
|
+
distanceCeiling: row.distance_ceiling,
|
|
145
|
+
inputContract: 'e5-query-passage-v1',
|
|
146
|
+
documentTemplateVersion: 2,
|
|
147
|
+
queryTemplateVersion: 2,
|
|
148
|
+
queryPrefix: 'query: ',
|
|
149
|
+
documentPrefix: 'passage: ',
|
|
150
|
+
};
|
|
151
|
+
if (embeddingProfileId(identity) !== row.profile_id)
|
|
152
|
+
integrity('Stored local embedding profile ID does not match its identity');
|
|
153
|
+
storedTimestamp(row.created_at, 'embedding profile created_at');
|
|
154
|
+
return Object.freeze({ profileId: row.profile_id, identity: Object.freeze(identity) });
|
|
155
|
+
}
|
|
156
|
+
if (typeof row.profile_id !== 'string' || !HASH_PATTERN.test(row.profile_id)
|
|
157
|
+
|| row.provider_kind !== 'openai-compatible'
|
|
158
|
+
|| typeof row.endpoint_fingerprint !== 'string' || !HASH_PATTERN.test(row.endpoint_fingerprint)
|
|
159
|
+
|| typeof row.model !== 'string' || row.model.length === 0 || row.model.length > 256
|
|
160
|
+
|| /[\u0000-\u001f\u007f]/u.test(row.model)
|
|
161
|
+
|| typeof row.dimensions !== 'number' || !Number.isSafeInteger(row.dimensions) || row.dimensions < 2 || row.dimensions > 8192
|
|
162
|
+
|| row.distance_metric !== 'cosine'
|
|
163
|
+
|| typeof row.distance_ceiling !== 'number' || !Number.isFinite(row.distance_ceiling) || row.distance_ceiling <= 0 || row.distance_ceiling >= 2
|
|
164
|
+
|| row.document_template_version !== 1
|
|
165
|
+
|| row.query_template_version !== 1) {
|
|
166
|
+
integrity('Stored embedding profile is invalid');
|
|
167
|
+
}
|
|
168
|
+
const identity = {
|
|
169
|
+
schemaVersion: 1,
|
|
170
|
+
providerKind: 'openai-compatible',
|
|
171
|
+
endpointFingerprint: row.endpoint_fingerprint,
|
|
172
|
+
model: row.model,
|
|
173
|
+
dimensions: row.dimensions,
|
|
174
|
+
distanceMetric: 'cosine',
|
|
175
|
+
documentTemplateVersion: 1,
|
|
176
|
+
queryTemplateVersion: 1,
|
|
177
|
+
distanceCeiling: row.distance_ceiling,
|
|
178
|
+
};
|
|
179
|
+
if (embeddingProfileId(identity) !== row.profile_id)
|
|
180
|
+
integrity('Stored embedding profile ID does not match its identity');
|
|
181
|
+
storedTimestamp(row.created_at, 'embedding profile created_at');
|
|
182
|
+
return Object.freeze({ profileId: row.profile_id, identity: Object.freeze(identity) });
|
|
183
|
+
}
|
|
184
|
+
function profileIdentitiesEqual(left, right) {
|
|
185
|
+
return left.schemaVersion === right.schemaVersion && embeddingProfileId(left) === embeddingProfileId(right);
|
|
186
|
+
}
|
|
187
|
+
function schemaTables(database) {
|
|
188
|
+
return new Set(database.prepare(`
|
|
189
|
+
SELECT name
|
|
190
|
+
FROM sqlite_master
|
|
191
|
+
WHERE type = 'table' AND name IN (${EMBEDDING_TABLES.map(() => '?').join(', ')})
|
|
192
|
+
`).all(...EMBEDDING_TABLES).map((row) => row.name));
|
|
193
|
+
}
|
|
194
|
+
function requireEmbeddingSchema(database) {
|
|
195
|
+
const tables = schemaTables(database);
|
|
196
|
+
const missing = EMBEDDING_TABLES.filter((table) => !tables.has(table));
|
|
197
|
+
if (missing.length > 0)
|
|
198
|
+
integrity(`Embedding projection schema is incomplete: missing ${missing.join(', ')}`);
|
|
199
|
+
}
|
|
200
|
+
function embeddingSchemaInstalled(database) {
|
|
201
|
+
const tables = schemaTables(database);
|
|
202
|
+
const present = EMBEDDING_TABLES.filter((table) => tables.has(table));
|
|
203
|
+
if (present.length === 0)
|
|
204
|
+
return false;
|
|
205
|
+
if (present.length !== EMBEDDING_TABLES.length) {
|
|
206
|
+
const missing = EMBEDDING_TABLES.filter((table) => !tables.has(table));
|
|
207
|
+
integrity(`Embedding projection schema is incomplete: missing ${missing.join(', ')}`);
|
|
208
|
+
}
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
function readProfileRow(database, profileId) {
|
|
212
|
+
const row = database.prepare(`
|
|
213
|
+
SELECT profile_id, schema_version, provider_kind, endpoint_fingerprint, model, dimensions,
|
|
214
|
+
distance_metric, distance_ceiling, document_template_version,
|
|
215
|
+
query_template_version, preset_id, source_model, artifact_repository,
|
|
216
|
+
model_revision, artifact_manifest_hash, inference_engine,
|
|
217
|
+
inference_engine_version, dtype, pooling, normalize, maximum_tokens,
|
|
218
|
+
input_contract, query_prefix, document_prefix, created_at
|
|
219
|
+
FROM embedding_profiles
|
|
220
|
+
WHERE profile_id = ?
|
|
221
|
+
`).get(profileId);
|
|
222
|
+
return row === undefined ? undefined : profileIdentityFromRow(row);
|
|
223
|
+
}
|
|
224
|
+
export function readEmbeddingProfile(database, profileId) {
|
|
225
|
+
hashValue(profileId, 'profileId');
|
|
226
|
+
if (!embeddingSchemaInstalled(database))
|
|
227
|
+
return undefined;
|
|
228
|
+
return readProfileRow(database, profileId);
|
|
229
|
+
}
|
|
230
|
+
export function readEmbeddingRuntimeState(database) {
|
|
231
|
+
requireEmbeddingSchema(database);
|
|
232
|
+
const rows = database.prepare(`
|
|
233
|
+
SELECT singleton, active_profile_id, generation, activated_at
|
|
234
|
+
FROM embedding_runtime
|
|
235
|
+
`).all();
|
|
236
|
+
if (rows.length !== 1)
|
|
237
|
+
integrity('Embedding runtime must contain exactly one singleton row');
|
|
238
|
+
const row = rows[0];
|
|
239
|
+
if (row.singleton !== 1
|
|
240
|
+
|| (row.active_profile_id !== null && (typeof row.active_profile_id !== 'string' || !HASH_PATTERN.test(row.active_profile_id)))
|
|
241
|
+
|| typeof row.generation !== 'number'
|
|
242
|
+
|| !Number.isSafeInteger(row.generation)
|
|
243
|
+
|| row.generation < 1
|
|
244
|
+
|| (row.activated_at !== null && typeof row.activated_at !== 'string')) {
|
|
245
|
+
integrity('Stored embedding runtime is invalid');
|
|
246
|
+
}
|
|
247
|
+
const activatedAt = row.activated_at === null ? null : storedTimestamp(row.activated_at, 'embedding runtime activated_at');
|
|
248
|
+
if ((row.active_profile_id === null) !== (activatedAt === null))
|
|
249
|
+
integrity('Stored embedding runtime activation state is invalid');
|
|
250
|
+
if (row.active_profile_id !== null && readProfileRow(database, row.active_profile_id) === undefined) {
|
|
251
|
+
integrity('Active embedding profile is missing');
|
|
252
|
+
}
|
|
253
|
+
return { activeProfileId: row.active_profile_id, generation: row.generation, activatedAt };
|
|
254
|
+
}
|
|
255
|
+
export function readActiveEmbeddingProfile(database) {
|
|
256
|
+
const runtime = readEmbeddingRuntimeState(database);
|
|
257
|
+
if (runtime.activeProfileId === null || runtime.activatedAt === null)
|
|
258
|
+
return null;
|
|
259
|
+
const profile = readProfileRow(database, runtime.activeProfileId);
|
|
260
|
+
if (profile === undefined)
|
|
261
|
+
integrity('Active embedding profile is missing');
|
|
262
|
+
return Object.freeze({ profile, generation: runtime.generation, activatedAt: runtime.activatedAt });
|
|
263
|
+
}
|
|
264
|
+
function currentEntry(database, entryId) {
|
|
265
|
+
const row = database.prepare(`
|
|
266
|
+
SELECT e.current_revision, r.content_hash
|
|
267
|
+
FROM entries AS e
|
|
268
|
+
JOIN entry_revisions AS r
|
|
269
|
+
ON r.entry_id = e.id AND r.revision = e.current_revision
|
|
270
|
+
WHERE e.id = ?
|
|
271
|
+
`).get(entryId);
|
|
272
|
+
if (row === undefined)
|
|
273
|
+
throw new KiokukoError('NOT_FOUND', 'Entry not found');
|
|
274
|
+
if (typeof row.current_revision !== 'number' || !Number.isSafeInteger(row.current_revision) || row.current_revision < 1
|
|
275
|
+
|| typeof row.content_hash !== 'string' || row.content_hash.length === 0) {
|
|
276
|
+
integrity('Current entry embedding source is invalid');
|
|
277
|
+
}
|
|
278
|
+
return { revision: row.current_revision, contentHash: row.content_hash };
|
|
279
|
+
}
|
|
280
|
+
function enqueueForProfile(database, profileId, input) {
|
|
281
|
+
const current = currentEntry(database, input.entryId);
|
|
282
|
+
if (current.revision !== input.revision || current.contentHash !== input.contentHash) {
|
|
283
|
+
conflict('Entry changed before its embedding job could be enqueued');
|
|
284
|
+
}
|
|
285
|
+
database.prepare(`
|
|
286
|
+
INSERT INTO embedding_jobs (
|
|
287
|
+
entry_id, profile_id, revision, content_hash, state, attempts,
|
|
288
|
+
available_at, lease_id, lease_expires_at, error_code, created_at, updated_at
|
|
289
|
+
) VALUES (?, ?, ?, ?, 'pending', 0, ?, NULL, NULL, NULL, ?, ?)
|
|
290
|
+
ON CONFLICT(entry_id, profile_id) DO UPDATE SET
|
|
291
|
+
revision = excluded.revision,
|
|
292
|
+
content_hash = excluded.content_hash,
|
|
293
|
+
state = 'pending',
|
|
294
|
+
attempts = 0,
|
|
295
|
+
available_at = excluded.available_at,
|
|
296
|
+
lease_id = NULL,
|
|
297
|
+
lease_expires_at = NULL,
|
|
298
|
+
error_code = NULL,
|
|
299
|
+
updated_at = excluded.updated_at
|
|
300
|
+
`).run(input.entryId, profileId, input.revision, input.contentHash, input.now, input.now, input.now);
|
|
301
|
+
}
|
|
302
|
+
/** Enqueue the current entry revision for the active profile inside its caller-owned transaction. */
|
|
303
|
+
export function enqueueCurrentEntryEmbeddingInTransaction(database, input) {
|
|
304
|
+
entryIdValue(input.entryId, 'entryId');
|
|
305
|
+
const revision = positiveInteger(input.revision, 'revision');
|
|
306
|
+
const contentHash = hashValue(input.contentHash, 'contentHash');
|
|
307
|
+
const now = validateTimestamp(input.now, 'now');
|
|
308
|
+
if (!embeddingSchemaInstalled(database))
|
|
309
|
+
return;
|
|
310
|
+
const runtime = readEmbeddingRuntimeState(database);
|
|
311
|
+
if (runtime.activeProfileId === null)
|
|
312
|
+
return;
|
|
313
|
+
enqueueForProfile(database, runtime.activeProfileId, { entryId: input.entryId, revision, contentHash, now });
|
|
314
|
+
}
|
|
315
|
+
/** Enqueue every current entry for an already-installed active profile. */
|
|
316
|
+
export function enqueueAllCurrentEntryEmbeddingsInTransaction(database, requestedNow, requestedWorkspace) {
|
|
317
|
+
if (!embeddingSchemaInstalled(database))
|
|
318
|
+
return 0;
|
|
319
|
+
const runtime = readEmbeddingRuntimeState(database);
|
|
320
|
+
if (runtime.activeProfileId === null)
|
|
321
|
+
return 0;
|
|
322
|
+
const now = validateTimestamp(requestedNow ?? new Date().toISOString(), 'now');
|
|
323
|
+
const workspace = requestedWorkspace === undefined ? undefined : requireWorkspace(requestedWorkspace);
|
|
324
|
+
const rows = database.prepare(`
|
|
325
|
+
SELECT e.id, e.current_revision, r.content_hash
|
|
326
|
+
FROM entries AS e
|
|
327
|
+
JOIN entry_revisions AS r
|
|
328
|
+
ON r.entry_id = e.id AND r.revision = e.current_revision
|
|
329
|
+
${workspace === undefined ? '' : 'WHERE e.workspace = ?'}
|
|
330
|
+
ORDER BY e.id ASC
|
|
331
|
+
`).all(...(workspace === undefined ? [] : [workspace]));
|
|
332
|
+
for (const row of rows) {
|
|
333
|
+
const entryId = entryIdValue(row.id, 'entryId');
|
|
334
|
+
const revision = positiveInteger(row.current_revision, 'revision');
|
|
335
|
+
const contentHash = hashValue(row.content_hash, 'contentHash');
|
|
336
|
+
enqueueForProfile(database, runtime.activeProfileId, { entryId, revision, contentHash, now });
|
|
337
|
+
}
|
|
338
|
+
return rows.length;
|
|
339
|
+
}
|
|
340
|
+
export function activateEmbeddingProfileInTransaction(database, profile, options) {
|
|
341
|
+
requireProfile(profile);
|
|
342
|
+
if (profile.identity.schemaVersion !== 1)
|
|
343
|
+
invalid('Legacy embedding activation requires a v1 profile identity');
|
|
344
|
+
if (typeof options.replace !== 'boolean')
|
|
345
|
+
invalid('replace must be a boolean');
|
|
346
|
+
const now = validateTimestamp(options.now ?? new Date().toISOString(), 'now');
|
|
347
|
+
requireEmbeddingSchema(database);
|
|
348
|
+
const existing = readProfileRow(database, profile.profileId);
|
|
349
|
+
if (existing === undefined) {
|
|
350
|
+
database.prepare(`
|
|
351
|
+
INSERT OR IGNORE INTO embedding_profiles (
|
|
352
|
+
profile_id, provider_kind, endpoint_fingerprint, model, dimensions,
|
|
353
|
+
distance_metric, distance_ceiling, document_template_version,
|
|
354
|
+
query_template_version, created_at
|
|
355
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
356
|
+
`).run(profile.profileId, profile.identity.providerKind, profile.identity.endpointFingerprint, profile.identity.model, profile.identity.dimensions, profile.identity.distanceMetric, profile.identity.distanceCeiling, profile.identity.documentTemplateVersion, profile.identity.queryTemplateVersion, now);
|
|
357
|
+
}
|
|
358
|
+
else if (!profileIdentitiesEqual(existing.identity, profile.identity)) {
|
|
359
|
+
conflict('Embedding profile ID already refers to different profile fields');
|
|
360
|
+
}
|
|
361
|
+
const runtime = readEmbeddingRuntimeState(database);
|
|
362
|
+
if (runtime.activeProfileId === profile.profileId) {
|
|
363
|
+
return { profileId: profile.profileId, generation: runtime.generation, activated: false, enqueued: 0 };
|
|
364
|
+
}
|
|
365
|
+
if (runtime.activeProfileId !== null && !options.replace) {
|
|
366
|
+
conflict('An active embedding profile already exists; use replace to switch it');
|
|
367
|
+
}
|
|
368
|
+
const generation = runtime.activeProfileId === null ? runtime.generation : runtime.generation + 1;
|
|
369
|
+
database.prepare(`
|
|
370
|
+
UPDATE embedding_runtime
|
|
371
|
+
SET active_profile_id = ?, generation = ?, activated_at = ?
|
|
372
|
+
WHERE singleton = 1 AND generation = ?
|
|
373
|
+
`).run(profile.profileId, generation, now, runtime.generation);
|
|
374
|
+
const updated = readEmbeddingRuntimeState(database);
|
|
375
|
+
if (updated.activeProfileId !== profile.profileId || updated.generation !== generation || updated.activatedAt !== now) {
|
|
376
|
+
conflict('Embedding runtime changed while activating a profile');
|
|
377
|
+
}
|
|
378
|
+
const enqueued = enqueueAllCurrentEntryEmbeddingsInTransaction(database, now);
|
|
379
|
+
return { profileId: profile.profileId, generation, activated: true, enqueued };
|
|
380
|
+
}
|
|
381
|
+
export function activateEmbeddingProfile(database, profile, options) {
|
|
382
|
+
return withImmediateTransaction(database, () => activateEmbeddingProfileInTransaction(database, profile, options));
|
|
383
|
+
}
|
|
384
|
+
export function activateLocalEmbeddingProfileInTransaction(database, profile, options) {
|
|
385
|
+
requireProfile(profile);
|
|
386
|
+
if (profile.identity.schemaVersion !== 2)
|
|
387
|
+
invalid('Local embedding activation requires a v2 profile identity');
|
|
388
|
+
if (typeof options.replace !== 'boolean')
|
|
389
|
+
invalid('replace must be a boolean');
|
|
390
|
+
const now = validateTimestamp(options.now ?? new Date().toISOString(), 'now');
|
|
391
|
+
requireEmbeddingSchema(database);
|
|
392
|
+
const existing = readProfileRow(database, profile.profileId);
|
|
393
|
+
if (existing === undefined) {
|
|
394
|
+
database.prepare(`
|
|
395
|
+
INSERT INTO embedding_profiles (
|
|
396
|
+
profile_id, schema_version, provider_kind, endpoint_fingerprint, model,
|
|
397
|
+
dimensions, distance_metric, distance_ceiling, document_template_version,
|
|
398
|
+
query_template_version, preset_id, source_model, artifact_repository,
|
|
399
|
+
model_revision, artifact_manifest_hash, inference_engine,
|
|
400
|
+
inference_engine_version, dtype, pooling, normalize, maximum_tokens,
|
|
401
|
+
input_contract, query_prefix, document_prefix, created_at
|
|
402
|
+
) VALUES (?, 2, 'local-transformers', NULL, ?, 384, 'cosine', ?, 2, 2,
|
|
403
|
+
?, ?, ?, ?, ?, 'transformers-js', ?, 'q8', 'mean', 1, 512,
|
|
404
|
+
'e5-query-passage-v1', 'query: ', 'passage: ', ?)
|
|
405
|
+
`).run(profile.profileId, profile.identity.sourceModel, profile.identity.distanceCeiling, profile.identity.presetId, profile.identity.sourceModel, profile.identity.artifactRepository, profile.identity.modelRevision, profile.identity.artifactManifestHash, profile.identity.inferenceEngineVersion, now);
|
|
406
|
+
}
|
|
407
|
+
else if (!profileIdentitiesEqual(existing.identity, profile.identity)) {
|
|
408
|
+
conflict('Embedding profile ID already refers to different profile fields');
|
|
409
|
+
}
|
|
410
|
+
const runtime = readEmbeddingRuntimeState(database);
|
|
411
|
+
if (runtime.activeProfileId === profile.profileId)
|
|
412
|
+
return { profileId: profile.profileId, generation: runtime.generation, activated: false, enqueued: 0 };
|
|
413
|
+
if (runtime.activeProfileId !== null && !options.replace)
|
|
414
|
+
conflict('An active embedding profile already exists; use replace to switch it');
|
|
415
|
+
const generation = runtime.activeProfileId === null ? runtime.generation : runtime.generation + 1;
|
|
416
|
+
database.prepare(`
|
|
417
|
+
UPDATE embedding_runtime SET active_profile_id = ?, generation = ?, activated_at = ?
|
|
418
|
+
WHERE singleton = 1 AND generation = ?
|
|
419
|
+
`).run(profile.profileId, generation, now, runtime.generation);
|
|
420
|
+
const updated = readEmbeddingRuntimeState(database);
|
|
421
|
+
if (updated.activeProfileId !== profile.profileId || updated.generation !== generation || updated.activatedAt !== now)
|
|
422
|
+
conflict('Embedding runtime changed while activating a local profile');
|
|
423
|
+
const enqueued = enqueueAllCurrentEntryEmbeddingsInTransaction(database, now);
|
|
424
|
+
return { profileId: profile.profileId, generation, activated: true, enqueued };
|
|
425
|
+
}
|
|
426
|
+
export function activateLocalEmbeddingProfile(database, profile, options) {
|
|
427
|
+
return withImmediateTransaction(database, () => activateLocalEmbeddingProfileInTransaction(database, profile, options));
|
|
428
|
+
}
|
|
429
|
+
function storedEmbedding(row) {
|
|
430
|
+
const entryId = entryIdValue(row.entry_id, 'entryId');
|
|
431
|
+
const profileId = hashValue(row.profile_id, 'profileId');
|
|
432
|
+
const revision = positiveInteger(row.revision, 'revision');
|
|
433
|
+
const contentHash = storedHash(row.content_hash, 'entry embedding content_hash');
|
|
434
|
+
const documentHash = storedHash(row.document_hash, 'entry embedding document_hash');
|
|
435
|
+
const dimensions = positiveInteger(row.dimensions, 'dimensions');
|
|
436
|
+
if (dimensions < 2 || dimensions > 8192)
|
|
437
|
+
integrity('Stored entry embedding dimensions are invalid');
|
|
438
|
+
const vectorHash = storedHash(row.vector_hash, 'entry embedding vector_hash');
|
|
439
|
+
const vector = decodeVector(row.embedding, dimensions, vectorHash);
|
|
440
|
+
const createdAt = storedTimestamp(row.created_at, 'entry embedding created_at');
|
|
441
|
+
return { entryId, profileId, revision, contentHash, documentHash, dimensions, vector, vectorHash, createdAt };
|
|
442
|
+
}
|
|
443
|
+
export function upsertEntryEmbeddingInTransaction(database, input) {
|
|
444
|
+
requireEmbeddingSchema(database);
|
|
445
|
+
entryIdValue(input.entryId, 'entryId');
|
|
446
|
+
const profileId = hashValue(input.profileId, 'profileId');
|
|
447
|
+
const profile = readProfileRow(database, profileId);
|
|
448
|
+
if (profile === undefined)
|
|
449
|
+
throw new KiokukoError('NOT_FOUND', 'Embedding profile not found');
|
|
450
|
+
const revision = positiveInteger(input.revision, 'revision');
|
|
451
|
+
const contentHash = hashValue(input.contentHash, 'contentHash');
|
|
452
|
+
const documentHash = hashValue(input.documentHash, 'documentHash');
|
|
453
|
+
const createdAt = validateTimestamp(input.createdAt, 'createdAt');
|
|
454
|
+
const current = currentEntry(database, input.entryId);
|
|
455
|
+
if (current.revision !== revision || current.contentHash !== contentHash) {
|
|
456
|
+
conflict('Entry changed before its embedding could be stored');
|
|
457
|
+
}
|
|
458
|
+
const bytes = encodeVector(input.vector, profile.identity.dimensions);
|
|
459
|
+
const vectorHash = hashVectorBytes(bytes);
|
|
460
|
+
database.prepare(`
|
|
461
|
+
INSERT INTO entry_embeddings (
|
|
462
|
+
entry_id, profile_id, revision, content_hash, document_hash,
|
|
463
|
+
dimensions, embedding, vector_hash, created_at
|
|
464
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
465
|
+
ON CONFLICT(entry_id, profile_id) DO UPDATE SET
|
|
466
|
+
revision = excluded.revision,
|
|
467
|
+
content_hash = excluded.content_hash,
|
|
468
|
+
document_hash = excluded.document_hash,
|
|
469
|
+
dimensions = excluded.dimensions,
|
|
470
|
+
embedding = excluded.embedding,
|
|
471
|
+
vector_hash = excluded.vector_hash,
|
|
472
|
+
created_at = excluded.created_at
|
|
473
|
+
`).run(input.entryId, profileId, revision, contentHash, documentHash, profile.identity.dimensions, bytes, vectorHash, createdAt);
|
|
474
|
+
}
|
|
475
|
+
export function upsertEntryEmbedding(database, input) {
|
|
476
|
+
withImmediateTransaction(database, () => upsertEntryEmbeddingInTransaction(database, input));
|
|
477
|
+
}
|
|
478
|
+
export function readEntryEmbedding(database, input) {
|
|
479
|
+
requireEmbeddingSchema(database);
|
|
480
|
+
const entryId = entryIdValue(input.entryId, 'entryId');
|
|
481
|
+
const profileId = hashValue(input.profileId, 'profileId');
|
|
482
|
+
const row = database.prepare(`
|
|
483
|
+
SELECT entry_id, profile_id, revision, content_hash, document_hash,
|
|
484
|
+
dimensions, embedding, vector_hash, created_at
|
|
485
|
+
FROM entry_embeddings
|
|
486
|
+
WHERE entry_id = ? AND profile_id = ?
|
|
487
|
+
`).get(entryId, profileId);
|
|
488
|
+
return row === undefined ? undefined : storedEmbedding(row);
|
|
489
|
+
}
|
|
490
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/embedding/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { SqliteDatabase } from '../db/adapter.js';
|
|
2
|
+
export type EmbeddingMode = 'off' | 'optional' | 'required';
|
|
3
|
+
export type VectorBackendPreference = 'auto' | 'javascript' | 'sqlite-vec';
|
|
4
|
+
export type EmbeddingProviderKind = 'openai-compatible';
|
|
5
|
+
export type LocalEmbeddingProviderKind = 'local-transformers';
|
|
6
|
+
export interface EmbeddingConfig {
|
|
7
|
+
readonly mode: EmbeddingMode;
|
|
8
|
+
readonly provider: EmbeddingProviderKind;
|
|
9
|
+
readonly baseUrl?: string;
|
|
10
|
+
readonly model?: string;
|
|
11
|
+
readonly dimensions?: number;
|
|
12
|
+
readonly distanceCeiling?: number;
|
|
13
|
+
readonly apiKey?: string;
|
|
14
|
+
readonly allowRemote: boolean;
|
|
15
|
+
readonly vectorBackend: VectorBackendPreference;
|
|
16
|
+
readonly timeoutMs: number;
|
|
17
|
+
readonly batchSize: number;
|
|
18
|
+
}
|
|
19
|
+
export interface EnabledEmbeddingConfig extends EmbeddingConfig {
|
|
20
|
+
readonly mode: 'optional' | 'required';
|
|
21
|
+
readonly baseUrl: string;
|
|
22
|
+
readonly model: string;
|
|
23
|
+
readonly dimensions: number;
|
|
24
|
+
readonly distanceCeiling: number;
|
|
25
|
+
}
|
|
26
|
+
export interface EmbeddingProfileIdentity {
|
|
27
|
+
readonly schemaVersion: 1;
|
|
28
|
+
readonly providerKind: 'openai-compatible';
|
|
29
|
+
readonly endpointFingerprint: string;
|
|
30
|
+
readonly model: string;
|
|
31
|
+
readonly dimensions: number;
|
|
32
|
+
readonly distanceMetric: 'cosine';
|
|
33
|
+
readonly documentTemplateVersion: 1;
|
|
34
|
+
readonly queryTemplateVersion: 1;
|
|
35
|
+
readonly distanceCeiling: number;
|
|
36
|
+
}
|
|
37
|
+
/** Immutable identity for a verified, local Transformers.js embedding space. */
|
|
38
|
+
export interface LocalEmbeddingProfileIdentity {
|
|
39
|
+
readonly schemaVersion: 2;
|
|
40
|
+
readonly providerKind: 'local-transformers';
|
|
41
|
+
readonly presetId: 'local-small';
|
|
42
|
+
readonly sourceModel: 'intfloat/multilingual-e5-small';
|
|
43
|
+
readonly artifactRepository: 'Xenova/multilingual-e5-small';
|
|
44
|
+
readonly modelRevision: string;
|
|
45
|
+
readonly artifactManifestHash: string;
|
|
46
|
+
readonly inferenceEngine: 'transformers-js';
|
|
47
|
+
readonly inferenceEngineVersion: string;
|
|
48
|
+
readonly dtype: 'q8';
|
|
49
|
+
readonly pooling: 'mean';
|
|
50
|
+
readonly normalize: true;
|
|
51
|
+
readonly maximumTokens: 512;
|
|
52
|
+
readonly dimensions: 384;
|
|
53
|
+
readonly distanceMetric: 'cosine';
|
|
54
|
+
readonly distanceCeiling: number;
|
|
55
|
+
readonly inputContract: 'e5-query-passage-v1';
|
|
56
|
+
readonly documentTemplateVersion: 2;
|
|
57
|
+
readonly queryTemplateVersion: 2;
|
|
58
|
+
readonly queryPrefix: 'query: ';
|
|
59
|
+
readonly documentPrefix: 'passage: ';
|
|
60
|
+
}
|
|
61
|
+
export interface LocalEmbeddingProfile {
|
|
62
|
+
readonly profileId: string;
|
|
63
|
+
readonly identity: LocalEmbeddingProfileIdentity;
|
|
64
|
+
}
|
|
65
|
+
export interface EmbeddingProfile {
|
|
66
|
+
readonly profileId: string;
|
|
67
|
+
readonly identity: EmbeddingProfileIdentity | LocalEmbeddingProfileIdentity;
|
|
68
|
+
}
|
|
69
|
+
export interface PreparedSemanticQuery {
|
|
70
|
+
readonly profileId: string;
|
|
71
|
+
readonly dimensions: number;
|
|
72
|
+
readonly vector: Float32Array;
|
|
73
|
+
readonly vectorHash: string;
|
|
74
|
+
readonly backendId: string;
|
|
75
|
+
readonly distanceCeiling: number;
|
|
76
|
+
}
|
|
77
|
+
export interface EmbeddingDocument {
|
|
78
|
+
readonly text: string;
|
|
79
|
+
readonly bytes: Uint8Array;
|
|
80
|
+
readonly documentHash: string;
|
|
81
|
+
readonly truncated: boolean;
|
|
82
|
+
}
|
|
83
|
+
export interface VectorSearchInput {
|
|
84
|
+
readonly profileId: string;
|
|
85
|
+
readonly dimensions: number;
|
|
86
|
+
readonly queryVector: Float32Array;
|
|
87
|
+
readonly distanceCeiling: number;
|
|
88
|
+
readonly workspace?: string;
|
|
89
|
+
readonly excludedWorkspaces?: readonly string[];
|
|
90
|
+
readonly limit: number;
|
|
91
|
+
}
|
|
92
|
+
export interface VectorHit {
|
|
93
|
+
readonly entryId: string;
|
|
94
|
+
readonly distance: number;
|
|
95
|
+
}
|
|
96
|
+
export interface VectorSearchBackend {
|
|
97
|
+
readonly id: string;
|
|
98
|
+
search(database: SqliteDatabase, input: VectorSearchInput): VectorHit[];
|
|
99
|
+
}
|
|
100
|
+
export interface EmbeddingProvider {
|
|
101
|
+
readonly profile: EmbeddingProfileIdentity | LocalEmbeddingProfileIdentity;
|
|
102
|
+
embed(inputs: readonly string[], options?: {
|
|
103
|
+
signal?: AbortSignal;
|
|
104
|
+
}): Promise<readonly Float32Array[]>;
|
|
105
|
+
}
|
|
106
|
+
export interface EmbeddingDrainResult {
|
|
107
|
+
readonly claimed: number;
|
|
108
|
+
readonly completed: number;
|
|
109
|
+
readonly failed: number;
|
|
110
|
+
readonly blocked: number;
|
|
111
|
+
readonly remaining: number;
|
|
112
|
+
}
|
|
113
|
+
export interface EmbeddingRuntime {
|
|
114
|
+
readonly mode: EmbeddingMode;
|
|
115
|
+
readonly profileId: string | null;
|
|
116
|
+
readonly backendId: string | null;
|
|
117
|
+
readonly backend: VectorSearchBackend | null;
|
|
118
|
+
prepareQuery(database: SqliteDatabase, text: string): Promise<PreparedSemanticQuery | null>;
|
|
119
|
+
drain(options: {
|
|
120
|
+
workspace?: string;
|
|
121
|
+
maxJobs: number;
|
|
122
|
+
deadlineMs: number;
|
|
123
|
+
}): Promise<EmbeddingDrainResult>;
|
|
124
|
+
close(): Promise<void>;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=types.d.ts.map
|