bulkhead-runtime 0.1.0 → 2026.4.5-beta.2
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.md +344 -262
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/index.d.ts +28 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +9 -6
- package/dist/config/index.js.map +1 -1
- package/dist/credentials/store.d.ts.map +1 -1
- package/dist/credentials/store.js +39 -15
- package/dist/credentials/store.js.map +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -1
- package/dist/index.js.map +1 -1
- package/dist/infra/warning-filter.js +1 -1
- package/dist/infra/warning-filter.js.map +1 -1
- package/dist/logging/subsystem.d.ts +15 -1
- package/dist/logging/subsystem.d.ts.map +1 -1
- package/dist/logging/subsystem.js +310 -45
- package/dist/logging/subsystem.js.map +1 -1
- package/dist/memory/embedding-batch.d.ts +38 -0
- package/dist/memory/embedding-batch.d.ts.map +1 -0
- package/dist/memory/embedding-batch.js +253 -0
- package/dist/memory/embedding-batch.js.map +1 -0
- package/dist/memory/embedding-cache.d.ts +16 -0
- package/dist/memory/embedding-cache.d.ts.map +1 -0
- package/dist/memory/embedding-cache.js +113 -0
- package/dist/memory/embedding-cache.js.map +1 -0
- package/dist/memory/embeddings-debug.js +1 -1
- package/dist/memory/embeddings.d.ts +1 -0
- package/dist/memory/embeddings.d.ts.map +1 -1
- package/dist/memory/embeddings.js +115 -92
- package/dist/memory/embeddings.js.map +1 -1
- package/dist/memory/file-indexer.d.ts +26 -0
- package/dist/memory/file-indexer.d.ts.map +1 -0
- package/dist/memory/file-indexer.js +258 -0
- package/dist/memory/file-indexer.js.map +1 -0
- package/dist/memory/hybrid.d.ts.map +1 -1
- package/dist/memory/hybrid.js +6 -2
- package/dist/memory/hybrid.js.map +1 -1
- package/dist/memory/index.d.ts +5 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +5 -2
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/session-indexer.d.ts +41 -0
- package/dist/memory/session-indexer.d.ts.map +1 -0
- package/dist/memory/session-indexer.js +367 -0
- package/dist/memory/session-indexer.js.map +1 -0
- package/dist/memory/simple-manager.d.ts +6 -0
- package/dist/memory/simple-manager.d.ts.map +1 -1
- package/dist/memory/simple-manager.js +35 -12
- package/dist/memory/simple-manager.js.map +1 -1
- package/dist/memory/ssrf.d.ts +18 -0
- package/dist/memory/ssrf.d.ts.map +1 -0
- package/dist/memory/ssrf.js +305 -0
- package/dist/memory/ssrf.js.map +1 -0
- package/dist/package.json +8 -5
- package/dist/platform/platform.d.ts.map +1 -1
- package/dist/platform/platform.js +30 -7
- package/dist/platform/platform.js.map +1 -1
- package/dist/platform/types.d.ts +2 -0
- package/dist/platform/types.d.ts.map +1 -1
- package/dist/runtime/agent.d.ts +8 -0
- package/dist/runtime/agent.d.ts.map +1 -1
- package/dist/runtime/agent.js +194 -46
- package/dist/runtime/agent.js.map +1 -1
- package/dist/runtime/api-key-rotation.d.ts +26 -0
- package/dist/runtime/api-key-rotation.d.ts.map +1 -0
- package/dist/runtime/api-key-rotation.js +174 -0
- package/dist/runtime/api-key-rotation.js.map +1 -0
- package/dist/runtime/context-guard.d.ts +32 -0
- package/dist/runtime/context-guard.d.ts.map +1 -0
- package/dist/runtime/context-guard.js +61 -0
- package/dist/runtime/context-guard.js.map +1 -0
- package/dist/runtime/failover-error.d.ts +62 -0
- package/dist/runtime/failover-error.d.ts.map +1 -0
- package/dist/runtime/failover-error.js +733 -0
- package/dist/runtime/failover-error.js.map +1 -0
- package/dist/runtime/failover-policy.d.ts +5 -0
- package/dist/runtime/failover-policy.d.ts.map +1 -0
- package/dist/runtime/failover-policy.js +18 -0
- package/dist/runtime/failover-policy.js.map +1 -0
- package/dist/runtime/index.d.ts +11 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +11 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory-flush.d.ts +24 -0
- package/dist/runtime/memory-flush.d.ts.map +1 -0
- package/dist/runtime/memory-flush.js +64 -0
- package/dist/runtime/memory-flush.js.map +1 -0
- package/dist/runtime/memory-tools.d.ts +14 -0
- package/dist/runtime/memory-tools.d.ts.map +1 -0
- package/dist/runtime/memory-tools.js +58 -0
- package/dist/runtime/memory-tools.js.map +1 -0
- package/dist/runtime/model-fallback.d.ts +56 -0
- package/dist/runtime/model-fallback.d.ts.map +1 -0
- package/dist/runtime/model-fallback.js +301 -0
- package/dist/runtime/model-fallback.js.map +1 -0
- package/dist/runtime/model-fallback.types.d.ts +14 -0
- package/dist/runtime/model-fallback.types.d.ts.map +1 -0
- package/dist/runtime/model-fallback.types.js +3 -0
- package/dist/runtime/model-fallback.types.js.map +1 -0
- package/dist/runtime/retry.d.ts +24 -0
- package/dist/runtime/retry.d.ts.map +1 -0
- package/dist/runtime/retry.js +102 -0
- package/dist/runtime/retry.js.map +1 -0
- package/dist/runtime/session-pruning.d.ts +22 -0
- package/dist/runtime/session-pruning.d.ts.map +1 -0
- package/dist/runtime/session-pruning.js +118 -0
- package/dist/runtime/session-pruning.js.map +1 -0
- package/dist/runtime/stream-adapters.d.ts +11 -0
- package/dist/runtime/stream-adapters.d.ts.map +1 -0
- package/dist/runtime/stream-adapters.js +46 -0
- package/dist/runtime/stream-adapters.js.map +1 -0
- package/dist/runtime/subagent.d.ts +83 -0
- package/dist/runtime/subagent.d.ts.map +1 -0
- package/dist/runtime/subagent.js +190 -0
- package/dist/runtime/subagent.js.map +1 -0
- package/dist/runtime/tool-result-truncation.d.ts +25 -0
- package/dist/runtime/tool-result-truncation.d.ts.map +1 -0
- package/dist/runtime/tool-result-truncation.js +115 -0
- package/dist/runtime/tool-result-truncation.js.map +1 -0
- package/dist/sandbox/cgroup.d.ts +4 -1
- package/dist/sandbox/cgroup.d.ts.map +1 -1
- package/dist/sandbox/cgroup.js +28 -15
- package/dist/sandbox/cgroup.js.map +1 -1
- package/dist/sandbox/index.d.ts +2 -1
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +2 -1
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/ipc.d.ts +4 -1
- package/dist/sandbox/ipc.d.ts.map +1 -1
- package/dist/sandbox/ipc.js +33 -17
- package/dist/sandbox/ipc.js.map +1 -1
- package/dist/sandbox/manager.d.ts +1 -2
- package/dist/sandbox/manager.d.ts.map +1 -1
- package/dist/sandbox/manager.js +136 -130
- package/dist/sandbox/manager.js.map +1 -1
- package/dist/sandbox/namespace.d.ts +1 -1
- package/dist/sandbox/namespace.d.ts.map +1 -1
- package/dist/sandbox/namespace.js +36 -37
- package/dist/sandbox/namespace.js.map +1 -1
- package/dist/sandbox/rootfs.d.ts +6 -1
- package/dist/sandbox/rootfs.d.ts.map +1 -1
- package/dist/sandbox/rootfs.js +114 -30
- package/dist/sandbox/rootfs.js.map +1 -1
- package/dist/sandbox/seccomp-apply.d.ts +9 -0
- package/dist/sandbox/seccomp-apply.d.ts.map +1 -0
- package/dist/sandbox/seccomp-apply.js +227 -0
- package/dist/sandbox/seccomp-apply.js.map +1 -0
- package/dist/sandbox/seccomp.js +3 -3
- package/dist/sandbox/seccomp.js.map +1 -1
- package/dist/sandbox/types.d.ts +1 -3
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sandbox/worker.d.ts +3 -0
- package/dist/sandbox/worker.d.ts.map +1 -1
- package/dist/sandbox/worker.js +84 -17
- package/dist/sandbox/worker.js.map +1 -1
- package/dist/sessions/index.d.ts +1 -0
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +1 -0
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/store.d.ts +2 -2
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +49 -27
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/transcript-events.d.ts +11 -0
- package/dist/sessions/transcript-events.d.ts.map +1 -0
- package/dist/sessions/transcript-events.js +40 -0
- package/dist/sessions/transcript-events.js.map +1 -0
- package/dist/shared/agent-session.d.ts +10 -0
- package/dist/shared/agent-session.d.ts.map +1 -0
- package/dist/shared/agent-session.js +33 -0
- package/dist/shared/agent-session.js.map +1 -0
- package/dist/shared/constants.d.ts +6 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +11 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/fs.d.ts +7 -0
- package/dist/shared/fs.d.ts.map +1 -0
- package/dist/shared/fs.js +14 -0
- package/dist/shared/fs.js.map +1 -0
- package/dist/shared/index.d.ts +4 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/skills/enablement.d.ts.map +1 -1
- package/dist/skills/enablement.js +2 -2
- package/dist/skills/enablement.js.map +1 -1
- package/dist/workspace/runner.d.ts.map +1 -1
- package/dist/workspace/runner.js +436 -105
- package/dist/workspace/runner.js.map +1 -1
- package/dist/workspace/types.d.ts +1 -0
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/workspace.d.ts.map +1 -1
- package/dist/workspace/workspace.js +12 -3
- package/dist/workspace/workspace.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
// Ported from OpenClaw extensions/memory-core/src/memory/manager-embedding-ops.ts
|
|
2
|
+
// All constants, retry logic, batch failure tracking, and timeout resolution are identical.
|
|
3
|
+
import { createSubsystemLogger } from "../logging/subsystem.js";
|
|
4
|
+
import { hashContent } from "./embedding-cache.js";
|
|
5
|
+
const log = createSubsystemLogger("embedding-batch");
|
|
6
|
+
// Constants from OpenClaw
|
|
7
|
+
const EMBEDDING_BATCH_MAX_TOKENS = 8000;
|
|
8
|
+
const EMBEDDING_INDEX_CONCURRENCY = 4;
|
|
9
|
+
const EMBEDDING_RETRY_MAX_ATTEMPTS = 3;
|
|
10
|
+
const EMBEDDING_RETRY_BASE_DELAY_MS = 500;
|
|
11
|
+
const EMBEDDING_RETRY_MAX_DELAY_MS = 8000;
|
|
12
|
+
const BATCH_FAILURE_LIMIT = 2;
|
|
13
|
+
const EMBEDDING_QUERY_TIMEOUT_REMOTE_MS = 60_000;
|
|
14
|
+
const EMBEDDING_QUERY_TIMEOUT_LOCAL_MS = 5 * 60_000;
|
|
15
|
+
const EMBEDDING_BATCH_TIMEOUT_REMOTE_MS = 2 * 60_000;
|
|
16
|
+
const EMBEDDING_BATCH_TIMEOUT_LOCAL_MS = 10 * 60_000;
|
|
17
|
+
const APPROX_CHARS_PER_TOKEN = 4;
|
|
18
|
+
export function createBatchFailureState() {
|
|
19
|
+
return { count: 0, enabled: true };
|
|
20
|
+
}
|
|
21
|
+
function recordBatchFailure(state, params) {
|
|
22
|
+
if (!state.enabled)
|
|
23
|
+
return { disabled: true, count: state.count };
|
|
24
|
+
const increment = params.forceDisable ? BATCH_FAILURE_LIMIT : Math.max(1, params.attempts ?? 1);
|
|
25
|
+
state.count += increment;
|
|
26
|
+
state.lastError = params.message;
|
|
27
|
+
state.lastProvider = params.provider;
|
|
28
|
+
const disabled = params.forceDisable || state.count >= BATCH_FAILURE_LIMIT;
|
|
29
|
+
if (disabled)
|
|
30
|
+
state.enabled = false;
|
|
31
|
+
return { disabled, count: state.count };
|
|
32
|
+
}
|
|
33
|
+
function resetBatchFailureCount(state) {
|
|
34
|
+
if (state.count > 0) {
|
|
35
|
+
log.debug("embedding batch recovered; resetting failure count");
|
|
36
|
+
}
|
|
37
|
+
state.count = 0;
|
|
38
|
+
state.lastError = undefined;
|
|
39
|
+
state.lastProvider = undefined;
|
|
40
|
+
}
|
|
41
|
+
// --- Timeout helper (from OpenClaw) ---
|
|
42
|
+
async function withTimeout(promise, timeoutMs, message) {
|
|
43
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0)
|
|
44
|
+
return await promise;
|
|
45
|
+
let timer = null;
|
|
46
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
47
|
+
timer = setTimeout(() => reject(new Error(message)), timeoutMs);
|
|
48
|
+
});
|
|
49
|
+
try {
|
|
50
|
+
return (await Promise.race([promise, timeoutPromise]));
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
if (timer)
|
|
54
|
+
clearTimeout(timer);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function resolveEmbeddingTimeout(provider, kind) {
|
|
58
|
+
const isLocal = provider.id === "ollama" || provider.id === "local";
|
|
59
|
+
if (kind === "query")
|
|
60
|
+
return isLocal ? EMBEDDING_QUERY_TIMEOUT_LOCAL_MS : EMBEDDING_QUERY_TIMEOUT_REMOTE_MS;
|
|
61
|
+
return isLocal ? EMBEDDING_BATCH_TIMEOUT_LOCAL_MS : EMBEDDING_BATCH_TIMEOUT_REMOTE_MS;
|
|
62
|
+
}
|
|
63
|
+
// --- Retry logic (from OpenClaw) ---
|
|
64
|
+
function isRetryableEmbeddingError(message) {
|
|
65
|
+
return /(rate[_ ]limit|too many requests|429|resource has been exhausted|5\d\d|cloudflare|tokens per day)/i.test(message);
|
|
66
|
+
}
|
|
67
|
+
function isBatchTimeoutError(message) {
|
|
68
|
+
return /timed out|timeout/i.test(message);
|
|
69
|
+
}
|
|
70
|
+
async function waitForEmbeddingRetry(delayMs, action) {
|
|
71
|
+
const waitMs = Math.min(EMBEDDING_RETRY_MAX_DELAY_MS, Math.round(delayMs * (1 + Math.random() * 0.2)));
|
|
72
|
+
log.warn(`memory embeddings rate limited; ${action} in ${waitMs}ms`);
|
|
73
|
+
await new Promise((resolve) => setTimeout(resolve, waitMs));
|
|
74
|
+
}
|
|
75
|
+
async function embedBatchWithRetry(provider, texts) {
|
|
76
|
+
if (texts.length === 0)
|
|
77
|
+
return [];
|
|
78
|
+
let attempt = 0;
|
|
79
|
+
let delayMs = EMBEDDING_RETRY_BASE_DELAY_MS;
|
|
80
|
+
while (true) {
|
|
81
|
+
try {
|
|
82
|
+
const timeoutMs = resolveEmbeddingTimeout(provider, "batch");
|
|
83
|
+
log.debug("embedding batch start", { provider: provider.id, items: texts.length, timeoutMs });
|
|
84
|
+
return await withTimeout(provider.embedBatch(texts), timeoutMs, `memory embeddings batch timed out after ${Math.round(timeoutMs / 1000)}s`);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
88
|
+
if (!isRetryableEmbeddingError(message) || attempt >= EMBEDDING_RETRY_MAX_ATTEMPTS)
|
|
89
|
+
throw err;
|
|
90
|
+
await waitForEmbeddingRetry(delayMs, "retrying");
|
|
91
|
+
delayMs *= 2;
|
|
92
|
+
attempt += 1;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export async function embedQueryWithTimeout(provider, text) {
|
|
97
|
+
const timeoutMs = resolveEmbeddingTimeout(provider, "query");
|
|
98
|
+
log.debug("embedding query start", { provider: provider.id, timeoutMs });
|
|
99
|
+
return await withTimeout(provider.embedQuery(text), timeoutMs, `memory embeddings query timed out after ${Math.round(timeoutMs / 1000)}s`);
|
|
100
|
+
}
|
|
101
|
+
// --- Batch splitting (from OpenClaw buildEmbeddingBatches) ---
|
|
102
|
+
function estimateTokens(text) {
|
|
103
|
+
return Math.ceil(text.length / APPROX_CHARS_PER_TOKEN);
|
|
104
|
+
}
|
|
105
|
+
function buildEmbeddingBatches(items) {
|
|
106
|
+
const batches = [];
|
|
107
|
+
let current = [];
|
|
108
|
+
let currentTokens = 0;
|
|
109
|
+
for (const item of items) {
|
|
110
|
+
const estimate = estimateTokens(item.text);
|
|
111
|
+
const wouldExceed = current.length > 0 && currentTokens + estimate > EMBEDDING_BATCH_MAX_TOKENS;
|
|
112
|
+
if (wouldExceed) {
|
|
113
|
+
batches.push(current);
|
|
114
|
+
current = [];
|
|
115
|
+
currentTokens = 0;
|
|
116
|
+
}
|
|
117
|
+
if (current.length === 0 && estimate > EMBEDDING_BATCH_MAX_TOKENS) {
|
|
118
|
+
batches.push([item]);
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
current.push(item);
|
|
122
|
+
currentTokens += estimate;
|
|
123
|
+
}
|
|
124
|
+
if (current.length > 0)
|
|
125
|
+
batches.push(current);
|
|
126
|
+
return batches;
|
|
127
|
+
}
|
|
128
|
+
// --- collectCachedEmbeddings (from OpenClaw) ---
|
|
129
|
+
function collectCachedEmbeddings(items, cache, provider, providerKey) {
|
|
130
|
+
const embeddings = new Array(items.length).fill(null);
|
|
131
|
+
const missing = [];
|
|
132
|
+
if (!cache) {
|
|
133
|
+
return { embeddings, missing: [...items] };
|
|
134
|
+
}
|
|
135
|
+
const cached = cache.loadBatch(provider.id, provider.model, providerKey, items.map((i) => i.hash));
|
|
136
|
+
for (let i = 0; i < items.length; i++) {
|
|
137
|
+
const hit = items[i].hash ? cached.get(items[i].hash) : undefined;
|
|
138
|
+
if (hit && hit.length > 0) {
|
|
139
|
+
embeddings[i] = hit;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
missing.push(items[i]);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return { embeddings, missing };
|
|
146
|
+
}
|
|
147
|
+
// --- Main batch embedding function ---
|
|
148
|
+
export async function embedBatchWithCacheAndRetry(texts, options) {
|
|
149
|
+
const { provider, cache, providerKey = "", concurrency = EMBEDDING_INDEX_CONCURRENCY } = options;
|
|
150
|
+
const items = texts.map((text, i) => ({
|
|
151
|
+
originalIndex: i,
|
|
152
|
+
text,
|
|
153
|
+
hash: hashContent(text),
|
|
154
|
+
}));
|
|
155
|
+
const { embeddings: resultEmbeddings, missing } = collectCachedEmbeddings(items, cache, provider, providerKey);
|
|
156
|
+
const results = [...resultEmbeddings];
|
|
157
|
+
let cached = items.length - missing.length;
|
|
158
|
+
let computed = 0;
|
|
159
|
+
let errors = 0;
|
|
160
|
+
if (missing.length === 0) {
|
|
161
|
+
log.debug(`all ${texts.length} embeddings served from cache`);
|
|
162
|
+
return { embeddings: results, cached, computed, errors };
|
|
163
|
+
}
|
|
164
|
+
const batches = buildEmbeddingBatches(missing);
|
|
165
|
+
log.debug(`processing ${missing.length} uncached texts in ${batches.length} batches (${cached} cached)`);
|
|
166
|
+
const toCache = [];
|
|
167
|
+
for (let g = 0; g < batches.length; g += concurrency) {
|
|
168
|
+
const group = batches.slice(g, g + concurrency);
|
|
169
|
+
await Promise.all(group.map(async (batch) => {
|
|
170
|
+
const batchTexts = batch.map((item) => item.text);
|
|
171
|
+
try {
|
|
172
|
+
const batchEmbeddings = await embedBatchWithRetry(provider, batchTexts);
|
|
173
|
+
for (let j = 0; j < batch.length; j++) {
|
|
174
|
+
const embedding = batchEmbeddings[j] ?? [];
|
|
175
|
+
if (embedding.length > 0) {
|
|
176
|
+
results[batch[j].originalIndex] = embedding;
|
|
177
|
+
computed++;
|
|
178
|
+
toCache.push({ hash: batch[j].hash, embedding });
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
errors++;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
log.error(`batch embedding failed`, { batchSize: batch.length, error: String(err) });
|
|
187
|
+
errors += batch.length;
|
|
188
|
+
}
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
if (cache && toCache.length > 0) {
|
|
192
|
+
cache.upsertBatch(provider.id, provider.model, providerKey, toCache);
|
|
193
|
+
}
|
|
194
|
+
log.info("batch complete", { total: texts.length, cached, computed, errors });
|
|
195
|
+
return { embeddings: results, cached, computed, errors };
|
|
196
|
+
}
|
|
197
|
+
// --- Batch with fallback (from OpenClaw runBatchWithFallback) ---
|
|
198
|
+
export async function runBatchWithTimeoutRetry(params) {
|
|
199
|
+
try {
|
|
200
|
+
return await params.run();
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
204
|
+
if (isBatchTimeoutError(message)) {
|
|
205
|
+
log.warn(`${params.provider} batch timed out; retrying once`);
|
|
206
|
+
try {
|
|
207
|
+
return await params.run();
|
|
208
|
+
}
|
|
209
|
+
catch (retryErr) {
|
|
210
|
+
retryErr.batchAttempts = 2;
|
|
211
|
+
throw retryErr;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
throw err;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
export async function runBatchWithFallback(params) {
|
|
218
|
+
if (!params.state.enabled)
|
|
219
|
+
return await params.fallback();
|
|
220
|
+
try {
|
|
221
|
+
const result = await runBatchWithTimeoutRetry({ provider: params.provider, run: params.run });
|
|
222
|
+
resetBatchFailureCount(params.state);
|
|
223
|
+
return result;
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
227
|
+
const attempts = err.batchAttempts ?? 1;
|
|
228
|
+
const forceDisable = /asyncBatchEmbedContent not available/i.test(message);
|
|
229
|
+
const failure = recordBatchFailure(params.state, { provider: params.provider, message, attempts, forceDisable });
|
|
230
|
+
const suffix = failure.disabled ? "disabling batch" : "keeping batch enabled";
|
|
231
|
+
log.warn(`${params.provider} batch failed (${failure.count}/${BATCH_FAILURE_LIMIT}); ${suffix}; falling back: ${message}`);
|
|
232
|
+
return await params.fallback();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// --- enforceEmbeddingMaxInputTokens (from OpenClaw) ---
|
|
236
|
+
export function enforceEmbeddingMaxInputTokens(provider, texts, maxBatchTokens = EMBEDDING_BATCH_MAX_TOKENS) {
|
|
237
|
+
const maxTokens = provider.maxInputTokens;
|
|
238
|
+
if (!maxTokens || maxTokens <= 0)
|
|
239
|
+
return texts;
|
|
240
|
+
const maxChars = maxTokens * APPROX_CHARS_PER_TOKEN;
|
|
241
|
+
return texts.map((text) => {
|
|
242
|
+
if (text.length <= maxChars)
|
|
243
|
+
return text;
|
|
244
|
+
log.debug("truncating text to fit max input tokens", {
|
|
245
|
+
originalLength: text.length,
|
|
246
|
+
maxChars,
|
|
247
|
+
maxTokens,
|
|
248
|
+
});
|
|
249
|
+
return text.slice(0, maxChars);
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
export { EMBEDDING_BATCH_MAX_TOKENS, EMBEDDING_INDEX_CONCURRENCY };
|
|
253
|
+
//# sourceMappingURL=embedding-batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-batch.js","sourceRoot":"","sources":["../../src/memory/embedding-batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DatabaseSync } from "node:sqlite";
|
|
2
|
+
export interface EmbeddingCache {
|
|
3
|
+
get(provider: string, model: string, contentHash: string): number[] | null;
|
|
4
|
+
loadBatch(provider: string, model: string, providerKey: string, hashes: string[]): Map<string, number[]>;
|
|
5
|
+
set(provider: string, model: string, providerKey: string, contentHash: string, embedding: number[], dims: number): void;
|
|
6
|
+
upsertBatch(provider: string, model: string, providerKey: string, entries: Array<{
|
|
7
|
+
hash: string;
|
|
8
|
+
embedding: number[];
|
|
9
|
+
}>): void;
|
|
10
|
+
prune(maxEntries: number): number;
|
|
11
|
+
count(): number;
|
|
12
|
+
}
|
|
13
|
+
export declare function createEmbeddingCacheTable(db: DatabaseSync): void;
|
|
14
|
+
export declare function createEmbeddingCache(db: DatabaseSync): EmbeddingCache;
|
|
15
|
+
export declare function hashContent(content: string): string;
|
|
16
|
+
//# sourceMappingURL=embedding-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-cache.d.ts","sourceRoot":"","sources":["../../src/memory/embedding-cache.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAShD,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3E,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAC/H,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,KAAK,IAAI,MAAM,CAAC;CACjB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAgBhE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,cAAc,CA8FrE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Ported from OpenClaw extensions/memory-core/src/memory/manager-embedding-ops.ts
|
|
2
|
+
// Cache operations: loadEmbeddingCache, upsertEmbeddingCache, collectCachedEmbeddings, pruneEmbeddingCacheIfNeeded
|
|
3
|
+
import * as crypto from "node:crypto";
|
|
4
|
+
import { createSubsystemLogger } from "../logging/subsystem.js";
|
|
5
|
+
import { parseEmbedding } from "./internal.js";
|
|
6
|
+
const log = createSubsystemLogger("embedding-cache");
|
|
7
|
+
const EMBEDDING_CACHE_TABLE = "embedding_cache";
|
|
8
|
+
const CACHE_BATCH_SIZE = 400;
|
|
9
|
+
export function createEmbeddingCacheTable(db) {
|
|
10
|
+
db.exec(`
|
|
11
|
+
CREATE TABLE IF NOT EXISTS ${EMBEDDING_CACHE_TABLE} (
|
|
12
|
+
provider TEXT NOT NULL,
|
|
13
|
+
model TEXT NOT NULL,
|
|
14
|
+
provider_key TEXT NOT NULL,
|
|
15
|
+
hash TEXT NOT NULL,
|
|
16
|
+
embedding TEXT NOT NULL,
|
|
17
|
+
dims INTEGER,
|
|
18
|
+
updated_at INTEGER NOT NULL,
|
|
19
|
+
PRIMARY KEY (provider, model, provider_key, hash)
|
|
20
|
+
)
|
|
21
|
+
`);
|
|
22
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_embedding_cache_updated_at ON ${EMBEDDING_CACHE_TABLE}(updated_at)`);
|
|
23
|
+
}
|
|
24
|
+
export function createEmbeddingCache(db) {
|
|
25
|
+
createEmbeddingCacheTable(db);
|
|
26
|
+
const stmtGet = db.prepare(`SELECT embedding FROM ${EMBEDDING_CACHE_TABLE} WHERE provider = ? AND model = ? AND provider_key = ? AND hash = ?`);
|
|
27
|
+
const stmtCount = db.prepare(`SELECT COUNT(*) as c FROM ${EMBEDDING_CACHE_TABLE}`);
|
|
28
|
+
const stmtPrune = db.prepare(`DELETE FROM ${EMBEDDING_CACHE_TABLE} WHERE rowid IN (SELECT rowid FROM ${EMBEDDING_CACHE_TABLE} ORDER BY updated_at ASC LIMIT ?)`);
|
|
29
|
+
return {
|
|
30
|
+
// Simple single-item get (backwards compat)
|
|
31
|
+
get(provider, model, contentHash) {
|
|
32
|
+
try {
|
|
33
|
+
const row = stmtGet.get(provider, model, "", contentHash);
|
|
34
|
+
if (!row)
|
|
35
|
+
return null;
|
|
36
|
+
return parseEmbedding(row.embedding);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
// Batch lookup (OpenClaw's loadEmbeddingCache with 400-item SQL batching)
|
|
43
|
+
loadBatch(provider, model, providerKey, hashes) {
|
|
44
|
+
const out = new Map();
|
|
45
|
+
if (hashes.length === 0)
|
|
46
|
+
return out;
|
|
47
|
+
const unique = [];
|
|
48
|
+
const seen = new Set();
|
|
49
|
+
for (const hash of hashes) {
|
|
50
|
+
if (!hash || seen.has(hash))
|
|
51
|
+
continue;
|
|
52
|
+
seen.add(hash);
|
|
53
|
+
unique.push(hash);
|
|
54
|
+
}
|
|
55
|
+
if (unique.length === 0)
|
|
56
|
+
return out;
|
|
57
|
+
const baseParams = [provider, model, providerKey];
|
|
58
|
+
for (let start = 0; start < unique.length; start += CACHE_BATCH_SIZE) {
|
|
59
|
+
const batch = unique.slice(start, start + CACHE_BATCH_SIZE);
|
|
60
|
+
const placeholders = batch.map(() => "?").join(", ");
|
|
61
|
+
try {
|
|
62
|
+
const rows = db.prepare(`SELECT hash, embedding FROM ${EMBEDDING_CACHE_TABLE} WHERE provider = ? AND model = ? AND provider_key = ? AND hash IN (${placeholders})`).all(...baseParams, ...batch);
|
|
63
|
+
for (const row of rows) {
|
|
64
|
+
out.set(row.hash, parseEmbedding(row.embedding));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// continue with partial results
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return out;
|
|
72
|
+
},
|
|
73
|
+
// Single-item insert
|
|
74
|
+
set(provider, model, providerKey, contentHash, embedding, dims) {
|
|
75
|
+
try {
|
|
76
|
+
db.prepare(`INSERT INTO ${EMBEDDING_CACHE_TABLE} (provider, model, provider_key, hash, embedding, dims, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(provider, model, provider_key, hash) DO UPDATE SET embedding=excluded.embedding, dims=excluded.dims, updated_at=excluded.updated_at`).run(provider, model, providerKey, contentHash, JSON.stringify(embedding), dims, Date.now());
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
log.warn("cache write failed", { error: String(err) });
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
// Bulk upsert (OpenClaw's upsertEmbeddingCache)
|
|
83
|
+
upsertBatch(provider, model, providerKey, entries) {
|
|
84
|
+
if (entries.length === 0)
|
|
85
|
+
return;
|
|
86
|
+
const now = Date.now();
|
|
87
|
+
const stmt = db.prepare(`INSERT INTO ${EMBEDDING_CACHE_TABLE} (provider, model, provider_key, hash, embedding, dims, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(provider, model, provider_key, hash) DO UPDATE SET embedding=excluded.embedding, dims=excluded.dims, updated_at=excluded.updated_at`);
|
|
88
|
+
for (const entry of entries) {
|
|
89
|
+
const embedding = entry.embedding ?? [];
|
|
90
|
+
stmt.run(provider, model, providerKey, entry.hash, JSON.stringify(embedding), embedding.length, now);
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
// LRU pruning (OpenClaw's pruneEmbeddingCacheIfNeeded)
|
|
94
|
+
prune(maxEntries) {
|
|
95
|
+
if (maxEntries <= 0)
|
|
96
|
+
return 0;
|
|
97
|
+
const row = stmtCount.get();
|
|
98
|
+
const count = row?.c ?? 0;
|
|
99
|
+
if (count <= maxEntries)
|
|
100
|
+
return 0;
|
|
101
|
+
const excess = count - maxEntries;
|
|
102
|
+
stmtPrune.run(excess);
|
|
103
|
+
return excess;
|
|
104
|
+
},
|
|
105
|
+
count() {
|
|
106
|
+
return stmtCount.get().c;
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function hashContent(content) {
|
|
111
|
+
return crypto.createHash("sha256").update(content).digest("hex");
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=embedding-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-cache.js","sourceRoot":"","sources":["../../src/memory/embedding-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isTruthyEnvValue } from "../infra/env.js";
|
|
2
2
|
import { createSubsystemLogger } from "../logging/subsystem.js";
|
|
3
|
-
const debugEmbeddings = isTruthyEnvValue(process.env.
|
|
3
|
+
const debugEmbeddings = isTruthyEnvValue(process.env.BULKHEAD_DEBUG_MEMORY_EMBEDDINGS);
|
|
4
4
|
const log = createSubsystemLogger("memory/embeddings");
|
|
5
5
|
export function debugEmbeddingsLog(message, meta) {
|
|
6
6
|
if (!debugEmbeddings) {
|
|
@@ -11,6 +11,7 @@ export type CreateEmbeddingProviderOptions = {
|
|
|
11
11
|
apiKey?: string;
|
|
12
12
|
model?: string;
|
|
13
13
|
baseUrl?: string;
|
|
14
|
+
enableSsrf?: boolean;
|
|
14
15
|
};
|
|
15
16
|
export declare function createEmbeddingProvider(options: CreateEmbeddingProviderOptions): EmbeddingProvider;
|
|
16
17
|
//# sourceMappingURL=embeddings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AA4PxF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,iBAAiB,CAqBnB"}
|