decision_agent 0.1.3 → 0.1.6

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 (110) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +84 -233
  3. data/lib/decision_agent/ab_testing/ab_test.rb +197 -0
  4. data/lib/decision_agent/ab_testing/ab_test_assignment.rb +76 -0
  5. data/lib/decision_agent/ab_testing/ab_test_manager.rb +317 -0
  6. data/lib/decision_agent/ab_testing/ab_testing_agent.rb +188 -0
  7. data/lib/decision_agent/ab_testing/storage/activerecord_adapter.rb +155 -0
  8. data/lib/decision_agent/ab_testing/storage/adapter.rb +67 -0
  9. data/lib/decision_agent/ab_testing/storage/memory_adapter.rb +116 -0
  10. data/lib/decision_agent/agent.rb +5 -3
  11. data/lib/decision_agent/auth/access_audit_logger.rb +122 -0
  12. data/lib/decision_agent/auth/authenticator.rb +127 -0
  13. data/lib/decision_agent/auth/password_reset_manager.rb +57 -0
  14. data/lib/decision_agent/auth/password_reset_token.rb +33 -0
  15. data/lib/decision_agent/auth/permission.rb +29 -0
  16. data/lib/decision_agent/auth/permission_checker.rb +43 -0
  17. data/lib/decision_agent/auth/rbac_adapter.rb +278 -0
  18. data/lib/decision_agent/auth/rbac_config.rb +51 -0
  19. data/lib/decision_agent/auth/role.rb +56 -0
  20. data/lib/decision_agent/auth/session.rb +33 -0
  21. data/lib/decision_agent/auth/session_manager.rb +57 -0
  22. data/lib/decision_agent/auth/user.rb +70 -0
  23. data/lib/decision_agent/context.rb +24 -4
  24. data/lib/decision_agent/decision.rb +10 -3
  25. data/lib/decision_agent/dsl/condition_evaluator.rb +378 -1
  26. data/lib/decision_agent/dsl/schema_validator.rb +8 -1
  27. data/lib/decision_agent/errors.rb +38 -0
  28. data/lib/decision_agent/evaluation.rb +10 -3
  29. data/lib/decision_agent/evaluation_validator.rb +8 -13
  30. data/lib/decision_agent/monitoring/dashboard_server.rb +1 -0
  31. data/lib/decision_agent/monitoring/metrics_collector.rb +164 -7
  32. data/lib/decision_agent/monitoring/storage/activerecord_adapter.rb +253 -0
  33. data/lib/decision_agent/monitoring/storage/base_adapter.rb +90 -0
  34. data/lib/decision_agent/monitoring/storage/memory_adapter.rb +222 -0
  35. data/lib/decision_agent/testing/batch_test_importer.rb +373 -0
  36. data/lib/decision_agent/testing/batch_test_runner.rb +244 -0
  37. data/lib/decision_agent/testing/test_coverage_analyzer.rb +191 -0
  38. data/lib/decision_agent/testing/test_result_comparator.rb +235 -0
  39. data/lib/decision_agent/testing/test_scenario.rb +42 -0
  40. data/lib/decision_agent/version.rb +10 -1
  41. data/lib/decision_agent/versioning/activerecord_adapter.rb +1 -1
  42. data/lib/decision_agent/versioning/file_storage_adapter.rb +96 -28
  43. data/lib/decision_agent/web/middleware/auth_middleware.rb +45 -0
  44. data/lib/decision_agent/web/middleware/permission_middleware.rb +94 -0
  45. data/lib/decision_agent/web/public/app.js +184 -29
  46. data/lib/decision_agent/web/public/batch_testing.html +640 -0
  47. data/lib/decision_agent/web/public/index.html +37 -9
  48. data/lib/decision_agent/web/public/login.html +298 -0
  49. data/lib/decision_agent/web/public/users.html +679 -0
  50. data/lib/decision_agent/web/server.rb +873 -7
  51. data/lib/decision_agent.rb +59 -0
  52. data/lib/generators/decision_agent/install/install_generator.rb +37 -0
  53. data/lib/generators/decision_agent/install/templates/ab_test_assignment_model.rb +45 -0
  54. data/lib/generators/decision_agent/install/templates/ab_test_model.rb +54 -0
  55. data/lib/generators/decision_agent/install/templates/ab_testing_migration.rb +43 -0
  56. data/lib/generators/decision_agent/install/templates/ab_testing_tasks.rake +189 -0
  57. data/lib/generators/decision_agent/install/templates/decision_agent_tasks.rake +114 -0
  58. data/lib/generators/decision_agent/install/templates/decision_log.rb +57 -0
  59. data/lib/generators/decision_agent/install/templates/error_metric.rb +53 -0
  60. data/lib/generators/decision_agent/install/templates/evaluation_metric.rb +43 -0
  61. data/lib/generators/decision_agent/install/templates/monitoring_migration.rb +109 -0
  62. data/lib/generators/decision_agent/install/templates/performance_metric.rb +76 -0
  63. data/lib/generators/decision_agent/install/templates/rule_version.rb +1 -1
  64. data/spec/ab_testing/ab_test_assignment_spec.rb +253 -0
  65. data/spec/ab_testing/ab_test_manager_spec.rb +612 -0
  66. data/spec/ab_testing/ab_test_spec.rb +270 -0
  67. data/spec/ab_testing/ab_testing_agent_spec.rb +481 -0
  68. data/spec/ab_testing/storage/adapter_spec.rb +64 -0
  69. data/spec/ab_testing/storage/memory_adapter_spec.rb +485 -0
  70. data/spec/advanced_operators_spec.rb +1003 -0
  71. data/spec/agent_spec.rb +40 -0
  72. data/spec/audit_adapters_spec.rb +18 -0
  73. data/spec/auth/access_audit_logger_spec.rb +394 -0
  74. data/spec/auth/authenticator_spec.rb +112 -0
  75. data/spec/auth/password_reset_spec.rb +294 -0
  76. data/spec/auth/permission_checker_spec.rb +207 -0
  77. data/spec/auth/permission_spec.rb +73 -0
  78. data/spec/auth/rbac_adapter_spec.rb +550 -0
  79. data/spec/auth/rbac_config_spec.rb +82 -0
  80. data/spec/auth/role_spec.rb +51 -0
  81. data/spec/auth/session_manager_spec.rb +172 -0
  82. data/spec/auth/session_spec.rb +112 -0
  83. data/spec/auth/user_spec.rb +130 -0
  84. data/spec/context_spec.rb +43 -0
  85. data/spec/decision_agent_spec.rb +96 -0
  86. data/spec/decision_spec.rb +423 -0
  87. data/spec/dsl/condition_evaluator_spec.rb +774 -0
  88. data/spec/evaluation_spec.rb +364 -0
  89. data/spec/evaluation_validator_spec.rb +165 -0
  90. data/spec/examples.txt +1542 -548
  91. data/spec/issue_verification_spec.rb +95 -21
  92. data/spec/monitoring/metrics_collector_spec.rb +221 -3
  93. data/spec/monitoring/monitored_agent_spec.rb +1 -1
  94. data/spec/monitoring/prometheus_exporter_spec.rb +1 -1
  95. data/spec/monitoring/storage/activerecord_adapter_spec.rb +498 -0
  96. data/spec/monitoring/storage/base_adapter_spec.rb +61 -0
  97. data/spec/monitoring/storage/memory_adapter_spec.rb +247 -0
  98. data/spec/performance_optimizations_spec.rb +486 -0
  99. data/spec/spec_helper.rb +23 -0
  100. data/spec/testing/batch_test_importer_spec.rb +693 -0
  101. data/spec/testing/batch_test_runner_spec.rb +307 -0
  102. data/spec/testing/test_coverage_analyzer_spec.rb +292 -0
  103. data/spec/testing/test_result_comparator_spec.rb +392 -0
  104. data/spec/testing/test_scenario_spec.rb +113 -0
  105. data/spec/versioning/adapter_spec.rb +156 -0
  106. data/spec/versioning_spec.rb +253 -0
  107. data/spec/web/middleware/auth_middleware_spec.rb +133 -0
  108. data/spec/web/middleware/permission_middleware_spec.rb +247 -0
  109. data/spec/web_ui_rack_spec.rb +1705 -0
  110. metadata +123 -6
