elsium-ai 0.11.0 → 0.12.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.
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@ export type { LLMProvider, ProviderFactory, ProviderMetadata, ModelPricing, Mode
16
16
  export { defineAgent, runSequential, runParallel, runSupervisor, createMemory, createSummarizeFn, createSemanticValidator, createAgentSecurity, createConfidenceScorer, executeStateMachine, defineReActAgent, createInMemoryMemoryStore, createSqliteMemoryStore, createSharedMemory, createAgentStream, createThread, loadThread, createInMemoryThreadStore, createAsyncAgent, createInMemoryTaskStore, createJsonFileTaskStore, createApprovalGate, shouldRequireApproval, createChannelGateway, createWebhookChannel, createSessionRouter, createScheduler, parseCronExpression, cronMatchesDate, getNextCronDate, createAgentIdentity, createIdentityRegistry, createRuntimePolicyEnforcer, toolAccessPolicy, iterationLimitPolicy, createSecureMemoryStore, computeMessageHash, verifyMessageChain, } from '@elsium-ai/agents';
17
17
  export type { Agent, AgentDependencies, AgentGenerateResult, AgentConfig, AgentResult, AgentRunOptions, GuardrailConfig, AgentHooks, Memory, MemoryConfig, SummarizeFn, SemanticGuardrailConfig, SemanticCheck, SemanticCheckResult, SemanticValidationResult, SemanticValidator, AgentSecurityConfig, AgentSecurityResult, ConfidenceConfig, ConfidenceResult, StateDefinition, StateHistoryEntry, StateMachineResult, ReActConfig, ReActResult, ReActStep, ReActAgent, MultiAgentConfig, MultiAgentOptions, MemoryStore, SqliteMemoryStoreConfig, SharedMemory, AgentStreamEvent, AgentStream, StreamingAgentDependencies, Thread, ThreadConfig, ThreadStore, ThreadSnapshot, ThreadSummary, AsyncAgent, AsyncAgentConfig, AsyncAgentRunOptions, AgentTask, TaskStatus, TaskProgressEvent, TaskStore, TaskStoreFilter, PersistedTask, PersistedTaskError, JsonFileTaskStoreConfig, ApprovalRequest, ApprovalDecision, ApprovalCallback, ApprovalGateConfig, ApprovalGate, ChannelAdapter, ChannelGateway, ChannelGatewayConfig, IncomingMessage, OutgoingMessage, ChannelAttachment, WebhookChannelConfig, SessionRouter, SessionRouterConfig, SessionInfo, SessionResolveOptions, Scheduler, SchedulerConfig, ScheduleOptions, ScheduledTask, CronFields, AgentIdentity, AgentIdentityConfig, SignedPayload, VerificationResult, IdentityRegistry, RuntimePolicyConfig, RuntimePolicyEnforcer, ToolPolicyContext, SecureMemoryStore, IntegrityMetadata, VerifiedMessage, MemoryIntegrityResult, } from '@elsium-ai/agents';
18
18
  export { defineTool, createToolkit, httpFetchTool, calculatorTool, jsonParseTool, currentTimeTool, formatToolResult, formatToolResultAsText, createRetrievalTool, } from '@elsium-ai/tools';
19
- export type { Tool, ToolConfig, ToolContext, ToolExecutionResult, Toolkit, RetrievalToolConfig, RetrievalResult as ToolRetrievalResult, RetrieveFn, } from '@elsium-ai/tools';
19
+ export type { Tool, ToolConfig, ToolContext, ToolExecutionResult, Toolkit, RetrievalToolConfig, RetrievalResult as ToolRetrievalResult, RetrieveFn, Capability, SandboxConfig, SandboxRunner, } from '@elsium-ai/tools';
20
20
  export { rag, createInMemoryStore, createOpenAIEmbeddings, createMockEmbeddings, textLoader, markdownLoader, htmlLoader, jsonLoader, csvLoader, getLoader, pdfLoader, fixedSizeChunker, recursiveChunker, sentenceChunker, getChunker, cosineSimilarity, mmrRerank, vectorStoreRegistry, embeddingProviderRegistry, createPgVectorStore, createQdrantStore, createGoogleEmbeddings, createCohereEmbeddings, createBM25Index, createHybridSearch, } from '@elsium-ai/rag';
21
21
  export type { RAGPipeline, RAGPipelineConfig, IngestResult, Document, DocumentMetadata, Chunk, ChunkMetadata, EmbeddedChunk, EmbeddingVector, RetrievalResult, QueryOptions, LoaderType, ChunkingStrategy, ChunkingConfig, EmbeddingConfig, VectorStoreConfig, RetrievalConfig, EmbeddingProvider, VectorStore, VectorStoreFactory, EmbeddingProviderFactory, DocumentLoader, Chunker, PgVectorStoreConfig, QdrantStoreConfig, GoogleEmbeddingsConfig, CohereEmbeddingsConfig, BinaryDocumentLoader, PdfLoaderOptions, BM25Index, HybridSearch, HybridSearchConfig, } from '@elsium-ai/rag';
22
22
  export { defineWorkflow, defineParallelWorkflow, defineBranchWorkflow, defineDagWorkflow, defineResumableWorkflow, createInMemoryCheckpointStore, step, } from '@elsium-ai/workflows';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4008,72 +4008,342 @@ function createProviderMesh(config) {
4008
4008
  }
4009
4009
  };
