agent-inspect 6.31.2 → 6.31.4

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 (60) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -1
  3. package/SECURITY.md +2 -0
  4. package/docs/GETTING-STARTED.md +2 -0
  5. package/docs/SAFE-TRACE-SHARING.md +1 -0
  6. package/package.json +1 -1
  7. package/packages/cli/dist/{chunk-SJ6FRNOE.mjs → chunk-LKEPABND.mjs} +86 -80
  8. package/packages/cli/dist/chunk-LKEPABND.mjs.map +1 -0
  9. package/packages/cli/dist/index.cjs +406 -93
  10. package/packages/cli/dist/index.cjs.map +1 -1
  11. package/packages/cli/dist/index.mjs +314 -16
  12. package/packages/cli/dist/index.mjs.map +1 -1
  13. package/packages/cli/dist/{src-YNEJOPRA.mjs → src-4WYF5RFI.mjs} +3 -3
  14. package/packages/cli/dist/{src-YNEJOPRA.mjs.map → src-4WYF5RFI.mjs.map} +1 -1
  15. package/packages/core/dist/advanced.cjs +97 -30
  16. package/packages/core/dist/advanced.cjs.map +1 -1
  17. package/packages/core/dist/advanced.mjs +13 -13
  18. package/packages/core/dist/checks.cjs +51 -49
  19. package/packages/core/dist/checks.cjs.map +1 -1
  20. package/packages/core/dist/checks.mjs +5 -5
  21. package/packages/core/dist/{chunk-PBNBQRXV.mjs → chunk-2KJR6X4V.mjs} +9 -9
  22. package/packages/core/dist/chunk-2KJR6X4V.mjs.map +1 -0
  23. package/packages/core/dist/{chunk-26YJSETN.mjs → chunk-7DHSWDKB.mjs} +19 -6
  24. package/packages/core/dist/chunk-7DHSWDKB.mjs.map +1 -0
  25. package/packages/core/dist/{chunk-BGF5JDJN.mjs → chunk-INE5IWLN.mjs} +3 -3
  26. package/packages/core/dist/{chunk-BGF5JDJN.mjs.map → chunk-INE5IWLN.mjs.map} +1 -1
  27. package/packages/core/dist/{chunk-ZFJ2ICTC.mjs → chunk-MTMTXTJL.mjs} +5 -5
  28. package/packages/core/dist/{chunk-ZFJ2ICTC.mjs.map → chunk-MTMTXTJL.mjs.map} +1 -1
  29. package/packages/core/dist/{chunk-KWBO36PH.mjs → chunk-NY4ILMXK.mjs} +4 -4
  30. package/packages/core/dist/{chunk-KWBO36PH.mjs.map → chunk-NY4ILMXK.mjs.map} +1 -1
  31. package/packages/core/dist/{chunk-WN5PT4GV.mjs → chunk-OSGNGRHF.mjs} +3 -3
  32. package/packages/core/dist/{chunk-WN5PT4GV.mjs.map → chunk-OSGNGRHF.mjs.map} +1 -1
  33. package/packages/core/dist/{chunk-CBPWLHNQ.mjs → chunk-PKDBFBJ7.mjs} +5 -76
  34. package/packages/core/dist/chunk-PKDBFBJ7.mjs.map +1 -0
  35. package/packages/core/dist/{chunk-VU6O5QAH.mjs → chunk-VLVCLAPB.mjs} +83 -5
  36. package/packages/core/dist/chunk-VLVCLAPB.mjs.map +1 -0
  37. package/packages/core/dist/exporters.cjs +224 -8
  38. package/packages/core/dist/exporters.cjs.map +1 -1
  39. package/packages/core/dist/exporters.mjs +125 -11
  40. package/packages/core/dist/exporters.mjs.map +1 -1
  41. package/packages/core/dist/index.cjs +97 -8
  42. package/packages/core/dist/index.cjs.map +1 -1
  43. package/packages/core/dist/index.mjs +6 -6
  44. package/packages/core/dist/logs.cjs +80 -2
  45. package/packages/core/dist/logs.cjs.map +1 -1
  46. package/packages/core/dist/logs.d.cts +2 -0
  47. package/packages/core/dist/logs.d.ts +2 -0
  48. package/packages/core/dist/logs.mjs +2 -2
  49. package/packages/core/dist/readers.cjs +2 -0
  50. package/packages/core/dist/readers.cjs.map +1 -1
  51. package/packages/core/dist/readers.mjs +2 -2
  52. package/packages/core/dist/writers.cjs +96 -8
  53. package/packages/core/dist/writers.cjs.map +1 -1
  54. package/packages/core/dist/writers.mjs +7 -8
  55. package/packages/core/dist/writers.mjs.map +1 -1
  56. package/packages/cli/dist/chunk-SJ6FRNOE.mjs.map +0 -1
  57. package/packages/core/dist/chunk-26YJSETN.mjs.map +0 -1
  58. package/packages/core/dist/chunk-CBPWLHNQ.mjs.map +0 -1
  59. package/packages/core/dist/chunk-PBNBQRXV.mjs.map +0 -1
  60. package/packages/core/dist/chunk-VU6O5QAH.mjs.map +0 -1
