tracebook 0.1.1 → 1.0.0

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 (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +49 -24
  3. data/README.md +197 -713
  4. data/app/assets/javascripts/tracebook/application.js +92 -35
  5. data/app/assets/stylesheets/tracebook/application.css +1882 -55
  6. data/app/controllers/tracebook/application_controller.rb +25 -0
  7. data/app/controllers/tracebook/chats_controller.rb +229 -0
  8. data/app/controllers/tracebook/comments_controller.rb +25 -0
  9. data/app/helpers/tracebook/chats_helper.rb +29 -0
  10. data/app/models/tracebook/chat_review.rb +19 -0
  11. data/app/models/tracebook/comment.rb +14 -0
  12. data/app/models/tracebook/message_cost.rb +12 -0
  13. data/app/models/tracebook/pricing_rule.rb +6 -8
  14. data/app/views/tracebook/chats/index.html.erb +77 -0
  15. data/app/views/tracebook/chats/show.html.erb +94 -0
  16. data/config/routes.rb +6 -6
  17. data/db/migrate/20260325000100_create_tracebook_message_costs.rb +19 -0
  18. data/db/migrate/20260325000200_create_tracebook_chat_reviews.rb +19 -0
  19. data/db/migrate/{20241112000300_create_tracebook_pricing_rules.rb → 20260325000300_create_tracebook_pricing_rules.rb} +3 -3
  20. data/db/migrate/20260325000500_create_tracebook_comments.rb +15 -0
  21. data/lib/generators/tracebook/install/install_generator.rb +6 -9
  22. data/lib/generators/tracebook/install/templates/initializer.rb.tt +11 -5
  23. data/lib/tasks/tracebook_tasks.rake +14 -4
  24. data/lib/tracebook/adapters/ruby_llm.rb +19 -81
  25. data/lib/tracebook/adapters.rb +5 -4
  26. data/lib/tracebook/config.rb +83 -104
  27. data/lib/tracebook/engine.rb +6 -0
  28. data/lib/tracebook/errors.rb +0 -2
  29. data/lib/tracebook/pricing/calculator.rb +11 -6
  30. data/lib/tracebook/pricing.rb +0 -2
  31. data/lib/tracebook/redaction/pattern.rb +124 -0
  32. data/lib/tracebook/redaction/pipeline.rb +32 -0
  33. data/lib/tracebook/seeds/pricing_rules.rb +62 -0
  34. data/lib/tracebook/version.rb +1 -1
  35. data/lib/tracebook.rb +46 -152
  36. metadata +23 -51
  37. data/app/controllers/tracebook/exports_controller.rb +0 -25
  38. data/app/controllers/tracebook/interactions_controller.rb +0 -71
  39. data/app/helpers/tracebook/interactions_helper.rb +0 -35
  40. data/app/jobs/tracebook/daily_rollups_job.rb +0 -100
  41. data/app/jobs/tracebook/export_job.rb +0 -162
  42. data/app/jobs/tracebook/persist_interaction_job.rb +0 -160
  43. data/app/mailers/tracebook/application_mailer.rb +0 -6
  44. data/app/models/tracebook/interaction.rb +0 -103
  45. data/app/models/tracebook/redaction_rule.rb +0 -81
  46. data/app/models/tracebook/rollup_daily.rb +0 -73
  47. data/app/views/tracebook/interactions/index.html.erb +0 -108
  48. data/app/views/tracebook/interactions/show.html.erb +0 -44
  49. data/db/migrate/20241112000100_create_tracebook_interactions.rb +0 -55
  50. data/db/migrate/20241112000200_create_tracebook_rollups_dailies.rb +0 -24
  51. data/db/migrate/20241112000400_create_tracebook_redaction_rules.rb +0 -19
  52. data/lib/tracebook/adapters/active_agent.rb +0 -82
  53. data/lib/tracebook/mappers/anthropic.rb +0 -59
  54. data/lib/tracebook/mappers/base.rb +0 -38
  55. data/lib/tracebook/mappers/ollama.rb +0 -49
  56. data/lib/tracebook/mappers/openai.rb +0 -75
  57. data/lib/tracebook/mappers.rb +0 -283
  58. data/lib/tracebook/normalized_interaction.rb +0 -86
  59. data/lib/tracebook/redaction_pipeline.rb +0 -88
  60. data/lib/tracebook/redactors/base.rb +0 -29
  61. data/lib/tracebook/redactors/card_pan.rb +0 -15
  62. data/lib/tracebook/redactors/email.rb +0 -15
  63. data/lib/tracebook/redactors/phone.rb +0 -15
  64. data/lib/tracebook/redactors.rb +0 -8
  65. data/lib/tracebook/result.rb +0 -53
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae82d99eb8f5d552c59dbcb77d1a99c587ecd729a6597fea01c20411e3b866d8
4
- data.tar.gz: ed9a874f85ec046d24469de3d48886ef0dee878959e964af41dd3843a9c7bd0f
3
+ metadata.gz: e2f8a716313316fea53f5eb3b9b62f43a888853a8cfc3aac7118b1503581a511
4
+ data.tar.gz: c42e3fd3d3096deb1cddfaa70de758c8f27bb3ba0ab1366cda5836ab65a95f31
5
5
  SHA512:
6
- metadata.gz: f49482e0e49ccf7d7b5dd095eaf2a2ce2899f8eb3bbbb5d6d5c4e7b1c89bfc2cdd88015a361873e8c00fa28e18cf04c29456c5942ceefd25c26799614dd1b5c3
7
- data.tar.gz: 3c613e6abc82a4bd30235fbaa4d4abef6606b61ae0d913bc27ea38f514185837e41efa729ad1a73d0af367eb178fc27ce043bcd94d73c164d538ab57631c78d2
6
+ metadata.gz: d93ee5f38109afcee853d0f4e8733a1c4244974dfdb265adcfe21efeaf4f8cd70c0409c3da57c743e16af164c5565e3aa282d1e3fc267746491ec57a5535f1f9
7
+ data.tar.gz: 7f0b592525f3f71f993dd8c3fb99f958e89c74a31baecd53aa89d8517c2581c88c5228224f03d9374b3228dc9e54ba8c55e6434f417e3928c1bef965badf9544
data/CHANGELOG.md CHANGED
@@ -5,6 +5,49 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.0] - 2026-03-26
9
+
10
+ ### Breaking Changes
11
+
12
+ Tracebook is now a layer on top of **RubyLLM** instead of a standalone interaction recorder. It reads from the host app's Chat and Message models (provided by RubyLLM's `acts_as_chat` / `acts_as_message`) and adds cost tracking and review workflow.
13
+
14
+ **Removed tables:**
15
+ - `tracebook_interactions` — RubyLLM's Message model stores conversation data
16
+ - `tracebook_rollups_dailies` — aggregates computed live from messages
17
+
18
+ **New tables:**
19
+ - `tracebook_message_costs` — cost and latency per message (polymorphic join to host Message)
20
+ - `tracebook_chat_reviews` — review state per chat (polymorphic join to host Chat)
21
+
22
+ **Updated tables:**
23
+ - `tracebook_comments` — FK changed from `interaction_id` to `chat_review_id`
24
+
25
+ **Removed code:**
26
+ - `Interaction`, `LlmSession`, `RollupDaily` models
27
+ - `PersistInteractionJob`, `DailyRollupsJob`, `ExportJob`
28
+ - `TraceBook.record!` API — replaced by `Tracebook.calculate_cost!(message, provider:, model:)`
29
+ - `NormalizedInteraction`, `Mappers`, `RedactionPipeline`, `Result`
30
+ - `Adapters::RubyLLM`, `Adapters::ActiveAgent` notification subscribers
31
+ - `ActorsController`, `InteractionsController`, `ExportsController`
32
+ - `/tracebook/actors/*` and `/tracebook/interactions/*` routes
33
+
34
+ **New code:**
35
+ - `MessageCost` model — stores cost per message
36
+ - `ChatReview` model — stores review state per chat
37
+ - `ChatsController` — dashboard at `/tracebook/chats`
38
+ - `Tracebook.calculate_cost!` — calculates and stores cost for a message
39
+ - `config.chat_class` / `config.message_class` — configure host app model names
40
+
41
+ **Migration guide:**
42
+ 1. Run `bin/rails tracebook:install:migrations && bin/rails db:migrate`
43
+ 2. Replace `Tracebook.record!` calls with `Tracebook.calculate_cost!`
44
+ 3. Update `config/initializers/tracebook.rb` to set `chat_class` and `message_class`
45
+ 4. Mount the engine: `mount Tracebook::Engine => "/tracebook"`
46
+
47
+ ### Fixed
48
+
49
+ - **Pricing Calculator**: `matching_rule` now correctly prefers the most specific glob pattern and most recent `effective_from` date.
50
+
8
51
  ## [0.1.1] - 2025-12-16
