nsmcp::QuestionService object method setup (public)

 nsmcp::QuestionService[i] setup moduleDirectory

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

Parameters:
moduleDirectory (required)

Testcases:
No testcase defined.
Source code:
if {![ns_config -bool ${:section} enableQuestions false]} {return}
if {![nsf::object::exists ::nsmcp::tools]} {error "Questions require the configured nsmcp HTTP endpoint"}
set backend [ns_config ${:section} questionBackend codex]
if {$backend ni {codex chat-completions}} {error "Unsupported question backend: $backend"}
set lifetime [ns_baseunit -time [ns_config ${:section} questionLifetime 1h]]
if {$lifetime < 1} {error "questionLifetime must be positive"}
set maxBytes [ns_baseunit -size [ns_config ${:section} questionMaxBytes 2MiB]]
set maxEvidence [ns_baseunit -size [ns_config ${:section} questionMaxEvidenceBytes 16MiB]]
if {$maxBytes<65536 || $maxEvidence<1024} {error "questionMaxBytes requires at least 64KiB; questionMaxEvidenceBytes requires at least 1KiB"}
set evidenceDirectory [ns_config ${:section} questionEvidenceDirectory [file join [ns_info home] data nsmcp-question-evidence [ns_info server]]]
if {[file pathtype $evidenceDirectory] ne "absolute"} {error "questionEvidenceDirectory must be absolute"}
:createBackend $backend $moduleDirectory ::nsmcp::questionBackend
set backends [dict create $backend ::nsmcp::questionBackend]
set errors {}
foreach candidate {codex chat-completions} {
    if {$candidate eq $backend} {continue}
    set object ::nsmcp::questionBackend_[string map {- _} $candidate]
    if {[catch {:createBackend $candidate $moduleDirectory $object} reason]} {
        if {[nsf::object::exists $object]} {$object destroy}
        dict set errors $candidate [string range $reason 0 1023]
    } else {
        dict set backends $candidate $object
    }
}
:create ::nsmcp::questions -backend ::nsmcp::questionBackend  -backends $backends -backendErrors $errors  -store nsmcp:questions:[ns_info server] -queue nsmcp-questions-[ns_info server]  -lifetime $lifetime -maxBytes $maxBytes -maxEvidenceBytes $maxEvidence -evidenceDirectory $evidenceDirectory  -maxConversations [ns_config -int -min 1 ${:section} questionMaxConversations 20]  -maxTurns [ns_config -int -min 1 ${:section} questionMaxTurns 20]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: