Telemetry stream: GET /api/telemetry + MCP get_telemetry (#16)
CI / build + unit (push) Successful in 21s
CI / build + unit (push) Successful in 21s
This commit was merged in pull request #16.
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
kamilNodeInfo,
|
||||
nodeInfoFrame,
|
||||
startBridge,
|
||||
telemetryPacketFrame,
|
||||
waitFor,
|
||||
} from './fake-bridge.js';
|
||||
import { createMeshMcpServer } from './mcp.controller.js';
|
||||
@@ -64,7 +65,7 @@ async function connectMcp(svc: MeshService): Promise<{
|
||||
}
|
||||
|
||||
describe('MCP server tools', () => {
|
||||
it('lists all seven tools with descriptions and input schemas', async () => {
|
||||
it('lists all eight tools with descriptions and input schemas', async () => {
|
||||
const env = await connectedService();
|
||||
try {
|
||||
const mcp = await connectMcp(env.svc);
|
||||
@@ -74,6 +75,7 @@ describe('MCP server tools', () => {
|
||||
'device_info',
|
||||
'get_messages',
|
||||
'get_node',
|
||||
'get_telemetry',
|
||||
'list_channels',
|
||||
'list_nodes',
|
||||
'mesh_status',
|
||||
@@ -263,6 +265,25 @@ describe('MCP server tools', () => {
|
||||
),
|
||||
) as { dir: string; to?: number }[];
|
||||
expect(msgs[0]).toMatchObject({ dir: 'tx', to: BROADCAST_ADDR }); // newest first
|
||||
|
||||
env.sockets[0].write(
|
||||
telemetryPacketFrame(KAMIL_NUM, {
|
||||
case: 'deviceMetrics',
|
||||
value: { batteryLevel: 87 },
|
||||
}),
|
||||
);
|
||||
await waitFor(() => env.svc.telemetry().length === 1);
|
||||
const tel = JSON.parse(
|
||||
toolText(
|
||||
await mcp.client.callTool({ name: 'get_telemetry', arguments: {} }),
|
||||
),
|
||||
) as { from: number; kind: string; data: object }[];
|
||||
expect(tel).toHaveLength(1);
|
||||
expect(tel[0]).toMatchObject({
|
||||
from: KAMIL_NUM,
|
||||
kind: 'deviceMetrics',
|
||||
});
|
||||
expect(tel[0].data).toEqual({ batteryLevel: 87 });
|
||||
} finally {
|
||||
await mcp.close();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user