@tangle-network/traces 0.8.24 → 0.8.26
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/{chunk-4LLOYL36.js → chunk-6N2KVDOU.js} +142 -5
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.js +3 -1
- package/package.json +1 -1
|
@@ -297,7 +297,9 @@ import { computeToolUseMetrics } from "@tangle-network/agent-eval";
|
|
|
297
297
|
import { stuckLoopView } from "@tangle-network/agent-eval/pipelines";
|
|
298
298
|
async function runPipelines(spans, opts = {}) {
|
|
299
299
|
const { store, runIds } = await toRuntimeStore(spans);
|
|
300
|
-
const
|
|
300
|
+
const loopEligible = spans.filter((item) => item.attributes["traces.expected_blocking"] !== true);
|
|
301
|
+
const { store: loopStore } = await toRuntimeStore(loopEligible);
|
|
302
|
+
const stuckLoops = await stuckLoopView(loopStore, { minOccurrences: opts.minLoopOccurrences ?? 3 });
|
|
301
303
|
const toolUse = await Promise.all(runIds.map((runId) => computeToolUseMetrics(store, runId)));
|
|
302
304
|
return { stuckLoops, toolUse };
|
|
303
305
|
}
|
|
@@ -808,6 +810,33 @@ function outputIsError(output) {
|
|
|
808
810
|
const error = /"success"\s*:\s*false|exit(?:_| )code["\s:]+[1-9]|\bcommand failed\b|\bENOENT\b|\berror:/i.test(s);
|
|
809
811
|
return { error, message: error ? s.slice(0, 500) : "" };
|
|
810
812
|
}
|
|
813
|
+
function singleNestedToolName(input) {
|
|
814
|
+
if (!input) return null;
|
|
815
|
+
const names = [...input.matchAll(/\btools\.([A-Za-z][A-Za-z0-9_]*)\s*\(/g)].map((match) => match[1]);
|
|
816
|
+
const unique = [...new Set(names)];
|
|
817
|
+
return unique.length === 1 ? unique[0] : null;
|
|
818
|
+
}
|
|
819
|
+
function toolInputToString(input) {
|
|
820
|
+
if (typeof input === "string") return input;
|
|
821
|
+
if (input == null) return void 0;
|
|
822
|
+
return JSON.stringify(input);
|
|
823
|
+
}
|
|
824
|
+
var verificationCommand = /\b(?:pnpm|npm|yarn|bun)\s+(?:run\s+)?(?:test|typecheck|lint|build|check)(?::[A-Za-z0-9:_-]+)?\b|\b(?:vitest|jest|pytest|tsc|biome|eslint|sha256sum|pdfinfo|pdftotext)\b|\bgo\s+test\b|\bcargo\s+(?:test|check|clippy|build)\b|\bgit\s+(?:status|diff|show|merge-tree)\b|\bgh-drew\s+pr\s+(?:view|checks)\b/i;
|
|
825
|
+
function hasReadOnlyCurl(input) {
|
|
826
|
+
if (!/\bcurl\b/i.test(input)) return false;
|
|
827
|
+
const method = input.match(/(?:^|\s)-X(?:=|\s*)([A-Za-z]+)\b/)?.[1] ?? input.match(/(?:^|\s)--request(?:=|\s+)([A-Za-z]+)\b/i)?.[1];
|
|
828
|
+
if (method && !/^(?:GET|HEAD)$/i.test(method)) return false;
|
|
829
|
+
return !/(?:^|\s)-(?:d|F|T)(?:\S*|\s+\S+)|(?:^|\s)--(?:data(?:-ascii|-binary|-raw|-urlencode)?|form(?:-string)?|json|upload-file)(?:=|\s)/i.test(input);
|
|
830
|
+
}
|
|
831
|
+
function classifyNestedTool(name, input) {
|
|
832
|
+
return name === "exec_command" && input && (verificationCommand.test(input) || hasReadOnlyCurl(input)) ? "exec_command.verify" : name;
|
|
833
|
+
}
|
|
834
|
+
function isExpectedBlockingTool(name, input) {
|
|
835
|
+
if (!input) return false;
|
|
836
|
+
if (name === "wait") return /\bcell_id\b["']?\s*:/.test(input);
|
|
837
|
+
if (name === "write_stdin") return /\bsession_id\b["']?\s*:/.test(input);
|
|
838
|
+
return false;
|
|
839
|
+
}
|
|
811
840
|
async function* walkRollouts(root) {
|
|
812
841
|
let years;
|
|
813
842
|
try {
|
|
@@ -901,6 +930,7 @@ var CodexAdapter = class {
|
|
|
901
930
|
})
|
|
902
931
|
];
|
|
903
932
|
const toolByCallId = /* @__PURE__ */ new Map();
|
|
933
|
+
const subagentByThreadId = /* @__PURE__ */ new Map();
|
|
904
934
|
let step = 0;
|
|
905
935
|
let lastLlm = rootId;
|
|
906
936
|
let sawUserTurn = false;
|
|
@@ -929,9 +959,14 @@ var CodexAdapter = class {
|
|
|
929
959
|
lastLlm = id;
|
|
930
960
|
step += 1;
|
|
931
961
|
}
|
|
932
|
-
} else if (l.type === "response_item" && l.payload?.type === "function_call") {
|
|
933
|
-
const
|
|
962
|
+
} else if (l.type === "response_item" && (l.payload?.type === "function_call" || l.payload?.type === "custom_tool_call")) {
|
|
963
|
+
const outerName = l.payload.name ?? "tool";
|
|
934
964
|
const callId = l.payload.call_id ?? `${step}`;
|
|
965
|
+
const input = toolInputToString(
|
|
966
|
+
l.payload.type === "custom_tool_call" ? l.payload.input : l.payload.arguments
|
|
967
|
+
);
|
|
968
|
+
const nestedName = l.payload.type === "custom_tool_call" ? singleNestedToolName(input) : null;
|
|
969
|
+
const name = classifyNestedTool(nestedName ?? outerName, input);
|
|
935
970
|
const toolSpan = span({
|
|
936
971
|
traceId,
|
|
937
972
|
spanId: `tool:${callId}`,
|
|
@@ -943,18 +978,68 @@ var CodexAdapter = class {
|
|
|
943
978
|
agent: SERVICE3,
|
|
944
979
|
tool: name,
|
|
945
980
|
step,
|
|
946
|
-
content:
|
|
981
|
+
content: input ?? null,
|
|
982
|
+
extra: {
|
|
983
|
+
"traces.codex.call_type": l.payload.type,
|
|
984
|
+
...name !== outerName ? { "traces.codex.outer_tool_name": outerName } : {},
|
|
985
|
+
...nestedName ? { "traces.codex.nested_tool_name": nestedName } : {},
|
|
986
|
+
...isExpectedBlockingTool(name, input) ? { "traces.expected_blocking": true } : {}
|
|
987
|
+
}
|
|
947
988
|
});
|
|
948
989
|
spans.push(toolSpan);
|
|
949
990
|
toolByCallId.set(callId, toolSpan);
|
|
950
991
|
step += 1;
|
|
951
|
-
} else if (l.type === "response_item" && l.payload?.type === "function_call_output") {
|
|
992
|
+
} else if (l.type === "response_item" && (l.payload?.type === "function_call_output" || l.payload?.type === "custom_tool_call_output")) {
|
|
952
993
|
const t = toolByCallId.get(l.payload.call_id ?? "");
|
|
953
994
|
if (t) {
|
|
954
995
|
const { error, message } = outputIsError(l.payload.output);
|
|
955
996
|
t.end_time = ts;
|
|
956
997
|
t.status = error ? { code: "ERROR", message } : { code: "OK" };
|
|
957
998
|
}
|
|
999
|
+
} else if (l.type === "event_msg" && l.payload?.type === "sub_agent_activity") {
|
|
1000
|
+
const threadId = l.payload.agent_thread_id;
|
|
1001
|
+
const occurredAtMs = l.payload.occurred_at_ms;
|
|
1002
|
+
const eventTime = typeof occurredAtMs === "number" && Number.isFinite(occurredAtMs) ? new Date(occurredAtMs).toISOString() : ts;
|
|
1003
|
+
if (l.payload.kind === "started" && threadId && !subagentByThreadId.has(threadId)) {
|
|
1004
|
+
const agentPath = l.payload.agent_path ?? "subagent";
|
|
1005
|
+
const subagentType = agentPath.split("/").filter(Boolean).at(-1) ?? "subagent";
|
|
1006
|
+
const toolSpan = span({
|
|
1007
|
+
traceId,
|
|
1008
|
+
spanId: `subagent:${threadId}`,
|
|
1009
|
+
parentSpanId: lastLlm,
|
|
1010
|
+
name: "tool.Agent",
|
|
1011
|
+
kind: "TOOL",
|
|
1012
|
+
startTime: eventTime,
|
|
1013
|
+
service: SERVICE3,
|
|
1014
|
+
agent: SERVICE3,
|
|
1015
|
+
tool: "Agent",
|
|
1016
|
+
step,
|
|
1017
|
+
content: JSON.stringify({
|
|
1018
|
+
subagent_type: subagentType,
|
|
1019
|
+
agent_path: agentPath,
|
|
1020
|
+
agent_thread_id: threadId
|
|
1021
|
+
}),
|
|
1022
|
+
extra: {
|
|
1023
|
+
"traces.codex.subagent_path": agentPath,
|
|
1024
|
+
"traces.codex.subagent_thread_id": threadId
|
|
1025
|
+
}
|
|
1026
|
+
});
|
|
1027
|
+
spans.push(toolSpan);
|
|
1028
|
+
subagentByThreadId.set(threadId, toolSpan);
|
|
1029
|
+
step += 1;
|
|
1030
|
+
} else if (l.payload.kind === "completed" && threadId) {
|
|
1031
|
+
const toolSpan = subagentByThreadId.get(threadId);
|
|
1032
|
+
if (toolSpan) {
|
|
1033
|
+
toolSpan.end_time = eventTime;
|
|
1034
|
+
toolSpan.status = { code: "OK" };
|
|
1035
|
+
}
|
|
1036
|
+
} else if (["interrupted", "failed", "timed_out"].includes(l.payload.kind ?? "") && threadId) {
|
|
1037
|
+
const toolSpan = subagentByThreadId.get(threadId);
|
|
1038
|
+
if (toolSpan) {
|
|
1039
|
+
toolSpan.end_time = eventTime;
|
|
1040
|
+
toolSpan.status = { code: "ERROR", message: `subagent ${l.payload.kind}` };
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
958
1043
|
} else if (l.type === "response_item" && l.payload?.type === "message" && l.payload.role === "user") {
|
|
959
1044
|
const prompt = textOf3(l.payload.content);
|
|
960
1045
|
if (prompt) {
|
|
@@ -2417,6 +2502,56 @@ function stampRepoAttrs(spans, attrs) {
|
|
|
2417
2502
|
}
|
|
2418
2503
|
return spans;
|
|
2419
2504
|
}
|
|
2505
|
+
function replaceRepoAttrs(spans, attrs) {
|
|
2506
|
+
for (const s of spans) {
|
|
2507
|
+
for (const [key, value] of Object.entries(attrs)) s.attributes[key] = value;
|
|
2508
|
+
}
|
|
2509
|
+
}
|
|
2510
|
+
async function resolutionForWorkdirEvidence(evidence3, cache) {
|
|
2511
|
+
const cached = cache.get(evidence3.path);
|
|
2512
|
+
if (cached !== void 0) return cached;
|
|
2513
|
+
const cwd = await repoCandidateForPath(evidence3.path);
|
|
2514
|
+
if (!cwd) {
|
|
2515
|
+
cache.set(evidence3.path, null);
|
|
2516
|
+
return null;
|
|
2517
|
+
}
|
|
2518
|
+
const attrs = await resolveRepoAttrs(cwd);
|
|
2519
|
+
const resolved = attrs[ATTR.SUBJECT_KEY] ? {
|
|
2520
|
+
attrs: { ...attrs, [ATTR.REPO_RESOLUTION_SOURCE]: evidence3.source },
|
|
2521
|
+
cwd: attrs[ATTR.CWD] ?? cwd,
|
|
2522
|
+
source: evidence3.source
|
|
2523
|
+
} : null;
|
|
2524
|
+
cache.set(evidence3.path, resolved);
|
|
2525
|
+
return resolved;
|
|
2526
|
+
}
|
|
2527
|
+
async function resolveSpanWorkdirRepoAttrs(span2, cache) {
|
|
2528
|
+
const candidates = /* @__PURE__ */ new Map();
|
|
2529
|
+
const add = (value, weight) => {
|
|
2530
|
+
if (!value?.cwd) return;
|
|
2531
|
+
const existing = candidates.get(value.cwd);
|
|
2532
|
+
if (existing) {
|
|
2533
|
+
existing.score += weight;
|
|
2534
|
+
return;
|
|
2535
|
+
}
|
|
2536
|
+
candidates.set(value.cwd, { repo: value, score: weight, order: candidates.size });
|
|
2537
|
+
};
|
|
2538
|
+
for (const evidence3 of extractAbsolutePaths([span2])) {
|
|
2539
|
+
if (evidence3.source !== "span-workdir") continue;
|
|
2540
|
+
add(await resolutionForWorkdirEvidence(evidence3, cache), evidence3.weight);
|
|
2541
|
+
}
|
|
2542
|
+
const byScore = (a, b) => b.score - a.score || a.order - b.order;
|
|
2543
|
+
const resolved = [...candidates.values()];
|
|
2544
|
+
const selected = resolved.filter((candidate) => candidate.repo.attrs[ATTR.GIT_REPOSITORY]).sort(byScore)[0] ?? resolved.filter((candidate) => candidate.repo.attrs[ATTR.SUBJECT_KEY]).sort(byScore)[0];
|
|
2545
|
+
if (!selected) return null;
|
|
2546
|
+
return selected.repo;
|
|
2547
|
+
}
|
|
2548
|
+
async function stampSpanWorkdirRepoAttrs(spans) {
|
|
2549
|
+
const cache = /* @__PURE__ */ new Map();
|
|
2550
|
+
for (const span2 of spans) {
|
|
2551
|
+
const repo = await resolveSpanWorkdirRepoAttrs(span2, cache);
|
|
2552
|
+
if (repo?.attrs && Object.keys(repo.attrs).length > 0) replaceRepoAttrs([span2], repo.attrs);
|
|
2553
|
+
}
|
|
2554
|
+
}
|
|
2420
2555
|
|
|
2421
2556
|
// src/session-source.ts
|
|
2422
2557
|
async function parseSession(adapter, ref) {
|
|
@@ -2424,6 +2559,7 @@ async function parseSession(adapter, ref) {
|
|
|
2424
2559
|
const repo = await resolveSessionRepoAttrs(ref.cwd, spans);
|
|
2425
2560
|
if (repo.cwd) ref.cwd = repo.cwd;
|
|
2426
2561
|
stampRepoAttrs(spans, repo.attrs);
|
|
2562
|
+
await stampSpanWorkdirRepoAttrs(spans);
|
|
2427
2563
|
return spans;
|
|
2428
2564
|
}
|
|
2429
2565
|
function refKey(ref) {
|
|
@@ -5236,6 +5372,7 @@ export {
|
|
|
5236
5372
|
resolveRepoAttrs,
|
|
5237
5373
|
resolveSessionRepoAttrs,
|
|
5238
5374
|
stampRepoAttrs,
|
|
5375
|
+
stampSpanWorkdirRepoAttrs,
|
|
5239
5376
|
parseSession,
|
|
5240
5377
|
locateSessions,
|
|
5241
5378
|
scanSessions,
|
package/dist/cli.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -281,6 +281,7 @@ declare function resolveSessionRepoAttrs(cwd: string | null | undefined, spans:
|
|
|
281
281
|
* same array for ergonomic chaining. A no-op when `attrs` is empty.
|
|
282
282
|
*/
|
|
283
283
|
declare function stampRepoAttrs(spans: readonly OtlpSpan[], attrs: RepoAttrs): readonly OtlpSpan[];
|
|
284
|
+
declare function stampSpanWorkdirRepoAttrs(spans: readonly OtlpSpan[]): Promise<void>;
|
|
284
285
|
|
|
285
286
|
/**
|
|
286
287
|
* Claude Code adapter — `~/.claude/projects/<encoded-cwd>/<session>.jsonl`.
|
|
@@ -313,7 +314,8 @@ declare class ClaudeAdapter implements HarnessTraceAdapter {
|
|
|
313
314
|
* Line types: `session_meta` (id + cwd), `turn_context`, `event_msg`
|
|
314
315
|
* (carries `token_count` with per-turn `last_token_usage`), and
|
|
315
316
|
* `response_item` (the OpenAI Responses items: `message`, `reasoning`,
|
|
316
|
-
*
|
|
317
|
+
* function/custom tool calls, and their outputs). Current Codex builds also
|
|
318
|
+
* emit `sub_agent_activity` events for delegated agents.
|
|
317
319
|
*
|
|
318
320
|
* Token trajectory comes from the `token_count` deltas (Codex puts usage
|
|
319
321
|
* on events, not on the message). Tools come from `function_call`, with
|
|
@@ -628,7 +630,9 @@ declare const CORRECTIVE_REACTIONS: readonly Reaction[];
|
|
|
628
630
|
* error rates above, so adding it would only emit a misleading waste %.
|
|
629
631
|
*
|
|
630
632
|
* Both are cheap ($0, deterministic), so they're safe to run continuously in
|
|
631
|
-
* `watch` mode, over the OTLP spans traces already produces.
|
|
633
|
+
* `watch` mode, over the OTLP spans traces already produces. Calls explicitly
|
|
634
|
+
* marked as expected blocking stay in usage totals but are excluded from
|
|
635
|
+
* stuck-loop findings.
|
|
632
636
|
*/
|
|
633
637
|
|
|
634
638
|
interface PipelineReport {
|
|
@@ -1650,4 +1654,4 @@ interface ExecuteOptions {
|
|
|
1650
1654
|
/** Send the NEW items (or, on dryRun, write the redacted OTLP that would send). */
|
|
1651
1655
|
declare function executeUpload(plan: UploadPlan, opts?: ExecuteOptions): Promise<UploadResult>;
|
|
1652
1656
|
|
|
1653
|
-
export { ACTOR_ATTR, ATTR, type Actor, type AdoptionOptions, type AdoptionReport, AmpAdapter, type AnalyzeOptions, type AnalyzeResult, type BuildPolicyEvidenceOptions, type BuildSessionIndexOptions, type BuildTraceFindingPacketOptions, CODING_REDACTION_RULES, CONTENT_CAP, CORRECTIVE_REACTIONS, ClaudeAdapter, CodexAdapter, type CollectOptions, type CollectPolicyEvidenceOptions, type CollectSessionIndexOptions, CopilotAdapter, DEFAULT_HARNESS, type ExecuteOptions, type ExternalAnalysisResult, type ExternalAnalyzer, FactoryAdapter, type FindingStore, ForgeAdapter, GeminiAdapter, type HarnessTraceAdapter, INGEST_SOURCE_CLI, type ImprovementAdapter, type ImprovementAdapterInput, type ImprovementProposal, type InspectSessionIndexOptions, type LiveBatchOptions, type LocateOptions, type ObservedLoop, type ObserverOptions, OpencodeAdapter, type OtlpSpan, type OtlpSpanKind, type OtlpStatusCode, PiAdapter, type PipelineOptions, type PipelineReport, type PlanOptions, type PolicyEvidenceLoopSummary, type PolicyEvidenceRecord, type PolicyEvidenceToolSummary, QwenAdapter, REACTIONS, type Reaction, type ReactionReport, type ReactionSessionReport, type RecommendationWriter, type Redactor, type RepoAttrs, type RepoResolution, type RepoResolutionSource, type RunResult, type RuntimeTrace, type ScanOptions, type ScannedSession, type SessionBatch, type SessionRef, type SpanInput, type SpanRedaction, TRACES_REDACTION_RULES, type TraceClaim, type TraceContextIndex, type TraceContextRoot, type TraceEvidenceExportOptions, type TraceEvidenceExportResult, type TraceEvidenceFormatOption, type TraceEvidenceInputFormat, type TraceEvidenceRow, type TraceFindingPacket, type TraceImprovementArtifacts, type TraceImprovementOptions, type TraceImprovementResult, type TraceIndexedFile, type TraceInspectionArea, type TraceInspectionFinding, type TraceInspectionReport, type TraceInspectionSeverity, type TraceInvestigationOptions, type TraceInvestigationResult, type TraceLiveAction, type TraceLiveActionKind, type TraceLiveAnalysisContext, type TraceLiveAnalyst, type TraceLiveBatch, type TraceLiveEvidence, type TraceLiveFinding, type TraceLiveLoop, type TraceLiveSeverity, type TraceRecommendation, type TraceReplayProof, type TraceSessionIndex, type TraceSessionIndexRow, type TraceStoreInvestigationOptions, type TraceStoreInvestigationResult, type TraceStreamEvent, type TraceStreamOptions, type TraceStreamReplayOptions, type TraceStreamSession, type TracesConfig, type TriggerPair, type UploadBackend, type UploadItem, type UploadPlan, type UploadRecord, type UploadResult, type UploadState, type UserPromptInput, alreadyUploaded, analyzeAdoption, analyzeLiveBatch, analyzeReactions, analyzeSpans, applyRedactor, buildPolicyEvidenceRecord, buildSessionIndex, buildSessionIndexFromRows, buildTraceFindingPacket, capText, classifyLiveActions, classifyReaction, claudeActor, codexActor, collectPolicyEvidence, collectSessionIndex, collectSessions, commandAnalyzer, commandRedactor, countSkillRunsJsonl, cwdMatchesSelection, defaultTraceLiveAnalysts, equivalentGitCwds, executeUpload, exportTraceEvidenceFile, exportTraceEvidenceRows, exportTraceEvidenceText, haloAnalyzer, inspectSessionIndex, knownHarnesses, listAdapters, loadState, loadTracesConfig, locateSessions, looksLikeAgentPrompt, mergeTracesConfig, normalizeRemote, parseIsoToEpochMs, parseSession, parseSince, planUpload, readSessionIndexFile, redactSpans, renderInspectionReport, resolveAdapter, resolveRepoAttrs, resolveSessionRepoAttrs, runCommand, runExternalAnalyzers, runPipelines, runTraceImprovementLoop, runTraceInvestigation, runTraceStoreInvestigation, saveReport, saveState, scanSessions, selectAdapters, serializeInspectionReport, serializePolicyEvidence, serializeSessionIndex, serializeSpans, serializeTraceStreamEvent, sessionHash, span, stampRepoAttrs, streamSessions, textIsSynthetic, toOpenInferenceSpan, toRuntimeStore, toTraceSpanEvents, traceStreamEventsFromSpans, uploadKey, userPromptSpan, watchSessions, writeInspectionReportFile, writeOtlpFile, writePolicyEvidenceFile, writeSessionIndexFile, writeTraceEvidenceExportFile, writeTraceImprovementArtifacts };
|
|
1657
|
+
export { ACTOR_ATTR, ATTR, type Actor, type AdoptionOptions, type AdoptionReport, AmpAdapter, type AnalyzeOptions, type AnalyzeResult, type BuildPolicyEvidenceOptions, type BuildSessionIndexOptions, type BuildTraceFindingPacketOptions, CODING_REDACTION_RULES, CONTENT_CAP, CORRECTIVE_REACTIONS, ClaudeAdapter, CodexAdapter, type CollectOptions, type CollectPolicyEvidenceOptions, type CollectSessionIndexOptions, CopilotAdapter, DEFAULT_HARNESS, type ExecuteOptions, type ExternalAnalysisResult, type ExternalAnalyzer, FactoryAdapter, type FindingStore, ForgeAdapter, GeminiAdapter, type HarnessTraceAdapter, INGEST_SOURCE_CLI, type ImprovementAdapter, type ImprovementAdapterInput, type ImprovementProposal, type InspectSessionIndexOptions, type LiveBatchOptions, type LocateOptions, type ObservedLoop, type ObserverOptions, OpencodeAdapter, type OtlpSpan, type OtlpSpanKind, type OtlpStatusCode, PiAdapter, type PipelineOptions, type PipelineReport, type PlanOptions, type PolicyEvidenceLoopSummary, type PolicyEvidenceRecord, type PolicyEvidenceToolSummary, QwenAdapter, REACTIONS, type Reaction, type ReactionReport, type ReactionSessionReport, type RecommendationWriter, type Redactor, type RepoAttrs, type RepoResolution, type RepoResolutionSource, type RunResult, type RuntimeTrace, type ScanOptions, type ScannedSession, type SessionBatch, type SessionRef, type SpanInput, type SpanRedaction, TRACES_REDACTION_RULES, type TraceClaim, type TraceContextIndex, type TraceContextRoot, type TraceEvidenceExportOptions, type TraceEvidenceExportResult, type TraceEvidenceFormatOption, type TraceEvidenceInputFormat, type TraceEvidenceRow, type TraceFindingPacket, type TraceImprovementArtifacts, type TraceImprovementOptions, type TraceImprovementResult, type TraceIndexedFile, type TraceInspectionArea, type TraceInspectionFinding, type TraceInspectionReport, type TraceInspectionSeverity, type TraceInvestigationOptions, type TraceInvestigationResult, type TraceLiveAction, type TraceLiveActionKind, type TraceLiveAnalysisContext, type TraceLiveAnalyst, type TraceLiveBatch, type TraceLiveEvidence, type TraceLiveFinding, type TraceLiveLoop, type TraceLiveSeverity, type TraceRecommendation, type TraceReplayProof, type TraceSessionIndex, type TraceSessionIndexRow, type TraceStoreInvestigationOptions, type TraceStoreInvestigationResult, type TraceStreamEvent, type TraceStreamOptions, type TraceStreamReplayOptions, type TraceStreamSession, type TracesConfig, type TriggerPair, type UploadBackend, type UploadItem, type UploadPlan, type UploadRecord, type UploadResult, type UploadState, type UserPromptInput, alreadyUploaded, analyzeAdoption, analyzeLiveBatch, analyzeReactions, analyzeSpans, applyRedactor, buildPolicyEvidenceRecord, buildSessionIndex, buildSessionIndexFromRows, buildTraceFindingPacket, capText, classifyLiveActions, classifyReaction, claudeActor, codexActor, collectPolicyEvidence, collectSessionIndex, collectSessions, commandAnalyzer, commandRedactor, countSkillRunsJsonl, cwdMatchesSelection, defaultTraceLiveAnalysts, equivalentGitCwds, executeUpload, exportTraceEvidenceFile, exportTraceEvidenceRows, exportTraceEvidenceText, haloAnalyzer, inspectSessionIndex, knownHarnesses, listAdapters, loadState, loadTracesConfig, locateSessions, looksLikeAgentPrompt, mergeTracesConfig, normalizeRemote, parseIsoToEpochMs, parseSession, parseSince, planUpload, readSessionIndexFile, redactSpans, renderInspectionReport, resolveAdapter, resolveRepoAttrs, resolveSessionRepoAttrs, runCommand, runExternalAnalyzers, runPipelines, runTraceImprovementLoop, runTraceInvestigation, runTraceStoreInvestigation, saveReport, saveState, scanSessions, selectAdapters, serializeInspectionReport, serializePolicyEvidence, serializeSessionIndex, serializeSpans, serializeTraceStreamEvent, sessionHash, span, stampRepoAttrs, stampSpanWorkdirRepoAttrs, streamSessions, textIsSynthetic, toOpenInferenceSpan, toRuntimeStore, toTraceSpanEvents, traceStreamEventsFromSpans, uploadKey, userPromptSpan, watchSessions, writeInspectionReportFile, writeOtlpFile, writePolicyEvidenceFile, writeSessionIndexFile, writeTraceEvidenceExportFile, writeTraceImprovementArtifacts };
|
package/dist/index.js
CHANGED
|
@@ -83,6 +83,7 @@ import {
|
|
|
83
83
|
sessionHash,
|
|
84
84
|
span,
|
|
85
85
|
stampRepoAttrs,
|
|
86
|
+
stampSpanWorkdirRepoAttrs,
|
|
86
87
|
streamSessions,
|
|
87
88
|
textIsSynthetic,
|
|
88
89
|
toOpenInferenceSpan,
|
|
@@ -98,7 +99,7 @@ import {
|
|
|
98
99
|
writeSessionIndexFile,
|
|
99
100
|
writeTraceEvidenceExportFile,
|
|
100
101
|
writeTraceImprovementArtifacts
|
|
101
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-6N2KVDOU.js";
|
|
102
103
|
|
|
103
104
|
// src/collect.ts
|
|
104
105
|
async function collectSessions(opts = {}) {
|
|
@@ -216,6 +217,7 @@ export {
|
|
|
216
217
|
sessionHash,
|
|
217
218
|
span,
|
|
218
219
|
stampRepoAttrs,
|
|
220
|
+
stampSpanWorkdirRepoAttrs,
|
|
219
221
|
streamSessions,
|
|
220
222
|
textIsSynthetic,
|
|
221
223
|
toOpenInferenceSpan,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/traces",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.26",
|
|
4
4
|
"description": "Point it at your coding-agent session traces (Claude Code, Codex, OpenCode, Gemini, Pi, …) and get failure-mode + efficiency findings. CLI + SDK over the @tangle-network/agent-eval analyst suite — observe live sessions, run your own analysts, redact, and upload to the Tangle Intelligence Platform.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|