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 +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +378 -82
- package/package.json +12 -12
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
-
|
|
4018
|
-
|
|
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
|
-
|
|
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:
|
|
4330
|
+
signal: controller.signal
|
|
4042
4331
|
};
|
|
4043
4332
|
try {
|
|
4044
4333
|
const result = await Promise.race([
|
|
4045
|
-
|
|
4046
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
10239
|
-
|
|
10240
|
-
|
|
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
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10264
|
-
|
|
10265
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
15339
|
+
log16.error(`OTLP export failed: ${response.status} ${response.statusText}`);
|
|
15044
15340
|
}
|
|
15045
15341
|
} catch (err2) {
|
|
15046
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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(
|
|
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: () =>
|
|
17775
|
-
onDrainComplete: () =>
|
|
18070
|
+
onDrainStart: () => log17.info("Draining connections..."),
|
|
18071
|
+
onDrainComplete: () => log17.info("Drain complete")
|
|
17776
18072
|
});
|
|
17777
18073
|
}
|
|
17778
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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.
|
|
29
|
-
"@elsium-ai/gateway": "^0.
|
|
30
|
-
"@elsium-ai/agents": "^0.
|
|
31
|
-
"@elsium-ai/tools": "^0.
|
|
32
|
-
"@elsium-ai/rag": "^0.
|
|
33
|
-
"@elsium-ai/workflows": "^0.
|
|
34
|
-
"@elsium-ai/observe": "^0.
|
|
35
|
-
"@elsium-ai/app": "^0.
|
|
36
|
-
"@elsium-ai/testing": "^0.
|
|
37
|
-
"@elsium-ai/mcp": "^0.
|
|
38
|
-
"@elsium-ai/client": "^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"
|