{"record":{"id":"511efa92584c79f9","repo":"tinyhumansai/openhuman","slug":"invalid-run-at-timestamp-e","errorCode":null,"errorMessage":"Invalid run_at timestamp: {e}","messagePattern":"Invalid run_at timestamp: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/system/schedule.rs","lineNumber":312,"sourceCode":"        // ── Agent job (prompt provided) ──────────────────────────────\n        if let Some(prompt_text) = prompt {\n            tracing::debug!(\n                action = %action,\n                prompt_len = prompt_text.len(),\n                \"[schedule] creating agent job\"\n            );\n            let schedule = if let Some(expr) = expression {\n                Schedule::Cron {\n                    expr: expr.to_string(),\n                    tz: None,\n                    active_hours: None,\n                }\n            } else if let Some(delay_str) = delay {\n                let at = Utc::now() + cron::parse_human_delay(delay_str)?;\n                Schedule::At { at }\n            } else if let Some(at_str) = run_at {\n                let at: DateTime<Utc> = DateTime::parse_from_rfc3339(at_str)\n                    .map_err(|e| anyhow::anyhow!(\"Invalid run_at timestamp: {e}\"))?\n                    .with_timezone(&Utc);\n                Schedule::At { at }\n            } else {\n                return Ok(ToolResult::error(\"Missing scheduling parameters\"));\n            };\n\n            let name = args\n                .get(\"name\")\n                .and_then(|v| v.as_str())\n                .map(str::to_string)\n                .or_else(|| {\n                    // Derive a slug from the prompt so jobs are never unnamed.\n                    Some(\n                        prompt_text\n                            .chars()\n                            .map(|c| {\n                                if c.is_alphanumeric() {\n                                    c.to_ascii_lowercase()","sourceCodeStart":294,"sourceCodeEnd":330,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/system/schedule.rs#L294-L330","documentation":"When creating an agent job with a 'run_at' one-shot time, the raw string is parsed with DateTime::parse_from_rfc3339; this fires when it is not RFC 3339 (missing timezone, wrong separator, relative phrases like 'tomorrow'). Nothing is scheduled.","triggerScenarios":"Thrown at src/openhuman/tools/impl/system/schedule.rs:312 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass run_at as an RFC 3339 timestamp, e.g. 2026-09-03T09:00:00Z","Use the 'delay' (duration) parameter instead for relative times"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}