agent-trajectory-diff 0.5.0__tar.gz → 0.5.1__tar.gz
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.
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/.gitignore +0 -14
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/PKG-INFO +3 -3
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/README.md +2 -2
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/__init__.py +1 -1
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/loop_detector.py +19 -12
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/LICENSE +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/pyproject.toml +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/__main__.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/__init__.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/_iso.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/_messages.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/base.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/crewai.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/generic.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/langfuse.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/langgraph.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/langsmith.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/openai_agents.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/openinference.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/registry.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/ci/approve.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/ci/baseline.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/ci/github.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/cli.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/config.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/__init__.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/aligner.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/benchmark.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/comparator.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/explanations.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/metrics.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/suite.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/tree.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/governance.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/init_wizard.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/loader.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/models/__init__.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/models/envelope.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/models/report.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/models/step.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/models/trace.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/py.typed +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/pytest_plugin.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/recorder.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/reporters/__init__.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/reporters/markdown.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/reporters/pr.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/reporters/terminal.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/staleness.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/testing/__init__.py +0 -0
- {agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/testing/assertions.py +0 -0
|
@@ -65,20 +65,6 @@ coverage.xml
|
|
|
65
65
|
*.cover
|
|
66
66
|
*.log
|
|
67
67
|
|
|
68
|
-
# 6. Next.js / Website (Node.js & pnpm)
|
|
69
|
-
website/node_modules/
|
|
70
|
-
website/.next/
|
|
71
|
-
website/out/
|
|
72
|
-
website/build/
|
|
73
|
-
website/npm-debug.log*
|
|
74
|
-
website/yarn-debug.log*
|
|
75
|
-
website/yarn-error.log*
|
|
76
|
-
website/pnpm-debug.log*
|
|
77
|
-
website/.env*.local
|
|
78
|
-
website/.env.local
|
|
79
|
-
website/.env.development.local
|
|
80
|
-
website/.env.test.local
|
|
81
|
-
website/.env.production.local
|
|
82
68
|
|
|
83
69
|
# pytest-benchmark local results
|
|
84
70
|
.benchmarks/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agent-trajectory-diff
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
Summary: A developer-first package to evaluate and find regressions in agent trajectories
|
|
5
5
|
Project-URL: Homepage, https://github.com/kerrshift/agentdiff
|
|
6
6
|
Project-URL: Repository, https://github.com/kerrshift/agentdiff
|
|
@@ -219,8 +219,8 @@ make test
|
|
|
219
219
|
# Build package distributions
|
|
220
220
|
make build
|
|
221
221
|
|
|
222
|
-
#
|
|
223
|
-
|
|
222
|
+
# Website & docs (separate repo, deploys agentdiff.app)
|
|
223
|
+
# → github.com/kerrshift/agentdiff-website
|
|
224
224
|
```
|
|
225
225
|
|
|
226
226
|
## License
|
|
@@ -199,8 +199,8 @@ make test
|
|
|
199
199
|
# Build package distributions
|
|
200
200
|
make build
|
|
201
201
|
|
|
202
|
-
#
|
|
203
|
-
|
|
202
|
+
# Website & docs (separate repo, deploys agentdiff.app)
|
|
203
|
+
# → github.com/kerrshift/agentdiff-website
|
|
204
204
|
```
|
|
205
205
|
|
|
206
206
|
## License
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/loop_detector.py
RENAMED
|
@@ -24,8 +24,14 @@ def detect_graph_cycles(trace: AgentTrace) -> list[list[str]]:
|
|
|
24
24
|
def detect_sequence_loops(trace: AgentTrace) -> list[dict[str, Any]]:
|
|
25
25
|
"""Detects consecutive repeating sub-sequences of steps (e.g., A -> B -> A -> B).
|
|
26
26
|
|
|
27
|
-
A loop is
|
|
28
|
-
|
|
27
|
+
A loop is a sequence of step names of length k repeating consecutively 2 or
|
|
28
|
+
more times **with stagnant state**: the repeated steps must have identical
|
|
29
|
+
input payloads and outputs.
|
|
30
|
+
|
|
31
|
+
Repetition with *different* inputs is legitimate iteration (an agent
|
|
32
|
+
querying three states, paginating, or walking a list), so it is not a loop.
|
|
33
|
+
Runaway behaviour with drifting arguments is covered by the tool-repeat cap
|
|
34
|
+
(``max_tool_repeats``) and by the resource bands, not by this detector.
|
|
29
35
|
"""
|
|
30
36
|
steps = sorted(trace.steps, key=lambda s: s.step_index)
|
|
31
37
|
names = [s.name for s in steps]
|
|
@@ -68,16 +74,17 @@ def detect_sequence_loops(trace: AgentTrace) -> list[dict[str, Any]]:
|
|
|
68
74
|
if not stagnant:
|
|
69
75
|
break
|
|
70
76
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
if stagnant:
|
|
78
|
+
loops.append(
|
|
79
|
+
{
|
|
80
|
+
"steps": pattern,
|
|
81
|
+
"step_ids": loop_step_ids,
|
|
82
|
+
"iterations": count,
|
|
83
|
+
"start_index": i,
|
|
84
|
+
"length": k,
|
|
85
|
+
"stagnant": stagnant,
|
|
86
|
+
}
|
|
87
|
+
)
|
|
81
88
|
|
|
82
89
|
# Advance pointer past the repeated patterns
|
|
83
90
|
i += count * k
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/_messages.py
RENAMED
|
File without changes
|
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/crewai.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/generic.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/langfuse.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/langgraph.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/langsmith.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/openai_agents.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/openinference.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/adapters/registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/benchmark.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/comparator.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/engine/explanations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/models/__init__.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/models/envelope.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/reporters/__init__.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/reporters/markdown.py
RENAMED
|
File without changes
|
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/reporters/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/testing/__init__.py
RENAMED
|
File without changes
|
{agent_trajectory_diff-0.5.0 → agent_trajectory_diff-0.5.1}/src/agentdiff/testing/assertions.py
RENAMED
|
File without changes
|