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.
Files changed (32) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/docs/COMPARE.md +1 -1
  4. package/package.json +2 -2
  5. package/packages/cli/dist/{chunk-USZJEEME.mjs → chunk-NALE36AJ.mjs} +154 -31
  6. package/packages/cli/dist/chunk-NALE36AJ.mjs.map +1 -0
  7. package/packages/cli/dist/index.cjs +208 -32
  8. package/packages/cli/dist/index.cjs.map +1 -1
  9. package/packages/cli/dist/index.mjs +58 -6
  10. package/packages/cli/dist/index.mjs.map +1 -1
  11. package/packages/cli/dist/{src-EY4EY456.mjs → src-IZIVBMCO.mjs} +3 -3
  12. package/packages/cli/dist/{src-EY4EY456.mjs.map → src-IZIVBMCO.mjs.map} +1 -1
  13. package/packages/core/dist/advanced.cjs +72 -4
  14. package/packages/core/dist/advanced.cjs.map +1 -1
  15. package/packages/core/dist/advanced.mjs +3 -3
  16. package/packages/core/dist/checks.cjs +86 -29
  17. package/packages/core/dist/checks.cjs.map +1 -1
  18. package/packages/core/dist/checks.mjs +1 -1
  19. package/packages/core/dist/{chunk-GTA6SNDK.mjs → chunk-2RSTU3OZ.mjs} +88 -31
  20. package/packages/core/dist/chunk-2RSTU3OZ.mjs.map +1 -0
  21. package/packages/core/dist/{chunk-NJUSSJX3.mjs → chunk-EIP5CNEL.mjs} +68 -2
  22. package/packages/core/dist/chunk-EIP5CNEL.mjs.map +1 -0
  23. package/packages/core/dist/exporters.cjs +54 -2
  24. package/packages/core/dist/exporters.cjs.map +1 -1
  25. package/packages/core/dist/exporters.mjs +54 -2
  26. package/packages/core/dist/exporters.mjs.map +1 -1
  27. package/packages/core/dist/readers.cjs +66 -0
  28. package/packages/core/dist/readers.cjs.map +1 -1
  29. package/packages/core/dist/readers.mjs +1 -1
  30. package/packages/cli/dist/chunk-USZJEEME.mjs.map +0 -1
  31. package/packages/core/dist/chunk-GTA6SNDK.mjs.map +0 -1
  32. package/packages/core/dist/chunk-NJUSSJX3.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- export { buildTraceFacts, createBaselineRegressionRule, createDecisionRule, createGuardrailRule, createLlmUsageRule, createMaxStepDurationRule, createObservedOutcomeRule, createRequireCompletedRule, createRetrievalRule, createRunDepthRule, createRunDurationRule, createRunEventCountRule, createRunStatusRule, createSafetyOversizedAttributeRule, createSafetyRawContentRule, createSafetyRedactionRule, createSafetySecretPatternRule, createStallDetectionRule, createStepOrderingRule, createStructureCycleRule, createStructureIncompleteRule, createStructureOrphanRule, createStructureParallelWidthRule, createStructureRelationshipRule, createToolFailureRule, createToolOrderingRule, createToolUsageRule, defineTraceContract, deriveFailureFacts, deriveRelationshipFacts, evaluateToolArgumentValue, evaluateTraceContract, evaluateTraceContractRead, explainTraceContract, extractToolArgumentPayload, lintTraceContract, resolveJsonPointer, resolveTraceContractScope, runTraceChecks, summarizeSemanticParity, workflowMetadataForRun } from './chunk-GTA6SNDK.mjs';
