@elsium-ai/cli 0.10.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/cli.js +325 -93
- package/dist/commands/eval.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/cli.js
CHANGED
|
@@ -3299,6 +3299,11 @@ async function devCommand(args) {
|
|
|
3299
3299
|
import { existsSync as existsSync3 } from "node:fs";
|
|
3300
3300
|
import { join as join3 } from "node:path";
|
|
3301
3301
|
var VALID_FORMATS = new Set(["text", "junit", "github", "markdown"]);
|
|
3302
|
+
var STRING_FLAGS = {
|
|
3303
|
+
"--dataset": "dataset",
|
|
3304
|
+
"--compare": "compare",
|
|
3305
|
+
"--baseline-dir": "baselineDir"
|
|
3306
|
+
};
|
|
3302
3307
|
function parseFlags(args) {
|
|
3303
3308
|
const flags = {
|
|
3304
3309
|
saveBaseline: false,
|
|
@@ -3308,37 +3313,17 @@ function parseFlags(args) {
|
|
|
3308
3313
|
for (let i = 0;i < args.length; i++) {
|
|
3309
3314
|
const arg = args[i];
|
|
3310
3315
|
const next = args[i + 1];
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
}
|
|
3323
|
-
break;
|
|
3324
|
-
case "--save-baseline":
|
|
3325
|
-
flags.saveBaseline = true;
|
|
3326
|
-
break;
|
|
3327
|
-
case "--baseline-dir":
|
|
3328
|
-
if (next) {
|
|
3329
|
-
flags.baselineDir = next;
|
|
3330
|
-
i++;
|
|
3331
|
-
}
|
|
3332
|
-
break;
|
|
3333
|
-
case "--format":
|
|
3334
|
-
if (next && VALID_FORMATS.has(next)) {
|
|
3335
|
-
flags.format = next;
|
|
3336
|
-
i++;
|
|
3337
|
-
}
|
|
3338
|
-
break;
|
|
3339
|
-
default:
|
|
3340
|
-
if (!arg.startsWith("--"))
|
|
3341
|
-
flags.file = arg;
|
|
3316
|
+
const stringKey = STRING_FLAGS[arg];
|
|
3317
|
+
if (stringKey && next) {
|
|
3318
|
+
flags[stringKey] = next;
|
|
3319
|
+
i++;
|
|
3320
|
+
} else if (arg === "--save-baseline") {
|
|
3321
|
+
flags.saveBaseline = true;
|
|
3322
|
+
} else if (arg === "--format" && next && VALID_FORMATS.has(next)) {
|
|
3323
|
+
flags.format = next;
|
|
3324
|
+
i++;
|
|
3325
|
+
} else if (!arg.startsWith("--")) {
|
|
3326
|
+
flags.file = arg;
|
|
3342
3327
|
}
|
|
3343
3328
|
}
|
|
3344
3329
|
return flags;
|
|
@@ -5829,29 +5814,280 @@ init_src();
|
|
|
5829
5814
|
|
|
5830
5815
|
// ../tools/src/define.ts
|
|
5831
5816
|
init_src();
|
|
5817
|
+
|
|
5818
|
+
// ../tools/src/sandbox/runner.ts
|
|
5819
|
+
init_src();
|
|
5820
|
+
import { Worker } from "node:worker_threads";
|
|
5821
|
+
var WORKER_SCRIPT = `
|
|
5822
|
+
const { parentPort, workerData } = require('node:worker_threads')
|
|
5823
|
+
|
|
5824
|
+
if (!parentPort) throw new Error('worker-runner must be run as a worker thread')
|
|
5825
|
+
|
|
5826
|
+
const { handlerPath } = workerData
|
|
5827
|
+
let handlerPromise = null
|
|
5828
|
+
|
|
5829
|
+
async function loadHandler() {
|
|
5830
|
+
if (!handlerPromise) {
|
|
5831
|
+
handlerPromise = (async () => {
|
|
5832
|
+
const mod = await import(handlerPath)
|
|
5833
|
+
const fn = (mod && (mod.default || mod.handler)) || null
|
|
5834
|
+
if (typeof fn !== 'function') {
|
|
5835
|
+
throw new Error(
|
|
5836
|
+
'Sandbox handler module must export a default function or a named "handler" function: ' + handlerPath,
|
|
5837
|
+
)
|
|
5838
|
+
}
|
|
5839
|
+
return fn
|
|
5840
|
+
})().catch((err) => {
|
|
5841
|
+
handlerPromise = null
|
|
5842
|
+
throw err
|
|
5843
|
+
})
|
|
5844
|
+
}
|
|
5845
|
+
return handlerPromise
|
|
5846
|
+
}
|
|
5847
|
+
|
|
5848
|
+
parentPort.on('message', async (msg) => {
|
|
5849
|
+
if (!msg || msg.type !== 'invoke') return
|
|
5850
|
+
try {
|
|
5851
|
+
const handler = await loadHandler()
|
|
5852
|
+
const result = await handler(msg.input)
|
|
5853
|
+
parentPort.postMessage({
|
|
5854
|
+
type: 'result',
|
|
5855
|
+
invocationId: msg.invocationId,
|
|
5856
|
+
success: true,
|
|
5857
|
+
data: result,
|
|
5858
|
+
})
|
|
5859
|
+
} catch (err) {
|
|
5860
|
+
parentPort.postMessage({
|
|
5861
|
+
type: 'result',
|
|
5862
|
+
invocationId: msg.invocationId,
|
|
5863
|
+
success: false,
|
|
5864
|
+
error: {
|
|
5865
|
+
name: (err && err.name) || 'Error',
|
|
5866
|
+
message: (err && err.message) || String(err),
|
|
5867
|
+
stack: err && err.stack,
|
|
5868
|
+
},
|
|
5869
|
+
})
|
|
5870
|
+
}
|
|
5871
|
+
})
|
|
5872
|
+
`;
|
|
5873
|
+
function rejectPending(state, error) {
|
|
5874
|
+
if (!state.pending)
|
|
5875
|
+
return;
|
|
5876
|
+
const pending = state.pending;
|
|
5877
|
+
state.pending = null;
|
|
5878
|
+
pending.reject(error);
|
|
5879
|
+
}
|
|
5880
|
+
function attachWorkerListeners(worker, state) {
|
|
5881
|
+
worker.on("message", (msg) => {
|
|
5882
|
+
if (msg?.type !== "result")
|
|
5883
|
+
return;
|
|
5884
|
+
const pending = state.pending;
|
|
5885
|
+
if (!pending || pending.id !== msg.invocationId)
|
|
5886
|
+
return;
|
|
5887
|
+
state.pending = null;
|
|
5888
|
+
if (msg.success) {
|
|
5889
|
+
pending.resolve(msg.data);
|
|
5890
|
+
} else {
|
|
5891
|
+
const error = new Error(msg.error?.message ?? "Sandbox handler failed");
|
|
5892
|
+
if (msg.error?.name)
|
|
5893
|
+
error.name = msg.error.name;
|
|
5894
|
+
if (msg.error?.stack)
|
|
5895
|
+
error.stack = msg.error.stack;
|
|
5896
|
+
pending.reject(error);
|
|
5897
|
+
}
|
|
5898
|
+
});
|
|
5899
|
+
worker.on("error", (err2) => {
|
|
5900
|
+
state.worker = null;
|
|
5901
|
+
rejectPending(state, err2);
|
|
5902
|
+
});
|
|
5903
|
+
worker.on("exit", (code) => {
|
|
5904
|
+
if (state.worker === worker)
|
|
5905
|
+
state.worker = null;
|
|
5906
|
+
if (code !== 0) {
|
|
5907
|
+
rejectPending(state, new Error(`Sandbox worker exited with code ${code}`));
|
|
5908
|
+
}
|
|
5909
|
+
});
|
|
5910
|
+
}
|
|
5911
|
+
function ensureWorker(state, handlerPath) {
|
|
5912
|
+
if (state.worker)
|
|
5913
|
+
return state.worker;
|
|
5914
|
+
const w = new Worker(WORKER_SCRIPT, {
|
|
5915
|
+
eval: true,
|
|
5916
|
+
workerData: { handlerPath }
|
|
5917
|
+
});
|
|
5918
|
+
attachWorkerListeners(w, state);
|
|
5919
|
+
w.unref();
|
|
5920
|
+
state.worker = w;
|
|
5921
|
+
return w;
|
|
5922
|
+
}
|
|
5923
|
+
function killWorker(state) {
|
|
5924
|
+
const dying = state.worker;
|
|
5925
|
+
state.worker = null;
|
|
5926
|
+
if (dying) {
|
|
5927
|
+
dying.terminate().catch(() => {});
|
|
5928
|
+
}
|
|
5929
|
+
}
|
|
5930
|
+
function postInvocation(state, worker, invocationId, input, timeoutMs, handlerPath, signal) {
|
|
5931
|
+
return new Promise((resolve2, reject) => {
|
|
5932
|
+
let timer = null;
|
|
5933
|
+
let abortHandler = null;
|
|
5934
|
+
const cleanup = () => {
|
|
5935
|
+
if (timer)
|
|
5936
|
+
clearTimeout(timer);
|
|
5937
|
+
if (signal && abortHandler)
|
|
5938
|
+
signal.removeEventListener("abort", abortHandler);
|
|
5939
|
+
};
|
|
5940
|
+
state.pending = {
|
|
5941
|
+
id: invocationId,
|
|
5942
|
+
resolve: (v) => {
|
|
5943
|
+
cleanup();
|
|
5944
|
+
resolve2(v);
|
|
5945
|
+
},
|
|
5946
|
+
reject: (e) => {
|
|
5947
|
+
cleanup();
|
|
5948
|
+
reject(e);
|
|
5949
|
+
}
|
|
5950
|
+
};
|
|
5951
|
+
timer = setTimeout(() => {
|
|
5952
|
+
if (state.pending?.id !== invocationId)
|
|
5953
|
+
return;
|
|
5954
|
+
const pending = state.pending;
|
|
5955
|
+
state.pending = null;
|
|
5956
|
+
killWorker(state);
|
|
5957
|
+
pending.reject(ElsiumError.timeout(`sandbox(${handlerPath})`, timeoutMs));
|
|
5958
|
+
}, timeoutMs);
|
|
5959
|
+
if (signal) {
|
|
5960
|
+
abortHandler = () => {
|
|
5961
|
+
if (state.pending?.id !== invocationId)
|
|
5962
|
+
return;
|
|
5963
|
+
const pending = state.pending;
|
|
5964
|
+
state.pending = null;
|
|
5965
|
+
killWorker(state);
|
|
5966
|
+
pending.reject(new Error("Sandbox invocation aborted"));
|
|
5967
|
+
};
|
|
5968
|
+
signal.addEventListener("abort", abortHandler, { once: true });
|
|
5969
|
+
}
|
|
5970
|
+
try {
|
|
5971
|
+
worker.postMessage({ type: "invoke", invocationId, input });
|
|
5972
|
+
} catch (err2) {
|
|
5973
|
+
if (state.pending?.id === invocationId)
|
|
5974
|
+
state.pending = null;
|
|
5975
|
+
cleanup();
|
|
5976
|
+
reject(err2 instanceof Error ? err2 : new Error(String(err2)));
|
|
5977
|
+
}
|
|
5978
|
+
});
|
|
5979
|
+
}
|
|
5980
|
+
function createWorkerSandboxRunner(config, defaultTimeoutMs) {
|
|
5981
|
+
const handlerPath = typeof config.handler === "string" ? config.handler : config.handler.href;
|
|
5982
|
+
const timeoutMs = config.timeoutMs ?? defaultTimeoutMs;
|
|
5983
|
+
const state = {
|
|
5984
|
+
worker: null,
|
|
5985
|
+
pending: null,
|
|
5986
|
+
chain: Promise.resolve(),
|
|
5987
|
+
disposed: false
|
|
5988
|
+
};
|
|
5989
|
+
async function runOnce(input, signal) {
|
|
5990
|
+
if (state.disposed) {
|
|
5991
|
+
throw new Error("Sandbox runner has been disposed");
|
|
5992
|
+
}
|
|
5993
|
+
if (signal?.aborted) {
|
|
5994
|
+
throw new Error("Sandbox invocation aborted");
|
|
5995
|
+
}
|
|
5996
|
+
const worker = ensureWorker(state, handlerPath);
|
|
5997
|
+
const invocationId = generateId("si");
|
|
5998
|
+
return postInvocation(state, worker, invocationId, input, timeoutMs, handlerPath, signal);
|
|
5999
|
+
}
|
|
6000
|
+
return {
|
|
6001
|
+
async invoke(input, signal) {
|
|
6002
|
+
const previous = state.chain.catch(() => {
|
|
6003
|
+
return;
|
|
6004
|
+
});
|
|
6005
|
+
const next = previous.then(() => runOnce(input, signal));
|
|
6006
|
+
state.chain = next.catch(() => {
|
|
6007
|
+
return;
|
|
6008
|
+
});
|
|
6009
|
+
return next;
|
|
6010
|
+
},
|
|
6011
|
+
async dispose() {
|
|
6012
|
+
state.disposed = true;
|
|
6013
|
+
const w = state.worker;
|
|
6014
|
+
state.worker = null;
|
|
6015
|
+
rejectPending(state, new Error("Sandbox runner disposed"));
|
|
6016
|
+
if (w) {
|
|
6017
|
+
try {
|
|
6018
|
+
await w.terminate();
|
|
6019
|
+
} catch {}
|
|
6020
|
+
}
|
|
6021
|
+
}
|
|
6022
|
+
};
|
|
6023
|
+
}
|
|
6024
|
+
|
|
6025
|
+
// ../tools/src/define.ts
|
|
6026
|
+
function formatZodErrors(error) {
|
|
6027
|
+
return error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ");
|
|
6028
|
+
}
|
|
6029
|
+
function buildExecutionFailure(toolCallId, startTime, error) {
|
|
6030
|
+
return {
|
|
6031
|
+
success: false,
|
|
6032
|
+
error,
|
|
6033
|
+
toolCallId,
|
|
6034
|
+
durationMs: Math.round(performance.now() - startTime)
|
|
6035
|
+
};
|
|
6036
|
+
}
|
|
6037
|
+
function buildExecutionSuccess(toolCallId, startTime, data) {
|
|
6038
|
+
return {
|
|
6039
|
+
success: true,
|
|
6040
|
+
data,
|
|
6041
|
+
toolCallId,
|
|
6042
|
+
durationMs: Math.round(performance.now() - startTime)
|
|
6043
|
+
};
|
|
6044
|
+
}
|
|
5832
6045
|
function defineTool(config) {
|
|
5833
6046
|
const input = config.input ?? config.parameters;
|
|
5834
6047
|
if (!input) {
|
|
5835
6048
|
throw ElsiumError.validation(`Tool "${config.name}" requires an input schema (use "input" or "parameters" key)`);
|
|
5836
6049
|
}
|
|
5837
|
-
|
|
5838
|
-
|
|
6050
|
+
if (!config.handler && !config.sandbox) {
|
|
6051
|
+
throw ElsiumError.validation(`Tool "${config.name}" requires either an inline "handler" or a "sandbox" config`);
|
|
6052
|
+
}
|
|
6053
|
+
if (config.sandbox && config.sandbox.mode !== "worker") {
|
|
6054
|
+
throw ElsiumError.validation(`Tool "${config.name}" sandbox.mode must be "worker" (received "${config.sandbox.mode}")`);
|
|
6055
|
+
}
|
|
6056
|
+
const { name, description, output, sandbox, timeoutMs = 30000 } = config;
|
|
6057
|
+
const handler = config.handler;
|
|
6058
|
+
let sandboxRunner = null;
|
|
6059
|
+
function getSandboxRunner() {
|
|
6060
|
+
if (!sandboxRunner) {
|
|
6061
|
+
if (!sandbox) {
|
|
6062
|
+
throw ElsiumError.validation(`Tool "${name}" has no sandbox config`);
|
|
6063
|
+
}
|
|
6064
|
+
sandboxRunner = createWorkerSandboxRunner(sandbox, timeoutMs);
|
|
6065
|
+
}
|
|
6066
|
+
return sandboxRunner;
|
|
6067
|
+
}
|
|
6068
|
+
async function runHandler(parsedInput, context) {
|
|
6069
|
+
if (sandbox) {
|
|
6070
|
+
const result = await getSandboxRunner().invoke(parsedInput, context.signal);
|
|
6071
|
+
return result;
|
|
6072
|
+
}
|
|
6073
|
+
if (!handler) {
|
|
6074
|
+
throw ElsiumError.validation(`Tool "${name}" has no handler`);
|
|
6075
|
+
}
|
|
6076
|
+
return handler(parsedInput, context);
|
|
6077
|
+
}
|
|
6078
|
+
const tool = {
|
|
5839
6079
|
name,
|
|
5840
6080
|
description,
|
|
5841
6081
|
inputSchema: input,
|
|
5842
6082
|
outputSchema: output,
|
|
5843
6083
|
timeoutMs,
|
|
6084
|
+
sandbox,
|
|
5844
6085
|
async execute(rawInput, partialCtx) {
|
|
5845
6086
|
const toolCallId = partialCtx?.toolCallId ?? generateId("tc");
|
|
5846
6087
|
const startTime = performance.now();
|
|
5847
6088
|
const parsed = input.safeParse(rawInput);
|
|
5848
6089
|
if (!parsed.success) {
|
|
5849
|
-
return {
|
|
5850
|
-
success: false,
|
|
5851
|
-
error: `Invalid input: ${parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ")}`,
|
|
5852
|
-
toolCallId,
|
|
5853
|
-
durationMs: Math.round(performance.now() - startTime)
|
|
5854
|
-
};
|
|
6090
|
+
return buildExecutionFailure(toolCallId, startTime, `Invalid input: ${formatZodErrors(parsed.error)}`);
|
|
5855
6091
|
}
|
|
5856
6092
|
const controller = new AbortController;
|
|
5857
6093
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
@@ -5862,9 +6098,9 @@ function defineTool(config) {
|
|
|
5862
6098
|
};
|
|
5863
6099
|
try {
|
|
5864
6100
|
const result = await Promise.race([
|
|
5865
|
-
|
|
6101
|
+
runHandler(parsed.data, context),
|
|
5866
6102
|
new Promise((_, reject) => {
|
|
5867
|
-
|
|
6103
|
+
context.signal?.addEventListener("abort", () => {
|
|
5868
6104
|
reject(ElsiumError.timeout(name, timeoutMs));
|
|
5869
6105
|
});
|
|
5870
6106
|
})
|
|
@@ -5872,28 +6108,13 @@ function defineTool(config) {
|
|
|
5872
6108
|
if (output) {
|
|
5873
6109
|
const validated = output.safeParse(result);
|
|
5874
6110
|
if (!validated.success) {
|
|
5875
|
-
return {
|
|
5876
|
-
success: false,
|
|
5877
|
-
error: `Invalid output: ${validated.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ")}`,
|
|
5878
|
-
toolCallId,
|
|
5879
|
-
durationMs: Math.round(performance.now() - startTime)
|
|
5880
|
-
};
|
|
6111
|
+
return buildExecutionFailure(toolCallId, startTime, `Invalid output: ${formatZodErrors(validated.error)}`);
|
|
5881
6112
|
}
|
|
5882
6113
|
}
|
|
5883
|
-
return
|
|
5884
|
-
success: true,
|
|
5885
|
-
data: result,
|
|
5886
|
-
toolCallId,
|
|
5887
|
-
durationMs: Math.round(performance.now() - startTime)
|
|
5888
|
-
};
|
|
6114
|
+
return buildExecutionSuccess(toolCallId, startTime, result);
|
|
5889
6115
|
} catch (error) {
|
|
5890
6116
|
const message = error instanceof Error ? error.message : String(error);
|
|
5891
|
-
return
|
|
5892
|
-
success: false,
|
|
5893
|
-
error: message,
|
|
5894
|
-
toolCallId,
|
|
5895
|
-
durationMs: Math.round(performance.now() - startTime)
|
|
5896
|
-
};
|
|
6117
|
+
return buildExecutionFailure(toolCallId, startTime, message);
|
|
5897
6118
|
} finally {
|
|
5898
6119
|
clearTimeout(timer);
|
|
5899
6120
|
}
|
|
@@ -5904,8 +6125,16 @@ function defineTool(config) {
|
|
|
5904
6125
|
description,
|
|
5905
6126
|
inputSchema: zodToJsonSchema(input)
|
|
5906
6127
|
};
|
|
6128
|
+
},
|
|
6129
|
+
async dispose() {
|
|
6130
|
+
if (sandboxRunner) {
|
|
6131
|
+
const r = sandboxRunner;
|
|
6132
|
+
sandboxRunner = null;
|
|
6133
|
+
await r.dispose();
|
|
6134
|
+
}
|
|
5907
6135
|
}
|
|
5908
6136
|
};
|
|
6137
|
+
return tool;
|
|
5909
6138
|
}
|
|
5910
6139
|
// ../tools/src/toolkit.ts
|
|
5911
6140
|
init_src();
|
|
@@ -10215,9 +10444,6 @@ var currentTimeTool = defineTool({
|
|
|
10215
10444
|
// ../agents/src/approval.ts
|
|
10216
10445
|
init_src();
|
|
10217
10446
|
|
|
10218
|
-
// ../agents/src/identity.ts
|
|
10219
|
-
var DEFAULT_REPLAY_WINDOW_MS = 5 * 60 * 1000;
|
|
10220
|
-
|
|
10221
10447
|
// ../agents/src/memory.ts
|
|
10222
10448
|
init_src();
|
|
10223
10449
|
|
|
@@ -10246,12 +10472,15 @@ init_src();
|
|
|
10246
10472
|
init_src();
|
|
10247
10473
|
// ../agents/src/async-agent.ts
|
|
10248
10474
|
init_src();
|
|
10475
|
+
var log8 = createLogger();
|
|
10249
10476
|
// ../agents/src/session.ts
|
|
10250
10477
|
init_src();
|
|
10251
10478
|
// ../agents/src/react.ts
|
|
10252
10479
|
init_src();
|
|
10253
10480
|
// ../agents/src/scheduler.ts
|
|
10254
10481
|
init_src();
|
|
10482
|
+
// ../agents/src/identity.ts
|
|
10483
|
+
var DEFAULT_REPLAY_WINDOW_MS = 5 * 60 * 1000;
|
|
10255
10484
|
// ../rag/src/loaders.ts
|
|
10256
10485
|
init_src();
|
|
10257
10486
|
// ../rag/src/chunkers.ts
|
|
@@ -10266,7 +10495,7 @@ var vectorStoreRegistry = createRegistry("vectorStore");
|
|
|
10266
10495
|
init_src();
|
|
10267
10496
|
import { createRequire as createRequire2 } from "node:module";
|
|
10268
10497
|
var require3 = createRequire2(import.meta.url);
|
|
10269
|
-
var
|
|
10498
|
+
var log9 = createLogger();
|
|
10270
10499
|
var BLOCKED_KEYS3 = new Set(["__proto__", "constructor", "prototype"]);
|
|
10271
10500
|
// ../rag/src/stores/qdrant.ts
|
|
10272
10501
|
init_src();
|
|
@@ -10481,13 +10710,13 @@ init_src();
|
|
|
10481
10710
|
init_src();
|
|
10482
10711
|
// ../observe/src/tracer.ts
|
|
10483
10712
|
init_src();
|
|
10484
|
-
var
|
|
10713
|
+
var log10 = createLogger();
|
|
10485
10714
|
// ../observe/src/audit.ts
|
|
10486
10715
|
import { createHash as createHash5 } from "node:crypto";
|
|
10487
10716
|
|
|
10488
10717
|
// ../observe/src/audit-sink.ts
|
|
10489
10718
|
init_src();
|
|
10490
|
-
var
|
|
10719
|
+
var log11 = createLogger();
|
|
10491
10720
|
function getRetryDelay2(attempt, baseDelayMs, maxDelayMs) {
|
|
10492
10721
|
const delay = Math.min(baseDelayMs * 2 ** attempt, maxDelayMs);
|
|
10493
10722
|
return delay * (0.5 + Math.random() * 0.5);
|
|
@@ -10515,14 +10744,14 @@ async function deliverToSink(sink, events, retryConfig, deadLetterSink, onError)
|
|
|
10515
10744
|
try {
|
|
10516
10745
|
await sendWithRetry(sink, filtered, retryConfig);
|
|
10517
10746
|
} catch (error) {
|
|
10518
|
-
|
|
10747
|
+
log11.error("Audit sink delivery failed", { sink: sink.name });
|
|
10519
10748
|
onError?.(sink.name, error);
|
|
10520
10749
|
if (!deadLetterSink)
|
|
10521
10750
|
return;
|
|
10522
10751
|
try {
|
|
10523
10752
|
await deadLetterSink.send(filtered);
|
|
10524
10753
|
} catch (dlqError) {
|
|
10525
|
-
|
|
10754
|
+
log11.error("Dead letter sink delivery failed", { sink: deadLetterSink.name });
|
|
10526
10755
|
onError?.(deadLetterSink.name, dlqError);
|
|
10527
10756
|
}
|
|
10528
10757
|
}
|
|
@@ -10566,7 +10795,7 @@ function createSinkManager(config) {
|
|
|
10566
10795
|
dispatch(event) {
|
|
10567
10796
|
if (buffer.length >= maxBufferSize) {
|
|
10568
10797
|
buffer.shift();
|
|
10569
|
-
|
|
10798
|
+
log11.warn("Audit sink buffer full, dropping oldest event");
|
|
10570
10799
|
}
|
|
10571
10800
|
buffer.push(event);
|
|
10572
10801
|
if (buffer.length >= batchSize)
|
|
@@ -10875,15 +11104,18 @@ function auditMiddleware(auditTrail) {
|
|
|
10875
11104
|
}
|
|
10876
11105
|
};
|
|
10877
11106
|
}
|
|
11107
|
+
// ../observe/src/audit-sink-jsonl.ts
|
|
11108
|
+
init_src();
|
|
11109
|
+
var log12 = createLogger();
|
|
10878
11110
|
// ../observe/src/experiment.ts
|
|
10879
11111
|
init_src();
|
|
10880
|
-
var
|
|
11112
|
+
var log13 = createLogger();
|
|
10881
11113
|
// ../observe/src/studio-exporter.ts
|
|
10882
11114
|
init_src();
|
|
10883
|
-
var
|
|
11115
|
+
var log14 = createLogger();
|
|
10884
11116
|
// ../observe/src/otel.ts
|
|
10885
11117
|
init_src();
|
|
10886
|
-
var
|
|
11118
|
+
var log15 = createLogger();
|
|
10887
11119
|
// ../app/src/app.ts
|
|
10888
11120
|
init_src();
|
|
10889
11121
|
|
|
@@ -11109,7 +11341,7 @@ var outgoingEnded = Symbol("outgoingEnded");
|
|
|
11109
11341
|
var incomingDraining = Symbol("incomingDraining");
|
|
11110
11342
|
var MAX_DRAIN_BYTES = 64 * 1024 * 1024;
|
|
11111
11343
|
|
|
11112
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11344
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/compose.js
|
|
11113
11345
|
var compose = (middleware, onError, onNotFound) => {
|
|
11114
11346
|
return (context, next) => {
|
|
11115
11347
|
let index = -1;
|
|
@@ -11153,10 +11385,10 @@ var compose = (middleware, onError, onNotFound) => {
|
|
|
11153
11385
|
};
|
|
11154
11386
|
};
|
|
11155
11387
|
|
|
11156
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11388
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/request/constants.js
|
|
11157
11389
|
var GET_MATCH_RESULT = /* @__PURE__ */ Symbol();
|
|
11158
11390
|
|
|
11159
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11391
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/utils/body.js
|
|
11160
11392
|
var parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {
|
|
11161
11393
|
const { all = false, dot = false } = options;
|
|
11162
11394
|
const headers = request instanceof HonoRequest ? request.raw.headers : request.headers;
|
|
@@ -11227,7 +11459,7 @@ var handleParsingNestedValues = (form, key, value) => {
|
|
|
11227
11459
|
});
|
|
11228
11460
|
};
|
|
11229
11461
|
|
|
11230
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11462
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/utils/url.js
|
|
11231
11463
|
var splitPath = (path) => {
|
|
11232
11464
|
const paths = path.split("/");
|
|
11233
11465
|
if (paths[0] === "") {
|
|
@@ -11427,7 +11659,7 @@ var getQueryParams = (url, key) => {
|
|
|
11427
11659
|
};
|
|
11428
11660
|
var decodeURIComponent_ = decodeURIComponent;
|
|
11429
11661
|
|
|
11430
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11662
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/request.js
|
|
11431
11663
|
var tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);
|
|
11432
11664
|
var HonoRequest = class {
|
|
11433
11665
|
raw;
|
|
@@ -11538,7 +11770,7 @@ var HonoRequest = class {
|
|
|
11538
11770
|
}
|
|
11539
11771
|
};
|
|
11540
11772
|
|
|
11541
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11773
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/utils/html.js
|
|
11542
11774
|
var HtmlEscapedCallbackPhase = {
|
|
11543
11775
|
Stringify: 1,
|
|
11544
11776
|
BeforeStream: 2,
|
|
@@ -11576,7 +11808,7 @@ var resolveCallback = async (str, phase, preserveCallbacks, context, buffer) =>
|
|
|
11576
11808
|
}
|
|
11577
11809
|
};
|
|
11578
11810
|
|
|
11579
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11811
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/context.js
|
|
11580
11812
|
var TEXT_PLAIN = "text/plain; charset=UTF-8";
|
|
11581
11813
|
var setDefaultContentType = (contentType, headers) => {
|
|
11582
11814
|
return {
|
|
@@ -11743,7 +11975,7 @@ var Context = class {
|
|
|
11743
11975
|
};
|
|
11744
11976
|
};
|
|
11745
11977
|
|
|
11746
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11978
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/router.js
|
|
11747
11979
|
var METHOD_NAME_ALL = "ALL";
|
|
11748
11980
|
var METHOD_NAME_ALL_LOWERCASE = "all";
|
|
11749
11981
|
var METHODS = ["get", "post", "put", "delete", "options", "patch"];
|
|
@@ -11751,10 +11983,10 @@ var MESSAGE_MATCHER_IS_ALREADY_BUILT = "Can not add a route since the matcher is
|
|
|
11751
11983
|
var UnsupportedPathError = class extends Error {
|
|
11752
11984
|
};
|
|
11753
11985
|
|
|
11754
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11986
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/utils/constants.js
|
|
11755
11987
|
var COMPOSED_HANDLER = "__COMPOSED_HANDLER";
|
|
11756
11988
|
|
|
11757
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
11989
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/hono-base.js
|
|
11758
11990
|
var notFoundHandler = (c) => {
|
|
11759
11991
|
return c.text("404 Not Found", 404);
|
|
11760
11992
|
};
|
|
@@ -11973,7 +12205,7 @@ var Hono = class _Hono {
|
|
|
11973
12205
|
};
|
|
11974
12206
|
};
|
|
11975
12207
|
|
|
11976
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
12208
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/router/reg-exp-router/matcher.js
|
|
11977
12209
|
var emptyParam = [];
|
|
11978
12210
|
function match(method, path) {
|
|
11979
12211
|
const matchers = this.buildAllMatchers();
|
|
@@ -11994,7 +12226,7 @@ function match(method, path) {
|
|
|
11994
12226
|
return match2(method, path);
|
|
11995
12227
|
}
|
|
11996
12228
|
|
|
11997
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
12229
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/router/reg-exp-router/node.js
|
|
11998
12230
|
var LABEL_REG_EXP_STR = "[^/]+";
|
|
11999
12231
|
var ONLY_WILDCARD_REG_EXP_STR = ".*";
|
|
12000
12232
|
var TAIL_WILDCARD_REG_EXP_STR = "(?:|/.*)";
|
|
@@ -12098,7 +12330,7 @@ var Node = class _Node {
|
|
|
12098
12330
|
}
|
|
12099
12331
|
};
|
|
12100
12332
|
|
|
12101
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
12333
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/router/reg-exp-router/trie.js
|
|
12102
12334
|
var Trie = class {
|
|
12103
12335
|
#context = { varIndex: 0 };
|
|
12104
12336
|
#root = new Node;
|
|
@@ -12154,7 +12386,7 @@ var Trie = class {
|
|
|
12154
12386
|
}
|
|
12155
12387
|
};
|
|
12156
12388
|
|
|
12157
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
12389
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/router/reg-exp-router/router.js
|
|
12158
12390
|
var nullMatcher = [/^$/, [], /* @__PURE__ */ Object.create(null)];
|
|
12159
12391
|
var wildcardRegExpCache = /* @__PURE__ */ Object.create(null);
|
|
12160
12392
|
function buildWildcardRegExp(path) {
|
|
@@ -12319,7 +12551,7 @@ var RegExpRouter = class {
|
|
|
12319
12551
|
}
|
|
12320
12552
|
};
|
|
12321
12553
|
|
|
12322
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
12554
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/router/reg-exp-router/prepared-router.js
|
|
12323
12555
|
var PreparedRegExpRouter = class {
|
|
12324
12556
|
name = "PreparedRegExpRouter";
|
|
12325
12557
|
#matchers;
|
|
@@ -12391,7 +12623,7 @@ var PreparedRegExpRouter = class {
|
|
|
12391
12623
|
match = match;
|
|
12392
12624
|
};
|
|
12393
12625
|
|
|
12394
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
12626
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/router/smart-router/router.js
|
|
12395
12627
|
var SmartRouter = class {
|
|
12396
12628
|
name = "SmartRouter";
|
|
12397
12629
|
#routers = [];
|
|
@@ -12446,7 +12678,7 @@ var SmartRouter = class {
|
|
|
12446
12678
|
}
|
|
12447
12679
|
};
|
|
12448
12680
|
|
|
12449
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
12681
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/router/trie-router/node.js
|
|
12450
12682
|
var emptyParams = /* @__PURE__ */ Object.create(null);
|
|
12451
12683
|
var hasChildren = (children) => {
|
|
12452
12684
|
for (const _ in children) {
|
|
@@ -12615,7 +12847,7 @@ var Node2 = class _Node2 {
|
|
|
12615
12847
|
}
|
|
12616
12848
|
};
|
|
12617
12849
|
|
|
12618
|
-
// ../../node_modules/.bun/hono@4.12.
|
|
12850
|
+
// ../../node_modules/.bun/hono@4.12.18/node_modules/hono/dist/router/trie-router/router.js
|
|
12619
12851
|
var TrieRouter = class {
|
|
12620
12852
|
name = "TrieRouter";
|
|
12621
12853
|
#node;
|
|
@@ -12644,19 +12876,19 @@ init_src();
|
|
|
12644
12876
|
init_src();
|
|
12645
12877
|
|
|
12646
12878
|
// ../app/src/app.ts
|
|
12647
|
-
var
|
|
12879
|
+
var log16 = createLogger();
|
|
12648
12880
|
// ../app/src/rbac.ts
|
|
12649
12881
|
init_src();
|
|
12650
|
-
var
|
|
12882
|
+
var log17 = createLogger();
|
|
12651
12883
|
// ../app/src/tenant.ts
|
|
12652
12884
|
init_src();
|
|
12653
|
-
var
|
|
12885
|
+
var log18 = createLogger();
|
|
12654
12886
|
var tenantUsage = new Map;
|
|
12655
12887
|
// ../mcp/src/client.ts
|
|
12656
12888
|
init_src();
|
|
12657
12889
|
// ../mcp/src/server.ts
|
|
12658
12890
|
init_src();
|
|
12659
|
-
var
|
|
12891
|
+
var log19 = createLogger();
|
|
12660
12892
|
// ../mcp/src/trust.ts
|
|
12661
12893
|
init_src();
|
|
12662
12894
|
var MAX_TOOL_OUTPUT_SIZE = 1024 * 1024;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"AAwIA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,iBAwD/C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elsium-ai/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "CLI tool for ElsiumAI projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Eric Utrera <ebutrera9103@gmail.com>",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"dev": "bun --watch src/cli.ts"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@elsium-ai/core": "^0.
|
|
28
|
-
"@elsium-ai/observe": "^0.
|
|
29
|
-
"elsium-ai": "^0.
|
|
27
|
+
"@elsium-ai/core": "^0.12.0",
|
|
28
|
+
"@elsium-ai/observe": "^0.12.0",
|
|
29
|
+
"elsium-ai": "^0.12.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"typescript": "^5.7.0"
|