agent-inspect 6.31.17 → 6.31.19
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/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/docs/COMPARE.md +1 -1
- package/package.json +2 -2
- package/packages/cli/dist/{chunk-USZJEEME.mjs → chunk-NALE36AJ.mjs} +154 -31
- package/packages/cli/dist/chunk-NALE36AJ.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +208 -32
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +58 -6
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-EY4EY456.mjs → src-IZIVBMCO.mjs} +3 -3
- package/packages/cli/dist/{src-EY4EY456.mjs.map → src-IZIVBMCO.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +72 -4
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.mjs +3 -3
- package/packages/core/dist/checks.cjs +86 -29
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.mjs +1 -1
- package/packages/core/dist/{chunk-GTA6SNDK.mjs → chunk-2RSTU3OZ.mjs} +88 -31
- package/packages/core/dist/chunk-2RSTU3OZ.mjs.map +1 -0
- package/packages/core/dist/{chunk-NJUSSJX3.mjs → chunk-EIP5CNEL.mjs} +68 -2
- package/packages/core/dist/chunk-EIP5CNEL.mjs.map +1 -0
- package/packages/core/dist/exporters.cjs +54 -2
- package/packages/core/dist/exporters.cjs.map +1 -1
- package/packages/core/dist/exporters.mjs +54 -2
- package/packages/core/dist/exporters.mjs.map +1 -1
- package/packages/core/dist/readers.cjs +66 -0
- package/packages/core/dist/readers.cjs.map +1 -1
- package/packages/core/dist/readers.mjs +1 -1
- package/packages/cli/dist/chunk-USZJEEME.mjs.map +0 -1
- package/packages/core/dist/chunk-GTA6SNDK.mjs.map +0 -1
- package/packages/core/dist/chunk-NJUSSJX3.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createRunDepthRule, createToolFailureRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-
|
|
2
|
-
export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-
|
|
1
|
+
import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createRunDepthRule, createToolFailureRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-2RSTU3OZ.mjs';
|
|
2
|
+
export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-2RSTU3OZ.mjs';
|
|
3
3
|
export { MAX_TERMINAL_DEPTH, MAX_TERMINAL_NAME_LENGTH, TERMINAL_INDENT, TraceDirectory, createInspector, createInspectorRuntime, formatTerminalName, getCurrentContext, getCurrentCorrelationMetadata, getCurrentDepth, getCurrentRunId, getCurrentRunName, getCurrentStepId, getIndent, getParentStepId, getTraceDirFromContext, getTraceSafetyFromContext, hasActiveContext, isAgentInspectEnabled, isSilentContext, maybeInspectRun, printError, printFailedAt, printRunComplete, printRunStart, printStepComplete, printStepStart, renderErrorLine, renderRunSummary, renderStepLine, resolveTraceDir, runWithContext, runWithStepContext } from './chunk-6C244CAV.mjs';
|
|
4
4
|
import { buildRunTimeline, filterTraces, extractMetadata, buildRunSummary } from './chunk-NX25C7JZ.mjs';
|
|
5
5
|
export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, formatStepLabel, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-NX25C7JZ.mjs';
|
|
@@ -11,7 +11,7 @@ import { escapeHtml, flattenTree } from './chunk-CAWPF22J.mjs';
|
|
|
11
11
|
import { resolveRedactionProfile, readTraceEventsFromFile, stringContainsHighConfidenceCredential } from './chunk-EOXUEQB6.mjs';
|
|
12
12
|
export { DEFAULT_MAX_EVENT_BYTES, DEFAULT_MAX_METADATA_VALUE_LENGTH, DEFAULT_MAX_PREVIEW_LENGTH, getRunIdFromTraceFileName, initializeTraceFile, listTraceFiles, prepareMetadataForDisk, prepareTraceEventForDisk, readTraceEvents, readTraceFile, resolveRedactionProfile, resolveTraceSafetyOptions, serializeEvent, validateEvent, writeTraceEvent } from './chunk-EOXUEQB6.mjs';
|
|
13
13
|
import { Redactor } from './chunk-VLVCLAPB.mjs';
|
|
14
|
-
import { openTrace } from './chunk-
|
|
14
|
+
import { openTrace } from './chunk-EIP5CNEL.mjs';
|
|
15
15
|
import './chunk-JE3TUFAQ.mjs';
|
|
16
16
|
import { projectLogicalEvents } from './chunk-AHUZNHFI.mjs';
|
|
17
17
|
import './chunk-S4YWKV4G.mjs';
|
|
@@ -872,7 +872,7 @@ function extractSessionWorkflowMetadata(record) {
|
|
|
872
872
|
assignString("conversationId", record.conversationId);
|
|
873
873
|
assignString("groupId", record.groupId);
|
|
874
874
|
assignString("parentGroupId", record.parentGroupId);
|
|
875
|
-
assignString("retryOf", record.retryOf);
|
|
875
|
+
assignString("retryOf", record.retryOf ?? record["agent_inspect.retry_of"]);
|
|
876
876
|
assignString("retryReason", record.retryReason);
|
|
877
877
|
assignString("handoffFrom", record.handoffFrom);
|
|
878
878
|
assignString("handoffTo", record.handoffTo);
|
|
@@ -885,8 +885,8 @@ function extractSessionWorkflowMetadata(record) {
|
|
|
885
885
|
assignString("toolCallId", record.toolCallId);
|
|
886
886
|
assignString("mcpToolCallId", record.mcpToolCallId);
|
|
887
887
|
assignString("linkedStepId", record.linkedStepId);
|
|
888
|
-
assignString("operationId", record.operationId);
|
|
889
|
-
assignString("attemptId", record.attemptId);
|
|
888
|
+
assignString("operationId", record.operationId ?? record["agent_inspect.operation_id"]);
|
|
889
|
+
assignString("attemptId", record.attemptId ?? record["agent_inspect.attempt_id"]);
|
|
890
890
|
assignString("fallbackOf", record.fallbackOf);
|
|
891
891
|
assignString("idempotencyKey", record.idempotencyKey);
|
|
892
892
|
assignString("correlationId", record.correlationId);
|
|
@@ -897,7 +897,9 @@ function extractSessionWorkflowMetadata(record) {
|
|
|
897
897
|
out.attempt = attempt;
|
|
898
898
|
found = true;
|
|
899
899
|
}
|
|
900
|
-
const attemptNumber = finitePositiveInt(
|
|
900
|
+
const attemptNumber = finitePositiveInt(
|
|
901
|
+
record.attemptNumber ?? record["agent_inspect.attempt_number"]
|
|
902
|
+
);
|
|
901
903
|
if (attemptNumber !== void 0) {
|
|
902
904
|
out.attemptNumber = attemptNumber;
|
|
903
905
|
found = true;
|
|
@@ -1756,24 +1758,35 @@ function attemptIdOf(event) {
|
|
|
1756
1758
|
return typeof value === "string" && value.trim() !== "" ? value : void 0;
|
|
1757
1759
|
}
|
|
1758
1760
|
function countOperationAttempts(members) {
|
|
1759
|
-
const
|
|
1760
|
-
|
|
1761
|
-
)
|
|
1762
|
-
|
|
1763
|
-
|
|
1761
|
+
const identified = /* @__PURE__ */ new Set();
|
|
1762
|
+
let unidentified = 0;
|
|
1763
|
+
for (const event of members) {
|
|
1764
|
+
if (event.kind !== "TOOL" && event.kind !== "LLM") continue;
|
|
1765
|
+
const id = attemptIdOf(event);
|
|
1766
|
+
if (id !== void 0) {
|
|
1767
|
+
identified.add(id);
|
|
1768
|
+
continue;
|
|
1769
|
+
}
|
|
1770
|
+
unidentified += 1;
|
|
1771
|
+
}
|
|
1772
|
+
if (identified.size > 0) {
|
|
1773
|
+
return identified.size + unidentified;
|
|
1764
1774
|
}
|
|
1765
|
-
const
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
const
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1775
|
+
const numbered = /* @__PURE__ */ new Set();
|
|
1776
|
+
let unnumbered = 0;
|
|
1777
|
+
for (const event of members) {
|
|
1778
|
+
if (event.kind !== "TOOL" && event.kind !== "LLM") continue;
|
|
1779
|
+
const num = attemptNumberOf(event);
|
|
1780
|
+
if (num !== void 0) {
|
|
1781
|
+
numbered.add(num);
|
|
1782
|
+
continue;
|
|
1773
1783
|
}
|
|
1774
|
-
|
|
1784
|
+
unnumbered += 1;
|
|
1785
|
+
}
|
|
1786
|
+
if (numbered.size > 0) {
|
|
1787
|
+
return numbered.size + unnumbered;
|
|
1775
1788
|
}
|
|
1776
|
-
return
|
|
1789
|
+
return unnumbered;
|
|
1777
1790
|
}
|
|
1778
1791
|
function classifyRetryAttempt(event, priorOrdered, allMembers) {
|
|
1779
1792
|
const workflow = workflowFor(event);
|
|
@@ -2048,8 +2061,42 @@ function eventEvidence2(event) {
|
|
|
2048
2061
|
function eventTime2(event) {
|
|
2049
2062
|
return event.startedAt ?? event.timestamp ?? "";
|
|
2050
2063
|
}
|
|
2064
|
+
function parseComparableMs(value) {
|
|
2065
|
+
if (!value) return void 0;
|
|
2066
|
+
const parsed = Date.parse(value);
|
|
2067
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
2068
|
+
}
|
|
2069
|
+
function consumerStartMs(event) {
|
|
2070
|
+
return parseComparableMs(event.startedAt) ?? parseComparableMs(event.timestamp);
|
|
2071
|
+
}
|
|
2072
|
+
function resultAvailableMs(event) {
|
|
2073
|
+
const started = parseComparableMs(event.startedAt) ?? parseComparableMs(event.timestamp);
|
|
2074
|
+
const endedRaw = event.endedAt;
|
|
2075
|
+
const endedPresent = endedRaw !== void 0 && endedRaw !== null && String(endedRaw).trim() !== "";
|
|
2076
|
+
if (endedPresent) {
|
|
2077
|
+
const ended = parseComparableMs(typeof endedRaw === "string" ? endedRaw : String(endedRaw));
|
|
2078
|
+
if (ended === void 0) return void 0;
|
|
2079
|
+
if (started !== void 0 && ended < started) return void 0;
|
|
2080
|
+
return ended;
|
|
2081
|
+
}
|
|
2082
|
+
if (event.durationMs !== void 0) {
|
|
2083
|
+
if (!Number.isFinite(event.durationMs) || event.durationMs < 0) {
|
|
2084
|
+
return void 0;
|
|
2085
|
+
}
|
|
2086
|
+
if (started !== void 0) {
|
|
2087
|
+
return started + event.durationMs;
|
|
2088
|
+
}
|
|
2089
|
+
return void 0;
|
|
2090
|
+
}
|
|
2091
|
+
return parseComparableMs(event.timestamp);
|
|
2092
|
+
}
|
|
2051
2093
|
function sortByTime2(events) {
|
|
2052
|
-
return [...events].sort((a, b) =>
|
|
2094
|
+
return [...events].sort((a, b) => {
|
|
2095
|
+
const aMs = consumerStartMs(a) ?? 0;
|
|
2096
|
+
const bMs = consumerStartMs(b) ?? 0;
|
|
2097
|
+
if (aMs !== bMs) return aMs - bMs;
|
|
2098
|
+
return eventTime2(a).localeCompare(eventTime2(b));
|
|
2099
|
+
});
|
|
2053
2100
|
}
|
|
2054
2101
|
function errorCodeOf(event) {
|
|
2055
2102
|
if (typeof event.error?.code === "string" && event.error.code.trim() !== "") {
|
|
@@ -2117,13 +2164,20 @@ function sameArguments(left, right) {
|
|
|
2117
2164
|
}
|
|
2118
2165
|
return { ok: true };
|
|
2119
2166
|
}
|
|
2167
|
+
var UNEVALUABLE_WRITE_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
2168
|
+
"TIMEOUT",
|
|
2169
|
+
"ETIMEDOUT",
|
|
2170
|
+
"UNKNOWN_COMPLETION",
|
|
2171
|
+
"DEADLINE_EXCEEDED"
|
|
2172
|
+
]);
|
|
2120
2173
|
function isUnevaluableWriteCompletion(event) {
|
|
2121
2174
|
if (event.status === "running" || event.status === "unknown") return true;
|
|
2122
2175
|
const attrs2 = event.attributes ?? {};
|
|
2123
2176
|
if (attrs2.timeout === true) return true;
|
|
2177
|
+
if (attrs2.unknownCompletion === true) return true;
|
|
2124
2178
|
if (attrs2.completionState === "unknown" || attrs2.completionState === "timeout") return true;
|
|
2125
2179
|
const code = errorCodeOf(event)?.toUpperCase();
|
|
2126
|
-
if (code
|
|
2180
|
+
if (code && UNEVALUABLE_WRITE_ERROR_CODES.has(code)) {
|
|
2127
2181
|
return true;
|
|
2128
2182
|
}
|
|
2129
2183
|
return false;
|
|
@@ -2171,14 +2225,17 @@ function collectExplicitReferences(event) {
|
|
|
2171
2225
|
return refs;
|
|
2172
2226
|
}
|
|
2173
2227
|
function llmReferencesTool(llm, toolEvent, requireExplicit) {
|
|
2174
|
-
if (
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2228
|
+
if (llm.runId !== toolEvent.runId) return false;
|
|
2229
|
+
if (requireExplicit) {
|
|
2230
|
+
const refs = collectExplicitReferences(llm);
|
|
2231
|
+
const toolCallId = workflowFor2(toolEvent).toolCallId;
|
|
2232
|
+
const hasRef = refs.has(toolEvent.eventId) || toolCallId !== void 0 && refs.has(toolCallId);
|
|
2233
|
+
if (!hasRef) return false;
|
|
2234
|
+
}
|
|
2235
|
+
const resultMs = resultAvailableMs(toolEvent);
|
|
2236
|
+
const consumerMs = consumerStartMs(llm);
|
|
2237
|
+
if (resultMs === void 0 || consumerMs === void 0) return false;
|
|
2238
|
+
return resultMs <= consumerMs;
|
|
2182
2239
|
}
|
|
2183
2240
|
function attemptIdOf2(event) {
|
|
2184
2241
|
const value = workflowFor2(event).attemptId;
|