feat(device-plane): add typed B2 service ping transport

This commit is contained in:
Codex
2026-08-12 22:57:09 +03:00
parent bdb85cb4f7
commit 4b73a15765
24 changed files with 1322 additions and 88 deletions
@@ -68,6 +68,59 @@ test("accepts synthetic discovery and durable message results over Core-initiate
}
});
test("recovers the claimed device from telemetry after a Core restart and completes a typed command", async () => {
const commandRef = "command:11111111-1111-4111-8111-111111111111";
const deviceRef = "device:22222222-2222-4222-8222-222222222222";
const transportMessageRef = "edge-command:33333333-3333-4333-8333-333333333333";
const recorded = [];
let offers = 0;
const pair = await startPair({
commandTransport: "typed-service-ping-v1",
acceptMessage: async (message) => ({
value: acceptanceFor(message, false),
claimedDeviceRef: deviceRef,
}),
offerCommand: async (offeredDeviceRef) => {
assert.equal(offeredDeviceRef, deviceRef);
offers += 1;
return {
commandRef,
commandType: "service.ping",
accessCode: "123456",
transportMessageRef,
};
},
recordCommandStatus: async (status) => recorded.push(status),
});
try {
const receipt = await pair.edge.submitAdapterMessage(adapterMessage());
assert.equal(receipt.status, "accepted");
assert.deepEqual(receipt.commandOffer, {
commandRef,
commandType: "service.ping",
accessCode: "123456",
transportMessageRef,
});
assert.equal(offers, 1);
await pair.edge.submitCommandStatus({
commandRef,
transportMessageRef,
lifecycleState: "acknowledged",
resultCode: "serv_ok",
observedAt: "2026-08-12T17:30:00.000Z",
sessionRef: "session:pilot-1",
adapterProfileRef: "arusnavi.internal.b2.v1",
});
assert.equal(recorded.length, 1);
assert.equal(recorded[0].resultCode, "serv_ok");
assert.equal(pair.core.status().negotiatedCommandTransport, "typed-service-ping-v1");
} finally {
await stopPair(pair);
}
});
test("keeps the channel alive and reconnects without losing idempotency", async () => {
const acceptedMessages = new Map();
const pair = await startPair({
@@ -458,6 +511,7 @@ function createEdgeServer(options = {}) {
deadPeerMs: options.deadPeerMs ?? 150,
acceptanceTimeoutMs: 500,
maxPendingAcceptances: options.maxPendingAcceptances,
commandTransport: options.commandTransport,
});
}
@@ -490,6 +544,9 @@ function createCoreClient(options) {
observeDiscovery: options.observeDiscovery ?? productionDiscoveryObserver(),
acceptMessage: options.acceptMessage ?? (async (message) =>
acceptanceFor(message, false)),
commandTransport: options.commandTransport,
offerCommand: options.offerCommand,
recordCommandStatus: options.recordCommandStatus,
});
}
@@ -536,7 +593,7 @@ function discoverySignal() {
modelProfileRef: "arusnavi.internal.b2.v1",
protocol: "INTERNAL",
observedAt: new Date().toISOString(),
identifier: { kind: "imei", value: "863151070211088" },
identifier: { kind: "imei", value: "860000000000001" },
evidence: {
transport: "tcp",
bytesObserved: 10,
@@ -559,7 +616,7 @@ function adapterMessage(overrides = {}) {
sequence: 1,
observedAt: new Date().toISOString(),
idempotencyKey: `sha256:${"a".repeat(64)}`,
identifier: { kind: "imei", value: "863151070211088" },
identifier: { kind: "imei", value: "860000000000001" },
payloadSchemaRef: "arusnavi.internal.package-metadata.v1",
payload: {
packageNumber: 1,