4010
4010
  }
4011
+ // ../tools/src/sandbox/runner.ts
4012
+ import { Worker } from "node:worker_threads";
4013
+ var WORKER_SCRIPT = `
4014
+ const { parentPort, workerData } = require('node:worker_threads')
4015
+
4016
+ if (!parentPort) throw new Error('worker-runner must be run as a worker thread')
4017
+
4018
+ const { handlerPath } = workerData
4019
+ let handlerPromise = null
4020
+
4021
+ async function loadHandler() {
4022
+ if (!handlerPromise) {
4023
+ handlerPromise = (async () => {
4024
+ const mod = await import(handlerPath)
4025
+ const fn = (mod && (mod.default || mod.handler)) || null
4026
+ if (typeof fn !== 'function') {
4027
+ throw new Error(
4028
+ 'Sandbox handler module must export a default function or a named "handler" function: ' + handlerPath,
4029
+ )
4030
+ }
4031
+ return fn
4032
+ })().catch((err) => {
4033
+ handlerPromise = null
4034
+ throw err
4035
+ })
4036
+ }
4037
+ return handlerPromise
4038
+ }
4039
+
4040
+ parentPort.on('message', async (msg) => {
4041
+ if (!msg || msg.type !== 'invoke') return
4042
+ try {
4043
+ const handler = await loadHandler()
4044
+ const result = await handler(msg.input)
4045
+ parentPort.postMessage({
4046
+ type: 'result',
4047
+ invocationId: msg.invocationId,
4048
+ success: true,
4049
+ data: result,
4050
+ })
4051
+ } catch (err) {
4052
+ parentPort.postMessage({
4053
+ type: 'result',
4054
+ invocationId: msg.invocationId,
4055
+ success: false,
4056
+ error: {
4057
+ name: (err && err.name) || 'Error',
4058
+ message: (err && err.message) || String(err),
4059
+ stack: err && err.stack,
4060
+ },
4061
+ })
4062
+ }
4063
+ })
4064
+ `;
4065
+ function rejectPending(state, error) {
4066
+ if (!state.pending)
4067
+ return;
4068
+ const pending = state.pending;
4069
+ state.pending = null;
4070
+ pending.reject(error);
4071
+ }
4072
+ function attachWorkerListeners(worker, state) {
4073
+ worker.on("message", (msg) => {
4074
+ if (msg?.type !== "result")
4075
+ return;
4076
+ const pending = state.pending;
4077
+ if (!pending || pending.id !== msg.invocationId)
4078
+ return;
4079
+ state.pending = null;
4080
+ if (msg.success) {
4081
+ pending.resolve(msg.data);
4082
+ } else {
4083
+ const error = new Error(msg.error?.message ?? "Sandbox handler failed");
4084
+ if (msg.error?.name)
4085
+ error.name = msg.error.name;
4086
+ if (msg.error?.stack)
4087
+ error.stack = msg.error.stack;
4088
+ pending.reject(error);
4089
+ }
4090
+ });
4091
+ worker.on("error", (err2) => {
4092
+ state.worker = null;
4093
+ rejectPending(state, err2);
4094
+ });
4095
+ worker.on("exit", (code) => {
4096
+ if (state.worker === worker)
4097
+ state.worker = null;
4098
+ if (code !== 0) {
4099
+ rejectPending(state, new Error(`Sandbox worker exited with code ${code}`));
4100
+ }
4101
+ });
4102
+ }
4103
+ function ensureWorker(state, handlerPath) {
4104
+ if (state.worker)
4105
+ return state.worker;
4106
+ const w = new Worker(WORKER_SCRIPT, {
4107
+ eval: true,
4108
+ workerData: { handlerPath }
4109
+ });
4110
+ attachWorkerListeners(w, state);
4111
+ w.unref();
4112
+ state.worker = w;
4113
+ return w;
4114
+ }
4115
+ function killWorker(state) {
4116
+ const dying = state.worker;
4117
+ state.worker = null;
4118
+ if (dying) {
4119
+ dying.terminate().catch(() => {});
4120
+ }
4121
+ }
4122
+ function postInvocation(state, worker, invocationId, input, timeoutMs, handlerPath, signal) {
4123
+ return new Promise((resolve, reject) => {
4124
+ let timer = null;
4125
+ let abortHandler = null;
4126
+ const cleanup = () => {
4127
+ if (timer)
4128
+ clearTimeout(timer);
4129
+ if (signal && abortHandler)
4130
+ signal.removeEventListener("abort", abortHandler);
4131
+ };
4132
+ state.pending = {
4133
+ id: invocationId,
4134
+ resolve: (v) => {
4135
+ cleanup();
4136
+ resolve(v);
4137
+ },
4138
+ reject: (e) => {
4139
+ cleanup();
4140
+ reject(e);
4141
+ }
4142
+ };
4143
+ timer = setTimeout(() => {
4144
+ if (state.pending?.id !== invocationId)
4145
+ return;
4146
+ const pending = state.pending;
4147
+ state.pending = null;
4148
+ killWorker(state);
4149
+ pending.reject(ElsiumError.timeout(`sandbox(${handlerPath})`, timeoutMs));
4150
+ }, timeoutMs);
4151
+ if (signal) {
4152
+ abortHandler = () => {
4153
+ if (state.pending?.id !== invocationId)
4154
+ return;
4155
+ const pending = state.pending;
4156
+ state.pending = null;
4157
+ killWorker(state);
4158
+ pending.reject(new Error("Sandbox invocation aborted"));
4159
+ };
4160
+ signal.addEventListener("abort", abortHandler, { once: true });
4161
+ }
4162
+ try {
4163
+ worker.postMessage({ type: "invoke", invocationId, input });
4164
+ } catch (err2) {
4165
+ if (state.pending?.id === invocationId)
4166
+ state.pending = null;
4167
+ cleanup();
4168
+ reject(err2 instanceof Error ? err2 : new Error(String(err2)));
4169
+ }
4170
+ });
4171
+ }
4172
+ function createWorkerSandboxRunner(config, defaultTimeoutMs) {
4173
+ const handlerPath = typeof config.handler === "string" ? config.handler : config.handler.href;
4174
+ const timeoutMs = config.timeoutMs ?? defaultTimeoutMs;
4175
+ const state = {
4176
+ worker: null,
4177
+ pending: null,
4178
+ chain: Promise.resolve(),
4179
+ disposed: false
4180
+ };
4181
+ async function runOnce(input, signal) {
4182
+ if (state.disposed) {
4183
+ throw new Error("Sandbox runner has been disposed");
4184
+ }
4185
+ if (signal?.aborted) {
4186
+ throw new Error("Sandbox invocation aborted");
4187
+ }
4188
+ const worker = ensureWorker(state, handlerPath);
4189
+ const invocationId = generateId("si");
4190
+ return postInvocation(state, worker, invocationId, input, timeoutMs, handlerPath, signal);
4191
+ }
4192
+ return {
4193
+ async invoke(input, signal) {
4194
+ const previous = state.chain.catch(() => {
4195
+ return;
4196
+ });
4197
+ const next = previous.then(() => runOnce(input, signal));
4198
+ state.chain = next.catch(() => {
4199
+ return;
4200
+ });
4201
+ return next;
4202
+ },
4203
+ async dispose() {
4204
+ state.disposed = true;
4205
+ const w = state.worker;
4206
+ state.worker = null;
4207
+ rejectPending(state, new Error("Sandbox runner disposed"));
4208
+ if (w) {
4209
+ try {
4210
+ await w.terminate();
4211
+ } catch {}
4212
+ }
4213
+ }
4214
+ };
4215
+ }
4216
+
4011
4217
  // ../tools/src/define.ts
