-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmod.rs
More file actions
127 lines (121 loc) · 4.71 KB
/
mod.rs
File metadata and controls
127 lines (121 loc) · 4.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
//! API endpoints.
pub mod auth;
pub mod repository;
pub mod secrets;
pub mod session;
pub mod task;
pub mod todo;
pub mod worker;
pub mod workspace;
use std::sync::Arc;
use axum::{
Router,
routing::{get, post},
};
use task_store::TaskStore;
use crate::state::AppState;
/// Creates the API router with all endpoints.
pub fn create_router<S: TaskStore + 'static>() -> Router<Arc<AppState<S>>> {
Router::new()
// Task management endpoints
.route("/api/task/create-unit", post(task::create_unit_task))
.route(
"/api/task/create-composite",
post(task::create_composite_task),
)
.route("/api/task/get", post(task::get_task))
.route("/api/task/list", post(task::list_tasks))
.route("/api/task/update-status", post(task::update_task_status))
.route("/api/task/delete", post(task::delete_task))
.route("/api/task/retry", post(task::retry_task))
.route("/api/task/approve", post(task::approve_task))
.route("/api/task/reject", post(task::reject_task))
.route("/api/task/request-changes", post(task::request_changes))
.route("/api/task/update-plan", post(task::update_plan))
.route("/api/task/cancel", post(task::cancel_task))
.route(
"/api/task/dismiss-approval",
post(task::dismiss_approval),
)
.route("/api/task/create-pr", post(task::create_pr))
.route(
"/api/task/get-composite-nodes",
post(task::get_composite_task_nodes),
)
.route("/api/task/get-logs", post(task::get_task_logs))
// Session endpoints
.route("/api/session/get-log", post(session::get_log))
.route("/api/session/stop", post(session::stop_session))
.route(
"/api/session/submit-tty-input",
post(session::submit_tty_input),
)
.route(
"/api/session/wait-tty-response",
post(session::wait_tty_response),
)
// Repository endpoints
.route("/api/repository/add", post(repository::add_repository))
.route("/api/repository/list", post(repository::list_repositories))
.route("/api/repository/get", post(repository::get_repository))
.route(
"/api/repository/remove",
post(repository::remove_repository),
)
.route(
"/api/repository-group/create",
post(repository::create_repository_group),
)
.route(
"/api/repository-group/get",
post(repository::get_repository_group),
)
.route(
"/api/repository-group/list",
post(repository::list_repository_groups),
)
.route(
"/api/repository-group/update",
post(repository::update_repository_group),
)
.route(
"/api/repository-group/delete",
post(repository::delete_repository_group),
)
// Workspace endpoints
.route("/api/workspace/create", post(workspace::create_workspace))
.route("/api/workspace/list", post(workspace::list_workspaces))
.route("/api/workspace/get", post(workspace::get_workspace))
.route("/api/workspace/update", post(workspace::update_workspace))
.route("/api/workspace/delete", post(workspace::delete_workspace))
// Todo endpoints
.route("/api/todo/list", post(todo::list_todo_items))
.route("/api/todo/get", post(todo::get_todo_item))
.route("/api/todo/update-status", post(todo::update_todo_status))
.route("/api/todo/dismiss", post(todo::dismiss_todo))
// Secrets endpoints
.route("/api/secrets/send", post(secrets::send_secrets))
.route("/api/secrets/clear", post(secrets::clear_secrets))
// Auth endpoints
.route("/api/auth/get-login-url", post(auth::get_login_url))
.route("/api/auth/callback", get(auth::handle_callback))
.route("/api/auth/refresh", post(auth::refresh_token))
.route("/api/auth/me", get(auth::get_current_user))
.route("/api/auth/logout", post(auth::logout))
// Worker endpoints (internal)
.route("/api/worker/register", post(worker::register_worker))
.route("/api/worker/heartbeat", post(worker::heartbeat))
.route("/api/worker/unregister", post(worker::unregister_worker))
.route("/api/worker/get-task", post(worker::get_next_task))
.route(
"/api/worker/report-status",
post(worker::report_task_status),
)
.route("/api/worker/get-secrets", post(worker::get_secrets))
// Health check
.route("/health", get(health_check))
}
/// Health check endpoint.
async fn health_check() -> &'static str {
"OK"
}