active_harness 0.2.42 → 0.3.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/lib/active_harness/configuration.rb +3 -1
- data/lib/active_harness/core/errors.rb +2 -2
- data/lib/active_harness/core/hooks.rb +2 -2
- data/lib/active_harness/memory.rb +11 -11
- data/lib/active_harness/pipeline/README.md +15 -15
- data/lib/active_harness/pipeline/step.rb +1 -1
- data/lib/active_harness/pipeline.rb +18 -18
- data/lib/active_harness/providers/PROVIDER_CONTRACT.md +1 -1
- data/lib/active_harness/providers/azure.rb +1 -1
- data/lib/active_harness/providers/bedrock.rb +2 -2
- data/lib/active_harness/providers/custom.rb +1 -1
- data/lib/active_harness/providers/images/openrouter.rb +49 -1
- data/lib/active_harness/providers/vertexai.rb +2 -2
- data/lib/active_harness/railtie.rb +1 -1
- data/lib/active_harness/{agent → request}/cost.rb +1 -1
- data/lib/active_harness/{agent → request}/custom_llm_backend.rb +4 -4
- data/lib/active_harness/{agent → request}/hooks.rb +4 -4
- data/lib/active_harness/{agent → request}/image.rb +7 -7
- data/lib/active_harness/{agent → request}/models.rb +15 -15
- data/lib/active_harness/{agent → request}/output_parser.rb +1 -1
- data/lib/active_harness/{agent → request}/prompt.rb +7 -7
- data/lib/active_harness/{agent → request}/providers.rb +1 -1
- data/lib/active_harness/{agent → request}/transcription.rb +7 -7
- data/lib/active_harness/{agent.rb → request.rb} +19 -19
- data/lib/active_harness/result.rb +3 -3
- data/lib/active_harness/tribunal/dsl.rb +7 -7
- data/lib/active_harness/tribunal/hooks.rb +9 -9
- data/lib/active_harness/tribunal.rb +62 -62
- data/lib/active_harness.rb +2 -2
- data/lib/generators/active_harness/install/install_generator.rb +1 -1
- data/lib/generators/active_harness/install/templates/controllers/ai_controller.rb +3 -3
- data/lib/generators/active_harness/install/templates/initializers/active_harness.rb +2 -2
- data/lib/generators/active_harness/install/templates/pipelines/support_pipeline.rb +2 -2
- data/lib/generators/active_harness/install/templates/{agents/support_guard_agent.rb → requests/support_guard_request.rb} +1 -1
- data/lib/generators/active_harness/install/templates/{agents/support_agent.rb → requests/support_request.rb} +1 -1
- data/lib/generators/active_harness/install/templates/tribunals/support_guard_tribunal.rb +3 -3
- data/lib/generators/active_harness/pipeline/templates/pipeline.rb.tt +1 -1
- data/lib/generators/active_harness/request/request_generator.rb +16 -0
- data/lib/generators/active_harness/{agent/templates/agent.rb.tt → request/templates/request.rb.tt} +1 -1
- data/lib/generators/active_harness/tribunal/templates/tribunal.rb.tt +1 -1
- metadata +17 -17
- data/lib/generators/active_harness/agent/agent_generator.rb +0 -16
|
@@ -74,7 +74,7 @@ ActiveHarness.configure do |config|
|
|
|
74
74
|
|
|
75
75
|
# ---------------------------------------------------------------------------
|
|
76
76
|
# Azure OpenAI Service
|
|
77
|
-
# The `model:` in your
|
|
77
|
+
# The `model:` in your request config is the deployment name, not the model name.
|
|
78
78
|
# ---------------------------------------------------------------------------
|
|
79
79
|
# config.azure_api_base = ENV["AZURE_API_BASE"] # "https://my-resource.openai.azure.com"
|
|
80
80
|
# config.azure_api_key = ENV["AZURE_API_KEY"] # resource API key (preferred)
|
|
@@ -92,7 +92,7 @@ ActiveHarness.configure do |config|
|
|
|
92
92
|
# config.custom["VLLMServer"]["url"] = "http://gpu-server:8000/v1/chat/completions"
|
|
93
93
|
# config.custom["VLLMServer"]["api_key"] = ENV["VLLM_API_KEY"]
|
|
94
94
|
#
|
|
95
|
-
# Use in
|
|
95
|
+
# Use in a request:
|
|
96
96
|
# model do
|
|
97
97
|
# use provider: :custom, name: "MyLocal", model: "llama3.2"
|
|
98
98
|
# fallback provider: :custom, name: "VLLMServer", model: "mixtral"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require_relative "../tribunals/support_guard_tribunal"
|
|
2
|
-
require_relative "../
|
|
2
|
+
require_relative "../requests/support_request"
|
|
3
3
|
|
|
4
4
|
# Two-step pipeline: spam guard → answer.
|
|
5
5
|
# Add more steps between them as needed.
|
|
@@ -11,7 +11,7 @@ class SupportPipeline < ActiveHarness::Pipeline
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
# Step 2 — RESPOND: generate the actual answer
|
|
14
|
-
step :respond,
|
|
14
|
+
step :respond, SupportRequest
|
|
15
15
|
|
|
16
16
|
before :step do |step_name, _payload|
|
|
17
17
|
puts "[pipeline] → :#{step_name}"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
require_relative "../
|
|
1
|
+
require_relative "../requests/support_guard_request"
|
|
2
2
|
|
|
3
|
-
# Runs
|
|
3
|
+
# Runs SupportGuardRequest in parallel (single request here, extendable).
|
|
4
4
|
# Verdict is true (safe) when no spam is detected.
|
|
5
5
|
class SupportGuardTribunal < ActiveHarness::Tribunal
|
|
6
|
-
|
|
6
|
+
requests SupportGuardRequest
|
|
7
7
|
|
|
8
8
|
process do |results|
|
|
9
9
|
results.none? { |r| r.processed["spam"] == true }
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module ActiveHarness
|
|
4
|
+
module Generators
|
|
5
|
+
class RequestGenerator < Rails::Generators::NamedBase
|
|
6
|
+
source_root File.expand_path("templates", __dir__)
|
|
7
|
+
|
|
8
|
+
desc "Creates an ActiveHarness request in app/ai/requests/"
|
|
9
|
+
|
|
10
|
+
def create_request
|
|
11
|
+
template "request.rb.tt",
|
|
12
|
+
"app/ai/requests/#{file_name}_request.rb"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: active_harness
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- the-teacher
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-09-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -46,16 +46,6 @@ extensions: []
|
|
|
46
46
|
extra_rdoc_files: []
|
|
47
47
|
files:
|
|
48
48
|
- lib/active_harness.rb
|
|
49
|
-
- lib/active_harness/agent.rb
|
|
50
|
-
- lib/active_harness/agent/cost.rb
|
|
51
|
-
- lib/active_harness/agent/custom_llm_backend.rb
|
|
52
|
-
- lib/active_harness/agent/hooks.rb
|
|
53
|
-
- lib/active_harness/agent/image.rb
|
|
54
|
-
- lib/active_harness/agent/models.rb
|
|
55
|
-
- lib/active_harness/agent/output_parser.rb
|
|
56
|
-
- lib/active_harness/agent/prompt.rb
|
|
57
|
-
- lib/active_harness/agent/providers.rb
|
|
58
|
-
- lib/active_harness/agent/transcription.rb
|
|
59
49
|
- lib/active_harness/configuration.rb
|
|
60
50
|
- lib/active_harness/core/errors.rb
|
|
61
51
|
- lib/active_harness/core/hooks.rb
|
|
@@ -93,22 +83,30 @@ files:
|
|
|
93
83
|
- lib/active_harness/providers/vertexai.rb
|
|
94
84
|
- lib/active_harness/providers/xai.rb
|
|
95
85
|
- lib/active_harness/railtie.rb
|
|
86
|
+
- lib/active_harness/request.rb
|
|
87
|
+
- lib/active_harness/request/cost.rb
|
|
88
|
+
- lib/active_harness/request/custom_llm_backend.rb
|
|
89
|
+
- lib/active_harness/request/hooks.rb
|
|
90
|
+
- lib/active_harness/request/image.rb
|
|
91
|
+
- lib/active_harness/request/models.rb
|
|
92
|
+
- lib/active_harness/request/output_parser.rb
|
|
93
|
+
- lib/active_harness/request/prompt.rb
|
|
94
|
+
- lib/active_harness/request/providers.rb
|
|
95
|
+
- lib/active_harness/request/transcription.rb
|
|
96
96
|
- lib/active_harness/result.rb
|
|
97
97
|
- lib/active_harness/tribunal.rb
|
|
98
98
|
- lib/active_harness/tribunal/dsl.rb
|
|
99
99
|
- lib/active_harness/tribunal/hooks.rb
|
|
100
100
|
- lib/active_harness/tribunal/processing.rb
|
|
101
|
-
- lib/generators/active_harness/agent/agent_generator.rb
|
|
102
|
-
- lib/generators/active_harness/agent/templates/agent.rb.tt
|
|
103
101
|
- lib/generators/active_harness/install/install_generator.rb
|
|
104
|
-
- lib/generators/active_harness/install/templates/agents/support_agent.rb
|
|
105
|
-
- lib/generators/active_harness/install/templates/agents/support_guard_agent.rb
|
|
106
102
|
- lib/generators/active_harness/install/templates/controllers/ai_controller.rb
|
|
107
103
|
- lib/generators/active_harness/install/templates/initializers/active_harness.rb
|
|
108
104
|
- lib/generators/active_harness/install/templates/memory/app_memory.rb
|
|
109
105
|
- lib/generators/active_harness/install/templates/pipelines/support_pipeline.rb
|
|
110
106
|
- lib/generators/active_harness/install/templates/prompts/support_guard_prompt.rb
|
|
111
107
|
- lib/generators/active_harness/install/templates/prompts/support_prompt.rb
|
|
108
|
+
- lib/generators/active_harness/install/templates/requests/support_guard_request.rb
|
|
109
|
+
- lib/generators/active_harness/install/templates/requests/support_request.rb
|
|
112
110
|
- lib/generators/active_harness/install/templates/tribunals/support_guard_tribunal.rb
|
|
113
111
|
- lib/generators/active_harness/memory/memory_generator.rb
|
|
114
112
|
- lib/generators/active_harness/memory/templates/memory.rb.tt
|
|
@@ -120,6 +118,8 @@ files:
|
|
|
120
118
|
- lib/generators/active_harness/pipeline/templates/pipeline.rb.tt
|
|
121
119
|
- lib/generators/active_harness/prompt/prompt_generator.rb
|
|
122
120
|
- lib/generators/active_harness/prompt/templates/prompt.rb.tt
|
|
121
|
+
- lib/generators/active_harness/request/request_generator.rb
|
|
122
|
+
- lib/generators/active_harness/request/templates/request.rb.tt
|
|
123
123
|
- lib/generators/active_harness/tribunal/templates/tribunal.rb.tt
|
|
124
124
|
- lib/generators/active_harness/tribunal/tribunal_generator.rb
|
|
125
125
|
homepage: https://github.com/the-teacher/active_harness
|
|
@@ -144,5 +144,5 @@ requirements: []
|
|
|
144
144
|
rubygems_version: 3.0.3.1
|
|
145
145
|
signing_key:
|
|
146
146
|
specification_version: 4
|
|
147
|
-
summary: DSL for describing and running
|
|
147
|
+
summary: DSL for describing and running resilient LLM requests with safety layers
|
|
148
148
|
test_files: []
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
require "rails/generators"
|
|
2
|
-
|
|
3
|
-
module ActiveHarness
|
|
4
|
-
module Generators
|
|
5
|
-
class AgentGenerator < Rails::Generators::NamedBase
|
|
6
|
-
source_root File.expand_path("templates", __dir__)
|
|
7
|
-
|
|
8
|
-
desc "Creates an ActiveHarness agent in app/ai/agents/"
|
|
9
|
-
|
|
10
|
-
def create_agent
|
|
11
|
-
template "agent.rb.tt",
|
|
12
|
-
"app/ai/agents/#{file_name}_agent.rb"
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|