bulkhead-runtime 0.1.0 → 2026.4.5-beta.1

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.
Files changed (199) hide show
  1. package/README.md +337 -234
  2. package/dist/cli.js +5 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config/index.d.ts +28 -0
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/index.js +9 -6
  7. package/dist/config/index.js.map +1 -1
  8. package/dist/credentials/store.d.ts.map +1 -1
  9. package/dist/credentials/store.js +39 -15
  10. package/dist/credentials/store.js.map +1 -1
  11. package/dist/index.d.ts +18 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +38 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/infra/warning-filter.js +1 -1
  16. package/dist/infra/warning-filter.js.map +1 -1
  17. package/dist/logging/subsystem.d.ts +15 -1
  18. package/dist/logging/subsystem.d.ts.map +1 -1
  19. package/dist/logging/subsystem.js +310 -45
  20. package/dist/logging/subsystem.js.map +1 -1
  21. package/dist/memory/embedding-batch.d.ts +38 -0
  22. package/dist/memory/embedding-batch.d.ts.map +1 -0
  23. package/dist/memory/embedding-batch.js +253 -0
  24. package/dist/memory/embedding-batch.js.map +1 -0
  25. package/dist/memory/embedding-cache.d.ts +16 -0
  26. package/dist/memory/embedding-cache.d.ts.map +1 -0
  27. package/dist/memory/embedding-cache.js +113 -0
  28. package/dist/memory/embedding-cache.js.map +1 -0
  29. package/dist/memory/embeddings-debug.js +1 -1
  30. package/dist/memory/embeddings.d.ts +1 -0
  31. package/dist/memory/embeddings.d.ts.map +1 -1
  32. package/dist/memory/embeddings.js +115 -92
  33. package/dist/memory/embeddings.js.map +1 -1
  34. package/dist/memory/file-indexer.d.ts +26 -0
  35. package/dist/memory/file-indexer.d.ts.map +1 -0
  36. package/dist/memory/file-indexer.js +245 -0
  37. package/dist/memory/file-indexer.js.map +1 -0
  38. package/dist/memory/hybrid.d.ts.map +1 -1
  39. package/dist/memory/hybrid.js +6 -2
  40. package/dist/memory/hybrid.js.map +1 -1
  41. package/dist/memory/index.d.ts +5 -0
  42. package/dist/memory/index.d.ts.map +1 -1
  43. package/dist/memory/index.js +5 -2
  44. package/dist/memory/index.js.map +1 -1
  45. package/dist/memory/session-indexer.d.ts +41 -0
  46. package/dist/memory/session-indexer.d.ts.map +1 -0
  47. package/dist/memory/session-indexer.js +341 -0
  48. package/dist/memory/session-indexer.js.map +1 -0
  49. package/dist/memory/simple-manager.d.ts +6 -0
  50. package/dist/memory/simple-manager.d.ts.map +1 -1
  51. package/dist/memory/simple-manager.js +35 -12
  52. package/dist/memory/simple-manager.js.map +1 -1
  53. package/dist/memory/ssrf.d.ts +18 -0
  54. package/dist/memory/ssrf.d.ts.map +1 -0
  55. package/dist/memory/ssrf.js +316 -0
  56. package/dist/memory/ssrf.js.map +1 -0
  57. package/dist/package.json +8 -5
  58. package/dist/platform/platform.d.ts.map +1 -1
  59. package/dist/platform/platform.js +30 -7
  60. package/dist/platform/platform.js.map +1 -1
  61. package/dist/platform/types.d.ts +2 -0
  62. package/dist/platform/types.d.ts.map +1 -1
  63. package/dist/runtime/agent.d.ts +8 -0
  64. package/dist/runtime/agent.d.ts.map +1 -1
  65. package/dist/runtime/agent.js +194 -46
  66. package/dist/runtime/agent.js.map +1 -1
  67. package/dist/runtime/api-key-rotation.d.ts +26 -0
  68. package/dist/runtime/api-key-rotation.d.ts.map +1 -0
  69. package/dist/runtime/api-key-rotation.js +174 -0
  70. package/dist/runtime/api-key-rotation.js.map +1 -0
  71. package/dist/runtime/context-guard.d.ts +32 -0
  72. package/dist/runtime/context-guard.d.ts.map +1 -0
  73. package/dist/runtime/context-guard.js +61 -0
  74. package/dist/runtime/context-guard.js.map +1 -0
  75. package/dist/runtime/failover-error.d.ts +62 -0
  76. package/dist/runtime/failover-error.d.ts.map +1 -0
  77. package/dist/runtime/failover-error.js +733 -0
  78. package/dist/runtime/failover-error.js.map +1 -0
  79. package/dist/runtime/failover-policy.d.ts +5 -0
  80. package/dist/runtime/failover-policy.d.ts.map +1 -0
  81. package/dist/runtime/failover-policy.js +18 -0
  82. package/dist/runtime/failover-policy.js.map +1 -0
  83. package/dist/runtime/index.d.ts +11 -0
  84. package/dist/runtime/index.d.ts.map +1 -1
  85. package/dist/runtime/index.js +11 -0
  86. package/dist/runtime/index.js.map +1 -1
  87. package/dist/runtime/memory-flush.d.ts +24 -0
  88. package/dist/runtime/memory-flush.d.ts.map +1 -0
  89. package/dist/runtime/memory-flush.js +64 -0
  90. package/dist/runtime/memory-flush.js.map +1 -0
  91. package/dist/runtime/memory-tools.d.ts +14 -0
  92. package/dist/runtime/memory-tools.d.ts.map +1 -0
  93. package/dist/runtime/memory-tools.js +58 -0
  94. package/dist/runtime/memory-tools.js.map +1 -0
  95. package/dist/runtime/model-fallback.d.ts +56 -0
  96. package/dist/runtime/model-fallback.d.ts.map +1 -0
  97. package/dist/runtime/model-fallback.js +301 -0
  98. package/dist/runtime/model-fallback.js.map +1 -0
  99. package/dist/runtime/model-fallback.types.d.ts +14 -0
  100. package/dist/runtime/model-fallback.types.d.ts.map +1 -0
  101. package/dist/runtime/model-fallback.types.js +3 -0
  102. package/dist/runtime/model-fallback.types.js.map +1 -0
  103. package/dist/runtime/retry.d.ts +24 -0
  104. package/dist/runtime/retry.d.ts.map +1 -0
  105. package/dist/runtime/retry.js +102 -0
  106. package/dist/runtime/retry.js.map +1 -0
  107. package/dist/runtime/session-pruning.d.ts +22 -0
  108. package/dist/runtime/session-pruning.d.ts.map +1 -0
  109. package/dist/runtime/session-pruning.js +118 -0
  110. package/dist/runtime/session-pruning.js.map +1 -0
  111. package/dist/runtime/stream-adapters.d.ts +11 -0
  112. package/dist/runtime/stream-adapters.d.ts.map +1 -0
  113. package/dist/runtime/stream-adapters.js +46 -0
  114. package/dist/runtime/stream-adapters.js.map +1 -0
  115. package/dist/runtime/subagent.d.ts +83 -0
  116. package/dist/runtime/subagent.d.ts.map +1 -0
  117. package/dist/runtime/subagent.js +190 -0
  118. package/dist/runtime/subagent.js.map +1 -0
  119. package/dist/runtime/tool-result-truncation.d.ts +25 -0
  120. package/dist/runtime/tool-result-truncation.d.ts.map +1 -0
  121. package/dist/runtime/tool-result-truncation.js +115 -0
  122. package/dist/runtime/tool-result-truncation.js.map +1 -0
  123. package/dist/sandbox/cgroup.d.ts +4 -1
  124. package/dist/sandbox/cgroup.d.ts.map +1 -1
  125. package/dist/sandbox/cgroup.js +28 -15
  126. package/dist/sandbox/cgroup.js.map +1 -1
  127. package/dist/sandbox/index.d.ts +2 -1
  128. package/dist/sandbox/index.d.ts.map +1 -1
  129. package/dist/sandbox/index.js +2 -1
  130. package/dist/sandbox/index.js.map +1 -1
  131. package/dist/sandbox/ipc.d.ts +4 -1
  132. package/dist/sandbox/ipc.d.ts.map +1 -1
  133. package/dist/sandbox/ipc.js +33 -17
  134. package/dist/sandbox/ipc.js.map +1 -1
  135. package/dist/sandbox/manager.d.ts +1 -2
  136. package/dist/sandbox/manager.d.ts.map +1 -1
  137. package/dist/sandbox/manager.js +132 -130
  138. package/dist/sandbox/manager.js.map +1 -1
  139. package/dist/sandbox/namespace.d.ts +1 -1
  140. package/dist/sandbox/namespace.d.ts.map +1 -1
  141. package/dist/sandbox/namespace.js +36 -37
  142. package/dist/sandbox/namespace.js.map +1 -1
  143. package/dist/sandbox/rootfs.d.ts +6 -1
  144. package/dist/sandbox/rootfs.d.ts.map +1 -1
  145. package/dist/sandbox/rootfs.js +114 -30
  146. package/dist/sandbox/rootfs.js.map +1 -1
  147. package/dist/sandbox/seccomp-apply.d.ts +9 -0
  148. package/dist/sandbox/seccomp-apply.d.ts.map +1 -0
  149. package/dist/sandbox/seccomp-apply.js +227 -0
  150. package/dist/sandbox/seccomp-apply.js.map +1 -0
  151. package/dist/sandbox/seccomp.js +3 -3
  152. package/dist/sandbox/seccomp.js.map +1 -1
  153. package/dist/sandbox/types.d.ts +1 -3
  154. package/dist/sandbox/types.d.ts.map +1 -1
  155. package/dist/sandbox/types.js.map +1 -1
  156. package/dist/sandbox/worker.d.ts +3 -0
  157. package/dist/sandbox/worker.d.ts.map +1 -1
  158. package/dist/sandbox/worker.js +84 -17
  159. package/dist/sandbox/worker.js.map +1 -1
  160. package/dist/sessions/index.d.ts +1 -0
  161. package/dist/sessions/index.d.ts.map +1 -1
  162. package/dist/sessions/index.js +1 -0
  163. package/dist/sessions/index.js.map +1 -1
  164. package/dist/sessions/store.d.ts +2 -2
  165. package/dist/sessions/store.d.ts.map +1 -1
  166. package/dist/sessions/store.js +49 -27
  167. package/dist/sessions/store.js.map +1 -1
  168. package/dist/sessions/transcript-events.d.ts +11 -0
  169. package/dist/sessions/transcript-events.d.ts.map +1 -0
  170. package/dist/sessions/transcript-events.js +40 -0
  171. package/dist/sessions/transcript-events.js.map +1 -0
  172. package/dist/shared/agent-session.d.ts +10 -0
  173. package/dist/shared/agent-session.d.ts.map +1 -0
  174. package/dist/shared/agent-session.js +33 -0
  175. package/dist/shared/agent-session.js.map +1 -0
  176. package/dist/shared/constants.d.ts +6 -0
  177. package/dist/shared/constants.d.ts.map +1 -0
  178. package/dist/shared/constants.js +11 -0
  179. package/dist/shared/constants.js.map +1 -0
  180. package/dist/shared/fs.d.ts +7 -0
  181. package/dist/shared/fs.d.ts.map +1 -0
  182. package/dist/shared/fs.js +14 -0
  183. package/dist/shared/fs.js.map +1 -0
  184. package/dist/shared/index.d.ts +4 -0
  185. package/dist/shared/index.d.ts.map +1 -0
  186. package/dist/shared/index.js +4 -0
  187. package/dist/shared/index.js.map +1 -0
  188. package/dist/skills/enablement.d.ts.map +1 -1
  189. package/dist/skills/enablement.js +2 -2
  190. package/dist/skills/enablement.js.map +1 -1
  191. package/dist/workspace/runner.d.ts.map +1 -1
  192. package/dist/workspace/runner.js +353 -106
  193. package/dist/workspace/runner.js.map +1 -1
  194. package/dist/workspace/types.d.ts +1 -0
  195. package/dist/workspace/types.d.ts.map +1 -1
  196. package/dist/workspace/workspace.d.ts.map +1 -1
  197. package/dist/workspace/workspace.js +12 -3
  198. package/dist/workspace/workspace.js.map +1 -1
  199. package/package.json +1 -1