4218
+ var log7 = createLogger();
4219
+ var IS_BUN = typeof globalThis.Bun !== "undefined" || typeof process !== "undefined" && Boolean(process.versions.bun);
4220
+ var bunSandboxWarningShown = false;
4221
+ function warnBunSandboxOnce(toolName) {
4222
+ if (bunSandboxWarningShown)
4223
+ return;
4224
+ bunSandboxWarningShown = true;
4225
+ log7.warn(`Tool "${toolName}" uses sandbox.mode="worker" under Bun. Crash isolation is incomplete on Bun: process.exit() inside the handler does NOT terminate the worker (it does on Node). Other guarantees (process, memory, closure-state, timeout, abort) hold. Track: https://github.com/elsium-ai/elsium-ai/issues — search for "Bun crash isolation".`);
4226
+ }
4227
+ function formatZodErrors(error) {
4228
+ return error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ");
4229
+ }
4230
+ function buildExecutionFailure(toolCallId, startTime, error) {
4231
+ return {
4232
+ success: false,
4233
+ error,
4234
+ toolCallId,
4235
+ durationMs: Math.round(performance.now() - startTime)
4236
+ };
4237
+ }
4238
+ function buildExecutionSuccess(toolCallId, startTime, data) {
4239
+ return {
4240
+ success: true,
4241
+ data,
4242
+ toolCallId,
4243
+ durationMs: Math.round(performance.now() - startTime)
4244
+ };
4245
+ }
4246
+ function wireUserSignalToController(controller, userSignal) {
4247
+ if (!userSignal)
4248
+ return;
4249
+ if (userSignal.aborted) {
4250
+ controller.abort();
4251
+ return;
4252
+ }
4253
+ userSignal.addEventListener("abort", () => controller.abort(), { once: true });
4254
+ }
4255
+ function createAbortRejection(signal, isTimeout, name, timeoutMs) {
4256
+ return new Promise((_, reject) => {
4257
+ signal.addEventListener("abort", () => {
4258
+ if (isTimeout()) {
4259
+ reject(ElsiumError.timeout(name, timeoutMs));
4260
+ } else {
4261
+ reject(new ElsiumError({
4262
+ code: "TOOL_ERROR",
4263
+ message: `Tool "${name}" was aborted`,
4264
+ retryable: false
4265
+ }));
4266
+ }
4267
+ }, { once: true });
4268
+ });
4269
+ }
4012
4270
  function defineTool(config) {
4013
4271
  const input = config.input ?? config.parameters;
4014
4272
  if (!input) {
4015
4273
  throw ElsiumError.validation(`Tool "${config.name}" requires an input schema (use "input" or "parameters" key)`);
4016
4274
  }
4017
- const { name, description, output, handler, timeoutMs = 30000 } = config;
4018
- return {
4275
+ if (!config.handler && !config.sandbox) {
4276
+ throw ElsiumError.validation(`Tool "${config.name}" requires either an inline "handler" or a "sandbox" config`);
4277
+ }
4278
+ if (config.sandbox && config.sandbox.mode !== "worker") {
4279
+ throw ElsiumError.validation(`Tool "${config.name}" sandbox.mode must be "worker" (received "${config.sandbox.mode}")`);
4280
+ }
4281
+ if (config.sandbox && IS_BUN) {
4282
+ warnBunSandboxOnce(config.name);
4283
+ }
4284
+ const { name, description, output, sandbox, timeoutMs = 30000 } = config;
4285
+ const handler = config.handler;
4286
+ let sandboxRunner = null;
4287
+ function getSandboxRunner() {
4288
+ if (!sandboxRunner) {
4289
+ if (!sandbox) {
4290
+ throw ElsiumError.validation(`Tool "${name}" has no sandbox config`);
4291
+ }
4292
+ sandboxRunner = createWorkerSandboxRunner(sandbox, timeoutMs);
4293
+ }
4294
+ return sandboxRunner;
4295
+ }
4296
+ async function runHandler(parsedInput, context) {
4297
+ if (sandbox) {
4298
+ const result = await getSandboxRunner().invoke(parsedInput, context.signal);
4299
+ return result;
4300
+ }
4301
+ if (!handler) {
4302
+ throw ElsiumError.validation(`Tool "${name}" has no handler`);
4303
+ }
4304
+ return handler(parsedInput, context);
4305
+ }
4306
+ const tool = {
4019
4307
  name,
4020
4308
  description,
4021
4309
  inputSchema: input,
4022
4310
  outputSchema: output,
4023
4311
  timeoutMs,
4312
+ sandbox,
4024
4313
  async execute(rawInput, partialCtx) {
4025
4314
  const toolCallId = partialCtx?.toolCallId ?? generateId("tc");
4026
4315
  const startTime = performance.now();
4027
4316
  const parsed = input.safeParse(rawInput);
4028
4317
  if (!parsed.success) {
4029
- return {
4030
- success: false,
4031
- error: `Invalid input: ${parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ")}`,
4032
- toolCallId,
4033
- durationMs: Math.round(performance.now() - startTime)
4034
- };
4318
+ return buildExecutionFailure(toolCallId, startTime, `Invalid input: ${formatZodErrors(parsed.error)}`);
4035
4319
  }
4036
4320
  const controller = new AbortController;
4037
- const timer = setTimeout(() => controller.abort(), timeoutMs);
4321
+ let timedOut = false;
4322
+ const timer = setTimeout(() => {
4323
+ timedOut = true;
4324
+ controller.abort();
4325
+ }, timeoutMs);
4326
+ wireUserSignalToController(controller, partialCtx?.signal);
4038
4327
  const context = {
4039
4328
  toolCallId,
4040
4329
  traceId: partialCtx?.traceId,
4041
- signal: partialCtx?.signal ?? controller.signal
4330
+ signal: controller.signal
4042
4331
  };
4043
4332
  try {
4044
4333
  const result = await Promise.race([
4045
- handler(parsed.data, context),
4046
- new Promise((_, reject) => {
4047
- controller.signal.addEventListener("abort", () => {
4048
- reject(ElsiumError.timeout(name, timeoutMs));
4049
- });
4050
- })
4334
+ runHandler(parsed.data, context),
4335
+ createAbortRejection(controller.signal, () => timedOut, name, timeoutMs)
4051
4336
  ]);
4052
4337
  if (output) {
4053
4338
  const validated = output.safeParse(result);
4054
4339
  if (!validated.success) {
4055
- return {
4056
- success: false,
4057
- error: `Invalid output: ${validated.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ")}`,
4058
- toolCallId,
4059
- durationMs: Math.round(performance.now() - startTime)
4060
- };
4340
+ return buildExecutionFailure(toolCallId, startTime, `Invalid output: ${formatZodErrors(validated.error)}`);
4061
4341
  }
4062
4342
  }
4063
- return {
4064
- success: true,
4065
- data: result,
4066
- toolCallId,
4067
- durationMs: Math.round(performance.now() - startTime)
4068
- };
4343
+ return buildExecutionSuccess(toolCallId, startTime, result);
4069
4344
  } catch (error) {
4070
4345
  const message = error instanceof Error ? error.message : String(error);
4071
- return {
4072
- success: false,
4073
- error: message,
4074
- toolCallId,
4075
- durationMs: Math.round(performance.now() - startTime)
4076
- };
4346
+ return buildExecutionFailure(toolCallId, startTime, message);
4077
4347
  } finally {
4078
4348
  clearTimeout(timer);
4079
4349
  }
@@ -4084,8 +4354,16 @@ function defineTool(config) {
4084
4354
  description,
4085
4355
  inputSchema: zodToJsonSchema(input)
4086
4356
  };
4357
+ },
4358
+ async dispose() {
4359
+ if (sandboxRunner) {
4360
+ const r = sandboxRunner;
4361
+ sandboxRunner = null;
4362
+ await r.dispose();
4363
+ }
4087
4364
  }
4088
4365
  };
4366
+ return tool;
4089
4367
  }
4090
4368
  // ../tools/src/toolkit.ts
4091
4369
  function createToolkit(name, tools) {
@@ -10019,7 +10297,7 @@ function createInMemoryMemoryStore() {
10019
10297
  // ../agents/src/stores/sqlite-store.ts
10020
10298
  import { createRequire } from "node:module";
10021
10299
  var require2 = createRequire(import.meta.url);
10022
- var log7 = createLogger();
10300
+ var log8 = createLogger();
10023
10301
  var BLOCKED_KEYS2 = new Set(["__proto__", "constructor", "prototype"]);
10024
10302
  var TABLE_NAME_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
10025
10303
  function createSqliteMemoryStore(config) {
@@ -10055,7 +10333,7 @@ function createSqliteMemoryStore(config) {
10055
10333
  return db;
10056
10334
  } catch (err2) {
10057
10335
  initPromise = null;
10058
- log7.error("Failed to initialize SQLite memory store", {
10336
+ log8.error("Failed to initialize SQLite memory store", {
10059
10337
  error: err2 instanceof Error ? err2.message : String(err2)
10060
10338
  });
10061
10339
  throw new Error("better-sqlite3 is required for SQLite memory store. Install it as a dependency.");
@@ -10199,6 +10477,7 @@ function createJsonFileTaskStore(config) {
10199
10477
  const { dir } = config;
10200
10478
  let initialized = false;
10201
10479
  let initPromise = null;
10480
+ const writeChains = new Map;
10202
10481
  async function ensureDir() {
10203
10482
  if (initialized)
10204
10483
  return;
@@ -10213,6 +10492,18 @@ function createJsonFileTaskStore(config) {
10213
10492
  assertSafeTaskId(taskId);
10214
10493
  return join(dir, `${taskId}.json`);
10215
10494
  }
10495
+ function withIdLock(taskId, fn) {
10496
+ const previous = writeChains.get(taskId) ?? Promise.resolve();
10497
+ const next = previous.catch(() => {
10498
+ return;
10499
+ }).then(fn);
10500
+ writeChains.set(taskId, next);
10501
+ next.finally(() => {
10502
+ if (writeChains.get(taskId) === next)
10503
+ writeChains.delete(taskId);
10504
+ });
10505
+ return next;
10506
+ }
10216
10507
  async function readDirSafe() {
10217
10508
  try {
10218
10509
  await ensureDir();
@@ -10233,11 +10524,13 @@ function createJsonFileTaskStore(config) {
10233
10524
  }
10234
10525
  return {
10235
10526
  async save(task) {
10236
- await ensureDir();
10237
10527
  const path = pathFor(task.id);
10238
- const tmp = `${path}.tmp`;
10239
- await writeFile(tmp, JSON.stringify(task), "utf8");
10240
- await rename(tmp, path);
10528
+ return withIdLock(task.id, async () => {
10529
+ await ensureDir();
10530
+ const tmp = `${path}.tmp`;
10531
+ await writeFile(tmp, JSON.stringify(task), "utf8");
10532
+ await rename(tmp, path);
10533
+ });
10241
10534
  },
10242
10535
  async load(taskId) {
10243
10536
  try {
@@ -10258,12 +10551,15 @@ function createJsonFileTaskStore(config) {
10258
10551
  return filter?.status ? tasks.filter((t) => t.status === filter.status) : tasks;
10259
10552
  },
10260
10553
  async delete(taskId) {
10261
- try {
10262
- await unlink(pathFor(taskId));
10263
- } catch (err2) {
10264
- if (err2.code !== "ENOENT")
10265
- throw err2;
10266
- }
10554
+ const path = pathFor(taskId);
10555
+ return withIdLock(taskId, async () => {
10556
+ try {
10557
+ await unlink(path);
10558
+ } catch (err2) {
10559
+ if (err2.code !== "ENOENT")
10560
+ throw err2;
10561
+ }
10562
+ });
10267
10563
  }
10268
10564
  };
10269
10565
  }
@@ -10511,7 +10807,7 @@ function createInMemoryThreadStore() {
10511
10807
  };
10512
10808
  }
10513
10809
  // ../agents/src/async-agent.ts
10514
- var log8 = createLogger();
10810
+ var log9 = createLogger();
10515
10811
  function createAsyncAgent(config) {
10516
10812
  const tasks = new Map;
10517
10813
  function emitProgress(task, event) {
@@ -10539,7 +10835,7 @@ function createAsyncAgent(config) {
10539
10835
  const store = config.taskStore;
10540
10836
  const snapshot = toPersistedTask(task);
10541
10837
  store.save(snapshot).catch((err2) => {
10542
- log8.warn("async agent task persistence failed", {
10838
+ log9.warn("async agent task persistence failed", {
10543
10839
  taskId: task.id,
10544
10840
  status: task.status,
10545
10841
  error: err2 instanceof Error ? err2.message : String(err2)
@@ -12104,7 +12400,7 @@ function rag(config) {
12104
12400
  // ../rag/src/stores/pgvector.ts
12105
12401
  import { createRequire as createRequire2 } from "node:module";
12106
12402
  var require3 = createRequire2(import.meta.url);
12107
- var log9 = createLogger();
12403
+ var log10 = createLogger();
12108
12404
  var BLOCKED_KEYS3 = new Set(["__proto__", "constructor", "prototype"]);
12109
12405
  var TABLE_NAME_PATTERN2 = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
12110
12406
  function createPgVectorStore(config) {
@@ -12140,7 +12436,7 @@ function createPgVectorStore(config) {
12140
12436
  }
12141
12437
  return client;
12142
12438
  } catch (err2) {
12143
- log9.error("Failed to initialize PgVector store", {
12439
+ log10.error("Failed to initialize PgVector store", {
12144
12440
  error: err2 instanceof Error ? err2.message : String(err2)
12145
12441
  });
12146
12442
  throw new Error("pg is required for PgVector store. Install it as a dependency.");
@@ -13415,7 +13711,7 @@ function createCostEngine(config = {}) {
13415
13711
  }
13416
13712
  // ../observe/src/tracer.ts
13417
13713
  import { writeFileSync } from "node:fs";
13418
- var log10 = createLogger();
13714
+ var log11 = createLogger();
13419
13715
  function observe(config = {}) {
13420
13716
  const {
13421
13717
  output = ["console"],
@@ -13438,7 +13734,7 @@ function observe(config = {}) {
13438
13734
  try {
13439
13735
  writeFileSync(filename, JSON.stringify(spansToExport, null, 2));
13440
13736
  } catch (err2) {
13441
- log10.error("Failed to write trace file", {
13737
+ log11.error("Failed to write trace file", {
13442
13738
  error: err2 instanceof Error ? err2.message : String(err2)
13443
13739
  });
13444
13740
  }
@@ -13513,7 +13809,7 @@ function observe(config = {}) {
13513
13809
  function consoleHandler(span) {
13514
13810
  const duration = span.durationMs !== undefined ? `${span.durationMs}ms` : "running";
13515
13811
  const status = span.status === "error" ? "[ERROR]" : span.status === "ok" ? "[OK]" : "[...]";
13516
- log10.info("span", {
13812
+ log11.info("span", {
13517
13813
  trace: span.traceId,
13518
13814
  span: span.name,
13519
13815
  kind: span.kind,
@@ -13615,7 +13911,7 @@ function createMetrics(options) {
13615
13911
  import { createHash as createHash5 } from "node:crypto";
13616
13912
 
13617
13913
  // ../observe/src/audit-sink.ts
13618
- var log11 = createLogger();
13914
+ var log12 = createLogger();
13619
13915
  function getRetryDelay2(attempt, baseDelayMs, maxDelayMs) {
13620
13916
  const delay = Math.min(baseDelayMs * 2 ** attempt, maxDelayMs);
13621
13917
  return delay * (0.5 + Math.random() * 0.5);
@@ -13643,14 +13939,14 @@ async function deliverToSink(sink, events, retryConfig, deadLetterSink, onError)
13643
13939
  try {
13644
13940
  await sendWithRetry(sink, filtered, retryConfig);
13645
13941
  } catch (error) {
13646
- log11.error("Audit sink delivery failed", { sink: sink.name });
13942
+ log12.error("Audit sink delivery failed", { sink: sink.name });
13647
13943
  onError?.(sink.name, error);
13648
13944
  if (!deadLetterSink)
13649
13945
  return;
13650
13946
  try {
13651
13947
  await deadLetterSink.send(filtered);
13652
13948
  } catch (dlqError) {
13653
- log11.error("Dead letter sink delivery failed", { sink: deadLetterSink.name });
13949
+ log12.error("Dead letter sink delivery failed", { sink: deadLetterSink.name });
13654
13950
  onError?.(deadLetterSink.name, dlqError);
13655
13951
  }
13656
13952
  }
@@ -13694,7 +13990,7 @@ function createSinkManager(config) {
13694
13990
  dispatch(event) {
13695
13991
  if (buffer.length >= maxBufferSize) {
13696
13992
  buffer.shift();
13697
- log11.warn("Audit sink buffer full, dropping oldest event");
13993
+ log12.warn("Audit sink buffer full, dropping oldest event");
13698
13994
  }
13699
13995
  buffer.push(event);
13700
13996
  if (buffer.length >= batchSize)
@@ -14203,7 +14499,7 @@ function createDatadogSink(config) {
14203
14499
  // ../observe/src/audit-sink-jsonl.ts
14204
14500
  import { mkdir as mkdir2, open } from "node:fs/promises";
14205
14501
  import { dirname } from "node:path";
14206
- var log12 = createLogger();
14502
+ var log13 = createLogger();
14207
14503
  function createJsonlSink(config) {
14208
14504
  const { path, fsync = true } = config;
14209
14505
  let handle = null;
@@ -14242,7 +14538,7 @@ function createJsonlSink(config) {
14242
14538
  try {
14243
14539
  await fh.sync();
14244
14540
  } catch (err2) {
14245
- log12.warn("jsonl sink fsync failed", { error: err2 });
14541
+ log13.warn("jsonl sink fsync failed", { error: err2 });
14246
14542
  }
14247
14543
  }
14248
14544
  });
@@ -14323,7 +14619,7 @@ function createProvenanceTracker(options) {
14323
14619
  import { createHash as createHash7 } from "node:crypto";
14324
14620
  import { existsSync, mkdirSync, readFileSync, writeFileSync as writeFileSync2 } from "node:fs";
14325
14621
  import { join as join2 } from "node:path";
14326
- var log13 = createLogger();
14622
+ var log14 = createLogger();
14327
14623
  function createFileExperimentStore(dir) {
14328
14624
  return {
14329
14625
  save(name, data) {
@@ -14334,7 +14630,7 @@ function createFileExperimentStore(dir) {
14334
14630
  const filePath = join2(dir, `${name}.json`);
14335
14631
  writeFileSync2(filePath, JSON.stringify(data, null, 2));
14336
14632
  } catch (err2) {
14337
- log13.error("Failed to save experiment", {
14633
+ log14.error("Failed to save experiment", {
14338
14634
  name,
14339
14635
  error: err2 instanceof Error ? err2.message : String(err2)
14340
14636
  });
@@ -14365,7 +14661,7 @@ function loadFromStore(store, name, stats) {
14365
14661
  stats[vName].metrics[key] = { sum: m.sum, count: m.count };
14366
14662
  }
14367
14663
  }
14368
- log13.debug("Loaded experiment state", { name, totalAssignments: saved.totalAssignments });
14664
+ log14.debug("Loaded experiment state", { name, totalAssignments: saved.totalAssignments });
14369
14665
  }
14370
14666
  function recordMetrics(s, metrics) {
14371
14667
  for (const [key, value] of Object.entries(metrics)) {
@@ -14433,7 +14729,7 @@ function createExperiment(config) {
14433
14729
  const s = stats[variant.name];
14434
14730
  if (s)
14435
14731
  s.assignments++;
14436
- log13.debug("Experiment assignment", {
14732
+ log14.debug("Experiment assignment", {
14437
14733
  experiment: name,
14438
14734
  variant: variant.name,
14439
14735
  userId
@@ -14504,7 +14800,7 @@ function instrumentAgent(agent, tracer) {
14504
14800
  // ../observe/src/studio-exporter.ts
14505
14801
  import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync2, writeFileSync as writeFileSync3 } from "node:fs";
14506
14802
  import { join as join3 } from "node:path";
14507
- var log14 = createLogger();
14803
+ var log15 = createLogger();
14508
14804
  function ensureDir(dirPath) {
14509
14805
  if (!existsSync2(dirPath)) {
14510
14806
  mkdirSync2(dirPath, { recursive: true });
@@ -14514,7 +14810,7 @@ function safeWriteJSON(filePath, data) {
14514
14810
  try {
14515
14811
  writeFileSync3(filePath, JSON.stringify(data, null, 2));
14516
14812
  } catch (err2) {
14517
- log14.error("Studio exporter write failed", {
14813
+ log15.error("Studio exporter write failed", {
14518
14814
  file: filePath,
14519
14815
  error: err2 instanceof Error ? err2.message : String(err2)
14520
14816
  });
@@ -14899,7 +15195,7 @@ function formatComplianceReport(report) {
14899
15195
  `);
14900
15196
  }
14901
15197
  // ../observe/src/otel.ts
14902
- var log15 = createLogger();
15198
+ var log16 = createLogger();
14903
15199
  var SPAN_KIND_MAP = {
14904
15200
  llm: 3,
14905
15201
  tool: 1,
@@ -15040,10 +15336,10 @@ function createOTLPExporter(config) {
15040
15336
  body: JSON.stringify(payload)
15041
15337
  });
15042
15338
  if (!response.ok) {
15043
- log15.error(`OTLP export failed: ${response.status} ${response.statusText}`);
15339
+ log16.error(`OTLP export failed: ${response.status} ${response.statusText}`);
15044
15340
  }
15045
15341
  } catch (err2) {
15046
- log15.error("OTLP export error", { error: err2 instanceof Error ? err2.message : String(err2) });
15342
+ log16.error("OTLP export error", { error: err2 instanceof Error ? err2.message : String(err2) });
15047
15343
  }
15048
15344
  }
15049
15345
  function startAutoFlush() {
@@ -17325,12 +17621,12 @@ function requestIdMiddleware() {
17325
17621
  };
17326
17622
  }
17327
17623
  function requestLoggerMiddleware(logger) {
17328
- const log16 = logger ?? createLogger();
17624
+ const log17 = logger ?? createLogger();
17329
17625
  return async (c, next) => {
17330
17626
  const start = Date.now();
17331
17627
  await next();
17332
17628
  const duration = Date.now() - start;
17333
- log16.info(`${c.req.method} ${c.req.path}`, {
17629
+ log17.info(`${c.req.method} ${c.req.path}`, {
17334
17630
  method: c.req.method,
17335
17631
  path: c.req.path,
17336
17632
  status: c.res.status,
@@ -17673,13 +17969,13 @@ function createRoutes(deps) {
17673
17969
  }
17674
17970
 
17675
17971
  // ../app/src/app.ts
17676
- var log16 = createLogger();
17972
+ var log17 = createLogger();
17677
17973
  function createApp(config) {
17678
17974
  const app = new Hono2;
17679
17975
  app.onError((err2, c) => {
17680
17976
  const statusCode = err2 instanceof ElsiumError ? err2.statusCode ?? 500 : 500;
17681
17977
  const code = err2 instanceof ElsiumError ? err2.code : "UNKNOWN";
17682
- log16.error("Unhandled error", { error: err2.message, code, path: c.req.path });
17978
+ log17.error("Unhandled error", { error: err2.message, code, path: c.req.path });
17683
17979
  return c.json({ error: err2.message, code }, statusCode);
17684
17980
  });
17685
17981
  app.notFound((c) => {
@@ -17725,7 +18021,7 @@ function createApp(config) {
17725
18021
  });
17726
18022
  const serverConfig = config.server ?? {};
17727
18023
  app.use("*", requestIdMiddleware());
17728
- app.use("*", requestLoggerMiddleware(log16));
18024
+ app.use("*", requestLoggerMiddleware(log17));
17729
18025
  if (serverConfig.cors) {
17730
18026
  app.use("*", corsMiddleware(serverConfig.cors));
17731
18027
  }
@@ -17771,11 +18067,11 @@ function createApp(config) {
17771
18067
  const drainTimeoutMs = typeof serverConfig.gracefulShutdown === "object" ? serverConfig.gracefulShutdown.drainTimeoutMs : undefined;
17772
18068
  shutdownManager = createShutdownManager({
17773
18069
  drainTimeoutMs,
17774
- onDrainStart: () => log16.info("Draining connections..."),
17775
- onDrainComplete: () => log16.info("Drain complete")
18070
+ onDrainStart: () => log17.info("Draining connections..."),
18071
+ onDrainComplete: () => log17.info("Drain complete")
17776
18072
  });
17777
18073
  }
17778
- log16.info("ElsiumAI server started", {
18074
+ log17.info("ElsiumAI server started", {
17779
18075
  url: `http://${hostname}:${listenPort}`,
17780
18076
  routes: ["POST /chat", "POST /complete", "GET /health", "GET /metrics", "GET /agents"]
17781
18077
  });
@@ -17792,9 +18088,9 @@ function createApp(config) {
17792
18088
  };
17793
18089
  }
17794
18090
  // ../app/src/rbac.ts
17795
- var log17 = createLogger();
17796
- // ../app/src/tenant.ts
17797
18091
  var log18 = createLogger();
18092
+ // ../app/src/tenant.ts
18093
+ var log19 = createLogger();
17798
18094
  var tenantUsage = new Map;
17799
18095
  function tenantMiddleware(config) {
17800
18096
  const { extractTenant, onUnknownTenant = "reject", defaultTenant } = config;
@@ -17803,13 +18099,13 @@ function tenantMiddleware(config) {
17803
18099
  if (!tenant) {
17804
18100
  if (onUnknownTenant === "default" && defaultTenant) {
17805
18101
  c.set("tenant", defaultTenant);
17806
- log18.debug("Using default tenant", { tenantId: defaultTenant.tenantId });
18102
+ log19.debug("Using default tenant", { tenantId: defaultTenant.tenantId });
17807
18103
  } else {
17808
18104
  return c.json({ error: "Tenant identification required" }, 401);
17809
18105
  }
17810
18106
  } else {
17811
18107
  c.set("tenant", tenant);
17812
- log18.debug("Tenant identified", { tenantId: tenant.tenantId });
18108
+ log19.debug("Tenant identified", { tenantId: tenant.tenantId });
17813
18109
  }
17814
18110
  await next();
17815
18111
  };
@@ -18243,7 +18539,7 @@ function createStdioMCPClient(config) {
18243
18539
  };
18244
18540
  }
18245
18541
  // ../mcp/src/server.ts
18246
- var log19 = createLogger();
18542
+ var log20 = createLogger();
18247
18543
  function createMCPServer(config) {
18248
18544
  let running = false;
18249
18545
  const toolMap = new Map(config.tools.map((t) => [t.name, t]));
@@ -18471,7 +18767,7 @@ function createMCPServer(config) {
18471
18767
  pendingChunks.shift();
18472
18768
  buffer += chunk;
18473
18769
  if (buffer.length > MAX_BUFFER_SIZE2) {
18474
- log19.error("MCP server: buffer size limit exceeded, resetting");
18770
+ log20.error("MCP server: buffer size limit exceeded, resetting");
18475
18771
  buffer = "";
18476
18772
  continue;
18477
18773
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elsium-ai",
3
- "version": "0.11.0",
3
+ "version": "0.12.1",
4
4
  "description": "ElsiumAI — A high-performance, TypeScript-first AI framework",
5
5
  "license": "MIT",
6
6
  "author": "Eric Utrera <ebutrera9103@gmail.com>",
@@ -25,17 +25,17 @@
25
25
  "build": "bun build ./src/index.ts --outdir ./dist --target node && bun x tsc -p tsconfig.build.json --emitDeclarationOnly"
26
26
  },
27
27
  "dependencies": {
28
- "@elsium-ai/core": "^0.11.0",
29
- "@elsium-ai/gateway": "^0.11.0",
30
- "@elsium-ai/agents": "^0.11.0",
31
- "@elsium-ai/tools": "^0.11.0",
32
- "@elsium-ai/rag": "^0.11.0",
33
- "@elsium-ai/workflows": "^0.11.0",
34
- "@elsium-ai/observe": "^0.11.0",
35
- "@elsium-ai/app": "^0.11.0",
36
- "@elsium-ai/testing": "^0.11.0",
37
- "@elsium-ai/mcp": "^0.11.0",
38
- "@elsium-ai/client": "^0.11.0"
28
+ "@elsium-ai/core": "^0.12.1",
29
+ "@elsium-ai/gateway": "^0.12.1",
30
+ "@elsium-ai/agents": "^0.12.1",
31
+ "@elsium-ai/tools": "^0.12.1",
32
+ "@elsium-ai/rag": "^0.12.1",
33
+ "@elsium-ai/workflows": "^0.12.1",
34
+ "@elsium-ai/observe": "^0.12.1",
35
+ "@elsium-ai/app": "^0.12.1",
36
+ "@elsium-ai/testing": "^0.12.1",
37
+ "@elsium-ai/mcp": "^0.12.1",
38
+ "@elsium-ai/client": "^0.12.1"
39
39
  },
40
40
  "devDependencies": {
41
41
  "typescript": "^5.7.0"