decision_agent 0.1.4 → 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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +84 -233
  3. data/lib/decision_agent/ab_testing/ab_testing_agent.rb +46 -10
  4. data/lib/decision_agent/agent.rb +5 -3
  5. data/lib/decision_agent/auth/access_audit_logger.rb +122 -0
  6. data/lib/decision_agent/auth/authenticator.rb +127 -0
  7. data/lib/decision_agent/auth/password_reset_manager.rb +57 -0
  8. data/lib/decision_agent/auth/password_reset_token.rb +33 -0
  9. data/lib/decision_agent/auth/permission.rb +29 -0
  10. data/lib/decision_agent/auth/permission_checker.rb +43 -0
  11. data/lib/decision_agent/auth/rbac_adapter.rb +278 -0
  12. data/lib/decision_agent/auth/rbac_config.rb +51 -0
  13. data/lib/decision_agent/auth/role.rb +56 -0
  14. data/lib/decision_agent/auth/session.rb +33 -0
  15. data/lib/decision_agent/auth/session_manager.rb +57 -0
  16. data/lib/decision_agent/auth/user.rb +70 -0
  17. data/lib/decision_agent/context.rb +24 -4
  18. data/lib/decision_agent/decision.rb +10 -3
  19. data/lib/decision_agent/dsl/condition_evaluator.rb +378 -1
  20. data/lib/decision_agent/dsl/schema_validator.rb +8 -1
  21. data/lib/decision_agent/errors.rb +38 -0
  22. data/lib/decision_agent/evaluation.rb +10 -3
  23. data/lib/decision_agent/evaluation_validator.rb +8 -13
  24. data/lib/decision_agent/monitoring/dashboard_server.rb +1 -0
  25. data/lib/decision_agent/monitoring/metrics_collector.rb +17 -5
  26. data/lib/decision_agent/testing/batch_test_importer.rb +373 -0
  27. data/lib/decision_agent/testing/batch_test_runner.rb +244 -0
  28. data/lib/decision_agent/testing/test_coverage_analyzer.rb +191 -0
  29. data/lib/decision_agent/testing/test_result_comparator.rb +235 -0
  30. data/lib/decision_agent/testing/test_scenario.rb +42 -0
  31. data/lib/decision_agent/version.rb +10 -1
  32. data/lib/decision_agent/versioning/activerecord_adapter.rb +1 -1
  33. data/lib/decision_agent/versioning/file_storage_adapter.rb +96 -28
  34. data/lib/decision_agent/web/middleware/auth_middleware.rb +45 -0
  35. data/lib/decision_agent/web/middleware/permission_middleware.rb +94 -0
  36. data/lib/decision_agent/web/public/app.js +184 -29
  37. data/lib/decision_agent/web/public/batch_testing.html +640 -0
  38. data/lib/decision_agent/web/public/index.html +37 -9
  39. data/lib/decision_agent/web/public/login.html +298 -0
  40. data/lib/decision_agent/web/public/users.html +679 -0
  41. data/lib/decision_agent/web/server.rb +873 -7
  42. data/lib/decision_agent.rb +52 -0
  43. data/lib/generators/decision_agent/install/templates/rule_version.rb +1 -1
  44. data/spec/ab_testing/ab_test_assignment_spec.rb +253 -0
  45. data/spec/ab_testing/ab_test_manager_spec.rb +282 -0
  46. data/spec/ab_testing/ab_testing_agent_spec.rb +481 -0
  47. data/spec/ab_testing/storage/adapter_spec.rb +64 -0
  48. data/spec/ab_testing/storage/memory_adapter_spec.rb +485 -0
  49. data/spec/advanced_operators_spec.rb +1003 -0
  50. data/spec/agent_spec.rb +40 -0
  51. data/spec/audit_adapters_spec.rb +18 -0
  52. data/spec/auth/access_audit_logger_spec.rb +394 -0
  53. data/spec/auth/authenticator_spec.rb +112 -0
  54. data/spec/auth/password_reset_spec.rb +294 -0
  55. data/spec/auth/permission_checker_spec.rb +207 -0
  56. data/spec/auth/permission_spec.rb +73 -0
  57. data/spec/auth/rbac_adapter_spec.rb +550 -0
  58. data/spec/auth/rbac_config_spec.rb +82 -0
  59. data/spec/auth/role_spec.rb +51 -0
  60. data/spec/auth/session_manager_spec.rb +172 -0
  61. data/spec/auth/session_spec.rb +112 -0
  62. data/spec/auth/user_spec.rb +130 -0
  63. data/spec/context_spec.rb +43 -0
  64. data/spec/decision_agent_spec.rb +96 -0
  65. data/spec/decision_spec.rb +423 -0
  66. data/spec/dsl/condition_evaluator_spec.rb +774 -0
  67. data/spec/evaluation_spec.rb +364 -0
  68. data/spec/evaluation_validator_spec.rb +165 -0
  69. data/spec/examples.txt +1542 -612
  70. data/spec/monitoring/metrics_collector_spec.rb +220 -2
  71. data/spec/monitoring/storage/activerecord_adapter_spec.rb +153 -1
  72. data/spec/monitoring/storage/base_adapter_spec.rb +61 -0
  73. data/spec/performance_optimizations_spec.rb +486 -0
  74. data/spec/spec_helper.rb +23 -0
  75. data/spec/testing/batch_test_importer_spec.rb +693 -0
  76. data/spec/testing/batch_test_runner_spec.rb +307 -0
  77. data/spec/testing/test_coverage_analyzer_spec.rb +292 -0
  78. data/spec/testing/test_result_comparator_spec.rb +392 -0
  79. data/spec/testing/test_scenario_spec.rb +113 -0
  80. data/spec/versioning/adapter_spec.rb +156 -0
  81. data/spec/versioning_spec.rb +253 -0
  82. data/spec/web/middleware/auth_middleware_spec.rb +133 -0
  83. data/spec/web/middleware/permission_middleware_spec.rb +247 -0
  84. data/spec/web_ui_rack_spec.rb +1705 -0
  85. metadata +99 -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.4
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-25 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
@@ -119,6 +160,18 @@ files:
119
160
  - lib/decision_agent/audit/adapter.rb
