ciagent 0.4.2__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.
Files changed (51) hide show
  1. ciagent-0.5.1/CHANGELOG.md +87 -0
  2. {ciagent-0.4.2 → ciagent-0.5.1}/PKG-INFO +95 -11
  3. {ciagent-0.4.2 → ciagent-0.5.1}/README.md +89 -8
  4. {ciagent-0.4.2 → ciagent-0.5.1}/pyproject.toml +3 -3
  5. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/capture.py +1 -0
  6. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/cli.py +265 -49
  7. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/correctness.py +48 -9
  8. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/diff.py +14 -8
  9. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/judge.py +64 -19
  10. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/mock_runner.py +9 -3
  11. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/reporter.py +25 -0
  12. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/runner.py +10 -11
  13. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/mocks.py +1 -0
  14. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/pytest_plugin.py +1 -0
  15. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/runner.py +1 -0
  16. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/schema/spec_models.py +5 -1
  17. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/templates/github_action.yml.j2 +2 -0
  18. ciagent-0.4.2/CHANGELOG.md +0 -11
  19. {ciagent-0.4.2 → ciagent-0.5.1}/.gitignore +0 -0
  20. {ciagent-0.4.2 → ciagent-0.5.1}/LICENSE +0 -0
  21. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/__init__.py +0 -0
  22. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/_version.py +0 -0
  23. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/adapters/__init__.py +0 -0
  24. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/adapters/base.py +0 -0
  25. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/adapters/generic.py +0 -0
  26. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/adapters/langgraph.py +0 -0
  27. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/adapters/openai_agents.py +0 -0
  28. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/assertions.py +0 -0
  29. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/baselines.py +0 -0
  30. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/config.py +0 -0
  31. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/cost.py +0 -0
  32. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/diff_engine.py +0 -0
  33. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/__init__.py +0 -0
  34. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/cost.py +0 -0
  35. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/cost_estimator.py +0 -0
  36. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/metrics.py +0 -0
  37. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/parallel.py +0 -0
  38. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/path.py +0 -0
  39. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/results.py +0 -0
  40. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/engine/span_assertions.py +0 -0
  41. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/exceptions.py +0 -0
  42. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/loader.py +0 -0
  43. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/models.py +0 -0
  44. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/py.typed +0 -0
  45. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/report.py +0 -0
  46. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/schema/__init__.py +0 -0
  47. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/schema/agentci_spec.schema.json +0 -0
  48. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/schema/generate_schema.py +0 -0
  49. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/templates/__init__.py +0 -0
  50. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/templates/agentci.yaml +0 -0
  51. {ciagent-0.4.2 → ciagent-0.5.1}/src/agentci/templates/pre_push_hook.sh.j2 +0 -0
