lex-metering 0.1.3 → 0.1.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f6ed98a119f0cd8391dfcbabef08384a0ead7ff8f9cfd45added086ce825ddef
4
- data.tar.gz: 47b5dc7406297ff5c9bec985b4d4ef2d0d554cc3cea0c0c489305d545c22b07f
3
+ metadata.gz: db002082af15a2d97671a7b9ed75897f21ec03d16e360962517fc848527c9ec6
4
+ data.tar.gz: cb642644b254256b1fef4a17933f9276a3a972ebee52a37c80e4bf88786e1b57
5
5
  SHA512:
6
- metadata.gz: be6917d55265e01b080e4165de8c5df74c41ab38738ad6400e0fe84188d61e5e022ec806f0fb19e705fa2d04a5877d33892f744978c18a018e8dda9ef25784ec
7
- data.tar.gz: d12d6e44b297b5d533a3f6e49764f9fbd3a4e74a86594c83c1a5e13812a6654f08667f81fc5a84a34368a75cf8b8c8a11933bc894ba4f5aa1833070608749d40
6
+ metadata.gz: 7e107e84a2d199254a12daad43880e9f3b593b3076b0e42964a7fe0ef07410c4a75923761da4128cb0942c4b45db1b791b4923e4e2263484c3b61621d54cf979
7
+ data.tar.gz: 60c7c096ea83b68c01fef84244449764ac3ff357465a9aa2a5e74f71f72b94f838ac2bd8805dd969c9cbbe613bdf3a04145e62a47c8d6923134b96399828a767
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.4] - 2026-03-18
4
+
5
+ ### Changed
6
+ - `record` no longer writes directly to database; returns hash only for RabbitMQ publishing
7
+ - `data_required?` changed to `false` — extension loads without legion-data
8
+
3
9
  ## [0.1.3] - 2026-03-18
4
10
 
5
11
  ### Fixed
data/CLAUDE.md CHANGED
@@ -11,7 +11,7 @@ Captures LLM token usage metrics per task for cost attribution and intelligent r
11
11
  ## Gem Info
12
12
 
13
13
  - **Gem name**: `lex-metering`
14
- - **Version**: `0.1.3`
14
+ - **Version**: `0.1.4`
15
15
  - **Module**: `Legion::Extensions::Metering`
16
16
  - **Ruby**: `>= 3.4`
17
17
  - **License**: MIT
@@ -62,14 +62,14 @@ lib/legion/extensions/metering/
62
62
 
63
63
  ## Integration Points
64
64
 
65
- - **legion-data**: `data_required? true` — will not load if DB unavailable. Accesses `metering_records` as a raw Sequel dataset (no Sequel::Model subclass).
65
+ - **legion-data**: `data_required? false` — loads without DB. `record` returns hash only (for RabbitMQ publishing). Query methods (`worker_costs`, `team_costs`, `routing_stats`, `cleanup_old_records`) still access `metering_records` as a raw Sequel dataset when `Legion::Data` is available.
66
66
  - **LegionIO MCP**: `legion.routing_stats` MCP tool calls `routing_stats` runner
67
67
  - **REST API**: `GET /api/tasks/:id` includes a `:metering` block when lex-metering data exists for the task
68
68
  - **Digital Workers**: `legion worker costs` CLI command delegates to `worker_costs` runner
69
69
 
70
70
  ## Development Notes
71
71
 
72
- - Extension has `data_required? true` (both at module level and instance level) will skip loading if `legion-data` is not connected
72
+ - Extension has `data_required? false` loads without `legion-data`; `record` builds hash only (no DB insert), query methods still require `Legion::Data`
73
73
  - No explicit actors — gets auto-generated subscription actors from the framework
74
74
  - `routing_stats` uses `select_append { avg(latency_ms).as(avg_latency) }` — Sequel virtual row syntax
75
75
  - Time interval filtering uses `Sequel.lit('recorded_at >= ?', cutoff)` with Ruby `Time` arithmetic for cross-database compatibility (PostgreSQL, SQLite, MySQL)
@@ -29,7 +29,6 @@ module Legion
29
29
  recorded_at: Time.now.utc
30
30
  }
31
31
 
32
- Legion::Data.connection[:metering_records].insert(record) if defined?(Legion::Data) && Legion::Data.connection
33
32
  Legion::Logging.debug "[metering] recorded: provider=#{provider} model=#{model_id} " \
34
33
  "tokens=#{record[:total_tokens]} latency=#{latency_ms}ms wall_clock=#{wall_clock_ms}ms"
35
34
  record
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module Metering
6
- VERSION = '0.1.3'
6
+ VERSION = '0.1.4'
7
7
  end
8
8
  end
9
9
  end
@@ -8,11 +8,11 @@ module Legion
8
8
  extend Legion::Extensions::Core if Legion::Extensions.const_defined? :Core
9
9
 
10
10
  def self.data_required?
11
- true
11
+ false
12
12
  end
13
13
 
14
14
  def data_required?
15
- true
15
+ false
16
16
  end
17
17
  end
18
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-metering
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity