ARCH: добавить entry point MCP discovery
This commit is contained in:
+81
@@ -0,0 +1,81 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ASSISTANT_MCP_DISCOVERY_RUNTIME_ENTRY_POINT_SCHEMA_VERSION = void 0;
|
||||
exports.runAssistantMcpDiscoveryRuntimeEntryPoint = runAssistantMcpDiscoveryRuntimeEntryPoint;
|
||||
const assistantMcpDiscoveryRuntimeBridge_1 = require("./assistantMcpDiscoveryRuntimeBridge");
|
||||
const assistantMcpDiscoveryTurnInputAdapter_1 = require("./assistantMcpDiscoveryTurnInputAdapter");
|
||||
exports.ASSISTANT_MCP_DISCOVERY_RUNTIME_ENTRY_POINT_SCHEMA_VERSION = "assistant_mcp_discovery_runtime_entry_point_v1";
|
||||
function normalizeReasonCode(value) {
|
||||
const normalized = value
|
||||
.trim()
|
||||
.replace(/[^\p{L}\p{N}_.:-]+/gu, "_")
|
||||
.replace(/^_+|_+$/g, "")
|
||||
.toLowerCase();
|
||||
return normalized.length > 0 ? normalized.slice(0, 120) : null;
|
||||
}
|
||||
function pushReason(target, value) {
|
||||
const normalized = normalizeReasonCode(value);
|
||||
if (normalized && !target.includes(normalized)) {
|
||||
target.push(normalized);
|
||||
}
|
||||
}
|
||||
function uniqueStrings(values) {
|
||||
const result = [];
|
||||
for (const value of values) {
|
||||
const text = String(value ?? "").trim();
|
||||
if (text && !result.includes(text)) {
|
||||
result.push(text);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function skippedContract(input) {
|
||||
const reasonCodes = uniqueStrings(input.turnInput.reason_codes);
|
||||
pushReason(reasonCodes, input.reason);
|
||||
pushReason(reasonCodes, "runtime_entry_point_not_wired_to_hot_assistant_answer");
|
||||
return {
|
||||
schema_version: exports.ASSISTANT_MCP_DISCOVERY_RUNTIME_ENTRY_POINT_SCHEMA_VERSION,
|
||||
policy_owner: "assistantMcpDiscoveryRuntimeEntryPoint",
|
||||
entry_status: input.status,
|
||||
hot_runtime_wired: false,
|
||||
discovery_attempted: false,
|
||||
turn_input: input.turnInput,
|
||||
bridge: null,
|
||||
reason_codes: reasonCodes
|
||||
};
|
||||
}
|
||||
async function runAssistantMcpDiscoveryRuntimeEntryPoint(input) {
|
||||
const turnInput = (0, assistantMcpDiscoveryTurnInputAdapter_1.buildAssistantMcpDiscoveryTurnInput)(input);
|
||||
if (!turnInput.should_run_discovery) {
|
||||
return skippedContract({
|
||||
status: "skipped_not_applicable",
|
||||
turnInput,
|
||||
reason: "runtime_entry_point_skipped_supported_exact_turn"
|
||||
});
|
||||
}
|
||||
if (!turnInput.turn_meaning_ref) {
|
||||
return skippedContract({
|
||||
status: "skipped_needs_more_context",
|
||||
turnInput,
|
||||
reason: "runtime_entry_point_skipped_missing_discovery_turn_meaning"
|
||||
});
|
||||
}
|
||||
const bridge = await (0, assistantMcpDiscoveryRuntimeBridge_1.runAssistantMcpDiscoveryRuntimeBridge)({
|
||||
semanticDataNeed: turnInput.semantic_data_need,
|
||||
turnMeaning: turnInput.turn_meaning_ref,
|
||||
deps: input.deps
|
||||
});
|
||||
const reasonCodes = uniqueStrings([...turnInput.reason_codes, ...bridge.reason_codes]);
|
||||
pushReason(reasonCodes, "runtime_entry_point_bridge_executed");
|
||||
pushReason(reasonCodes, "runtime_entry_point_not_wired_to_hot_assistant_answer");
|
||||
return {
|
||||
schema_version: exports.ASSISTANT_MCP_DISCOVERY_RUNTIME_ENTRY_POINT_SCHEMA_VERSION,
|
||||
policy_owner: "assistantMcpDiscoveryRuntimeEntryPoint",
|
||||
entry_status: "bridge_executed",
|
||||
hot_runtime_wired: false,
|
||||
discovery_attempted: true,
|
||||
turn_input: turnInput,
|
||||
bridge,
|
||||
reason_codes: reasonCodes
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user