Module: CompletionKit::McpTools::MetricVersions
- Extended by:
- Base
- Defined in:
- app/services/completion_kit/mcp_tools/metric_versions.rb
Constant Summary
collapse
- TOOLS =
{
"metric_versions_list" => {
description: "List every MetricVersion (drafts + published) for a metric, newest first. Each row carries version_number, state, source, current flag, and timestamps.",
inputSchema: {
type: "object",
properties: {
metric_id: { type: "integer" }
},
required: ["metric_id"]
},
handler: :list
},
"metric_versions_publish" => {
description: "Publish a MetricVersion as the live judge for its metric. Works for both 'draft → published' and 'revert to an older published version → current'. Transactionally flips current, demotes peers, and writes the version's instruction + rubric_bands back onto the metric so the judge actually uses them.",
inputSchema: {
type: "object",
properties: {
metric_version_id: { type: "integer" }
},
required: ["metric_version_id"]
},
handler: :publish
},
"metric_versions_dismiss" => {
description: "Destroy a draft MetricVersion (use for either source: 'edit' or source: 'suggestion'). Published versions are refused — to demote a published version, publish a different one as current instead.",
inputSchema: {
type: "object",
properties: {
metric_version_id: { type: "integer" }
},
required: ["metric_version_id"]
},
handler: :dismiss
}
}.freeze
Class Method Summary
collapse
Methods included from Base
call, definitions, error_result, text_result
Class Method Details
.dismiss(args) ⇒ Object
59
60
61
62
63
64
|
# File 'app/services/completion_kit/mcp_tools/metric_versions.rb', line 59
def self.dismiss(args)
version = CompletionKit::MetricVersion.find(args["metric_version_id"])
return error_result("Cannot dismiss a published version. Publish a different version as current instead.") if version.published?
version.destroy!
text_result({id: version.id, destroyed: true})
end
|
.list(args) ⇒ Object
42
43
44
45
46
|
# File 'app/services/completion_kit/mcp_tools/metric_versions.rb', line 42
def self.list(args)
metric = CompletionKit::Metric.find(args["metric_id"])
versions = CompletionKit::MetricVersion.where(metric_id: metric.id).order(version_number: :desc)
text_result(versions.map(&:as_json))
end
|
.publish(args) ⇒ Object
48
49
50
51
52
53
54
55
56
57
|
# File 'app/services/completion_kit/mcp_tools/metric_versions.rb', line 48
def self.publish(args)
version = CompletionKit::MetricVersion.find(args["metric_version_id"])
if version.published? && !version.current?
audit = version.revert!
text_result(audit.as_json)
else
version.publish!
text_result(version.reload.as_json)
end
end
|