agentf 0.5.0 → 0.7.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/agentf/agents/architect.rb +3 -3
- data/lib/agentf/agents/base.rb +8 -23
- data/lib/agentf/agents/debugger.rb +1 -2
- data/lib/agentf/agents/designer.rb +22 -7
- data/lib/agentf/agents/documenter.rb +2 -2
- data/lib/agentf/agents/explorer.rb +1 -2
- data/lib/agentf/agents/reviewer.rb +7 -7
- data/lib/agentf/agents/security.rb +11 -9
- data/lib/agentf/agents/specialist.rb +28 -12
- data/lib/agentf/agents/tester.rb +22 -7
- data/lib/agentf/cli/eval.rb +1 -1
- data/lib/agentf/cli/memory.rb +95 -92
- data/lib/agentf/cli/router.rb +1 -1
- data/lib/agentf/commands/memory_reviewer.rb +21 -55
- data/lib/agentf/commands/metrics.rb +4 -13
- data/lib/agentf/context_builder.rb +4 -14
- data/lib/agentf/embedding_provider.rb +35 -0
- data/lib/agentf/installer.rb +162 -82
- data/lib/agentf/mcp/server.rb +123 -177
- data/lib/agentf/memory/confirmation_handler.rb +24 -0
- data/lib/agentf/memory.rb +322 -169
- data/lib/agentf/version.rb +1 -1
- data/lib/agentf/workflow_engine.rb +15 -18
- data/lib/agentf.rb +2 -0
- metadata +4 -2
data/lib/agentf/version.rb
CHANGED
|
@@ -293,18 +293,15 @@ module Agentf
|
|
|
293
293
|
def persist_feature_intent(task:, workflow_type:, context:)
|
|
294
294
|
acceptance_criteria = Array(context["acceptance_criteria"])
|
|
295
295
|
non_goals = Array(context["non_goals"])
|
|
296
|
-
tags = [workflow_type, @provider.name.downcase]
|
|
297
|
-
|
|
298
296
|
@memory.store_feature_intent(
|
|
299
297
|
title: task,
|
|
300
298
|
description: "Workflow intent captured by workflow engine",
|
|
301
299
|
acceptance_criteria: acceptance_criteria,
|
|
302
300
|
non_goals: non_goals,
|
|
303
|
-
tags: tags,
|
|
304
301
|
agent: @name
|
|
305
302
|
)
|
|
306
303
|
rescue Agentf::Memory::RedisMemory::ConfirmationRequired => e
|
|
307
|
-
handle_memory_confirmation(e, attempted: { action: "store_feature_intent", title: task
|
|
304
|
+
handle_memory_confirmation(e, attempted: { action: "store_feature_intent", title: task })
|
|
308
305
|
rescue StandardError => e
|
|
309
306
|
log "Intent capture skipped: #{e.message}"
|
|
310
307
|
end
|
|
@@ -314,48 +311,51 @@ module Agentf
|
|
|
314
311
|
|
|
315
312
|
if result["error"]
|
|
316
313
|
begin
|
|
317
|
-
@memory.
|
|
314
|
+
@memory.store_episode(
|
|
315
|
+
type: "episode",
|
|
318
316
|
title: "#{agent_name} execution failure",
|
|
319
317
|
description: result["error"],
|
|
320
318
|
context: @workflow_state["task"],
|
|
321
|
-
tags: [@workflow_state["workflow_type"], "workflow_error"],
|
|
322
319
|
agent: agent_name,
|
|
320
|
+
outcome: "negative",
|
|
323
321
|
code_snippet: ""
|
|
324
322
|
)
|
|
325
323
|
rescue Agentf::Memory::RedisMemory::ConfirmationRequired => e
|
|
326
|
-
handle_memory_confirmation(e, attempted: { action: "
|
|
324
|
+
handle_memory_confirmation(e, attempted: { action: "store_episode", agent: agent_name, error: result["error"], outcome: "negative" })
|
|
327
325
|
end
|
|
328
326
|
return
|
|
329
327
|
end
|
|
330
328
|
|
|
331
329
|
if agent_name == Agentf::AgentRoles::QA_TESTER && result["tdd_phase"] == "red" && result["passed"] == false
|
|
332
330
|
begin
|
|
333
|
-
@memory.
|
|
331
|
+
@memory.store_episode(
|
|
332
|
+
type: "episode",
|
|
334
333
|
title: "TDD red phase captured",
|
|
335
334
|
description: result["failure_signature"] || "Intentional failing test captured",
|
|
336
335
|
context: @workflow_state["task"],
|
|
337
|
-
tags: [@workflow_state["workflow_type"], "tdd_red"],
|
|
338
336
|
agent: agent_name,
|
|
337
|
+
outcome: "negative",
|
|
339
338
|
code_snippet: ""
|
|
340
339
|
)
|
|
341
340
|
rescue Agentf::Memory::RedisMemory::ConfirmationRequired => e
|
|
342
|
-
handle_memory_confirmation(e, attempted: { action: "
|
|
341
|
+
handle_memory_confirmation(e, attempted: { action: "store_episode", agent: agent_name, tdd: true, outcome: "negative" })
|
|
343
342
|
end
|
|
344
343
|
return
|
|
345
344
|
end
|
|
346
345
|
|
|
347
346
|
if agent_name == Agentf::AgentRoles::QA_TESTER && result["tdd_phase"] == "green" && result["passed"] == true
|
|
348
347
|
begin
|
|
349
|
-
@memory.
|
|
348
|
+
@memory.store_episode(
|
|
349
|
+
type: "episode",
|
|
350
350
|
title: "TDD green phase passed",
|
|
351
351
|
description: "Resolved failing test signature: #{result['failure_signature']}",
|
|
352
352
|
context: @workflow_state["task"],
|
|
353
|
-
tags: [@workflow_state["workflow_type"], "tdd_green"],
|
|
354
353
|
agent: agent_name,
|
|
354
|
+
outcome: "positive",
|
|
355
355
|
code_snippet: ""
|
|
356
356
|
)
|
|
357
357
|
rescue Agentf::Memory::RedisMemory::ConfirmationRequired => e
|
|
358
|
-
handle_memory_confirmation(e, attempted: { action: "
|
|
358
|
+
handle_memory_confirmation(e, attempted: { action: "store_episode", agent: agent_name, tdd: true, outcome: "positive" })
|
|
359
359
|
end
|
|
360
360
|
return
|
|
361
361
|
end
|
|
@@ -365,7 +365,6 @@ module Agentf
|
|
|
365
365
|
title: "#{agent_name} completed workflow step",
|
|
366
366
|
description: "Agent step completed for #{@workflow_state['workflow_type']} workflow",
|
|
367
367
|
context: @workflow_state["task"],
|
|
368
|
-
tags: [@workflow_state["workflow_type"], "workflow_step"],
|
|
369
368
|
agent: agent_name,
|
|
370
369
|
code_snippet: ""
|
|
371
370
|
)
|
|
@@ -469,7 +468,6 @@ module Agentf
|
|
|
469
468
|
title: "Architecture review completed",
|
|
470
469
|
description: "Layer violations: #{Array(result['violations']).length}",
|
|
471
470
|
context: @workflow_state["task"],
|
|
472
|
-
tags: [@workflow_state["workflow_type"], "architecture_review"],
|
|
473
471
|
agent: @name
|
|
474
472
|
)
|
|
475
473
|
rescue Agentf::Memory::RedisMemory::ConfirmationRequired => e
|
|
@@ -501,7 +499,6 @@ module Agentf
|
|
|
501
499
|
title: "Workflow contract #{evaluation['stage']} #{evaluation['ok'] ? 'passed' : 'violated'}",
|
|
502
500
|
description: "mode=#{evaluation['mode']} blocked=#{evaluation['blocked']}",
|
|
503
501
|
context: JSON.generate(evaluation),
|
|
504
|
-
tags: ["workflow_contract", evaluation["stage"], evaluation["ok"] ? "pass" : "violation"],
|
|
505
502
|
agent: @name,
|
|
506
503
|
metadata: { "workflow_contract_event" => true }
|
|
507
504
|
)
|
|
@@ -519,12 +516,12 @@ module Agentf
|
|
|
519
516
|
policy_violations.each do |violation|
|
|
520
517
|
begin
|
|
521
518
|
@memory.store_episode(
|
|
522
|
-
type: "
|
|
519
|
+
type: "episode",
|
|
523
520
|
title: "Agent policy violation: #{violation['code']}",
|
|
524
521
|
description: violation["message"],
|
|
525
522
|
context: @workflow_state["task"],
|
|
526
|
-
tags: ["agent_policy", violation["agent"].to_s.downcase],
|
|
527
523
|
agent: @name,
|
|
524
|
+
outcome: "negative",
|
|
528
525
|
metadata: { "policy_violation" => true, "severity" => violation["severity"] }
|
|
529
526
|
)
|
|
530
527
|
rescue Agentf::Memory::RedisMemory::ConfirmationRequired => e
|
data/lib/agentf.rb
CHANGED
|
@@ -83,10 +83,12 @@ end
|
|
|
83
83
|
|
|
84
84
|
# Load submodules
|
|
85
85
|
require_relative "agentf/memory"
|
|
86
|
+
require_relative "agentf/memory/confirmation_handler"
|
|
86
87
|
require_relative "agentf/tools"
|
|
87
88
|
require_relative "agentf/commands"
|
|
88
89
|
require_relative "agentf/commands/registry"
|
|
89
90
|
require_relative "agentf/service/providers"
|
|
91
|
+
require_relative "agentf/embedding_provider"
|
|
90
92
|
require_relative "agentf/context_builder"
|
|
91
93
|
require_relative "agentf/evals/scenario"
|
|
92
94
|
require_relative "agentf/evals/runner"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: agentf
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Neal Deters
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-03-
|
|
11
|
+
date: 2026-03-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: redis
|
|
@@ -129,6 +129,7 @@ files:
|
|
|
129
129
|
- lib/agentf/commands/security_scanner.rb
|
|
130
130
|
- lib/agentf/commands/tester.rb
|
|
131
131
|
- lib/agentf/context_builder.rb
|
|
132
|
+
- lib/agentf/embedding_provider.rb
|
|
132
133
|
- lib/agentf/evals/report.rb
|
|
133
134
|
- lib/agentf/evals/runner.rb
|
|
134
135
|
- lib/agentf/evals/scenario.rb
|
|
@@ -136,6 +137,7 @@ files:
|
|
|
136
137
|
- lib/agentf/mcp/server.rb
|
|
137
138
|
- lib/agentf/mcp/stub.rb
|
|
138
139
|
- lib/agentf/memory.rb
|
|
140
|
+
- lib/agentf/memory/confirmation_handler.rb
|
|
139
141
|
- lib/agentf/service/providers.rb
|
|
140
142
|
- lib/agentf/tools.rb
|
|
141
143
|
- lib/agentf/tools/component_spec.rb
|