Some checks failed
Forge CI / smoke-and-build (pull_request) Failing after 1m18s
When cron jobs run on cloud providers (Nous, OpenRouter), prompts written for local Ollama fail because they assume SSH or localhost. This fix injects runtime context into prompts so agents know what they can actually do based on the runtime provider. Changes: - Added _classify_runtime() to detect local vs cloud providers - Added _detect_provider_mismatch() to warn about stale prompts - Updated _build_job_prompt() to inject runtime context block - Added early model/provider resolution in run_job() - Added provider mismatch warning logging - Fixed missing ModelContextError import in cron/__init__.py - Added 8 tests for runtime classification and prompt building Runtime context injected: - LOCAL: 'you have access to local machine, Ollama, SSH keys' - CLOUD: 'you do NOT have local machine access. Do NOT assume SSH...' Fixes #372
43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
"""
|
|
Cron job scheduling system for Hermes Agent.
|
|
|
|
This module provides scheduled task execution, allowing the agent to:
|
|
- Run automated tasks on schedules (cron expressions, intervals, one-shot)
|
|
- Self-schedule reminders and follow-up tasks
|
|
- Execute tasks in isolated sessions (no prior context)
|
|
|
|
Cron jobs are executed automatically by the gateway daemon:
|
|
hermes gateway install # Install as a user service
|
|
sudo hermes gateway install --system # Linux servers: boot-time system service
|
|
hermes gateway # Or run in foreground
|
|
|
|
The gateway ticks the scheduler every 60 seconds. A file lock prevents
|
|
duplicate execution if multiple processes overlap.
|
|
"""
|
|
|
|
from cron.jobs import (
|
|
create_job,
|
|
get_job,
|
|
list_jobs,
|
|
remove_job,
|
|
update_job,
|
|
pause_job,
|
|
resume_job,
|
|
trigger_job,
|
|
JOBS_FILE,
|
|
)
|
|
from cron.scheduler import tick
|
|
|
|
__all__ = [
|
|
"create_job",
|
|
"get_job",
|
|
"list_jobs",
|
|
"remove_job",
|
|
"update_job",
|
|
"pause_job",
|
|
"resume_job",
|
|
"trigger_job",
|
|
"tick",
|
|
"JOBS_FILE",
|
|
]
|