120
161
  - lib/decision_agent/audit/logger_adapter.rb
121
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
122
175
  - lib/decision_agent/context.rb
123
176
  - lib/decision_agent/decision.rb
124
177
  - lib/decision_agent/dsl/condition_evaluator.rb
@@ -147,14 +200,24 @@ files:
147
200
  - lib/decision_agent/scoring/max_weight.rb
148
201
  - lib/decision_agent/scoring/threshold.rb
149
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
150
208
  - lib/decision_agent/version.rb
151
209
  - lib/decision_agent/versioning/activerecord_adapter.rb
152
210
  - lib/decision_agent/versioning/adapter.rb
153
211
  - lib/decision_agent/versioning/file_storage_adapter.rb
154
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
155
215
  - lib/decision_agent/web/public/app.js
216
+ - lib/decision_agent/web/public/batch_testing.html
156
217
  - lib/decision_agent/web/public/index.html
218
+ - lib/decision_agent/web/public/login.html
157
219
  - lib/decision_agent/web/public/styles.css
220
+ - lib/decision_agent/web/public/users.html
158
221
  - lib/decision_agent/web/server.rb
159
222
  - lib/generators/decision_agent/install/install_generator.rb
160
223
  - lib/generators/decision_agent/install/templates/README
@@ -171,16 +234,37 @@ files:
171
234
  - lib/generators/decision_agent/install/templates/performance_metric.rb
172
235
  - lib/generators/decision_agent/install/templates/rule.rb
173
236
  - lib/generators/decision_agent/install/templates/rule_version.rb
237
+ - spec/ab_testing/ab_test_assignment_spec.rb
174
238
  - spec/ab_testing/ab_test_manager_spec.rb
175
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
176
243
  - spec/activerecord_thread_safety_spec.rb
244
+ - spec/advanced_operators_spec.rb
177
245
  - spec/agent_spec.rb
178
246
  - spec/api_contract_spec.rb
179
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
180
259
  - spec/comprehensive_edge_cases_spec.rb
181
260
  - spec/context_spec.rb
261
+ - spec/decision_agent_spec.rb
262
+ - spec/decision_spec.rb
263
+ - spec/dsl/condition_evaluator_spec.rb
182
264
  - spec/dsl_validation_spec.rb
183
265
  - spec/edge_cases_spec.rb
266
+ - spec/evaluation_spec.rb
267
+ - spec/evaluation_validator_spec.rb
184
268
  - spec/examples.txt
185
269
  - spec/examples/feedback_aware_evaluator_spec.rb
186
270
  - spec/issue_verification_spec.rb
@@ -190,15 +274,25 @@ files:
190
274
  - spec/monitoring/monitored_agent_spec.rb
191
275
  - spec/monitoring/prometheus_exporter_spec.rb
192
276
  - spec/monitoring/storage/activerecord_adapter_spec.rb
277
+ - spec/monitoring/storage/base_adapter_spec.rb
193
278
  - spec/monitoring/storage/memory_adapter_spec.rb
279
+ - spec/performance_optimizations_spec.rb
194
280
  - spec/replay_edge_cases_spec.rb
195
281
  - spec/replay_spec.rb
196
282
  - spec/rfc8785_canonicalization_spec.rb
197
283
  - spec/scoring_spec.rb
198
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
199
290
  - spec/thread_safety_spec.rb
200
291
  - spec/thread_safety_spec.rb.broken
292
+ - spec/versioning/adapter_spec.rb
201
293
  - spec/versioning_spec.rb
294
+ - spec/web/middleware/auth_middleware_spec.rb
295
+ - spec/web/middleware/permission_middleware_spec.rb
202
296
  - spec/web_ui_rack_spec.rb
203
297
  homepage: https://github.com/samaswin87/decision_agent
204
298
  licenses:
@@ -207,8 +301,8 @@ metadata:
207
301
  homepage_uri: https://github.com/samaswin87/decision_agent
208
302
  source_code_uri: https://github.com/samaswin87/decision_agent
209
303
  changelog_uri: https://github.com/samaswin87/decision_agent/blob/main/CHANGELOG.md
304
+ github_repo: https://github.com/samaswin87/decision_agent
210
305
  rubygems_mfa_required: 'true'
211
- post_install_message:
212
306
  rdoc_options: []
213
307
  require_paths:
214
308
  - lib
@@ -223,8 +317,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
317
  - !ruby/object:Gem::Version
224
318
  version: '0'
225
319
  requirements: []
226
- rubygems_version: 3.5.22
227
- signing_key:
320
+ rubygems_version: 4.0.3
228
321
  specification_version: 4
229
322
  summary: Deterministic, explainable, auditable decision engine for Ruby
230
323
  test_files: []