nsmcp::QuestionService method toolEvidence (protected)

 <instance of nsmcp::QuestionService[i]> toolEvidence handle event

Defined in /usr/local/ns/tcl/nsmcp/question-service.tcl

Parameters:
handle (required)
event (required)

Testcases:
No testcase defined.
Source code:
set result [dict get $event result]
set directory [file join ${:evidenceDirectory} $handle]
set used 0
foreach path [glob -nocomplain -directory $directory *.json] {incr used [file size $path]}
set bytes [string length [encoding convertto utf-8 $result]]
dict set event result {}
dict set event evidenceHandle {}
if {$used+$bytes>${:maxEvidenceBytes}} {
    dict set event result {Evidence omitted: conversation evidence storage limit reached.}
    dict set event truncated true
    return $event
}
set temporary {}
set channel {}
if {[catch {
    if {![file exists $directory]} {file mkdir $directory; file attributes $directory -permissions 0700}
    set id [ns_crypto::randombytes -encoding hex 16]
    set channel [file tempfile temporary [file join $directory pending-]]
    file attributes $temporary -permissions 0600
    fconfigure $channel -encoding utf-8 -translation lf
    puts -nonewline $channel $result
    close $channel
    set channel {}
    file rename $temporary [file join $directory $id.json]
    dict set event evidenceHandle $id
    # Tiny results remain inline for older admin clients and cheap polling.
    if {$bytes<=4096} {dict set event result $result}
} reason]} {
    if {$channel ne ""} {catch {close $channel}}
    if {$temporary ne ""} {catch {file delete $temporary}}
    ns_log warning "nsmcp: question evidence could not be retained: $reason"
    dict set event result {Evidence unavailable: storage failed. The model may still have used this result.}
    dict set event truncated true
}
return $event
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: