legion-data 1.7.3 → 1.8.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.
- checksums.yaml +4 -4
- data/.pre-commit-config.yaml +29 -0
- data/AGENTS.md +66 -13
- data/CHANGELOG.md +29 -0
- data/CLAUDE.md +44 -307
- data/README.md +119 -7
- data/lib/legion/data/connection.rb +3 -1
- data/lib/legion/data/migrations/077_create_llm_conversations.rb +32 -0
- data/lib/legion/data/migrations/078_create_llm_messages.rb +33 -0
- data/lib/legion/data/migrations/079_create_llm_message_inference_requests.rb +47 -0
- data/lib/legion/data/migrations/080_create_llm_message_inference_responses.rb +39 -0
- data/lib/legion/data/migrations/081_add_llm_message_inference_foreign_keys.rb +17 -0
- data/lib/legion/data/migrations/082_create_llm_route_attempts.rb +31 -0
- data/lib/legion/data/migrations/083_create_llm_message_inference_metrics.rb +36 -0
- data/lib/legion/data/migrations/084_create_llm_tool_calls.rb +32 -0
- data/lib/legion/data/migrations/085_add_llm_message_tool_call_foreign_key.rb +15 -0
- data/lib/legion/data/migrations/086_create_llm_tool_call_attempts.rb +30 -0
- data/lib/legion/data/migrations/087_create_llm_conversation_compactions.rb +31 -0
- data/lib/legion/data/migrations/088_create_llm_policy_evaluations.rb +33 -0
- data/lib/legion/data/migrations/089_create_llm_security_events.rb +33 -0
- data/lib/legion/data/migrations/090_create_llm_registry_events.rb +23 -0
- data/lib/legion/data/migrations/091_create_portable_identity_providers.rb +35 -0
- data/lib/legion/data/migrations/092_create_portable_identity_principals.rb +25 -0
- data/lib/legion/data/migrations/093_create_portable_identities.rb +31 -0
- data/lib/legion/data/migrations/094_create_portable_identity_groups.rb +21 -0
- data/lib/legion/data/migrations/095_create_portable_identity_group_memberships.rb +25 -0
- data/lib/legion/data/migrations/096_create_portable_identity_audit_log.rb +26 -0
- data/lib/legion/data/migrations/097_add_llm_dispatch_fields.rb +16 -0
- data/lib/legion/data/model.rb +11 -1
- data/lib/legion/data/models/apollo/access_log.rb +17 -0
- data/lib/legion/data/models/apollo/entries.rb +22 -0
- data/lib/legion/data/models/apollo/expertise.rb +16 -0
- data/lib/legion/data/models/apollo/model_helpers.rb +17 -0
- data/lib/legion/data/models/apollo/operation.rb +16 -0
- data/lib/legion/data/models/apollo/relation.rb +18 -0
- data/lib/legion/data/models/function.rb +1 -0
- data/lib/legion/data/models/identity/audit_log.rb +20 -0
- data/lib/legion/data/models/identity/group.rb +28 -0
- data/lib/legion/data/models/identity/group_memberships.rb +28 -0
- data/lib/legion/data/models/identity/identity.rb +24 -0
- data/lib/legion/data/models/identity/model_helpers.rb +86 -0
- data/lib/legion/data/models/identity/principal.rb +37 -0
- data/lib/legion/data/models/identity/providers.rb +34 -0
- data/lib/legion/data/models/identity.rb +8 -0
- data/lib/legion/data/models/identity_group.rb +13 -0
- data/lib/legion/data/models/identity_provider.rb +8 -0
- data/lib/legion/data/models/llm/conversation.rb +25 -0
- data/lib/legion/data/models/llm/conversation_compaction.rb +22 -0
- data/lib/legion/data/models/llm/message.rb +105 -0
- data/lib/legion/data/models/llm/message_inference_metric.rb +46 -0
- data/lib/legion/data/models/llm/message_inference_request.rb +80 -0
- data/lib/legion/data/models/llm/message_inference_response.rb +23 -0
- data/lib/legion/data/models/llm/model_helpers.rb +18 -0
- data/lib/legion/data/models/llm/policy_evaluation.rb +20 -0
- data/lib/legion/data/models/llm/registry_event.rb +15 -0
- data/lib/legion/data/models/llm/route_attempt.rb +18 -0
- data/lib/legion/data/models/llm/security_event.rb +66 -0
- data/lib/legion/data/models/llm/tool_call.rb +21 -0
- data/lib/legion/data/models/llm/tool_call_attempt.rb +18 -0
- data/lib/legion/data/models/node.rb +2 -1
- data/lib/legion/data/models/principal.rb +13 -0
- data/lib/legion/data/models/rbac/cross_team_grants.rb +25 -0
- data/lib/legion/data/models/rbac/model_helpers.rb +25 -0
- data/lib/legion/data/models/rbac/role_assignments.rb +25 -0
- data/lib/legion/data/models/rbac/runner_grants.rb +23 -0
- data/lib/legion/data/models/relationship.rb +1 -0
- data/lib/legion/data/models/runner.rb +24 -2
- data/lib/legion/data/models/task.rb +4 -0
- data/lib/legion/data/version.rb +1 -1
- data/scripts/pre-commit-rubocop.sh +16 -0
- metadata +54 -1
|
@@ -5,10 +5,32 @@ module Legion
|
|
|
5
5
|
module Data
|
|
6
6
|
module Model
|
|
7
7
|
class Runner < Sequel::Model
|
|
8
|
-
many_to_one :chain
|
|
9
|
-
one_to_many :task
|
|
10
8
|
one_to_many :functions
|
|
11
9
|
many_to_one :extension
|
|
10
|
+
|
|
11
|
+
def chain
|
|
12
|
+
chains_dataset.first
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def chains_dataset
|
|
16
|
+
Legion::Data::Model::Chain.where(id: relationships_dataset.select(:chain_id))
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def task
|
|
20
|
+
task_dataset.all
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def task_dataset
|
|
24
|
+
Legion::Data::Model::Task.where(function_id: functions_dataset.select(:id))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def relationships_dataset
|
|
28
|
+
function_ids = functions_dataset.select(:id)
|
|
29
|
+
|
|
30
|
+
Legion::Data::Model::Relationship
|
|
31
|
+
.where(trigger_id: function_ids)
|
|
32
|
+
.or(action_id: function_ids)
|
|
33
|
+
end
|
|
12
34
|
end
|
|
13
35
|
end
|
|
14
36
|
end
|
|
@@ -12,12 +12,16 @@ module Legion
|
|
|
12
12
|
completed complete failed error cancelled canceled timeout timed_out
|
|
13
13
|
].freeze
|
|
14
14
|
|
|
15
|
+
many_to_one :function
|
|
15
16
|
many_to_one :relationship
|
|
16
17
|
one_to_many :task_log
|
|
18
|
+
one_to_many :task_logs, class: 'Legion::Data::Model::TaskLog'
|
|
17
19
|
many_to_one :parent, class: self
|
|
18
20
|
one_to_many :children, key: :parent_id, class: self
|
|
19
21
|
many_to_one :master, class: self
|
|
20
22
|
one_to_many :slave, key: :master_id, class: self
|
|
23
|
+
one_to_many :slaves, key: :master_id, class: self
|
|
24
|
+
many_to_one :digital_worker, key: :worker_id, primary_key: :worker_id
|
|
21
25
|
|
|
22
26
|
def self.idempotency_key_for(payload)
|
|
23
27
|
Digest::SHA256.hexdigest(Legion::JSON.dump(canonical_payload(payload)))
|
data/lib/legion/data/version.rb
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Pre-commit hook: run RuboCop with autofix on staged Ruby files.
|
|
3
|
+
set -uo pipefail
|
|
4
|
+
|
|
5
|
+
FILES=("$@")
|
|
6
|
+
|
|
7
|
+
if command -v rubocop >/dev/null 2>&1; then
|
|
8
|
+
exec rubocop -A --force-exclusion "${FILES[@]}"
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
if bundle exec rubocop -v >/dev/null 2>&1; then
|
|
12
|
+
exec bundle exec rubocop -A --force-exclusion "${FILES[@]}"
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
echo "RuboCop is not available locally; CI will enforce RuboCop."
|
|
16
|
+
exit 0
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: legion-data
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -107,6 +107,7 @@ files:
|
|
|
107
107
|
- ".github/dependabot.yml"
|
|
108
108
|
- ".github/workflows/ci.yml"
|
|
109
109
|
- ".gitignore"
|
|
110
|
+
- ".pre-commit-config.yaml"
|
|
110
111
|
- ".rubocop.yml"
|
|
111
112
|
- AGENTS.md
|
|
112
113
|
- CHANGELOG.md
|
|
@@ -222,7 +223,34 @@ files:
|
|
|
222
223
|
- lib/legion/data/migrations/074_widen_apollo_entry_identifiers.rb
|
|
223
224
|
- lib/legion/data/migrations/075_add_task_idempotency.rb
|
|
224
225
|
- lib/legion/data/migrations/076_create_extract_step_timings.rb
|
|
226
|
+
- lib/legion/data/migrations/077_create_llm_conversations.rb
|
|
227
|
+
- lib/legion/data/migrations/078_create_llm_messages.rb
|
|
228
|
+
- lib/legion/data/migrations/079_create_llm_message_inference_requests.rb
|
|
229
|
+
- lib/legion/data/migrations/080_create_llm_message_inference_responses.rb
|
|
230
|
+
- lib/legion/data/migrations/081_add_llm_message_inference_foreign_keys.rb
|
|
231
|
+
- lib/legion/data/migrations/082_create_llm_route_attempts.rb
|
|
232
|
+
- lib/legion/data/migrations/083_create_llm_message_inference_metrics.rb
|
|
233
|
+
- lib/legion/data/migrations/084_create_llm_tool_calls.rb
|
|
234
|
+
- lib/legion/data/migrations/085_add_llm_message_tool_call_foreign_key.rb
|
|
235
|
+
- lib/legion/data/migrations/086_create_llm_tool_call_attempts.rb
|
|
236
|
+
- lib/legion/data/migrations/087_create_llm_conversation_compactions.rb
|
|
237
|
+
- lib/legion/data/migrations/088_create_llm_policy_evaluations.rb
|
|
238
|
+
- lib/legion/data/migrations/089_create_llm_security_events.rb
|
|
239
|
+
- lib/legion/data/migrations/090_create_llm_registry_events.rb
|
|
240
|
+
- lib/legion/data/migrations/091_create_portable_identity_providers.rb
|
|
241
|
+
- lib/legion/data/migrations/092_create_portable_identity_principals.rb
|
|
242
|
+
- lib/legion/data/migrations/093_create_portable_identities.rb
|
|
243
|
+
- lib/legion/data/migrations/094_create_portable_identity_groups.rb
|
|
244
|
+
- lib/legion/data/migrations/095_create_portable_identity_group_memberships.rb
|
|
245
|
+
- lib/legion/data/migrations/096_create_portable_identity_audit_log.rb
|
|
246
|
+
- lib/legion/data/migrations/097_add_llm_dispatch_fields.rb
|
|
225
247
|
- lib/legion/data/model.rb
|
|
248
|
+
- lib/legion/data/models/apollo/access_log.rb
|
|
249
|
+
- lib/legion/data/models/apollo/entries.rb
|
|
250
|
+
- lib/legion/data/models/apollo/expertise.rb
|
|
251
|
+
- lib/legion/data/models/apollo/model_helpers.rb
|
|
252
|
+
- lib/legion/data/models/apollo/operation.rb
|
|
253
|
+
- lib/legion/data/models/apollo/relation.rb
|
|
226
254
|
- lib/legion/data/models/apollo_access_log.rb
|
|
227
255
|
- lib/legion/data/models/apollo_entry.rb
|
|
228
256
|
- lib/legion/data/models/apollo_expertise.rb
|
|
@@ -235,12 +263,36 @@ files:
|
|
|
235
263
|
- lib/legion/data/models/extract_step_timing.rb
|
|
236
264
|
- lib/legion/data/models/function.rb
|
|
237
265
|
- lib/legion/data/models/identity.rb
|
|
266
|
+
- lib/legion/data/models/identity/audit_log.rb
|
|
267
|
+
- lib/legion/data/models/identity/group.rb
|
|
268
|
+
- lib/legion/data/models/identity/group_memberships.rb
|
|
269
|
+
- lib/legion/data/models/identity/identity.rb
|
|
270
|
+
- lib/legion/data/models/identity/model_helpers.rb
|
|
271
|
+
- lib/legion/data/models/identity/principal.rb
|
|
272
|
+
- lib/legion/data/models/identity/providers.rb
|
|
238
273
|
- lib/legion/data/models/identity_audit_log.rb
|
|
239
274
|
- lib/legion/data/models/identity_group.rb
|
|
240
275
|
- lib/legion/data/models/identity_group_membership.rb
|
|
241
276
|
- lib/legion/data/models/identity_provider.rb
|
|
277
|
+
- lib/legion/data/models/llm/conversation.rb
|
|
278
|
+
- lib/legion/data/models/llm/conversation_compaction.rb
|
|
279
|
+
- lib/legion/data/models/llm/message.rb
|
|
280
|
+
- lib/legion/data/models/llm/message_inference_metric.rb
|
|
281
|
+
- lib/legion/data/models/llm/message_inference_request.rb
|
|
282
|
+
- lib/legion/data/models/llm/message_inference_response.rb
|
|
283
|
+
- lib/legion/data/models/llm/model_helpers.rb
|
|
284
|
+
- lib/legion/data/models/llm/policy_evaluation.rb
|
|
285
|
+
- lib/legion/data/models/llm/registry_event.rb
|
|
286
|
+
- lib/legion/data/models/llm/route_attempt.rb
|
|
287
|
+
- lib/legion/data/models/llm/security_event.rb
|
|
288
|
+
- lib/legion/data/models/llm/tool_call.rb
|
|
289
|
+
- lib/legion/data/models/llm/tool_call_attempt.rb
|
|
242
290
|
- lib/legion/data/models/node.rb
|
|
243
291
|
- lib/legion/data/models/principal.rb
|
|
292
|
+
- lib/legion/data/models/rbac/cross_team_grants.rb
|
|
293
|
+
- lib/legion/data/models/rbac/model_helpers.rb
|
|
294
|
+
- lib/legion/data/models/rbac/role_assignments.rb
|
|
295
|
+
- lib/legion/data/models/rbac/runner_grants.rb
|
|
244
296
|
- lib/legion/data/models/rbac_cross_team_grant.rb
|
|
245
297
|
- lib/legion/data/models/rbac_role_assignment.rb
|
|
246
298
|
- lib/legion/data/models/rbac_runner_grant.rb
|
|
@@ -257,6 +309,7 @@ files:
|
|
|
257
309
|
- lib/legion/data/storage_tiers.rb
|
|
258
310
|
- lib/legion/data/vector.rb
|
|
259
311
|
- lib/legion/data/version.rb
|
|
312
|
+
- scripts/pre-commit-rubocop.sh
|
|
260
313
|
homepage: https://github.com/LegionIO/legion-data
|
|
261
314
|
licenses:
|
|
262
315
|
- Apache-2.0
|