UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 1.21 kB
import{createDevDiagnosticDump}from"./diagnostic-dump.js";import{createDevDiagnosticSink}from"./diagnostic-sink.js";import{setLogRecordSubscriber}from"#internal/logging.js";async function createDevDiagnostics(n,r={}){let i=await createDevDiagnosticSink(n);return new DevDiagnosticsRecorder(i,createDevDiagnosticDump(n,i.path,r))}var DevDiagnosticsRecorder=class{displayPath;#e;#t;#n=0;#r=0;#i=0;#a=new Map;#o=new Set;constructor(e,t){this.displayPath=e.displayPath,this.#e=e,this.#t=t}append(e){this.#e.append(e)}recordPrompt(){this.#n+=1}recordStepUsage(e){this.#r+=e?.inputTokens??0,this.#i+=e?.outputTokens??0}recordToolCall(e){this.#a.set(e,(this.#a.get(e)??0)+1)}recordSubagentDispatch(e){this.#o.add(e)}reportStats(){let e={prompts:this.#n,inputTokens:this.#r,outputTokens:this.#i,toolCalls:Object.fromEntries(this.#a),subagents:this.#o.size};this.#t.updateSessionStats(e)}subscribeLogRecords(e){setLogRecordSubscriber(t=>{let n={source:`log`,level:t.level,namespace:t.namespace,message:t.message};this.#e.append(t.fields===void 0?n:{...n,fields:t.fields}),e(t)})}unsubscribeLogRecords(){setLogRecordSubscriber(void 0)}async close(){await this.#t.close(),await this.#e.close()}};export{createDevDiagnostics};