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.
Files changed (199) hide show
  1. package/README.md +344 -262
  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 +258 -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 +367 -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 +305 -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 +136 -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 +436 -105
  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,57 +1,322 @@
1
- // Minimal createSubsystemLogger compatible with OpenClaw's SubsystemLogger interface.
2
- // The full OpenClaw version uses chalk, tslog, and file logging; this provides
3
- // the same API surface with console output only.
4
- const LEVEL_PRIORITY = {
5
- trace: 0,
6
- debug: 1,
7
- info: 2,
8
- warn: 3,
9
- error: 4,
10
- fatal: 5,
11
- silent: 6,
12
- };
13
- function getMinLevel() {
14
- const env = process.env.OPENCLAW_LOG_LEVEL ?? process.env.LOG_LEVEL ?? "";
15
- if (env && env in LEVEL_PRIORITY)
16
- return env;
17
- return "warn";
1
+ // Ported from OpenClaw src/logging/logger.ts + subsystem.ts + levels.ts
2
+ // Removed: tslog, chalk, external transport system, loggingState global, pino adapter
3
+ // Kept: rolling log files by date, stale pruning, size cap, console styles, level filtering
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import * as os from "node:os";
7
+ // --- Levels (from levels.ts) ---
8
+ export const ALLOWED_LOG_LEVELS = [
9
+ "silent", "fatal", "error", "warn", "info", "debug", "trace",
10
+ ];
11
+ export function tryParseLogLevel(level) {
12
+ if (typeof level !== "string")
13
+ return undefined;
14
+ const candidate = level.trim();
15
+ return ALLOWED_LOG_LEVELS.includes(candidate) ? candidate : undefined;
18
16
  }
19
- export function createSubsystemLogger(subsystem) {
20
- const minLevel = getMinLevel();
21
- const shouldLog = (level) => {
22
- if (minLevel === "silent")
23
- return false;
24
- return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[minLevel];
17
+ export function normalizeLogLevel(level, fallback = "info") {
18
+ return tryParseLogLevel(level) ?? fallback;
19
+ }
20
+ export function levelToMinLevel(level) {
21
+ const map = {
22
+ fatal: 0, error: 1, warn: 2, info: 3, debug: 4, trace: 5,
23
+ silent: Number.POSITIVE_INFINITY,
25
24
  };
26
- const emit = (level, message, meta) => {
27
- if (!shouldLog(level))
28
- return;
29
- const metaSuffix = meta && Object.keys(meta).length > 0 ? ` ${JSON.stringify(meta)}` : "";
30
- const line = `[${subsystem}] ${message}${metaSuffix}`;
31
- if (level === "error" || level === "fatal") {
32
- console.error(line);
25
+ return map[level];
26
+ }
27
+ // --- Rolling log files (from logger.ts) ---
28
+ const LOG_PREFIX = "bulkhead-runtime";
29
+ const LOG_SUFFIX = ".log";
30
+ const MAX_LOG_AGE_MS = 24 * 60 * 60 * 1000;
31
+ const DEFAULT_MAX_LOG_FILE_BYTES = 500 * 1024 * 1024;
32
+ function resolveDefaultLogDir() {
33
+ return path.join(os.tmpdir(), "bulkhead-runtime-logs");
34
+ }
35
+ function formatLocalDate(date) {
36
+ const year = date.getFullYear();
37
+ const month = String(date.getMonth() + 1).padStart(2, "0");
38
+ const day = String(date.getDate()).padStart(2, "0");
39
+ return `${year}-${month}-${day}`;
40
+ }
41
+ function defaultRollingPathForToday() {
42
+ return path.join(resolveDefaultLogDir(), `${LOG_PREFIX}-${formatLocalDate(new Date())}${LOG_SUFFIX}`);
43
+ }
44
+ function isRollingPath(file) {
45
+ const base = path.basename(file);
46
+ return (base.startsWith(`${LOG_PREFIX}-`) &&
47
+ base.endsWith(LOG_SUFFIX) &&
48
+ base.length === `${LOG_PREFIX}-YYYY-MM-DD${LOG_SUFFIX}`.length);
49
+ }
50
+ function pruneOldRollingLogs(dir) {
51
+ try {
52
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
53
+ const cutoff = Date.now() - MAX_LOG_AGE_MS;
54
+ for (const entry of entries) {
55
+ if (!entry.isFile())
56
+ continue;
57
+ if (!entry.name.startsWith(`${LOG_PREFIX}-`) || !entry.name.endsWith(LOG_SUFFIX))
58
+ continue;
59
+ const fullPath = path.join(dir, entry.name);
60
+ try {
61
+ const stat = fs.statSync(fullPath);
62
+ if (stat.mtimeMs < cutoff)
63
+ fs.rmSync(fullPath, { force: true });
64
+ }
65
+ catch { /* ignore */ }
33
66
  }
34
- else if (level === "warn") {
35
- console.warn(line);
67
+ }
68
+ catch { /* ignore */ }
69
+ }
70
+ // --- Global state ---
71
+ let globalConfig = {};
72
+ let logFd = null;
73
+ let logFilePath = null;
74
+ let currentFileBytes = 0;
75
+ let warnedAboutSizeCap = false;
76
+ export function configureLogger(config) {
77
+ globalConfig = { ...config };
78
+ if (logFd !== null) {
79
+ try {
80
+ fs.closeSync(logFd);
36
81
  }
37
- else {
38
- console.log(line);
82
+ catch { /* best effort */ }
83
+ logFd = null;
84
+ }
85
+ logFilePath = null;
86
+ currentFileBytes = 0;
87
+ warnedAboutSizeCap = false;
88
+ }
89
+ function getFileLevel() {
90
+ if (globalConfig.level)
91
+ return globalConfig.level;
92
+ const env = process.env["BULKHEAD_LOG_LEVEL"] ?? process.env["LOG_LEVEL"] ?? "";
93
+ return tryParseLogLevel(env) ?? "info";
94
+ }
95
+ function getConsoleLevel() {
96
+ if (globalConfig.consoleLevel)
97
+ return globalConfig.consoleLevel;
98
+ const env = process.env["BULKHEAD_CONSOLE_LOG_LEVEL"] ?? "";
99
+ return tryParseLogLevel(env) ?? "warn";
100
+ }
101
+ function getConsoleStyle() {
102
+ return globalConfig.consoleStyle ?? (globalConfig.json ? "json" : "compact");
103
+ }
104
+ function resolveLogFile() {
105
+ return globalConfig.file ?? process.env["BULKHEAD_LOG_FILE"] ?? defaultRollingPathForToday();
106
+ }
107
+ function getMaxFileBytes() {
108
+ if (typeof globalConfig.maxFileBytes === "number" && globalConfig.maxFileBytes > 0) {
109
+ return Math.floor(globalConfig.maxFileBytes);
110
+ }
111
+ return DEFAULT_MAX_LOG_FILE_BYTES;
112
+ }
113
+ function shouldLogToFile(level) {
114
+ const minLevel = getFileLevel();
115
+ if (minLevel === "silent")
116
+ return false;
117
+ return levelToMinLevel(level) <= levelToMinLevel(minLevel);
118
+ }
119
+ function shouldLogToConsole(level) {
120
+ const minLevel = getConsoleLevel();
121
+ if (minLevel === "silent")
122
+ return false;
123
+ return levelToMinLevel(level) <= levelToMinLevel(minLevel);
124
+ }
125
+ // --- File output ---
126
+ function ensureLogFd() {
127
+ const filePath = resolveLogFile();
128
+ if (logFd !== null && logFilePath === filePath)
129
+ return logFd;
130
+ if (logFd !== null) {
131
+ try {
132
+ fs.closeSync(logFd);
133
+ }
134
+ catch { /* best effort */ }
135
+ }
136
+ try {
137
+ const dir = path.dirname(filePath);
138
+ fs.mkdirSync(dir, { recursive: true });
139
+ if (isRollingPath(filePath))
140
+ pruneOldRollingLogs(dir);
141
+ try {
142
+ currentFileBytes = fs.statSync(filePath).size;
143
+ }
144
+ catch {
145
+ currentFileBytes = 0;
146
+ }
147
+ logFd = fs.openSync(filePath, "a", 0o600);
148
+ logFilePath = filePath;
149
+ warnedAboutSizeCap = false;
150
+ return logFd;
151
+ }
152
+ catch {
153
+ return null;
154
+ }
155
+ }
156
+ function appendToFile(line) {
157
+ const fd = ensureLogFd();
158
+ if (fd === null)
159
+ return;
160
+ const maxBytes = getMaxFileBytes();
161
+ const payload = line + "\n";
162
+ const payloadBytes = Buffer.byteLength(payload);
163
+ const nextBytes = currentFileBytes + payloadBytes;
164
+ if (nextBytes > maxBytes) {
165
+ if (!warnedAboutSizeCap) {
166
+ warnedAboutSizeCap = true;
167
+ const warningLine = JSON.stringify({
168
+ time: new Date().toISOString(),
169
+ level: "warn",
170
+ subsystem: "logging",
171
+ message: `log file size cap reached; suppressing writes file=${logFilePath} maxFileBytes=${maxBytes}`,
172
+ });
173
+ try {
174
+ fs.writeSync(fd, warningLine + "\n");
175
+ }
176
+ catch { /* ignore */ }
177
+ }
178
+ return;
179
+ }
180
+ try {
181
+ fs.writeSync(fd, payload);
182
+ currentFileBytes = nextBytes;
183
+ }
184
+ catch { /* never block on logging failures */ }
185
+ }
186
+ // --- Console formatting (from subsystem.ts) ---
187
+ const SUBSYSTEM_MAX_SEGMENTS = 2;
188
+ function formatSubsystemForConsole(subsystem) {
189
+ const parts = subsystem.split("/").filter(Boolean);
190
+ if (parts.length === 0)
191
+ return subsystem;
192
+ if (parts.length > SUBSYSTEM_MAX_SEGMENTS) {
193
+ return parts.slice(-SUBSYSTEM_MAX_SEGMENTS).join("/");
194
+ }
195
+ return parts.join("/");
196
+ }
197
+ export function stripRedundantSubsystemPrefixForConsole(message, displaySubsystem) {
198
+ if (!displaySubsystem)
199
+ return message;
200
+ if (message.startsWith("[")) {
201
+ const closeIdx = message.indexOf("]");
202
+ if (closeIdx > 1) {
203
+ const bracketTag = message.slice(1, closeIdx);
204
+ if (bracketTag.toLowerCase() === displaySubsystem.toLowerCase()) {
205
+ let i = closeIdx + 1;
206
+ while (message[i] === " ")
207
+ i += 1;
208
+ return message.slice(i);
209
+ }
39
210
  }
211
+ }
212
+ const prefix = message.slice(0, displaySubsystem.length);
213
+ if (prefix.toLowerCase() !== displaySubsystem.toLowerCase())
214
+ return message;
215
+ const next = message.slice(displaySubsystem.length, displaySubsystem.length + 1);
216
+ if (next !== ":" && next !== " ")
217
+ return message;
218
+ let i = displaySubsystem.length;
219
+ while (message[i] === " ")
220
+ i += 1;
221
+ if (message[i] === ":")
222
+ i += 1;
223
+ while (message[i] === " ")
224
+ i += 1;
225
+ return message.slice(i);
226
+ }
227
+ function formatConsoleLine(opts) {
228
+ const displaySubsystem = opts.style === "json" ? opts.subsystem : formatSubsystemForConsole(opts.subsystem);
229
+ if (opts.style === "json") {
230
+ return JSON.stringify({
231
+ time: new Date().toISOString(),
232
+ level: opts.level,
233
+ subsystem: displaySubsystem,
234
+ message: opts.message,
235
+ ...opts.meta,
236
+ });
237
+ }
238
+ const time = new Date().toISOString();
239
+ const levelTag = opts.level.toUpperCase().padEnd(5);
240
+ const displayMessage = stripRedundantSubsystemPrefixForConsole(opts.message, displaySubsystem);
241
+ const metaSuffix = opts.meta && Object.keys(opts.meta).length > 0 ? ` ${JSON.stringify(opts.meta)}` : "";
242
+ if (opts.style === "pretty") {
243
+ return `${time} [${levelTag}] [${displaySubsystem}] ${displayMessage}${metaSuffix}`;
244
+ }
245
+ return `[${displaySubsystem}] ${displayMessage}${metaSuffix}`;
246
+ }
247
+ function writeConsoleLine(level, line) {
248
+ if (level === "error" || level === "fatal") {
249
+ console.error(line);
250
+ }
251
+ else if (level === "warn") {
252
+ console.warn(line);
253
+ }
254
+ else {
255
+ console.log(line);
256
+ }
257
+ }
258
+ // --- SubsystemLogger factory ---
259
+ export function createSubsystemLogger(subsystem) {
260
+ const buildEmitter = (level) => {
261
+ return (message, meta) => {
262
+ const fileEnabled = shouldLogToFile(level);
263
+ const consoleEnabled = shouldLogToConsole(level);
264
+ if (!fileEnabled && !consoleEnabled)
265
+ return;
266
+ let consoleMessageOverride;
267
+ let fileMeta = meta;
268
+ if (meta && Object.keys(meta).length > 0) {
269
+ const { consoleMessage, ...rest } = meta;
270
+ if (typeof consoleMessage === "string")
271
+ consoleMessageOverride = consoleMessage;
272
+ fileMeta = Object.keys(rest).length > 0 ? rest : undefined;
273
+ }
274
+ if (fileEnabled) {
275
+ const jsonLine = JSON.stringify({
276
+ time: new Date().toISOString(),
277
+ level,
278
+ subsystem,
279
+ message,
280
+ ...(fileMeta && Object.keys(fileMeta).length > 0 ? fileMeta : {}),
281
+ });
282
+ appendToFile(jsonLine);
283
+ }
284
+ if (consoleEnabled) {
285
+ const consoleMsg = consoleMessageOverride ?? message;
286
+ writeConsoleLine(level, formatConsoleLine({
287
+ level,
288
+ subsystem,
289
+ message: getConsoleStyle() === "json" ? message : consoleMsg,
290
+ style: getConsoleStyle(),
291
+ meta: fileMeta,
292
+ }));
293
+ }
294
+ };
40
295
  };
41
296
  return {
42
297
  subsystem,
43
- isEnabled: (level) => shouldLog(level),
44
- trace: (msg, meta) => emit("trace", msg, meta),
45
- debug: (msg, meta) => emit("debug", msg, meta),
46
- info: (msg, meta) => emit("info", msg, meta),
47
- warn: (msg, meta) => emit("warn", msg, meta),
48
- error: (msg, meta) => emit("error", msg, meta),
49
- fatal: (msg, meta) => emit("fatal", msg, meta),
50
- raw: (message) => {
51
- if (shouldLog("info"))
52
- console.log(message);
298
+ isEnabled(level, target = "any") {
299
+ if (target === "console")
300
+ return shouldLogToConsole(level);
301
+ if (target === "file")
302
+ return shouldLogToFile(level);
303
+ return shouldLogToConsole(level) || shouldLogToFile(level);
304
+ },
305
+ trace: buildEmitter("trace"),
306
+ debug: buildEmitter("debug"),
307
+ info: buildEmitter("info"),
308
+ warn: buildEmitter("warn"),
309
+ error: buildEmitter("error"),
310
+ fatal: buildEmitter("fatal"),
311
+ raw(message) {
312
+ if (shouldLogToFile("info"))
313
+ appendToFile(message);
314
+ if (shouldLogToConsole("info"))
315
+ writeConsoleLine("info", message);
316
+ },
317
+ child(name) {
318
+ return createSubsystemLogger(`${subsystem}/${name}`);
53
319
  },
54
- child: (name) => createSubsystemLogger(`${subsystem}/${name}`),
55
320
  };
56
321
  }
57
322
  //# sourceMappingURL=subsystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subsystem.js","sourceRoot":"","sources":["../../src/logging/subsystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subsystem.js","sourceRoot":"","sources":["../../src/logging/subsystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { EmbeddingProvider } from "./embeddings.js";
2
+ import type { EmbeddingCache } from "./embedding-cache.js";
3
+ declare const EMBEDDING_BATCH_MAX_TOKENS = 8000;
4
+ declare const EMBEDDING_INDEX_CONCURRENCY = 4;
5
+ export interface BatchEmbeddingOptions {
6
+ provider: EmbeddingProvider;
7
+ cache?: EmbeddingCache;
8
+ providerKey?: string;
9
+ concurrency?: number;
10
+ }
11
+ export interface BatchEmbeddingResult {
12
+ embeddings: Array<number[] | null>;
13
+ cached: number;
14
+ computed: number;
15
+ errors: number;
16
+ }
17
+ export interface BatchFailureState {
18
+ count: number;
19
+ lastError?: string;
20
+ lastProvider?: string;
21
+ enabled: boolean;
22
+ }
23
+ export declare function createBatchFailureState(): BatchFailureState;
24
+ export declare function embedQueryWithTimeout(provider: EmbeddingProvider, text: string): Promise<number[]>;
25
+ export declare function embedBatchWithCacheAndRetry(texts: string[], options: BatchEmbeddingOptions): Promise<BatchEmbeddingResult>;
26
+ export declare function runBatchWithTimeoutRetry<T>(params: {
27
+ provider: string;
28
+ run: () => Promise<T>;
29
+ }): Promise<T>;
30
+ export declare function runBatchWithFallback<T>(params: {
31
+ state: BatchFailureState;
32
+ provider: string;
33
+ run: () => Promise<T>;
34
+ fallback: () => Promise<number[][]>;
35
+ }): Promise<T | number[][]>;
36
+ export declare function enforceEmbeddingMaxInputTokens(provider: EmbeddingProvider, texts: string[], maxBatchTokens?: number): string[];
37
+ export { EMBEDDING_BATCH_MAX_TOKENS, EMBEDDING_INDEX_CONCURRENCY };
38
+ //# sourceMappingURL=embedding-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-batch.d.ts","sourceRoot":"","sources":["../../src/memory/embedding-batch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D,QAAA,MAAM,0BAA0B,OAAO,CAAC;AACxC,QAAA,MAAM,2BAA2B,IAAI,CAAC;AAWtC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AA0FD,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQxG;AAgED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAwD/B;AAID,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;CACvB,GAAG,OAAO,CAAC,CAAC,CAAC,CAgBb;AAED,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE;IACpD,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CACrC,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,CAe1B;AAID,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,MAAM,EAAE,EACf,cAAc,GAAE,MAAmC,GAClD,MAAM,EAAE,CAcV;AAED,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,CAAC"}