daemon: verbose pool logging, DAEMON_POOL for run_job
Store resource pool in OnceLock so run_job can pass it to Daemon::run_job for pool state logging. Verbose logging enabled via POC_MEMORY_VERBOSE=1 env var. LLM backend selection and spawn-site pool state now use verbose log level to keep daemon.log clean in production. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
49f72cdac3
commit
0944ecc43f
2 changed files with 21 additions and 5 deletions
|
|
@ -37,11 +37,19 @@ pub fn log_event_pub(job: &str, event: &str, detail: &str) {
|
|||
log_event(job, event, detail);
|
||||
}
|
||||
|
||||
/// Verbose log — only written if verbose logging is enabled.
|
||||
pub fn log_verbose(job: &str, event: &str, detail: &str) {
|
||||
jobkit::daemon::event_log::verbose(&crate::config::get().data_dir, job, event, detail);
|
||||
}
|
||||
|
||||
// --- Job functions (direct, no subprocess) ---
|
||||
|
||||
static DAEMON_POOL: std::sync::OnceLock<Arc<jobkit::ResourcePool>> = std::sync::OnceLock::new();
|
||||
|
||||
/// Run a named job with logging, progress reporting, and error mapping.
|
||||
fn run_job(ctx: &ExecutionContext, name: &str, f: impl FnOnce() -> Result<(), String>) -> Result<(), TaskError> {
|
||||
jobkit::daemon::Daemon::run_job(&crate::config::get().data_dir, ctx, name, f)
|
||||
let pool = DAEMON_POOL.get().map(|p| p.as_ref());
|
||||
jobkit::daemon::Daemon::run_job(&crate::config::get().data_dir, ctx, name, pool, f)
|
||||
}
|
||||
|
||||
// experience_mine and fact_mine removed — observation.agent handles all transcript mining
|
||||
|
|
@ -635,9 +643,15 @@ pub fn run_daemon() -> Result<(), String> {
|
|||
|
||||
let choir = Arc::clone(&daemon.choir);
|
||||
let llm = Arc::clone(&daemon.resource);
|
||||
let _ = DAEMON_POOL.set(Arc::clone(&llm));
|
||||
let task_log_dir = config.data_dir.join("logs");
|
||||
let _ = fs::create_dir_all(&task_log_dir);
|
||||
|
||||
// Enable verbose logging if POC_MEMORY_VERBOSE is set
|
||||
if std::env::var("POC_MEMORY_VERBOSE").is_ok() {
|
||||
jobkit::daemon::event_log::set_level(jobkit::daemon::event_log::LogLevel::Verbose);
|
||||
}
|
||||
|
||||
// Recover last_daily from previous status file
|
||||
let last_daily: Arc<Mutex<Option<chrono::NaiveDate>>> = Arc::new(Mutex::new(
|
||||
jobkit::daemon::status::load::<DaemonStatus>(&config.data_dir)
|
||||
|
|
@ -1107,8 +1121,10 @@ pub fn run_daemon() -> Result<(), String> {
|
|||
let agent = agent_type.to_string();
|
||||
let key = key.clone();
|
||||
let task_name = format!("c-{}-{}:{}", agent, key.chars().take(30).collect::<String>(), today);
|
||||
log_event("daemon", "spawn-targeted",
|
||||
&format!("{} (available slots: {})", task_name, llm_rpc.available()));
|
||||
if jobkit::daemon::event_log::enabled(jobkit::daemon::event_log::LogLevel::Verbose) {
|
||||
log_event("daemon", "spawn-targeted",
|
||||
&format!("{} (pool: {}/{})", task_name, llm_rpc.available(), llm_rpc.capacity()));
|
||||
}
|
||||
choir_rpc.spawn(task_name)
|
||||
.resource(&llm_rpc)
|
||||
.log_dir(&log_dir_rpc)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue