agent-inspect 6.31.32 → 6.31.34

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 (41) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/docs/TRACE-CONTRACTS.md +2 -0
  4. package/package.json +1 -1
  5. package/packages/cli/dist/{chunk-PEGM6T2X.mjs → chunk-6TXW53UR.mjs} +138 -36
  6. package/packages/cli/dist/chunk-6TXW53UR.mjs.map +1 -0
  7. package/packages/cli/dist/index.cjs +197 -50
  8. package/packages/cli/dist/index.cjs.map +1 -1
  9. package/packages/cli/dist/index.mjs +64 -19
  10. package/packages/cli/dist/index.mjs.map +1 -1
  11. package/packages/cli/dist/{src-CWUJTMRD.mjs → src-GCLC4DIC.mjs} +3 -3
  12. package/packages/cli/dist/{src-CWUJTMRD.mjs.map → src-GCLC4DIC.mjs.map} +1 -1
  13. package/packages/core/dist/advanced.cjs +79 -20
  14. package/packages/core/dist/advanced.cjs.map +1 -1
  15. package/packages/core/dist/advanced.mjs +9 -9
  16. package/packages/core/dist/checks.cjs +133 -32
  17. package/packages/core/dist/checks.cjs.map +1 -1
  18. package/packages/core/dist/checks.mjs +3 -3
  19. package/packages/core/dist/{chunk-6S666BF4.mjs → chunk-2SKAI5ZN.mjs} +3 -3
  20. package/packages/core/dist/{chunk-6S666BF4.mjs.map → chunk-2SKAI5ZN.mjs.map} +1 -1
  21. package/packages/core/dist/{chunk-FBPDF7HO.mjs → chunk-6F6KLGCR.mjs} +3 -3
  22. package/packages/core/dist/{chunk-FBPDF7HO.mjs.map → chunk-6F6KLGCR.mjs.map} +1 -1
  23. package/packages/core/dist/{chunk-6G67ZN72.mjs → chunk-CXC7L4PY.mjs} +136 -35
  24. package/packages/core/dist/chunk-CXC7L4PY.mjs.map +1 -0
  25. package/packages/core/dist/{chunk-RB6WANSW.mjs → chunk-PU3FF5AP.mjs} +5 -4
  26. package/packages/core/dist/chunk-PU3FF5AP.mjs.map +1 -0
  27. package/packages/core/dist/{chunk-VIEJJ5JB.mjs → chunk-X5RP2E2H.mjs} +4 -4
  28. package/packages/core/dist/{chunk-VIEJJ5JB.mjs.map → chunk-X5RP2E2H.mjs.map} +1 -1
  29. package/packages/core/dist/exporters.cjs +33 -9
  30. package/packages/core/dist/exporters.cjs.map +1 -1
  31. package/packages/core/dist/exporters.mjs +33 -10
  32. package/packages/core/dist/exporters.mjs.map +1 -1
  33. package/packages/core/dist/index.cjs +3 -2
  34. package/packages/core/dist/index.cjs.map +1 -1
  35. package/packages/core/dist/index.mjs +4 -4
  36. package/packages/core/dist/writers.cjs +3 -2
  37. package/packages/core/dist/writers.cjs.map +1 -1
  38. package/packages/core/dist/writers.mjs +1 -1
  39. package/packages/cli/dist/chunk-PEGM6T2X.mjs.map +0 -1
  40. package/packages/core/dist/chunk-6G67ZN72.mjs.map +0 -1
  41. package/packages/core/dist/chunk-RB6WANSW.mjs.map +0 -1
