mirror of
https://github.com/myronblair/jarvis
synced 2026-06-30 17:50:23 -05:00
Phase 7: Mission Ops — multi-step automated workflow engine
- DB: missions, mission_steps, mission_runs tables
- reactor.py v7.0.0: handle_run_mission, _execute_mission, mission_trigger_loop (schedule/guardian_event/email_keyword triggers), {{template}} substitution across steps, full CRUD REST endpoints
- arc.php: missions/mission_get/mission_runs/mission_create/mission_update/mission_delete/mission_run/mission_toggle actions
- admin/index.php: Mission Ops tab with visual workflow builder (trigger config, step cards with ↑↓, JSON payload editor, continue-on-failure flag), run history with step-level detail, enable/disable toggle
- index.html: MISSIONS tab with collapsible mission cards, RUN NOW button per mission, live run result feedback
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -236,6 +236,62 @@ switch ($action) {
|
||||
echo json_encode(arc_request('DELETE', "/comms/sent/{$id}"));
|
||||
break;
|
||||
|
||||
// ── MISSION OPS ───────────────────────────────────────────────────────────
|
||||
|
||||
// GET /api/arc?action=missions
|
||||
case 'missions':
|
||||
echo json_encode(arc_request('GET', '/missions'));
|
||||
break;
|
||||
|
||||
// GET /api/arc?action=mission_get&id=123
|
||||
case 'mission_get':
|
||||
$id = (int)($_GET['id'] ?? $data['id'] ?? 0);
|
||||
if (!$id) { http_response_code(400); echo json_encode(['error' => 'Missing id']); break; }
|
||||
echo json_encode(arc_request('GET', "/missions/{$id}"));
|
||||
break;
|
||||
|
||||
// GET /api/arc?action=mission_runs&id=123
|
||||
case 'mission_runs':
|
||||
$id = (int)($_GET['id'] ?? $data['id'] ?? 0);
|
||||
$limit = (int)($_GET['limit'] ?? 20);
|
||||
if (!$id) { http_response_code(400); echo json_encode(['error' => 'Missing id']); break; }
|
||||
echo json_encode(arc_request('GET', "/missions/{$id}/runs?limit={$limit}"));
|
||||
break;
|
||||
|
||||
// POST /api/arc?action=mission_create — body: { name, description, trigger_type, trigger_config, steps }
|
||||
case 'mission_create':
|
||||
echo json_encode(arc_request('POST', '/missions', $data));
|
||||
break;
|
||||
|
||||
// POST /api/arc?action=mission_update — body: { id, name, ... steps }
|
||||
case 'mission_update':
|
||||
$id = (int)($data['id'] ?? 0);
|
||||
if (!$id) { http_response_code(400); echo json_encode(['error' => 'Missing id']); break; }
|
||||
echo json_encode(arc_request('PUT', "/missions/{$id}", $data));
|
||||
break;
|
||||
|
||||
// DELETE /api/arc?action=mission_delete&id=123
|
||||
case 'mission_delete':
|
||||
$id = (int)($_GET['id'] ?? $data['id'] ?? 0);
|
||||
if (!$id) { http_response_code(400); echo json_encode(['error' => 'Missing id']); break; }
|
||||
echo json_encode(arc_request('DELETE', "/missions/{$id}"));
|
||||
break;
|
||||
|
||||
// POST /api/arc?action=mission_run&id=123
|
||||
case 'mission_run':
|
||||
$id = (int)($_GET['id'] ?? $data['id'] ?? 0);
|
||||
if (!$id) { http_response_code(400); echo json_encode(['error' => 'Missing id']); break; }
|
||||
echo json_encode(arc_request('POST', "/missions/{$id}/run", ['trigger_source' => 'manual']));
|
||||
break;
|
||||
|
||||
// POST /api/arc?action=mission_toggle&id=123 body: { enabled: 1|0 }
|
||||
case 'mission_toggle':
|
||||
$id = (int)($data['id'] ?? 0);
|
||||
$enabled = (int)($data['enabled'] ?? 0);
|
||||
if (!$id) { http_response_code(400); echo json_encode(['error' => 'Missing id']); break; }
|
||||
echo json_encode(arc_request('PUT', "/missions/{$id}", ['enabled' => $enabled]));
|
||||
break;
|
||||
|
||||
default:
|
||||
http_response_code(404);
|
||||
echo json_encode(['error' => "Unknown arc action: {$action}"]);
|
||||
|
||||
Reference in New Issue
Block a user