feat(foundry): close the operational map data loop

This commit is contained in:
Codex
2026-07-20 20:45:05 +03:00
parent aac44d057f
commit a02c3ff3dd
44 changed files with 4158 additions and 811 deletions
+24
View File
@@ -115,6 +115,30 @@ test("one setup command provisions independent Foundry and Ontology MCP transpor
assert.equal(foundryListResponse.status, 200);
const foundryList = await json(foundryListResponse);
assert.ok(foundryList.result.tools.some((tool) => tool.name === "foundry_create_application"));
const removePinTool = foundryList.result.tools.find((tool) => tool.name === "foundry_remove_map_pin_binding");
assert.deepEqual(removePinTool.inputSchema.required, ["applicationId", "pageId", "bindingId", "idempotencyKey"]);
assert.equal(removePinTool.inputSchema.additionalProperties, false);
const presentationTool = foundryList.result.tools.find((tool) => tool.name === "foundry_upsert_map_presentation_profile");
assert.equal(presentationTool.inputSchema.properties.profile.additionalProperties, false);
assert.ok(presentationTool.inputSchema.properties.profile.required.includes("facets"));
assert.ok(presentationTool.inputSchema.properties.profile.required.includes("target"));
assert.equal(Object.hasOwn(presentationTool.inputSchema.properties.profile.properties, "pin"), false);
assert.equal(presentationTool.inputSchema.properties.profile.properties.label.properties.sizePx.minimum, 8);
assert.equal(Object.hasOwn(presentationTool.inputSchema.properties.profile.properties.label.properties, "fontSizePx"), false);
assert.deepEqual(presentationTool.inputSchema.properties.profile.properties.label.properties.mode.enum, ["subject_id", "attributes", "none"]);
const mapSettingsTool = foundryList.result.tools.find((tool) => tool.name === "foundry_update_map_page_settings");
assert.ok(mapSettingsTool);
assert.equal(mapSettingsTool.inputSchema.properties.settings.additionalProperties, false);
assert.equal(Object.hasOwn(mapSettingsTool.inputSchema.properties.settings.properties, "providerUrl"), false);
const mapViewStateTool = foundryList.result.tools.find((tool) => tool.name === "foundry_save_map_page_view_state");
assert.ok(mapViewStateTool);
const subjectStateSchema = mapViewStateTool.inputSchema.properties.viewState.properties.subjectStates.items;
assert.deepEqual(subjectStateSchema.required, ["bindingId", "visible", "filters", "window"]);
assert.equal(subjectStateSchema.properties.filters.additionalProperties.items.type, "string");
assert.equal(subjectStateSchema.properties.window.properties.rect.additionalProperties, false);
const bindingTool = foundryList.result.tools.find((tool) => tool.name === "foundry_upsert_map_data_product_binding");
assert.equal(bindingTool.inputSchema.properties.binding.properties.displayName.maxLength, 120);
assert.equal(bindingTool.inputSchema.properties.binding.properties.order.maximum, 10000);
const crossTokenResponse = await fetch(redeemed.ontology.mcpUrl, {
method: "POST",