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 +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +297 -38
- 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,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
|
-
|
|
4018
|
-
|
|
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
|
-
|
|
4293
|
+
runHandler(parsed.data, context),
|
|
4046
4294
|
new Promise((_, reject) => {
|
|
4047
|
-
|
|
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
|
-
|
|
10239
|
-
|
|
10240
|
-
|
|
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
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10264
|
-
|
|
10265
|
-
|
|
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.
|
|
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.
|
|
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.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"
|