Skip to content

Conversation

@josh-hhai
Copy link
Contributor

@josh-hhai josh-hhai commented Aug 28, 2025

Completely replaces the old sdk with datamodel-codegen for the openapi spec, and removes traceloop and implemente opentlemetry. Greatly increases testability. Delivers no sdk code change support for bring your own instrumnetor.

TODO: Need to rework github workflows to suit the new model.
TODO: Look at adding specific environment testing, i.e. aws lambda


Note

Adds comprehensive specification packages (SRD/specs/tasks/implementation) and validation analyses for the Workflow Engine, HoneyHive SDK Docs MCP (v1 and v2), and Documentation P0 fixes.

  • Specifications Added:
    • workflow-engine-design:
      • Adds full design spec for phase-gated Workflow Engine.
    • honeyhive-sdk-docs-mcp (v1):
      • Adds SRD, specs, tasks, implementation, and validation documents.
    • honeyhive-sdk-docs-mcp-v2:
      • Adds production-hardened SRD/specs/tasks/implementation with concurrency safety, dependency pinning, and failure-mode testing.
    • documentation-p0-fixes:
      • Adds SRD/specs/tasks/implementation for documentation restructuring and quality fixes.
  • Supporting Artifacts:
    • Validation/improvements analyses, revision summaries, and processing metadata under supporting-docs/.
  • Scope:
    • Documentation/spec additions only; no source code changes included.

Written by Cursor Bugbot for commit e20b584. This will update automatically on new commits. Configure here.

@dhruv-hhai
Copy link
Contributor

Check for backwards compatibility of new API client against the old. Refer to docs scripts for reference + the speakeasy SDK ref docs in main.

@dhruv-hhai
Copy link
Contributor

Check for backwards compatibility on environment variable references + add support for experiment harness related env vars

HoneyHiveClient does not read standard environment variables

@dhruv-hhai
Copy link
Contributor

Enable verbose flag on the HoneyHiveClient init for customer to debug API errors.

@dhruv-hhai
Copy link
Contributor

Apply pydantic models on SDK caller params directly instead of inside the function.

@dhruv-hhai
Copy link
Contributor

Add a SSL cert override option on the HoneyHiveClient init with the env var for httpx.

Add a SSL no verify flag on HoneyHiveClient

@dhruv-hhai
Copy link
Contributor

Standardize python error handling middleware (context handler of some kind) and add that in all client wrapper classes.

@dhruv-hhai
Copy link
Contributor

Add docstrings on SDK functions

@dhruv-hhai
Copy link
Contributor

Investigate pydantic alternative

@dhruv-hhai
Copy link
Contributor

Ensure there's an async method for each API call wrapper.

@dhruv-hhai
Copy link
Contributor

Nit: Add argument builders for async callers

@dhruv-hhai
Copy link
Contributor

dhruv-hhai commented Aug 28, 2025

Investigate an alternative to data model codegen to also include client codegen

@dhruv-hhai
Copy link
Contributor

dhruv-hhai commented Aug 28, 2025

Drop the HoneyHiveLogger class / evaluate moving the logger repo into this repo

@dhruv-hhai
Copy link
Contributor

Drop project from tracer init

@dhruv-hhai
Copy link
Contributor

Drop unused imports

@dhruv-hhai
Copy link
Contributor

Move tracer away from singleton. We want to support multiple sessions within the same runtime.

@dhruv-hhai
Copy link
Contributor

Default session name should be the file name where the tracer is initialized.

@dhruv-hhai
Copy link
Contributor

dhruv-hhai commented Aug 28, 2025

Check if TracerProvider is initialized before initializing. We should support not being the main provider if someone already has a tracer provider set.

@dhruv-hhai
Copy link
Contributor

OTLP export is enabled by default

@dhruv-hhai
Copy link
Contributor

Provide a flag to disable batching on span exporter + support simple span processor

Lambda mode flag to auto-set these configs

@dhruv-hhai
Copy link
Contributor

Provide ability to set custom session_id via an argument on the tracer init.

@dhruv-hhai
Copy link
Contributor

Auto-generate UUIDv4 for session_id even if session start fails

@dhruv-hhai
Copy link
Contributor

Pick up session_id from baggage context if available by default

@dhruv-hhai
Copy link
Contributor

Setup baggage context should also check if pre-existing baggage has the main association properties set

@dhruv-hhai
Copy link
Contributor

The context manager sets span attributes as honeyhive.* it should also support traceloop.association.properties.*

@dhruv-hhai
Copy link
Contributor

dhruv-hhai commented Aug 28, 2025