1
+ export { buildTraceFacts, createBaselineRegressionRule, createDecisionRule, createGuardrailRule, createLlmUsageRule, createMaxStepDurationRule, createObservedOutcomeRule, createRequireCompletedRule, createRetrievalRule, createRunDepthRule, createRunDurationRule, createRunEventCountRule, createRunStatusRule, createSafetyOversizedAttributeRule, createSafetyRawContentRule, createSafetyRedactionRule, createSafetySecretPatternRule, createStallDetectionRule, createStepOrderingRule, createStructureCycleRule, createStructureIncompleteRule, createStructureOrphanRule, createStructureParallelWidthRule, createStructureRelationshipRule, createToolFailureRule, createToolOrderingRule, createToolUsageRule, defineTraceContract, deriveFailureFacts, deriveRelationshipFacts, evaluateToolArgumentValue, evaluateTraceContract, evaluateTraceContractRead, explainTraceContract, extractToolArgumentPayload, lintTraceContract, resolveJsonPointer, resolveTraceContractScope, runTraceChecks, summarizeSemanticParity, workflowMetadataForRun } from './chunk-2RSTU3OZ.mjs';
2
2
  import './chunk-77UZIMMD.mjs';
3
3
  import './chunk-EOXUEQB6.mjs';
4
4
  import './chunk-VLVCLAPB.mjs';
