MCPcopy
hub / github.com/coder/mux / appendEvents

Function appendEvents

src/node/services/analytics/etl.ts:167–219  ·  view source on GitHub ↗
(conn: DuckDBConnection, events: IngestEvent[])

Source from the content-addressed store, hash-verified

165}
166
167export async function appendEvents(conn: DuckDBConnection, events: IngestEvent[]): Promise<void> {
168 assert(INSERT_EVENT_SQL.length > 0, "appendEvents: expected INSERT_EVENT_SQL to remain defined");
169
170 if (events.length === 0) {
171 return;
172 }
173
174 const appender = await conn.createAppender("events");
175
176 try {
177 assert(
178 appender instanceof DuckDBAppender,
179 "appendEvents: expected createAppender to return a DuckDBAppender"
180 );
181
182 for (const event of events) {
183 const row = event.row;
184 appendVarcharOrNull(appender, row.workspace_id);
185 appendVarcharOrNull(appender, row.project_path);
186 appendVarcharOrNull(appender, row.project_name);
187 appendVarcharOrNull(appender, row.workspace_name);
188 appendVarcharOrNull(appender, row.parent_workspace_id);
189 appendVarcharOrNull(appender, row.agent_id);
190 appendBigIntOrNull(appender, row.timestamp);
191 appendDateOrNull(appender, event.date);
192 appendVarcharOrNull(appender, row.model);
193 appendVarcharOrNull(appender, row.thinking_level);
194 appender.appendInteger(row.input_tokens);
195 appender.appendInteger(row.output_tokens);
196 appender.appendInteger(row.reasoning_tokens);
197 appender.appendInteger(row.cached_tokens);
198 appender.appendInteger(row.cache_create_tokens);
199 appender.appendDouble(row.input_cost_usd);
200 appender.appendDouble(row.output_cost_usd);
201 appender.appendDouble(row.reasoning_cost_usd);
202 appender.appendDouble(row.cached_cost_usd);
203 appender.appendDouble(row.total_cost_usd);
204 appendDoubleOrNull(appender, row.duration_ms);
205 appendDoubleOrNull(appender, row.ttft_ms);
206 appendDoubleOrNull(appender, row.streaming_ms);
207 appendDoubleOrNull(appender, row.tool_execution_ms);
208 appendDoubleOrNull(appender, row.output_tps);
209 appendIntegerOrNull(appender, row.response_index);
210 appender.appendBoolean(row.is_sub_agent);
211 appendVarcharOrNull(appender, row.tool_name);
212 appender.endRow();
213 }
214
215 appender.flushSync();
216 } finally {
217 appender.closeSync();
218 }
219}
220
221const INSERT_DELEGATION_ROLLUP_SQL = `
222INSERT OR REPLACE INTO delegation_rollups (

Callers 2

etl.test.tsFile · 0.90
rebuildAllFunction · 0.85

Calls 6

appendVarcharOrNullFunction · 0.85
appendBigIntOrNullFunction · 0.85
appendDateOrNullFunction · 0.85
appendDoubleOrNullFunction · 0.85
appendIntegerOrNullFunction · 0.85
assertFunction · 0.50

Tested by

no test coverage detected