metadata CHANGED
@@ -1,15 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decision_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Aswin
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-12-24 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: bcrypt
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '3.1'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '3.1'
13
26
  - !ruby/object:Gem::Dependency
14
27
  name: json-canonicalization
15
28
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +37,34 @@ dependencies:
24
37
  - - "~>"
25
38
  - !ruby/object:Gem::Version
26
39
  version: '1.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: roo
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.10'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.10'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rubyzip
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: 3.0.0
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "<"
66
+ - !ruby/object:Gem::Version
67
+ version: 3.0.0
27
68
  - !ruby/object:Gem::Dependency
28
69
  name: sinatra
29
70
  requirement: !ruby/object:Gem::Requirement
@@ -108,10 +149,29 @@ files:
108
149
  - README.md
109
150
  - bin/decision_agent
110
151
  - lib/decision_agent.rb
152
+ - lib/decision_agent/ab_testing/ab_test.rb
153
+ - lib/decision_agent/ab_testing/ab_test_assignment.rb
154
+ - lib/decision_agent/ab_testing/ab_test_manager.rb
155
+ - lib/decision_agent/ab_testing/ab_testing_agent.rb
156
+ - lib/decision_agent/ab_testing/storage/activerecord_adapter.rb
157
+ - lib/decision_agent/ab_testing/storage/adapter.rb
158
+ - lib/decision_agent/ab_testing/storage/memory_adapter.rb
111
159
  - lib/decision_agent/agent.rb