@@ -1,23 +1,23 @@
1
- import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-CBPWLHNQ.mjs';
2
- export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-CBPWLHNQ.mjs';
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-ZFJ2ICTC.mjs';
4
- import { buildRunTimeline, filterTraces, extractMetadata, buildRunSummary } from './chunk-KWBO36PH.mjs';
5
- export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, formatStepLabel, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-KWBO36PH.mjs';
6
- import { extractOutcomesFromTraceEvents, parseObservationFilter, summarizeObservedOutcomes, extractOutcomesFromPersistedEvents, renderObservedOutcomesHtml } from './chunk-BGF5JDJN.mjs';
7
- export { extractOutcomesFromPersistedEvents, extractOutcomesFromTraceEvents } from './chunk-BGF5JDJN.mjs';
1
+ import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-PKDBFBJ7.mjs';
2
+ export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-PKDBFBJ7.mjs';
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-MTMTXTJL.mjs';
4
+ import { buildRunTimeline, filterTraces, extractMetadata, buildRunSummary } from './chunk-NY4ILMXK.mjs';
5
+ export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, formatStepLabel, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-NY4ILMXK.mjs';
6
+ import { extractOutcomesFromTraceEvents, parseObservationFilter, summarizeObservedOutcomes, extractOutcomesFromPersistedEvents, renderObservedOutcomesHtml } from './chunk-INE5IWLN.mjs';
7
+ export { extractOutcomesFromPersistedEvents, extractOutcomesFromTraceEvents } from './chunk-INE5IWLN.mjs';
8
8
  import { diffTraceEvents, renderRunDiff } from './chunk-F7STQ5JF.mjs';
9
9
  import './chunk-BT7CATSD.mjs';
10
10
  import { escapeHtml, flattenTree } from './chunk-CAWPF22J.mjs';
11
- import { resolveRedactionProfile, readTraceEventsFromFile, stringContainsHighConfidenceCredential } from './chunk-PBNBQRXV.mjs';
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-PBNBQRXV.mjs';
13
- import { Redactor } from './chunk-VU6O5QAH.mjs';
14
- import { openTrace } from './chunk-WN5PT4GV.mjs';
11
+ import { resolveRedactionProfile, readTraceEventsFromFile, stringContainsHighConfidenceCredential } from './chunk-2KJR6X4V.mjs';
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-2KJR6X4V.mjs';
13
+ import { Redactor } from './chunk-VLVCLAPB.mjs';
14
+ import { openTrace } from './chunk-OSGNGRHF.mjs';
15
15
  import './chunk-FWK3Q3OJ.mjs';
16
16
  import './chunk-Q5SLKV2Y.mjs';
17
17
  import './chunk-S4YWKV4G.mjs';
18
18
  import './chunk-AK5EN4U2.mjs';
