forked from Rockachopa/Timmy-time-dashboard
255 lines
8.1 KiB
JSON
255 lines
8.1 KiB
JSON
{
|
|
"version": "1.0.0",
|
|
"description": "Master manifest of all Timmy automations",
|
|
"last_updated": "2026-03-21",
|
|
"automations": [
|
|
{
|
|
"id": "cycle_retro",
|
|
"name": "Cycle Retrospective",
|
|
"description": "Logs structured retrospective data after each development cycle",
|
|
"script": "scripts/cycle_retro.py",
|
|
"category": "daily_run",
|
|
"enabled": true,
|
|
"trigger": "post_cycle",
|
|
"executable": "python3",
|
|
"config": {
|
|
"retro_file": ".loop/retro/cycles.jsonl",
|
|
"summary_file": ".loop/retro/summary.json",
|
|
"summary_window": 50,
|
|
"epoch_enabled": true
|
|
},
|
|
"outputs": [
|
|
".loop/retro/cycles.jsonl",
|
|
".loop/retro/summary.json"
|
|
]
|
|
},
|
|
{
|
|
"id": "loop_guard",
|
|
"name": "Loop Guard",
|
|
"description": "Idle detection with exponential backoff to prevent burning cycles on empty queues",
|
|
"script": "scripts/loop_guard.py",
|
|
"category": "daily_run",
|
|
"enabled": true,
|
|
"trigger": "pre_cycle",
|
|
"executable": "python3",
|
|
"config": {
|
|
"queue_file": ".loop/queue.json",
|
|
"idle_state_file": ".loop/idle_state.json",
|
|
"backoff_base_seconds": 60,
|
|
"backoff_max_seconds": 600,
|
|
"backoff_multiplier": 2,
|
|
"cycle_duration_seconds": 300
|
|
},
|
|
"outputs": [
|
|
".loop/idle_state.json"
|
|
]
|
|
},
|
|
{
|
|
"id": "triage_score",
|
|
"name": "Mechanical Triage Scoring",
|
|
"description": "Pure heuristic scoring of open issues based on scope, acceptance criteria, and alignment",
|
|
"script": "scripts/triage_score.py",
|
|
"category": "daily_run",
|
|
"enabled": true,
|
|
"trigger": "scheduled",
|
|
"schedule": "every_10_cycles",
|
|
"executable": "python3",
|
|
"config": {
|
|
"ready_threshold": 5,
|
|
"quarantine_lookback": 20,
|
|
"queue_file": ".loop/queue.json",
|
|
"retro_file": ".loop/retro/triage.jsonl",
|
|
"quarantine_file": ".loop/quarantine.json"
|
|
},
|
|
"outputs": [
|
|
".loop/queue.json",
|
|
".loop/retro/triage.jsonl",
|
|
".loop/quarantine.json"
|
|
]
|
|
},
|
|
{
|
|
"id": "deep_triage",
|
|
"name": "Deep Triage",
|
|
"description": "LLM-driven intelligent issue refinement, breaking down large issues, adding acceptance criteria",
|
|
"script": "scripts/deep_triage.sh",
|
|
"category": "triage",
|
|
"enabled": true,
|
|
"trigger": "scheduled",
|
|
"schedule": "every_20_cycles",
|
|
"executable": "bash",
|
|
"depends_on": ["loop_introspect"],
|
|
"config": {
|
|
"queue_file": ".loop/queue.json",
|
|
"retro_file": ".loop/retro/deep-triage.jsonl",
|
|
"prompt_file": "scripts/deep_triage_prompt.md",
|
|
"timmy_consultation": true,
|
|
"timmy_timeout_seconds": 60
|
|
},
|
|
"outputs": [
|
|
".loop/queue.json",
|
|
".loop/retro/deep-triage.jsonl"
|
|
]
|
|
},
|
|
{
|
|
"id": "loop_introspect",
|
|
"name": "Loop Introspection",
|
|
"description": "Self-improvement engine that analyzes retro data and produces structured recommendations",
|
|
"script": "scripts/loop_introspect.py",
|
|
"category": "triage",
|
|
"enabled": true,
|
|
"trigger": "scheduled",
|
|
"schedule": "every_20_cycles",
|
|
"executable": "python3",
|
|
"config": {
|
|
"cycles_file": ".loop/retro/cycles.jsonl",
|
|
"deep_triage_file": ".loop/retro/deep-triage.jsonl",
|
|
"triage_file": ".loop/retro/triage.jsonl",
|
|
"quarantine_file": ".loop/quarantine.json",
|
|
"insights_file": ".loop/retro/insights.json",
|
|
"trend_window_days": 7
|
|
},
|
|
"outputs": [
|
|
".loop/retro/insights.json"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent_workspace",
|
|
"name": "Agent Workspace Manager",
|
|
"description": "Creates and maintains isolated git clones, port ranges, and data directories per agent",
|
|
"script": "scripts/agent_workspace.sh",
|
|
"category": "workspace",
|
|
"enabled": true,
|
|
"trigger": "manual",
|
|
"executable": "bash",
|
|
"config": {
|
|
"agents_dir": "/tmp/timmy-agents",
|
|
"canonical_repo": "~/Timmy-Time-dashboard",
|
|
"gitea_remote": "http://localhost:3000/rockachopa/Timmy-time-dashboard.git",
|
|
"agents": ["hermes", "kimi-0", "kimi-1", "kimi-2", "kimi-3", "smoke"],
|
|
"port_base_dashboard": 8100,
|
|
"port_base_serve": 8200
|
|
},
|
|
"outputs": []
|
|
},
|
|
{
|
|
"id": "kimi_bootstrap",
|
|
"name": "Kimi Workspace Bootstrap",
|
|
"description": "One-time setup script for new Kimi agent workspaces",
|
|
"script": ".kimi/scripts/bootstrap.sh",
|
|
"category": "workspace",
|
|
"enabled": true,
|
|
"trigger": "manual",
|
|
"executable": "bash",
|
|
"config": {},
|
|
"outputs": []
|
|
},
|
|
{
|
|
"id": "kimi_resume",
|
|
"name": "Kimi Resume",
|
|
"description": "Quick status check and resume prompt for Kimi workspaces",
|
|
"script": ".kimi/scripts/resume.sh",
|
|
"category": "workspace",
|
|
"enabled": true,
|
|
"trigger": "manual",
|
|
"executable": "bash",
|
|
"config": {},
|
|
"outputs": []
|
|
},
|
|
{
|
|
"id": "backfill_retro",
|
|
"name": "Backfill Retrospective",
|
|
"description": "One-time script to seed retrospective data from Gitea PR history",
|
|
"script": "scripts/backfill_retro.py",
|
|
"category": "metrics",
|
|
"enabled": true,
|
|
"trigger": "manual",
|
|
"executable": "python3",
|
|
"config": {
|
|
"retro_file": ".loop/retro/cycles.jsonl",
|
|
"summary_file": ".loop/retro/summary.json",
|
|
"gitea_api": "http://localhost:3000/api/v1"
|
|
},
|
|
"outputs": [
|
|
".loop/retro/cycles.jsonl",
|
|
".loop/retro/summary.json"
|
|
]
|
|
},
|
|
{
|
|
"id": "pre_commit_checks",
|
|
"name": "Pre-commit Checks",
|
|
"description": "CI hygiene validation before commits — import checks, model config, syntax, formatting",
|
|
"script": "scripts/pre_commit_checks.py",
|
|
"category": "metrics",
|
|
"enabled": true,
|
|
"trigger": "pre_commit",
|
|
"executable": "python3",
|
|
"config": {
|
|
"check_imports": true,
|
|
"check_model_config": true,
|
|
"check_test_syntax": true,
|
|
"check_platform_paths": true,
|
|
"check_docker_tests": true,
|
|
"check_black_formatting": true
|
|
},
|
|
"outputs": []
|
|
},
|
|
{
|
|
"id": "daily_run_orchestrator",
|
|
"name": "Daily Run Orchestrator",
|
|
"description": "The 10-minute ritual — fetches candidate issues and produces a concise Daily Run agenda plus day summary",
|
|
"script": "timmy_automations/daily_run/orchestrator.py",
|
|
"category": "daily_run",
|
|
"enabled": true,
|
|
"trigger": "manual",
|
|
"executable": "python3",
|
|
"config": {
|
|
"config_file": "timmy_automations/config/daily_run.json",
|
|
"candidate_labels": ["daily-run"],
|
|
"size_labels": ["size:XS", "size:S"],
|
|
"max_agenda_items": 3,
|
|
"lookback_hours": 24,
|
|
"agenda_time_minutes": 10
|
|
},
|
|
"outputs": []
|
|
},
|
|
{
|
|
"id": "golden_path",
|
|
"name": "Golden Path Generator",
|
|
"description": "Generates coherent 30-60 minute mini-sessions from real Gitea issues — triage, fixes, and tests",
|
|
"script": "timmy_automations/daily_run/golden_path.py",
|
|
"category": "daily_run",
|
|
"enabled": true,
|
|
"trigger": "manual",
|
|
"executable": "python3",
|
|
"config": {
|
|
"target_minutes": 45,
|
|
"size_labels": ["size:XS", "size:S", "size:M"],
|
|
"min_items": 3,
|
|
"max_items": 5
|
|
},
|
|
"outputs": []
|
|
},
|
|
{
|
|
"id": "weekly_narrative",
|
|
"name": "Weekly Narrative Summary",
|
|
"description": "Generates a human-readable weekly summary of work themes, agent contributions, and token economy shifts",
|
|
"script": "timmy_automations/daily_run/weekly_narrative.py",
|
|
"category": "daily_run",
|
|
"enabled": true,
|
|
"trigger": "scheduled",
|
|
"schedule": "weekly",
|
|
"executable": "python3",
|
|
"config": {
|
|
"lookback_days": 7,
|
|
"output_file": ".loop/weekly_narrative.json",
|
|
"gitea_api": "http://localhost:3000/api/v1",
|
|
"repo_slug": "rockachopa/Timmy-time-dashboard"
|
|
},
|
|
"outputs": [
|
|
".loop/weekly_narrative.json",
|
|
".loop/weekly_narrative.md"
|
|
]
|
|
}
|
|
]
|
|
}
|