112
160
  - lib/decision_agent/audit/adapter.rb
113
161
  - lib/decision_agent/audit/logger_adapter.rb
114
162
  - lib/decision_agent/audit/null_adapter.rb
163
+ - lib/decision_agent/auth/access_audit_logger.rb
164
+ - lib/decision_agent/auth/authenticator.rb
165
+ - lib/decision_agent/auth/password_reset_manager.rb
166
+ - lib/decision_agent/auth/password_reset_token.rb
167
+ - lib/decision_agent/auth/permission.rb
168
+ - lib/decision_agent/auth/permission_checker.rb
169
+ - lib/decision_agent/auth/rbac_adapter.rb
170
+ - lib/decision_agent/auth/rbac_config.rb
171
+ - lib/decision_agent/auth/role.rb
172
+ - lib/decision_agent/auth/session.rb
173
+ - lib/decision_agent/auth/session_manager.rb
174
+ - lib/decision_agent/auth/user.rb
115
175
  - lib/decision_agent/context.rb
116
176
  - lib/decision_agent/decision.rb
117
177
  - lib/decision_agent/dsl/condition_evaluator.rb
@@ -131,34 +191,80 @@ files:
131
191
  - lib/decision_agent/monitoring/metrics_collector.rb
132
192
  - lib/decision_agent/monitoring/monitored_agent.rb
133
193
  - lib/decision_agent/monitoring/prometheus_exporter.rb
194
+ - lib/decision_agent/monitoring/storage/activerecord_adapter.rb
195
+ - lib/decision_agent/monitoring/storage/base_adapter.rb
196
+ - lib/decision_agent/monitoring/storage/memory_adapter.rb
134
197
  - lib/decision_agent/replay/replay.rb
135
198
  - lib/decision_agent/scoring/base.rb
136
199
  - lib/decision_agent/scoring/consensus.rb
137
200
  - lib/decision_agent/scoring/max_weight.rb
138
201
  - lib/decision_agent/scoring/threshold.rb
139
202
  - lib/decision_agent/scoring/weighted_average.rb
203
+ - lib/decision_agent/testing/batch_test_importer.rb
204
+ - lib/decision_agent/testing/batch_test_runner.rb
205
+ - lib/decision_agent/testing/test_coverage_analyzer.rb
206
+ - lib/decision_agent/testing/test_result_comparator.rb
207
+ - lib/decision_agent/testing/test_scenario.rb
140
208
  - lib/decision_agent/version.rb
141
209
  - lib/decision_agent/versioning/activerecord_adapter.rb
142
210
  - lib/decision_agent/versioning/adapter.rb
143
211
  - lib/decision_agent/versioning/file_storage_adapter.rb
144
212
  - lib/decision_agent/versioning/version_manager.rb
213
+ - lib/decision_agent/web/middleware/auth_middleware.rb
214
+ - lib/decision_agent/web/middleware/permission_middleware.rb
145
215
  - lib/decision_agent/web/public/app.js
216
+ - lib/decision_agent/web/public/batch_testing.html
146
217
  - lib/decision_agent/web/public/index.html
218
+ - lib/decision_agent/web/public/login.html
147
219
  - lib/decision_agent/web/public/styles.css
220
+ - lib/decision_agent/web/public/users.html
148
221
  - lib/decision_agent/web/server.rb
149
222
  - lib/generators/decision_agent/install/install_generator.rb
150
223
  - lib/generators/decision_agent/install/templates/README
224
+ - lib/generators/decision_agent/install/templates/ab_test_assignment_model.rb
225
+ - lib/generators/decision_agent/install/templates/ab_test_model.rb
226
+ - lib/generators/decision_agent/install/templates/ab_testing_migration.rb
227
+ - lib/generators/decision_agent/install/templates/ab_testing_tasks.rake
228
+ - lib/generators/decision_agent/install/templates/decision_agent_tasks.rake
229
+ - lib/generators/decision_agent/install/templates/decision_log.rb
230
+ - lib/generators/decision_agent/install/templates/error_metric.rb
231
+ - lib/generators/decision_agent/install/templates/evaluation_metric.rb
151
232
  - lib/generators/decision_agent/install/templates/migration.rb
