feat(engine): register MCP profiles and provider transitions
This commit is contained in:
@@ -31,9 +31,9 @@ const positionsPlan = compileL2ExecutionPlan(
|
||||
);
|
||||
|
||||
assert.equal(positionsPlan.schemaVersion, L2_EXECUTION_PLAN_SCHEMA_VERSION);
|
||||
assert.equal(L2_EXECUTION_PLAN_COMPILER_VERSION, "1.4.0");
|
||||
assert.deepEqual(L2_EXECUTION_PLAN_SUPPORTED_COMPILER_VERSIONS, ["1.1.0", "1.2.0", "1.3.0", "1.4.0"]);
|
||||
assert.equal(positionsPlan.compilerVersion, "1.4.0");
|
||||
assert.equal(L2_EXECUTION_PLAN_COMPILER_VERSION, "1.5.0");
|
||||
assert.deepEqual(L2_EXECUTION_PLAN_SUPPORTED_COMPILER_VERSIONS, ["1.1.0", "1.2.0", "1.3.0", "1.4.0", "1.5.0"]);
|
||||
assert.equal(positionsPlan.compilerVersion, "1.5.0");
|
||||
assert.deepEqual(validateL2ExecutionPlan(positionsPlan), { ok: true, errors: [] });
|
||||
assert.match(positionsPlan.executionPlanDigest, /^sha256:[a-f0-9]{64}$/);
|
||||
assert.match(positionsPlan.artifacts.packageDigest, /^sha256:[a-f0-9]{64}$/);
|
||||
|
||||
@@ -25,6 +25,7 @@ import { geliosProviderPackageV9 } from "../providers/gelios/v9/index.mjs";
|
||||
import { geliosProviderPackageV10 } from "../providers/gelios/v10/index.mjs";
|
||||
import { geliosProviderPackageV11 } from "../providers/gelios/v11/index.mjs";
|
||||
import { geliosProviderPackageV12 } from "../providers/gelios/v12/index.mjs";
|
||||
import { geliosProviderPackageV13 } from "../providers/gelios/v13/index.mjs";
|
||||
import { normalizeDataProductDefinition } from "../../../services/external-data-plane/src/data-product-policy.mjs";
|
||||
|
||||
const expectedFields = [
|
||||
@@ -55,6 +56,7 @@ assert.deepEqual(validateProviderPackage(geliosProviderPackageV9), { ok: true, e
|
||||
assert.deepEqual(validateProviderPackage(geliosProviderPackageV10), { ok: true, errors: [] });
|
||||
assert.deepEqual(validateProviderPackage(geliosProviderPackageV11), { ok: true, errors: [] });
|
||||
assert.deepEqual(validateProviderPackage(geliosProviderPackageV12), { ok: true, errors: [] });
|
||||
assert.deepEqual(validateProviderPackage(geliosProviderPackageV13), { ok: true, errors: [] });
|
||||
assert.equal(geliosProviderPackageV9.id, "gelios.provider.v9");
|
||||
assert.equal(geliosProviderPackageV9.version, "9.0.0");
|
||||
assert.equal(geliosProviderPackageV10.id, "gelios.provider.v10");
|
||||
@@ -62,7 +64,9 @@ assert.equal(geliosProviderPackageV10.version, "10.0.0");
|
||||
assert.equal(geliosProviderPackageV11.id, "gelios.provider.v11");
|
||||
assert.equal(geliosProviderPackageV11.version, "11.0.0");
|
||||
assert.equal(geliosProviderPackageV12.id, "gelios.provider.v12");
|
||||
assert.equal(geliosProviderPackageV12.version, "12.0.0");
|
||||
assert.equal(geliosProviderPackageV12.version, "12.0.1");
|
||||
assert.equal(geliosProviderPackageV13.id, "gelios.provider.v13");
|
||||
assert.equal(geliosProviderPackageV13.version, "13.0.0");
|
||||
assert.equal(geliosProviderPackageV8.id, "gelios.provider.v8");
|
||||
|
||||
const profileProduct = geliosProviderPackageV8.dataProducts.find((product) => product.id === "fleet.units.profile.current.v1");
|
||||
@@ -127,13 +131,56 @@ assert.deepEqual(identityCapability.request.query, {
|
||||
const identityCapabilityV12 = geliosProviderPackageV12.capabilities.find(
|
||||
(capability) => capability.id === "gelios.units.identity.read",
|
||||
);
|
||||
const unitsCapabilityV12 = geliosProviderPackageV12.capabilities.find(
|
||||
(capability) => capability.id === "gelios.units.current.read",
|
||||
);
|
||||
assert.equal(identityCapability.request.response.collectionPaths.includes("items"), false);
|
||||
assert.deepEqual(identityCapabilityV12.request.response.collectionPaths, [
|
||||
"items",
|
||||
...identityCapability.request.response.collectionPaths,
|
||||
]);
|
||||
assert.deepEqual(unitsCapabilityV12.request.response.collectionPaths, [
|
||||
"items",
|
||||
...geliosProviderPackageV11.capabilities.find(
|
||||
(capability) => capability.id === "gelios.units.current.read",
|
||||
).request.response.collectionPaths,
|
||||
]);
|
||||
assert.equal(Object.isFrozen(geliosProviderPackageV12), true);
|
||||
assert.equal(Object.isFrozen(identityCapabilityV12.request.response.collectionPaths), true);
|
||||
assert.equal(Object.isFrozen(unitsCapabilityV12.request.response.collectionPaths), true);
|
||||
const directoryCapabilityV13 = geliosProviderPackageV13.capabilities.find(
|
||||
(capability) => capability.id === "gelios.users.directory.read",
|
||||
);
|
||||
assert.equal(directoryCapabilityV13.request.path, "/api/v1/users");
|
||||
assert.deepEqual(directoryCapabilityV13.request.response.collectionPaths, ["items"]);
|
||||
assert.equal(directoryCapabilityV13.request.response.pagination.maxItems, 5000);
|
||||
const contactsProductV2 = geliosProviderPackageV13.dataProducts.find(
|
||||
(product) => product.id === "fleet.units.contacts.current.v2",
|
||||
);
|
||||
const registeredContactsProductV2 = JSON.parse(await readFile(new URL(
|
||||
"../../../services/external-data-plane/definitions/fleet.units.contacts.current.v2.json",
|
||||
import.meta.url,
|
||||
), "utf8"));
|
||||
assert.deepEqual(contactsProductV2, registeredContactsProductV2);
|
||||
const contactsProfileV2 = geliosProviderPackageV13.collectionProfiles.find(
|
||||
(profile) => profile.id === "gelios.units.contacts.warm.v2",
|
||||
);
|
||||
assert.deepEqual(contactsProfileV2.capabilityIds, [
|
||||
"gelios.units.identity.read",
|
||||
"gelios.users.directory.read",
|
||||
]);
|
||||
const contactsMappingV2 = geliosProviderPackageV13.mappingContracts.find(
|
||||
(mapping) => mapping.id === "gelios.units.to.fleet.units.contacts.current.v2",
|
||||
);
|
||||
assert.equal(
|
||||
contactsMappingV2.derivations.available_user_emails.kind,
|
||||
"bounded_response_lookup",
|
||||
);
|
||||
assert.equal(
|
||||
contactsMappingV2.derivations.provider_creator_email.parameters.resultMode,
|
||||
"first",
|
||||
);
|
||||
assert.equal(Object.isFrozen(geliosProviderPackageV13), true);
|
||||
const identityMapping = geliosProviderPackageV11.mappingContracts.find(
|
||||
(mapping) => mapping.id === "gelios.units.to.fleet.units.identity.current.v1",
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user