kiokuko 1.0.13 → 1.0.15
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 +35 -0
- package/README.ko.md +35 -0
- package/README.md +35 -0
- package/README.zh-CN.md +35 -0
- package/dist/akinator/agent-task.d.ts +10 -0
- package/dist/akinator/agent-task.d.ts.map +1 -1
- package/dist/akinator/agent-task.js +54 -11
- package/dist/akinator/agent-task.js.map +1 -1
- package/dist/assurance/codex-hooks.js +1 -1
- package/dist/assurance/codex-hooks.js.map +1 -1
- package/dist/assurance/contracts.d.ts +8 -1
- package/dist/assurance/contracts.d.ts.map +1 -1
- package/dist/assurance/contracts.js +2 -1
- package/dist/assurance/contracts.js.map +1 -1
- package/dist/assurance/refresh.d.ts.map +1 -1
- package/dist/assurance/refresh.js +25 -3
- package/dist/assurance/refresh.js.map +1 -1
- package/dist/assurance/service.d.ts +1 -1
- package/dist/chatgpt/memory-policy.d.ts +14 -0
- package/dist/chatgpt/memory-policy.d.ts.map +1 -0
- package/dist/chatgpt/memory-policy.js +23 -0
- package/dist/chatgpt/memory-policy.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +79 -9
- package/dist/cli.js.map +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +3 -0
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +3 -0
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/memory-index.d.ts +6 -0
- package/dist/commands/memory-index.d.ts.map +1 -0
- package/dist/commands/memory-index.js +30 -0
- package/dist/commands/memory-index.js.map +1 -0
- package/dist/commands/reranker.d.ts +9 -0
- package/dist/commands/reranker.d.ts.map +1 -0
- package/dist/commands/reranker.js +52 -0
- package/dist/commands/reranker.js.map +1 -0
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +10 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/context/broker.d.ts +14 -0
- package/dist/context/broker.d.ts.map +1 -1
- package/dist/context/broker.js +162 -15
- package/dist/context/broker.js.map +1 -1
- package/dist/context/ranking.d.ts +6 -2
- package/dist/context/ranking.d.ts.map +1 -1
- package/dist/context/ranking.js +23 -1
- package/dist/context/ranking.js.map +1 -1
- package/dist/context/scoped-broker.d.ts +20 -0
- package/dist/context/scoped-broker.d.ts.map +1 -1
- package/dist/context/scoped-broker.js +173 -10
- package/dist/context/scoped-broker.js.map +1 -1
- package/dist/context/selection-state.d.ts.map +1 -1
- package/dist/context/selection-state.js +2 -0
- package/dist/context/selection-state.js.map +1 -1
- package/dist/db/connection.js +1 -1
- package/dist/db/connection.js.map +1 -1
- package/dist/embedding/javascript-backend.d.ts.map +1 -1
- package/dist/embedding/javascript-backend.js +7 -1
- package/dist/embedding/javascript-backend.js.map +1 -1
- package/dist/embedding/model-download.d.ts +2 -2
- package/dist/embedding/model-download.d.ts.map +1 -1
- package/dist/embedding/model-download.js +23 -11
- package/dist/embedding/model-download.js.map +1 -1
- package/dist/embedding/model-installation.d.ts +3 -1
- package/dist/embedding/model-installation.d.ts.map +1 -1
- package/dist/embedding/model-installation.js +16 -9
- package/dist/embedding/model-installation.js.map +1 -1
- package/dist/embedding/model-manifest.d.ts +7 -7
- package/dist/embedding/model-manifest.d.ts.map +1 -1
- package/dist/embedding/model-manifest.js +28 -17
- package/dist/embedding/model-manifest.js.map +1 -1
- package/dist/embedding/presets/manifest.d.ts +20 -7
- package/dist/embedding/presets/manifest.d.ts.map +1 -1
- package/dist/embedding/presets/manifest.js.map +1 -1
- package/dist/embedding/sqlite-vec-backend.d.ts.map +1 -1
- package/dist/embedding/sqlite-vec-backend.js +7 -1
- package/dist/embedding/sqlite-vec-backend.js.map +1 -1
- package/dist/embedding/store.d.ts.map +1 -1
- package/dist/embedding/store.js +2 -0
- package/dist/embedding/store.js.map +1 -1
- package/dist/embedding/types.d.ts +2 -0
- package/dist/embedding/types.d.ts.map +1 -1
- package/dist/ledger/checkpoint-contract.d.ts +6 -6
- package/dist/mcp/chatgpt-contract.d.ts +156 -0
- package/dist/mcp/chatgpt-contract.d.ts.map +1 -0
- package/dist/mcp/chatgpt-contract.js +76 -0
- package/dist/mcp/chatgpt-contract.js.map +1 -0
- package/dist/mcp/chatgpt-runtime.d.ts +14 -0
- package/dist/mcp/chatgpt-runtime.d.ts.map +1 -0
- package/dist/mcp/chatgpt-runtime.js +106 -0
- package/dist/mcp/chatgpt-runtime.js.map +1 -0
- package/dist/mcp/chatgpt-server.d.ts +6 -0
- package/dist/mcp/chatgpt-server.d.ts.map +1 -0
- package/dist/mcp/chatgpt-server.js +81 -0
- package/dist/mcp/chatgpt-server.js.map +1 -0
- package/dist/mcp/request-deadline.d.ts +1 -1
- package/dist/mcp/request-deadline.d.ts.map +1 -1
- package/dist/mcp/request-deadline.js +3 -0
- package/dist/mcp/request-deadline.js.map +1 -1
- package/dist/mcp/runtime-owner.d.ts.map +1 -1
- package/dist/mcp/runtime-owner.js +7 -0
- package/dist/mcp/runtime-owner.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +35 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/stdio-runner.d.ts +6 -0
- package/dist/mcp/stdio-runner.d.ts.map +1 -0
- package/dist/mcp/stdio-runner.js +41 -0
- package/dist/mcp/stdio-runner.js.map +1 -0
- package/dist/memory/checkpoint-contract.d.ts +9 -9
- package/dist/memory/curator.d.ts.map +1 -1
- package/dist/memory/curator.js +2 -0
- package/dist/memory/curator.js.map +1 -1
- package/dist/memory/entries.d.ts.map +1 -1
- package/dist/memory/entries.js +2 -0
- package/dist/memory/entries.js.map +1 -1
- package/dist/memory/federated-retrieval.d.ts +16 -2
- package/dist/memory/federated-retrieval.d.ts.map +1 -1
- package/dist/memory/federated-retrieval.js +229 -45
- package/dist/memory/federated-retrieval.js.map +1 -1
- package/dist/memory/global-conversation-query.d.ts +35 -0
- package/dist/memory/global-conversation-query.d.ts.map +1 -0
- package/dist/memory/global-conversation-query.js +60 -0
- package/dist/memory/global-conversation-query.js.map +1 -0
- package/dist/memory/hybrid-retrieval.d.ts +18 -2
- package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
- package/dist/memory/hybrid-retrieval.js +180 -9
- package/dist/memory/hybrid-retrieval.js.map +1 -1
- package/dist/memory/index-service.d.ts +103 -0
- package/dist/memory/index-service.d.ts.map +1 -0
- package/dist/memory/index-service.js +196 -0
- package/dist/memory/index-service.js.map +1 -0
- package/dist/memory/index-state.d.ts +56 -0
- package/dist/memory/index-state.d.ts.map +1 -0
- package/dist/memory/index-state.js +100 -0
- package/dist/memory/index-state.js.map +1 -0
- package/dist/memory/interaction-capture.d.ts.map +1 -1
- package/dist/memory/interaction-capture.js +6 -3
- package/dist/memory/interaction-capture.js.map +1 -1
- package/dist/memory/interaction-contract.d.ts +30 -0
- package/dist/memory/interaction-contract.d.ts.map +1 -1
- package/dist/memory/interaction-contract.js +38 -0
- package/dist/memory/interaction-contract.js.map +1 -1
- package/dist/memory/interaction-recall.d.ts +14 -1
- package/dist/memory/interaction-recall.d.ts.map +1 -1
- package/dist/memory/interaction-recall.js +48 -42
- package/dist/memory/interaction-recall.js.map +1 -1
- package/dist/memory/lesson-derivation.d.ts +79 -0
- package/dist/memory/lesson-derivation.d.ts.map +1 -0
- package/dist/memory/lesson-derivation.js +302 -0
- package/dist/memory/lesson-derivation.js.map +1 -0
- package/dist/memory/lesson-reinforcement.d.ts.map +1 -1
- package/dist/memory/lesson-reinforcement.js +7 -4
- package/dist/memory/lesson-reinforcement.js.map +1 -1
- package/dist/memory/lifecycle.d.ts.map +1 -1
- package/dist/memory/lifecycle.js +4 -0
- package/dist/memory/lifecycle.js.map +1 -1
- package/dist/memory/retrieval.d.ts +14 -0
- package/dist/memory/retrieval.d.ts.map +1 -1
- package/dist/memory/retrieval.js +107 -13
- package/dist/memory/retrieval.js.map +1 -1
- package/dist/memory/scoped-memory.d.ts +5 -0
- package/dist/memory/scoped-memory.d.ts.map +1 -1
- package/dist/memory/scoped-memory.js +3 -0
- package/dist/memory/scoped-memory.js.map +1 -1
- package/dist/memory/search-extension-config.d.ts +5 -0
- package/dist/memory/search-extension-config.d.ts.map +1 -0
- package/dist/memory/search-extension-config.js +20 -0
- package/dist/memory/search-extension-config.js.map +1 -0
- package/dist/memory/temporal.d.ts +18 -0
- package/dist/memory/temporal.d.ts.map +1 -0
- package/dist/memory/temporal.js +128 -0
- package/dist/memory/temporal.js.map +1 -0
- package/dist/reranker/config.d.ts +15 -0
- package/dist/reranker/config.d.ts.map +1 -0
- package/dist/reranker/config.js +48 -0
- package/dist/reranker/config.js.map +1 -0
- package/dist/reranker/preset.d.ts +12 -0
- package/dist/reranker/preset.d.ts.map +1 -0
- package/dist/reranker/preset.js +102 -0
- package/dist/reranker/preset.js.map +1 -0
- package/dist/reranker/runtime.d.ts +40 -0
- package/dist/reranker/runtime.d.ts.map +1 -0
- package/dist/reranker/runtime.js +324 -0
- package/dist/reranker/runtime.js.map +1 -0
- package/dist/reranker/service.d.ts +36 -0
- package/dist/reranker/service.d.ts.map +1 -0
- package/dist/reranker/service.js +163 -0
- package/dist/reranker/service.js.map +1 -0
- package/dist/reranker/setup.d.ts +30 -0
- package/dist/reranker/setup.d.ts.map +1 -0
- package/dist/reranker/setup.js +50 -0
- package/dist/reranker/setup.js.map +1 -0
- package/dist/reranker/worker.d.ts +2 -0
- package/dist/reranker/worker.d.ts.map +1 -0
- package/dist/reranker/worker.js +115 -0
- package/dist/reranker/worker.js.map +1 -0
- package/dist/serialization/validate.d.ts.map +1 -1
- package/dist/serialization/validate.js +29 -1
- package/dist/serialization/validate.js.map +1 -1
- package/dist/server/routes/task-assurance.d.ts.map +1 -1
- package/dist/server/routes/task-assurance.js +11 -2
- package/dist/server/routes/task-assurance.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +47 -11
- package/dist/web/server.js.map +1 -1
- package/docs/README.ja.md +3 -0
- package/docs/README.md +3 -0
- package/docs/chatgpt-validation.md +40 -0
- package/docs/chatgpt.ja.md +41 -0
- package/docs/chatgpt.md +41 -0
- package/docs/cli-contract.md +11 -0
- package/docs/client-compatibility.md +9 -0
- package/docs/memory-assurance.md +5 -0
- package/docs/memory-index-evaluation-2026-09-30.md +50 -0
- package/docs/memory-index.md +138 -0
- package/migrations/007_revision_bound_lesson_sources.sql +33 -0
- package/migrations/008_memory_index.sql +39 -0
- package/package.json +3 -2
- package/skills/kiokuko-soul/SKILL.md +13 -0
- package/templates/chatgpt/memory-policy.json +4 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { withImmediateTransaction } from '../db/transaction.js';
|
|
3
|
+
import { KiokukoError } from '../errors.js';
|
|
4
|
+
import { LedgerStore } from '../ledger/store.js';
|
|
5
|
+
import { canonicalJson } from '../serialization/validate.js';
|
|
6
|
+
import { readEntry, recordEntryInTransaction } from './entries.js';
|
|
7
|
+
import { memoryDeriveLessonInputSchema } from './interaction-contract.js';
|
|
8
|
+
import { findSecretInValue } from './secrets.js';
|
|
9
|
+
import { resolveProjectWorkspaceReadOnly } from './workspaces.js';
|
|
10
|
+
function conflict(message) {
|
|
11
|
+
throw new KiokukoError('CONFLICT', message);
|
|
12
|
+
}
|
|
13
|
+
function digest(value) {
|
|
14
|
+
return createHash('sha256').update(canonicalJson(value)).digest('hex');
|
|
15
|
+
}
|
|
16
|
+
/** Only lessons with intact, revision-current source receipts may be delivered. */
|
|
17
|
+
export function isDeliverableDerivedLesson(database, entry) {
|
|
18
|
+
if (entry.provenance.type !== 'agent_derived_lesson')
|
|
19
|
+
return true;
|
|
20
|
+
if (entry.status === 'superseded')
|
|
21
|
+
return false;
|
|
22
|
+
const row = database.prepare(`
|
|
23
|
+
SELECT o.operation_id, o.input_hash, o.run_id, o.delivery_id, o.workspace,
|
|
24
|
+
o.output_entry_id, o.output_revision, o.output_content_hash
|
|
25
|
+
FROM lesson_derivation_operations o
|
|
26
|
+
JOIN lesson_derivation_sources s ON s.operation_id = o.operation_id
|
|
27
|
+
WHERE o.output_entry_id = ? AND o.output_revision = ? AND o.workspace = ?
|
|
28
|
+
GROUP BY o.operation_id
|
|
29
|
+
ORDER BY o.operation_id ASC
|
|
30
|
+
`).all(entry.id, entry.revision, entry.workspace);
|
|
31
|
+
return row.some((operation) => operation.output_content_hash === entry.contentHash
|
|
32
|
+
&& entry.provenance.runId === operation.run_id
|
|
33
|
+
&& entry.provenance.deliveryId === operation.delivery_id
|
|
34
|
+
&& currentSourceIsValidForOperation(database, operation));
|
|
35
|
+
}
|
|
36
|
+
export function readDeliverableLessonSourceReferences(database, entry) {
|
|
37
|
+
if (entry.provenance.type !== 'agent_derived_lesson' || entry.status === 'superseded')
|
|
38
|
+
return [];
|
|
39
|
+
const operations = database.prepare(`
|
|
40
|
+
SELECT o.operation_id, o.input_hash, o.run_id, o.delivery_id, o.workspace,
|
|
41
|
+
o.output_entry_id, o.output_revision, o.output_content_hash
|
|
42
|
+
FROM lesson_derivation_operations o
|
|
43
|
+
WHERE o.output_entry_id = ? AND o.output_revision = ? AND o.workspace = ?
|
|
44
|
+
ORDER BY o.operation_id ASC
|
|
45
|
+
`).all(entry.id, entry.revision, entry.workspace);
|
|
46
|
+
for (const operation of operations) {
|
|
47
|
+
if (operation.output_content_hash !== entry.contentHash
|
|
48
|
+
|| entry.provenance.runId !== operation.run_id
|
|
49
|
+
|| entry.provenance.deliveryId !== operation.delivery_id
|
|
50
|
+
|| !currentSourceIsValidForOperation(database, operation))
|
|
51
|
+
continue;
|
|
52
|
+
return database.prepare(`
|
|
53
|
+
SELECT source_workspace AS workspace, source_entry_id AS entryId,
|
|
54
|
+
source_revision AS revision, source_content_hash AS contentHash, source_role AS role
|
|
55
|
+
FROM lesson_derivation_sources
|
|
56
|
+
WHERE operation_id = ?
|
|
57
|
+
ORDER BY source_entry_id, source_revision
|
|
58
|
+
`).all(operation.operation_id);
|
|
59
|
+
}
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
function sameLessonPayload(left, right) {
|
|
63
|
+
const semanticScope = (entry) => {
|
|
64
|
+
const value = { ...entry.scope };
|
|
65
|
+
delete value.schemaVersion;
|
|
66
|
+
return value;
|
|
67
|
+
};
|
|
68
|
+
return left.workspace === right.workspace && left.kind === right.kind
|
|
69
|
+
&& left.title === right.title && left.summary === right.summary && left.body === right.body
|
|
70
|
+
&& canonicalJson(left.tags) === canonicalJson(right.tags)
|
|
71
|
+
&& canonicalJson(semanticScope(left)) === canonicalJson(semanticScope(right));
|
|
72
|
+
}
|
|
73
|
+
function hasContradictionLink(database, left, right) {
|
|
74
|
+
return database.prepare(`SELECT 1 AS present FROM entry_links
|
|
75
|
+
WHERE relation = 'contradicts'
|
|
76
|
+
AND ((from_entry_id = ? AND to_entry_id = ?) OR (from_entry_id = ? AND to_entry_id = ?))
|
|
77
|
+
LIMIT 1`).get(left, right, right, left) !== undefined;
|
|
78
|
+
}
|
|
79
|
+
/** Suppress only an exact duplicate that is co-deliverable with its revision-verified source. */
|
|
80
|
+
export function deduplicateDeliverableLessonSources(database, candidates, mode) {
|
|
81
|
+
const byRevision = new Map(candidates.map((entry) => [`${entry.workspace}\u0000${entry.id}\u0000${entry.revision}`, entry]));
|
|
82
|
+
const sourceReferences = new Map();
|
|
83
|
+
if (mode !== 'off') {
|
|
84
|
+
for (const entry of candidates) {
|
|
85
|
+
const references = readDeliverableLessonSourceReferences(database, entry);
|
|
86
|
+
if (references.length > 0)
|
|
87
|
+
sourceReferences.set(entry.id, references);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const suppressed = new Map();
|
|
91
|
+
const trustRank = (entry) => ({ system_verified: 4, source_verified: 3, user_asserted: 2, untrusted: 1 })[entry.trustLevel];
|
|
92
|
+
const statusRank = (entry) => ({ verified: 2, candidate: 1, superseded: 0 })[entry.status];
|
|
93
|
+
let duplicatePairs = 0;
|
|
94
|
+
for (const derived of candidates) {
|
|
95
|
+
const references = sourceReferences.get(derived.id);
|
|
96
|
+
if (references === undefined || references.length !== 1)
|
|
97
|
+
continue;
|
|
98
|
+
const reference = references[0];
|
|
99
|
+
if (reference.role !== 'experience' && reference.role !== 'evidence')
|
|
100
|
+
continue;
|
|
101
|
+
const source = byRevision.get(`${reference.workspace}\u0000${reference.entryId}\u0000${reference.revision}`);
|
|
102
|
+
if (source === undefined || !sameLessonPayload(derived, source)
|
|
103
|
+
|| hasContradictionLink(database, derived.id, source.id))
|
|
104
|
+
continue;
|
|
105
|
+
duplicatePairs += 1;
|
|
106
|
+
const keepSource = statusRank(source) > statusRank(derived)
|
|
107
|
+
|| statusRank(source) === statusRank(derived) && trustRank(source) > trustRank(derived);
|
|
108
|
+
const removed = keepSource ? derived : source;
|
|
109
|
+
const retained = keepSource ? source : derived;
|
|
110
|
+
suppressed.set(removed.id, { entryId: removed.id, revision: removed.revision,
|
|
111
|
+
retainedEntryId: retained.id, retainedRevision: retained.revision });
|
|
112
|
+
}
|
|
113
|
+
const suppressedItems = [...suppressed.values()];
|
|
114
|
+
return {
|
|
115
|
+
entries: mode === 'active' ? candidates.filter((entry) => !suppressed.has(entry.id)) : [...candidates],
|
|
116
|
+
sourceReferences,
|
|
117
|
+
suppressed: suppressedItems,
|
|
118
|
+
diagnostics: { mode, candidateCount: candidates.length, duplicatePairs, suppressedCount: mode === 'active' ? suppressedItems.length : 0 },
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export function formatLessonSourceReferences(references) {
|
|
122
|
+
if (references.length === 0)
|
|
123
|
+
return '';
|
|
124
|
+
return `\n\nRevision-verified sources:\n${references.map((source) => `- ${source.workspace}/${source.entryId}@${source.revision} sha256:${source.contentHash} (${source.role})`).join('\n')}`;
|
|
125
|
+
}
|
|
126
|
+
function currentSourceIsValidForOperation(database, operation) {
|
|
127
|
+
const sources = database.prepare(`
|
|
128
|
+
SELECT s.source_workspace, s.source_entry_id, s.source_revision, s.source_content_hash,
|
|
129
|
+
e.workspace, e.current_revision, e.status, r.content_hash,
|
|
130
|
+
EXISTS (
|
|
131
|
+
SELECT 1 FROM context_delivery_entries d
|
|
132
|
+
WHERE d.delivery_id = ? AND d.entry_id = s.source_entry_id
|
|
133
|
+
AND d.entry_revision = s.source_revision
|
|
134
|
+
) AS delivered
|
|
135
|
+
FROM lesson_derivation_sources s
|
|
136
|
+
LEFT JOIN entries e ON e.id = s.source_entry_id
|
|
137
|
+
LEFT JOIN entry_revisions r ON r.entry_id = s.source_entry_id AND r.revision = s.source_revision
|
|
138
|
+
WHERE s.operation_id = ?
|
|
139
|
+
ORDER BY s.source_entry_id, s.source_revision
|
|
140
|
+
`).all(operation.delivery_id, operation.operation_id);
|
|
141
|
+
if (sources.length === 0 || sources.length > 16)
|
|
142
|
+
return false;
|
|
143
|
+
const delivery = database.prepare(`
|
|
144
|
+
SELECT 1 AS present FROM context_deliveries cd
|
|
145
|
+
JOIN ledger_runs lr ON lr.run_id = cd.run_id
|
|
146
|
+
WHERE cd.delivery_id = ? AND cd.run_id = ? AND lr.workspace = ?
|
|
147
|
+
`).get(operation.delivery_id, operation.run_id, operation.workspace);
|
|
148
|
+
return delivery !== undefined && sources.every((source) => source.source_workspace === operation.workspace
|
|
149
|
+
&& source.workspace === source.source_workspace
|
|
150
|
+
&& source.current_revision === source.source_revision
|
|
151
|
+
&& source.status !== 'superseded'
|
|
152
|
+
&& source.content_hash === source.source_content_hash
|
|
153
|
+
&& source.delivered === 1);
|
|
154
|
+
}
|
|
155
|
+
function replayReceipt(database, operationId, inputHash) {
|
|
156
|
+
const stored = database.prepare(`
|
|
157
|
+
SELECT input_hash, run_id, delivery_id, workspace, output_entry_id, output_revision, output_content_hash
|
|
158
|
+
FROM lesson_derivation_operations WHERE operation_id = ?
|
|
159
|
+
`).get(operationId);
|
|
160
|
+
if (stored === undefined)
|
|
161
|
+
return undefined;
|
|
162
|
+
if (stored.input_hash !== inputHash)
|
|
163
|
+
conflict('Derivation operation ID was reused with different input');
|
|
164
|
+
const state = database.prepare('SELECT current_revision, status FROM entries WHERE id = ? AND workspace = ?')
|
|
165
|
+
.get(stored.output_entry_id, stored.workspace);
|
|
166
|
+
const output = state !== undefined && state.current_revision === stored.output_revision
|
|
167
|
+
? readEntry(database, { workspace: stored.workspace, entryId: stored.output_entry_id })
|
|
168
|
+
: undefined;
|
|
169
|
+
const valid = output !== undefined && output.contentHash === stored.output_content_hash
|
|
170
|
+
&& isDeliverableDerivedLesson(database, output);
|
|
171
|
+
const availability = state === undefined ? 'unavailable'
|
|
172
|
+
: state.status === 'superseded' ? 'superseded'
|
|
173
|
+
: state.current_revision !== stored.output_revision ? 'changed'
|
|
174
|
+
: valid ? 'current' : 'sources_invalid';
|
|
175
|
+
return { operationId, entryId: stored.output_entry_id, revision: stored.output_revision,
|
|
176
|
+
workspace: stored.workspace, outcome: 'replayed', availability };
|
|
177
|
+
}
|
|
178
|
+
function assertWorkspaceStillBound(database, repositoryRoot, workspace, repositoryId) {
|
|
179
|
+
const row = database.prepare(`
|
|
180
|
+
SELECT r.workspace, r.repository_id
|
|
181
|
+
FROM repository_locations l JOIN repositories r ON r.repository_id = l.repository_id
|
|
182
|
+
WHERE l.canonical_root = ?
|
|
183
|
+
`).get(repositoryRoot);
|
|
184
|
+
if (row?.workspace !== workspace || row.repository_id !== repositoryId) {
|
|
185
|
+
conflict('Lesson project binding changed');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/** Save a connected agent's lesson proposal as an untrusted candidate with atomic source receipts. */
|
|
189
|
+
export async function deriveLessonCandidate(database, raw, options) {
|
|
190
|
+
const parsed = memoryDeriveLessonInputSchema.safeParse(raw);
|
|
191
|
+
if (!parsed.success)
|
|
192
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Lesson derivation input is invalid');
|
|
193
|
+
const input = parsed.data;
|
|
194
|
+
if (findSecretInValue(input))
|
|
195
|
+
throw new KiokukoError('SECURITY_REJECTION', 'Lesson derivation input resembles a secret');
|
|
196
|
+
const mode = options.mode ?? 'off';
|
|
197
|
+
if (mode === 'off')
|
|
198
|
+
return { enabled: false, mode, items: [] };
|
|
199
|
+
const project = await resolveProjectWorkspaceReadOnly(database, input.cwd ?? options.cwd);
|
|
200
|
+
if (project === undefined)
|
|
201
|
+
throw new KiokukoError('NOT_FOUND', 'Lesson derivation requires a registered project workspace');
|
|
202
|
+
const normalized = {
|
|
203
|
+
...input,
|
|
204
|
+
lesson: { ...input.lesson, title: input.lesson.title.normalize('NFKC'), body: input.lesson.body.normalize('NFKC'),
|
|
205
|
+
...(input.lesson.summary === undefined ? {} : { summary: input.lesson.summary.normalize('NFKC') }) },
|
|
206
|
+
sources: [...input.sources].sort((a, b) => a.entryId.localeCompare(b.entryId) || a.revision - b.revision),
|
|
207
|
+
};
|
|
208
|
+
const inputHash = digest({ normalized, runId: input.runId, deliveryId: input.deliveryId,
|
|
209
|
+
workspace: project.workspace, repositoryId: project.repositoryId });
|
|
210
|
+
const now = options.now?.() ?? new Date().toISOString();
|
|
211
|
+
return withImmediateTransaction(database, () => {
|
|
212
|
+
const replay = replayReceipt(database, input.operationId, inputHash);
|
|
213
|
+
if (replay !== undefined)
|
|
214
|
+
return replay;
|
|
215
|
+
assertWorkspaceStillBound(database, project.repositoryRoot, project.workspace, project.repositoryId);
|
|
216
|
+
const run = database.prepare(`
|
|
217
|
+
SELECT r.workspace, r.status, r.client_kind, cd.run_id AS delivery_run_id
|
|
218
|
+
FROM ledger_runs r
|
|
219
|
+
JOIN run_intakes i ON i.run_id = r.run_id
|
|
220
|
+
JOIN akinator_sessions s ON s.id = i.session_id
|
|
221
|
+
JOIN context_deliveries cd ON cd.run_id = r.run_id AND cd.delivery_id = ?
|
|
222
|
+
WHERE r.run_id = ? AND s.status IN ('ready', 'exhausted') AND i.finalized_at IS NOT NULL
|
|
223
|
+
`).get(input.deliveryId, input.runId);
|
|
224
|
+
if (run === undefined || run.workspace !== project.workspace || run.delivery_run_id !== input.runId
|
|
225
|
+
|| run.status !== 'active' || run.client_kind !== options.clientKind) {
|
|
226
|
+
conflict('Lesson derivation requires the active completed-intake run and its delivery in this project');
|
|
227
|
+
}
|
|
228
|
+
const sourceRecords = input.sources.map((source) => {
|
|
229
|
+
if (source.workspace !== project.workspace)
|
|
230
|
+
conflict('Lesson sources must belong to the active project workspace');
|
|
231
|
+
const current = readEntry(database, { workspace: project.workspace, entryId: source.entryId });
|
|
232
|
+
if (current.status === 'superseded' || current.revision !== source.revision || current.contentHash !== source.contentHash) {
|
|
233
|
+
conflict('Lesson source revision or content hash is stale');
|
|
234
|
+
}
|
|
235
|
+
const delivered = database.prepare(`
|
|
236
|
+
SELECT 1 AS present FROM context_delivery_entries
|
|
237
|
+
WHERE delivery_id = ? AND entry_id = ? AND entry_revision = ?
|
|
238
|
+
`).get(input.deliveryId, source.entryId, source.revision);
|
|
239
|
+
if (delivered === undefined)
|
|
240
|
+
conflict('Lesson source was not present in the active run delivery');
|
|
241
|
+
return { input: source, entry: current };
|
|
242
|
+
});
|
|
243
|
+
const sourceSetHash = digest(sourceRecords.map(({ input: source }) => ({
|
|
244
|
+
workspace: source.workspace, entryId: source.entryId, revision: source.revision,
|
|
245
|
+
contentHash: source.contentHash, role: source.role,
|
|
246
|
+
})).sort((a, b) => a.entryId.localeCompare(b.entryId) || a.revision - b.revision));
|
|
247
|
+
if (mode === 'observe')
|
|
248
|
+
return { enabled: true, mode, outcome: 'would_save',
|
|
249
|
+
sourceCount: sourceRecords.length, sourceSetHash, status: 'candidate', trustLevel: 'untrusted' };
|
|
250
|
+
const entry = recordEntryInTransaction(database, {
|
|
251
|
+
workspace: project.workspace,
|
|
252
|
+
kind: 'lesson', status: 'candidate', trustLevel: 'untrusted', confidence: 0.5,
|
|
253
|
+
title: normalized.lesson.title, body: normalized.lesson.body,
|
|
254
|
+
...(normalized.lesson.summary === undefined ? {} : { summary: normalized.lesson.summary }),
|
|
255
|
+
...(normalized.lesson.tags === undefined ? {} : { tags: normalized.lesson.tags }),
|
|
256
|
+
scope: { visibility: 'project', retrievalScope: 'project-only', repositoryId: project.repositoryId },
|
|
257
|
+
provenance: { type: 'agent_derived_lesson', reference: 'context_delivery', runId: input.runId,
|
|
258
|
+
deliveryId: input.deliveryId, evidenceIds: sourceRecords.map(({ entry: source }) => source.id), sourceSetHash },
|
|
259
|
+
createdBy: 'kiokuko-mcp', actor: 'kiokuko-mcp',
|
|
260
|
+
}, { now });
|
|
261
|
+
if (sourceRecords.some(({ entry: source }) => source.id === entry.id)) {
|
|
262
|
+
conflict('Lesson cannot cite itself as a source');
|
|
263
|
+
}
|
|
264
|
+
for (const { entry: source } of sourceRecords) {
|
|
265
|
+
const cyclic = database.prepare(`
|
|
266
|
+
WITH RECURSIVE reachable(id) AS (
|
|
267
|
+
SELECT to_entry_id FROM entry_links WHERE from_entry_id = ? AND relation = 'derived_from'
|
|
268
|
+
UNION
|
|
269
|
+
SELECT link.to_entry_id FROM entry_links link JOIN reachable r ON link.from_entry_id = r.id
|
|
270
|
+
WHERE link.relation = 'derived_from'
|
|
271
|
+
) SELECT 1 AS present FROM reachable WHERE id = ? LIMIT 1
|
|
272
|
+
`).get(source.id, entry.id);
|
|
273
|
+
if (cyclic !== undefined)
|
|
274
|
+
conflict('Lesson derivation would create a source cycle');
|
|
275
|
+
}
|
|
276
|
+
database.prepare(`
|
|
277
|
+
INSERT INTO lesson_derivation_operations (
|
|
278
|
+
operation_id, input_hash, run_id, delivery_id, workspace,
|
|
279
|
+
output_entry_id, output_revision, output_content_hash, created_at
|
|
280
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
281
|
+
`).run(input.operationId, inputHash, input.runId, input.deliveryId, project.workspace, entry.id, entry.revision, entry.contentHash, now);
|
|
282
|
+
for (const { input: source } of sourceRecords) {
|
|
283
|
+
database.prepare(`
|
|
284
|
+
INSERT INTO lesson_derivation_sources (
|
|
285
|
+
operation_id, output_entry_id, output_revision, source_workspace,
|
|
286
|
+
source_entry_id, source_revision, source_content_hash, source_role
|
|
287
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
288
|
+
`).run(input.operationId, entry.id, entry.revision, source.workspace, source.entryId, source.revision, source.contentHash, source.role);
|
|
289
|
+
database.prepare(`
|
|
290
|
+
INSERT OR IGNORE INTO entry_links (from_entry_id, to_entry_id, relation, created_at, created_by)
|
|
291
|
+
VALUES (?, ?, 'derived_from', ?, 'kiokuko-mcp')
|
|
292
|
+
`).run(entry.id, source.entryId, now);
|
|
293
|
+
}
|
|
294
|
+
new LedgerStore(database).appendBatchInTransaction(input.runId, { events: [{ eventType: 'memory.proposed', actor: 'kiokuko-mcp',
|
|
295
|
+
payload: { entryId: entry.id, revision: entry.revision, scope: project.workspace, outcome: 'derived_candidate',
|
|
296
|
+
deliveryId: input.deliveryId, sourceIds: sourceRecords.map(({ entry: source }) => source.id) } }] });
|
|
297
|
+
return { operationId: input.operationId, entryId: entry.id, revision: entry.revision,
|
|
298
|
+
workspace: entry.workspace, outcome: 'created', availability: 'current',
|
|
299
|
+
status: entry.status, trustLevel: entry.trustLevel, reinforced: false };
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=lesson-derivation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-derivation.js","sourceRoot":"","sources":["../../src/memory/lesson-derivation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-reinforcement.d.ts","sourceRoot":"","sources":["../../src/memory/lesson-reinforcement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"lesson-reinforcement.d.ts","sourceRoot":"","sources":["../../src/memory/lesson-reinforcement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC;CACnC,CAAC;AAaF,yFAAyF;AACzF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAMrG;AAED,6FAA6F;AAC7F,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;;qBAzBhG,MAAM;cACb,QAAQ,GAAG,YAAY;EA4ClC"}
|
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
import { KiokukoError } from '../errors.js';
|
|
2
2
|
import { canonicalContentHash } from '../serialization/validate.js';
|
|
3
|
+
import { isDeliverableDerivedLesson } from './lesson-derivation.js';
|
|
3
4
|
/** Titles, subjects and transport provenance do not change the identity of a lesson. */
|
|
4
|
-
function lessonFingerprint(entry) {
|
|
5
|
+
function lessonFingerprint(database, entry) {
|
|
5
6
|
if (entry.kind !== 'lesson' || entry.status === 'superseded'
|
|
6
7
|
|| entry.scope.visibility !== 'project' || entry.workspace === 'global'
|
|
7
|
-
|| !['interaction_capture', 'agent_checkpoint'].includes(String(entry.provenance.type))
|
|
8
|
+
|| !['interaction_capture', 'agent_checkpoint', 'agent_derived_lesson'].includes(String(entry.provenance.type))
|
|
9
|
+
|| (entry.provenance.type === 'agent_derived_lesson'
|
|
10
|
+
&& !isDeliverableDerivedLesson(database, entry)))
|
|
8
11
|
return null;
|
|
9
12
|
return canonicalContentHash({ version: 1, workspace: entry.workspace,
|
|
10
13
|
body: entry.body.normalize('NFKC').trim(), applicability: entry.scope.applicability ?? null });
|
|
11
14
|
}
|
|
12
15
|
/** Current-revision observations only; repeated reports confer priority, never trust. */
|
|
13
16
|
export function lessonReinforcement(database, entry) {
|
|
14
|
-
const fingerprint = lessonFingerprint(entry);
|
|
17
|
+
const fingerprint = lessonFingerprint(database, entry);
|
|
15
18
|
const independentRuns = fingerprint === null ? 0 : database.prepare('SELECT COUNT(*) AS count FROM lesson_observations WHERE fingerprint = ?').get(fingerprint).count;
|
|
16
19
|
return { independentRuns, priority: independentRuns >= 2 ? 'reinforced' : 'normal' };
|
|
17
20
|
}
|
|
18
21
|
/** Record one observation per logical root run inside the capture/checkpoint transaction. */
|
|
19
22
|
export function observeLessonInTransaction(database, entry, runId, now) {
|
|
20
|
-
const fingerprint = lessonFingerprint(entry);
|
|
23
|
+
const fingerprint = lessonFingerprint(database, entry);
|
|
21
24
|
const before = lessonReinforcement(database, entry);
|
|
22
25
|
if (fingerprint === null)
|
|
23
26
|
return { ...before, promoted: false };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-reinforcement.js","sourceRoot":"","sources":["../../src/memory/lesson-reinforcement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"lesson-reinforcement.js","sourceRoot":"","sources":["../../src/memory/lesson-reinforcement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/memory/lifecycle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/memory/lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3D,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,YAAY,CAAC;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAQD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,WAAW,CAgBvF;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAkBxG;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAE3F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAU5E"}
|
package/dist/memory/lifecycle.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assertNotIndexArtifact } from './index-state.js';
|
|
1
2
|
import { withImmediateTransaction } from '../db/transaction.js';
|
|
2
3
|
import { KiokukoError } from '../errors.js';
|
|
3
4
|
import { readEntry } from './entries.js';
|
|
@@ -13,6 +14,7 @@ export function promoteEntry(database, input) {
|
|
|
13
14
|
const actor = input.actor ?? 'kiokuko-cli';
|
|
14
15
|
return withImmediateTransaction(database, () => {
|
|
15
16
|
const current = readEntry(database, { workspace: input.workspace, entryId: input.entryId });
|
|
17
|
+
assertNotIndexArtifact(current);
|
|
16
18
|
const managedExternal = database.prepare('SELECT 1 AS present FROM external_skill_entries WHERE entry_id = ? LIMIT 1').get(input.entryId);
|
|
17
19
|
if (managedExternal)
|
|
18
20
|
throw new KiokukoError('CONFLICT', 'Managed external Skill entries cannot be promoted');
|
|
@@ -33,7 +35,9 @@ export function supersedeEntryInTransaction(database, input) {
|
|
|
33
35
|
const now = input.now ?? new Date().toISOString();
|
|
34
36
|
const actor = input.actor ?? 'kiokuko-cli';
|
|
35
37
|
const oldEntry = readEntry(database, { workspace: input.workspace, entryId: input.oldEntryId });
|
|
38
|
+
assertNotIndexArtifact(oldEntry);
|
|
36
39
|
const replacement = readEntry(database, { workspace: input.workspace, entryId: input.replacementEntryId });
|
|
40
|
+
assertNotIndexArtifact(replacement);
|
|
37
41
|
const managedExternal = database.prepare('SELECT 1 AS present FROM external_skill_entries WHERE entry_id IN (?, ?) LIMIT 1').get(input.oldEntryId, input.replacementEntryId);
|
|
38
42
|
if (managedExternal)
|
|
39
43
|
throw new KiokukoError('CONFLICT', 'Managed external Skill entries cannot be superseded');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/memory/lifecycle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/memory/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,10 @@ import type { SqliteDatabase } from '../db/adapter.js';
|
|
|
2
2
|
import { type EntryRecord } from './entries.js';
|
|
3
3
|
import { type EntryKind, type EntryStatus } from '../serialization/validate.js';
|
|
4
4
|
import { type HybridSearchRuntime } from './hybrid-retrieval.js';
|
|
5
|
+
import type { TemporalConstraint } from './temporal.js';
|
|
6
|
+
import type { RelatedSearchMode } from './hybrid-retrieval.js';
|
|
7
|
+
import { type RerankerDiagnostics } from '../reranker/service.js';
|
|
8
|
+
import { type LessonDeduplicationResult } from './lesson-derivation.js';
|
|
5
9
|
export interface SearchEntriesInput {
|
|
6
10
|
workspace: string;
|
|
7
11
|
query: string;
|
|
@@ -11,11 +15,16 @@ export interface SearchEntriesInput {
|
|
|
11
15
|
tag?: string;
|
|
12
16
|
includeSuperseded?: boolean;
|
|
13
17
|
subjects?: readonly string[];
|
|
18
|
+
temporal?: TemporalConstraint;
|
|
19
|
+
relatedMode?: RelatedSearchMode;
|
|
20
|
+
relatedSeedLimit?: number;
|
|
21
|
+
relatedCandidateLimit?: number;
|
|
14
22
|
}
|
|
15
23
|
export interface SearchResult {
|
|
16
24
|
items: EntryRecord[];
|
|
17
25
|
count: number;
|
|
18
26
|
truncated: boolean;
|
|
27
|
+
rerankerDiagnostics?: RerankerDiagnostics;
|
|
19
28
|
}
|
|
20
29
|
export interface RecallEntriesInput extends SearchEntriesInput {
|
|
21
30
|
maxChars?: number;
|
|
@@ -34,12 +43,15 @@ export interface RecallItem {
|
|
|
34
43
|
untrusted: true;
|
|
35
44
|
instructions: false;
|
|
36
45
|
};
|
|
46
|
+
selectionReasons?: string[];
|
|
37
47
|
}
|
|
38
48
|
export interface RecallResult {
|
|
39
49
|
items: RecallItem[];
|
|
40
50
|
count: number;
|
|
41
51
|
characterCount: number;
|
|
42
52
|
truncated: boolean;
|
|
53
|
+
rerankerDiagnostics?: RerankerDiagnostics;
|
|
54
|
+
lessonDeduplicationDiagnostics?: LessonDeduplicationResult['diagnostics'];
|
|
43
55
|
}
|
|
44
56
|
export interface RankedRecallHit {
|
|
45
57
|
entryId: string;
|
|
@@ -53,5 +65,7 @@ export interface RankedRecallResult {
|
|
|
53
65
|
}
|
|
54
66
|
export declare function rankedEntryHits(database: SqliteDatabase, input: SearchEntriesInput, runtime?: HybridSearchRuntime): RankedRecallResult;
|
|
55
67
|
export declare function searchEntries(database: SqliteDatabase, input: SearchEntriesInput, runtime?: HybridSearchRuntime): SearchResult;
|
|
68
|
+
export declare function searchEntriesWithReranker(database: SqliteDatabase, input: SearchEntriesInput, runtime?: HybridSearchRuntime, signal?: AbortSignal): Promise<SearchResult>;
|
|
56
69
|
export declare function recallEntries(database: SqliteDatabase, input: RecallEntriesInput, runtime?: HybridSearchRuntime): RecallResult;
|
|
70
|
+
export declare function recallEntriesWithReranker(database: SqliteDatabase, input: RecallEntriesInput, runtime?: HybridSearchRuntime, signal?: AbortSignal): Promise<RecallResult>;
|
|
57
71
|
//# sourceMappingURL=retrieval.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../src/memory/retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../src/memory/retrieval.ts"],"names":[],"mappings":"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"}
|