@@ -0,0 +1,87 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.5.0] - 2026-03-01
9
+
10
+ ### Added
11
+
12
+ #### Three-Layer Evaluation Engine
13
+ - **Correctness layer** (Layer 1 — hard fail): keyword matching, LLM-as-a-judge, safety checks, hallucination checks, regex/exact match, JSON schema validation
14
+ - **Path layer** (Layer 2 — soft warn): tool trajectory validation, loop detection (default `max_loops=3`), routing assertions, handoff expectations
15
+ - **Cost layer** (Layer 3 — soft warn): token budgets, cost caps, LLM call limits, latency thresholds
16
+ - `runner.py` orchestrates all three layers per query
17
+ - `parallel.py` for parallel query execution across specs
18
+
19
+ #### OR-Logic Keywords
20
+ - `any_expected_in_answer` field — at least one keyword must match (complementing `expected_in_answer` which requires all)
21
+
22
+ #### LLM Judge Enhancements
23
+ - `context_file` support in `JudgeRubric` — doc-grounded judging against reference documents
24
+ - `refutes_premise` flag — injects built-in premise-correction rubric for trick questions
25
+
26
+ #### Span Assertions
27
+ - `SpanAssertionSpec` schema model for span-level assertions
28
+ - `Span.attributes: dict[str, Any]` — OTel-style span-level data propagation
29
+ - Span-level LLM judge support
30
+
31
+ #### Mock Testing Mode
32
+ - `agentci test --mock` — generates synthetic traces, zero API cost
33
+ - `mock_runner.py` — synthetic trace generation from spec expectations
34
+ - `--golden-file` flag — load Q&A pairs from JSON/CSV for mock mode
35
+
36
+ #### Cost Estimator
37
+ - `cost_estimator.py` — pre-execution cost estimates with pricing table
38
+ - Cost estimate shown before live test runs; `--yes`/`-y` skips confirmation
39
+
40
+ #### CLI Improvements
41
+ - `agentci init --generate` — AI-assisted spec generation with guided interview
42
+ - `agentci doctor` — health-check command (spec, runner, API keys, deps, CI)
43
+ - Scan-first flow: auto-scan project before questions, show summary
44
+ - Agent type auto-detected via `_detect_agent_type_from_code()`
45
+ - Skeleton template generation with TODO placeholders for zero-API-key usage
46
+ - Context-aware "Next Steps" based on mode (mock vs live)
47
+ - Non-interactive flags: `--kb-path`, `--mode`
48
+
49
+ #### Diff Engine
50
+ - Three-tier diff engine for baseline comparison
51
+ - 11 `DiffType` categories including `ROUTING_CHANGED`, `GUARDRAILS_CHANGED`
52
+ - `agentci diff` CLI command
53
+
54
+ #### Reporting
55
+ - GitHub annotations with budget cap (`MAX_INLINE_ANNOTATIONS = 10` for warnings; errors uncapped)
56
+ - JSON output format
57
+ - Prometheus metrics export
58
+
59
+ #### Trace Helpers
60
+ - `Trace.called(tool)` / `never_called(tool)` / `loop_count(tool)` — readable assertion helpers
61
+ - `Trace.cost_under(usd)` / `llm_calls_under(n)` — budget assertion helpers
62
+ - `langgraph_trace(agent_name)` — context manager shortcut for LangGraph
63
+ - `TraceContext.attach(state)` — alias for `attach_langgraph_state()`
64
+
65
+ #### Adapters
66
+ - OpenAI Agents SDK adapter (`openai_agents.py`)
67
+ - LangGraph adapter (`langgraph.py`)
68
+
69
+ #### Other
70
+ - `python-dotenv` added as core dependency
71
+ - Deep KB sampling: 2000 chars/file for spec generation
72
+ - Progressive spec building: smoke queries (3) then full queries (10-12)
73
+ - Pytest plugin entry point (`pytest11: agentci`)
74
+ - GUARDRAIL span type, HANDOFF span type
75
+
76
+ ### Changed
77
+ - `PathSpec.max_loops` now defaults to `3` (was `None`)
78
+ - Development status upgraded from Alpha to Beta
79
+ - Package version bumped to 0.5.0
80
+
81
+ ## [0.4.1] - 2026-02-20
82
+
83
+ ### Added
84
+ - Initial project structure and core models
85
+ - Basic trace capture and assertion framework
86
+ - CLI scaffolding with `agentci init`
87
+ - PyPI publishing as `ciagent`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ciagent
3
- Version: 0.4.2
3
+ Version: 0.5.1
4
4
  Summary: Continuous Integration for AI Agents. Catch cost spikes and logic regressions before production.
5
5
  Project-URL: Documentation, https://github.com/agentci-org/agentci#readme
6
6
  Project-URL: Repository, https://github.com/agentci-org/agentci.git
@@ -8,7 +8,7 @@ Project-URL: Issues, https://github.com/agentci-org/agentci/issues
8
8
  License: Apache-2.0
9
9
  License-File: LICENSE
10
10
  Keywords: agents,ai,ci-cd,llm,regression,testing
11
- Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Development Status :: 4 - Beta
12
12
  Classifier: Framework :: Pytest
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Topic :: Software Development :: Testing
@@ -23,7 +23,10 @@ Requires-Dist: python-dotenv>=0.19
23
23
  Requires-Dist: pyyaml>=6.0
24
24
  Requires-Dist: rich>=13.0
25
25
  Provides-Extra: all
26
- Requires-Dist: agentci[anthropic,jsonschema,langgraph,openai]; extra == 'all'
26
+ Requires-Dist: anthropic>=0.20; extra == 'all'
27
+ Requires-Dist: jsonschema>=4.0; extra == 'all'
28
+ Requires-Dist: langgraph>=0.1; extra == 'all'
29
+ Requires-Dist: openai>=1.0; extra == 'all'
27
30
  Provides-Extra: anthropic
28
31
  Requires-Dist: anthropic>=0.20; extra == 'anthropic'
29
32
  Provides-Extra: dev