19
- import { parseDuration, isTraceEvent, getTraceFilePath } from './chunk-26YJSETN.mjs';
20
- export { DEFAULT_TRACE_DIR_NAME, FALLBACK_TRACE_DIR, MAX_NAME_LENGTH, RUNS_DIR_NAME, createRunId, createStepId, ensureTraceDir, formatDuration, formatError, formatTimestamp, getDefaultTraceDir, getTraceFilePath, isStepStatus, isStepType, isTraceEvent, parseDuration, parseTraceJsonl, truncateName, unknownTraceFormatMessage, warn } from './chunk-26YJSETN.mjs';
19
+ import { parseDuration, isTraceEvent, getTraceFilePath } from './chunk-7DHSWDKB.mjs';
20
+ export { DEFAULT_TRACE_DIR_NAME, FALLBACK_TRACE_DIR, MAX_NAME_LENGTH, RUNS_DIR_NAME, createRunId, createStepId, ensureTraceDir, formatDuration, formatError, formatTimestamp, getDefaultTraceDir, getTraceFilePath, isStepStatus, isStepType, isTraceEvent, parseDuration, parseTraceJsonl, truncateName, unknownTraceFormatMessage, warn } from './chunk-7DHSWDKB.mjs';
21
21
  import { persistedInspectEventsToTraceEvents } from './chunk-EE5Z2GQ3.mjs';
22
22
  export { ATTRIBUTION_CONFIDENCES, ATTRIBUTION_CONFIDENCE_RANK, isAttributionConfidence } from './chunk-EE5Z2GQ3.mjs';
23
23
  import './chunk-7TGZLWEE.mjs';
@@ -96,54 +96,6 @@ var OUTCOME_ATTRIBUTE_STATUS_KEY = "outcomeStatus";
96
96
  var OUTCOME_ATTRIBUTE_EXPECTATION_KEY = "expectation";
97
97
  var OUTCOME_ATTRIBUTE_METHOD_KEY = "method";
98
98
  var OUTCOME_ATTRIBUTE_OBSERVED_AT_KEY = "observedAt";
99
- var RUNS_DIR_NAME = "runs";
100
- path__default.default.join(
101
- os__default.default.tmpdir(),
102
- "agent-inspect",
103
- RUNS_DIR_NAME
104
- );
105
-
106
- // packages/core/src/outcomes/extract.ts
107
- function isOutcomeStatus(value) {
108
- return value === "passed" || value === "failed" || value === "unknown" || value === "skipped";
109
- }
110
- function parseMethod(value) {
111
- if (typeof value !== "string" || value.trim() === "") return void 0;
112
- return value;
113
- }
114
- function fromPersistedOutcome(event) {
115
- if (event.kind !== "OUTCOME") return void 0;
116
- const attrs2 = event.attributes ?? {};
117
- const statusRaw = attrs2[OUTCOME_ATTRIBUTE_STATUS_KEY];
118
- if (!isOutcomeStatus(statusRaw)) return void 0;
119
- const expectation = typeof attrs2[OUTCOME_ATTRIBUTE_EXPECTATION_KEY] === "string" ? attrs2[OUTCOME_ATTRIBUTE_EXPECTATION_KEY] : event.name;
120
- const observedAtRaw = attrs2[OUTCOME_ATTRIBUTE_OBSERVED_AT_KEY];
121
- const observedAt = typeof observedAtRaw === "string" ? Date.parse(observedAtRaw) : typeof observedAtRaw === "number" && Number.isFinite(observedAtRaw) ? observedAtRaw : Date.parse(event.timestamp);
122
- return {
123
- outcomeId: event.eventId,
124
- runId: event.runId,
125
- ...event.parentId !== void 0 ? { parentId: event.parentId } : {},
126
- name: event.name,
127
- expectation,
128
- status: statusRaw,
129
- ...parseMethod(attrs2[OUTCOME_ATTRIBUTE_METHOD_KEY]) !== void 0 ? { method: parseMethod(attrs2[OUTCOME_ATTRIBUTE_METHOD_KEY]) } : {},
130
- ...event.outputSummary !== void 0 ? { actual: event.outputSummary } : {},
131
- ...attrs2.evidence !== void 0 ? { evidence: attrs2.evidence } : {},
132
- observedAt: Number.isFinite(observedAt) ? observedAt : Date.parse(event.timestamp)
133
- };
134
- }
135
- function extractOutcomesFromPersistedEvents(events) {
136
- const out = [];
137
- for (const event of events) {
138
- const outcome = fromPersistedOutcome(event);
139
- if (outcome) out.push(outcome);
140
- }
141
- return out.sort((a, b) => a.observedAt - b.observedAt || a.name.localeCompare(b.name));
142
- }
143
- function outcomesMatchingStatus(outcomes, statuses) {
144
- const set = new Set(statuses);
145
- return outcomes.filter((outcome) => set.has(outcome.status));
146
- }
147
99
 
