elsium-ai 0.11.0 → 0.12.0

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,30 +4008,278 @@ 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
+ function formatZodErrors(error) {
4219
+ return error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ");
4220
+ }
4221
+ function buildExecutionFailure(toolCallId, startTime, error) {
4222
+ return {
4223
+ success: false,
4224
+ error,
4225
+ toolCallId,
4226
+ durationMs: Math.round(performance.now() - startTime)
4227
+ };
4228
+ }
4229
+ function buildExecutionSuccess(toolCallId, startTime, data) {
4230
+ return {
4231
+ success: true,
4232
+ data,
4233
+ toolCallId,
4234
+ durationMs: Math.round(performance.now() - startTime)
4235
+ };
4236
+ }
4012
4237
  function defineTool(config) {
4013
4238
  const input = config.input ?? config.parameters;
4014
4239
  if (!input) {
4015
4240
  throw ElsiumError.validation(`Tool "${config.name}" requires an input schema (use "input" or "parameters" key)`);
4016
4241
  }
4017
- const { name, description, output, handler, timeoutMs = 30000 } = config;
4018
- return {
4242
+ if (!config.handler && !config.sandbox) {
4243
+ throw ElsiumError.validation(`Tool "${config.name}" requires either an inline "handler" or a "sandbox" config`);
4244
+ }
4245
+ if (config.sandbox && config.sandbox.mode !== "worker") {
4246
+ throw ElsiumError.validation(`Tool "${config.name}" sandbox.mode must be "worker" (received "${config.sandbox.mode}")`);
4247
+ }
4248
+ const { name, description, output, sandbox, timeoutMs = 30000 } = config;
4249
+ const handler = config.handler;
4250
+ let sandboxRunner = null;
4251
+ function getSandboxRunner() {
4252
+ if (!sandboxRunner) {
4253
+ if (!sandbox) {
4254
+ throw ElsiumError.validation(`Tool "${name}" has no sandbox config`);
4255
+ }
4256
+ sandboxRunner = createWorkerSandboxRunner(sandbox, timeoutMs);
4257
+ }
4258
+ return sandboxRunner;
4259
+ }
4260
+ async function runHandler(parsedInput, context) {
4261
+ if (sandbox) {
4262
+ const result = await getSandboxRunner().invoke(parsedInput, context.signal);
4263
+ return result;
4264
+ }
4265
+ if (!handler) {
4266
+ throw ElsiumError.validation(`Tool "${name}" has no handler`);
4267
+ }
4268
+ return handler(parsedInput, context);
4269
+ }
4270
+ const tool = {
4019
4271
  name,
4020
4272
  description,
4021
4273
  inputSchema: input,
4022
4274
  outputSchema: output,
4023
4275
  timeoutMs,
4276
+ sandbox,
4024
4277
  async execute(rawInput, partialCtx) {
4025
4278
  const toolCallId = partialCtx?.toolCallId ?? generateId("tc");
4026
4279
  const startTime = performance.now();
4027
4280
  const parsed = input.safeParse(rawInput);
4028
4281
  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
- };
4282
+ return buildExecutionFailure(toolCallId, startTime, `Invalid input: ${formatZodErrors(parsed.error)}`);
4035
4283
  }
4036
4284
  const controller = new AbortController;
4037
4285
  const timer = setTimeout(() => controller.abort(), timeoutMs);
@@ -4042,9 +4290,9 @@ function defineTool(config) {
4042
4290
  };
4043
4291
  try {
4044
4292
  const result = await Promise.race([
4045
- handler(parsed.data, context),
4293
+ runHandler(parsed.data, context),
4046
4294
  new Promise((_, reject) => {
4047
- controller.signal.addEventListener("abort", () => {
4295
+ context.signal?.addEventListener("abort", () => {
4048
4296
  reject(ElsiumError.timeout(name, timeoutMs));
4049
4297
  });
4050
4298
  })
@@ -4052,28 +4300,13 @@ function defineTool(config) {
4052
4300
  if (output) {
4053
4301
  const validated = output.safeParse(result);
4054
4302
  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
- };
4303
+ return buildExecutionFailure(toolCallId, startTime, `Invalid output: ${formatZodErrors(validated.error)}`);
4061
4304
  }
4062
4305
  }
4063
- return {
4064
- success: true,
4065
- data: result,
4066
- toolCallId,
4067
- durationMs: Math.round(performance.now() - startTime)
4068
- };
4306
+ return buildExecutionSuccess(toolCallId, startTime, result);
4069
4307
  } catch (error) {
4070
4308
  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
- };
4309
+ return buildExecutionFailure(toolCallId, startTime, message);
4077
4310
  } finally {
4078
4311
  clearTimeout(timer);
4079
4312
  }
@@ -4084,8 +4317,16 @@ function defineTool(config) {
4084
4317
  description,
4085
4318
  inputSchema: zodToJsonSchema(input)
4086
4319
  };
4320
+ },
4321
+ async dispose() {
4322
+ if (sandboxRunner) {
4323
+ const r = sandboxRunner;
4324
+ sandboxRunner = null;
4325
+ await r.dispose();
4326
+ }
4087
4327
  }
4088
4328
  };
4329
+ return tool;
4089
4330
  }
4090
4331
  // ../tools/src/toolkit.ts
4091
4332
  function createToolkit(name, tools) {
@@ -10199,6 +10440,7 @@ function createJsonFileTaskStore(config) {
10199
10440
  const { dir } = config;
10200
10441
  let initialized = false;
10201
10442
  let initPromise = null;
10443
+ const writeChains = new Map;
10202
10444
  async function ensureDir() {
10203
10445
  if (initialized)
10204
10446
  return;
@@ -10213,6 +10455,18 @@ function createJsonFileTaskStore(config) {
10213
10455
  assertSafeTaskId(taskId);
10214
10456
  return join(dir, `${taskId}.json`);
10215
10457
  }
10458
+ function withIdLock(taskId, fn) {
10459
+ const previous = writeChains.get(taskId) ?? Promise.resolve();
10460
+ const next = previous.catch(() => {
10461
+ return;
10462
+ }).then(fn);
10463
+ writeChains.set(taskId, next);
10464
+ next.finally(() => {
10465
+ if (writeChains.get(taskId) === next)
10466
+ writeChains.delete(taskId);
10467
+ });
10468
+ return next;
10469
+ }
10216
10470
  async function readDirSafe() {
10217
10471
  try {
10218
10472
  await ensureDir();
@@ -10233,11 +10487,13 @@ function createJsonFileTaskStore(config) {
10233
10487
  }
10234
10488
  return {
10235
10489
  async save(task) {
10236
- await ensureDir();
10237
10490
  const path = pathFor(task.id);
10238
- const tmp = `${path}.tmp`;
10239
- await writeFile(tmp, JSON.stringify(task), "utf8");
10240
- await rename(tmp, path);
10491
+ return withIdLock(task.id, async () => {
10492
+ await ensureDir();
10493
+ const tmp = `${path}.tmp`;
10494
+ await writeFile(tmp, JSON.stringify(task), "utf8");
10495
+ await rename(tmp, path);
10496
+ });
10241
10497
  },
10242
10498
  async load(taskId) {
10243
10499
  try {
@@ -10258,12 +10514,15 @@ function createJsonFileTaskStore(config) {
10258
10514
  return filter?.status ? tasks.filter((t) => t.status === filter.status) : tasks;
10259
10515
  },
10260
10516
  async delete(taskId) {
10261
- try {
10262
- await unlink(pathFor(taskId));
10263
- } catch (err2) {
10264
- if (err2.code !== "ENOENT")
10265
- throw err2;
10266
- }
10517
+ const path = pathFor(taskId);
10518
+ return withIdLock(taskId, async () => {
10519
+ try {
10520
+ await unlink(path);
10521
+ } catch (err2) {
10522
+ if (err2.code !== "ENOENT")
10523
+ throw err2;
10524
+ }
10525
+ });
10267
10526
  }
10268
10527
  };
10269
10528
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elsium-ai",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
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.0",
29
+ "@elsium-ai/gateway": "^0.12.0",
30
+ "@elsium-ai/agents": "^0.12.0",
31
+ "@elsium-ai/tools": "^0.12.0",
32
+ "@elsium-ai/rag": "^0.12.0",
33
+ "@elsium-ai/workflows": "^0.12.0",
34
+ "@elsium-ai/observe": "^0.12.0",
35
+ "@elsium-ai/app": "^0.12.0",
36
+ "@elsium-ai/testing": "^0.12.0",
37
+ "@elsium-ai/mcp": "^0.12.0",
38
+ "@elsium-ai/client": "^0.12.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "typescript": "^5.7.0"