feat(provider): add Gelios unit profile product

This commit is contained in:
Codex
2026-07-22 23:36:57 +03:00
parent 2def90fa33
commit e843bbda66
10 changed files with 486 additions and 11 deletions
@@ -1,8 +1,13 @@
import assert from "node:assert/strict";
import { validateProviderCapabilityCatalog } from "../src/index.mjs";
import { geliosCapabilityCatalogV1, geliosProviderPackageV7 } from "../providers/gelios/index.mjs";
import {
geliosCapabilityCatalogV1,
geliosCapabilityCatalogV2,
geliosProviderPackageV8,
} from "../providers/gelios/index.mjs";
assert.deepEqual(validateProviderCapabilityCatalog(geliosCapabilityCatalogV1), { ok: true, errors: [] });
assert.deepEqual(validateProviderCapabilityCatalog(geliosCapabilityCatalogV2), { ok: true, errors: [] });
const expectedUnitRoots = [
"activatedAt", "availableToUsers", "blockTime", "commands", "counters", "createdAt",
@@ -20,10 +25,10 @@ const expectedIncludeFlags = [
];
assert.deepEqual(geliosCapabilityCatalogV1.queryFlags.map(({ id }) => id), expectedIncludeFlags);
const unitCapability = geliosProviderPackageV7.capabilities.find(({ id }) => id === "gelios.units.current.read");
const unitCapability = geliosProviderPackageV8.capabilities.find(({ id }) => id === "gelios.units.current.read");
assert.ok(unitCapability);
for (const enabledFlag of Object.keys(unitCapability.request.query)) {
assert.ok(expectedIncludeFlags.includes(enabledFlag), `v7 query flag is missing from the capability catalog: ${enabledFlag}`);
assert.ok(expectedIncludeFlags.includes(enabledFlag), `provider query flag is missing from the capability catalog: ${enabledFlag}`);
}
assert.deepEqual(
@@ -34,6 +39,21 @@ assert.equal(
geliosCapabilityCatalogV1.capabilities.filter(({ classification }) => classification === "control").every(({ status }) => status === "disabled"),
true,
);
assert.deepEqual(
["gelios.unit.identity", "gelios.unit.equipment", "gelios.unit.trip_settings"].map((id) => {
const family = geliosCapabilityCatalogV2.dataFamilies.find((item) => item.id === id);
return { id, status: family.status, dataProductIds: family.dataProductIds };
}),
[
{ id: "gelios.unit.identity", status: "implemented", dataProductIds: ["fleet.units.profile.current.v1"] },
{ id: "gelios.unit.equipment", status: "implemented", dataProductIds: ["fleet.units.profile.current.v1"] },
{ id: "gelios.unit.trip_settings", status: "implemented", dataProductIds: ["fleet.units.profile.current.v1"] },
],
);
assert.equal(
geliosCapabilityCatalogV2.dataFamilies.find(({ id }) => id === "gelios.unit.sensor_definitions").status,
"planned",
);
const restrictedPublish = structuredClone(geliosCapabilityCatalogV1);
restrictedPublish.dataFamilies.find(({ id }) => id === "gelios.unit.device_identifiers").disposition = "publish";