Sign In

@trustmodel/sdk

Package Overview
Dependencies
Maintainers
2
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@trustmodel/sdk - npm Package Compare versions

Comparing version
0.2.1
to
0.3.0
+3
dist/cli.d.ts
#!/usr/bin/env node
export {};
//# sourceMappingURL=cli.d.ts.map
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
#!/usr/bin/env node
/** `trustmodel` CLI — the one-command way to evaluate an agent from any TS/JS codebase.
*
* npm i @trustmodel/sdk
* export TRUSTMODEL_API_KEY=tm-...
* npx trustmodel eval-agent # auto-finds the newest .codenow/runs recording
* npx trustmodel eval-agent --run run.jsonl # a Claude Agent SDK recorded run
* npx trustmodel eval-agent --trace t.json # an agentic trace ({ goal, steps })
* npx trustmodel eval-agent --agent sophia-agent --framework claude-agent-sdk --dry-run
*/
import * as fs from "node:fs";
import { TrustModelClient } from "./client.js";
import { traceFromRunFile, findNewestRun } from "./traces/claudeAgent.js";
function flag(name) {
const i = process.argv.indexOf(`--${name}`);
return i >= 0 ? process.argv[i + 1] : undefined;
}
const has = (name) => process.argv.includes(`--${name}`);
const HELP = `trustmodel — evaluate an AI agent's trace and get a TrustScore.
Usage:
trustmodel eval-agent [options]
Options:
--run <file.jsonl> A Claude Agent SDK recorded run to convert + evaluate.
--trace <file.json> An agentic trace ({ goal, name, agent_framework, steps[] }).
(neither) Auto-detect the newest .codenow/runs/*/*.jsonl recording.
--agent <slug> GovernedAgent slug to bind the score to (AGP fleet).
--framework <name> Agent framework (default: claude-agent-sdk).
--dry-run Print the trace that would be sent; no API call.
-h, --help Show this help.
Env: TRUSTMODEL_API_KEY (required unless --dry-run), TRUSTMODEL_GOVERNED_AGENT,
TRUSTMODEL_BASE_URL, TRUSTMODEL_ORGANIZATION_ID.`;
async function evalAgent() {
// Resolve the trace: explicit --trace, explicit --run, or auto-detect a recording.
let trace;
let source;
const traceFile = flag("trace");
const runFile = flag("run") ?? (traceFile ? undefined : findNewestRun() ?? undefined);
if (traceFile) {
trace = JSON.parse(fs.readFileSync(traceFile, "utf-8"));
source = traceFile;
}
else if (runFile) {
trace = traceFromRunFile(runFile);
source = runFile;
}
else {
console.error("No trace found. Pass --trace <file.json> or --run <file.jsonl>, or run from a\n" +
"project with recorded runs under .codenow/runs/. See `trustmodel eval-agent --help`.");
return 1;
}
const framework = flag("framework") ?? trace.agent_framework ?? "claude-agent-sdk";
const agent = flag("agent") ?? process.env.TRUSTMODEL_GOVERNED_AGENT;
const toolCalls = trace.steps.filter((s) => s.step_type === "tool_call").length;
console.log(`▶ trace: ${source}`);
console.log(`▶ steps: ${trace.steps.length} (${toolCalls} tool calls)`);
console.log(`▶ framework: ${framework}`);
console.log(`▶ governed agent: ${agent ?? "(none — score won't attach to an AGP fleet card)"}`);
if (has("dry-run")) {
console.log("\n--dry-run — trace that would be sent:\n" + JSON.stringify(trace, null, 2));
return 0;
}
const apiKey = process.env.TRUSTMODEL_API_KEY;
if (!apiKey) {
console.error("\nTRUSTMODEL_API_KEY is required. Create one at app.trustmodel.ai/settings/api-keys.");
return 1;
}
const tm = new TrustModelClient({ apiKey });
console.log("\n─── Submitting (one call, inline trace) ───");
const run = await tm.agentic.evaluate({ trace, agentFramework: framework, governedAgent: agent });
const id = run.evaluation_run_id;
console.log(` ✓ evaluation_run_id: ${id} (${run.status})`);
console.log("─── Scoring ───");
const started = Date.now();
for (;;) {
if (Date.now() - started > 15 * 60_000) {
console.error("\nTimed out waiting for the score.");
return 1;
}
await new Promise((r) => setTimeout(r, 5000));
const res = (await tm.agentic.get(id));
const status = res.status ?? res.latest_evaluation?.status;
if (status === "completed" || status === "COMPLETED") {
const score = res.overall_score ?? res.latest_evaluation?.overall_score;
console.log(`\n✅ Agent TrustScore: ${score}`);
if (agent)
console.log(` Attached to the AGP fleet for "${agent}".`);
return 0;
}
if (status === "failed" || status === "FAILED") {
console.error(`\nEvaluation failed (run ${id}).`);
return 1;
}
process.stdout.write(".");
}
}
async function main() {
const cmd = process.argv[2];
if (!cmd || has("help") || has("h") || cmd === "-h" || cmd === "--help") {
console.log(HELP);
process.exit(cmd && cmd !== "-h" && cmd !== "--help" ? 1 : 0);
}
if (cmd === "eval-agent") {
process.exit(await evalAgent());
}
console.error(`Unknown command: ${cmd}\n\n${HELP}`);
process.exit(1);
}
main().catch((e) => {
console.error("\n✗ " + (e?.message ?? String(e)));
process.exit(1);
});
//# sourceMappingURL=cli.js.map
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
/** Convert a Claude Agent SDK run into a TrustModel agentic trace.
*
* The Claude Agent SDK's `query()` yields messages; agent recorders (e.g. CodeNow's
* `.codenow/runs/<slug>/*.jsonl`) persist each as `{ kind: "message", message }` lines.
* This turns that into the `{ goal, steps[] }` shape `tm.agentic.evaluate()` wants, so a
* one-command CLI eval works out of the box. */
import type { AgenticTrace } from "../types.js";
/** Convert recorded-run JSONL (one JSON object per line) into an agentic trace. */
export declare function traceFromClaudeAgentRun(jsonl: string): AgenticTrace;
/** Read + convert a recorded-run file. */
export declare function traceFromRunFile(file: string): AgenticTrace;
/** Newest recorded `.jsonl` run (across all slugs, or a specific `slug`), or null. */
export declare function findNewestRun(opts?: {
slug?: string;
runsDir?: string;
cwd?: string;
}): string | null;
//# sourceMappingURL=claudeAgent.d.ts.map
{"version":3,"file":"claudeAgent.d.ts","sourceRoot":"","sources":["../../src/traces/claudeAgent.ts"],"names":[],"mappings":"AAAA;;;;;gDAKgD;AAIhD,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,aAAa,CAAC;AAE3D,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAkEnE;AAED,0CAA0C;AAC1C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAE3D;AAeD,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,GAAG,IAAI,CAsBzG"}
/** Convert a Claude Agent SDK run into a TrustModel agentic trace.
*
* The Claude Agent SDK's `query()` yields messages; agent recorders (e.g. CodeNow's
* `.codenow/runs/<slug>/*.jsonl`) persist each as `{ kind: "message", message }` lines.
* This turns that into the `{ goal, steps[] }` shape `tm.agentic.evaluate()` wants, so a
* one-command CLI eval works out of the box. */
import * as fs from "node:fs";
import * as path from "node:path";
/** Convert recorded-run JSONL (one JSON object per line) into an agentic trace. */
export function traceFromClaudeAgentRun(jsonl) {
const steps = [];
let goal = "";
const toolNameById = new Map();
for (const line of jsonl.split("\n")) {
if (!line.trim())
continue;
let rec;
try {
rec = JSON.parse(line);
}
catch {
continue;
}
if (rec.kind === "run.start" || (rec.input && !rec.message)) {
goal ||= String(rec.input ?? rec.opts?.input ?? "");
continue;
}
if (rec.kind && rec.kind !== "message")
continue;
const m = rec.message ?? rec;
if (!m || typeof m !== "object")
continue;
if (m.type === "assistant") {
const content = m.message?.content ?? m.content ?? [];
for (const b of Array.isArray(content) ? content : []) {
if (b?.type === "text" && b.text) {
steps.push({ step_type: "thought", content: String(b.text) });
}
else if (b?.type === "tool_use") {
if (b.id && b.name)
toolNameById.set(b.id, b.name);
steps.push({
step_type: "tool_call",
content: `Call ${b.name}`,
tool_name: b.name,
tool_input: b.input,
});
}
}
}
else if (m.type === "user") {
const content = m.message?.content ?? m.content ?? [];
for (const b of Array.isArray(content) ? content : []) {
if (b?.type === "tool_result") {
steps.push({
step_type: "tool_result",
content: "tool result",
tool_name: toolNameById.get(b.tool_use_id),
tool_output: b.content,
});
}
}
}
else if (m.type === "result") {
const text = m.result ?? m.message ?? "";
if (text)
steps.push({ step_type: "final_answer", content: String(text) });
}
}
if (!steps.some((s) => s.step_type === "final_answer")) {
const lastThought = [...steps].reverse().find((s) => s.step_type === "thought");
if (lastThought)
steps.push({ step_type: "final_answer", content: lastThought.content });
}
return {
goal: goal || "Agent conversation",
name: "Agent run",
agent_framework: "claude-agent-sdk",
steps,
};
}
/** Read + convert a recorded-run file. */
export function traceFromRunFile(file) {
return traceFromClaudeAgentRun(fs.readFileSync(file, "utf-8"));
}
/** Walk up from `startDir` to find a `.codenow/runs` directory. */
function findRunsRoot(startDir) {
let cur = path.resolve(startDir);
for (let i = 0; i < 12; i++) {
const candidate = path.join(cur, ".codenow", "runs");
if (fs.existsSync(candidate))
return candidate;
const parent = path.dirname(cur);
if (parent === cur)
break;
cur = parent;
}
return null;
}
/** Newest recorded `.jsonl` run (across all slugs, or a specific `slug`), or null. */
export function findNewestRun(opts = {}) {
const root = opts.runsDir ?? findRunsRoot(opts.cwd ?? process.cwd());
if (!root || !fs.existsSync(root))
return null;
const slugs = opts.slug
? [opts.slug]
: fs.readdirSync(root, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
const files = [];
for (const slug of slugs) {
const dir = path.join(root, slug);
let entries = [];
try {
entries = fs.readdirSync(dir).filter((f) => f.endsWith(".jsonl"));
}
catch {
continue;
}
for (const f of entries) {
const full = path.join(dir, f);
files.push({ f: full, t: fs.statSync(full).mtimeMs });
}
}
files.sort((a, b) => b.t - a.t);
return files[0]?.f ?? null;
}
//# sourceMappingURL=claudeAgent.js.map
{"version":3,"file":"claudeAgent.js","sourceRoot":"","sources":["../../src/traces/claudeAgent.ts"],"names":[],"mappings":"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"}
+1
-0

@@ -11,2 +11,3 @@ /** @trustmodel/sdk — official TypeScript/Node SDK for TrustModel. */

export { enableAutoInstrumentation, KNOWN_INSTRUMENTORS, type AutoInstrumentation, type ModuleLoader, } from "./telemetry/instrumentors.js";
export { traceFromClaudeAgentRun, traceFromRunFile, findNewestRun, } from "./traces/claudeAgent.js";
//# sourceMappingURL=index.d.ts.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,uBAAuB,EAC5B,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,GACT,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,uBAAuB,EAC5B,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,GACT,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,GACd,MAAM,yBAAyB,CAAC"}

@@ -9,2 +9,3 @@ /** @trustmodel/sdk — official TypeScript/Node SDK for TrustModel. */

export { enableAutoInstrumentation, KNOWN_INSTRUMENTORS, } from "./telemetry/instrumentors.js";
export { traceFromClaudeAgentRun, traceFromRunFile, findNewestRun, } from "./traces/claudeAgent.js";
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,gBAAgB,GAKjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAcrB,sFAAsF;AACtF,8CAA8C;AAC9C,OAAO,EACL,QAAQ,EACR,aAAa,GAId,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GAGpB,MAAM,8BAA8B,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,gBAAgB,GAKjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAcrB,sFAAsF;AACtF,8CAA8C;AAC9C,OAAO,EACL,QAAQ,EACR,aAAa,GAId,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GAGpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,GACd,MAAM,yBAAyB,CAAC"}
{
"name": "@trustmodel/sdk",
"version": "0.2.1",
"version": "0.3.0",
"description": "Official TypeScript/Node SDK for TrustModel \u2014 AI trust evaluation, OTel telemetry, and agent governance (AGP).",

@@ -95,3 +95,6 @@ "type": "module",

"vitest": "^2.1.8"
},
"bin": {
"trustmodel": "./dist/cli.js"
}
}

@@ -22,2 +22,11 @@ # @trustmodel/sdk

## One-command agent eval (CLI)
```bash
npm i @trustmodel/sdk
export TRUSTMODEL_API_KEY=tm-...
npx trustmodel eval-agent # auto-detects .codenow/runs recordings → TrustScore
# npx trustmodel eval-agent --trace trace.json --agent my-agent
```
## Quick start

@@ -24,0 +33,0 @@