(conn: DuckDBConnection, events: IngestEvent[])
| 165 | } |
| 166 | |
| 167 | export 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 | |
| 221 | const INSERT_DELEGATION_ROLLUP_SQL = ` |
| 222 | INSERT OR REPLACE INTO delegation_rollups ( |
no test coverage detected