// Row 333 P5 (#1831) background telemetry controls. They run with the bus package suite. // Only fake loopback HTTP, explicit event barriers and virtual existing timers. import test from 'node:test'; import assert from 'node:assert/strict'; import { createHash } from 'node:crypto'; import { mkdirSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; import { startTimeOf } from '../../seat/src/proc.mjs'; import { telemetryFixture } from './p5-telemetry-fixture.mjs'; async function nativeTurn(f) { const model=await f.bus.modelPreflight({business:'demo',role:'coder'}); const keyId=createHash('sha256').update(model.key).digest('hex').slice(0,12),dir=join(f.root,'native-transcript');mkdirSync(dir); const {cap}=f.bus.bindLaunch({business:'demo',role:'coder',run:'held-poll-native',harness:'pi',modelKeyId:keyId,transcript:dir, pid:process.pid,startTime:startTimeOf(process.pid)}); f.bus.broker.request(cap,{verb:'role.claim'}); assert.deepEqual(await f.bus.mayLaunch({business:'demo',instance:'coder',provider:'fixture',model:'fake'}),{allow:true}); const human=f.human(),{id}=f.bus.broker.request(human,{verb:'message.send',args:{to:'coder',body:'native work while optional queue is held'}}); f.bus.broker.request(cap,{verb:'message.receive'}); await f.bus.broker.request(cap,{verb:'usage.begin',args:{turn:id}}); writeFileSync(join(dir,'native.jsonl'),JSON.stringify({type:'message',id:'native',message:{role:'assistant',usage:{input:2,output:1,cacheRead:0,cacheWrite:0}}})+'\n'); await f.bus.broker.request(cap,{verb:'usage.end',args:{turn:id}}); const view=f.bus.broker.request(human,{verb:'usage'}); assert.equal(view.total.input,2);assert.equal(view.byKey[0].modelKeyId,keyId); assert.deepEqual(f.bus.broker.request(cap,{verb:'message.receive'}),[]); } test('configured telemetry stays undrained across startup, native work, ticks and close', async t => { t.mock.timers.enable({ apis: ['Date', 'setInterval'], now: Date.now() }); const f = await telemetryFixture(t, { hold: true }); await f.start(); assert.equal(f.queueCalls(), 0); assert.equal(f.state.queued.length, 1); assert.equal(f.bus.broker.request(f.human(), { verb: 'usage' }).proxy.state, 'unavailable'); await nativeTurn(f); t.mock.timers.tick(5000); await new Promise(setImmediate); assert.equal(f.queueCalls(), 0); assert.equal(f.state.queued.length, 1); await f.close(); });