Centralize the enrich_session implementation to the tracer class. Don't do create_event do update_event.

@dhruv-hhai
Copy link
Contributor

dhruv-hhai commented Aug 28, 2025

Enrich session should use the baggage to fetch the session_id, not the tracer (since we aren't on a singleton model)

@dhruv-hhai
Copy link
Contributor

Drop configure_otlp_exporter

@dhruv-hhai
Copy link
Contributor

Migrate evaluate from the old SDK. Look at the multi-threading patterns + tracer initializations to see how we want to support multiple sessions in one runtime.

devin-ai-integration bot and others added 2 commits December 10, 2025 22:31
…ion-support

feat: add async function support to evaluate function
@github-actions
Copy link
Contributor

📚 Documentation Preview Built

Documentation preview is ready!

📦 Download Preview

Download documentation artifact

🔍 How to Review

  1. Download the artifact from the link above
  2. Extract the files
  3. Open index.html in your browser

✅ Validation Status

  • API validation: ✅ Passed
  • Build process: ✅ Successful
  • Import tests: ✅ All imports working

Preview generated for PR #154

devin-ai-integration bot and others added 7 commits December 10, 2025 23:05
- Add typed models for MetricDetail, DatapointResult, DatapointMetric, MetricDatapoints
- Update AggregatedMetrics to use details array instead of dynamic keys
- Update print_table() to use typed MetricDetail objects
- Update get_run_result() to parse datapoints into DatapointResult objects
- Fix datapoint rendering to use typed attributes instead of hasattr checks

This fixes the issue where the metrics table was printing without values
because the SDK expected dynamic metric keys but the backend returns
metrics in a 'details' array format per the OpenAPI spec.

Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
- Add pylint disable=no-member comments for Pydantic field access
- Add unit tests for new typed models (MetricDetail, DatapointResult, etc.)
- Add unit tests for print_table() with details array format
- Add integration test to validate typed models against real API

Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
… AggregatedMetrics

Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
…dels

Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
…-table-printing

fix: update metrics table printing to handle backend response format
@github-actions
Copy link
Contributor

📚 Documentation Preview Built

Documentation preview is ready!

📦 Download Preview

Download documentation artifact

🔍 How to Review

  1. Download the artifact from the link above
  2. Extract the files
  3. Open index.html in your browser

✅ Validation Status

  • API validation: ✅ Passed
  • Build process: ✅ Successful
  • Import tests: ✅ All imports working

Preview generated for PR #154

devin-ai-integration bot and others added 5 commits December 11, 2025 19:43
- Add instrumentors parameter to evaluate() and run_experiment() functions
- Accept list of instrumentor factory functions that create new instances per datapoint
- Each datapoint gets its own tracer and instrumentor instance for proper trace routing
- Instrumentors are initialized with tracer_provider before processing and uninstrumented after
- Graceful error handling for instrumentor initialization and cleanup

Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
…rs-evaluate

feat: add instrumentors support to evaluate function
@github-actions
Copy link
Contributor

📚 Documentation Preview Built

Documentation preview is ready!

📦 Download Preview

Download documentation artifact

🔍 How to Review

  1. Download the artifact from the link above
  2. Extract the files
  3. Open index.html in your browser

✅ Validation Status

  • API validation: ✅ Passed
  • Build process: ✅ Successful
  • Import tests: ✅ All imports working

Preview generated for PR #154

@github-actions
Copy link
Contributor

📚 Documentation Preview Built

Documentation preview is ready!

📦 Download Preview

Download documentation artifact

🔍 How to Review

  1. Download the artifact from the link above
  2. Extract the files
  3. Open index.html in your browser

✅ Validation Status

  • API validation: ✅ Passed
  • Build process: ✅ Successful
  • Import tests: ✅ All imports working

Preview generated for PR #154

@github-actions
Copy link
Contributor

📚 Documentation Preview Built

Documentation preview is ready!

📦 Download Preview

Download documentation artifact

🔍 How to Review

  1. Download the artifact from the link above
  2. Extract the files
  3. Open index.html in your browser

✅ Validation Status

  • API validation: ✅ Passed
  • Build process: ✅ Successful
  • Import tests: ✅ All imports working

Preview generated for PR #154

@github-actions
Copy link
Contributor

📚 Documentation Preview Built

Documentation preview is ready!

📦 Download Preview

Download documentation artifact

🔍 How to Review

  1. Download the artifact from the link above
  2. Extract the files
  3. Open index.html in your browser

✅ Validation Status

  • API validation: ✅ Passed
  • Build process: ✅ Successful
  • Import tests: ✅ All imports working

Preview generated for PR #154

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants