ARCH: довести catalog drilldown от metadata surface до planner chain
This commit is contained in:
@@ -296,6 +296,8 @@ function tagSetFromMetadataSurfaceInput(input) {
|
||||
}
|
||||
if (routeFamily === "catalog_drilldown" || recommendedPrimitive === "drilldown_related_objects") {
|
||||
tags.add("drilldown");
|
||||
tags.add("metadata");
|
||||
tags.add("surface_inspection");
|
||||
}
|
||||
for (const value of surfaceValues) {
|
||||
if (metadataSurfaceSuggestsDocument(value)) {
|
||||
@@ -306,6 +308,8 @@ function tagSetFromMetadataSurfaceInput(input) {
|
||||
}
|
||||
if (metadataSurfaceSuggestsCatalog(value)) {
|
||||
tags.add("drilldown");
|
||||
tags.add("metadata");
|
||||
tags.add("surface_inspection");
|
||||
}
|
||||
}
|
||||
const requiredAxisSet = toStringSet(input.required_axes ?? []);
|
||||
@@ -328,6 +332,15 @@ function factFamiliesFromMetadataSurfaceInput(input) {
|
||||
if (routeFamily === "movement_evidence") {
|
||||
families.add("movement_evidence");
|
||||
}
|
||||
if (routeFamily === "catalog_drilldown") {
|
||||
families.add("schema_surface");
|
||||
}
|
||||
for (const value of [input.selected_entity_set ?? "", ...(input.selected_surface_objects ?? [])]) {
|
||||
if (metadataSurfaceSuggestsCatalog(value)) {
|
||||
families.add("schema_surface");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return families;
|
||||
}
|
||||
function searchAssistantMcpCatalogPrimitivesByDecompositionCandidates(input) {
|
||||
@@ -443,6 +456,12 @@ function searchAssistantMcpCatalogPrimitivesByMetadataSurface(input) {
|
||||
}
|
||||
const hasCompatibleAxisGroup = requiredAxisSet.size > 0 && hasAnyAxisGroup(requiredAxisSet, contract.required_axes_any_of);
|
||||
const axisOverlap = requiredAxisSet.size > 0 ? countAxisOverlap(requiredAxisSet, contract.required_axes_any_of) : 0;
|
||||
if (contract.primitive_id === "probe_coverage" && !desiredTags.has("coverage")) {
|
||||
continue;
|
||||
}
|
||||
if (contract.primitive_id === "drilldown_related_objects" && !hasCompatibleAxisGroup && axisOverlap <= 0) {
|
||||
continue;
|
||||
}
|
||||
let score = 0;
|
||||
if (primitiveRecommended) {
|
||||
score += 6;
|
||||
|
||||
+29
-1
@@ -342,7 +342,8 @@ function isValueFlowPilotEligible(planner) {
|
||||
}
|
||||
function isMetadataPilotEligible(planner) {
|
||||
if (planner.selected_chain_id === "metadata_inspection" ||
|
||||
planner.selected_chain_id === "metadata_lane_clarification") {
|
||||
planner.selected_chain_id === "metadata_lane_clarification" ||
|
||||
planner.selected_chain_id === "catalog_drilldown") {
|
||||
return true;
|
||||
}
|
||||
const meaning = planner.discovery_plan.turn_meaning_ref;
|
||||
@@ -380,6 +381,23 @@ function metadataScopeForPlanner(planner) {
|
||||
if (entityCandidate) {
|
||||
return entityCandidate;
|
||||
}
|
||||
if (planner.selected_chain_id === "catalog_drilldown") {
|
||||
const surface = planner.metadata_surface_ref;
|
||||
const scopeCandidate = [
|
||||
...(surface?.selected_surface_objects ?? []),
|
||||
surface?.selected_entity_set ?? ""
|
||||
]
|
||||
.map((value) => toNonEmptyString(value))
|
||||
.filter((value) => Boolean(value))
|
||||
.map((value) => {
|
||||
const parts = value.split(".").map((item) => item.trim()).filter((item) => item.length > 0);
|
||||
return parts.length > 0 ? parts[parts.length - 1] ?? value : value;
|
||||
})
|
||||
.find((value) => value.length > 0);
|
||||
if (scopeCandidate) {
|
||||
return scopeCandidate;
|
||||
}
|
||||
}
|
||||
const meaning = planner.discovery_plan.turn_meaning_ref;
|
||||
const combined = `${meaning?.asked_domain_family ?? ""} ${meaning?.asked_action_family ?? ""} ${meaning?.unsupported_but_understood_family ?? ""}`
|
||||
.toLowerCase()
|
||||
@@ -396,6 +414,12 @@ function metadataScopeForPlanner(planner) {
|
||||
return null;
|
||||
}
|
||||
function metadataTypesForPlanner(planner) {
|
||||
if (planner.selected_chain_id === "catalog_drilldown") {
|
||||
const selectedEntitySet = toNonEmptyString(planner.metadata_surface_ref?.selected_entity_set);
|
||||
if (selectedEntitySet) {
|
||||
return [selectedEntitySet];
|
||||
}
|
||||
}
|
||||
const meaning = planner.discovery_plan.turn_meaning_ref;
|
||||
const action = String(meaning?.asked_action_family ?? "").toLowerCase();
|
||||
if (action === "inspect_registers") {
|
||||
@@ -1773,6 +1797,7 @@ function buildEmptyEvidence(planner, dryRun, probeResults, reason) {
|
||||
}
|
||||
function pilotScopeForPlanner(planner) {
|
||||
switch (planner.selected_chain_id) {
|
||||
case "catalog_drilldown":
|
||||
case "metadata_lane_clarification":
|
||||
case "metadata_inspection":
|
||||
return "metadata_inspection_v1";
|
||||
@@ -1903,6 +1928,9 @@ async function executeAssistantMcpDiscoveryPilot(planner, deps = DEFAULT_DEPS) {
|
||||
let metadataResult = null;
|
||||
const metadataScope = metadataScopeForPlanner(planner);
|
||||
const requestedMetaTypes = metadataTypesForPlanner(planner);
|
||||
if (planner.selected_chain_id === "catalog_drilldown" && metadataScope) {
|
||||
pushReason(reasonCodes, "pilot_catalog_drilldown_metadata_scope_seeded_from_surface_ref");
|
||||
}
|
||||
for (const step of dryRun.execution_steps) {
|
||||
if (step.primitive_id !== "inspect_1c_metadata") {
|
||||
skippedPrimitives.push(step.primitive_id);
|
||||
|
||||
@@ -246,8 +246,13 @@ function routeFamilyFromThinMetadataSurfaceInput(input) {
|
||||
if (graphFactFamily === "movement_evidence" || includesAny(combined, ["movement", "movements", "list_movements", "bank_operations"])) {
|
||||
return surface.downstream_route_family === "movement_evidence" ? "movement_evidence" : null;
|
||||
}
|
||||
if (graphFactFamily === "schema_surface" || includesAny(combined, ["catalog", "directory", "inspect_catalog"])) {
|
||||
return surface.downstream_route_family === "catalog_drilldown" ? "catalog_drilldown" : null;
|
||||
}
|
||||
if (!graphFactFamily && !domain && !action) {
|
||||
if (surface.downstream_route_family === "document_evidence" || surface.downstream_route_family === "movement_evidence") {
|
||||
if (surface.downstream_route_family === "document_evidence" ||
|
||||
surface.downstream_route_family === "movement_evidence" ||
|
||||
surface.downstream_route_family === "catalog_drilldown") {
|
||||
return surface.downstream_route_family;
|
||||
}
|
||||
}
|
||||
@@ -321,6 +326,25 @@ function recipeFor(input) {
|
||||
extraReasons: primitiveSelection.reasonCodes
|
||||
};
|
||||
}
|
||||
if (thinSurfaceRouteFamily === "catalog_drilldown") {
|
||||
pushUnique(axes, "metadata_scope");
|
||||
const primitiveSelection = selectPrimitivesFromGraphAndCatalog({
|
||||
dataNeedGraph,
|
||||
fallbackPrimitives: ["inspect_1c_metadata"],
|
||||
requiredAxes: axes,
|
||||
metadataSurface: input.metadataSurface,
|
||||
actionFamily: action
|
||||
});
|
||||
return {
|
||||
semanticDataNeed: "catalog drilldown metadata evidence",
|
||||
chainId: "catalog_drilldown",
|
||||
chainSummary: "Drill deeper into the confirmed catalog-oriented metadata surface, inspect related metadata objects, and keep the next safe lane grounded in checked schema evidence.",
|
||||
primitives: primitiveSelection.primitives,
|
||||
axes,
|
||||
reason: "planner_selected_catalog_drilldown_from_confirmed_metadata_surface_ref",
|
||||
extraReasons: primitiveSelection.reasonCodes
|
||||
};
|
||||
}
|
||||
if (graphFactFamily === "value_flow") {
|
||||
if (dataNeedGraph?.comparison_need === "incoming_vs_outgoing" && !hasSubjectCandidates(dataNeedGraph)) {
|
||||
pushUnique(axes, "amount");
|
||||
|
||||
+29
-10
@@ -788,6 +788,15 @@ function buildAssistantMcpDiscoveryTurnInput(input) {
|
||||
!metadataDocumentHintSignal &&
|
||||
!metadataMovementHintSignal &&
|
||||
hasMetadataDownstreamContinuationSignal(rawText));
|
||||
const metadataGroundedCatalogLaneContinuationApplicable = Boolean(followupSeed.pilotScope === "metadata_inspection_v1" &&
|
||||
followupSeed.metadataRouteFamily === "catalog_drilldown" &&
|
||||
!followupSeed.metadataAmbiguityDetected &&
|
||||
!rawLifecycleSignal &&
|
||||
!rawValueFlowSignal &&
|
||||
!rawMetadataSignal &&
|
||||
!metadataDocumentHintSignal &&
|
||||
!metadataMovementHintSignal &&
|
||||
hasMetadataDownstreamContinuationSignal(rawText));
|
||||
const metadataAmbiguityCollapsedDocumentLaneContinuationApplicable = Boolean(followupSeed.pilotScope === "metadata_inspection_v1" &&
|
||||
followupSeed.metadataAmbiguityDetected &&
|
||||
metadataAmbiguityCollapsesToDocumentLane(followupSeed.metadataAmbiguityEntitySets) &&
|
||||
@@ -838,34 +847,41 @@ function buildAssistantMcpDiscoveryTurnInput(input) {
|
||||
const effectiveMetadataFollowupSeedApplicable = metadataFollowupSeedApplicable &&
|
||||
!metadataAmbiguityLaneClarificationApplicable &&
|
||||
!metadataGroundedDocumentLaneApplicable &&
|
||||
!metadataGroundedMovementLaneApplicable;
|
||||
!metadataGroundedMovementLaneApplicable &&
|
||||
!metadataGroundedCatalogLaneContinuationApplicable;
|
||||
const seededDomain = metadataAmbiguityLaneClarificationApplicable
|
||||
? "metadata"
|
||||
: metadataGroundedDocumentLaneApplicable
|
||||
? "documents"
|
||||
: metadataGroundedMovementLaneApplicable
|
||||
? "movements"
|
||||
: followupDiscoverySeedApplicable || effectiveMetadataFollowupSeedApplicable
|
||||
? followupSeed.domain
|
||||
: null;
|
||||
: metadataGroundedCatalogLaneContinuationApplicable
|
||||
? "metadata"
|
||||
: followupDiscoverySeedApplicable || effectiveMetadataFollowupSeedApplicable
|
||||
? followupSeed.domain
|
||||
: null;
|
||||
const seededAction = metadataAmbiguityLaneClarificationApplicable
|
||||
? "resolve_next_lane"
|
||||
: metadataGroundedDocumentLaneApplicable
|
||||
? "list_documents"
|
||||
: metadataGroundedMovementLaneApplicable
|
||||
? "list_movements"
|
||||
: followupDiscoverySeedApplicable || effectiveMetadataFollowupSeedApplicable
|
||||
? followupSeed.action
|
||||
: null;
|
||||
: metadataGroundedCatalogLaneContinuationApplicable
|
||||
? "inspect_catalog"
|
||||
: followupDiscoverySeedApplicable || effectiveMetadataFollowupSeedApplicable
|
||||
? followupSeed.action
|
||||
: null;
|
||||
const seededUnsupported = metadataAmbiguityLaneClarificationApplicable
|
||||
? "metadata_lane_choice_clarification"
|
||||
: metadataGroundedDocumentLaneApplicable
|
||||
? "document_evidence"
|
||||
: metadataGroundedMovementLaneApplicable
|
||||
? "movement_evidence"
|
||||
: followupDiscoverySeedApplicable || effectiveMetadataFollowupSeedApplicable
|
||||
? followupSeed.unsupported
|
||||
: null;
|
||||
: metadataGroundedCatalogLaneContinuationApplicable
|
||||
? "schema_surface"
|
||||
: followupDiscoverySeedApplicable || effectiveMetadataFollowupSeedApplicable
|
||||
? followupSeed.unsupported
|
||||
: null;
|
||||
const lifecycleSignal = rawLifecycleSignal || seededDomain === "counterparty_lifecycle";
|
||||
const bidirectionalValueFlowSignal = !lifecycleSignal &&
|
||||
(rawBidirectionalValueFlowSignal || seededAction === "net_value_flow");
|
||||
@@ -1180,6 +1196,9 @@ function buildAssistantMcpDiscoveryTurnInput(input) {
|
||||
if (metadataGroundedLaneContinuationApplicable) {
|
||||
pushReason(reasonCodes, "mcp_discovery_metadata_grounded_lane_continuation");
|
||||
}
|
||||
if (metadataGroundedCatalogLaneContinuationApplicable) {
|
||||
pushReason(reasonCodes, "mcp_discovery_metadata_grounded_catalog_continuation");
|
||||
}
|
||||
if (metadataAmbiguityCollapsedDocumentLaneContinuationApplicable) {
|
||||
pushReason(reasonCodes, "mcp_discovery_metadata_ambiguity_collapsed_to_document_lane");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user