148
100
  // packages/core/src/safety/sensitive-key.ts
149
101
  function keyHasExplicitSeparator(value) {
@@ -217,6 +169,56 @@ function isCredentialSensitiveKey(key, sensitiveKeys = DEFAULT_CREDENTIAL_SENSIT
217
169
  return false;
218
170
  }
219
171
 
172
+ // packages/core/src/utils.ts
173
+ var RUNS_DIR_NAME = "runs";
174
+ path__default.default.join(
175
+ os__default.default.tmpdir(),
176
+ "agent-inspect",
177
+ RUNS_DIR_NAME
178
+ );
179
+
180
+ // packages/core/src/outcomes/extract.ts
181
+ function isOutcomeStatus(value) {
182
+ return value === "passed" || value === "failed" || value === "unknown" || value === "skipped";
183
+ }
184
+ function parseMethod(value) {
185
+ if (typeof value !== "string" || value.trim() === "") return void 0;
186
+ return value;
187
+ }
188
+ function fromPersistedOutcome(event) {
189
+ if (event.kind !== "OUTCOME") return void 0;
190
+ const attrs2 = event.attributes ?? {};
191
+ const statusRaw = attrs2[OUTCOME_ATTRIBUTE_STATUS_KEY];
192
+ if (!isOutcomeStatus(statusRaw)) return void 0;
193
+ const expectation = typeof attrs2[OUTCOME_ATTRIBUTE_EXPECTATION_KEY] === "string" ? attrs2[OUTCOME_ATTRIBUTE_EXPECTATION_KEY] : event.name;
194
+ const observedAtRaw = attrs2[OUTCOME_ATTRIBUTE_OBSERVED_AT_KEY];
195
+ const observedAt = typeof observedAtRaw === "string" ? Date.parse(observedAtRaw) : typeof observedAtRaw === "number" && Number.isFinite(observedAtRaw) ? observedAtRaw : Date.parse(event.timestamp);
196
+ return {
197
+ outcomeId: event.eventId,
198
+ runId: event.runId,
199
+ ...event.parentId !== void 0 ? { parentId: event.parentId } : {},
200
+ name: event.name,
201
+ expectation,
202
+ status: statusRaw,
203
+ ...parseMethod(attrs2[OUTCOME_ATTRIBUTE_METHOD_KEY]) !== void 0 ? { method: parseMethod(attrs2[OUTCOME_ATTRIBUTE_METHOD_KEY]) } : {},
204
+ ...event.outputSummary !== void 0 ? { actual: event.outputSummary } : {},
205
+ ...attrs2.evidence !== void 0 ? { evidence: attrs2.evidence } : {},
206
+ observedAt: Number.isFinite(observedAt) ? observedAt : Date.parse(event.timestamp)
207
+ };
208
+ }
209
+ function extractOutcomesFromPersistedEvents(events) {
210
+ const out = [];
211
+ for (const event of events) {
212
+ const outcome = fromPersistedOutcome(event);
213
+ if (outcome) out.push(outcome);
214
+ }
215
+ return out.sort((a, b) => a.observedAt - b.observedAt || a.name.localeCompare(b.name));
216
+ }
217
+ function outcomesMatchingStatus(outcomes, statuses) {
218
+ const set = new Set(statuses);
219
+ return outcomes.filter((outcome) => set.has(outcome.status));
220
+ }
221
+
220
222
  // packages/core/src/checks/logical-events.ts
221
223
  function isRecord(value) {
222
224
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -3628,7 +3630,7 @@ var DEFAULT_SECRET_PATTERNS = [
3628
3630
  // Keep in sync with packages/redact/src/key-value-secret.ts (KEY_VALUE_SECRET_PATTERN_SOURCE).
3629
3631
  {
3630
3632
  id: "key-value-secret",
3631
- pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=([^\s"'\\]{8,})/i
3633
+ pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})/i
3632
3634
  }
3633
3635
  ];
3634
3636
  function compareStrings(a, b) {