@@ -219,11 +222,87 @@ Clone the [DemoAgents](https://github.com/agentci-org/DemoAgents) repo and try t
219
222
  ## CLI
220
223
 
221
224
  ```bash
222
- agentci init # Generate CI config (GitHub Actions + pre-push hooks)
223
- agentci run # Run all tests (pytest-compatible)
224
- agentci record # Record golden baseline traces
225
- agentci diff # Diff current run against baseline
226
- agentci report # Generate HTML report from results
225
+ # ── Setup & Scaffolding ──────────────────────────────────────────────
226
+ agentci init # Scaffold GitHub Actions + pre-push hooks
227
+ agentci init --generate # Guided interview: auto-scan project, generate agentci_spec.yaml
228
+ agentci init --generate --mode mock --golden-file qa.json # Zero-API-key spec generation
229
+ agentci doctor # Health check: spec, deps, API keys, KB, CI workflow
230
+ agentci validate # Validate agentci_spec.yaml against schema (no execution)
231
+ agentci bootstrap # Quick setup from a queries file + runner path
232
+
233
+ # ── Testing & Evaluation ─────────────────────────────────────────────
234
+ agentci test # Run 3-layer evaluation (Correctness → Path → Cost)
235
+ agentci test --mock # Zero-cost synthetic traces — no API keys needed
236
+ agentci test --yes # Skip cost-estimate confirmation (CI-friendly)
237
+ agentci test --workers 4 # Parallel execution
238
+ agentci eval # Standalone correctness evaluation (no golden baselines)
239
+
240
+ # ── Golden Baselines ─────────────────────────────────────────────────
241
+ agentci record # Record a golden baseline trace from a live run
242
+ agentci save --agent my-agent --version v1 --trace-file trace.json # Save versioned baseline
243
+ agentci baselines --agent my-agent # List saved baseline versions
244
+ agentci diff --agent my-agent --baseline v1 --compare v2 # Diff two versions
245
+
246
+ # ── Reporting ─────────────────────────────────────────────────────────
247
+ agentci run # Legacy test runner (pytest-compatible)
248
+ agentci report # Generate HTML report from results JSON
249
+ ```
250
+
251
+ ## 3-Layer Evaluation Engine
252
+
253
+ `agentci test` evaluates every query through three layers:
254
+
255
+ | Layer | Severity | Purpose | Example |
256
+ |-------|----------|---------|---------|
257
+ | **Correctness** | Hard FAIL (blocks CI) | Answer quality | `expected_in_answer`, `llm_judge`, `not_in_answer`, `regex_match`, `json_schema` |
258
+ | **Path** | Soft WARN (annotation only) | Tool trajectory | `expected_tools`, `min_tool_recall`, `max_loops` |
259
+ | **Cost** | Soft WARN (annotation only) | Efficiency budget | `max_llm_calls`, `max_tokens`, `max_cost_usd` |
260
+
261
+ Layer 1 failures block CI (exit code 1). Layers 2-3 produce GitHub annotations but let CI pass.
262
+
263
+ ```yaml
264
+ # agentci_spec.yaml — one query with all three layers
265
+ queries:
266
+ - query: "How do I install AgentCI?"
267
+ correctness:
268
+ any_expected_in_answer: ["pip install", "ciagent"]
269
+ llm_judge:
270
+ - rule: "Response provides clear installation instructions"
271
+ threshold: 0.7
272
+ path:
273
+ expected_tools: [retrieve_docs]
274
+ min_tool_recall: 1.0
275
+ cost:
276
+ max_llm_calls: 8
277
+ ```
278
+
279
+ ## Mock Mode
280
+
281
+ Test your spec structure with zero API keys and zero cost:
282
+
283
+ ```bash
284
+ agentci test --mock
285
+ ```
286
+
287
+ Mock mode generates synthetic traces that match your spec expectations. Use it to:
288
+ - Validate spec structure before spending on live runs
289
+ - Run in CI without API keys for fast feedback
290
+ - Iterate on assertions without waiting for LLM responses
291
+
292
+ ## Cost Estimation
293
+
294
+ Before live test runs, AgentCI shows a cost estimate:
295
+
296
+ ```bash
297
+ $ agentci test
298
+ Estimated cost: $0.12 – $0.35 (12 queries)
299
+ Proceed? [y/N] y
300
+ ```
301
+
302
+ Skip the prompt in CI with `--yes` or `-y`:
303
+
304
+ ```bash
305
+ agentci test --yes # no confirmation prompt
227
306
  ```
228
307
 
229
308
  ## CI/CD
@@ -298,13 +377,18 @@ When you diff a current run against a golden baseline, AgentCI flags these chang
298
377
 
299
378
  ## Status
300
379
 
301
- AgentCI is in **early release** (v0.1.x). The core trace model, diffing engine, assertion library, mock system, and CLI are stable. The API may evolve based on community feedback.
380
+ AgentCI is in **beta** (v0.5.0). The core trace model, diffing engine, 3-layer evaluation engine, mock system, and CLI are stable. The API may evolve based on community feedback.
302
381
 
303
382
  **What's here today:**
383
+ - 3-layer evaluation engine (Correctness / Path / Cost)
304
384
  - Trace capture for LangGraph, Anthropic, and OpenAI Agents SDK
305
- - Golden baseline recording and regression diffing
385
+ - Golden baseline recording, versioned saves, and regression diffing
306
386
  - LLM mocking for all three frameworks (zero API keys)
307
- - LLM-as-judge assertions for subjective output grading
387
+ - LLM-as-judge with composite rubrics, ensemble judging, and doc-grounded evaluation
388
+ - Mock mode (`agentci test --mock`) for zero-cost spec validation
389
+ - Guided spec generation (`agentci init --generate`) with auto-scan and KB sampling
390
+ - Health check (`agentci doctor`) for environment validation
391
+ - Cost estimation before live runs
308
392
  - Pytest plugin for native integration
309
393
  - GitHub Actions generator via `agentci init`
310
394
 
@@ -179,11 +179,87 @@ Clone the [DemoAgents](https://github.com/agentci-org/DemoAgents) repo and try t
179
179
  ## CLI
180
180
 
181
181
  ```bash
182
- agentci init # Generate CI config (GitHub Actions + pre-push hooks)
183
- agentci run # Run all tests (pytest-compatible)
184
- agentci record # Record golden baseline traces
185
- agentci diff # Diff current run against baseline
186
- agentci report # Generate HTML report from results
182
+ # ── Setup & Scaffolding ──────────────────────────────────────────────
183
+ agentci init # Scaffold GitHub Actions + pre-push hooks
184
+ agentci init --generate # Guided interview: auto-scan project, generate agentci_spec.yaml
185
+ agentci init --generate --mode mock --golden-file qa.json # Zero-API-key spec generation
186
+ agentci doctor # Health check: spec, deps, API keys, KB, CI workflow
187
+ agentci validate # Validate agentci_spec.yaml against schema (no execution)
188
+ agentci bootstrap # Quick setup from a queries file + runner path
189
+
190
+ # ── Testing & Evaluation ─────────────────────────────────────────────
191
+ agentci test # Run 3-layer evaluation (Correctness → Path → Cost)
192
+ agentci test --mock # Zero-cost synthetic traces — no API keys needed
193
+ agentci test --yes # Skip cost-estimate confirmation (CI-friendly)
194
+ agentci test --workers 4 # Parallel execution
195
+ agentci eval # Standalone correctness evaluation (no golden baselines)
196
+
197
+ # ── Golden Baselines ─────────────────────────────────────────────────
198
+ agentci record # Record a golden baseline trace from a live run
199
+ agentci save --agent my-agent --version v1 --trace-file trace.json # Save versioned baseline
200
+ agentci baselines --agent my-agent # List saved baseline versions
201
+ agentci diff --agent my-agent --baseline v1 --compare v2 # Diff two versions
202
+
203
+ # ── Reporting ─────────────────────────────────────────────────────────
204
+ agentci run # Legacy test runner (pytest-compatible)
205
+ agentci report # Generate HTML report from results JSON
206
+ ```
207
+
208
+ ## 3-Layer Evaluation Engine
209
+
210
+ `agentci test` evaluates every query through three layers:
211
+
212
+ | Layer | Severity | Purpose | Example |
213
+ |-------|----------|---------|---------|
214
+ | **Correctness** | Hard FAIL (blocks CI) | Answer quality | `expected_in_answer`, `llm_judge`, `not_in_answer`, `regex_match`, `json_schema` |
215
+ | **Path** | Soft WARN (annotation only) | Tool trajectory | `expected_tools`, `min_tool_recall`, `max_loops` |
216
+ | **Cost** | Soft WARN (annotation only) | Efficiency budget | `max_llm_calls`, `max_tokens`, `max_cost_usd` |
217
+
218
+ Layer 1 failures block CI (exit code 1). Layers 2-3 produce GitHub annotations but let CI pass.
219
+
220
+ ```yaml
221
+ # agentci_spec.yaml — one query with all three layers
222
+ queries:
223
+ - query: "How do I install AgentCI?"
224
+ correctness:
225
+ any_expected_in_answer: ["pip install", "ciagent"]
226
+ llm_judge:
227
+ - rule: "Response provides clear installation instructions"
228
+ threshold: 0.7
229
+ path:
230
+ expected_tools: [retrieve_docs]
231
+ min_tool_recall: 1.0
232
+ cost:
233
+ max_llm_calls: 8
234
+ ```
235
+
236
+ ## Mock Mode
237
+
238
+ Test your spec structure with zero API keys and zero cost:
239
+
240
+ ```bash
241
+ agentci test --mock
242
+ ```
243
+
244
+ Mock mode generates synthetic traces that match your spec expectations. Use it to:
245
+ - Validate spec structure before spending on live runs
246
+ - Run in CI without API keys for fast feedback
247
+ - Iterate on assertions without waiting for LLM responses
248
+
249
+ ## Cost Estimation
250
+
251
+ Before live test runs, AgentCI shows a cost estimate:
252
+
253
+ ```bash
254
+ $ agentci test
255
+ Estimated cost: $0.12 – $0.35 (12 queries)
256
+ Proceed? [y/N] y
257
+ ```
258
+
259
+ Skip the prompt in CI with `--yes` or `-y`:
260
+
261
+ ```bash
262
+ agentci test --yes # no confirmation prompt
187
263
  ```
188
264
 
189
265
  ## CI/CD
@@ -258,13 +334,18 @@ When you diff a current run against a golden baseline, AgentCI flags these chang
258
334
 
259
335
  ## Status
260
336
 
261
- AgentCI is in **early release** (v0.1.x). The core trace model, diffing engine, assertion library, mock system, and CLI are stable. The API may evolve based on community feedback.
337
+ AgentCI is in **beta** (v0.5.0). The core trace model, diffing engine, 3-layer evaluation engine, mock system, and CLI are stable. The API may evolve based on community feedback.
262
338
 
263
339
  **What's here today:**
340
+ - 3-layer evaluation engine (Correctness / Path / Cost)
264
341
  - Trace capture for LangGraph, Anthropic, and OpenAI Agents SDK
265
- - Golden baseline recording and regression diffing
342
+ - Golden baseline recording, versioned saves, and regression diffing
266
343
  - LLM mocking for all three frameworks (zero API keys)
267
- - LLM-as-judge assertions for subjective output grading
344
+ - LLM-as-judge with composite rubrics, ensemble judging, and doc-grounded evaluation
345
+ - Mock mode (`agentci test --mock`) for zero-cost spec validation
346
+ - Guided spec generation (`agentci init --generate`) with auto-scan and KB sampling
347
+ - Health check (`agentci doctor`) for environment validation
348
+ - Cost estimation before live runs
268
349
  - Pytest plugin for native integration
269
350
  - GitHub Actions generator via `agentci init`
270
351
 
@@ -1,13 +1,13 @@
1
1
  [project]
2
2
  name = "ciagent"
3
- version = "0.4.2"
3
+ version = "0.5.1"
4
4
  description = "Continuous Integration for AI Agents. Catch cost spikes and logic regressions before production."
5
5
  readme = "README.md"
6
6
  license = {text = "Apache-2.0"}
7
7
  requires-python = ">=3.10"
8
8
  keywords = ["ai", "agents", "testing", "llm", "ci-cd", "regression"]
9
9
  classifiers = [
10
- "Development Status :: 3 - Alpha",
10
+ "Development Status :: 4 - Beta",
11
11
  "Intended Audience :: Developers",
12
12
  "Topic :: Software Development :: Testing",
13
13
  "Framework :: Pytest",
@@ -37,7 +37,7 @@ openai = ["openai>=1.0"]
37
37
  anthropic = ["anthropic>=0.20"]
38
38
  langgraph = ["langgraph>=0.1"]
39
39
  jsonschema = ["jsonschema>=4.0"]
40
- all = ["agentci[openai,anthropic,langgraph,jsonschema]"]
40
+ all = ["ciagent[openai,anthropic,langgraph,jsonschema]"]
41
41
  dev = ["pytest>=8.0", "ruff", "mypy"]
42
42
 
43
43
  [project.scripts]
@@ -8,6 +8,7 @@ object. The developer doesn't change their agent code at all.
8
8
  Phase 1: Patch openai.ChatCompletion and anthropic.Messages
9
9
  Phase 2: Add OTEL span emission for interop with Arize/Langfuse
10
10
  """
11
+ from __future__ import annotations
11
12
 
12
13
  import time
13
14
  import contextvars