7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/legion/api/codegen.rb', line 7
def self.registered(app)
app.get '/api/codegen/status' do
halt 503, json_error('codegen_unavailable', 'codegen not available', status_code: 503) unless defined?(Legion::MCP::SelfGenerate)
json_response(Legion::MCP::SelfGenerate.status)
end
app.get '/api/codegen/generated' do
unless defined?(Legion::Extensions::Codegen::Helpers::GeneratedRegistry)
halt 503, json_error('codegen_unavailable', 'codegen not available', status_code: 503)
end
status_filter = params[:status]
records = Legion::Extensions::Codegen::Helpers::GeneratedRegistry.list(status: status_filter)
json_response(records)
end
app.get '/api/codegen/generated/:id' do |id|
unless defined?(Legion::Extensions::Codegen::Helpers::GeneratedRegistry)
halt 503, json_error('codegen_unavailable', 'codegen not available', status_code: 503)
end
record = Legion::Extensions::Codegen::Helpers::GeneratedRegistry.get(id: id)
halt 404, json_error('not_found', 'record not found', status_code: 404) unless record
json_response(record)
end
app.post '/api/codegen/generated/:id/approve' do |id|
unless defined?(Legion::Extensions::Codegen::Runners::ReviewHandler)
halt 503, json_error('codegen_unavailable', 'review handler not available', status_code: 503)
end
result = Legion::Extensions::Codegen::Runners::ReviewHandler.handle_verdict(
review: { generation_id: id, verdict: :approve, confidence: 1.0 }
)
json_response(result)
end
app.post '/api/codegen/generated/:id/reject' do |id|
unless defined?(Legion::Extensions::Codegen::Helpers::GeneratedRegistry)
halt 503, json_error('codegen_unavailable', 'codegen not available', status_code: 503)
end
Legion::Extensions::Codegen::Helpers::GeneratedRegistry.update_status(id: id, status: 'rejected')
json_response({ id: id, status: 'rejected' })
end
app.post '/api/codegen/generated/:id/retry' do |id|
unless defined?(Legion::Extensions::Codegen::Helpers::GeneratedRegistry)
halt 503, json_error('codegen_unavailable', 'codegen not available', status_code: 503)
end
Legion::Extensions::Codegen::Helpers::GeneratedRegistry.update_status(id: id, status: 'pending')
json_response({ id: id, status: 'pending' })
end
app.get '/api/codegen/gaps' do
data = if defined?(Legion::MCP::GapDetector)
Legion::MCP::GapDetector.detect_gaps
else
[]
end
json_response(data)
end
app.post '/api/codegen/cycle' do
return json_response({ triggered: false, reason: 'self_generate not available' }) unless defined?(Legion::MCP::SelfGenerate)
Legion::MCP::SelfGenerate.instance_variable_set(:@last_cycle_at, nil)
result = Legion::MCP::SelfGenerate.run_cycle
json_response(result)
end
end
|