@@ -1,7 +1,17 @@
1
- // EmbeddingProvider interface and factory, adapted from OpenClaw src/memory/embeddings.ts
2
- // The original depended on OpenClawConfig, SecretInput, SSRF policies, model-auth, and
3
- // per-provider client modules. This version keeps the same EmbeddingProvider interface
4
- // but accepts simple options (apiKey, model, baseUrl) directly.
1
+ import { buildBaseUrlPolicy, fetchWithSsrfGuard } from "./ssrf.js";
2
+ function sanitizeErrorBody(body) {
3
+ const truncated = body.slice(0, 500);
4
+ return truncated
5
+ .replace(/(?:sk-|sk-ant-|key-|pa-|AIza|Bearer\s+)[A-Za-z0-9_-]{10,}/g, "[REDACTED]")
6
+ .replace(/[?&]key=[^&\s"']{10,}/g, "?key=[REDACTED]")
7
+ .replace(/"(api_key|apiKey|secret|token|password)"\s*:\s*"[^"]{6,}"/gi, '"$1":"[REDACTED]"');
8
+ }
9
+ const APPROX_CHARS_PER_TOKEN = 4;
10
+ function validateInputLength(text, maxTokens) {
11
+ if (maxTokens && text.length > maxTokens * APPROX_CHARS_PER_TOKEN) {
12
+ throw new Error(`Input text (~${Math.ceil(text.length / APPROX_CHARS_PER_TOKEN)} tokens) exceeds provider limit of ${maxTokens} tokens`);
13
+ }
14
+ }
5
15
  function sanitizeAndNormalizeEmbedding(vec) {
6
16
  const sanitized = vec.map((value) => (Number.isFinite(value) ? value : 0));
7
17
  const magnitude = Math.sqrt(sanitized.reduce((sum, value) => sum + value * value, 0));
@@ -9,170 +19,183 @@ function sanitizeAndNormalizeEmbedding(vec) {
9
19
  return sanitized;
10
20
  return sanitized.map((value) => value / magnitude);
11
21
  }
12
- // --- OpenAI ---
13
- // From OpenClaw src/memory/embeddings-openai.ts
14
- const DEFAULT_OPENAI_MODEL = "text-embedding-3-small";
15
- const OPENAI_MAX_INPUT_TOKENS = {
16
- "text-embedding-3-small": 8192,
17
- "text-embedding-3-large": 8192,
18
- "text-embedding-ada-002": 8191,
19
- };
20
- function createOpenAiProvider(params) {
21
- const model = params.model ?? DEFAULT_OPENAI_MODEL;
22
- const baseUrl = (params.baseUrl ?? "https://api.openai.com/v1").replace(/\/+$/, "");
22
+ async function ssrfFetch(url, init, ssrfPolicy) {
23
+ if (ssrfPolicy) {
24
+ return fetchWithSsrfGuard(url, init, ssrfPolicy);
25
+ }
26
+ return fetch(url, init);
27
+ }
28
+ function createBearerEmbeddingProvider(config) {
29
+ const { id, apiKey, model, baseUrl, maxInputTokens, ssrfPolicy } = config;
23
30
  async function call(input) {
24
- const res = await fetch(`${baseUrl}/embeddings`, {
31
+ const res = await ssrfFetch(`${baseUrl}/embeddings`, {
25
32
  method: "POST",
26
33
  headers: {
27
34
  "Content-Type": "application/json",
28
- Authorization: `Bearer ${params.apiKey}`,
35
+ Authorization: `Bearer ${apiKey}`,
29
36
  },
30
37
  body: JSON.stringify({ input, model }),
31
- });
32
- if (!res.ok)
33
- throw new Error(`OpenAI embeddings failed (${res.status}): ${await res.text()}`);
38
+ }, ssrfPolicy);
39
+ if (!res.ok) {
40
+ throw new Error(`${id} embeddings failed (${res.status}): ${sanitizeErrorBody(await res.text())}`);
41
+ }
34
42
  const body = (await res.json());
35
43
  return body.data.map((d) => sanitizeAndNormalizeEmbedding(d.embedding));
36
44
  }
37
45
  return {
46
+ id,
47
+ model,
48
+ maxInputTokens,
49
+ embedQuery: async (text) => {
50
+ validateInputLength(text, maxInputTokens);
51
+ const results = await call([text]);
52
+ if (!results || results.length === 0) {
53
+ throw new Error(`${id} returned empty embedding response`);
54
+ }
55
+ return results[0];
56
+ },
57
+ embedBatch: async (texts) => {
58
+ for (const t of texts)
59
+ validateInputLength(t, maxInputTokens);
60
+ return call(texts);
61
+ },
62
+ };
63
+ }
64
+ // --- OpenAI ---
65
+ const OPENAI_MAX_INPUT_TOKENS = {
66
+ "text-embedding-3-small": 8192,
67
+ "text-embedding-3-large": 8192,
68
+ "text-embedding-ada-002": 8191,
69
+ };
70
+ function createOpenAiProvider(params) {
71
+ const model = params.model ?? "text-embedding-3-small";
72
+ const baseUrl = (params.baseUrl ?? "https://api.openai.com/v1").replace(/\/+$/, "");
73
+ return createBearerEmbeddingProvider({
38
74
  id: "openai",
75
+ apiKey: params.apiKey,
39
76
  model,
77
+ baseUrl,
40
78
  maxInputTokens: OPENAI_MAX_INPUT_TOKENS[model],
41
- embedQuery: async (text) => (await call([text]))[0],
42
- embedBatch: call,
43
- };
79
+ ssrfPolicy: params.enableSsrf !== false ? buildBaseUrlPolicy(baseUrl) ?? undefined : undefined,
80
+ });
44
81
  }
45
- // --- Gemini ---
46
- // From OpenClaw src/memory/embeddings-gemini.ts
47
- const DEFAULT_GEMINI_MODEL = "gemini-embedding-001";
82
+ // --- Gemini (different API shape — not Bearer-based) ---
48
83
  const GEMINI_MAX_INPUT_TOKENS = {
84
+ "gemini-embedding-001": 2048,
49
85
  "text-embedding-004": 2048,
50
86
  };
51
87
  function createGeminiProvider(params) {
52
- const model = params.model ?? DEFAULT_GEMINI_MODEL;
88
+ const model = params.model ?? "gemini-embedding-001";
53
89
  const baseUrl = (params.baseUrl ?? "https://generativelanguage.googleapis.com/v1beta").replace(/\/+$/, "");
90
+ const ssrfPolicy = params.enableSsrf !== false ? buildBaseUrlPolicy(baseUrl) ?? undefined : undefined;
54
91
  async function call(texts) {
55
92
  const requests = texts.map((text) => ({
56
93
  model: `models/${model}`,
57
94
  content: { parts: [{ text }] },
58
95
  }));
59
- const res = await fetch(`${baseUrl}/models/${model}:batchEmbedContents?key=${params.apiKey}`, {
96
+ const res = await ssrfFetch(`${baseUrl}/models/${model}:batchEmbedContents`, {
60
97
  method: "POST",
61
- headers: { "Content-Type": "application/json" },
98
+ headers: {
99
+ "Content-Type": "application/json",
100
+ "x-goog-api-key": params.apiKey,
101
+ },
62
102
  body: JSON.stringify({ requests }),
63
- });
103
+ }, ssrfPolicy);
64
104
  if (!res.ok)
65
- throw new Error(`Gemini embeddings failed (${res.status}): ${await res.text()}`);
105
+ throw new Error(`gemini embeddings failed (${res.status}): ${sanitizeErrorBody(await res.text())}`);
66
106
  const body = (await res.json());
67
107
  return body.embeddings.map((e) => sanitizeAndNormalizeEmbedding(e.values));
68
108
  }
109
+ const maxTokens = GEMINI_MAX_INPUT_TOKENS[model];
69
110
  return {
70
111
  id: "gemini",
71
112
  model,
72
- maxInputTokens: GEMINI_MAX_INPUT_TOKENS[model],
73
- embedQuery: async (text) => (await call([text]))[0],
74
- embedBatch: call,
113
+ maxInputTokens: maxTokens,
114
+ embedQuery: async (text) => {
115
+ validateInputLength(text, maxTokens);
116
+ const results = await call([text]);
117
+ if (!results || results.length === 0)
118
+ throw new Error("gemini returned empty embedding response");
119
+ return results[0];
120
+ },
121
+ embedBatch: async (texts) => {
122
+ for (const t of texts)
123
+ validateInputLength(t, maxTokens);
124
+ return call(texts);
125
+ },
75
126
  };
76
127
  }
77
128
  // --- Voyage ---
78
- // From OpenClaw src/memory/embeddings-voyage.ts
79
- const DEFAULT_VOYAGE_MODEL = "voyage-3-lite";
80
129
  function createVoyageProvider(params) {
81
- const model = params.model ?? DEFAULT_VOYAGE_MODEL;
82
130
  const baseUrl = (params.baseUrl ?? "https://api.voyageai.com/v1").replace(/\/+$/, "");
83
- async function call(input) {
84
- const res = await fetch(`${baseUrl}/embeddings`, {
85
- method: "POST",
86
- headers: {
87
- "Content-Type": "application/json",
88
- Authorization: `Bearer ${params.apiKey}`,
89
- },
90
- body: JSON.stringify({ input, model }),
91
- });
92
- if (!res.ok)
93
- throw new Error(`Voyage embeddings failed (${res.status}): ${await res.text()}`);
94
- const body = (await res.json());
95
- return body.data.map((d) => sanitizeAndNormalizeEmbedding(d.embedding));
96
- }
97
- return {
131
+ return createBearerEmbeddingProvider({
98
132
  id: "voyage",
99
- model,
100
- embedQuery: async (text) => (await call([text]))[0],
101
- embedBatch: call,
102
- };
133
+ apiKey: params.apiKey,
134
+ model: params.model ?? "voyage-3-lite",
135
+ baseUrl,
136
+ ssrfPolicy: params.enableSsrf !== false ? buildBaseUrlPolicy(baseUrl) ?? undefined : undefined,
137
+ });
103
138
  }
104
139
  // --- Mistral ---
105
- // From OpenClaw src/memory/embeddings-mistral.ts
106
- const DEFAULT_MISTRAL_MODEL = "mistral-embed";
107
140
  function createMistralProvider(params) {
108
- const model = params.model ?? DEFAULT_MISTRAL_MODEL;
109
141
  const baseUrl = (params.baseUrl ?? "https://api.mistral.ai/v1").replace(/\/+$/, "");
110
- async function call(input) {
111
- const res = await fetch(`${baseUrl}/embeddings`, {
112
- method: "POST",
113
- headers: {
114
- "Content-Type": "application/json",
115
- Authorization: `Bearer ${params.apiKey}`,
116
- },
117
- body: JSON.stringify({ input, model }),
118
- });
119
- if (!res.ok)
120
- throw new Error(`Mistral embeddings failed (${res.status}): ${await res.text()}`);
121
- const body = (await res.json());
122
- return body.data.map((d) => sanitizeAndNormalizeEmbedding(d.embedding));
123
- }
124
- return {
142
+ return createBearerEmbeddingProvider({
125
143
  id: "mistral",
126
- model,
127
- embedQuery: async (text) => (await call([text]))[0],
128
- embedBatch: call,
129
- };
144
+ apiKey: params.apiKey,
145
+ model: params.model ?? "mistral-embed",
146
+ baseUrl,
147
+ ssrfPolicy: params.enableSsrf !== false ? buildBaseUrlPolicy(baseUrl) ?? undefined : undefined,
148
+ });
130
149
  }
131
- // --- Ollama ---
132
- // From OpenClaw src/memory/embeddings-ollama.ts
133
- const DEFAULT_OLLAMA_MODEL = "nomic-embed-text";
150
+ // --- Ollama (different API shape — no auth, different response) ---
134
151
  function createOllamaProvider(params) {
135
- const model = params.model ?? DEFAULT_OLLAMA_MODEL;
152
+ const model = params.model ?? "nomic-embed-text";
136
153
  const baseUrl = (params.baseUrl ?? "http://localhost:11434").replace(/\/+$/, "");
154
+ const ssrfPolicy = params.enableSsrf !== false ? buildBaseUrlPolicy(baseUrl) ?? undefined : undefined;
137
155
  async function call(input) {
138
- const res = await fetch(`${baseUrl}/api/embed`, {
156
+ const res = await ssrfFetch(`${baseUrl}/api/embed`, {
139
157
  method: "POST",
140
158
  headers: { "Content-Type": "application/json" },
141
159
  body: JSON.stringify({ model, input }),
142
- });
160
+ }, ssrfPolicy);
143
161
  if (!res.ok)
144
- throw new Error(`Ollama embeddings failed (${res.status}): ${await res.text()}`);
162
+ throw new Error(`ollama embeddings failed (${res.status}): ${sanitizeErrorBody(await res.text())}`);
145
163
  const body = (await res.json());
146
164
  return body.embeddings.map((v) => sanitizeAndNormalizeEmbedding(v));
147
165
  }
148
166
  return {
149
167
  id: "ollama",
150
168
  model,
151
- embedQuery: async (text) => (await call([text]))[0],
169
+ embedQuery: async (text) => {
170
+ const results = await call([text]);
171
+ if (!results || results.length === 0)
172
+ throw new Error("ollama returned empty embedding response");
173
+ return results[0];
174
+ },
152
175
  embedBatch: call,
153
176
  };
154
177
  }
155
178
  export function createEmbeddingProvider(options) {
156
- const { provider, apiKey, model, baseUrl } = options;
179
+ const { provider, apiKey, model, baseUrl, enableSsrf } = options;
157
180
  switch (provider) {
158
181
  case "openai":
159
182
  if (!apiKey)
160
183
  throw new Error("OpenAI embedding provider requires an API key");
161
- return createOpenAiProvider({ apiKey, model, baseUrl });
184
+ return createOpenAiProvider({ apiKey, model, baseUrl, enableSsrf });
162
185
  case "gemini":
163
186
  if (!apiKey)
164
187
  throw new Error("Gemini embedding provider requires an API key");
165
- return createGeminiProvider({ apiKey, model, baseUrl });
188
+ return createGeminiProvider({ apiKey, model, baseUrl, enableSsrf });
166
189
  case "voyage":
167
190
  if (!apiKey)
168
191
  throw new Error("Voyage embedding provider requires an API key");
169
- return createVoyageProvider({ apiKey, model, baseUrl });
192
+ return createVoyageProvider({ apiKey, model, baseUrl, enableSsrf });
170
193
  case "mistral":
171
194
  if (!apiKey)
172
195
  throw new Error("Mistral embedding provider requires an API key");
173
- return createMistralProvider({ apiKey, model, baseUrl });
196
+ return createMistralProvider({ apiKey, model, baseUrl, enableSsrf });
174
197
  case "ollama":
175
- return createOllamaProvider({ model, baseUrl });
198
+ return createOllamaProvider({ model, baseUrl, enableSsrf });
176
199
  default:
177
200
  throw new Error(`Unknown embedding provider: ${provider}`);
178
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAmB,MAAM,WAAW,CAAC;AAYpF,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrC,OAAO,SAAS;SACb,OAAO,CAAC,4DAA4D,EAAE,YAAY,CAAC;SACnF,OAAO,CAAC,wBAAwB,EAAE,iBAAiB,CAAC;SACpD,OAAO,CAAC,6DAA6D,EAAE,mBAAmB,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,SAAS,mBAAmB,CAAC,IAAY,EAAE,SAAkB;IAC3D,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,sBAAsB,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,sCAAsC,SAAS,SAAS,CACxH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CAAC,GAAa;IAClD,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,SAAS,GAAG,KAAK;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,GAAW,EACX,IAAiB,EACjB,UAAuB;IAEvB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAWD,SAAS,6BAA6B,CAAC,MAA4B;IACjE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE1E,KAAK,UAAU,IAAI,CAAC,KAAe;QACjC,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,GAAG,OAAO,aAAa,EACvB;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SACvC,EACD,UAAU,CACX,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,uBAAuB,GAAG,CAAC,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA6C,CAAC;QAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO;QACL,EAAE;QACF,KAAK;QACL,cAAc;QACd,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACzB,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,mBAAmB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,iBAAiB;AAEjB,MAAM,uBAAuB,GAA2B;IACtD,wBAAwB,EAAE,IAAI;IAC9B,wBAAwB,EAAE,IAAI;IAC9B,wBAAwB,EAAE,IAAI;CAC/B,CAAC;AAEF,SAAS,oBAAoB,CAAC,MAK7B;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,wBAAwB,CAAC;IACvD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,2BAA2B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpF,OAAO,6BAA6B,CAAC;QACnC,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK;QACL,OAAO;QACP,cAAc,EAAE,uBAAuB,CAAC,KAAK,CAAC;QAC9C,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;KAC/F,CAAC,CAAC;AACL,CAAC;AAED,0DAA0D;AAE1D,MAAM,uBAAuB,GAA2B;IACtD,sBAAsB,EAAE,IAAI;IAC5B,oBAAoB,EAAE,IAAI;CAC3B,CAAC;AAEF,SAAS,oBAAoB,CAAC,MAK7B;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,sBAAsB,CAAC;IACrD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,kDAAkD,CAAC,CAAC,OAAO,CAC5F,MAAM,EACN,EAAE,CACH,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtG,KAAK,UAAU,IAAI,CAAC,KAAe;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpC,KAAK,EAAE,UAAU,KAAK,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;SAC/B,CAAC,CAAC,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,GAAG,OAAO,WAAW,KAAK,qBAAqB,EAC/C;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,MAAM,CAAC,MAAM;aAChC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;SACnC,EACD,UAAU,CACX,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgD,CAAC;QAC/E,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAEjD,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,KAAK;QACL,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACzB,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAClG,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,iBAAiB;AAEjB,SAAS,oBAAoB,CAAC,MAK7B;IACC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,6BAA6B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtF,OAAO,6BAA6B,CAAC;QACnC,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,eAAe;QACtC,OAAO;QACP,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;KAC/F,CAAC,CAAC;AACL,CAAC;AAED,kBAAkB;AAElB,SAAS,qBAAqB,CAAC,MAK9B;IACC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,2BAA2B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpF,OAAO,6BAA6B,CAAC;QACnC,EAAE,EAAE,SAAS;QACb,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,eAAe;QACtC,OAAO;QACP,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;KAC/F,CAAC,CAAC;AACL,CAAC;AAED,qEAAqE;AAErE,SAAS,oBAAoB,CAAC,MAI7B;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,kBAAkB,CAAC;IACjD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtG,KAAK,UAAU,IAAI,CAAC,KAAe;QACjC,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,GAAG,OAAO,YAAY,EACtB;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SACvC,EACD,UAAU,CACX,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA+B,CAAC;QAC9D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,KAAK;QACL,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAClG,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,uBAAuB,CACrC,OAAuC;IAEvC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAEjE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC9E,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC9E,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC9E,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,KAAK,SAAS;YACZ,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC/E,OAAO,qBAAqB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACvE,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9D;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { SimpleMemoryManager } from "./simple-manager.js";
2
+ export interface FileIndexerOptions {
3
+ workspaceDir: string;
4
+ memory: SimpleMemoryManager;
5
+ watchPaths?: string[];
6
+ debounceMs?: number;
7
+ extraPaths?: string[];
8
+ chunking?: {
9
+ tokens: number;
10
+ overlap: number;
11
+ };
12
+ }
13
+ export interface FileIndexer {
14
+ start(): void;
15
+ stop(): void;
16
+ sync(): Promise<FileIndexSyncResult>;
17
+ readonly watching: boolean;
18
+ }
19
+ export interface FileIndexSyncResult {
20
+ filesProcessed: number;
21
+ chunksStored: number;
22
+ chunksRemoved: number;
23
+ errors: number;
24
+ }
25
+ export declare function createFileIndexer(options: FileIndexerOptions): FileIndexer;
26
+ //# sourceMappingURL=file-indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-indexer.d.ts","sourceRoot":"","sources":["../../src/memory/file-indexer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAiB/D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAgN1E"}
@@ -0,0 +1,245 @@
1
+ // Ported from OpenClaw extensions/memory-core/src/memory/manager-sync-ops.ts
2
+ // ensureWatcher logic, IGNORED_MEMORY_WATCH_DIR_NAMES, shouldIgnoreMemoryWatchPath,
3
+ // syncMemoryFiles with hash comparison and stale cleanup
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import { createSubsystemLogger } from "../logging/subsystem.js";
7
+ import { chunkMarkdown, hashText } from "./internal.js";
8
+ const log = createSubsystemLogger("memory/file-indexer");
9
+ const MAX_FILE_SIZE = 1024 * 1024;
10
+ // From OpenClaw: exact list of ignored directory names
11
+ const IGNORED_MEMORY_WATCH_DIR_NAMES = new Set([
12
+ ".git",
13
+ "node_modules",
14
+ ".pnpm-store",
15
+ ".venv",
16
+ "venv",
17
+ ".tox",
18
+ "__pycache__",
19
+ ]);
20
+ // From OpenClaw
21
+ function shouldIgnoreMemoryWatchPath(watchPath) {
22
+ const normalized = path.normalize(watchPath);
23
+ const parts = normalized.split(path.sep).map((segment) => segment.trim().toLowerCase());
24
+ return parts.some((segment) => IGNORED_MEMORY_WATCH_DIR_NAMES.has(segment));
25
+ }
26
+ export function createFileIndexer(options) {
27
+ const { workspaceDir, memory, debounceMs = 2000, chunking = { tokens: 500, overlap: 50 }, } = options;
28
+ const watchers = [];
29
+ let watching = false;
30
+ let watchTimer = null;
31
+ let dirty = false;
32
+ const indexedFiles = new Map();
33
+ function resolveWatchPaths() {
34
+ const paths = new Set();
35
+ const memoryMd = path.join(workspaceDir, "MEMORY.md");
36
+ if (fs.existsSync(memoryMd))
37
+ paths.add(memoryMd);
38
+ const memoryMdLower = path.join(workspaceDir, "memory.md");
39
+ if (memoryMdLower !== memoryMd && fs.existsSync(memoryMdLower))
40
+ paths.add(memoryMdLower);
41
+ const memoryDir = path.join(workspaceDir, "memory");
42
+ if (fs.existsSync(memoryDir) && fs.statSync(memoryDir).isDirectory())
43
+ paths.add(memoryDir);
44
+ for (const p of [...(options.watchPaths ?? []), ...(options.extraPaths ?? [])]) {
45
+ const resolved = path.isAbsolute(p) ? p : path.join(workspaceDir, p);
46
+ try {
47
+ const stat = fs.lstatSync(resolved);
48
+ if (stat.isSymbolicLink())
49
+ continue;
50
+ if (stat.isFile() || stat.isDirectory())
51
+ paths.add(resolved);
52
+ }
53
+ catch { /* skip missing */ }
54
+ }
55
+ return Array.from(paths);
56
+ }
57
+ function collectMarkdownFiles(dir) {
58
+ const files = [];
59
+ try {
60
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
61
+ for (const entry of entries) {
62
+ const full = path.join(dir, entry.name);
63
+ if (shouldIgnoreMemoryWatchPath(full))
64
+ continue;
65
+ if (entry.isDirectory()) {
66
+ files.push(...collectMarkdownFiles(full));
67
+ }
68
+ else if (entry.isFile() && (entry.name.endsWith(".md") || entry.name.endsWith(".txt"))) {
69
+ files.push(full);
70
+ }
71
+ }
72
+ }
73
+ catch { /* directory not readable */ }
74
+ return files;
75
+ }
76
+ function collectAllFiles() {
77
+ const files = [];
78
+ const memoryMd = path.join(workspaceDir, "MEMORY.md");
79
+ if (fs.existsSync(memoryMd))
80
+ files.push(memoryMd);
81
+ const memoryMdLower = path.join(workspaceDir, "memory.md");
82
+ if (memoryMdLower !== memoryMd && fs.existsSync(memoryMdLower))
83
+ files.push(memoryMdLower);
84
+ const memoryDir = path.join(workspaceDir, "memory");
85
+ if (fs.existsSync(memoryDir) && fs.statSync(memoryDir).isDirectory()) {
86
+ files.push(...collectMarkdownFiles(memoryDir));
87
+ }
88
+ for (const p of [...(options.watchPaths ?? []), ...(options.extraPaths ?? [])]) {
89
+ const resolved = path.isAbsolute(p) ? p : path.join(workspaceDir, p);
90
+ try {
91
+ const stat = fs.statSync(resolved);
92
+ if (stat.isFile())
93
+ files.push(resolved);
94
+ else if (stat.isDirectory())
95
+ files.push(...collectMarkdownFiles(resolved));
96
+ }
97
+ catch { /* skip */ }
98
+ }
99
+ return [...new Set(files)];
100
+ }
101
+ function scheduleWatchSync() {
102
+ dirty = true;
103
+ if (watchTimer)
104
+ clearTimeout(watchTimer);
105
+ watchTimer = setTimeout(() => {
106
+ watchTimer = null;
107
+ sync().catch((err) => log.warn(`memory sync failed (watch): ${String(err)}`));
108
+ }, debounceMs);
109
+ }
110
+ async function sync() {
111
+ dirty = false;
112
+ const result = {
113
+ filesProcessed: 0, chunksStored: 0, chunksRemoved: 0, errors: 0,
114
+ };
115
+ const currentFiles = collectAllFiles();
116
+ const currentPaths = new Set(currentFiles);
117
+ // Remove chunks for deleted files
118
+ for (const [filePath, state] of indexedFiles) {
119
+ if (!currentPaths.has(filePath)) {
120
+ for (const chunkId of state.chunkIds) {
121
+ try {
122
+ await memory.delete(chunkId);
123
+ result.chunksRemoved++;
124
+ }
125
+ catch {
126
+ result.errors++;
127
+ }
128
+ }
129
+ indexedFiles.delete(filePath);
130
+ }
131
+ }
132
+ // Index new/changed files
133
+ for (const filePath of currentFiles) {
134
+ try {
135
+ const stat = fs.statSync(filePath);
136
+ if (stat.size > MAX_FILE_SIZE) {
137
+ log.warn(`skipping large file: ${filePath} (${stat.size} bytes)`);
138
+ continue;
139
+ }
140
+ const content = fs.readFileSync(filePath, "utf-8");
141
+ const hash = hashText(content);
142
+ const existing = indexedFiles.get(filePath);
143
+ // Skip unchanged files (OpenClaw's hash comparison)
144
+ if (existing && existing.hash === hash) {
145
+ result.filesProcessed++;
146
+ continue;
147
+ }
148
+ // Remove old chunks for changed files
149
+ if (existing) {
150
+ for (const chunkId of existing.chunkIds) {
151
+ try {
152
+ await memory.delete(chunkId);
153
+ result.chunksRemoved++;
154
+ }
155
+ catch {
156
+ result.errors++;
157
+ }
158
+ }
159
+ }
160
+ const relPath = path.relative(workspaceDir, filePath);
161
+ const chunks = chunkMarkdown(content, chunking);
162
+ const newChunkIds = [];
163
+ for (const chunk of chunks) {
164
+ if (!chunk.text.trim())
165
+ continue;
166
+ try {
167
+ const id = await memory.store(chunk.text, {
168
+ source: "file",
169
+ path: relPath,
170
+ startLine: chunk.startLine,
171
+ endLine: chunk.endLine,
172
+ });
173
+ newChunkIds.push(id);
174
+ result.chunksStored++;
175
+ }
176
+ catch {
177
+ result.errors++;
178
+ }
179
+ }
180
+ indexedFiles.set(filePath, { hash, chunkIds: newChunkIds });
181
+ result.filesProcessed++;
182
+ }
183
+ catch (err) {
184
+ log.error(`failed to index ${filePath}`, { error: String(err) });
185
+ result.errors++;
186
+ }
187
+ }
188
+ log.info("sync complete", {
189
+ files: result.filesProcessed, stored: result.chunksStored,
190
+ removed: result.chunksRemoved, errors: result.errors,
191
+ });
192
+ return result;
193
+ }
194
+ return {
195
+ get watching() { return watching; },
196
+ start() {
197
+ if (watching)
198
+ return;
199
+ watching = true;
200
+ const paths = resolveWatchPaths();
201
+ if (paths.length === 0) {
202
+ log.debug("no watch paths found");
203
+ return;
204
+ }
205
+ for (const watchPath of paths) {
206
+ try {
207
+ const isDir = fs.statSync(watchPath).isDirectory();
208
+ const watcher = fs.watch(watchPath, { recursive: isDir, persistent: false }, (_eventType, filename) => {
209
+ if (!filename)
210
+ return;
211
+ if (shouldIgnoreMemoryWatchPath(filename))
212
+ return;
213
+ const ext = path.extname(filename);
214
+ if (ext === ".md" || ext === ".txt" || filename === "MEMORY.md") {
215
+ log.debug(`file change detected: ${filename}`);
216
+ scheduleWatchSync();
217
+ }
218
+ });
219
+ watchers.push(watcher);
220
+ }
221
+ catch (err) {
222
+ log.warn(`cannot watch ${watchPath}: ${err}`);
223
+ }
224
+ }
225
+ log.info(`watching ${paths.length} paths for changes`);
226
+ sync().catch((err) => log.error("initial sync failed", { error: String(err) }));
227
+ },
228
+ stop() {
229
+ watching = false;
230
+ if (watchTimer) {
231
+ clearTimeout(watchTimer);
232
+ watchTimer = null;
233
+ }
234
+ for (const w of watchers) {
235
+ try {
236
+ w.close();
237
+ }
238
+ catch { /* best effort */ }
239
+ }
240
+ watchers.length = 0;
241
+ },
242
+ sync,
243
+ };
244
+ }
245
+ //# sourceMappingURL=file-indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-indexer.js","sourceRoot":"","sources":["../../src/memory/file-indexer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/memory/hybrid.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EAEL,KAAK,mBAAmB,EACxB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,OAAO,EAAE,KAAK,SAAS,EAAE,kBAAkB,EAAE,CAAC;AAC9C,OAAO,EAAE,KAAK,mBAAmB,EAAE,6BAA6B,EAAE,CAAC;AAEnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWxD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,GAAG,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACzB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7C,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CACT,KAAK,CAAC;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC,CACH,CA6EA"}
1
+ {"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/memory/hybrid.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EAEL,KAAK,mBAAmB,EACxB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,OAAO,EAAE,KAAK,SAAS,EAAE,kBAAkB,EAAE,CAAC;AAC9C,OAAO,EAAE,KAAK,mBAAmB,EAAE,6BAA6B,EAAE,CAAC;AAEnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWxD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,GAAG,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACzB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7C,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CACT,KAAK,CAAC;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC,CACH,CA6EA"}