This procedure is defined in the server but not documented via ad_proc or proc_doc and may be intended as a private interface.
The procedure is defined as:
proc ::nsmcp::questionLogJson {event record last} {
set fields [list event string $event timestamp number [clock seconds]]
foreach key {server principal backend} {lappend fields $key string [dict get $record $key]}
foreach key {conversation id question peerAddress peerSource status requestedModel model} {
if {[dict exists $last $key]} {lappend fields $key string [dict get $last $key]}
}
if {[dict exists $last submittedAt]} {lappend fields submittedAt number [dict get $last submittedAt]}
if {$event eq "finished"} {
if {[dict exists $last submittedMs]} {
lappend fields elapsedMs number [expr {max(0,[clock milliseconds]-[dict get $last submittedMs])}]
}
lappend fields toolCalls number [llength [dict get $last tools]] monetaryCost null {} usageAvailable boolean [expr {[dict exists $last usage inputTokens] || [dict exists $last usage outputTokens] || [dict exists $last usage totalTokens]}]
if {[dict exists $last questionUsage]} {
set usage {}
dict for {key value} [dict get $last questionUsage] {
if {$key in {scope source reason}} {lappend usage $key string $value} elseif {$key eq "available"} {lappend usage $key boolean $value} else {lappend usage $key number $value}
}
lappend usage complete boolean [expr {[dict get $last status] eq "complete"
&& [dict get $last questionUsage available]
&& [dict exists $last questionUsage inputTokens]
&& [dict exists $last questionUsage outputTokens]
&& [dict exists $last questionUsage totalTokens]}]
lappend fields questionUsage object $usage
}
if {[dict exists $last usage]} {
set usage {}
dict for {key value} [dict get $last usage] {
if {$key in {scope source}} {lappend usage $key string $value} elseif {$key eq "complete"} {lappend usage $key boolean $value} else {lappend usage $key number $value}
}
lappend fields usage object $usage
}
}
return [ns_json value -- [list {} object $fields]]
}