- Updated `conftest.py` to set fake API keys only if real ones are not available, enhancing test flexibility.
- Refactored the `mock_llm_calls` fixture to conditionally mock LLM calls based on the use of real APIs, improving test isolation and reliability.
- Ensured that when real APIs are used, the mocks return empty values to allow tests to run without interference.
These changes enhance the robustness of the testing framework and ensure better handling of API dependencies.
- Added missing newlines and improved formatting in `CLAUDE.md` for better readability.
- Updated command instructions in the development guide to use `uv run` for running the server and tests.
- Enhanced type hinting in `consumer.py` for better clarity on the `facts` variable.
- Corrected a typo in the docstring of the `chat` function in `agent.py`.
- Refined type checks in `sessions.py` to use `isinstance` for better practice.
- Improved message formatting in `history.py` to ensure consistent output.
- Cleaned up test files by removing unnecessary imports and improving readability.
These changes enhance the overall clarity and maintainability of the codebase.
- Fix database connection issue: Patch CONNECTION_URI environment variable
in test configuration to use TEST_CONNECTION_URI before imports, ensuring
deriver queue operations connect to test database (port 5432) instead of
production database (port 54322)
- Fix agent mocking: Replace incorrect Dialectic.call mocking with proper
agent.chat function mock that returns correct response object structure
- Improve test database setup: Always drop and recreate test database for
clean slate and proper schema alignment
- All 284 tests now pass successfully
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added environment variables for fake API keys in `conftest.py` to facilitate testing.
- Refactored mock functions in tests to utilize global mocks for LLM calls, improving consistency and reducing redundancy.
- Updated various test cases to rely on the new mocking structure, ensuring accurate simulation of LLM responses and fact extraction.
- Removed direct calls to model clients in tests, replacing them with mocks to streamline test execution and maintain isolation.
* rm unused embedding store param
* refactor: scope db sessions in chat endpoint to reduce connection hold times. Replace route-scoped db session with multiple tracked_db sessions
* rm db from sessions.chat route
* chore: styling
* fix: consolidate db session in get_user_representation and fix parallel db sessions for query
* fix (agent): db invalidation error with collection
---------
Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com>
* feat (storage): Remove strict requirement for body on list endpoints
* fix (storage): Rename metamessage_type to label with backwards compatability
* fix (schemas): Backwards compatability for metamessage_type and idiomatic schemas
* fix (docs): Update docs to reference label instead of metamessage type
* fix (storage): Rebase db migration and fix tests
* chore: alembic consistency
* fix: Manually close transaction with get_db
* use get_db instead of session local
* fix comment
* fix (db): Add application name to each transaction and switch everything to use dependency
* chore: Address coderabbit comment
---------
Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com>
* feat: add CD for honcho images to saas test and prod environments
* fix: use github tag in image label
* feat: split up test and prod deployment flows, push to service after
* fix: action parsing properly hopefully
* fix: proper url, version
* remove excessive fly.toml
* fix: specify prod-image in prod workflow
* Potential fix for code scanning alert no. 12: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Potential fix for code scanning alert no. 11: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* fix: Change App name in command and make steps sequential
* fix: Address Code Rabbit nitpicks
* Use IMAGE Label environment variable
* fix: collisions between github action groups
* feat: add migrate_db script
* fix: correct image label on prod deploy
---------
Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* chore: Update versioning for release
* fix: remove db creation at start and sync migrations and models
* fix: Checkpoint changing metamessage schema
* chore: linter fixes
* fix: session cloning working
* Hybrid long-term memory (#92)
* Add TOM method switching
* Add system prompt and note on format
* Add persistence tweaks
* Specify format for each section of user representation
* Parse XML tags before saving representation metamessage
* Clean up
* Use Claude 3.5 Haiku and refine prompt
* Simplify message processing
* chore: update token limit on dialectic and model for deriver
* Add embedding-based long-term fact retrieval
* Fix bug preventing new documents from being created
* Use multiple queries + tweak prompt
* Fix collection name bug + add duplicate removal
* First implementation of on-demand user rep generation
* WIP debug on-demand user rep changes
* Fixed representations not being stored & deriver issue
* Some speed improvements
* Play with number of facts / queries
* WIP prompt caching for Claude
* WIP fix anthropic caching
* Anthropic prompt caching working but messages too short
* Use Cerebras for small inferences
* Make dialectic responses 1000 tokens max
* Make user representation generation model a constant
* Use llama 3.1 8b for query generation
* Update env template
* Add crud.get_or_create_protected_collection
* rabbit comments
* Fix linter issues
* Add Cerebras to stream router method
* Better handling of default-empty string args
* Change prints to debug logs
* Add error handling to TOM inference
* Handle missing/empty client in model responses
* Handle no messages case in get_chat_history
* Fix indent
* Add error handling to single_prompt methods
* Fix get_or_create_user_protected_collection
* Simplify openAI-compatible model client instantiation
* Remove health endpoint
* Remove LocalEmbeddingStore
* Change prints to debug logs
* Change sentry track
* Code review changes
* Add README to ToM module
* Switch to Groq
* Fix inconsistent openai compatible provider list in stream()
* Update env template to include Groq variables
* Add model_client tests
* fix: Fix unit tests
---------
Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com>
* add scoped API keys (#91)
* add AUTH_JWT_SECRET and ADMIN_KEY, use in security middleware (TODO granular keys)
* WIP: convert all API paths to use scoped keys
* add basic unit tests for API keys, ruff formatting
* MVP of route using JWT for payload
* add get_user_from_token
* add key table to postgres, use it to enable key revocation
* add key revocation pt 2 -- fix order of param checks
* finish convenience routes that assume params from JWT
* add tests for key API
* get_keys
* add secrets utility script, add key rotation, fill out tests
* add tiny cache as PoC
* nits, validations, etc
* only create keys table migration if necessary
* fix keys tests to always use auth
* tiny fix to make custom DATABASE_SCHEMA work
* review: add better docs, fix security issue with cache, clear db on rotation, and more
* remove rotation
* remove key database entirely
* Add `/all` path to get all apps (#94)
* add `/all` path for apps
* assert vector extension installed (need this for groudon)
* review
---------
Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com>
* add scoped API keys (#91)
* add AUTH_JWT_SECRET and ADMIN_KEY, use in security middleware (TODO granular keys)
* WIP: convert all API paths to use scoped keys
* add basic unit tests for API keys, ruff formatting
* MVP of route using JWT for payload
* add get_user_from_token
* add key table to postgres, use it to enable key revocation
* add key revocation pt 2 -- fix order of param checks
* finish convenience routes that assume params from JWT
* add tests for key API
* get_keys
* add secrets utility script, add key rotation, fill out tests
* add tiny cache as PoC
* nits, validations, etc
* only create keys table migration if necessary
* fix keys tests to always use auth
* tiny fix to make custom DATABASE_SCHEMA work
* review: add better docs, fix security issue with cache, clear db on rotation, and more
* remove rotation
* remove key database entirely
* Add `/all` path to get all apps (#94)
* add `/all` path for apps
* assert vector extension installed (need this for groudon)
* review
---------
Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com>
* chore: README and CHANGELOG updates
* add JWT expiry
* fix: Consolidate get methods with JWT token resolution
* chore: Add Annotation to Path, Query, and Body params
* chore: run ruff formatter
* chore: nits & add one exhaustive test of a query route
* fix: undo change to fly.toml
* fix: Langfuse tracing
* Consolidate Get Methods (#96)
* fix: Consolidate get methods with JWT token resolution
* chore: Add Annotation to Path, Query, and Body params
* chore: run ruff formatter
* chore: nits & add one exhaustive test of a query route
* fix: undo change to fly.toml
---------
Co-authored-by: dr-frmr <docterformer@protonmail.com>
* fix: dev-667 fix streaming endpoint
* fix: Anthropic Langfuse Tracing
* fix: add scripts folder to dockerfile
* fix: Remove redundant fields from pydantic schemas
* fix: Add deeper protection on reserved collection
* fix: Consolidate chat and stream methods
* docs: Update Mintlify API Reference and Changelog
* remove langchain guide, update architecture diagram
* honcho mcp server
* chore: Update .env template
* update discord, temporarily remove other guides
* Limit dialectic & deriver context usage with two-scale progressive summarization (#97)
* WIP two tiered summaries
* Move to process_item
* Save user rep metamessage even if no message_id
* Change number of messages per short summary
* Fix broken mock
* Remove prints
* chore: fix test
---------
Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com>
* feat: Add Gemini Support, link facts to message, use 8b for dialectic fact queries
* chore: Styling
* chore: coderabbit nitpicks
* keep dialectic guide
* Add streaming guide
* Remove TODO from dialectic guide
* Fix JS snippets that referred to honcho singleton as client
* Add App explanation to architecture page
---------
Co-authored-by: Dani Balcells <18307962+danibalcells@users.noreply.github.com>
Co-authored-by: doria <93405247+dr-frmr@users.noreply.github.com>
Co-authored-by: dr-frmr <docterformer@protonmail.com>
Co-authored-by: vintro <vince@plasticlabs.ai>
Co-authored-by: Daniel Balcells <dbalcells@gmail.com>
* Add TOM method switching
* Add system prompt and note on format
* Specify format for each section of user representation
* Clean up
* Use Claude 3.5 Haiku and refine prompt
* chore: update token limit on dialectic and model for deriver
* chore: Remove healthcheck endpoint
* feat: Fix inconsistent error handling
* fix: remove SQL echo for performance and increase dialectic to 300 tokens on stream
* chore: Update CLAUDE.md
* fix: Update Dialectic 3.7 Sonnet and add to Changelog
* chore: Update Version Number
---------
Co-authored-by: Daniel Balcells <dbalcells@gmail.com>
* Add TOM method switching
* Add system prompt and note on format
* Add persistence tweaks
* Specify format for each section of user representation
* Parse XML tags before saving representation metamessage
* Clean up
* Use Claude 3.5 Haiku and refine prompt
* Simplify message processing
* chore: update token limit on dialectic and model for deriver
* chore: Update to Contributing Docs and .env template
* Contributing Docs
* chore: Add Deriver Template Variables
* chore: Remove healthcheck endpoint
* chore: Changelog updates
---------
Co-authored-by: Daniel Balcells <dbalcells@gmail.com>
* fix: increase db pool limit and optimize crud requests
* fix: Sentry tracing and fly concurrency
* feat: Add alembic and indexes
* feat: Batch insert method
* fix: Pydantic Validation
* fix: Added Pydantic based API validation and Associated Test Cases
* chore: Update Changelog
* fix(docs): Update Docs with new API Method and OpenAPI Spec
* chore(ci): Add Environment Variable for Anthropic
* fix(storage) Remove Prepared Statements to make compatible with Supavisor
* fix(deriver and dialectic) Use latest user level user_represenation
* fix(storage) Switch to text columns for best postgres practices
* fix(storage) Update docstrings and document query method
* chore(release) v0.0.14 Release State
* chore(release) CHANGELOG
* fix(deriver) Add more detailed profiling with sentry
* chore(release) CHANGELOG
* fix(deriver) increase retry limit on anthropic
* feat(storage) Add a route to clone sessions
* fix(storage) Add additional test case and fix case conventions for query parameters in clone method
* fix(storage) make case conventions consistent and documentation updates
* fix(docs) Update docs with newest routes
* fix(storage) Add commit to clone method
* fix: remove opentelemtry code and make deriver workers configurable
* feat(storage) change get route for messages and metamessages to use POST for options
* feat(storage) Change remaining paginated gets to POST requests with options
* ready to test deriver
* prompts ready for testing
* compare entire list, don't loop through facts one by one
* parse xml, batch process ai query docs
* timing works
* session id is writing to csv now
* ignore timing logs
* infinite backrooms-inpsired prompts
* yousim/ib inspired prompts v0
* accept incoming changes on agent.py
* dialectic to sonnet for now
* remove timing, use py-spy
* cleanup from timing removal
* remove extra timing stuff
* Route for User LeveL Metamessages
* functional state
* chore: Clean up artifacts
* fix(deriver) update database calls for new schema and payload
* chore(docs) Update Honcho Version
---------
Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com>
* fix(embedding) use base openai for embedding and remove azure
* feat(models) switch to nanoids with internal and public id system
* feat(pydantic) Updates models and routes to get tests passing
* fix(deriver) fix enqueue method
* Perf Testing Utilities
* feat(ci) Add github action with github service container
* chore(ci) Change hostname for service container
* chore(ci) Add Trust Flag
* chore(ci) Use Defaults
* readability
* Try to use localhost
* chore(ci) Use non-default database
* Try with default credentials but non-standard db
* Try to ignore pwd
* feat(dialectic) Allow for batch questions and load session history
* feat(dialectic) parallelize facts and history queries
* feat(agent) Addresses dev-258 allow specifying additional collections
* feat(uv) switched from poetry to uv
* feat(deriver) Turn off derivations by editing session medatadata with a deriver_disabled flag
* fix(tests) Clean up test logic
---------
Co-authored-by: Vineeth Voruganti <vineeth@macbook-pro.mynetworksettings.com>
* fix(storage) Remove location_id
* feat(deriver) Deriver can process multiple sessions at once and uses rich for prints
* fix(route) collection update error handling
* chore(docs) update openapi and version numbers
* chore: Save Point
* fix(db): change connection logic and remove unnecessary refreshes
* fix(documents): switch to Azure embedding model
* feat: Setup pytest fixtures
* feat(tests): Initial test routes for tranche 1
* feat(test) tranche 2 of tests and associated bug fixes
* feat(test) tranche 3 of tests and associated bug fixes
* fix(tests) Address PR comments and update version and changelog
* initial prompts, logic
* ready for process_ai_message fn
* voe deriver logic probably mostly complete, switch to anthropic too
* docker compose working
* verbosity and fixes
* add colors
* Remove logging for debugging
* metamessage query not working
* use the right message id
* shit show status
* call sql directly
* mvp
* chore: Azure and New Mirascope
* fix check dups
* fix fn def
* code review
---------
Co-authored-by: vintro <vince@plasticlabs.ai>