233
+ - lib/generators/decision_agent/install/templates/monitoring_migration.rb
234
+ - lib/generators/decision_agent/install/templates/performance_metric.rb
152
235
  - lib/generators/decision_agent/install/templates/rule.rb
153
236
  - lib/generators/decision_agent/install/templates/rule_version.rb
237
+ - spec/ab_testing/ab_test_assignment_spec.rb
238
+ - spec/ab_testing/ab_test_manager_spec.rb
239
+ - spec/ab_testing/ab_test_spec.rb
240
+ - spec/ab_testing/ab_testing_agent_spec.rb
241
+ - spec/ab_testing/storage/adapter_spec.rb
242
+ - spec/ab_testing/storage/memory_adapter_spec.rb
154
243
  - spec/activerecord_thread_safety_spec.rb
244
+ - spec/advanced_operators_spec.rb
155
245
  - spec/agent_spec.rb
156
246
  - spec/api_contract_spec.rb
157
247
  - spec/audit_adapters_spec.rb
248
+ - spec/auth/access_audit_logger_spec.rb
249
+ - spec/auth/authenticator_spec.rb
250
+ - spec/auth/password_reset_spec.rb
251
+ - spec/auth/permission_checker_spec.rb
252
+ - spec/auth/permission_spec.rb
253
+ - spec/auth/rbac_adapter_spec.rb
254
+ - spec/auth/rbac_config_spec.rb
255
+ - spec/auth/role_spec.rb
256
+ - spec/auth/session_manager_spec.rb
257
+ - spec/auth/session_spec.rb
258
+ - spec/auth/user_spec.rb
158
259
  - spec/comprehensive_edge_cases_spec.rb
159
260
  - spec/context_spec.rb
261
+ - spec/decision_agent_spec.rb
262
+ - spec/decision_spec.rb
263
+ - spec/dsl/condition_evaluator_spec.rb
160
264
  - spec/dsl_validation_spec.rb
161
265
  - spec/edge_cases_spec.rb
266
+ - spec/evaluation_spec.rb
267
+ - spec/evaluation_validator_spec.rb
162
268
  - spec/examples.txt
163
269
  - spec/examples/feedback_aware_evaluator_spec.rb
164
270
  - spec/issue_verification_spec.rb
@@ -167,14 +273,26 @@ files:
167
273
  - spec/monitoring/metrics_collector_spec.rb
168
274
  - spec/monitoring/monitored_agent_spec.rb
169
275
  - spec/monitoring/prometheus_exporter_spec.rb
276
+ - spec/monitoring/storage/activerecord_adapter_spec.rb
277
+ - spec/monitoring/storage/base_adapter_spec.rb
278
+ - spec/monitoring/storage/memory_adapter_spec.rb
279
+ - spec/performance_optimizations_spec.rb
170
280
  - spec/replay_edge_cases_spec.rb
171
281
  - spec/replay_spec.rb
172
282
  - spec/rfc8785_canonicalization_spec.rb
173
283
  - spec/scoring_spec.rb
174
284
  - spec/spec_helper.rb
285
+ - spec/testing/batch_test_importer_spec.rb
286
+ - spec/testing/batch_test_runner_spec.rb
287
+ - spec/testing/test_coverage_analyzer_spec.rb
288
+ - spec/testing/test_result_comparator_spec.rb
289
+ - spec/testing/test_scenario_spec.rb
175
290
  - spec/thread_safety_spec.rb
176
291
  - spec/thread_safety_spec.rb.broken
292
+ - spec/versioning/adapter_spec.rb
177
293
  - spec/versioning_spec.rb
294
+ - spec/web/middleware/auth_middleware_spec.rb
295
+ - spec/web/middleware/permission_middleware_spec.rb
178
296
  - spec/web_ui_rack_spec.rb
179
297
  homepage: https://github.com/samaswin87/decision_agent
180
298
  licenses:
@@ -183,8 +301,8 @@ metadata:
183
301
  homepage_uri: https://github.com/samaswin87/decision_agent
184
302
  source_code_uri: https://github.com/samaswin87/decision_agent
185
303
  changelog_uri: https://github.com/samaswin87/decision_agent/blob/main/CHANGELOG.md
304
+ github_repo: https://github.com/samaswin87/decision_agent
186
305
  rubygems_mfa_required: 'true'
187
- post_install_message:
188
306
  rdoc_options: []
189
307
  require_paths:
190
308
  - lib
@@ -199,8 +317,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
317
  - !ruby/object:Gem::Version
200
318
  version: '0'
201
319
  requirements: []
202
- rubygems_version: 3.5.22
203
- signing_key:
320
+ rubygems_version: 4.0.3
204
321
  specification_version: 4
205
322
  summary: Deterministic, explainable, auditable decision engine for Ruby
206
323
  test_files: []