9
52
 
10
53
  ### Added
@@ -26,32 +69,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
26
69
  ### Added
27
70
 
28
71
  - **Core Engine**: Rails 8.1+ mountable engine with isolated namespace
29
- - **Provider Support**: Mappers for OpenAI, Anthropic, and Ollama APIs
30
- - **Adapters**: Integration adapters for ActiveAgent and RubyLLM libraries
31
72
  - **Recording API**: `TraceBook.record!` for capturing LLM interactions
32
- - **Configuration**: Flexible `TraceBook.config` with authorization hooks
33
- - **Models**:
34
- - `Interaction` - Core model for storing LLM call data
35
- - `PricingRule` - Cost calculation rules per model
36
- - `RedactionRule` - Custom PII pattern definitions
37
- - `RollupDaily` - Aggregated daily metrics
38
- - **PII Redaction**: Pre-persist redaction pipeline with built-in redactors:
39
- - Email addresses
40
- - Phone numbers
41
- - Credit card PANs
73
+ - **Models**: Interaction, PricingRule, RollupDaily
42
74
  - **Cost Tracking**: Pricing calculator with configurable rules per provider/model
43
- - **Background Jobs**:
44
- - `PersistInteractionJob` - Async ingestion pipeline
45
- - `DailyRollupsJob` - Nightly metric aggregation
46
- - `ExportJob` - Async data export
47
- - **Web UI**: Turbo + Stimulus dashboard with:
48
- - Interaction list with filtering (provider, model, date range, review state)
49
- - Detail view with formatted request/response payloads
50
- - Review workflow (pending → approved/flagged/rejected)
51
- - KPI display (token counts, costs, latency)
52
- - **Export**: CSV and NDJSON export capabilities
53
- - **Normalized Schema**: Consistent data structure across all providers
54
- - **Test Suite**: Full MiniTest coverage for models, controllers, jobs, and lib
75
+ - **Background Jobs**: PersistInteractionJob, DailyRollupsJob, ExportJob
76
+ - **Web UI**: Dashboard with filtering, review workflow, KPI display
77
+ - **Adapters**: Integration adapters for RubyLLM and ActiveAgent
78
+ - **PII Redaction**: Pre-persist redaction pipeline
55
79
 
80
+ [1.0.0]: https://github.com/dpaluy/tracebook/compare/v0.1.1...v1.0.0
56
81
  [0.1.1]: https://github.com/dpaluy/tracebook/compare/v0.1.0...v0.1.1
57
82
  [0.1.0]: https://github.com/dpaluy/tracebook/releases/tag/v0.1.0