@@ -28,7 +28,7 @@ function extractSessionWorkflowMetadata(record) {
28
28
  assignString("conversationId", record.conversationId);
29
29
  assignString("groupId", record.groupId);
30
30
  assignString("parentGroupId", record.parentGroupId);
31
- assignString("retryOf", record.retryOf);
31
+ assignString("retryOf", record.retryOf ?? record["agent_inspect.retry_of"]);
32
32
  assignString("retryReason", record.retryReason);
33
33
  assignString("handoffFrom", record.handoffFrom);
34
34
  assignString("handoffTo", record.handoffTo);
@@ -41,8 +41,8 @@ function extractSessionWorkflowMetadata(record) {
41
41
  assignString("toolCallId", record.toolCallId);
42
42
  assignString("mcpToolCallId", record.mcpToolCallId);
43
43
  assignString("linkedStepId", record.linkedStepId);
44
- assignString("operationId", record.operationId);
45
- assignString("attemptId", record.attemptId);
44
+ assignString("operationId", record.operationId ?? record["agent_inspect.operation_id"]);
45
+ assignString("attemptId", record.attemptId ?? record["agent_inspect.attempt_id"]);
46
46
  assignString("fallbackOf", record.fallbackOf);
47
47
  assignString("idempotencyKey", record.idempotencyKey);
48
48
  assignString("correlationId", record.correlationId);
@@ -53,7 +53,9 @@ function extractSessionWorkflowMetadata(record) {
53
53
  out.attempt = attempt;
54
54
  found = true;
55
55
  }
56
- const attemptNumber = finitePositiveInt(record.attemptNumber);
56
+ const attemptNumber = finitePositiveInt(
57
+ record.attemptNumber ?? record["agent_inspect.attempt_number"]
58
+ );
57
59
  if (attemptNumber !== void 0) {
58
60
  out.attemptNumber = attemptNumber;
59
61
  found = true;
@@ -1238,24 +1240,35 @@ function attemptIdOf(event) {
1238
1240
  return typeof value === "string" && value.trim() !== "" ? value : void 0;
1239
1241
  }
1240
1242
  function countOperationAttempts(members) {
1241
- const attemptIds = new Set(
1242
- members.map((event) => attemptIdOf(event)).filter((value) => value !== void 0)
1243
- );
1244
- if (attemptIds.size > 0) {
1245
- return attemptIds.size;
1243
+ const identified = /* @__PURE__ */ new Set();
1244
+ let unidentified = 0;
1245
+ for (const event of members) {
1246
+ if (event.kind !== "TOOL" && event.kind !== "LLM") continue;
1247
+ const id = attemptIdOf(event);
1248
+ if (id !== void 0) {
1249
+ identified.add(id);
1250
+ continue;
1251
+ }
1252
+ unidentified += 1;
1253
+ }
1254
+ if (identified.size > 0) {
1255
+ return identified.size + unidentified;
1246
1256
  }
1247
- const numbers = members.map((event) => attemptNumberOf(event)).filter((value) => value !== void 0).sort((a, b) => a - b);
1248
- if (numbers.length > 0) {
1249
- const unique = [...new Set(numbers)];
1250
- const min = unique[0];
1251
- const max = unique[unique.length - 1];
1252
- const contiguous = unique.length === max - min + 1 && unique.every((value, index) => value === min + index);
1253
- if (contiguous) {
1254
- return unique.length;
1257
+ const numbered = /* @__PURE__ */ new Set();
1258
+ let unnumbered = 0;
1259
+ for (const event of members) {
1260
+ if (event.kind !== "TOOL" && event.kind !== "LLM") continue;
1261
+ const num = attemptNumberOf(event);
1262
+ if (num !== void 0) {
1263
+ numbered.add(num);
1264
+ continue;
1255
1265
  }
1256
- return unique.length;
1266
+ unnumbered += 1;
1267
+ }
1268
+ if (numbered.size > 0) {
1269
+ return numbered.size + unnumbered;
1257
1270
  }
1258
- return members.filter((event) => event.kind === "TOOL" || event.kind === "LLM").length;
1271
+ return unnumbered;
1259
1272
  }
1260
1273
  function classifyRetryAttempt(event, priorOrdered, allMembers) {
1261
1274
  const workflow = workflowFor(event);
@@ -1530,8 +1543,42 @@ function eventEvidence2(event) {
1530
1543
  function eventTime2(event) {
1531
1544
  return event.startedAt ?? event.timestamp ?? "";
1532
1545
  }
1546
+ function parseComparableMs(value) {
1547
+ if (!value) return void 0;
1548
+ const parsed = Date.parse(value);
1549
+ return Number.isFinite(parsed) ? parsed : void 0;
1550
+ }
1551
+ function consumerStartMs(event) {
1552
+ return parseComparableMs(event.startedAt) ?? parseComparableMs(event.timestamp);
1553
+ }
1554
+ function resultAvailableMs(event) {
1555
+ const started = parseComparableMs(event.startedAt) ?? parseComparableMs(event.timestamp);
1556
+ const endedRaw = event.endedAt;
1557
+ const endedPresent = endedRaw !== void 0 && endedRaw !== null && String(endedRaw).trim() !== "";
1558
+ if (endedPresent) {
1559
+ const ended = parseComparableMs(typeof endedRaw === "string" ? endedRaw : String(endedRaw));
1560
+ if (ended === void 0) return void 0;
1561
+ if (started !== void 0 && ended < started) return void 0;
1562
+ return ended;
1563
+ }
1564
+ if (event.durationMs !== void 0) {
1565
+ if (!Number.isFinite(event.durationMs) || event.durationMs < 0) {
1566
+ return void 0;
1567
+ }
1568
+ if (started !== void 0) {
1569
+ return started + event.durationMs;
1570
+ }
1571
+ return void 0;
1572
+ }
1573
+ return parseComparableMs(event.timestamp);
1574
+ }
1533
1575
  function sortByTime2(events) {
1534
- return [...events].sort((a, b) => eventTime2(a).localeCompare(eventTime2(b)));
1576
+ return [...events].sort((a, b) => {
1577
+ const aMs = consumerStartMs(a) ?? 0;
1578
+ const bMs = consumerStartMs(b) ?? 0;
1579
+ if (aMs !== bMs) return aMs - bMs;
1580
+ return eventTime2(a).localeCompare(eventTime2(b));
1581
+ });
1535
1582
  }
1536
1583
  function errorCodeOf(event) {
1537
1584
  if (typeof event.error?.code === "string" && event.error.code.trim() !== "") {
@@ -1599,13 +1646,20 @@ function sameArguments(left, right) {
1599
1646
  }
1600
1647
  return { ok: true };
1601
1648
  }
1649
+ var UNEVALUABLE_WRITE_ERROR_CODES = /* @__PURE__ */ new Set([
1650
+ "TIMEOUT",
1651
+ "ETIMEDOUT",
1652
+ "UNKNOWN_COMPLETION",
1653
+ "DEADLINE_EXCEEDED"
1654
+ ]);
1602
1655
  function isUnevaluableWriteCompletion(event) {
1603
1656
  if (event.status === "running" || event.status === "unknown") return true;
1604
1657
  const attrs2 = event.attributes ?? {};
1605
1658
  if (attrs2.timeout === true) return true;
1659
+ if (attrs2.unknownCompletion === true) return true;
1606
1660
  if (attrs2.completionState === "unknown" || attrs2.completionState === "timeout") return true;
1607
1661
  const code = errorCodeOf(event)?.toUpperCase();
1608
- if (code === "TIMEOUT" || code === "UNKNOWN_COMPLETION" || code === "DEADLINE_EXCEEDED") {
1662
+ if (code && UNEVALUABLE_WRITE_ERROR_CODES.has(code)) {
1609
1663
  return true;
1610
1664
  }
1611
1665
  return false;
@@ -1653,14 +1707,17 @@ function collectExplicitReferences(event) {
1653
1707
  return refs;
1654
1708
  }
1655
1709
  function llmReferencesTool(llm, toolEvent, requireExplicit) {
1656
- if (!requireExplicit) {
1657
- return eventTime2(llm) >= eventTime2(toolEvent);
1658
- }
1659
- const refs = collectExplicitReferences(llm);
1660
- if (refs.has(toolEvent.eventId)) return true;
1661
- const toolCallId = workflowFor2(toolEvent).toolCallId;
1662
- if (toolCallId && refs.has(toolCallId)) return true;
1663
- return false;
1710
+ if (llm.runId !== toolEvent.runId) return false;
1711
+ if (requireExplicit) {
1712
+ const refs = collectExplicitReferences(llm);
1713
+ const toolCallId = workflowFor2(toolEvent).toolCallId;
1714
+ const hasRef = refs.has(toolEvent.eventId) || toolCallId !== void 0 && refs.has(toolCallId);
1715
+ if (!hasRef) return false;
1716
+ }
1717
+ const resultMs = resultAvailableMs(toolEvent);
1718
+ const consumerMs = consumerStartMs(llm);
1719
+ if (resultMs === void 0 || consumerMs === void 0) return false;
1720
+ return resultMs <= consumerMs;
1664
1721
  }
1665
1722
  function attemptIdOf2(event) {
1666
1723
  const value = workflowFor2(event).attemptId;
@@ -5254,5 +5311,5 @@ function runTraceChecks(input, options = {}) {
5254
5311
  }
5255
5312
 
5256
5313
  export { buildTraceFacts, createBaselineRegressionRule, createDecisionRule, createGuardrailRule, createLlmUsageRule, createMaxStepDurationRule, createObservedOutcomeRule, createRequireCompletedRule, createRetrievalRule, createRunDepthRule, createRunDurationRule, createRunEventCountRule, createRunStatusRule, createSafetyOversizedAttributeRule, createSafetyRawContentRule, createSafetyRedactionRule, createSafetySecretPatternRule, createStallDetectionRule, createStepOrderingRule, createStructureCycleRule, createStructureIncompleteRule, createStructureOrphanRule, createStructureParallelWidthRule, createStructureRelationshipRule, createToolFailureRule, createToolOrderingRule, createToolUsageRule, defineTraceContract, deriveFailureFacts, deriveRelationshipFacts, evaluateToolArgumentValue, evaluateTraceContract, evaluateTraceContractRead, explainTraceContract, extractSessionWorkflowMetadata, extractToolArgumentPayload, lintTraceContract, resolveJsonPointer, resolveTraceContractScope, runTraceChecks, sessionKeyForRun, summarizeSemanticParity, workflowMetadataForRun };
5257
- //# sourceMappingURL=chunk-GTA6SNDK.mjs.map
5258
- //# sourceMappingURL=chunk-GTA6SNDK.mjs.map
5314
+ //# sourceMappingURL=chunk-2RSTU3OZ.mjs.map
5315
+ //# sourceMappingURL=chunk-2RSTU3OZ.mjs.map