@@ -193,8 +193,9 @@ var HIGH_CONFIDENCE_CREDENTIAL_PATTERNS = [
193
193
  /\beyJ[a-zA-Z0-9_-]{8,}\.[a-zA-Z0-9_-]{8,}\.[a-zA-Z0-9_-]{8,}\b/,
194
194
  /\b(?:sk-(?:proj-)?[a-zA-Z0-9_-]{16,}|sk-ant-[a-zA-Z0-9_-]{16,}|AIza[0-9A-Za-z_-]{20,})\b/,
195
195
  // Stripe secret / restricted keys use underscores (not sk-). Keep in sync with
196
- // packages/redact/src/index.ts + packages/core/src/checks DEFAULT_SECRET_PATTERNS (#520).
197
- /\b(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{16,}\b/,
196
+ // packages/redact/src/index.ts + packages/core/src/checks DEFAULT_SECRET_PATTERNS (#520/#528).
197
+ // Use non-alnum lookarounds so underscore-adjacent forms (acct_sk_live_…, …_eu) match.
198
+ /(?<![A-Za-z0-9])(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{16,}(?![A-Za-z0-9])/,
198
199
  /\bxox[abposr]-[A-Za-z0-9-]{10,}\b/,
199
200
  /\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9_]{20,}\b/,
200
201
  /\b(?:AKIA|ASIA)[A-Z0-9]{16}\b/,
@@ -845,11 +846,25 @@ function attemptIdOf(event) {
845
846
  }
846
847
  return void 0;
847
848
  }
849
+ function operationIdOf(event) {
850
+ const direct = event.attributes?.operationId;
851
+ if (typeof direct === "string" && direct.trim() !== "") return direct;
852
+ const meta = event.attributes?.metadata;
853
+ if (meta && typeof meta === "object" && !Array.isArray(meta)) {
854
+ const nested = meta.operationId;
855
+ if (typeof nested === "string" && nested.trim() !== "") return nested;
856
+ }
857
+ return void 0;
858
+ }
848
859
  function lifecycleKey(event) {
849
860
  if (event.kind === "RUN") return `run:${event.runId}`;
850
861
  const stepId = stepIdOf(event);
851
- if (stepId !== void 0) return `step:${stepId}`;
852
- return `event:${event.eventId}`;
862
+ if (stepId === void 0) return `event:${event.eventId}`;
863
+ const attemptId = attemptIdOf(event);
864
+ if (attemptId !== void 0) return `step:${stepId}:attempt:${attemptId}`;
865
+ const operationId = operationIdOf(event);
866
+ if (operationId !== void 0) return `step:${stepId}:op:${operationId}`;
867
+ return `step:${stepId}`;
853
868
  }
854
869
  function isTerminal(status) {
855
870
  return status === "ok" || status === "error";
@@ -900,6 +915,12 @@ function joinSiblingGroup(group) {
900
915
  const others = group.filter(
901
916
  (n) => !isTerminal(n.event.status) && n.event.status !== "running"
902
917
  );
918
+ const operationIds = new Set(
919
+ group.map((n) => operationIdOf(n.event)).filter((id) => id !== void 0)
920
+ );
921
+ if (operationIds.size > 1) {
922
+ return group;
923
+ }
903
924
  const terminalStatuses = new Set(terminals.map((n) => n.event.status));
904
925
  if (terminalStatuses.size > 1) {
905
926
  return group;
@@ -911,19 +932,22 @@ function joinSiblingGroup(group) {
911
932
  const out = [];
912
933
  for (const terminal of terminals) {
913
934
  const terminalAttempt = attemptIdOf(terminal.event);
935
+ const terminalOp = operationIdOf(terminal.event);
914
936
  const terminalTs = eventTime(terminal.event);
915
- const candidate = runnings.find((r) => {
937
+ const candidates = runnings.filter((r) => {
916
938
  if (usedRunning.has(r.event.eventId)) return false;
917
939
  if (eventTime(r.event) > terminalTs) return false;
940
+ const runningOp = operationIdOf(r.event);
941
+ if (terminalOp !== void 0 && runningOp !== void 0 && terminalOp !== runningOp) {
942
+ return false;
943
+ }
918
944
  const runningAttempt = attemptIdOf(r.event);
919
945
  if (terminalAttempt !== void 0) {
920
946
  return runningAttempt === terminalAttempt;
921
947
  }
922
- if (runningAttempt !== void 0) {
923
- return true;
924
- }
925
- return true;
948
+ return runningAttempt === void 0;
926
949
  });
950
+ const candidate = candidates.length === 1 ? candidates[0] : void 0;
927
951
  if (candidate) {
928
952
  usedRunning.add(candidate.event.eventId);
929
953
  out.push(joinOnePair(candidate, terminal));