SYMBOL INDEX (8062 symbols across 1062 files) FILE: crates/api-types/src/attachment.rs type Attachment (line 8) | pub struct Attachment { type AttachmentWithBlob (line 19) | pub struct AttachmentWithBlob { type AttachmentWithUrl (line 39) | pub struct AttachmentWithUrl { type ListAttachmentsResponse (line 47) | pub struct ListAttachmentsResponse { type AttachmentUrlResponse (line 53) | pub struct AttachmentUrlResponse { FILE: crates/api-types/src/auth.rs type AuthSession (line 6) | pub struct AuthSession { method last_activity_at (line 17) | pub fn last_activity_at(&self) -> DateTime { method inactivity_duration (line 21) | pub fn inactivity_duration(&self, now: DateTime) -> Duration { FILE: crates/api-types/src/blob.rs type Blob (line 7) | pub struct Blob { FILE: crates/api-types/src/issue.rs type IssuePriority (line 13) | pub enum IssuePriority { type Issue (line 21) | pub struct Issue { type IssueSortField (line 44) | pub enum IssueSortField { type SortDirection (line 54) | pub enum SortDirection { type CreateIssueRequest (line 60) | pub struct CreateIssueRequest { type UpdateIssueRequest (line 80) | pub struct UpdateIssueRequest { type ListIssuesQuery (line 150) | pub struct ListIssuesQuery { type SearchIssuesRequest (line 155) | pub struct SearchIssuesRequest { type ListIssuesResponse (line 199) | pub struct ListIssuesResponse { FILE: crates/api-types/src/issue_assignee.rs type IssueAssignee (line 9) | pub struct IssueAssignee { type CreateIssueAssigneeRequest (line 17) | pub struct CreateIssueAssigneeRequest { type UpdateIssueAssigneeRequest (line 27) | pub struct UpdateIssueAssigneeRequest { type ListIssueAssigneesQuery (line 33) | pub struct ListIssueAssigneesQuery { type ListIssueAssigneesResponse (line 38) | pub struct ListIssueAssigneesResponse { FILE: crates/api-types/src/issue_comment.rs type IssueComment (line 9) | pub struct IssueComment { type CreateIssueCommentRequest (line 20) | pub struct CreateIssueCommentRequest { type UpdateIssueCommentRequest (line 31) | pub struct UpdateIssueCommentRequest { type ListIssueCommentsQuery (line 39) | pub struct ListIssueCommentsQuery { type ListIssueCommentsResponse (line 44) | pub struct ListIssueCommentsResponse { FILE: crates/api-types/src/issue_comment_reaction.rs type IssueCommentReaction (line 9) | pub struct IssueCommentReaction { type CreateIssueCommentReactionRequest (line 18) | pub struct CreateIssueCommentReactionRequest { type UpdateIssueCommentReactionRequest (line 28) | pub struct UpdateIssueCommentReactionRequest { type ListIssueCommentReactionsQuery (line 34) | pub struct ListIssueCommentReactionsQuery { type ListIssueCommentReactionsResponse (line 39) | pub struct ListIssueCommentReactionsResponse { FILE: crates/api-types/src/issue_follower.rs type IssueFollower (line 8) | pub struct IssueFollower { type CreateIssueFollowerRequest (line 15) | pub struct CreateIssueFollowerRequest { type UpdateIssueFollowerRequest (line 25) | pub struct UpdateIssueFollowerRequest { type ListIssueFollowersQuery (line 31) | pub struct ListIssueFollowersQuery { type ListIssueFollowersResponse (line 36) | pub struct ListIssueFollowersResponse { FILE: crates/api-types/src/issue_relationship.rs type IssueRelationshipType (line 13) | pub enum IssueRelationshipType { type IssueRelationship (line 20) | pub struct IssueRelationship { type CreateIssueRelationshipRequest (line 29) | pub struct CreateIssueRelationshipRequest { type UpdateIssueRelationshipRequest (line 40) | pub struct UpdateIssueRelationshipRequest { type ListIssueRelationshipsQuery (line 48) | pub struct ListIssueRelationshipsQuery { type ListIssueRelationshipsResponse (line 53) | pub struct ListIssueRelationshipsResponse { FILE: crates/api-types/src/issue_tag.rs type IssueTag (line 8) | pub struct IssueTag { type CreateIssueTagRequest (line 15) | pub struct CreateIssueTagRequest { type UpdateIssueTagRequest (line 25) | pub struct UpdateIssueTagRequest { type ListIssueTagsQuery (line 31) | pub struct ListIssueTagsQuery { type ListIssueTagsResponse (line 36) | pub struct ListIssueTagsResponse { FILE: crates/api-types/src/lib.rs function some_if_present (line 62) | pub fn some_if_present<'de, D, T>(deserializer: D) -> Result, ... FILE: crates/api-types/src/migration.rs type MigrateProjectRequest (line 6) | pub struct MigrateProjectRequest { type MigrateIssueRequest (line 14) | pub struct MigrateIssueRequest { type MigratePullRequestRequest (line 23) | pub struct MigratePullRequestRequest { type MigrateWorkspaceRequest (line 34) | pub struct MigrateWorkspaceRequest { type BulkMigrateRequest (line 43) | pub struct BulkMigrateRequest { type BulkMigrateResponse (line 48) | pub struct BulkMigrateResponse { FILE: crates/api-types/src/notification.rs type NotificationType (line 12) | pub enum NotificationType { type NotificationGroupKind (line 26) | pub enum NotificationGroupKind { type Notification (line 36) | pub struct Notification { type NotificationPayload (line 50) | pub struct NotificationPayload { type UpdateNotificationRequest (line 84) | pub struct UpdateNotificationRequest { FILE: crates/api-types/src/oauth.rs type HandoffInitRequest (line 6) | pub struct HandoffInitRequest { type HandoffInitResponse (line 13) | pub struct HandoffInitResponse { type HandoffRedeemRequest (line 19) | pub struct HandoffRedeemRequest { type HandoffRedeemResponse (line 26) | pub struct HandoffRedeemResponse { type TokenRefreshRequest (line 32) | pub struct TokenRefreshRequest { type TokenRefreshResponse (line 37) | pub struct TokenRefreshResponse { type ProviderProfile (line 43) | pub struct ProviderProfile { type ProfileResponse (line 52) | pub struct ProfileResponse { type LoginStatus (line 61) | pub enum LoginStatus { type StatusResponse (line 67) | pub struct StatusResponse { FILE: crates/api-types/src/organization_member.rs type MemberRole (line 12) | pub enum MemberRole { type OrganizationMember (line 20) | pub struct OrganizationMember { FILE: crates/api-types/src/organizations.rs type InvitationStatus (line 14) | pub enum InvitationStatus { type Organization (line 22) | pub struct Organization { type OrganizationWithRole (line 33) | pub struct OrganizationWithRole { type ListOrganizationsResponse (line 45) | pub struct ListOrganizationsResponse { type GetOrganizationResponse (line 50) | pub struct GetOrganizationResponse { type CreateOrganizationRequest (line 56) | pub struct CreateOrganizationRequest { type CreateOrganizationResponse (line 62) | pub struct CreateOrganizationResponse { type UpdateOrganizationRequest (line 67) | pub struct UpdateOrganizationRequest { type Invitation (line 74) | pub struct Invitation { type CreateInvitationRequest (line 87) | pub struct CreateInvitationRequest { type CreateInvitationResponse (line 93) | pub struct CreateInvitationResponse { type ListInvitationsResponse (line 98) | pub struct ListInvitationsResponse { type GetInvitationResponse (line 103) | pub struct GetInvitationResponse { type AcceptInvitationResponse (line 111) | pub struct AcceptInvitationResponse { type RevokeInvitationRequest (line 118) | pub struct RevokeInvitationRequest { type OrganizationMemberInfo (line 127) | pub struct OrganizationMemberInfo { type OrganizationMemberWithProfile (line 134) | pub struct OrganizationMemberWithProfile { type ListMembersResponse (line 146) | pub struct ListMembersResponse { type UpdateMemberRoleRequest (line 151) | pub struct UpdateMemberRoleRequest { type UpdateMemberRoleResponse (line 156) | pub struct UpdateMemberRoleResponse { FILE: crates/api-types/src/project.rs type Project (line 9) | pub struct Project { type CreateProjectRequest (line 20) | pub struct CreateProjectRequest { type UpdateProjectRequest (line 31) | pub struct UpdateProjectRequest { type ListProjectsQuery (line 41) | pub struct ListProjectsQuery { type ListProjectsResponse (line 46) | pub struct ListProjectsResponse { type BulkUpdateProjectItem (line 51) | pub struct BulkUpdateProjectItem { type BulkUpdateProjectsRequest (line 58) | pub struct BulkUpdateProjectsRequest { type BulkUpdateProjectsResponse (line 63) | pub struct BulkUpdateProjectsResponse { FILE: crates/api-types/src/project_status.rs type ProjectStatus (line 9) | pub struct ProjectStatus { type CreateProjectStatusRequest (line 20) | pub struct CreateProjectStatusRequest { type UpdateProjectStatusRequest (line 33) | pub struct UpdateProjectStatusRequest { type ListProjectStatusesQuery (line 45) | pub struct ListProjectStatusesQuery { type ListProjectStatusesResponse (line 50) | pub struct ListProjectStatusesResponse { FILE: crates/api-types/src/pull_request.rs type PullRequestStatus (line 11) | pub enum PullRequestStatus { type PullRequest (line 18) | pub struct PullRequest { type ListPullRequestsQuery (line 33) | pub struct ListPullRequestsQuery { type ListPullRequestsResponse (line 38) | pub struct ListPullRequestsResponse { FILE: crates/api-types/src/pull_requests_local.rs type UpsertPullRequestRequest (line 8) | pub struct UpsertPullRequestRequest { FILE: crates/api-types/src/relay.rs type RelayHost (line 7) | pub struct RelayHost { type ListRelayHostsResponse (line 20) | pub struct ListRelayHostsResponse { type RelaySessionAuthCodeResponse (line 25) | pub struct RelaySessionAuthCodeResponse { type RelaySession (line 31) | pub struct RelaySession { FILE: crates/api-types/src/response.rs type MutationResponse (line 7) | pub struct MutationResponse { type DeleteResponse (line 14) | pub struct DeleteResponse { FILE: crates/api-types/src/tag.rs type Tag (line 8) | pub struct Tag { type CreateTagRequest (line 16) | pub struct CreateTagRequest { type UpdateTagRequest (line 27) | pub struct UpdateTagRequest { type ListTagsQuery (line 35) | pub struct ListTagsQuery { type ListTagsResponse (line 40) | pub struct ListTagsResponse { FILE: crates/api-types/src/user.rs type User (line 7) | pub struct User { type UserData (line 18) | pub struct UserData { FILE: crates/api-types/src/workspace.rs type Workspace (line 8) | pub struct Workspace { FILE: crates/api-types/src/workspaces.rs type DeleteWorkspaceRequest (line 5) | pub struct DeleteWorkspaceRequest { type CreateWorkspaceRequest (line 10) | pub struct CreateWorkspaceRequest { type UpdateWorkspaceRequest (line 27) | pub struct UpdateWorkspaceRequest { FILE: crates/db/migrations/20250617183714_init.sql type projects (line 3) | CREATE TABLE projects ( type tasks (line 12) | CREATE TABLE tasks ( type task_attempts (line 24) | CREATE TABLE task_attempts ( type task_attempt_activities (line 37) | CREATE TABLE task_attempt_activities ( FILE: crates/db/migrations/20250620212427_execution_processes.sql type execution_processes (line 3) | CREATE TABLE execution_processes ( type idx_execution_processes_task_attempt_id (line 23) | CREATE INDEX idx_execution_processes_task_attempt_id ON execution_proces... type idx_execution_processes_status (line 24) | CREATE INDEX idx_execution_processes_status ON execution_processes(status) type idx_execution_processes_type (line 25) | CREATE INDEX idx_execution_processes_type ON execution_processes(process... FILE: crates/db/migrations/20250620214100_remove_stdout_stderr_from_task_attempts.sql type task_attempts_new (line 8) | CREATE TABLE task_attempts_new ( FILE: crates/db/migrations/20250621120000_relate_activities_to_execution_processes.sql type task_attempt_activities (line 10) | CREATE TABLE task_attempt_activities ( type idx_task_attempt_activities_execution_process_id (line 20) | CREATE INDEX idx_task_attempt_activities_execution_process_id ON task_at... type idx_task_attempt_activities_created_at (line 23) | CREATE INDEX idx_task_attempt_activities_created_at ON task_attempt_acti... FILE: crates/db/migrations/20250623120000_executor_sessions.sql type executor_sessions (line 3) | CREATE TABLE executor_sessions ( type idx_executor_sessions_task_attempt_id (line 15) | CREATE INDEX idx_executor_sessions_task_attempt_id ON executor_sessions(... type idx_executor_sessions_execution_process_id (line 16) | CREATE INDEX idx_executor_sessions_execution_process_id ON executor_sess... type idx_executor_sessions_session_id (line 17) | CREATE INDEX idx_executor_sessions_session_id ON executor_sessions(sessi... FILE: crates/db/migrations/20250715154859_add_task_templates.sql type task_templates (line 2) | CREATE TABLE task_templates ( type idx_task_templates_project_id (line 14) | CREATE INDEX idx_task_templates_project_id ON task_templates(project_id) type idx_task_templates_unique_name_project (line 18) | CREATE UNIQUE INDEX idx_task_templates_unique_name_project type idx_task_templates_unique_name_global (line 23) | CREATE UNIQUE INDEX idx_task_templates_unique_name_global FILE: crates/db/migrations/20250716170000_add_parent_task_to_tasks.sql type idx_tasks_parent_task_attempt (line 7) | CREATE INDEX idx_tasks_parent_task_attempt ON tasks(parent_task_attempt) FILE: crates/db/migrations/20250720000000_add_cleanupscript_to_process_type_constraint.sql type idx_execution_processes_type (line 24) | CREATE INDEX idx_execution_processes_type FILE: crates/db/migrations/20250729162941_create_execution_process_logs.sql type execution_process_logs (line 3) | CREATE TABLE execution_process_logs ( type idx_execution_process_logs_inserted_at (line 11) | CREATE INDEX idx_execution_process_logs_inserted_at ON execution_process... FILE: crates/db/migrations/20250730124500_add_execution_process_task_attempt_index.sql type idx_execution_processes_task_attempt_type_created (line 5) | CREATE INDEX idx_execution_processes_task_attempt_type_created FILE: crates/db/migrations/20250805122100_fix_executor_action_type_virtual_column.sql type idx_execution_processes_task_attempt_type_created (line 11) | CREATE INDEX idx_execution_processes_task_attempt_type_created FILE: crates/db/migrations/20250818150000_refactor_images_to_junction_tables.sql type images (line 7) | CREATE TABLE images ( type task_images (line 19) | CREATE TABLE task_images ( type idx_images_hash (line 31) | CREATE INDEX idx_images_hash ON images(hash) type idx_task_images_task_id (line 32) | CREATE INDEX idx_task_images_task_id ON task_images(task_id) type idx_task_images_image_id (line 33) | CREATE INDEX idx_task_images_image_id ON task_images(image_id) FILE: crates/db/migrations/20250819000000_move_merge_commit_to_merges_table.sql type merges (line 2) | CREATE TABLE merges ( type idx_merges_task_attempt_id (line 33) | CREATE INDEX idx_merges_task_attempt_id ON merges(task_attempt_id) type idx_merges_open_pr (line 36) | CREATE INDEX idx_merges_open_pr ON merges(task_attempt_id, pr_status) FILE: crates/db/migrations/20250906120000_add_follow_up_drafts.sql type follow_up_drafts (line 4) | CREATE TABLE IF NOT EXISTS follow_up_drafts ( type idx_follow_up_drafts_task_attempt_id (line 18) | CREATE INDEX IF NOT EXISTS idx_follow_up_drafts_task_attempt_id FILE: crates/db/migrations/20250917123000_optimize_selects_and_cleanup_indexes.sql type idx_task_attempts_task_id_created_at (line 4) | CREATE INDEX IF NOT EXISTS idx_task_attempts_task_id_created_at type idx_task_attempts_created_at (line 8) | CREATE INDEX IF NOT EXISTS idx_task_attempts_created_at type idx_execution_processes_task_attempt_created_at (line 12) | CREATE INDEX IF NOT EXISTS idx_execution_processes_task_attempt_created_at type idx_tasks_project_created_at (line 19) | CREATE INDEX IF NOT EXISTS idx_tasks_project_created_at FILE: crates/db/migrations/20250921222241_unify_drafts_tables.sql type drafts (line 5) | CREATE TABLE IF NOT EXISTS drafts ( type idx_drafts_task_attempt_id (line 25) | CREATE INDEX IF NOT EXISTS idx_drafts_task_attempt_id type idx_drafts_draft_type (line 28) | CREATE INDEX IF NOT EXISTS idx_drafts_draft_type type idx_drafts_queued_sending (line 31) | CREATE INDEX IF NOT EXISTS idx_drafts_queued_sending FILE: crates/db/migrations/20251020120000_convert_templates_to_tags.sql type tags (line 4) | CREATE TABLE tags ( FILE: crates/db/migrations/20251101090000_drop_execution_process_logs_pk.sql type execution_process_logs_new (line 13) | CREATE TABLE execution_process_logs_new ( type idx_execution_process_logs_execution_id_inserted_at (line 42) | CREATE INDEX IF NOT EXISTS idx_execution_process_logs_execution_id_inser... FILE: crates/db/migrations/20251114000000_create_shared_tasks.sql type shared_tasks (line 3) | CREATE TABLE IF NOT EXISTS shared_tasks ( type idx_shared_tasks_remote_project (line 20) | CREATE INDEX IF NOT EXISTS idx_shared_tasks_remote_project type idx_shared_tasks_status (line 23) | CREATE INDEX IF NOT EXISTS idx_shared_tasks_status type shared_activity_cursors (line 26) | CREATE TABLE IF NOT EXISTS shared_activity_cursors ( type idx_tasks_shared_task_unique (line 35) | CREATE UNIQUE INDEX IF NOT EXISTS idx_tasks_shared_task_unique type idx_projects_remote_project_id (line 42) | CREATE UNIQUE INDEX IF NOT EXISTS idx_projects_remote_project_id FILE: crates/db/migrations/20251120000001_refactor_to_scratch.sql type scratch (line 1) | CREATE TABLE scratch ( type idx_scratch_created_at (line 10) | CREATE INDEX idx_scratch_created_at ON scratch(created_at) FILE: crates/db/migrations/20251202000000_migrate_to_electric.sql type idx_tasks_shared_task_unique (line 19) | CREATE UNIQUE INDEX IF NOT EXISTS idx_tasks_shared_task_unique FILE: crates/db/migrations/20251209000000_add_project_repositories.sql type repos (line 2) | CREATE TABLE repos ( type project_repos (line 12) | CREATE TABLE project_repos ( type idx_project_repos_project_id (line 24) | CREATE INDEX idx_project_repos_project_id ON project_repos(project_id) type idx_project_repos_repo_id (line 25) | CREATE INDEX idx_project_repos_repo_id ON project_repos(repo_id) type attempt_repos (line 28) | CREATE TABLE attempt_repos ( type idx_attempt_repos_attempt_id (line 39) | CREATE INDEX idx_attempt_repos_attempt_id ON attempt_repos(attempt_id) type idx_attempt_repos_repo_id (line 40) | CREATE INDEX idx_attempt_repos_repo_id ON attempt_repos(repo_id) type execution_process_repo_states (line 43) | CREATE TABLE execution_process_repo_states ( type idx_eprs_process_id (line 56) | CREATE INDEX idx_eprs_process_id ON execution_process_repo_states(execut... type idx_eprs_repo_id (line 57) | CREATE INDEX idx_eprs_repo_id ON execution_process_repo_states(repo_id) type idx_merges_repo_id (line 61) | CREATE INDEX idx_merges_repo_id ON merges(repo_id) type idx_merges_repo_id (line 117) | CREATE INDEX idx_merges_repo_id ON merges(repo_id) type projects_new (line 155) | CREATE TABLE projects_new ( type idx_projects_remote_project_id (line 175) | CREATE UNIQUE INDEX IF NOT EXISTS idx_projects_remote_project_id FILE: crates/db/migrations/20251216142123_refactor_task_attempts_to_workspaces_sessions.sql type sessions (line 13) | CREATE TABLE sessions ( type idx_sessions_workspace_id (line 22) | CREATE INDEX idx_sessions_workspace_id ON sessions(workspace_id) type idx_merges_workspace_id (line 35) | CREATE INDEX idx_merges_workspace_id ON merges(workspace_id) type idx_merges_open_pr (line 36) | CREATE INDEX idx_merges_open_pr ON merges(workspace_id, pr_status) type idx_tasks_parent_workspace_id (line 42) | CREATE INDEX idx_tasks_parent_workspace_id ON tasks(parent_workspace_id) type execution_processes_new (line 58) | CREATE TABLE execution_processes_new ( type idx_execution_processes_session_id (line 85) | CREATE INDEX idx_execution_processes_session_id ON execution_processes(s... type idx_execution_processes_status (line 86) | CREATE INDEX idx_execution_processes_status ON execution_processes(status) type idx_execution_processes_run_reason (line 87) | CREATE INDEX idx_execution_processes_run_reason ON execution_processes(r... type idx_execution_processes_session_status_run_reason (line 90) | CREATE INDEX idx_execution_processes_session_status_run_reason type idx_execution_processes_session_run_reason_created (line 93) | CREATE INDEX idx_execution_processes_session_run_reason_created type coding_agent_turns (line 99) | CREATE TABLE coding_agent_turns ( type idx_coding_agent_turns_execution_process_id (line 117) | CREATE INDEX idx_coding_agent_turns_execution_process_id ON coding_agent... type idx_coding_agent_turns_agent_session_id (line 118) | CREATE INDEX idx_coding_agent_turns_agent_session_id ON coding_agent_tur... type idx_workspace_repos_workspace_id (line 125) | CREATE INDEX idx_workspace_repos_workspace_id ON workspace_repos(workspa... type idx_workspace_repos_repo_id (line 126) | CREATE INDEX idx_workspace_repos_repo_id ON workspace_repos(repo_id) FILE: crates/db/migrations/20251219164205_add_missing_indexes_for_slow_queries.sql type idx_sessions_workspace_id_created_at (line 1) | CREATE INDEX IF NOT EXISTS idx_sessions_workspace_id_created_at type idx_projects_created_at (line 4) | CREATE INDEX IF NOT EXISTS idx_projects_created_at type idx_workspaces_container_ref (line 7) | CREATE INDEX IF NOT EXISTS idx_workspaces_container_ref type idx_eprs_process_repo (line 11) | CREATE INDEX IF NOT EXISTS idx_eprs_process_repo FILE: crates/db/migrations/20260112160045_add_composite_indexes_for_performance.sql type idx_workspace_repos_lookup (line 4) | CREATE INDEX IF NOT EXISTS idx_workspace_repos_lookup type idx_merges_type_status (line 10) | CREATE INDEX IF NOT EXISTS idx_merges_type_status FILE: crates/db/migrations/20260128000000_add_migration_state.sql type migration_state (line 2) | CREATE TABLE IF NOT EXISTS migration_state ( type idx_migration_state_status (line 15) | CREATE INDEX idx_migration_state_status ON migration_state(status) type idx_migration_state_entity_type (line 16) | CREATE INDEX idx_migration_state_entity_type ON migration_state(entity_t... type idx_migration_state_entity_lookup (line 17) | CREATE INDEX idx_migration_state_entity_lookup ON migration_state(entity... FILE: crates/db/migrations/20260203000000_add_archive_script_to_repos.sql type idx_execution_processes_run_reason (line 34) | CREATE INDEX idx_execution_processes_run_reason type idx_execution_processes_session_status_run_reason (line 37) | CREATE INDEX idx_execution_processes_session_status_run_reason type idx_execution_processes_session_run_reason_created (line 40) | CREATE INDEX idx_execution_processes_session_run_reason_created FILE: crates/db/migrations/20260217120312_remove_task_fk_from_workspaces.sql type workspaces_new (line 12) | CREATE TABLE workspaces_new ( type idx_workspaces_task_id_created_at (line 36) | CREATE INDEX idx_workspaces_task_id_created_at type idx_workspaces_created_at (line 38) | CREATE INDEX idx_workspaces_created_at type idx_workspaces_container_ref (line 40) | CREATE INDEX idx_workspaces_container_ref type workspace_images (line 51) | CREATE TABLE workspace_images ( type idx_workspace_images_workspace_id (line 61) | CREATE INDEX idx_workspace_images_workspace_id ON workspace_images(works... type idx_workspace_images_image_id (line 62) | CREATE INDEX idx_workspace_images_image_id ON workspace_images(image_id) FILE: crates/db/migrations/20260317120000_cleanup_attachment_schema.sql type idx_attachments_hash (line 19) | CREATE INDEX idx_attachments_hash ON attachments(hash) type idx_task_attachments_task_id (line 20) | CREATE INDEX idx_task_attachments_task_id ON task_attachments(task_id) type idx_task_attachments_attachment_id (line 21) | CREATE INDEX idx_task_attachments_attachment_id ON task_attachments(atta... type idx_workspace_attachments_workspace_id (line 22) | CREATE INDEX idx_workspace_attachments_workspace_id type idx_workspace_attachments_attachment_id (line 24) | CREATE INDEX idx_workspace_attachments_attachment_id FILE: crates/db/src/lib.rs function run_migrations (line 12) | async fn run_migrations(pool: &Pool) -> Result<(), Error> { type DBService (line 71) | pub struct DBService { method new (line 76) | pub async fn new() -> Result { method new_migration_pool (line 89) | pub async fn new_migration_pool() -> Result, Error> { method new_with_after_connect (line 104) | pub async fn new_with_after_connect(after_connect: F) -> Result(after_connect: Option>) -> Result Result Result Result, sqlx... method has_running_coding_agent_for_session (line 283) | pub async fn has_running_coding_agent_for_session( method has_running_non_dev_server_processes_for_workspace (line 301) | pub async fn has_running_non_dev_server_processes_for_workspace( method find_running_dev_servers_by_workspace (line 320) | pub async fn find_running_dev_servers_by_workspace( method find_latest_by_session_and_run_reason (line 353) | pub async fn find_latest_by_session_and_run_reason( method find_latest_by_workspace_and_run_reason (line 383) | pub async fn find_latest_by_workspace_and_run_reason( method create (line 420) | pub async fn create( method was_stopped (line 455) | pub async fn was_stopped(pool: &SqlitePool, id: Uuid) -> bool { method update_completion (line 468) | pub async fn update_completion( method executor_action (line 495) | pub fn executor_action(&self) -> Result<&ExecutorAction, anyhow::Error> { method drop_at_and_after (line 505) | pub async fn drop_at_and_after( method find_prev_after_head_commit (line 526) | pub async fn find_prev_after_head_commit( method parent_session (line 551) | pub async fn parent_session(&self, pool: &SqlitePool) -> Result Result { method count_distinct_processes (line 40) | pub async fn count_distinct_processes(pool: &SqlitePool) -> Result( method delete_all (line 75) | pub async fn delete_all(pool: &SqlitePool) -> Result<(), sqlx::Error> { method find_by_execution_id (line 83) | pub async fn find_by_execution_id( method stream_log_lines_by_execution_id (line 104) | pub fn stream_log_lines_by_execution_id<'a>( method parse_logs (line 119) | pub fn parse_logs(records: &[Self]) -> Result, serde_json:... method append_log_line (line 131) | pub async fn append_log_line( type ExecutionProcessLogMigrationInfo (line 17) | pub struct ExecutionProcessLogMigrationInfo { FILE: crates/db/src/models/execution_process_repo_state.rs type ExecutionProcessRepoState (line 8) | pub struct ExecutionProcessRepoState { method create_many (line 30) | pub async fn create_many( method update_before_head_commit (line 70) | pub async fn update_before_head_commit( method update_after_head_commit (line 92) | pub async fn update_after_head_commit( method set_merge_commit (line 114) | pub async fn set_merge_commit( method find_by_execution_process_id (line 136) | pub async fn find_by_execution_process_id( type CreateExecutionProcessRepoState (line 22) | pub struct CreateExecutionProcessRepoState { FILE: crates/db/src/models/file.rs type File (line 8) | pub struct File { method create (line 29) | pub async fn create(pool: &SqlitePool, data: &CreateFile) -> Result Result Result Result<(), sqlx::E... method find_orphaned_files (line 145) | pub async fn find_orphaned_files(pool: &SqlitePool) -> Result Option { method create_direct (line 88) | pub async fn create_direct( method create_pr (line 129) | pub async fn create_pr( method find_all_pr (line 172) | pub async fn find_all_pr(pool: &SqlitePool) -> Result, sq... method get_open_prs (line 198) | pub async fn get_open_prs(pool: &SqlitePool) -> Result, s... method count_open_prs_for_workspace (line 224) | pub async fn count_open_prs_for_workspace( method update_status (line 243) | pub async fn update_status( method find_by_workspace_id (line 272) | pub async fn find_by_workspace_id( method find_by_workspace_and_repo_id (line 305) | pub async fn find_by_workspace_and_repo_id( method get_latest_pr_status_for_workspaces (line 339) | pub async fn get_latest_pr_status_for_workspaces( method from (line 421) | fn from(row: MergeRow) -> Self { type DirectMerge (line 27) | pub struct DirectMerge { method from (line 387) | fn from(row: MergeRow) -> Self { type PrMerge (line 38) | pub struct PrMerge { method from (line 402) | fn from(row: MergeRow) -> Self { type PullRequestInfo (line 48) | pub struct PullRequestInfo { type MergeType (line 58) | pub enum MergeType { type MergeRow (line 64) | struct MergeRow { FILE: crates/db/src/models/migration_state.rs type MigrationStateError (line 9) | pub enum MigrationStateError { type EntityType (line 18) | pub enum EntityType { type MigrationStatus (line 29) | pub enum MigrationStatus { type MigrationState (line 38) | pub struct MigrationState { method find_all (line 57) | pub async fn find_all(pool: &SqlitePool) -> Result, Migratio... method find_by_entity_type (line 78) | pub async fn find_by_entity_type( method find_by_status (line 105) | pub async fn find_by_status( method find_pending_by_type (line 132) | pub async fn find_pending_by_type( method find_by_entity (line 159) | pub async fn find_by_entity( method get_remote_id (line 187) | pub async fn get_remote_id( method create (line 205) | pub async fn create<'e, E>( method upsert (line 237) | pub async fn upsert<'e, E>( method mark_migrated (line 271) | pub async fn mark_migrated<'e, E>( method mark_failed (line 297) | pub async fn mark_failed<'e, E>( method mark_skipped (line 323) | pub async fn mark_skipped<'e, E>( method reset_failed (line 348) | pub async fn reset_failed(pool: &SqlitePool) -> Result Result Result Result, sqlx::Er... method set_remote_project_id (line 36) | pub async fn set_remote_project_id( FILE: crates/db/src/models/repo.rs type SearchResult (line 12) | pub struct SearchResult { type SearchMatchType (line 22) | pub enum SearchMatchType { type RepoError (line 29) | pub enum RepoError { type Repo (line 37) | pub struct Repo { method list_needing_name_fix (line 134) | pub async fn list_needing_name_fix(pool: &SqlitePool) -> Result Result Result( method delete_orphaned (line 259) | pub async fn delete_orphaned(pool: &SqlitePool) -> Result Result, sqlx::Er... method list_by_recent_workspace_usage (line 294) | pub async fn list_by_recent_workspace_usage( method active_workspace_names (line 326) | pub async fn active_workspace_names( method delete (line 348) | pub async fn delete(pool: &SqlitePool, id: Uuid) -> Result ScratchType { method validate_type (line 247) | pub fn validate_type(&self, expected: ScratchType) -> Result<(), Scrat... type ScratchRow (line 260) | struct ScratchRow { type Scratch (line 269) | pub struct Scratch { method scratch_type (line 278) | pub fn scratch_type(&self) -> ScratchType { type Error (line 284) | type Error = ScratchError; method try_from (line 285) | fn try_from(r: ScratchRow) -> Result { method create (line 315) | pub async fn create( method find_by_id (line 345) | pub async fn find_by_id( method find_all (line 373) | pub async fn find_all(pool: &SqlitePool) -> Result, ScratchE... method update (line 399) | pub async fn update( method delete (line 434) | pub async fn delete( method find_by_rowid (line 450) | pub async fn find_by_rowid( type CreateScratch (line 304) | pub struct CreateScratch { type UpdateScratch (line 310) | pub struct UpdateScratch { FILE: crates/db/src/models/session.rs type SessionError (line 11) | pub enum SessionError { type Session (line 23) | pub struct Session { method find_by_id (line 40) | pub async fn find_by_id(pool: &SqlitePool, id: Uuid) -> Result Result, sqlx::Er... method find_by_id (line 40) | pub async fn find_by_id(pool: &SqlitePool, id: Uuid) -> Result Result Result Result, sqlx::Er... method find_by_id (line 47) | pub async fn find_by_id(pool: &SqlitePool, id: Uuid) -> Result Result, Workspa... method load_context (line 124) | pub async fn load_context( method update_container_ref (line 146) | pub async fn update_container_ref( method mark_worktree_deleted (line 163) | pub async fn mark_worktree_deleted( method clear_worktree_deleted (line 176) | pub async fn clear_worktree_deleted( method touch (line 191) | pub async fn touch(pool: &SqlitePool, workspace_id: Uuid) -> Result<()... method find_by_id (line 201) | pub async fn find_by_id(pool: &SqlitePool, id: Uuid) -> Result Result( method set_archived (line 417) | pub async fn set_archived( method update (line 434) | pub async fn update( method get_first_user_message (line 463) | pub async fn get_first_user_message( method extract_first_prompt_from_executor_action (line 489) | fn extract_first_prompt_from_executor_action(action: &ExecutorAction) ... method truncate_to_name (line 510) | pub fn truncate_to_name(prompt: &str, max_len: usize) -> String { method find_all_with_status (line 524) | pub async fn find_all_with_status( method delete (line 612) | pub async fn delete(pool: &SqlitePool, id: Uuid) -> Result Result &Self::Target { type CreateFollowUpAttempt (line 73) | pub struct CreateFollowUpAttempt { type AttemptResumeContext (line 79) | pub struct AttemptResumeContext { type WorkspaceContext (line 85) | pub struct WorkspaceContext { type CreateWorkspace (line 92) | pub struct CreateWorkspace { function best_matching_container_ref_prefers_deepest_match (line 713) | fn best_matching_container_ref_prefers_deepest_match() { function best_matching_container_ref_supports_parent_request_path (line 725) | fn best_matching_container_ref_supports_parent_request_path() { function best_matching_container_ref_ignores_unrelated_paths (line 736) | fn best_matching_container_ref_ignores_unrelated_paths() { FILE: crates/db/src/models/workspace_repo.rs type WorkspaceRepo (line 12) | pub struct WorkspaceRepo { method create_many (line 46) | pub async fn create_many( method find_by_workspace_id (line 87) | pub async fn find_by_workspace_id( method find_repos_for_workspace (line 107) | pub async fn find_repos_for_workspace( method find_repos_with_target_branch_for_workspace (line 137) | pub async fn find_repos_with_target_branch_for_workspace( method find_by_workspace_and_repo_id (line 190) | pub async fn find_by_workspace_and_repo_id( method update_target_branch (line 212) | pub async fn update_target_branch( method update_target_branch_for_children_of_workspace (line 229) | pub async fn update_target_branch_for_children_of_workspace( method find_unique_repos_for_task (line 253) | pub async fn find_unique_repos_for_task( method find_repos_with_copy_files (line 285) | pub async fn find_repos_with_copy_files( type CreateWorkspaceRepo (line 24) | pub struct CreateWorkspaceRepo { type RepoWithTargetBranch (line 30) | pub struct RepoWithTargetBranch { type RepoWithCopyFiles (line 38) | pub struct RepoWithCopyFiles { FILE: crates/deployment/src/lib.rs type RemoteClientNotConfigured (line 38) | pub struct RemoteClientNotConfigured; type DeploymentError (line 41) | pub enum DeploymentError { type Deployment (line 75) | pub trait Deployment: Clone + Send + Sync + 'static { method new (line 76) | async fn new() -> Result; method user_id (line 78) | fn user_id(&self) -> &str; method config (line 80) | fn config(&self) -> &Arc>; method db (line 82) | fn db(&self) -> &DBService; method analytics (line 84) | fn analytics(&self) -> &Option; method container (line 86) | fn container(&self) -> &impl ContainerService; method git (line 88) | fn git(&self) -> &GitService; method repo (line 90) | fn repo(&self) -> &RepoService; method file (line 92) | fn file(&self) -> &FileService; method filesystem (line 94) | fn filesystem(&self) -> &FilesystemService; method events (line 96) | fn events(&self) -> &EventService; method file_search_cache (line 98) | fn file_search_cache(&self) -> &Arc; method approvals (line 100) | fn approvals(&self) -> &Approvals; method queued_message_service (line 102) | fn queued_message_service(&self) -> &QueuedMessageService; method auth_context (line 104) | fn auth_context(&self) -> &AuthContext; method relay_control (line 106) | fn relay_control(&self) -> &Arc; method relay_signing (line 108) | fn relay_signing(&self) -> &RelaySigningService; method server_info (line 110) | fn server_info(&self) -> &Arc; method trusted_key_auth (line 112) | fn trusted_key_auth(&self) -> &TrustedKeyAuthRuntime; method remote_client (line 114) | fn remote_client(&self) -> Result Option { method update_sentry_scope (line 122) | async fn update_sentry_scope(&self) -> Result<(), DeploymentError> { method track_if_analytics_allowed (line 132) | async fn track_if_analytics_allowed(&self, event_name: &str, propertie... method stream_events (line 140) | async fn stream_events( FILE: crates/executors/src/actions/coding_agent_follow_up.rs type CodingAgentFollowUpRequest (line 18) | pub struct CodingAgentFollowUpRequest { method effective_dir (line 33) | pub fn effective_dir(&self, current_dir: &Path) -> std::path::PathBuf { method base_executor (line 40) | pub fn base_executor(&self) -> BaseCodingAgent { method spawn (line 48) | async fn spawn( FILE: crates/executors/src/actions/coding_agent_initial.rs type CodingAgentInitialRequest (line 18) | pub struct CodingAgentInitialRequest { method base_executor (line 30) | pub fn base_executor(&self) -> BaseCodingAgent { method effective_dir (line 34) | pub fn effective_dir(&self, current_dir: &Path) -> std::path::PathBuf { method spawn (line 45) | async fn spawn( FILE: crates/executors/src/actions/mod.rs type ExecutorActionType (line 28) | pub enum ExecutorActionType { type ExecutorAction (line 36) | pub struct ExecutorAction { method new (line 42) | pub fn new(typ: ExecutorActionType, next_action: Option Self { method typ (line 54) | pub fn typ(&self) -> &ExecutorActionType { method next_action (line 58) | pub fn next_action(&self) -> Option<&ExecutorAction> { method base_executor (line 62) | pub fn base_executor(&self) -> Option { type Executable (line 76) | pub trait Executable { method spawn (line 77) | async fn spawn( method spawn (line 87) | async fn spawn( FILE: crates/executors/src/actions/review.rs type RepoReviewContext (line 17) | pub struct RepoReviewContext { type ReviewRequest (line 24) | pub struct ReviewRequest { method base_executor (line 39) | pub fn base_executor(&self) -> BaseCodingAgent { method effective_dir (line 43) | pub fn effective_dir(&self, current_dir: &Path) -> std::path::PathBuf { method spawn (line 53) | async fn spawn( FILE: crates/executors/src/actions/script.rs type ScriptRequestLanguage (line 17) | pub enum ScriptRequestLanguage { type ScriptContext (line 22) | pub enum ScriptContext { type ScriptRequest (line 31) | pub struct ScriptRequest { method spawn (line 43) | async fn spawn( FILE: crates/executors/src/approvals.rs type ExecutorApprovalError (line 11) | pub enum ExecutorApprovalError { method request_failed (line 23) | pub fn request_failed(err: E) -> Self { type ExecutorApprovalService (line 30) | pub trait ExecutorApprovalService: Send + Sync { method create_tool_approval (line 32) | async fn create_tool_approval(&self, tool_name: &str) -> Result) -> Self { method into_resolved (line 34) | pub async fn into_resolved(self) -> Result<(PathBuf, Vec), Exe... type CmdOverrides (line 44) | pub struct CmdOverrides { type CommandBuilder (line 66) | pub struct CommandBuilder { method new (line 74) | pub fn new>(base: S) -> Self { method params (line 81) | pub fn params(mut self, params: I) -> Self method override_base (line 90) | pub fn override_base>(mut self, base: S) -> Self { method extend_shell_params (line 95) | fn extend_shell_params(mut self, more: I) -> Result(mut self, more: I) -> Self method build_initial (line 133) | pub fn build_initial(&self) -> Result { method build_follow_up (line 137) | pub fn build_follow_up( method build (line 144) | fn build(&self, additional_args: &[String]) -> Result Result, CommandBuildEr... function apply_overrides (line 179) | pub fn apply_overrides( FILE: crates/executors/src/env.rs type RepoContext (line 10) | pub struct RepoContext { method new (line 17) | pub fn new(workspace_root: PathBuf, repo_names: Vec) -> Self { method repo_paths (line 24) | pub fn repo_paths(&self) -> Vec { method check_uncommitted_changes (line 34) | pub async fn check_uncommitted_changes(&self) -> String { type ExecutionEnv (line 79) | pub struct ExecutionEnv { method new (line 87) | pub fn new( method insert (line 101) | pub fn insert(&mut self, key: impl Into, value: impl Into) { method with_overrides (line 112) | pub fn with_overrides(mut self, overrides: &HashMap) -... method with_profile (line 118) | pub fn with_profile(self, cmd: &CmdOverrides) -> Self { method apply_to_command (line 127) | pub fn apply_to_command(&self, command: &mut Command) { method contains_key (line 133) | pub fn contains_key(&self, key: &str) -> bool { method get (line 137) | pub fn get(&self, key: &str) -> Option<&String> { function profile_overrides_runtime_env (line 147) | fn profile_overrides_runtime_env() { FILE: crates/executors/src/executor_discovery.rs type ExecutorDiscoveredOptions (line 12) | pub struct ExecutorDiscoveredOptions { method with_loading (line 22) | pub fn with_loading(mut self, loading: bool) -> Self { type ExecutorConfigCacheKey (line 31) | pub struct ExecutorConfigCacheKey { method new (line 38) | pub fn new(path: Option<&PathBuf>, cmd_key: String, base_executor: Bas... FILE: crates/executors/src/executors/acp/client.rs type AcpClient (line 17) | pub struct AcpClient { method new (line 26) | pub fn new( method record_user_prompt_event (line 39) | pub fn record_user_prompt_event(&self, prompt: &str) { method send_event (line 44) | fn send_event(&self, event: AcpEvent) { method enqueue_feedback (line 51) | pub async fn enqueue_feedback(&self, message: String) { method drain_feedback (line 60) | pub async fn drain_feedback(&self) -> Vec { method request_permission (line 68) | async fn request_permission( method session_notification (line 179) | async fn session_notification(&self, args: acp::SessionNotification) -... method write_text_file (line 198) | async fn write_text_file( method read_text_file (line 205) | async fn read_text_file( method create_terminal (line 213) | async fn create_terminal( method terminal_output (line 220) | async fn terminal_output( method release_terminal (line 227) | async fn release_terminal( method wait_for_terminal_exit (line 234) | async fn wait_for_terminal_exit( method kill_terminal_command (line 241) | async fn kill_terminal_command( method ext_method (line 249) | async fn ext_method(&self, _args: acp::ExtRequest) -> Result Resul... method handle_approval_error (line 259) | fn handle_approval_error( FILE: crates/executors/src/executors/acp/harness.rs type AcpAgentHarness (line 32) | pub struct AcpAgentHarness { method new (line 47) | pub fn new() -> Self { method with_session_namespace (line 56) | pub fn with_session_namespace(namespace: impl Into) -> Self { method with_model (line 64) | pub fn with_model(mut self, model: impl Into) -> Self { method with_mode (line 69) | pub fn with_mode(mut self, mode: impl Into) -> Self { method apply_overrides (line 74) | pub fn apply_overrides(&mut self, executor_config: &crate::profile::Ex... method spawn_with_command (line 84) | pub async fn spawn_with_command( method spawn_follow_up_with_command (line 136) | pub async fn spawn_follow_up_with_command( method bootstrap_acp_connection (line 189) | async fn bootstrap_acp_connection( method default (line 39) | fn default() -> Self { FILE: crates/executors/src/executors/acp/mod.rs type AcpEvent (line 17) | pub enum AcpEvent { method fmt (line 39) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Err (line 45) | type Err = serde_json::Error; method from_str (line 47) | fn from_str(s: &str) -> Result { type ApprovalResponse (line 53) | pub struct ApprovalResponse { FILE: crates/executors/src/executors/acp/normalize_logs.rs function normalize_logs (line 27) | pub fn normalize_logs( function normalize_logs_with_suppressed_stderr_patterns (line 34) | pub fn normalize_logs_with_suppressed_stderr_patterns( function normalize_acp_stderr_logs (line 682) | fn normalize_acp_stderr_logs( type PartialToolCallData (line 718) | struct PartialToolCallData { method extend (line 731) | fn extend(&mut self, tc: &agent_client_protocol::ToolCall, worktree_pa... method default (line 763) | fn default() -> Self { type AcpEventParser (line 778) | struct AcpEventParser; method parse_line (line 782) | pub fn parse_line(line: &str) -> Option { method parse_execute_command (line 795) | pub fn parse_execute_command(tc: &PartialToolCallData) -> String { type ParsedLine (line 817) | pub enum ParsedLine { type Error (line 825) | type Error = (); method try_from (line 827) | fn try_from(notification: SessionNotification) -> Result { type SearchArgs (line 847) | struct SearchArgs { type FetchArgs (line 852) | struct FetchArgs { type StreamingState (line 857) | struct StreamingState { type StreamingText (line 863) | struct StreamingText { type EditInput (line 870) | struct EditInput { FILE: crates/executors/src/executors/acp/session.rs type SessionManager (line 13) | pub struct SessionManager { method new (line 19) | pub fn new(namespace: impl Into) -> Result { method session_file_path (line 37) | fn session_file_path(&self, session_id: &str) -> PathBuf { method append_raw_line (line 49) | pub fn append_raw_line(&self, session_id: &str, raw_json: &str) -> Res... method normalize_session_event (line 70) | fn normalize_session_event(raw_json: &str) -> Option { method read_session_raw (line 115) | pub fn read_session_raw(&self, session_id: &str) -> Result { method fork_session (line 125) | pub fn fork_session(&self, old_id: &str, new_id: &str) -> Result<()> { method delete_session (line 144) | pub fn delete_session(&self, session_id: &str) -> Result<()> { method generate_resume_prompt (line 153) | pub fn generate_resume_prompt(&self, session_id: &str, current_prompt:... type SessionMetadata (line 176) | pub struct SessionMetadata { FILE: crates/executors/src/executors/amp.rs type Amp (line 22) | pub struct Amp { method build_command_builder (line 36) | fn build_command_builder(&self) -> Result Option { method get_preset_options (line 153) | fn get_preset_options(&self) -> ExecutorConfig { FILE: crates/executors/src/executors/claude.rs constant SUPPRESSED_STDERR_PATTERNS (line 59) | const SUPPRESSED_STDERR_PATTERNS: &[&str] = &["[WARN] Fast mode requires... function base_command (line 61) | fn base_command(claude_code_router: bool) -> &'static str { function normalize_claude_stderr_logs (line 69) | fn normalize_claude_stderr_logs( type ClaudeEffort (line 110) | pub enum ClaudeEffort { type ClaudeCode (line 119) | pub struct ClaudeCode { method build_command_builder (line 148) | async fn build_command_builder(&self) -> Result PermissionMode { method get_hooks (line 208) | pub fn get_hooks(&self, commit_reminder: bool) -> Option String { method spawn_internal (line 614) | async fn spawn_internal( function default_discovered_options (line 265) | fn default_discovered_options() -> crate::executor_discovery::ExecutorDi... method apply_overrides (line 315) | fn apply_overrides(&mut self, executor_config: &ExecutorConfig) { method use_approvals (line 343) | fn use_approvals(&mut self, approvals: Arc) { method spawn (line 347) | async fn spawn( method spawn_follow_up (line 359) | async fn spawn_follow_up( method normalize_logs (line 383) | fn normalize_logs( method discover_options (line 404) | async fn discover_options( method get_preset_options (line 566) | fn get_preset_options(&self) -> ExecutorConfig { method default_mcp_config_path (line 591) | fn default_mcp_config_path(&self) -> Option { method get_availability_info (line 595) | fn get_availability_info(&self) -> AvailabilityInfo { type HistoryStrategy (line 709) | pub enum HistoryStrategy { constant DEFAULT_CLAUDE_CONTEXT_WINDOW (line 717) | const DEFAULT_CLAUDE_CONTEXT_WINDOW: u32 = 200_000; type ClaudeLogProcessor (line 720) | pub struct ClaudeLogProcessor { method new (line 737) | fn new() -> Self { method new_with_strategy (line 741) | fn new_with_strategy(strategy: HistoryStrategy) -> Self { method process_logs (line 756) | pub fn process_logs( method extract_session_id (line 885) | fn extract_session_id(claude_json: &ClaudeJson) -> Option { method warn_if_unmanaged_key (line 906) | fn warn_if_unmanaged_key(src: &Option) -> Option Self { method content_block_start (line 2122) | fn content_block_start(&mut self, index: usize, content_block: ClaudeC... method apply_content_block_delta (line 2128) | fn apply_content_block_delta( method content_entry_index (line 2161) | fn content_entry_index(&self, content_index: usize) -> Option { type StreamingContentKind (line 2169) | enum StreamingContentKind { type StreamingContentState (line 2174) | struct StreamingContentState { method from_content_block (line 2181) | fn from_content_block(content_block: ClaudeContentItem) -> Option { method from_delta (line 2197) | fn from_delta(delta: &ClaudeContentBlockDelta) -> Option { method apply_content_delta (line 2213) | fn apply_content_delta(&mut self, delta: &ClaudeContentBlockDelta) { method to_content_item (line 2237) | fn to_content_item(&self) -> ClaudeContentItem { type ClaudeJson (line 2252) | pub enum ClaudeJson { type ClaudePlugin (line 2380) | pub struct ClaudePlugin { type ClaudeMessage (line 2386) | pub struct ClaudeMessage { type ClaudeMessageContent (line 2398) | pub enum ClaudeMessageContent { method items (line 2404) | fn items(&self) -> impl Iterator { method as_text (line 2411) | fn as_text(&self) -> Option<&String> { type ClaudeContentItem (line 2421) | pub enum ClaudeContentItem { type ClaudeStreamEvent (line 2442) | pub enum ClaudeStreamEvent { type ClaudeContentBlockDelta (line 2472) | pub enum ClaudeContentBlockDelta { type ClaudeMessageDelta (line 2487) | pub struct ClaudeMessageDelta { type ClaudeUsage (line 2495) | pub struct ClaudeUsage { type ClaudeModelUsage (line 2511) | pub struct ClaudeModelUsage { type ClaudeToolData (line 2519) | pub enum ClaudeToolData { method get_name (line 2718) | pub fn get_name(&self) -> &str { type ClaudeToolResultTextItem (line 2655) | struct ClaudeToolResultTextItem { type ClaudeToolWithInput (line 2660) | struct ClaudeToolWithInput { type AmpBashResult (line 2669) | struct AmpBashResult { type ClaudeToolCallInfo (line 2677) | struct ClaudeToolCallInfo { type AskUserQuestionInputItem (line 2686) | pub struct AskUserQuestionInputItem { type AskUserQuestionInputOption (line 2696) | pub struct AskUserQuestionInputOption { type ClaudeTodoItem (line 2702) | pub struct ClaudeTodoItem { type ClaudeEditItem (line 2712) | pub struct ClaudeEditItem { function patches_to_entries (line 2753) | fn patches_to_entries(patches: &[json_patch::Patch]) -> Vec Vec { function test_claude_json_parsing (line 2776) | fn test_claude_json_parsing() { function test_assistant_message_parsing (line 2804) | fn test_assistant_message_parsing() { function test_result_message_emits_final_text_if_not_seen (line 2818) | fn test_result_message_emits_final_text_if_not_seen() { function test_thinking_content (line 2832) | fn test_thinking_content() { function test_todo_tool_empty_list (line 2846) | fn test_todo_tool_empty_list() { function test_glob_tool_content_extraction (line 2862) | fn test_glob_tool_content_extraction() { function test_glob_tool_pattern_only (line 2881) | fn test_glob_tool_pattern_only() { function test_ls_tool_content_extraction (line 2900) | fn test_ls_tool_content_extraction() { function test_path_relative_conversion (line 2917) | fn test_path_relative_conversion() { function test_streaming_patch_generation (line 2930) | async fn test_streaming_patch_generation() { function test_session_id_extraction (line 2981) | fn test_session_id_extraction() { function test_amp_tool_aliases_create_file_and_edit_file (line 2998) | fn test_amp_tool_aliases_create_file_and_edit_file() { function test_amp_tool_aliases_oracle_mermaid_codebase_undo (line 3043) | fn test_amp_tool_aliases_oracle_mermaid_codebase_undo() { function test_amp_bash_and_task_content (line 3106) | fn test_amp_bash_and_task_content() { function test_task_description_or_prompt_backticks (line 3140) | fn test_task_description_or_prompt_backticks() { function test_tool_result_parsing_ignored (line 3180) | fn test_tool_result_parsing_ignored() { function test_content_item_tool_result_ignored (line 3196) | fn test_content_item_tool_result_ignored() { function test_api_key_source_warning (line 3206) | fn test_api_key_source_warning() { function test_mixed_content_with_thinking_ignores_tool_result (line 3247) | fn test_mixed_content_with_thinking_ignores_tool_result() { function test_control_request_with_permission_suggestions (line 3273) | fn test_control_request_with_permission_suggestions() { FILE: crates/executors/src/executors/claude/client.rs constant EXIT_PLAN_MODE_NAME (line 23) | const EXIT_PLAN_MODE_NAME: &str = "ExitPlanMode"; constant ASK_USER_QUESTION_NAME (line 24) | const ASK_USER_QUESTION_NAME: &str = "AskUserQuestion"; constant AUTO_APPROVE_CALLBACK_ID (line 25) | pub const AUTO_APPROVE_CALLBACK_ID: &str = "AUTO_APPROVE_CALLBACK_ID"; constant STOP_GIT_CHECK_CALLBACK_ID (line 26) | pub const STOP_GIT_CHECK_CALLBACK_ID: &str = "STOP_GIT_CHECK_CALLBACK_ID"; constant TOOL_DENY_PREFIX (line 28) | const TOOL_DENY_PREFIX: &str = "The user doesn't want to proceed with th... type ClaudeAgentClient (line 31) | pub struct ClaudeAgentClient { method new (line 42) | pub fn new( method handle_approval (line 60) | async fn handle_approval( method handle_question (line 145) | async fn handle_question( method handle_approval_error (line 233) | async fn handle_approval_error( method handle_question_error (line 259) | async fn handle_question_error( method on_can_use_tool (line 279) | pub async fn on_can_use_tool( method on_hook_callback (line 323) | pub async fn on_hook_callback( method log_message (line 382) | pub async fn log_message(&self, line: &str) -> Result<(), ExecutorErro... FILE: crates/executors/src/executors/claude/protocol.rs type ProtocolPeer (line 24) | pub struct ProtocolPeer { method spawn (line 29) | pub fn spawn( method read_loop (line 49) | async fn read_loop( method handle_control_request (line 107) | async fn handle_control_request( method send_hook_response (line 168) | pub async fn send_hook_response( method send_error (line 181) | async fn send_error(&self, request_id: String, error: String) -> Resul... method send_json (line 189) | async fn send_json(&self, message: &T) -> Result<... method send_user_message (line 198) | pub async fn send_user_message(&self, content: String) -> Result<(), E... method initialize (line 203) | pub async fn initialize(&self, hooks: Option) -> Re... method interrupt (line 209) | pub async fn interrupt(&self) -> Result<(), ExecutorError> { method set_permission_mode (line 214) | pub async fn set_permission_mode(&self, mode: PermissionMode) -> Resul... FILE: crates/executors/src/executors/claude/slash_commands.rs constant SLASH_COMMANDS_DISCOVERY_TIMEOUT (line 25) | const SLASH_COMMANDS_DISCOVERY_TIMEOUT: Duration = Duration::from_secs(1... method extract_description (line 28) | fn extract_description(content: &str) -> Option { method make_key (line 46) | fn make_key(prefix: &Option, name: &str) -> String { method try_read_description (line 53) | async fn try_read_description(path: &Path) -> Option { method scan_dir (line 66) | async fn scan_dir( method scan_base_path (line 84) | async fn scan_base_path(base_path: &Path, prefix: Option) -> Has... method discover_custom_command_descriptions (line 116) | pub async fn discover_custom_command_descriptions( method hardcoded_slash_commands (line 142) | pub(super) fn hardcoded_slash_commands() -> Vec { method build_slash_commands_discovery_command_builder (line 194) | async fn build_slash_commands_discovery_command_builder( method discover_available_command_and_plugins (line 213) | async fn discover_available_command_and_plugins( method discover_available_slash_commands (line 284) | pub async fn discover_available_slash_commands( method discover_available_agents (line 316) | pub async fn discover_available_agents( method discover_agents_and_slash_commands_initial (line 327) | pub async fn discover_agents_and_slash_commands_initial( method fill_slash_command_descriptions (line 362) | pub async fn fill_slash_command_descriptions( method map_discovered_agents (line 381) | fn map_discovered_agents(agents: Vec) -> Vec { method format_agent_label (line 403) | fn format_agent_label(raw: &str) -> String { FILE: crates/executors/src/executors/claude/types.rs type CLIMessage (line 11) | pub enum CLIMessage { type SDKControlRequest (line 29) | pub struct SDKControlRequest { method new (line 37) | pub fn new(request: SDKControlRequestType) -> Self { type ControlResponseMessage (line 49) | pub struct ControlResponseMessage { method new (line 56) | pub fn new(response: ControlResponseType) -> Self { type ControlRequestType (line 67) | pub enum ControlRequestType { type PermissionResult (line 90) | pub enum PermissionResult { type PermissionUpdateType (line 106) | pub enum PermissionUpdateType { type PermissionUpdateDestination (line 117) | pub enum PermissionUpdateDestination { type PermissionRuleValue (line 128) | pub struct PermissionRuleValue { type PermissionUpdate (line 137) | pub struct PermissionUpdate { type ControlResponseType (line 155) | pub enum ControlResponseType { type Message (line 170) | pub enum Message { method new_user (line 181) | pub fn new_user(content: String) -> Self { type ClaudeUserMessage (line 175) | pub struct ClaudeUserMessage { type SDKControlRequestType (line 193) | pub enum SDKControlRequestType { type PermissionMode (line 206) | pub enum PermissionMode { method as_str (line 214) | pub fn as_str(&self) -> &'static str { method fmt (line 225) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { FILE: crates/executors/src/executors/codex.rs function codex_home (line 18) | pub fn codex_home() -> Option { function resolve_model (line 27) | pub(crate) fn resolve_model(model: Option<&str>) -> (Option<&str>, bool) { function fork_params_from (line 34) | pub(crate) fn fork_params_from(thread_id: String, params: ThreadStartPar... type SandboxMode (line 89) | pub enum SandboxMode { type AskForApproval (line 108) | pub enum AskForApproval { type ReasoningEffort (line 119) | pub enum ReasoningEffort { type ReasoningSummary (line 130) | pub enum ReasoningSummary { type ReasoningSummaryFormat (line 141) | pub enum ReasoningSummaryFormat { type CodexSessionAction (line 146) | enum CodexSessionAction { type Codex (line 153) | pub struct Codex { method base_command (line 431) | pub fn base_command() -> &'static str { method build_command_builder (line 435) | fn build_command_builder(&self) -> Result ThreadStartParams { method build_config_overrides (line 515) | fn build_config_overrides(&self) -> Option> { method spawn_inner (line 548) | async fn spawn_inner( method launch_codex_agent (line 577) | async fn launch_codex_agent( method spawn_app_server (line 624) | async fn spawn_app_server( method apply_overrides (line 195) | fn apply_overrides(&mut self, executor_config: &ExecutorConfig) { method use_approvals (line 223) | fn use_approvals(&mut self, approvals: Arc) { method spawn (line 227) | async fn spawn( method spawn_follow_up (line 237) | async fn spawn_follow_up( method normalize_logs (line 249) | fn normalize_logs( method default_mcp_config_path (line 257) | fn default_mcp_config_path(&self) -> Option { method get_availability_info (line 261) | fn get_availability_info(&self) -> AvailabilityInfo { method get_preset_options (line 289) | fn get_preset_options(&self) -> ExecutorConfig { method discover_options (line 312) | async fn discover_options( method spawn_review (line 411) | async fn spawn_review( FILE: crates/executors/src/executors/codex/client.rs type PendingPlan (line 43) | struct PendingPlan { type AppServerClient (line 47) | pub struct AppServerClient { method new (line 66) | pub fn new( method connect (line 94) | pub fn connect(&self, peer: JsonRpcPeer) { method set_resolved_model (line 98) | pub fn set_resolved_model(&self, model: String) { method rpc (line 102) | fn rpc(&self) -> &JsonRpcPeer { method log_writer (line 106) | pub fn log_writer(&self) -> &LogWriter { method initialize (line 110) | pub async fn initialize(&self) -> Result<(), ExecutorError> { method thread_start (line 131) | pub async fn thread_start( method thread_fork (line 142) | pub async fn thread_fork( method turn_start (line 153) | pub async fn turn_start( method turn_start_with_mode (line 161) | pub async fn turn_start_with_mode( method collaboration_mode (line 179) | fn collaboration_mode(&self, mode: ModeKind) -> Result Result Result Result Result<(), Ex... method send_message (line 646) | async fn send_message(&self, message: &M) -> Result<(), ExecutorError> method send_request (line 653) | async fn send_request(&self, request: ClientRequest, label: &str) -... method next_request_id (line 663) | fn next_request_id(&self) -> RequestId { method command_execution_decision (line 667) | fn command_execution_decision( method file_change_decision (line 694) | fn file_change_decision( method enqueue_feedback (line 721) | async fn enqueue_feedback(&self, message: String) { method flush_pending_feedback (line 731) | async fn flush_pending_feedback(&self) -> bool { method spawn_turn_start (line 761) | fn spawn_turn_start( method spawn_user_message (line 796) | fn spawn_user_message(&self, thread_id: String, message: String) { method on_request (line 803) | async fn on_request( method on_response (line 823) | async fn on_response( method on_error (line 832) | async fn on_error( method on_notification (line 841) | async fn on_notification( method on_non_json (line 905) | async fn on_non_json(&self, raw: &str) -> Result<(), ExecutorError> { function send_server_response (line 911) | async fn send_server_response( function answers_to_codex_format (line 930) | fn answers_to_codex_format( function request_id (line 953) | fn request_id(request: &ClientRequest) -> RequestId { type LogWriter (line 972) | pub struct LogWriter { method new (line 977) | pub fn new(writer: impl AsyncWrite + Send + Unpin + 'static) -> Self { method log_raw (line 983) | pub async fn log_raw(&self, raw: &str) -> Result<(), ExecutorError> { FILE: crates/executors/src/executors/codex/jsonrpc.rs type PendingResponse (line 34) | pub enum PendingResponse { type ExitSignalSender (line 41) | pub struct ExitSignalSender { method new (line 46) | pub fn new(sender: oneshot::Sender) -> Self { method send_exit_signal (line 52) | pub async fn send_exit_signal(&self, result: ExecutorExitResult) { type JsonRpcPeer (line 60) | pub struct JsonRpcPeer { method spawn (line 67) | pub fn spawn( method next_request_id (line 176) | pub fn next_request_id(&self) -> RequestId { method register (line 180) | pub async fn register(&self, request_id: RequestId) -> PendingReceiver { method resolve (line 186) | pub async fn resolve(&self, request_id: RequestId, response: PendingRe... method shutdown (line 192) | pub async fn shutdown(&self) -> Result<(), ExecutorError> { method send (line 200) | pub async fn send(&self, message: &T) -> Result<(), ExecutorError> method request (line 209) | pub async fn request( method send_raw (line 225) | async fn send_raw(&self, payload: &str) -> Result<(), ExecutorError> { type PendingReceiver (line 237) | pub type PendingReceiver = oneshot::Receiver; function await_response (line 239) | pub async fn await_response( type JsonRpcCallbacks (line 276) | pub trait JsonRpcCallbacks: Send + Sync { method on_request (line 277) | async fn on_request( method on_response (line 284) | async fn on_response( method on_error (line 291) | async fn on_error( method on_notification (line 298) | async fn on_notification( method on_non_json (line 305) | async fn on_non_json(&self, _raw: &str) -> Result<(), ExecutorError>; FILE: crates/executors/src/executors/codex/normalize_logs.rs type ToNormalizedEntry (line 53) | trait ToNormalizedEntry { method to_normalized_entry (line 54) | fn to_normalized_entry(&self) -> NormalizedEntry; method to_normalized_entry (line 87) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 127) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 160) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 187) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 210) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 278) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 311) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 1618) | fn to_normalized_entry(&self) -> NormalizedEntry { type ToNormalizedEntryOpt (line 57) | trait ToNormalizedEntryOpt { method to_normalized_entry_opt (line 58) | fn to_normalized_entry_opt(&self) -> Option; method to_normalized_entry_opt (line 1706) | fn to_normalized_entry_opt(&self) -> Option { type CodexNotificationParams (line 62) | struct CodexNotificationParams { type StreamingText (line 68) | struct StreamingText { type CommandState (line 74) | struct CommandState { type McpToolState (line 119) | struct McpToolState { type WebSearchState (line 147) | struct WebSearchState { method new (line 154) | fn new() -> Self { type UserInputRequestState (line 179) | struct UserInputRequestState { type PlanState (line 203) | struct PlanState { type ReviewState (line 226) | struct ReviewState { method complete (line 234) | fn complete(&mut self, review_event: &ExitedReviewModeEvent, worktree_... type PatchState (line 297) | struct PatchState { type PatchEntry (line 301) | struct PatchEntry { type LogState (line 333) | struct LogState { method new (line 359) | fn new(entry_index: EntryIndexProvider) -> Self { method streaming_text_update (line 379) | fn streaming_text_update( method streaming_text_append (line 415) | fn streaming_text_append( method streaming_text_set (line 423) | fn streaming_text_set( method assistant_message_append (line 431) | fn assistant_message_append(&mut self, content: String) -> (Normalized... method thinking_append (line 435) | fn thinking_append(&mut self, content: String) -> (NormalizedEntry, us... method assistant_message (line 439) | fn assistant_message(&mut self, content: String) -> (NormalizedEntry, ... method thinking (line 443) | fn thinking(&mut self, content: String) -> (NormalizedEntry, usize, bo... method update_tool_status (line 447) | fn update_tool_status( type ModelParamsState (line 347) | struct ModelParamsState { type StreamingTextKind (line 353) | enum StreamingTextKind { type UpdateMode (line 491) | enum UpdateMode { function normalize_file_changes (line 496) | fn normalize_file_changes( function format_todo_status (line 533) | fn format_todo_status(status: &StepStatus) -> String { constant SUPPRESSED_STDERR_PATTERNS (line 543) | const SUPPRESSED_STDERR_PATTERNS: &[&str] = &[ function normalize_codex_stderr_logs (line 551) | fn normalize_codex_stderr_logs( function normalize_logs (line 585) | pub fn normalize_logs( function handle_jsonrpc_response (line 1504) | fn handle_jsonrpc_response( function handle_model_params (line 1534) | fn handle_model_params( function build_command_output (line 1571) | fn build_command_output(stdout: Option<&str>, stderr: Option<&str>) -> O... type Error (line 1599) | pub enum Error { method launch_error (line 1605) | pub fn launch_error(error: String) -> Self { method auth_required (line 1608) | pub fn auth_required(error: String) -> Self { method raw (line 1612) | pub fn raw(&self) -> String { type Approval (line 1641) | pub enum Approval { method approval_requested (line 1659) | pub fn approval_requested(call_id: String, tool_name: String, approval... method approval_response (line 1667) | pub fn approval_response( method question_response (line 1679) | pub fn question_response(call_id: String, question_status: QuestionSta... method raw (line 1686) | pub fn raw(&self) -> String { method display_tool_name (line 1690) | pub fn display_tool_name(&self) -> String { FILE: crates/executors/src/executors/codex/review.rs function launch_codex_review (line 8) | pub async fn launch_codex_review( FILE: crates/executors/src/executors/codex/slash_commands.rs constant CODEX_INIT_PROMPT (line 24) | const CODEX_INIT_PROMPT: &str = include_str!("init_prompt.md"); constant DEFAULT_PROJECT_DOC_FILENAME (line 25) | const DEFAULT_PROJECT_DOC_FILENAME: &str = "AGENTS.md"; type CodexSlashCommand (line 28) | pub enum CodexSlashCommand { method parse (line 37) | pub fn parse(prompt: &str) -> Option { method spawn_slash_command (line 63) | pub async fn spawn_slash_command( method spawn_agent_with_prompt (line 121) | async fn spawn_agent_with_prompt( method handle_app_server_slash_command (line 141) | async fn handle_app_server_slash_command( method return_static_reply (line 248) | pub async fn return_static_reply( method spawn_static_reply_helper (line 270) | pub async fn spawn_static_reply_helper( function log_event_notification (line 296) | pub async fn log_event_notification( function log_event_raw (line 316) | pub async fn log_event_raw(log_writer: &LogWriter, message: String) -> R... function fetch_status_message (line 327) | async fn fetch_status_message( type RolloutEntry (line 483) | struct RolloutEntry { type TokenCountPayload (line 491) | struct TokenCountPayload { type RolloutTokenUsageInfo (line 496) | struct RolloutTokenUsageInfo { type RolloutTokenUsage (line 503) | struct RolloutTokenUsage { type TurnContextPayload (line 512) | struct TurnContextPayload { type RolloutData (line 520) | struct RolloutData { function read_rollout_data (line 525) | async fn read_rollout_data(session_id: &str) -> Option { function find_rollout_file (line 565) | async fn find_rollout_file(dir: &Path, session_id: &str) -> Option Result Result) { method apply_overrides (line 94) | fn apply_overrides(&mut self, executor_config: &ExecutorConfig) { method spawn (line 107) | async fn spawn( method spawn_follow_up (line 128) | async fn spawn_follow_up( method normalize_logs (line 152) | fn normalize_logs( method default_mcp_config_path (line 160) | fn default_mcp_config_path(&self) -> Option { method get_availability_info (line 164) | fn get_availability_info(&self) -> AvailabilityInfo { method get_preset_options (line 181) | fn get_preset_options(&self) -> ExecutorConfig { method discover_options (line 192) | async fn discover_options( FILE: crates/executors/src/executors/cursor.rs constant CURSOR_AUTH_REQUIRED_MSG (line 39) | const CURSOR_AUTH_REQUIRED_MSG: &str = "Authentication required. Please ... type CursorAgent (line 42) | pub struct CursorAgent { method base_command (line 140) | pub fn base_command() -> &'static str { method resolved_model (line 144) | fn resolved_model(&self) -> Option<&str> { method build_command_builder (line 150) | fn build_command_builder(&self) -> Result(base_model: &'a str, reasoning: Option<... function cursor_reasoning_options (line 112) | fn cursor_reasoning_options(base_model: &str) -> Vec { method apply_overrides (line 171) | fn apply_overrides(&mut self, executor_config: &ExecutorConfig) { method spawn (line 186) | async fn spawn( method spawn_follow_up (line 224) | async fn spawn_follow_up( method normalize_logs (line 265) | fn normalize_logs( method default_mcp_config_path (line 611) | fn default_mcp_config_path(&self) -> Option { method get_availability_info (line 615) | fn get_availability_info(&self) -> AvailabilityInfo { method get_preset_options (line 633) | fn get_preset_options(&self) -> ExecutorConfig { method discover_options (line 644) | async fn discover_options( type CursorJson (line 701) | pub enum CursorJson { method extract_session_id (line 766) | pub fn extract_session_id(&self) -> Option { type CursorMessage (line 780) | pub struct CursorMessage { method concat_text (line 786) | pub fn concat_text(&self) -> Option { type CursorContentItem (line 797) | pub enum CursorContentItem { type CursorToolCall (line 807) | pub enum CursorToolCall { method get_name (line 883) | pub fn get_name(&self) -> &str { method to_action_and_content (line 902) | pub fn to_action_and_content(&self, worktree_path: &str) -> (ActionTyp... function normalize_todo_status (line 1106) | fn normalize_todo_status(status: &str) -> String { type CursorShellOutcome (line 1121) | pub struct CursorShellOutcome { type CursorShellWrappedResult (line 1131) | pub struct CursorShellWrappedResult { type CursorShellResult (line 1140) | pub enum CursorShellResult { method into_outcome (line 1147) | pub fn into_outcome(self) -> Option { type CursorMcpTextInner (line 1157) | pub struct CursorMcpTextInner { type CursorMcpContentItem (line 1162) | pub struct CursorMcpContentItem { type CursorMcpOutcome (line 1168) | pub struct CursorMcpOutcome { type CursorMcpWrappedResult (line 1176) | pub struct CursorMcpWrappedResult { type CursorMcpResult (line 1185) | pub enum CursorMcpResult { method into_markdown (line 1192) | pub fn into_markdown(self) -> Option { type CursorShellArgs (line 1215) | pub struct CursorShellArgs { type CursorLsArgs (line 1224) | pub struct CursorLsArgs { type CursorGlobArgs (line 1231) | pub struct CursorGlobArgs { type CursorGrepArgs (line 1241) | pub struct CursorGrepArgs { type CursorSemSearchArgs (line 1260) | pub struct CursorSemSearchArgs { type CursorWriteArgs (line 1269) | pub struct CursorWriteArgs { type CursorReadArgs (line 1282) | pub struct CursorReadArgs { type CursorEditArgs (line 1291) | pub struct CursorEditArgs { type CursorEditResult (line 1303) | pub enum CursorEditResult { type CursorEditSuccessResult (line 1313) | pub struct CursorEditSuccessResult { type CursorApplyPatch (line 1328) | pub struct CursorApplyPatch { type CursorStrReplace (line 1334) | pub struct CursorStrReplace { type CursorMultiStrReplace (line 1344) | pub struct CursorMultiStrReplace { type CursorMultiEditItem (line 1349) | pub struct CursorMultiEditItem { type CursorDeleteArgs (line 1359) | pub struct CursorDeleteArgs { type CursorUpdateTodosArgs (line 1364) | pub struct CursorUpdateTodosArgs { type CursorMcpArgs (line 1370) | pub struct CursorMcpArgs { type CursorTodoItem (line 1381) | pub struct CursorTodoItem { function test_cursor_streaming_patch_generation (line 1407) | async fn test_cursor_streaming_patch_generation() { function test_session_id_extraction_from_system_line (line 1451) | fn test_session_id_extraction_from_system_line() { function test_cursor_tool_call_parsing (line 1459) | fn test_cursor_tool_call_parsing() { FILE: crates/executors/src/executors/cursor/mcp.rs function ensure_mcp_server_trust (line 10) | pub async fn ensure_mcp_server_trust(cursor: &CursorAgent, current_dir: ... function ensure_mcp_server_trust_impl (line 19) | async fn ensure_mcp_server_trust_impl( function cursor_project_slug (line 133) | fn cursor_project_slug(path: &Path) -> Option { function compute_cursor_approval_id (line 148) | fn compute_cursor_approval_id( function default_cursor_mcp_servers (line 169) | fn default_cursor_mcp_servers(cursor: &CursorAgent) -> serde_json::Value { FILE: crates/executors/src/executors/droid.rs type Autonomy (line 31) | pub enum Autonomy { function default_autonomy (line 39) | fn default_autonomy() -> Autonomy { type ReasoningEffortLevel (line 47) | pub enum ReasoningEffortLevel { type Droid (line 58) | pub struct Droid { method build_command_builder (line 88) | pub fn build_command_builder(&self) -> Result Option { method get_availability_info (line 202) | fn get_availability_info(&self) -> AvailabilityInfo { method get_preset_options (line 219) | fn get_preset_options(&self) -> ExecutorConfig { method discover_options (line 233) | async fn discover_options( FILE: crates/executors/src/executors/droid/normalize_logs.rs function normalize_logs (line 25) | pub fn normalize_logs( function normalize_stderr_logs (line 674) | fn normalize_stderr_logs( function extract_path_from_patch (line 712) | fn extract_path_from_patch(input: &str) -> String { function parse_apply_patch_result (line 726) | fn parse_apply_patch_result(value: &Value, worktree_path: &str) -> Optio... type ToolError (line 793) | pub struct ToolError { type ToolResultPayload (line 801) | pub enum ToolResultPayload { type EditToolResult (line 806) | pub struct EditToolResult {} type DroidJson (line 810) | pub enum DroidJson { method session_id (line 895) | pub fn session_id(&self) -> Option<&str> { type DroidErrorLog (line 874) | struct DroidErrorLog { type DroidErrorDetail (line 886) | struct DroidErrorDetail { type DroidToolData (line 909) | pub enum DroidToolData { type DroidTodoItem (line 995) | pub struct DroidTodoItem { type DroidEditItem (line 1005) | pub struct DroidEditItem { type ToNormalizedEntry (line 1010) | trait ToNormalizedEntry { method to_normalized_entry (line 1011) | fn to_normalized_entry(&self) -> NormalizedEntry; method to_normalized_entry (line 1022) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 1047) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 1074) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 1115) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 1146) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 1170) | fn to_normalized_entry(&self) -> NormalizedEntry { method to_normalized_entry (line 1196) | fn to_normalized_entry(&self) -> NormalizedEntry { type FileReadState (line 1015) | struct FileReadState { type FileEditState (line 1039) | struct FileEditState { type CommandRunState (line 1065) | struct CommandRunState { type TodoManagementState (line 1108) | struct TodoManagementState { type SearchState (line 1139) | struct SearchState { type WebFetchState (line 1163) | struct WebFetchState { type GenericToolState (line 1187) | struct GenericToolState { type ToolCallId (line 1220) | type ToolCallId = String; type PendingToolCall (line 1223) | enum PendingToolCall { type ToolCallStates (line 1235) | struct ToolCallStates { method new (line 1249) | fn new(entry_index: EntryIndexProvider) -> Self { FILE: crates/executors/src/executors/gemini.rs constant SUPPRESSED_STDERR_PATTERNS (line 25) | const SUPPRESSED_STDERR_PATTERNS: &[&str] = &[ type Gemini (line 32) | pub struct Gemini { method build_command_builder (line 48) | fn build_command_builder(&self) -> Result) { method spawn (line 84) | async fn spawn( method spawn_follow_up (line 110) | async fn spawn_follow_up( method normalize_logs (line 139) | fn normalize_logs( method default_mcp_config_path (line 151) | fn default_mcp_config_path(&self) -> Option { method get_availability_info (line 155) | fn get_availability_info(&self) -> AvailabilityInfo { method get_preset_options (line 183) | fn get_preset_options(&self) -> ExecutorConfig { method discover_options (line 199) | async fn discover_options( FILE: crates/executors/src/executors/mod.rs type SlashCommandDescription (line 48) | pub struct SlashCommandDescription { type BaseAgentCapability (line 58) | pub enum BaseAgentCapability { type ExecutorError (line 67) | pub enum ExecutorError { type CodingAgent (line 109) | pub enum CodingAgent { method get_mcp_config (line 127) | pub fn get_mcp_config(&self) -> McpConfig { method supports_mcp (line 173) | pub fn supports_mcp(&self) -> bool { method capabilities (line 177) | pub fn capabilities(&self) -> Vec { type AvailabilityInfo (line 205) | pub enum AvailabilityInfo { method is_available (line 212) | pub fn is_available(&self) -> bool { type StandardCodingAgentExecutor (line 222) | pub trait StandardCodingAgentExecutor { method apply_overrides (line 223) | fn apply_overrides(&mut self, _executor_config: &ExecutorConfig) {} method use_approvals (line 225) | fn use_approvals(&mut self, _approvals: Arc Option; method get_setup_helper_action (line 271) | async fn get_setup_helper_action(&self) -> Result AvailabilityInfo { method discover_options (line 289) | async fn discover_options( method get_preset_options (line 301) | fn get_preset_options(&self) -> ExecutorConfig; type ExecutorExitResult (line 306) | pub enum ExecutorExitResult { type ExecutorExitSignal (line 316) | pub type ExecutorExitSignal = tokio::sync::oneshot::Receiver Self { type AppendPrompt (line 349) | pub struct AppendPrompt(pub Option); method get (line 352) | pub fn get(&self) -> Option { method combine_prompt (line 356) | pub fn combine_prompt(&self, prompt: &str) -> String { function build_review_prompt (line 364) | pub fn build_review_prompt( function test_cursor_agent_deserialization (line 399) | fn test_cursor_agent_deserialization() { FILE: crates/executors/src/executors/opencode.rs type Opencode (line 46) | pub struct Opencode { method build_command_builder (line 91) | fn build_command_builder(&self) -> Result String { method spawn_server_process (line 105) | async fn spawn_server_process( method spawn_server (line 139) | async fn spawn_server( method spawn_inner (line 158) | async fn spawn_inner( method transform_models (line 254) | fn transform_models( type OpencodeServer (line 70) | struct OpencodeServer { method drop (line 78) | fn drop(&mut self) { type ServerPassword (line 88) | type ServerPassword = String; function map_opencode_agents (line 287) | fn map_opencode_agents(agents: &[SDKAgentInfo]) -> Vec { function format_tail (line 308) | fn format_tail(captured: Vec) -> String { function wait_for_server_url (line 320) | async fn wait_for_server_url( function default_discovered_options (line 370) | fn default_discovered_options() -> crate::executor_discovery::ExecutorDi... method apply_overrides (line 392) | fn apply_overrides(&mut self, executor_config: &ExecutorConfig) { method use_approvals (line 410) | fn use_approvals(&mut self, approvals: Arc) { method spawn (line 414) | async fn spawn( method spawn_follow_up (line 425) | async fn spawn_follow_up( method normalize_logs (line 439) | fn normalize_logs( method default_mcp_config_path (line 447) | fn default_mcp_config_path(&self) -> Option { method get_availability_info (line 472) | fn get_availability_info(&self) -> AvailabilityInfo { method discover_options (line 527) | async fn discover_options( method get_preset_options (line 756) | fn get_preset_options(&self) -> ExecutorConfig { function default_to_true (line 772) | fn default_to_true() -> bool { function setup_permissions_env (line 776) | fn setup_permissions_env(auto_approve: bool, env: &ExecutionEnv) -> Exec... function build_default_permissions (line 790) | fn build_default_permissions(auto_approve: bool) -> Option { function setup_compaction_env (line 798) | fn setup_compaction_env(auto_compact: bool, env: &ExecutionEnv) -> Execu... function merge_compaction_config (line 809) | fn merge_compaction_config(existing_json: Option<&str>) -> String { FILE: crates/executors/src/executors/opencode/models.rs type ProviderId (line 13) | type ProviderId = String; type ModelId (line 14) | type ModelId = String; type ContextWindowTokens (line 15) | type ContextWindowTokens = u32; type ModelContextWindows (line 18) | pub(super) type ModelContextWindows = HashMap<(ProviderId, ModelId), Con... type ModelCacheEntry (line 24) | struct ModelCacheEntry { type ModelContextCache (line 31) | struct ModelContextCache { method new (line 36) | fn new() -> Self { method get (line 42) | fn get(&self, cache_key: &str, provider: &str, model: &str) -> Option<... method update (line 58) | fn update( function get_model_context_window (line 88) | async fn get_model_context_window( function maybe_emit_token_usage (line 106) | pub(super) async fn maybe_emit_token_usage(context: &EventStreamContext<... function extract_context_windows (line 158) | pub(super) fn extract_context_windows(data: &ProviderListResponse) -> Mo... function seed_context_windows_cache (line 170) | pub(super) fn seed_context_windows_cache(cache_key: &str, windows: Model... function fetch_model_context_windows (line 176) | async fn fetch_model_context_windows( FILE: crates/executors/src/executors/opencode/normalize_logs.rs type MessageId (line 3) | type MessageId = String; type PartId (line 4) | type PartId = String; function system_message (line 35) | fn system_message(content: String) -> NormalizedEntry { function normalize_logs (line 44) | pub fn normalize_logs( function parse_event (line 191) | fn parse_event(line: &str) -> Option { type StreamingText (line 196) | struct StreamingText { type UpdateMode (line 202) | enum UpdateMode { type PartKind (line 208) | enum PartKind { type LogState (line 214) | struct LogState { method new (line 231) | fn new(entry_index: EntryIndexProvider, msg_store: Arc) -> S... method handle_sdk_event (line 249) | fn handle_sdk_event(&mut self, raw: &Value, worktree_path: &Path, msg_... method handle_session_status (line 337) | fn handle_session_status(&mut self, status: SessionStatus) { method handle_todo_updated (line 358) | fn handle_todo_updated(&mut self, todos: &[SdkTodo], msg_store: &Arc usize { method add_normalized_entry_with_index (line 811) | fn add_normalized_entry_with_index(&mut self, index: usize, entry: Nor... function update_streaming_text (line 819) | fn update_streaming_text( type ToolCallState (line 860) | struct ToolCallState { method new (line 933) | fn new(call_id: String) -> Self { method tool_name (line 952) | fn tool_name(&self) -> &str { method set_tool_name (line 956) | fn set_tool_name(&mut self, name: String) { method set_approval_if_missing (line 964) | fn set_approval_if_missing(&mut self, approval: Option) { method set_approval (line 970) | fn set_approval(&mut self, approval: ApprovalStatus) { method set_question_status (line 974) | fn set_question_status(&mut self, question: QuestionStatus) { method tool_status (line 978) | fn tool_status(&self) -> ToolStatus { method update_from_part (line 1004) | fn update_from_part(&mut self, part: ToolPart) { method apply_tool_data (line 1050) | fn apply_tool_data( method maybe_promote (line 1205) | fn maybe_promote(&mut self) { method to_normalized_entry (line 1263) | fn to_normalized_entry(&self, worktree_path: &Path) -> NormalizedEntry { method build_action_type (line 1281) | fn build_action_type(&self, worktree_path: &Path) -> ActionType { method build_content (line 1386) | fn build_content(&self, action_type: &ActionType) -> String { method other_metadata (line 1421) | fn other_metadata(&self) -> Option<&Value> { method set_other_metadata (line 1428) | fn set_other_metadata(&mut self, meta: Value) { method file_edit_file_path (line 1434) | fn file_edit_file_path(&self) -> Option<&str> { method set_file_edit_file_path (line 1441) | fn set_file_edit_file_path(&mut self, path: String) { method file_edit_unified_diff (line 1447) | fn file_edit_unified_diff(&self) -> Option<&str> { method set_file_edit_unified_diff (line 1454) | fn set_file_edit_unified_diff(&mut self, diff: String) { type ToolData (line 873) | enum ToolData { type FileEditKind (line 918) | enum FileEditKind { type TodoOperation (line 926) | enum TodoOperation { type BashInput (line 1462) | struct BashInput { type FilePathInput (line 1467) | struct FilePathInput { type WriteInput (line 1473) | struct WriteInput { type TodosContainer (line 1480) | struct TodosContainer { type ToolStateStatus (line 1486) | enum ToolStateStatus { function make_relative_path (line 1494) | fn make_relative_path(path: &str, worktree_path: &Path) -> String { function fingerprint_todos (line 1498) | fn fingerprint_todos(todos: &[SdkTodo]) -> String { function extract_diff_from_metadata (line 1515) | fn extract_diff_from_metadata(metadata: &Value) -> Option<&str> { function extract_file_path_from_permission_metadata (line 1526) | fn extract_file_path_from_permission_metadata(metadata: &Value) -> Optio... function parse_question_items_from_info (line 1542) | fn parse_question_items_from_info(items: &[QuestionInfo]) -> Vec Vec { FILE: crates/executors/src/executors/opencode/sdk.rs type LogWriter (line 34) | pub struct LogWriter { method new (line 39) | pub fn new(writer: impl AsyncWrite + Send + Unpin + 'static) -> Self { method log_event (line 45) | pub async fn log_event(&self, event: &OpencodeExecutorEvent) -> Result... method log_error (line 51) | pub async fn log_error(&self, message: String) -> Result<(), ExecutorE... method log_slash_command_result (line 56) | pub async fn log_slash_command_result(&self, message: String) -> Resul... method log_raw (line 61) | async fn log_raw(&self, raw: &str) -> Result<(), ExecutorError> { type RunConfig (line 74) | pub struct RunConfig { function generate_server_password (line 94) | pub fn generate_server_password() -> String { type HealthResponse (line 103) | struct HealthResponse { type SessionResponse (line 109) | struct SessionResponse { type CommandInfo (line 115) | pub struct CommandInfo { type AgentInfo (line 123) | pub struct AgentInfo { type ConfigResponse (line 131) | pub struct ConfigResponse { type ConfigProvidersResponse (line 140) | pub struct ConfigProvidersResponse { type LspStatus (line 147) | pub struct LspStatus { type FormatterStatus (line 155) | pub struct FormatterStatus { type PromptRequest (line 162) | struct PromptRequest { type ModelSpec (line 173) | pub struct ModelSpec { type TextPartInput (line 181) | struct TextPartInput { type ControlEvent (line 187) | pub enum ControlEvent { type PendingApprovals (line 195) | pub(crate) struct PendingApprovals { method new (line 200) | pub(crate) fn new() -> Self { method push (line 206) | async fn push(&self) -> oneshot::Sender<()> { method wait (line 212) | async fn wait(&self, cancel: CancellationToken) -> bool { function run_session (line 234) | pub async fn run_session( function run_slash_command (line 244) | pub async fn run_slash_command( function run_session_inner (line 255) | async fn run_session_inner( function build_default_headers (line 394) | fn build_default_headers(directory: &str, password: &str) -> HeaderMap { function build_authenticated_client (line 408) | pub fn build_authenticated_client( function build_opencode_client (line 415) | fn build_opencode_client( constant OPENCODE_PROMPT_TIMEOUT (line 430) | const OPENCODE_PROMPT_TIMEOUT: Duration = Duration::from_secs(60 * 30); function append_session_error (line 432) | fn append_session_error(session_error: &mut Option, message: Str... function run_request_with_control (line 442) | pub async fn run_request_with_control( function wait_for_health (line 513) | pub async fn wait_for_health( function create_session (line 551) | pub async fn create_session( function fork_session (line 578) | pub async fn fork_session( function prompt (line 607) | async fn prompt( type SessionCommandRequest (line 682) | struct SessionCommandRequest { function session_command (line 694) | pub async fn session_command( type SummarizeRequest (line 763) | struct SummarizeRequest { function session_summarize (line 771) | pub async fn session_summarize( function list_commands (line 803) | pub async fn list_commands( function list_agents (line 824) | pub async fn list_agents( function config_get (line 845) | pub async fn config_get( function list_config_providers (line 866) | pub async fn list_config_providers( function list_providers (line 887) | pub async fn list_providers( function mcp_status (line 908) | pub async fn mcp_status( function lsp_status (line 929) | pub async fn lsp_status( function formatter_status (line 950) | pub async fn formatter_status( function build_response_error (line 971) | async fn build_response_error(resp: reqwest::Response, context: &str) ->... function send_abort (line 982) | pub async fn send_abort( function parse_model (line 1002) | fn parse_model(model: &str) -> Option { function parse_model_strict (line 1014) | fn parse_model_strict(model: &str) -> Option { function resolve_compaction_model (line 1026) | pub async fn resolve_compaction_model( function connect_event_stream (line 1068) | pub async fn connect_event_stream( type EventListenerConfig (line 1102) | pub struct EventListenerConfig { function spawn_event_listener (line 1116) | pub async fn spawn_event_listener(config: EventListenerConfig, initial_r... function exponential_backoff (line 1212) | fn exponential_backoff(base: Duration, attempt: u32) -> Duration { type EventStreamOutcome (line 1221) | enum EventStreamOutcome { type EventStreamContext (line 1227) | pub(super) struct EventStreamContext<'a> { function process_event_stream (line 1245) | async fn process_event_stream( function event_matches_session (line 1619) | fn event_matches_session(event_type: &str, event: &Value, session_id: &s... function handle_approval_error (line 1652) | async fn handle_approval_error( function log_approval_response (line 1677) | async fn log_approval_response(log_writer: &LogWriter, tool_call_id: &st... function log_question_response (line 1686) | async fn log_question_response(log_writer: &LogWriter, tool_call_id: &st... type ApprovalCreated (line 1695) | struct ApprovalCreated { function create_permission_approval (line 1699) | async fn create_permission_approval( function wait_permission_approval (line 1721) | async fn wait_permission_approval( function create_question_approval (line 1733) | async fn create_question_approval( function wait_question_approval (line 1747) | async fn wait_question_approval( function answers_to_opencode_format (line 1759) | fn answers_to_opencode_format(questions: &[Value], answers: &[QuestionAn... FILE: crates/executors/src/executors/opencode/slash_commands.rs type OpencodeSlashCommand (line 27) | pub enum OpencodeSlashCommand { method parse (line 45) | pub fn parse(prompt: &str) -> Option { method requires_existing_session (line 50) | pub fn requires_existing_session(&self) -> bool { method should_fork_session (line 55) | pub fn should_fork_session(&self) -> bool { method from (line 61) | fn from(call: SlashCommandCall<'a>) -> Self { function hardcoded_slash_commands (line 80) | pub fn hardcoded_slash_commands() -> Vec { function format_commands (line 110) | fn format_commands(commands: &[CommandInfo]) -> String { function format_agents (line 133) | fn format_agents(agents: &[AgentInfo]) -> String { function format_models (line 155) | fn format_models( function format_status (line 210) | fn format_status( function format_mcp (line 233) | fn format_mcp(mcp: &HashMap) -> String { function format_mcp_section (line 237) | fn format_mcp_section(mcp: &HashMap) -> String { function format_lsp_section (line 266) | fn format_lsp_section(lsp: &[LspStatus]) -> String { function format_formatter_section (line 286) | fn format_formatter_section(formatter: &[FormatterStatus]) -> String { function format_command_not_found (line 310) | fn format_command_not_found(name: &str) -> String { function format_no_session (line 315) | fn format_no_session() -> String { function log_result (line 320) | async fn log_result(log_writer: &LogWriter, message: String) -> Result<(... function log_done (line 325) | async fn log_done(log_writer: &LogWriter) -> Result<(), ExecutorError> { function log_result_and_done (line 330) | async fn log_result_and_done(log_writer: &LogWriter, message: String) ->... function execute (line 336) | pub async fn execute( FILE: crates/executors/src/executors/opencode/types.rs type OpencodeExecutorEvent (line 10) | pub enum OpencodeExecutorEvent { type SdkEventEnvelope (line 53) | pub(super) struct SdkEventEnvelope { type SdkEvent (line 61) | pub(super) enum SdkEvent { method parse (line 84) | pub(super) fn parse(value: &Value) -> Option { type MessageRole (line 134) | pub(super) enum MessageRole { type MessageUpdatedEvent (line 140) | pub(super) struct MessageUpdatedEvent { type MessageInfo (line 145) | pub(super) struct MessageInfo { method provider_id (line 184) | pub(super) fn provider_id(&self) -> Option<&str> { method model_id (line 191) | pub(super) fn model_id(&self) -> Option<&str> { type MessageTokens (line 159) | pub(super) struct MessageTokens { type MessageTokensCache (line 168) | pub(super) struct MessageTokensCache { function deserialize_f64_as_u32 (line 173) | fn deserialize_f64_as_u32<'de, D>(deserializer: D) -> Result type MessageModelInfo (line 200) | pub(super) struct MessageModelInfo { type MessagePartUpdatedEvent (line 208) | pub(super) struct MessagePartUpdatedEvent { type MessagePartDeltaEvent (line 215) | pub(super) struct MessagePartDeltaEvent { type PermissionAskedEvent (line 226) | pub(super) struct PermissionAskedEvent { type PermissionToolInfo (line 239) | pub(super) struct PermissionToolInfo { type QuestionAskedEvent (line 245) | pub(super) struct QuestionAskedEvent { type QuestionAskedTool (line 253) | pub(super) struct QuestionAskedTool { type QuestionInfo (line 262) | pub(super) struct QuestionInfo { type QuestionOption (line 272) | pub(super) struct QuestionOption { type SessionStatusEvent (line 279) | pub(super) struct SessionStatusEvent { type SessionStatus (line 285) | pub(super) enum SessionStatus { type TodoUpdatedEvent (line 298) | pub(super) struct TodoUpdatedEvent { type SdkTodo (line 303) | pub(super) struct SdkTodo { type Part (line 313) | pub(super) enum Part { type TextPart (line 325) | pub(super) struct TextPart { type ReasoningPart (line 334) | pub(super) type ReasoningPart = TextPart; type ToolPart (line 337) | pub(super) struct ToolPart { type ToolStateUpdate (line 349) | pub(super) enum ToolStateUpdate { type SessionErrorEvent (line 385) | pub(super) struct SessionErrorEvent { type SdkError (line 391) | pub(super) struct SdkError { method kind (line 396) | pub(super) fn kind(&self) -> &str { method message (line 404) | pub(super) fn message(&self) -> Option { method deserialize (line 414) | fn deserialize(deserializer: D) -> Result type Config (line 425) | pub(super) struct Config { type ProviderModelInfo (line 431) | pub struct ProviderModelInfo { type ProviderModelLimit (line 445) | pub struct ProviderModelLimit { type ProviderInfo (line 451) | pub struct ProviderInfo { type ProviderListResponse (line 460) | pub struct ProviderListResponse { FILE: crates/executors/src/executors/qa_mock.rs type QaMockExecutor (line 32) | pub struct QaMockExecutor; method apply_overrides (line 36) | fn apply_overrides(&mut self, _executor_config: &ExecutorConfig) {} method spawn (line 38) | async fn spawn( method spawn_follow_up (line 79) | async fn spawn_follow_up( method normalize_logs (line 92) | fn normalize_logs( method default_mcp_config_path (line 108) | fn default_mcp_config_path(&self) -> Option { method get_preset_options (line 112) | fn get_preset_options(&self) -> ExecutorConfig { function perform_file_operations (line 125) | async fn perform_file_operations(dir: &Path) { function generate_mock_logs (line 202) | fn generate_mock_logs(prompt: &str) -> Vec { function test_generate_mock_logs_count (line 399) | fn test_generate_mock_logs_count() { function test_generate_mock_logs_valid_json (line 405) | fn test_generate_mock_logs_valid_json() { function test_generate_mock_logs_deserializes_to_claudejson (line 419) | fn test_generate_mock_logs_deserializes_to_claudejson() { function test_escape_special_characters (line 434) | fn test_escape_special_characters() { FILE: crates/executors/src/executors/qwen.rs type QwenCode (line 26) | pub struct QwenCode { method build_command_builder (line 44) | fn build_command_builder(&self) -> Result) { method spawn (line 81) | async fn spawn( method spawn_follow_up (line 113) | async fn spawn_follow_up( method normalize_logs (line 148) | fn normalize_logs( method default_mcp_config_path (line 157) | fn default_mcp_config_path(&self) -> Option { method get_availability_info (line 161) | fn get_availability_info(&self) -> AvailabilityInfo { method get_preset_options (line 178) | fn get_preset_options(&self) -> ExecutorConfig { method discover_options (line 194) | async fn discover_options( FILE: crates/executors/src/executors/utils.rs type SlashCommandCall (line 18) | pub struct SlashCommandCall<'a> { function parse_slash_command (line 25) | pub fn parse_slash_command<'a, T>(prompt: &'a str) -> Option function reorder_slash_commands (line 42) | pub fn reorder_slash_commands( type CacheEntry (line 65) | struct CacheEntry { type TtlCache (line 70) | pub struct TtlCache { function new (line 79) | pub fn new(capacity: usize, ttl: Duration) -> Self { function get (line 89) | pub fn get(&self, key: &K) -> Option> { function put (line 102) | pub fn put(&self, key: K, value: V) { constant EXECUTOR_OPTIONS_CACHE_CAPACITY (line 114) | pub const EXECUTOR_OPTIONS_CACHE_CAPACITY: usize = 64; constant DEFAULT_CACHE_TTL (line 115) | pub const DEFAULT_CACHE_TTL: Duration = Duration::from_mins(5); function executor_options_cache (line 117) | pub fn executor_options_cache() function spawn_global_cache_refresh_for_agent (line 126) | pub fn spawn_global_cache_refresh_for_agent(base_agent: BaseCodingAgent) { function spawn_global_cache_refresh_for_agent_with_configs (line 130) | fn spawn_global_cache_refresh_for_agent_with_configs( function preload_global_executor_options_cache (line 147) | pub async fn preload_global_executor_options_cache() { FILE: crates/executors/src/logs/mod.rs type ToolResultValueType (line 13) | pub enum ToolResultValueType { type ToolResult (line 19) | pub struct ToolResult { method markdown (line 26) | pub fn markdown>(markdown: S) -> Self { method json (line 33) | pub fn json(value: serde_json::Value) -> Self { type CommandExitStatus (line 43) | pub enum CommandExitStatus { type CommandRunResult (line 49) | pub struct CommandRunResult { type NormalizedConversation (line 55) | pub struct NormalizedConversation { type NormalizedEntryError (line 65) | pub enum NormalizedEntryError { type NormalizedEntryType (line 73) | pub enum NormalizedEntryType { type AnsweredQuestion (line 103) | pub struct AnsweredQuestion { type TokenUsageInfo (line 109) | pub struct TokenUsageInfo { type NormalizedEntry (line 115) | pub struct NormalizedEntry { method with_tool_status (line 124) | pub fn with_tool_status(&self, status: ToolStatus) -> Option { type ToolStatus (line 147) | pub enum ToolStatus { method from_approval_status (line 162) | pub fn from_approval_status(status: &ApprovalStatus) -> Option { method from_question_status (line 173) | pub fn from_question_status(status: &QuestionStatus) -> Self { type TodoItem (line 182) | pub struct TodoItem { type ActionType (line 192) | pub enum ActionType { type AskUserQuestionItem (line 245) | pub struct AskUserQuestionItem { type AskUserQuestionOption (line 255) | pub struct AskUserQuestionOption { type FileChange (line 262) | pub enum FileChange { FILE: crates/executors/src/logs/plain_text_processor.rs type MessageBoundary (line 31) | pub enum MessageBoundary { type PlainTextBuffer (line 43) | struct PlainTextBuffer { method new (line 52) | pub fn new() -> Self { method ingest (line 60) | pub fn ingest(&mut self, text_chunk: String) { method drain_lines (line 86) | pub fn drain_lines(&mut self, n: usize) -> Vec { method drain_size (line 100) | pub fn drain_size(&mut self, len: usize) -> Vec { method flush (line 116) | pub fn flush(&mut self) -> Vec { method total_len (line 123) | pub fn total_len(&self) -> usize { method lines (line 128) | pub fn lines(&self) -> &[String] { method lines_mut (line 133) | pub fn lines_mut(&mut self) -> &mut Vec { method recompute_len (line 138) | pub fn recompute_len(&mut self) { method partial_line (line 143) | pub fn partial_line(&self) -> Option<&str> { method is_empty (line 153) | pub fn is_empty(&self) -> bool { method default (line 160) | fn default() -> Self { type FormatChunkFn (line 166) | pub type FormatChunkFn = Box, String) -> String + Se... type MessageBoundaryPredicateFn (line 169) | pub type MessageBoundaryPredicateFn = type NormalizedEntryProducerFn (line 173) | pub type NormalizedEntryProducerFn = Box NormalizedEnt... type LinesTransformFn (line 176) | pub type LinesTransformFn = Box) + Send + 'st... type PlainTextLogProcessor (line 179) | pub struct PlainTextLogProcessor { method process (line 194) | pub fn process(&mut self, text_chunk: String) -> Vec { method create_patch (line 293) | fn create_patch(&mut self, lines: Vec) -> Patch { method new (line 329) | pub fn new( function test_plain_buffer_flush (line 368) | fn test_plain_buffer_flush() { function test_plain_buffer_len (line 380) | fn test_plain_buffer_len() { function test_drain_until_size (line 391) | fn test_drain_until_size() { function test_processor_simple (line 403) | fn test_processor_simple() { function test_processor_custom_log_formatter (line 423) | fn test_processor_custom_log_formatter() { function test_processor_transform_lines_clears_first_line (line 460) | fn test_processor_transform_lines_clears_first_line() { FILE: crates/executors/src/logs/stderr_processor.rs function normalize_stderr_logs (line 39) | pub fn normalize_stderr_logs( FILE: crates/executors/src/logs/utils/entry_index.rs type EntryIndexProvider (line 13) | pub struct EntryIndexProvider(Arc); method new (line 17) | fn new() -> Self { method next (line 22) | pub fn next(&self) -> usize { method current (line 27) | pub fn current(&self) -> usize { method reset (line 31) | pub fn reset(&self) { method start_from (line 37) | pub fn start_from(msg_store: &MsgStore) -> Self { method test_new (line 75) | pub fn test_new() -> Self { method default (line 67) | fn default() -> Self { function test_entry_index_provider (line 85) | fn test_entry_index_provider() { function test_entry_index_provider_clone (line 93) | fn test_entry_index_provider_clone() { function test_current_index (line 103) | fn test_current_index() { FILE: crates/executors/src/logs/utils/patch.rs type PatchOperation (line 17) | enum PatchOperation { type PatchType (line 26) | pub enum PatchType { type PatchEntry (line 34) | struct PatchEntry { function escape_json_pointer_segment (line 40) | pub fn escape_json_pointer_segment(s: &str) -> String { type ConversationPatch (line 45) | pub struct ConversationPatch; method add_normalized_entry (line 49) | pub fn add_normalized_entry(entry_index: usize, entry: NormalizedEntry... method add_stdout (line 60) | pub fn add_stdout(entry_index: usize, entry: String) -> Patch { method add_stderr (line 71) | pub fn add_stderr(entry_index: usize, entry: String) -> Patch { method add_diff (line 82) | pub fn add_diff(entry_index: String, diff: Diff) -> Patch { method replace_diff (line 93) | pub fn replace_diff(entry_index: String, diff: Diff) -> Patch { method remove_diff (line 104) | pub fn remove_diff(entry_index: String) -> Patch { method replace (line 113) | pub fn replace(entry_index: usize, entry: NormalizedEntry) -> Patch { method remove (line 123) | pub fn remove(entry_index: usize) -> Patch { function extract_normalized_entry_from_patch (line 133) | pub fn extract_normalized_entry_from_patch(patch: &Patch) -> Option<(usi... function upsert_normalized_entry (line 149) | pub fn upsert_normalized_entry( function add_normalized_entry (line 165) | pub fn add_normalized_entry( function replace_normalized_entry (line 175) | pub fn replace_normalized_entry( function patch_entry_path (line 184) | pub fn patch_entry_path(patch: &Patch) -> Option { function is_add_or_replace (line 188) | pub fn is_add_or_replace(patch: &Patch) -> bool { function fix_patch_ops (line 194) | pub fn fix_patch_ops(mut patch: Patch, sent_paths: &mut HashSet)... function executor_discovered_options (line 219) | pub fn executor_discovered_options(options: ExecutorDiscoveredOptions) -... function slash_commands (line 226) | pub fn slash_commands( function update_models (line 239) | pub fn update_models(models: Vec) -> P... function models_loaded (line 246) | pub fn models_loaded() -> Patch { function update_agents (line 253) | pub fn update_agents(agents: Vec) -> P... function agents_loaded (line 260) | pub fn agents_loaded() -> Patch { function update_slash_commands (line 267) | pub fn update_slash_commands( function slash_commands_loaded (line 276) | pub fn slash_commands_loaded() -> Patch { function update_providers (line 283) | pub fn update_providers(providers: Vec) -> Patch { function discovery_error (line 297) | pub fn discovery_error(error: String) -> Patch { FILE: crates/executors/src/logs/utils/shell_command_parsing.rs type CommandCategory (line 7) | pub enum CommandCategory { method from_command (line 23) | pub fn from_command(command: &str) -> Self { function has_file_redirect (line 72) | fn has_file_redirect(command: &str) -> bool { function redirect_target (line 100) | fn redirect_target(token: &str) -> Option<&str> { function is_file_target (line 108) | fn is_file_target(target: &str) -> bool { function unwrap_shell_command (line 115) | pub fn unwrap_shell_command(command: &str) -> &str { function extract_command_after_c_flag (line 146) | fn extract_command_after_c_flag(args: &str) -> Option<&str> { function strip_quotes (line 170) | fn strip_quotes(s: &str) -> &str { FILE: crates/executors/src/mcp_config.rs function is_jsonc_file (line 19) | fn is_jsonc_file(path: &Path) -> bool { type McpConfig (line 31) | pub struct McpConfig { method new (line 40) | pub fn new( method set_servers (line 54) | pub fn set_servers(&mut self, servers: HashMap St... function deep_merge_cst_object (line 135) | fn deep_merge_cst_object(cst_obj: &CstObject, new_obj: &Map jsonc_parser::cst::CstInput... type ServerMap (line 192) | type ServerMap = Map; function is_http_server (line 194) | fn is_http_server(s: &Map) -> bool { function is_stdio (line 198) | fn is_stdio(s: &Map) -> bool { function extract_meta (line 202) | fn extract_meta(mut obj: ServerMap) -> (ServerMap, Option) { function attach_meta (line 207) | fn attach_meta(mut obj: ServerMap, meta: Option) -> Value { function ensure_header (line 214) | fn ensure_header(headers: &mut Map, key: &str, val: &str) { function transform_http_servers (line 223) | fn transform_http_servers(mut servers: ServerMap, mut f: F) -> ServerMap function adapt_passthrough (line 240) | fn adapt_passthrough(servers: ServerMap, meta: Option) -> Value { function adapt_gemini (line 244) | fn adapt_gemini(servers: ServerMap, meta: Option) -> Value { function adapt_cursor (line 267) | fn adapt_cursor(servers: ServerMap, meta: Option) -> Value { function adapt_codex (line 280) | fn adapt_codex(mut servers: ServerMap, mut meta: Option) -> Value { function adapt_opencode (line 291) | fn adapt_opencode(servers: ServerMap, meta: Option) -> Value { function adapt_copilot (line 356) | fn adapt_copilot(mut servers: ServerMap, meta: Option) -> Value { type Adapter (line 370) | enum Adapter { function apply_adapter (line 379) | fn apply_adapter(adapter: Adapter, canonical: Value) -> Value { method preconfigured_mcp (line 396) | pub fn preconfigured_mcp(&self) -> Value { FILE: crates/executors/src/model_selector.rs type ModelProvider (line 7) | pub struct ModelProvider { type ModelInfo (line 16) | pub struct ModelInfo { type ReasoningOption (line 31) | pub struct ReasoningOption { method from_names (line 84) | pub fn from_names(names: impl IntoIterator>) ... method from_names_with_labels (line 88) | pub fn from_names_with_labels( type AgentInfo (line 40) | pub struct AgentInfo { type PermissionPolicy (line 53) | pub enum PermissionPolicy { type ModelSelectorConfig (line 65) | pub struct ModelSelectorConfig { function reasoning_label (line 125) | fn reasoning_label(id: &str) -> String { FILE: crates/executors/src/profile.rs function canonical_variant_key (line 21) | pub fn canonical_variant_key>(raw: S) -> String { type ProfileError (line 32) | pub enum ProfileError { constant DEFAULT_PROFILES_JSON (line 59) | const DEFAULT_PROFILES_JSON: &str = include_str!("../default_profiles.js... type ExecutorProfileId (line 63) | pub struct ExecutorProfileId { method new (line 87) | pub fn new(executor: BaseCodingAgent) -> Self { method with_variant (line 95) | pub fn with_variant(executor: BaseCodingAgent, variant: String) -> Self { method cache_key (line 103) | pub fn cache_key(&self) -> String { method fmt (line 112) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function de_base_coding_agent_kebab (line 74) | fn de_base_coding_agent_kebab<'de, D>(de: D) -> Result Self { method profile_id (line 160) | pub fn profile_id(&self) -> ExecutorProfileId { method has_overrides (line 168) | pub fn has_overrides(&self) -> bool { method from (line 177) | fn from(id: ExecutorProfileId) -> Self { method fmt (line 190) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type ExecutorProfile (line 196) | pub struct ExecutorProfile { method get_variant (line 205) | pub fn get_variant(&self, variant: &str) -> Option<&CodingAgent> { method get_default (line 210) | pub fn get_default(&self) -> Option<&CodingAgent> { method new_with_default (line 215) | pub fn new_with_default(default_config: CodingAgent) -> Self { method set_variant (line 225) | pub fn set_variant( method set_default (line 241) | pub fn set_default(&mut self, config: CodingAgent) { method variant_names (line 246) | pub fn variant_names(&self) -> Vec<&String> { type ExecutorRecentModels (line 255) | pub struct ExecutorRecentModels { type ExecutorConfigs (line 265) | pub struct ExecutorConfigs { method canonicalise (line 271) | fn canonicalise(&mut self) { method get_cached (line 290) | pub fn get_cached() -> ExecutorConfigs { method reload (line 295) | pub fn reload() { method load (line 301) | pub fn load() -> Self { method save_overrides (line 335) | pub fn save_overrides(&self) -> Result<(), ProfileError> { method merge_with_defaults (line 360) | fn merge_with_defaults(mut defaults: Self, overrides: Self) -> Self { method compute_overrides (line 384) | fn compute_overrides(defaults: &Self, current: &Self) -> Result Result<(), ProfileError> { method from_defaults (line 487) | pub fn from_defaults() -> Self { method get_coding_agent (line 494) | pub fn get_coding_agent(&self, executor_profile_id: &ExecutorProfileId... method get_coding_agent_or_default (line 508) | pub fn get_coding_agent_or_default( method get_recommended_executor_profile (line 520) | pub async fn get_recommended_executor_profile( function to_default_variant (line 583) | pub fn to_default_variant(id: &ExecutorProfileId) -> ExecutorProfileId { FILE: crates/executors/src/stdout_dup.rs function duplicate_stdout (line 26) | pub fn duplicate_stdout( type StdoutAppender (line 82) | pub struct StdoutAppender { method append_line (line 87) | pub fn append_line>(&self, line: S) { function tee_stdout_with_appender (line 100) | pub fn tee_stdout_with_appender( function create_stdout_pipe_writer (line 174) | pub fn create_stdout_pipe_writer<'b>( function spawn_local_output_process (line 188) | pub fn spawn_local_output_process() function wrap_fd_as_child_stdout (line 244) | fn wrap_fd_as_child_stdout( function wrap_fd_as_tokio_writer (line 267) | fn wrap_fd_as_tokio_writer( FILE: crates/git-host/src/azure/cli.rs type AzureRepoInfo (line 21) | pub struct AzureRepoInfo { type AzPrResponse (line 31) | struct AzPrResponse { type AzRepository (line 41) | struct AzRepository { type AzCommit (line 47) | struct AzCommit { type AzThreadsResponse (line 52) | struct AzThreadsResponse { type AzThread (line 58) | struct AzThread { type AzThreadContext (line 65) | struct AzThreadContext { type AzFilePosition (line 71) | struct AzFilePosition { type AzThreadComment (line 77) | struct AzThreadComment { type AzAuthor (line 87) | struct AzAuthor { type AzRepoListItem (line 94) | struct AzRepoListItem { type AzRepoProject (line 103) | struct AzRepoProject { type AzCliError (line 109) | pub enum AzCliError { type AzCli (line 121) | pub struct AzCli; method new (line 124) | pub fn new() -> Self { method ensure_available (line 129) | fn ensure_available(&self) -> Result<(), AzCliError> { method run (line 134) | fn run(&self, args: I, dir: Option<&Path>) -> Result bool { method extract_organization_url (line 252) | fn extract_organization_url(url: &str) -> Option { method create_pr (line 274) | pub fn create_pr( method view_pr (line 312) | pub fn view_pr(&self, pr_url: &str) -> Result Option<(String, i64)> { method parse_pr_response (line 440) | fn parse_pr_response(raw: &str) -> Result { method parse_pr_list_response (line 447) | fn parse_pr_list_response(raw: &str) -> Result, A... method az_pr_to_info (line 455) | fn az_pr_to_info(pr: AzPrResponse) -> PullRequestInfo { method parse_pr_threads (line 478) | fn parse_pr_threads(raw: &str) -> Result, AzCliE... method map_azure_status (line 549) | fn map_azure_status(status: &str) -> MergeStatus { function test_parse_pr_url (line 564) | fn test_parse_pr_url() { function test_parse_pr_url_visualstudio (line 575) | fn test_parse_pr_url_visualstudio() { function test_parse_pr_url_invalid (line 586) | fn test_parse_pr_url_invalid() { function test_map_azure_status (line 594) | fn test_map_azure_status() { function test_urls_match (line 614) | fn test_urls_match() { function test_extract_organization_url_dev_azure (line 659) | fn test_extract_organization_url_dev_azure() { function test_extract_organization_url_visualstudio (line 667) | fn test_extract_organization_url_visualstudio() { function test_extract_organization_url_invalid (line 675) | fn test_extract_organization_url_invalid() { FILE: crates/git-host/src/azure/mod.rs type AzureDevOpsProvider (line 21) | pub struct AzureDevOpsProvider { method new (line 26) | pub fn new() -> Result { method get_repo_info (line 32) | async fn get_repo_info( method from (line 48) | fn from(error: AzCliError) -> Self { method create_pr (line 73) | async fn create_pr( method get_pr_status (line 132) | async fn get_pr_status(&self, pr_url: &str) -> Result ProviderKind { FILE: crates/git-host/src/detection.rs function detect_provider_from_url (line 11) | pub fn detect_provider_from_url(url: &str) -> ProviderKind { function detect_provider_from_pr_url (line 46) | fn detect_provider_from_pr_url(pr_url: &str) -> ProviderKind { function test_github_com_https (line 71) | fn test_github_com_https() { function test_github_com_ssh (line 83) | fn test_github_com_ssh() { function test_github_enterprise (line 91) | fn test_github_enterprise() { function test_azure_devops_https (line 107) | fn test_azure_devops_https() { function test_azure_devops_ssh (line 115) | fn test_azure_devops_ssh() { function test_azure_devops_legacy_visualstudio (line 123) | fn test_azure_devops_legacy_visualstudio() { function test_azure_devops_git_path (line 131) | fn test_azure_devops_git_path() { function test_unknown_provider (line 140) | fn test_unknown_provider() { function test_pr_url_github (line 152) | fn test_pr_url_github() { function test_pr_url_azure (line 164) | fn test_pr_url_azure() { FILE: crates/git-host/src/github/cli.rs type GitHubRepoInfo (line 26) | pub struct GitHubRepoInfo { method repo_spec (line 34) | pub fn repo_spec(&self) -> String { type GhRepoViewResponse (line 43) | struct GhRepoViewResponse { type GhRepoOwner (line 50) | struct GhRepoOwner { type GhCommentResponse (line 56) | struct GhCommentResponse { type GhCommentsWrapper (line 69) | struct GhCommentsWrapper { type GhUserLogin (line 74) | struct GhUserLogin { type GhReviewCommentResponse (line 79) | struct GhReviewCommentResponse { type GhMergeCommit (line 98) | struct GhMergeCommit { type GhPrResponse (line 104) | struct GhPrResponse { type GhPrListExtendedResponse (line 115) | struct GhPrListExtendedResponse { type GhCliError (line 125) | pub enum GhCliError { type GhCli (line 137) | pub struct GhCli; method new (line 140) | pub fn new() -> Self { method ensure_available (line 145) | fn ensure_available(&self) -> Result<(), GhCliError> { method run (line 150) | fn run(&self, args: I, dir: Option<&Path>) -> Result Result Result Result Result Result { method parse_pr_list (line 437) | fn parse_pr_list(raw: &str) -> Result, GhCliError> { method parse_open_pr_list (line 446) | fn parse_open_pr_list(raw: &str) -> Result, GhCliError> { method pr_response_to_info (line 465) | fn pr_response_to_info(pr: GhPrResponse) -> PullRequestInfo { method parse_pr_comments (line 485) | fn parse_pr_comments(raw: &str) -> Result, GhCliError> { method parse_pr_review_comments (line 511) | fn parse_pr_review_comments(raw: &str) -> Result,... FILE: crates/git-host/src/github/mod.rs type GitHubProvider (line 24) | pub struct GitHubProvider { method new (line 29) | pub fn new() -> Result { method get_repo_info (line 35) | async fn get_repo_info( method fetch_general_comments (line 51) | async fn fetch_general_comments( method fetch_review_comments (line 91) | async fn fetch_review_comments( method from (line 134) | fn from(error: GhCliError) -> Self { method create_pr (line 159) | async fn create_pr( method get_pr_status (line 224) | async fn get_pr_status(&self, pr_url: &str) -> Result ProviderKind { FILE: crates/git-host/src/lib.rs type GitHostProvider (line 22) | pub trait GitHostProvider: Send + Sync { method create_pr (line 23) | async fn create_pr( method get_pr_status (line 30) | async fn get_pr_status(&self, pr_url: &str) -> Result ProviderKind; type GitHostService (line 56) | pub enum GitHostService { method from_url (line 62) | pub fn from_url(url: &str) -> Result { FILE: crates/git-host/src/types.rs type ProviderKind (line 8) | pub enum ProviderKind { method fmt (line 15) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type CreatePrRequest (line 25) | pub struct CreatePrRequest { type GitHostError (line 36) | pub enum GitHostError { method should_retry (line 58) | pub fn should_retry(&self) -> bool { type PrCommentAuthor (line 72) | pub struct PrCommentAuthor { type PrComment (line 78) | pub struct PrComment { type ReviewCommentUser (line 88) | pub struct ReviewCommentUser { type PrReviewComment (line 93) | pub struct PrReviewComment { type UnifiedPrComment (line 109) | pub enum UnifiedPrComment { method created_at (line 133) | pub fn created_at(&self) -> DateTime { type OpenPrInfo (line 142) | pub struct OpenPrInfo { FILE: crates/git/src/cli.rs type GitCliError (line 31) | pub enum GitCliError { type GitCli (line 45) | pub struct GitCli; method new (line 81) | pub fn new() -> Self { method worktree_add (line 85) | pub fn worktree_add( method worktree_remove (line 111) | pub fn worktree_remove( method worktree_move (line 128) | pub fn worktree_move( method worktree_prune (line 152) | pub fn worktree_prune(&self, repo_path: &Path) -> Result<(), GitCliErr... method has_changes (line 158) | pub fn has_changes(&self, worktree_path: &Path) -> Result Result Result<(), GitCliError> { method list_worktrees (line 299) | pub fn list_worktrees(&self, repo_path: &Path) -> Result Result<()... method fetch_with_refspec (line 346) | pub fn fetch_with_refspec( method push (line 368) | pub fn push( method check_remote_branch_exists (line 396) | pub fn check_remote_branch_exists( method delete_branch (line 419) | pub fn delete_branch(&self, repo_path: &Path, branch_name: &str) -> Re... method get_remote_url (line 425) | pub fn get_remote_url( method list_remotes (line 436) | pub fn list_remotes(&self, repo_path: &Path) -> Result Vec { method merge_base (line 514) | pub fn merge_base( method rebase_onto (line 527) | pub fn rebase_onto( method is_rebase_in_progress (line 555) | pub fn is_rebase_in_progress(&self, worktree_path: &Path) -> Result Result Resu... method is_revert_in_progress (line 582) | pub fn is_revert_in_progress(&self, worktree_path: &Path) -> Result Result<(), GitCliE... method quit_rebase (line 603) | pub fn quit_rebase(&self, worktree_path: &Path) -> Result<(), GitCliEr... method continue_rebase (line 612) | pub fn continue_rebase(&self, worktree_path: &Path) -> Result<(), GitC... method has_staged_changes (line 623) | pub fn has_staged_changes(&self, repo_path: &Path) -> Result Result<(), GitCliEr... method abort_cherry_pick (line 682) | pub fn abort_cherry_pick(&self, worktree_path: &Path) -> Result<(), Gi... method abort_revert (line 690) | pub fn abort_revert(&self, worktree_path: &Path) -> Result<(), GitCliE... method get_conflicted_files (line 698) | pub fn get_conflicted_files(&self, worktree_path: &Path) -> Result GitCliError { method ensure_available (line 733) | fn ensure_available(&self) -> Result<(), GitCliError> { method git_impl (line 761) | fn git_impl( method git (line 840) | pub fn git(&self, repo_path: &Path, args: I) -> Result( method git_with_stdin (line 863) | fn git_with_stdin( method apply_default_excludes (line 878) | fn apply_default_excludes(args: I) -> Vec method apply_pathspec_filter (line 886) | fn apply_pathspec_filter(args: I, pathspecs: Option<&Vec... method build_pathspec_filter (line 903) | fn build_pathspec_filter(pathspecs: Option<&Vec>) -> Vec Vec { type ChangeType (line 49) | pub enum ChangeType { type StatusDiffEntry (line 62) | pub struct StatusDiffEntry { type WorktreeEntry (line 70) | pub struct WorktreeEntry { type StatusDiffOptions (line 76) | pub struct StatusDiffOptions { type StatusEntry (line 926) | pub struct StatusEntry { type WorktreeStatus (line 941) | pub struct WorktreeStatus { FILE: crates/git/src/lib.rs type FileStat (line 23) | pub struct FileStat { type GitServiceError (line 33) | pub enum GitServiceError { type GitService (line 58) | pub struct GitService {} method new (line 171) | pub fn new() -> Self { method is_branch_name_valid (line 175) | pub fn is_branch_name_valid(&self, name: &str) -> bool { method open_repo (line 180) | pub fn open_repo(&self, repo_path: &Path) -> Result Result<(), G... method signature_with_fallback (line 200) | fn signature_with_fallback<'a>( method default_remote (line 211) | fn default_remote( method initialize_repo_with_main_branch (line 236) | pub fn initialize_repo_with_main_branch( method ensure_main_branch_exists (line 260) | pub fn ensure_main_branch_exists(&self, repo_path: &Path) -> Result<()... method create_initial_commit (line 279) | pub fn create_initial_commit(&self, repo: &Repository) -> Result<(), G... method commit (line 304) | pub fn commit(&self, path: &Path, message: &str) -> Result String { method blob_to_string (line 593) | fn blob_to_string(blob: &git2::Blob) -> Option { method read_file_to_string (line 604) | fn read_file_to_string(repo: &Repository, rel_path: &Path) -> Option Result Result<(), GitSer... method get_head_info (line 1048) | pub fn get_head_info(&self, repo_path: &Path) -> Result Result Result<(), GitServi... method delete_branch (line 1266) | pub fn delete_branch( method get_all_branches (line 1277) | pub fn get_all_branches(&self, repo_path: &Path) -> Result Result Result<(), GitServ... method continue_rebase (line 1589) | pub fn continue_rebase(&self, worktree_path: &Path) -> Result<(), GitS... method abort_conflicts (line 1596) | pub fn abort_conflicts(&self, worktree_path: &Path) -> Result<(), GitS... method find_branch (line 1633) | pub fn find_branch<'a>( method get_remote_from_branch_name (line 1650) | pub fn get_remote_from_branch_name( method get_remote_url (line 1671) | pub fn get_remote_url( method get_default_remote (line 1681) | pub fn get_default_remote(&self, repo_path: &Path) -> Result Result,... method check_remote_branch_exists (line 1696) | pub fn check_remote_branch_exists( method fetch_branch (line 1708) | pub fn fetch_branch( method resolve_remote_for_branch (line 1721) | pub fn resolve_remote_for_branch( method get_remote_from_branch_ref (line 1730) | fn get_remote_from_branch_ref<'a>( method push_to_remote (line 1755) | pub fn push_to_remote( method fetch_from_remote (line 1791) | fn fetch_from_remote( method fetch_branch_from_remote (line 1811) | fn fetch_branch_from_remote( method fetch_all_from_remote (line 1829) | fn fetch_all_from_remote( method clone_repository (line 1842) | pub fn clone_repository( method collect_recent_file_stats (line 1897) | pub fn collect_recent_file_stats( constant MAX_INLINE_DIFF_BYTES (line 62) | const MAX_INLINE_DIFF_BYTES: usize = 2 * 1024 * 1024; type ConflictOp (line 67) | pub enum ConflictOp { type GitBranch (line 75) | pub struct GitBranch { type GitRemote (line 84) | pub struct GitRemote { type HeadInfo (line 90) | pub struct HeadInfo { type Commit (line 96) | pub struct Commit(git2::Oid); method new (line 99) | pub fn new(id: git2::Oid) -> Self { method as_oid (line 102) | pub fn as_oid(&self) -> git2::Oid { method fmt (line 108) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type WorktreeResetOptions (line 114) | pub struct WorktreeResetOptions { method new (line 122) | pub fn new( type WorktreeResetOutcome (line 138) | pub struct WorktreeResetOutcome { type DiffTarget (line 144) | pub enum DiffTarget<'p> { method default (line 164) | fn default() -> Self { FILE: crates/git/src/validation.rs function is_valid_branch_prefix (line 1) | pub fn is_valid_branch_prefix(prefix: &str) -> bool { function test_valid_prefixes (line 18) | fn test_valid_prefixes() { function test_invalid_prefixes (line 29) | fn test_invalid_prefixes() { FILE: crates/git/tests/git_ops_safety.rs function write_file (line 12) | fn write_file>(base: P, rel: &str, content: &str) { function commit_all (line 21) | fn commit_all(repo: &Repository, message: &str) { function checkout_branch (line 45) | fn checkout_branch(repo: &Repository, name: &str) { function create_branch_from_head (line 52) | fn create_branch_from_head(repo: &Repository, name: &str) { function configure_user (line 57) | fn configure_user(repo: &Repository) { function push_ref (line 63) | fn push_ref(repo: &Repository, local: &str, remote: &str) { function add_path (line 72) | fn add_path(repo_path: &Path, path: &str) { function setup_repo_with_worktree (line 80) | fn setup_repo_with_worktree(root: &TempDir) -> (PathBuf, PathBuf) { function setup_conflict_repo_with_worktree (line 122) | fn setup_conflict_repo_with_worktree(root: &TempDir) -> (PathBuf, PathBu... function setup_no_unique_feature_repo (line 166) | fn setup_no_unique_feature_repo(root: &TempDir) -> (PathBuf, PathBuf) { function setup_direct_conflict_repo (line 202) | fn setup_direct_conflict_repo(root: &TempDir) -> (PathBuf, PathBuf) { function push_reports_non_fast_forward (line 236) | fn push_reports_non_fast_forward() { function fetch_with_missing_ref_returns_error (line 297) | fn fetch_with_missing_ref_returns_error() { function push_and_fetch_roundtrip_updates_tracking_branch (line 337) | fn push_and_fetch_roundtrip_updates_tracking_branch() { function rebase_preserves_untracked_files (line 410) | fn rebase_preserves_untracked_files() { function rebase_aborts_on_uncommitted_tracked_changes (line 432) | fn rebase_aborts_on_uncommitted_tracked_changes() { function rebase_aborts_if_untracked_would_be_overwritten_by_base (line 453) | fn rebase_aborts_if_untracked_would_be_overwritten_by_base() { function merge_does_not_overwrite_main_repo_untracked_files (line 477) | fn merge_does_not_overwrite_main_repo_untracked_files() { function merge_does_not_touch_tracked_uncommitted_changes_in_base_worktree (line 508) | fn merge_does_not_touch_tracked_uncommitted_changes_in_base_worktree() { function merge_refuses_with_staged_changes_on_base (line 555) | fn merge_refuses_with_staged_changes_on_base() { function merge_preserves_unstaged_changes_on_base (line 577) | fn merge_preserves_unstaged_changes_on_base() { function update_ref_does_not_destroy_feature_worktree_dirty_state (line 602) | fn update_ref_does_not_destroy_feature_worktree_dirty_state() { function libgit2_merge_updates_base_ref_in_both_repos (line 632) | fn libgit2_merge_updates_base_ref_in_both_repos() { function libgit2_merge_updates_task_ref_and_feature_head_preserves_dirty (line 656) | fn libgit2_merge_updates_task_ref_and_feature_head_preserves_dirty() { function rebase_refuses_to_abort_existing_rebase (line 687) | fn rebase_refuses_to_abort_existing_rebase() { function rebase_fast_forwards_when_no_unique_commits (line 717) | fn rebase_fast_forwards_when_no_unique_commits() { function rebase_applies_multiple_commits_onto_ahead_base (line 739) | fn rebase_applies_multiple_commits_onto_ahead_base() { function merge_when_base_ahead_and_feature_ahead_fails (line 773) | fn merge_when_base_ahead_and_feature_ahead_fails() { function merge_conflict_does_not_move_base_ref (line 814) | fn merge_conflict_does_not_move_base_ref() { function merge_delete_vs_modify_conflict_behaves_safely (line 839) | fn merge_delete_vs_modify_conflict_behaves_safely() { function rebase_preserves_rename_changes (line 884) | fn rebase_preserves_rename_changes() { function merge_refreshes_main_worktree_when_on_base (line 915) | fn merge_refreshes_main_worktree_when_on_base() { function sparse_checkout_respected_in_worktree_diffs_and_commit (line 949) | fn sparse_checkout_respected_in_worktree_diffs_and_commit() { function worktree_diff_ignores_commits_where_base_branch_is_ahead (line 1029) | fn worktree_diff_ignores_commits_where_base_branch_is_ahead() { function init_repo_only_service (line 1073) | fn init_repo_only_service(root: &TempDir) -> PathBuf { function merge_binary_conflict_does_not_move_ref (line 1084) | fn merge_binary_conflict_does_not_move_ref() { function merge_rename_vs_modify_conflict_does_not_move_ref (line 1115) | fn merge_rename_vs_modify_conflict_does_not_move_ref() { function merge_leaves_no_staged_changes_on_target_branch (line 1179) | fn merge_leaves_no_staged_changes_on_target_branch() { function worktree_to_worktree_merge_leaves_no_staged_changes (line 1224) | fn worktree_to_worktree_merge_leaves_no_staged_changes() { function merge_into_orphaned_branch_uses_libgit2_fallback (line 1294) | fn merge_into_orphaned_branch_uses_libgit2_fallback() { function merge_base_ahead_of_task_should_error (line 1357) | fn merge_base_ahead_of_task_should_error() { FILE: crates/git/tests/git_workflow.rs function add_path (line 12) | fn add_path(repo_path: &Path, path: &str) { function get_commit_author (line 17) | fn get_commit_author(repo_path: &Path, commit_sha: &str) -> (Option (Option, Option) { function write_file (line 40) | fn write_file>(base: P, rel: &str, content: &str) { function configure_user (line 49) | fn configure_user(repo_path: &Path, name: &str, email: &str) { function init_repo_main (line 56) | fn init_repo_main(root: &TempDir) -> PathBuf { function checkout_branch (line 65) | fn checkout_branch(repo_path: &Path, name: &str) { function create_branch (line 73) | fn create_branch(repo_path: &Path, name: &str) { function commit_empty_message_behaviour (line 80) | fn commit_empty_message_behaviour() { function has_global_git_identity (line 94) | fn has_global_git_identity() -> bool { function initialize_repo_without_user_creates_initial_commit (line 104) | fn initialize_repo_without_user_creates_initial_commit() { function commit_without_user_config_succeeds (line 124) | fn commit_without_user_config_succeeds() { function commit_fails_when_index_locked (line 136) | fn commit_fails_when_index_locked() { function staged_but_uncommitted_changes_is_dirty (line 150) | fn staged_but_uncommitted_changes_is_dirty() { function worktree_clean_detects_staged_deleted_and_renamed (line 164) | fn worktree_clean_detects_staged_deleted_and_renamed() { function diff_added_binary_file_has_no_content (line 184) | fn diff_added_binary_file_has_no_content() { function initialize_and_default_branch_and_head_info (line 218) | fn initialize_and_default_branch_and_head_info() { function commit_and_is_worktree_clean (line 232) | fn commit_and_is_worktree_clean() { function commit_in_detached_head_succeeds_via_service (line 260) | fn commit_in_detached_head_succeeds_via_service() { function branch_status_ahead_and_behind (line 278) | fn branch_status_ahead_and_behind() { function get_all_branches_lists_current_and_others (line 312) | fn get_all_branches_lists_current_and_others() { function get_branch_diffs_between_branches (line 328) | fn get_branch_diffs_between_branches() { function worktree_diff_respects_path_filter (line 357) | fn worktree_diff_respects_path_filter() { function get_branch_oid_nonexistent_errors (line 399) | fn get_branch_oid_nonexistent_errors() { function create_unicode_branch_and_list (line 408) | fn create_unicode_branch_and_list() { function worktree_diff_permission_only_change (line 429) | fn worktree_diff_permission_only_change() { function squash_merge_libgit2_sets_author_without_user (line 467) | fn squash_merge_libgit2_sets_author_without_user() { FILE: crates/local-deployment/build.rs function main (line 3) | fn main() { FILE: crates/local-deployment/src/command.rs function kill_process_group (line 4) | pub async fn kill_process_group(child: &mut AsyncGroupChild) -> Result<(... FILE: crates/local-deployment/src/container.rs constant WORKSPACE_TOUCH_DEBOUNCE (line 66) | const WORKSPACE_TOUCH_DEBOUNCE: Duration = Duration::from_mins(2); type LocalContainerService (line 69) | pub struct LocalContainerService { method new (line 92) | pub async fn new( method map_workspace_manager_error (line 135) | fn map_workspace_manager_error(err: WorkspaceError) -> ContainerError { method workspace_repo_inputs (line 160) | async fn workspace_repo_inputs( method get_child_from_store (line 196) | pub async fn get_child_from_store(&self, id: &Uuid) -> Option Option) { method take_db_stream_handle (line 226) | async fn take_db_stream_handle(&self, id: &Uuid) -> Option Option Result<(), Deploymen... method spawn_workspace_cleanup (line 299) | pub fn spawn_workspace_cleanup(&self) { method update_after_head_commits (line 325) | async fn update_after_head_commits(&self, exec_id: Uuid) { method get_commit_message (line 344) | async fn get_commit_message(&self, ctx: &ExecutionContext) -> String { method check_repos_for_changes (line 390) | fn check_repos_for_changes( method has_commits_from_execution (line 421) | async fn has_commits_from_execution( method commit_repos (line 451) | fn commit_repos(&self, repos_with_changes: Vec<(Repo, PathBuf)>, messa... method spawn_exit_monitor (line 480) | pub fn spawn_exit_monitor( method spawn_os_exit_watcher (line 809) | pub fn spawn_os_exit_watcher( method dir_name_from_workspace (line 846) | pub fn dir_name_from_workspace(workspace_id: &Uuid, task_title: &str) ... method track_child_msgs_in_store (line 851) | async fn track_child_msgs_in_store(&self, id: Uuid, child: &mut AsyncG... method create_live_diff_stream (line 877) | async fn create_live_diff_stream( method extract_last_assistant_message (line 887) | fn extract_last_assistant_message(&self, exec_id: &Uuid) -> Option Res... method copy_files_and_images (line 938) | async fn copy_files_and_images( method create_workspace_config_files (line 984) | async fn create_workspace_config_files( method start_queued_follow_up (line 1038) | async fn start_queued_follow_up( function failure_exit_status (line 1111) | fn failure_exit_status() -> std::process::ExitStatus { method msg_stores (line 1126) | fn msg_stores(&self) -> &Arc>>> { method db (line 1130) | fn db(&self) -> &DBService { method git (line 1134) | fn git(&self) -> &GitService { method notification_service (line 1138) | fn notification_service(&self) -> &NotificationService { method touch (line 1142) | async fn touch(&self, workspace: &Workspace) -> Result<(), ContainerErro... method store_db_stream_handle (line 1175) | async fn store_db_stream_handle(&self, id: Uuid, handle: JoinHandle<()>) { method take_db_stream_handle (line 1179) | async fn take_db_stream_handle(&self, id: &Uuid) -> Option String { method workspace_to_current_dir (line 1187) | fn workspace_to_current_dir(&self, workspace: &Workspace) -> PathBuf { method create (line 1191) | async fn create(&self, workspace: &Workspace) -> Result Result<(), ContainerErr... method ensure_container_exists (line 1233) | async fn ensure_container_exists( method is_container_clean (line 1279) | async fn is_container_clean(&self, workspace: &Workspace) -> Result Result Result<(), ContainerError> { function success_exit_status (line 1620) | fn success_exit_status() -> std::process::ExitStatus { FILE: crates/local-deployment/src/copy.rs function normalize_pattern (line 12) | fn normalize_pattern(pattern: &str) -> String { function copy_project_files_impl (line 18) | pub(crate) fn copy_project_files_impl( function copy_single_file (line 76) | fn copy_single_file( function test_copy_project_files_mixed_patterns (line 125) | fn test_copy_project_files_mixed_patterns() { function test_copy_project_files_nonexistent_pattern_ok (line 156) | fn test_copy_project_files_nonexistent_pattern_ok() { function test_copy_project_files_empty_pattern_ok (line 168) | fn test_copy_project_files_empty_pattern_ok() { function test_copy_project_files_whitespace_handling (line 179) | fn test_copy_project_files_whitespace_handling() { function test_copy_project_files_nested_directory (line 191) | fn test_copy_project_files_nested_directory() { function test_copy_project_files_outside_source_skips_without_copying (line 210) | fn test_copy_project_files_outside_source_skips_without_copying() { function test_copy_project_files_recursive_glob_extension_filter (line 227) | fn test_copy_project_files_recursive_glob_extension_filter() { function test_copy_project_files_duplicate_patterns_ok (line 270) | fn test_copy_project_files_duplicate_patterns_ok() { function test_copy_project_files_single_file_path (line 294) | fn test_copy_project_files_single_file_path() { function test_symlink_loop_is_skipped (line 314) | fn test_symlink_loop_is_skipped() { FILE: crates/local-deployment/src/lib.rs type LocalDeployment (line 44) | pub struct LocalDeployment { method workspace_manager (line 329) | pub fn workspace_manager(&self) -> &WorkspaceManager { method remote_client (line 333) | pub fn remote_client(&self) -> Result LoginStatus { method store_oauth_handoff (line 367) | pub async fn store_oauth_handoff( method take_oauth_handoff (line 382) | pub async fn take_oauth_handoff(&self, handoff_id: &Uuid) -> Option<(S... method pty (line 390) | pub fn pty(&self) -> &PtyService { type PendingHandoff (line 71) | struct PendingHandoff { method new (line 78) | async fn new() -> Result { method user_id (line 251) | fn user_id(&self) -> &str { method config (line 255) | fn config(&self) -> &Arc> { method db (line 259) | fn db(&self) -> &DBService { method analytics (line 263) | fn analytics(&self) -> &Option { method container (line 267) | fn container(&self) -> &impl ContainerService { method git (line 271) | fn git(&self) -> &GitService { method repo (line 275) | fn repo(&self) -> &RepoService { method file (line 279) | fn file(&self) -> &FileService { method filesystem (line 283) | fn filesystem(&self) -> &FilesystemService { method events (line 287) | fn events(&self) -> &EventService { method file_search_cache (line 291) | fn file_search_cache(&self) -> &Arc { method approvals (line 295) | fn approvals(&self) -> &Approvals { method queued_message_service (line 299) | fn queued_message_service(&self) -> &QueuedMessageService { method auth_context (line 303) | fn auth_context(&self) -> &AuthContext { method relay_control (line 307) | fn relay_control(&self) -> &Arc { method relay_signing (line 311) | fn relay_signing(&self) -> &RelaySigningService { method server_info (line 315) | fn server_info(&self) -> &Arc { method trusted_key_auth (line 319) | fn trusted_key_auth(&self) -> &TrustedKeyAuthRuntime { method shared_api_base (line 323) | fn shared_api_base(&self) -> Option { FILE: crates/local-deployment/src/pty.rs type PtyError (line 16) | pub enum PtyError { type PtySession (line 29) | struct PtySession { type PtyService (line 37) | pub struct PtyService { method new (line 42) | pub fn new() -> Self { method create_session (line 48) | pub async fn create_session( method write (line 157) | pub async fn write(&self, session_id: Uuid, data: &[u8]) -> Result<(),... method resize (line 183) | pub async fn resize(&self, session_id: Uuid, cols: u16, rows: u16) -> ... method close_session (line 209) | pub async fn close_session(&self, session_id: Uuid) -> Result<(), PtyE... method session_exists (line 221) | pub fn session_exists(&self, session_id: &Uuid) -> bool { method default (line 230) | fn default() -> Self { FILE: crates/mcp/src/bin/vibe_kanban_mcp.rs constant HOST_ENV (line 9) | const HOST_ENV: &str = "MCP_HOST"; constant PORT_ENV (line 10) | const PORT_ENV: &str = "MCP_PORT"; type McpLaunchMode (line 13) | enum McpLaunchMode { type LaunchConfig (line 19) | struct LaunchConfig { function main (line 23) | fn main() -> anyhow::Result<()> { function resolve_launch_config (line 52) | fn resolve_launch_config() -> anyhow::Result { function resolve_launch_config_from_iter (line 56) | fn resolve_launch_config_from_iter(mut args: I) -> anyhow::Result anyhow::Result { function init_process_logging (line 136) | fn init_process_logging(log_prefix: &str, version: &str) { function orchestrator_mode_does_not_require_session_id (line 164) | fn orchestrator_mode_does_not_require_session_id() { function session_id_flag_is_rejected (line 179) | fn session_id_flag_is_rejected() { FILE: crates/mcp/src/lib.rs type ApiResponseEnvelope (line 4) | pub struct ApiResponseEnvelope { FILE: crates/mcp/src/task_server/handler.rs method get_info (line 11) | fn get_info(&self) -> ServerInfo { FILE: crates/mcp/src/task_server/mod.rs type McpRepoContext (line 15) | pub struct McpRepoContext { type McpContext (line 25) | pub struct McpContext { type McpMode (line 44) | pub enum McpMode { type McpServer (line 50) | pub struct McpServer { method new_global (line 59) | pub fn new_global(base_url: &str) -> Self { method new_orchestrator (line 69) | pub fn new_orchestrator(base_url: &str) -> Self { method url (line 79) | fn url(&self, path: &str) -> String { method init (line 87) | pub async fn init(mut self) -> anyhow::Result { method mode (line 101) | pub fn mode(&self) -> &McpMode { method fetch_context_at_startup (line 105) | async fn fetch_context_at_startup(&self) -> anyhow::Result Opti... FILE: crates/mcp/src/task_server/tools/context.rs method get_context (line 10) | async fn get_context(&self) -> Result { FILE: crates/mcp/src/task_server/tools/issue_assignees.rs type McpListIssueAssigneesRequest (line 14) | struct McpListIssueAssigneesRequest { type IssueAssigneeSummary (line 20) | struct IssueAssigneeSummary { type McpListIssueAssigneesResponse (line 32) | struct McpListIssueAssigneesResponse { type McpAssignIssueRequest (line 39) | struct McpAssignIssueRequest { type McpAssignIssueResponse (line 47) | struct McpAssignIssueResponse { type McpUnassignIssueRequest (line 52) | struct McpUnassignIssueRequest { type McpUnassignIssueResponse (line 58) | struct McpUnassignIssueResponse { method list_issue_assignees (line 66) | async fn list_issue_assignees( method assign_issue (line 101) | async fn assign_issue( method unassign_issue (line 124) | async fn unassign_issue( FILE: crates/mcp/src/task_server/tools/issue_relationships.rs type McpCreateIssueRelationshipRequest (line 14) | struct McpCreateIssueRelationshipRequest { type McpCreateIssueRelationshipResponse (line 24) | struct McpCreateIssueRelationshipResponse { type McpDeleteIssueRelationshipRequest (line 29) | struct McpDeleteIssueRelationshipRequest { type McpDeleteIssueRelationshipResponse (line 37) | struct McpDeleteIssueRelationshipResponse { method create_issue_relationship (line 47) | async fn create_issue_relationship( method delete_issue_relationship (line 75) | async fn delete_issue_relationship( FILE: crates/mcp/src/task_server/tools/issue_tags.rs type McpListTagsRequest (line 14) | struct McpListTagsRequest { type TagSummary (line 22) | struct TagSummary { type McpListTagsResponse (line 34) | struct McpListTagsResponse { type McpListIssueTagsRequest (line 41) | struct McpListIssueTagsRequest { type IssueTagSummary (line 47) | struct IssueTagSummary { type McpListIssueTagsResponse (line 57) | struct McpListIssueTagsResponse { type McpAddIssueTagRequest (line 64) | struct McpAddIssueTagRequest { type McpAddIssueTagResponse (line 72) | struct McpAddIssueTagResponse { type McpRemoveIssueTagRequest (line 77) | struct McpRemoveIssueTagRequest { type McpRemoveIssueTagResponse (line 83) | struct McpRemoveIssueTagResponse { method list_tags (line 93) | async fn list_tags( method list_issue_tags (line 127) | async fn list_issue_tags( method add_issue_tag (line 155) | async fn add_issue_tag( method remove_issue_tag (line 178) | async fn remove_issue_tag( FILE: crates/mcp/src/task_server/tools/mod.rs method global_mode_router (line 29) | pub fn global_mode_router() -> rmcp::handler::server::tool::ToolRouter rmcp::handler::server::tool::ToolRo... method orchestrator_session_id (line 54) | fn orchestrator_session_id(&self) -> Option { method scoped_workspace_id (line 60) | fn scoped_workspace_id(&self) -> Option { method success (line 64) | fn success(data: &T) -> Result { method err_value (line 71) | fn err_value(v: serde_json::Value) -> Result { method err (line 78) | fn err>(msg: S, details: Option) -> Result( method send_empty_json (line 116) | async fn send_empty_json(&self, rb: reqwest::RequestBuilder) -> Result<(... method resolve_workspace_id (line 147) | fn resolve_workspace_id(&self, explicit: Option) -> Result Result<(), CallT... method expand_tags (line 180) | async fn expand_tags(&self, text: &str) -> String { method resolve_project_id (line 225) | fn resolve_project_id(&self, explicit: Option) -> Result) -> Result Result Result) -> Result &'... function install_rustls_provider (line 383) | fn install_rustls_provider() { function tool_names (line 391) | fn tool_names(router: rmcp::handler::server::tool::ToolRouter... function orchestrator_mode_exposes_only_scoped_workflow_tools (line 400) | fn orchestrator_mode_exposes_only_scoped_workflow_tools() { function global_mode_keeps_workspace_admin_and_discovery_tools (line 416) | fn global_mode_keeps_workspace_admin_and_discovery_tools() { function orchestrator_session_id_is_resolved_from_context (line 425) | fn orchestrator_session_id_is_resolved_from_context() { function orchestrator_scope_requires_context_when_missing (line 454) | fn orchestrator_scope_requires_context_when_missing() { function global_context_omits_orchestrator_session_id_from_serialized_output (line 470) | fn global_context_omits_orchestrator_session_id_from_serialized_output() { FILE: crates/mcp/src/task_server/tools/organizations.rs type OrganizationSummary (line 12) | struct OrganizationSummary { type McpListOrganizationsResponse (line 24) | struct McpListOrganizationsResponse { type McpListOrgMembersRequest (line 30) | struct McpListOrgMembersRequest { type OrganizationMemberSummary (line 38) | struct OrganizationMemberSummary { type McpListOrgMembersResponse (line 58) | struct McpListOrgMembersResponse { method list_organizations (line 67) | async fn list_organizations(&self) -> Result { method list_org_members (line 95) | async fn list_org_members( FILE: crates/mcp/src/task_server/tools/remote_issues.rs type McpCreateIssueRequest (line 19) | struct McpCreateIssueRequest { type McpCreateIssueResponse (line 37) | struct McpCreateIssueResponse { type McpListIssuesRequest (line 42) | struct McpListIssuesRequest { type IssueSummary (line 78) | struct IssueSummary { type PullRequestSummary (line 106) | struct PullRequestSummary { type McpTagSummary (line 120) | struct McpTagSummary { type McpRelationshipSummary (line 130) | struct McpRelationshipSummary { type McpSubIssueSummary (line 142) | struct McpSubIssueSummary { type IssueDetails (line 154) | struct IssueDetails { type McpListIssuesResponse (line 192) | struct McpListIssuesResponse { type McpUpdateIssueRequest (line 202) | struct McpUpdateIssueRequest { type McpUpdateIssueResponse (line 222) | struct McpUpdateIssueResponse { type McpDeleteIssueRequest (line 227) | struct McpDeleteIssueRequest { type McpDeleteIssueResponse (line 233) | struct McpDeleteIssueResponse { type McpGetIssueRequest (line 238) | struct McpGetIssueRequest { type McpGetIssueResponse (line 244) | struct McpGetIssueResponse { type McpListIssuePrioritiesResponse (line 249) | struct McpListIssuePrioritiesResponse { method create_issue (line 258) | async fn create_issue( method list_issues (line 322) | async fn list_issues( method get_issue (line 468) | async fn get_issue( method update_issue (line 486) | async fn update_issue( method list_issue_priorities (line 559) | async fn list_issue_priorities(&self) -> Result) -> Result) -> Result ListPullRequestsR... method fetch_issue_tags_resolved (line 718) | async fn fetch_issue_tags_resolved( method fetch_issue_relationships_resolved (line 752) | async fn fetch_issue_relationships_resolved( method fetch_sub_issues (line 810) | async fn fetch_sub_issues( method parse_issue_priority (line 852) | fn parse_issue_priority(priority: &str) -> Result &'static str { method find_tag_ids_by_name (line 878) | async fn find_tag_ids_by_name( method matching_ids_by_name (line 891) | fn matching_ids_by_name<'a>( method resolve_tag_filters (line 902) | fn resolve_tag_filters( function collects_all_matching_status_ids_case_insensitively (line 933) | fn collects_all_matching_status_ids_case_insensitively() { function collects_all_matching_tag_ids_case_insensitively (line 949) | fn collects_all_matching_tag_ids_case_insensitively() { function resolve_tag_filters_requires_explicit_tag_id_to_match_tag_name (line 965) | fn resolve_tag_filters_requires_explicit_tag_id_to_match_tag_name() { function resolve_tag_filters_preserves_exact_tag_id_intersection (line 976) | fn resolve_tag_filters_preserves_exact_tag_id_intersection() { FILE: crates/mcp/src/task_server/tools/remote_projects.rs type McpListProjectsRequest (line 12) | struct McpListProjectsRequest { type ProjectSummary (line 18) | struct ProjectSummary { method from_remote_project (line 30) | fn from_remote_project(project: api_types::Project) -> Self { type McpListProjectsResponse (line 41) | struct McpListProjectsResponse { method list_projects (line 49) | async fn list_projects( FILE: crates/mcp/src/task_server/tools/repos.rs type McpRepoSummary (line 12) | struct McpRepoSummary { type GetRepoRequest (line 20) | struct GetRepoRequest { type RepoDetails (line 26) | struct RepoDetails { type UpdateSetupScriptRequest (line 42) | struct UpdateSetupScriptRequest { type UpdateCleanupScriptRequest (line 50) | struct UpdateCleanupScriptRequest { type UpdateDevServerScriptRequest (line 58) | struct UpdateDevServerScriptRequest { type UpdateRepoScriptResponse (line 66) | struct UpdateRepoScriptResponse { type ListReposResponse (line 76) | struct ListReposResponse { method list_repos (line 84) | async fn list_repos(&self) -> Result { method get_repo (line 110) | async fn get_repo( method update_setup_script (line 132) | async fn update_setup_script( method update_cleanup_script (line 161) | async fn update_cleanup_script( method update_dev_server_script (line 190) | async fn update_dev_server_script( FILE: crates/mcp/src/task_server/tools/sessions.rs type CreateSessionRequest (line 15) | struct CreateSessionRequest { type CreateSessionPayload (line 27) | struct CreateSessionPayload { type SessionSummary (line 34) | struct SessionSummary { type CreateSessionResponse (line 52) | struct CreateSessionResponse { type ListSessionsRequest (line 57) | struct ListSessionsRequest { type ListSessionsResponse (line 65) | struct ListSessionsResponse { type RunCodingAgentInSessionRequest (line 73) | struct RunCodingAgentInSessionRequest { type FollowUpPayload (line 81) | struct FollowUpPayload { type ExecutorConfigPayload (line 90) | struct ExecutorConfigPayload { type RunCodingAgentInSessionResponse (line 100) | struct RunCodingAgentInSessionResponse { type UpdateSessionRequest (line 107) | struct UpdateSessionRequest { type UpdateSessionPayload (line 115) | struct UpdateSessionPayload { type UpdateSessionResponse (line 120) | struct UpdateSessionResponse { type GetExecutionRequest (line 127) | struct GetExecutionRequest { type GetExecutionResponse (line 133) | struct GetExecutionResponse { method create_session (line 146) | async fn create_session( method list_sessions (line 194) | async fn list_sessions( method update_session (line 225) | async fn update_session( method run_session_prompt (line 258) | async fn run_session_prompt( method get_execution (line 321) | async fn get_execution( method executor_config_payload_for_session (line 360) | fn executor_config_payload_for_session( method session_summary (line 373) | fn session_summary(&self, session: Session) -> SessionSummary { method serialize_execution_process (line 386) | fn serialize_execution_process( FILE: crates/mcp/src/task_server/tools/task_attempts.rs type McpWorkspaceRepoInput (line 16) | struct McpWorkspaceRepoInput { type StartWorkspaceRequest (line 24) | struct StartWorkspaceRequest { type StartWorkspaceResponse (line 46) | struct StartWorkspaceResponse { type LinkWorkspaceIssueRequest (line 51) | struct LinkWorkspaceIssueRequest { type LinkWorkspaceIssueResponse (line 59) | struct LinkWorkspaceIssueResponse { function build_workspace_prompt_from_issue (line 68) | fn build_workspace_prompt_from_issue(issue: &api_types::Issue) -> Option... method start_workspace (line 95) | async fn start_workspace( method link_workspace_issue (line 227) | async fn link_workspace_issue( FILE: crates/mcp/src/task_server/tools/workspaces.rs type McpListWorkspacesRequest (line 12) | struct McpListWorkspacesRequest { type WorkspaceSummary (line 28) | struct WorkspaceSummary { type McpListWorkspacesResponse (line 46) | struct McpListWorkspacesResponse { type McpUpdateWorkspaceRequest (line 55) | struct McpUpdateWorkspaceRequest { type McpUpdateWorkspaceResponse (line 69) | struct McpUpdateWorkspaceResponse { type McpDeleteWorkspaceRequest (line 78) | struct McpDeleteWorkspaceRequest { type McpDeleteWorkspaceResponse (line 92) | struct McpDeleteWorkspaceResponse { method list_workspaces (line 102) | async fn list_workspaces( method update_workspace (line 172) | async fn update_workspace( method delete_workspace (line 213) | async fn delete_workspace( FILE: crates/relay-control/src/lib.rs type RelayControl (line 10) | pub struct RelayControl { method new (line 22) | pub fn new() -> Self { method reset (line 30) | pub async fn reset(&self) -> CancellationToken { method stop (line 41) | pub async fn stop(&self) { method default (line 16) | fn default() -> Self { FILE: crates/relay-control/src/signing.rs type RelaySigningSession (line 15) | struct RelaySigningSession { type RelaySignatureValidationError (line 23) | pub enum RelaySignatureValidationError { method as_str (line 32) | pub fn as_str(self) -> &'static str { constant RELAY_SIGNATURE_MAX_TIMESTAMP_DRIFT_SECS (line 43) | const RELAY_SIGNATURE_MAX_TIMESTAMP_DRIFT_SECS: i64 = 30; constant RELAY_SIGNING_SESSION_TTL (line 44) | const RELAY_SIGNING_SESSION_TTL: Duration = Duration::from_secs(60 * 60); constant RELAY_SIGNING_SESSION_IDLE_TTL (line 45) | const RELAY_SIGNING_SESSION_IDLE_TTL: Duration = Duration::from_secs(15 ... constant RELAY_NONCE_TTL (line 46) | const RELAY_NONCE_TTL: Duration = Duration::from_secs(2 * 60); type RelaySigningService (line 49) | pub struct RelaySigningService { method new (line 55) | pub fn new(server_signing_key: SigningKey) -> Self { method load_or_generate (line 62) | pub fn load_or_generate(key_path: &Path) -> io::Result { method server_public_key (line 94) | pub fn server_public_key(&self) -> VerifyingKey { method create_session (line 98) | pub async fn create_session(&self, browser_public_key: VerifyingKey) -... method verify_message (line 114) | pub async fn verify_message( method sign_message (line 151) | pub async fn sign_message( method verify_signature (line 163) | pub async fn verify_signature( method get_valid_session (line 181) | async fn get_valid_session( function validate_timestamp (line 197) | fn validate_timestamp(timestamp: i64) -> Result<(), RelaySignatureValida... function parse_signature_b64 (line 213) | fn parse_signature_b64(signature_b64: &str) -> Result anyhow::Result<()> { FILE: crates/relay-tunnel/src/client.rs type RelayClientConfig (line 22) | pub struct RelayClientConfig { function start_relay_client (line 32) | pub async fn start_relay_client(config: RelayClientConfig) -> anyhow::Re... function handle_inbound_stream (line 82) | async fn handle_inbound_stream( function proxy_to_local (line 100) | async fn proxy_to_local( function simple_response (line 170) | fn simple_response(status: StatusCode, body: &'static str) -> Response WsIoReadMessage { function write_client_message (line 186) | fn write_client_message(bytes: Vec) -> tungstenite::Message { FILE: crates/relay-tunnel/src/server.rs type SharedControl (line 20) | pub type SharedControl = Arc>; function run_control_channel (line 26) | pub async fn run_control_channel(socket: WebSocket, on_connected... function proxy_request_over_control (line 52) | pub async fn proxy_request_over_control( function normalized_relay_path (line 125) | fn normalized_relay_path(uri: &axum::http::Uri, strip_prefix: &str) -> S... function read_server_message (line 133) | fn read_server_message(message: AxumWsMessage) -> WsIoReadMessage { function write_server_message (line 142) | fn write_server_message(bytes: Vec) -> AxumWsMessage { FILE: crates/relay-tunnel/src/server_bin/auth.rs type AccessTokenClaims (line 31) | struct AccessTokenClaims { type AccessTokenDetails (line 40) | pub struct AccessTokenDetails { type JwtError (line 47) | pub enum JwtError { constant DEFAULT_JWT_LEEWAY_SECONDS (line 56) | const DEFAULT_JWT_LEEWAY_SECONDS: u64 = 60; type JwtService (line 59) | pub struct JwtService { method fmt (line 64) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method new (line 72) | pub fn new(secret: SecretString) -> Self { method decode_access_token (line 78) | pub fn decode_access_token(&self, token: &str) -> Result Result { type ConfigError (line 14) | pub enum ConfigError { function validate_jwt_secret (line 43) | fn validate_jwt_secret(secret: &str) -> Result<(), ConfigError> { FILE: crates/relay-tunnel/src/server_bin/db/auth_sessions.rs type AuthSessionError (line 8) | pub enum AuthSessionError { constant MAX_SESSION_INACTIVITY_DURATION (line 15) | pub const MAX_SESSION_INACTIVITY_DURATION: Duration = Duration::days(365); type AuthSessionRepository (line 17) | pub struct AuthSessionRepository<'a> { function new (line 22) | pub fn new(pool: &'a PgPool) -> Self { function get (line 26) | pub async fn get(&self, session_id: Uuid) -> Result Result<(), AuthSessionErr... function revoke (line 66) | pub async fn revoke(&self, session_id: Uuid) -> Result<(), AuthSessionEr... FILE: crates/relay-tunnel/src/server_bin/db/hosts.rs type HostRepository (line 7) | pub struct HostRepository<'a> { function new (line 12) | pub fn new(pool: &'a PgPool) -> Self { function upsert_host (line 19) | pub async fn upsert_host( function assert_host_access (line 54) | pub async fn assert_host_access( function is_host_online (line 84) | pub async fn is_host_online(&self, host_id: Uuid) -> Result Result Result<(),... function mark_host_online (line 157) | pub async fn mark_host_online( function mark_host_offline (line 179) | pub async fn mark_host_offline(&self, host_id: Uuid) -> Result<(), sqlx:... FILE: crates/relay-tunnel/src/server_bin/db/identity_errors.rs type IdentityError (line 4) | pub enum IdentityError { FILE: crates/relay-tunnel/src/server_bin/db/mod.rs function create_pool (line 10) | pub async fn create_pool(database_url: &str) -> Result { function new (line 13) | pub fn new(pool: &'a PgPool) -> Self { function create (line 18) | pub async fn create( function redeem_for_host (line 44) | pub async fn redeem_for_host( function hash_code (line 71) | fn hash_code(code: &str) -> String { FILE: crates/relay-tunnel/src/server_bin/db/relay_browser_sessions.rs type RelayBrowserSession (line 6) | pub struct RelayBrowserSession { type RelayBrowserSessionRepository (line 16) | pub struct RelayBrowserSessionRepository<'a> { function new (line 21) | pub fn new(pool: &'a PgPool) -> Self { function create (line 25) | pub async fn create( function get (line 53) | pub async fn get(&self, session_id: Uuid) -> Result Result<(), sqlx::Error> { function revoke (line 92) | pub async fn revoke(&self, session_id: Uuid) -> Result<(), sqlx::Error> { FILE: crates/relay-tunnel/src/server_bin/db/users.rs type UserRepository (line 7) | pub struct UserRepository<'a> { function new (line 12) | pub fn new(pool: &'a PgPool) -> Self { function fetch_user (line 16) | pub async fn fetch_user(&self, user_id: Uuid) -> Result Self { type RelayRegistry (line 28) | pub struct RelayRegistry { method insert (line 34) | pub async fn insert(&self, host_id: Uuid, relay: Arc) { method remove (line 39) | pub async fn remove(&self, host_id: &Uuid) { method remove_if_same (line 44) | pub async fn remove_if_same(&self, host_id: &Uuid, relay: &Arc Option> { FILE: crates/relay-tunnel/src/server_bin/routes/auth_code.rs function relay_session_auth_code (line 23) | pub async fn relay_session_auth_code( FILE: crates/relay-tunnel/src/server_bin/routes/connect.rs type ConnectQuery (line 23) | pub struct ConnectQuery { function relay_connect (line 32) | pub async fn relay_connect( function handle_control_channel (line 71) | async fn handle_control_channel( FILE: crates/relay-tunnel/src/server_bin/routes/mod.rs function build_router (line 20) | pub fn build_router(state: RelayAppState) -> Router { type HealthResponse (line 71) | struct HealthResponse { function health (line 75) | async fn health() -> impl IntoResponse { FILE: crates/relay-tunnel/src/server_bin/routes/path_routes.rs constant RELAY_PROXY_PREFIX (line 23) | const RELAY_PROXY_PREFIX: &str = "/relay/h"; type RelayExchangeQuery (line 26) | pub(super) struct RelayExchangeQuery { function relay_path_exchange (line 31) | pub(super) async fn relay_path_exchange( function relay_path_proxy (line 56) | pub(super) async fn relay_path_proxy( function relay_path_proxy_with_tail (line 71) | pub(super) async fn relay_path_proxy_with_tail( function validate_browser_session_for_host (line 85) | async fn validate_browser_session_for_host( function do_relay_proxy_for_host (line 167) | async fn do_relay_proxy_for_host( FILE: crates/relay-tunnel/src/server_bin/state.rs type RelayAppState (line 8) | pub struct RelayAppState { method new (line 16) | pub fn new(pool: PgPool, config: RelayServerConfig, jwt: Arc Option { type AcceptAllCerts (line 29) | struct AcceptAllCerts; method verify_server_cert (line 33) | fn verify_server_cert( method verify_tls12_signature (line 44) | fn verify_tls12_signature( method verify_tls13_signature (line 53) | fn verify_tls13_signature( method supported_verify_schemes (line 62) | fn supported_verify_schemes(&self) -> Vec { FILE: crates/relay-tunnel/src/ws_io.rs type WsIoReadMessage (line 12) | pub enum WsIoReadMessage { type WsMessageStreamIo (line 19) | pub struct WsMessageStreamIo { function new (line 28) | pub fn new(ws: S, read_message: FRead, write_message: FWrite) -> Self { method poll_read (line 46) | fn poll_read( method poll_write (line 82) | fn poll_write( method poll_flush (line 101) | fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll... FILE: crates/remote/migrations/20251001000000_shared_tasks_activity.sql function set_updated_at (line 3) | CREATE OR REPLACE FUNCTION set_updated_at() type organizations (line 13) | CREATE TABLE IF NOT EXISTS organizations ( type users (line 22) | CREATE TABLE IF NOT EXISTS users ( type organization_member_metadata (line 40) | CREATE TABLE IF NOT EXISTS organization_member_metadata ( type idx_member_metadata_user (line 49) | CREATE INDEX IF NOT EXISTS idx_member_metadata_user type idx_member_metadata_org_role (line 52) | CREATE INDEX IF NOT EXISTS idx_member_metadata_org_role type projects (line 63) | CREATE TABLE IF NOT EXISTS projects ( type idx_projects_org_name (line 71) | CREATE INDEX IF NOT EXISTS idx_projects_org_name type project_activity_counters (line 74) | CREATE TABLE IF NOT EXISTS project_activity_counters ( type shared_tasks (line 79) | CREATE TABLE IF NOT EXISTS shared_tasks ( type idx_tasks_org_status (line 96) | CREATE INDEX IF NOT EXISTS idx_tasks_org_status type idx_tasks_org_assignee (line 99) | CREATE INDEX IF NOT EXISTS idx_tasks_org_assignee type idx_tasks_project (line 102) | CREATE INDEX IF NOT EXISTS idx_tasks_project type idx_shared_tasks_org_deleted_at (line 105) | CREATE INDEX IF NOT EXISTS idx_shared_tasks_org_deleted_at type activity (line 110) | CREATE TABLE activity ( type idx_activity_project_seq (line 122) | CREATE INDEX IF NOT EXISTS idx_activity_project_seq function ensure_activity_partition (line 126) | CREATE FUNCTION ensure_activity_partition(target_ts TIMESTAMPTZ) function activity_notify (line 181) | CREATE FUNCTION activity_notify() RETURNS trigger AS $$ type organization_invitations (line 210) | CREATE TABLE IF NOT EXISTS organization_invitations ( type idx_org_invites_org (line 223) | CREATE INDEX IF NOT EXISTS idx_org_invites_org type idx_org_invites_status_expires (line 226) | CREATE INDEX IF NOT EXISTS idx_org_invites_status_expires type uniq_pending_invite_per_email_per_org (line 229) | CREATE UNIQUE INDEX IF NOT EXISTS uniq_pending_invite_per_email_per_org type auth_sessions (line 233) | CREATE TABLE IF NOT EXISTS auth_sessions ( type idx_auth_sessions_user (line 242) | CREATE INDEX IF NOT EXISTS idx_auth_sessions_user type oauth_accounts (line 245) | CREATE TABLE IF NOT EXISTS oauth_accounts ( type idx_oauth_accounts_user (line 259) | CREATE INDEX IF NOT EXISTS idx_oauth_accounts_user type idx_oauth_accounts_provider_user (line 262) | CREATE INDEX IF NOT EXISTS idx_oauth_accounts_provider_user type oauth_handoffs (line 265) | CREATE TABLE IF NOT EXISTS oauth_handoffs ( type idx_oauth_handoffs_status (line 283) | CREATE INDEX IF NOT EXISTS idx_oauth_handoffs_status type idx_oauth_handoffs_user (line 286) | CREATE INDEX IF NOT EXISTS idx_oauth_handoffs_user function set_last_used_at (line 319) | CREATE OR REPLACE FUNCTION set_last_used_at() FILE: crates/remote/migrations/20251117000000_jwt_refresh_tokens.sql type idx_auth_sessions_refresh_id (line 4) | CREATE INDEX IF NOT EXISTS idx_auth_sessions_refresh_id type revoked_refresh_tokens (line 7) | CREATE TABLE IF NOT EXISTS revoked_refresh_tokens ( type idx_revoked_tokens_user (line 14) | CREATE INDEX IF NOT EXISTS idx_revoked_tokens_user FILE: crates/remote/migrations/20251212000000_create_reviews_table.sql type reviews (line 1) | CREATE TABLE IF NOT EXISTS reviews ( type idx_reviews_ip_created (line 17) | CREATE INDEX IF NOT EXISTS idx_reviews_ip_created ON reviews (ip_address... FILE: crates/remote/migrations/20251215000000_github_app_installations.sql type github_app_installations (line 2) | CREATE TABLE github_app_installations ( type idx_github_app_installations_org (line 15) | CREATE INDEX idx_github_app_installations_org ON github_app_installation... type github_app_repositories (line 18) | CREATE TABLE github_app_repositories ( type idx_github_app_repos_installation (line 27) | CREATE INDEX idx_github_app_repos_installation ON github_app_repositorie... type github_app_pending_installations (line 30) | CREATE TABLE github_app_pending_installations ( type idx_pending_installations_state (line 39) | CREATE INDEX idx_pending_installations_state ON github_app_pending_insta... type idx_pending_installations_expires (line 40) | CREATE INDEX idx_pending_installations_expires ON github_app_pending_ins... FILE: crates/remote/migrations/20251216000000_add_webhook_fields_to_reviews.sql type idx_reviews_webhook (line 14) | CREATE INDEX idx_reviews_webhook ON reviews (github_installation_id) FILE: crates/remote/migrations/20251216100000_add_review_enabled_to_repos.sql type idx_github_app_repos_review_enabled (line 6) | CREATE INDEX idx_github_app_repos_review_enabled FILE: crates/remote/migrations/20260112000000_remote-projects.sql type project_statuses (line 30) | CREATE TABLE project_statuses ( type project_notification_preferences (line 42) | CREATE TABLE project_notification_preferences ( type issues (line 53) | CREATE TABLE issues ( function set_issue_simple_id (line 92) | CREATE OR REPLACE FUNCTION set_issue_simple_id() type issue_assignees (line 124) | CREATE TABLE issue_assignees ( type issue_followers (line 133) | CREATE TABLE issue_followers ( type issue_relationships (line 144) | CREATE TABLE issue_relationships ( type tags (line 155) | CREATE TABLE tags ( type issue_tags (line 164) | CREATE TABLE issue_tags ( type issue_comments (line 172) | CREATE TABLE issue_comments ( type issue_comment_reactions (line 185) | CREATE TABLE issue_comment_reactions ( type notifications (line 205) | CREATE TABLE notifications ( type idx_issues_project_id (line 223) | CREATE INDEX idx_issues_project_id ON issues(project_id) type idx_issues_status_id (line 224) | CREATE INDEX idx_issues_status_id ON issues(status_id) type idx_issues_parent_issue_id (line 225) | CREATE INDEX idx_issues_parent_issue_id ON issues(parent_issue_id) type idx_issues_simple_id (line 226) | CREATE INDEX idx_issues_simple_id ON issues(simple_id) type idx_issue_comments_issue_id (line 227) | CREATE INDEX idx_issue_comments_issue_id ON issue_comments(issue_id) type idx_issue_comments_parent_id (line 228) | CREATE INDEX idx_issue_comments_parent_id ON issue_comments(parent_id) type idx_notifications_user_unseen (line 230) | CREATE INDEX idx_notifications_user_unseen type idx_notifications_user_created (line 234) | CREATE INDEX idx_notifications_user_created type idx_notifications_org (line 237) | CREATE INDEX idx_notifications_org type workspaces (line 242) | CREATE TABLE workspaces ( type idx_workspaces_project_id (line 257) | CREATE INDEX idx_workspaces_project_id ON workspaces(project_id) type idx_workspaces_owner_user_id (line 258) | CREATE INDEX idx_workspaces_owner_user_id ON workspaces(owner_user_id) type idx_workspaces_issue_id (line 259) | CREATE INDEX idx_workspaces_issue_id ON workspaces(issue_id) WHERE issue... type idx_workspaces_local_workspace_id (line 260) | CREATE INDEX idx_workspaces_local_workspace_id ON workspaces(local_works... type pull_requests (line 266) | CREATE TABLE pull_requests ( type idx_pull_requests_issue_id (line 282) | CREATE INDEX idx_pull_requests_issue_id ON pull_requests(issue_id) type idx_pull_requests_workspace_id (line 283) | CREATE INDEX idx_pull_requests_workspace_id ON pull_requests(workspace_i... type idx_pull_requests_status (line 284) | CREATE INDEX idx_pull_requests_status ON pull_requests(status) FILE: crates/remote/migrations/20260114000000_electric_sync_tables.sql type idx_projects_organization_id (line 21) | CREATE INDEX IF NOT EXISTS idx_projects_organization_id ON projects(orga... type idx_project_statuses_project_id (line 22) | CREATE INDEX IF NOT EXISTS idx_project_statuses_project_id ON project_st... type idx_tags_project_id (line 23) | CREATE INDEX IF NOT EXISTS idx_tags_project_id ON tags(project_id) type idx_issue_assignees_issue_id (line 24) | CREATE INDEX IF NOT EXISTS idx_issue_assignees_issue_id ON issue_assigne... type idx_issue_followers_issue_id (line 25) | CREATE INDEX IF NOT EXISTS idx_issue_followers_issue_id ON issue_followe... type idx_issue_tags_issue_id (line 26) | CREATE INDEX IF NOT EXISTS idx_issue_tags_issue_id ON issue_tags(issue_id) type idx_issue_relationships_issue_id (line 27) | CREATE INDEX IF NOT EXISTS idx_issue_relationships_issue_id ON issue_rel... type idx_issue_comment_reactions_comment_id (line 28) | CREATE INDEX IF NOT EXISTS idx_issue_comment_reactions_comment_id ON iss... FILE: crates/remote/migrations/20260115000000_billing.sql type organization_billing (line 2) | CREATE TABLE organization_billing ( type idx_org_billing_stripe_customer (line 27) | CREATE INDEX idx_org_billing_stripe_customer ON organization_billing(str... type idx_org_billing_stripe_subscription (line 31) | CREATE INDEX idx_org_billing_stripe_subscription ON organization_billing... FILE: crates/remote/migrations/20260204000000_issue_attachments.sql type blobs (line 3) | CREATE TABLE blobs ( type idx_blobs_project_id (line 18) | CREATE INDEX idx_blobs_project_id ON blobs(project_id) type idx_blobs_hash (line 19) | CREATE INDEX idx_blobs_hash ON blobs(hash) type attachments (line 23) | CREATE TABLE attachments ( type idx_attachments_blob_id (line 34) | CREATE INDEX idx_attachments_blob_id ON attachments(blob_id) type idx_attachments_issue_id (line 35) | CREATE INDEX idx_attachments_issue_id ON attachments(issue_id) WHERE iss... type idx_attachments_comment_id (line 36) | CREATE INDEX idx_attachments_comment_id ON attachments(comment_id) WHERE... type idx_attachments_expires_at (line 37) | CREATE INDEX idx_attachments_expires_at ON attachments(expires_at) WHERE... FILE: crates/remote/migrations/20260205000000_add_issue_creator.sql type idx_issues_creator_user_id (line 6) | CREATE INDEX idx_issues_creator_user_id ON issues(creator_user_id) WHERE... FILE: crates/remote/migrations/20260213000000_pending_uploads.sql type pending_uploads (line 1) | CREATE TABLE pending_uploads ( type idx_pending_uploads_expires_at (line 10) | CREATE INDEX idx_pending_uploads_expires_at ON pending_uploads(expires_at) FILE: crates/remote/migrations/20260217000000_add_project_sort_order.sql type idx_projects_organization_sort_order (line 4) | CREATE INDEX IF NOT EXISTS idx_projects_organization_sort_order FILE: crates/remote/migrations/20260226100000_relay_hosts_and_sessions.sql type hosts (line 1) | CREATE TABLE hosts ( type idx_hosts_owner_user_id (line 14) | CREATE INDEX idx_hosts_owner_user_id ON hosts(owner_user_id) type idx_hosts_owner_user_id_machine_id (line 15) | CREATE UNIQUE INDEX idx_hosts_owner_user_id_machine_id ON hosts(owner_us... type idx_hosts_shared_with_organization_id (line 16) | CREATE INDEX idx_hosts_shared_with_organization_id ON hosts(shared_with_... type idx_hosts_last_seen_at (line 17) | CREATE INDEX idx_hosts_last_seen_at ON hosts(last_seen_at DESC) type relay_sessions (line 19) | CREATE TABLE relay_sessions ( type idx_relay_sessions_host_id (line 30) | CREATE INDEX idx_relay_sessions_host_id ON relay_sessions(host_id) type idx_relay_sessions_request_user_id (line 31) | CREATE INDEX idx_relay_sessions_request_user_id ON relay_sessions(reques... type idx_relay_sessions_state_expires_at (line 32) | CREATE INDEX idx_relay_sessions_state_expires_at ON relay_sessions(state... type relay_browser_sessions (line 34) | CREATE TABLE relay_browser_sessions ( type idx_relay_browser_sessions_host_id (line 44) | CREATE INDEX idx_relay_browser_sessions_host_id type idx_relay_browser_sessions_user_id (line 46) | CREATE INDEX idx_relay_browser_sessions_user_id type idx_relay_browser_sessions_auth_session_id (line 48) | CREATE INDEX idx_relay_browser_sessions_auth_session_id type idx_relay_browser_sessions_active (line 50) | CREATE INDEX idx_relay_browser_sessions_active type relay_auth_codes (line 54) | CREATE TABLE relay_auth_codes ( type idx_relay_auth_codes_host_id (line 64) | CREATE INDEX idx_relay_auth_codes_host_id ON relay_auth_codes(host_id) type idx_relay_auth_codes_expires_at (line 65) | CREATE INDEX idx_relay_auth_codes_expires_at ON relay_auth_codes(expires... FILE: crates/remote/migrations/20260311000000_notification_digest.sql type notification_digest_deliveries (line 1) | CREATE TABLE notification_digest_deliveries ( FILE: crates/remote/migrations/20260313000000_fix-short-id-counter.sql function set_issue_simple_id (line 65) | CREATE OR REPLACE FUNCTION set_issue_simple_id() FILE: crates/remote/src/analytics.rs type AnalyticsConfig (line 7) | pub struct AnalyticsConfig { method from_env (line 13) | pub fn from_env() -> Option { method from_values (line 20) | fn from_values(api_key: Option<&str>, api_endpoint: Option<&str>) -> O... type AnalyticsService (line 36) | pub struct AnalyticsService { method new (line 42) | pub fn new(config: AnalyticsConfig) -> Self { method track (line 50) | pub fn track(&self, user_id: Uuid, event_name: &str, properties: Value) { FILE: crates/remote/src/app.rs type Server (line 25) | pub struct Server; method run (line 33) | pub async fn run(config: RemoteServerConfig, billing: BillingService) ... FILE: crates/remote/src/attachments/cleanup.rs constant EXPIRED_BATCH_SIZE (line 15) | const EXPIRED_BATCH_SIZE: i64 = 100; constant DEFAULT_INTERVAL (line 16) | const DEFAULT_INTERVAL: Duration = Duration::from_secs(3600); function spawn_cleanup_task (line 20) | pub fn spawn_cleanup_task(pool: PgPool, azure: AzureBlobService) -> Join... function run_sweep (line 45) | async fn run_sweep(pool: &PgPool, azure: &AzureBlobService) { function cleanup_expired_attachments (line 64) | async fn cleanup_expired_attachments( function cleanup_expired_pending_uploads (line 105) | async fn cleanup_expired_pending_uploads( FILE: crates/remote/src/attachments/thumbnail.rs constant THUMBNAIL_MAX_WIDTH (line 3) | const THUMBNAIL_MAX_WIDTH: u32 = 200; constant THUMBNAIL_MAX_HEIGHT (line 4) | const THUMBNAIL_MAX_HEIGHT: u32 = 150; constant THUMBNAIL_JPEG_QUALITY (line 5) | const THUMBNAIL_JPEG_QUALITY: u8 = 80; type ThumbnailResult (line 8) | pub struct ThumbnailResult { type ThumbnailError (line 18) | pub enum ThumbnailError { type ThumbnailService (line 27) | pub struct ThumbnailService; method generate (line 32) | pub fn generate( function calculate_thumbnail_dimensions (line 76) | fn calculate_thumbnail_dimensions(width: u32, height: u32) -> (u32, u32) { function encode_jpeg (line 92) | fn encode_jpeg(img: &DynamicImage, quality: u8) -> Result, Thumb... function test_calculate_dimensions_smaller_than_max (line 107) | fn test_calculate_dimensions_smaller_than_max() { function test_calculate_dimensions_landscape (line 113) | fn test_calculate_dimensions_landscape() { function test_calculate_dimensions_portrait (line 121) | fn test_calculate_dimensions_portrait() { function test_unsupported_mime_type (line 129) | fn test_unsupported_mime_type() { FILE: crates/remote/src/audit/mod.rs type AuditAction (line 6) | pub enum AuditAction { method as_str (line 21) | pub fn as_str(&self) -> &'static str { type AuditEvent (line 39) | pub struct AuditEvent { method from_request (line 54) | pub fn from_request(ctx: &RequestContext, action: AuditAction) -> Self { method system (line 70) | pub fn system(action: AuditAction) -> Self { method resource (line 85) | pub fn resource(mut self, resource_type: &'static str, resource_id: Op... method organization (line 91) | pub fn organization(mut self, id: Uuid) -> Self { method http (line 96) | pub fn http(mut self, method: &str, path: impl Into, status: u... method description (line 103) | pub fn description(mut self, desc: impl Into) -> Self { method user (line 108) | pub fn user(mut self, user_id: Uuid, session_id: Option) -> Self { function emit (line 117) | pub fn emit(event: AuditEvent) { FILE: crates/remote/src/auth/handoff.rs constant STATE_LENGTH (line 34) | const STATE_LENGTH: usize = 48; constant APP_CODE_LENGTH (line 35) | const APP_CODE_LENGTH: usize = 48; constant HANDOFF_TTL (line 36) | const HANDOFF_TTL: i64 = 10; constant USER_FETCH_MAX_ATTEMPTS (line 37) | const USER_FETCH_MAX_ATTEMPTS: usize = 5; constant USER_FETCH_RETRY_DELAY_MS (line 38) | const USER_FETCH_RETRY_DELAY_MS: u64 = 500; type HandoffError (line 41) | pub enum HandoffError { type HandoffInitResponse (line 73) | pub struct HandoffInitResponse { type CallbackResult (line 80) | pub enum CallbackResult { type RedeemResponse (line 94) | pub struct RedeemResponse { type OAuthHandoffService (line 101) | pub struct OAuthHandoffService { method new (line 109) | pub fn new( method providers (line 124) | pub fn providers(&self) -> Arc { method initiate (line 128) | pub async fn initiate( method authorize_url (line 176) | pub async fn authorize_url( method handle_callback (line 215) | pub async fn handle_callback( method redeem (line 316) | pub async fn redeem( method fetch_user_with_retries (line 392) | async fn fetch_user_with_retries( method upsert_identity (line 423) | async fn upsert_identity( type IdentityUser (line 479) | type IdentityUser = api_types::User; function is_expired (line 481) | fn is_expired(record: &OAuthHandoff) -> bool { function is_valid_challenge (line 485) | fn is_valid_challenge(challenge: &str) -> bool { function is_allowed_return_to (line 491) | fn is_allowed_return_to(url: &Url, public_origin: &str) -> bool { function hash_sha256_hex (line 512) | fn hash_sha256_hex(input: &str) -> String { function generate_state (line 521) | fn generate_state() -> String { function generate_app_code (line 529) | fn generate_app_code() -> String { function ensure_email (line 537) | fn ensure_email(provider: &str, profile: &ProviderUser) -> String { function derive_username (line 548) | fn derive_username(provider: &str, profile: &ProviderUser) -> Option Option { function split_name (line 562) | fn split_name(name: Option<&str>) -> (Option, Option) { function is_forbidden_error (line 579) | fn is_forbidden_error(err: &AnyhowError) -> bool { function hashes_match_hex_length (line 594) | fn hashes_match_hex_length() { function challenge_validation (line 600) | fn challenge_validation() { FILE: crates/remote/src/auth/jwt.rs constant ACCESS_TOKEN_TTL_SECONDS (line 22) | pub const ACCESS_TOKEN_TTL_SECONDS: i64 = 120; constant REFRESH_TOKEN_TTL_DAYS (line 23) | pub const REFRESH_TOKEN_TTL_DAYS: i64 = 365; constant DEFAULT_JWT_LEEWAY_SECONDS (line 24) | const DEFAULT_JWT_LEEWAY_SECONDS: u64 = 60; type JwtError (line 27) | pub enum JwtError { type AccessTokenClaims (line 49) | pub struct AccessTokenClaims { type RefreshTokenClaims (line 58) | pub struct RefreshTokenClaims { type AccessTokenDetails (line 71) | pub struct AccessTokenDetails { type RefreshTokenDetails (line 78) | pub struct RefreshTokenDetails { type JwtService (line 87) | pub struct JwtService { method new (line 99) | pub fn new(secret: SecretString) -> Self { method generate_tokens (line 105) | pub fn generate_tokens( method generate_access_token (line 158) | pub fn generate_access_token( method decode_access_token (line 181) | pub fn decode_access_token(&self, token: &str) -> Result Result Result { method decrypt_data (line 290) | fn decrypt_data(&self, encrypted: &str) -> Result, JwtError> { method derive_key (line 314) | fn derive_key(&self) -> Result<[u8; 32], JwtError> { type Tokens (line 92) | pub struct Tokens { FILE: crates/remote/src/auth/middleware.rs type RequestContext (line 28) | pub struct RequestContext { function require_session (line 35) | pub async fn require_session( function request_context_from_access_token (line 68) | pub async fn request_context_from_access_token( function request_context_from_auth_session_id (line 96) | pub async fn request_context_from_auth_session_id( FILE: crates/remote/src/auth/oauth_token_validator.rs type OAuthTokenValidationError (line 20) | pub enum OAuthTokenValidationError { type OAuthTokenValidator (line 31) | pub struct OAuthTokenValidator { method new (line 38) | pub fn new( method validate (line 52) | pub async fn validate( method verify_inner (line 87) | async fn verify_inner( method persist_provider_tokens (line 201) | async fn persist_provider_tokens( FILE: crates/remote/src/auth/provider.rs constant USER_AGENT (line 13) | const USER_AGENT: &str = "VibeKanbanRemote/1.0"; constant TOKEN_EXPIRATION_LEEWAY_SECONDS (line 15) | const TOKEN_EXPIRATION_LEEWAY_SECONDS: i64 = 20; constant VALIDATE_TOKEN_MAX_RETRIES (line 16) | pub const VALIDATE_TOKEN_MAX_RETRIES: u32 = 3; constant RETRY_INTERVAL_SECONDS (line 17) | const RETRY_INTERVAL_SECONDS: u64 = 2; type AuthorizationGrant (line 20) | pub struct AuthorizationGrant { type ProviderUser (line 30) | pub struct ProviderUser { type TokenValidationError (line 39) | pub enum TokenValidationError { method temporary (line 47) | fn temporary(message: impl Into) -> Self { type ProviderTokenDetails (line 53) | pub struct ProviderTokenDetails { type AuthorizationProvider (line 61) | pub trait AuthorizationProvider: Send + Sync { method name (line 62) | fn name(&self) -> &'static str; method scopes (line 63) | fn scopes(&self) -> &[&str]; method authorize_url (line 64) | fn authorize_url(&self, state: &str, redirect_uri: &str) -> Result; method exchange_code (line 65) | async fn exchange_code(&self, code: &str, redirect_uri: &str) -> Resul... method fetch_user (line 66) | async fn fetch_user(&self, access_token: &SecretString) -> Result &'static str { method scopes (line 166) | fn scopes(&self) -> &[&str] { method authorize_url (line 170) | fn authorize_url(&self, state: &str, redirect_uri: &str) -> Result { method exchange_code (line 183) | async fn exchange_code(&self, code: &str, redirect_uri: &str) -> Resul... method fetch_user (line 221) | async fn fetch_user(&self, access_token: &SecretString) -> Result &'static str { method scopes (line 499) | fn scopes(&self) -> &[&str] { method authorize_url (line 503) | fn authorize_url(&self, state: &str, redirect_uri: &str) -> Result { method exchange_code (line 518) | async fn exchange_code(&self, code: &str, redirect_uri: &str) -> Resul... method fetch_user (line 570) | async fn fetch_user(&self, access_token: &SecretString) -> Result Self { method register (line 84) | pub fn register

(&mut self, provider: P) method get (line 92) | pub fn get(&self, provider: &str) -> Option bool { type GitHubOAuthProvider (line 102) | pub struct GitHubOAuthProvider { method new (line 109) | pub fn new(client_id: String, client_secret: SecretString) -> Result) -> Vec { type GitHubTokenResponse (line 132) | enum GitHubTokenResponse { type GitHubUser (line 145) | struct GitHubUser { type GitHubEmail (line 154) | struct GitHubEmail { type GoogleOAuthProvider (line 363) | pub struct GoogleOAuthProvider { method new (line 370) | pub fn new(client_id: String, client_secret: SecretString) -> Result Self { method container_client (line 120) | fn container_client(&self) -> BlobContainerClient { method blob_client (line 125) | fn blob_client(&self, blob_path: &str) -> BlobClient { method create_upload_url (line 129) | pub fn create_upload_url(&self, blob_path: &str) -> Result Result Result, ... method upload_blob (line 197) | pub async fn upload_blob( method delete_blob (line 221) | pub async fn delete_blob(&self, blob_path: &str) -> Result<(), AzureBl... method generate_sas_url (line 230) | fn generate_sas_url( type PresignedUpload (line 37) | pub struct PresignedUpload { type BlobProperties (line 44) | pub struct BlobProperties { type AzureBlobError (line 49) | pub enum AzureBlobError { constant SERVICE_SAS_VERSION (line 284) | const SERVICE_SAS_VERSION: &str = "2022-11-02"; type SasProtocol (line 287) | pub enum SasProtocol { method fmt (line 293) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type BlobSignedResource (line 301) | pub enum BlobSignedResource { method fmt (line 310) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type BlobSasPermissions (line 323) | pub struct BlobSasPermissions { method fmt (line 340) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type BlobSharedAccessSignature (line 384) | pub struct BlobSharedAccessSignature { method new (line 394) | pub fn new( method protocol (line 411) | pub fn protocol(mut self, protocol: SasProtocol) -> Self { method sign (line 416) | fn sign(&self) -> String { method token (line 439) | pub fn token(&self) -> Result { function format_sas_date (line 459) | fn format_sas_date(d: OffsetDateTime) -> String { function sas_hmac_sha256 (line 466) | fn sas_hmac_sha256(data: &str, key: &Secret) -> String { constant MOCK_SECRET_KEY (line 479) | const MOCK_SECRET_KEY: &str = "RZfi3m1W7eyQ5zD4ymSmGANVdJ2SDQmg4sE89SW10... constant MOCK_CANONICALIZED_RESOURCE (line 480) | const MOCK_CANONICALIZED_RESOURCE: &str = "/blob/STORAGE_ACCOUNT_NAME/CO... function test_blob_scoped_sas_token (line 483) | fn test_blob_scoped_sas_token() { function test_directory_scoped_sas_token (line 509) | fn test_directory_scoped_sas_token() { FILE: crates/remote/src/billing.rs type BillingService (line 12) | pub struct BillingService { method new (line 19) | pub fn new(provider: Option>) -> Self { method new (line 24) | pub fn new() -> Self { method can_add_member (line 29) | pub async fn can_add_member(&self, _org_id: Uuid) -> Result<(), Billin... method on_member_count_changed (line 41) | pub async fn on_member_count_changed(&self, _org_id: Uuid) { method is_configured (line 50) | pub fn is_configured(&self) -> bool { method provider (line 63) | pub fn provider(&self) -> Option> { method provider (line 69) | pub fn provider(&self) -> Option { method default (line 76) | fn default() -> Self { type BillingCheckError (line 82) | pub enum BillingCheckError { method fmt (line 88) | fn fmt(&self, _f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method to_error_response (line 103) | pub fn to_error_response(&self, _context: &str) -> crate::routes::erro... FILE: crates/remote/src/bin/generate_types.rs function main (line 30) | fn main() { function export_shapes (line 63) | fn export_shapes() -> String { function to_screaming_snake_case (line 252) | fn to_screaming_snake_case(s: &str) -> String { FILE: crates/remote/src/config.rs type RemoteServerConfig (line 8) | pub struct RemoteServerConfig { method from_env (line 202) | pub fn from_env() -> Result { type R2Config (line 25) | pub struct R2Config { method from_env (line 34) | pub fn from_env() -> Result, ConfigError> { type AzureAuthMode (line 72) | pub enum AzureAuthMode { type AzureBlobConfig (line 80) | pub struct AzureBlobConfig { method from_env (line 92) | pub fn from_env() -> Result, ConfigError> { type GitHubAppConfig (line 143) | pub struct GitHubAppConfig { method from_env (line 151) | pub fn from_env() -> Result, ConfigError> { type ConfigError (line 192) | pub enum ConfigError { function parse_publication_names (line 258) | fn parse_publication_names(value: &str) -> Result, ConfigErr... function is_valid_identifier (line 275) | fn is_valid_identifier(value: &str) -> bool { type OAuthProviderConfig (line 287) | pub struct OAuthProviderConfig { method new (line 293) | fn new(client_id: String, client_secret: SecretString) -> Self { method client_id (line 300) | pub fn client_id(&self) -> &str { method client_secret (line 304) | pub fn client_secret(&self) -> &SecretString { type AuthConfig (line 310) | pub struct AuthConfig { method from_env (line 318) | fn from_env() -> Result { method github (line 363) | pub fn github(&self) -> Option<&OAuthProviderConfig> { method google (line 367) | pub fn google(&self) -> Option<&OAuthProviderConfig> { method jwt_secret (line 371) | pub fn jwt_secret(&self) -> &SecretString { method public_base_url (line 375) | pub fn public_base_url(&self) -> &str { function validate_jwt_secret (line 380) | fn validate_jwt_secret(secret: &str) -> Result<(), ConfigError> { FILE: crates/remote/src/db/attachments.rs type AttachmentError (line 8) | pub enum AttachmentError { type AttachmentRepository (line 13) | pub struct AttachmentRepository; method find_by_id (line 16) | pub async fn find_by_id<'e, E>( method find_by_id_with_blob (line 44) | pub async fn find_by_id_with_blob<'e, E>( method find_by_issue_id (line 81) | pub async fn find_by_issue_id( method find_by_comment_id (line 116) | pub async fn find_by_comment_id( method create (line 151) | pub async fn create( method delete (line 186) | pub async fn delete(pool: &PgPool, id: Uuid) -> Result Result<... method commit_to_issue (line 225) | pub async fn commit_to_issue( method commit_to_comment (line 266) | pub async fn commit_to_comment( method project_id (line 307) | pub async fn project_id( method get_blob (line 327) | pub async fn get_blob( method find_expired (line 361) | pub async fn find_expired( FILE: crates/remote/src/db/auth.rs type AuthSessionError (line 8) | pub enum AuthSessionError { constant MAX_SESSION_INACTIVITY_DURATION (line 23) | pub const MAX_SESSION_INACTIVITY_DURATION: Duration = Duration::days(365); type AuthSessionRepository (line 25) | pub struct AuthSessionRepository<'a> { function new (line 30) | pub fn new(pool: &'a PgPool) -> Self { function create (line 34) | pub async fn create( function get (line 61) | pub async fn get(&self, session_id: Uuid) -> Result Result<(), AuthSessionErr... function rotate_tokens (line 101) | pub async fn rotate_tokens( function set_current_refresh_token (line 151) | pub async fn set_current_refresh_token( function revoke_all_user_sessions (line 171) | pub async fn revoke_all_user_sessions(&self, user_id: Uuid) -> Result Result Result<(), AuthSessionEr... FILE: crates/remote/src/db/blobs.rs type BlobError (line 8) | pub enum BlobError { type BlobRepository (line 13) | pub struct BlobRepository; method find_by_id (line 16) | pub async fn find_by_id<'e, E>(executor: E, id: Uuid) -> Result Result, B... method organization_id (line 168) | pub async fn organization_id(pool: &PgPool, blob_id: Uuid) -> Result Result Result<(), sqlx::Error> { FILE: crates/remote/src/db/electric_publications.rs type PublicationTable (line 6) | struct PublicationTable { type PublicationTableRef (line 12) | struct PublicationTableRef { function ensure_electric_publications (line 18) | pub(crate) async fn ensure_electric_publications( function quote_ident (line 142) | fn quote_ident(ident: &str) -> String { FILE: crates/remote/src/db/github_app.rs type GitHubAppDbError (line 7) | pub enum GitHubAppDbError { type GitHubAppInstallation (line 18) | pub struct GitHubAppInstallation { type GitHubAppRepository (line 33) | pub struct GitHubAppRepository { type PendingInstallation (line 44) | pub struct PendingInstallation { type GitHubAppRepository2 (line 53) | pub struct GitHubAppRepository2<'a> { function new (line 58) | pub fn new(pool: &'a PgPool) -> Self { function create_installation (line 64) | pub async fn create_installation( function get_by_github_id (line 118) | pub async fn get_by_github_id( function get_by_account_login (line 148) | pub async fn get_by_account_login( function get_by_organization (line 177) | pub async fn get_by_organization( function delete_by_github_id (line 206) | pub async fn delete_by_github_id( function delete_by_organization (line 223) | pub async fn delete_by_organization( function suspend (line 240) | pub async fn suspend(&self, github_installation_id: i64) -> Result<(), G... function unsuspend (line 255) | pub async fn unsuspend(&self, github_installation_id: i64) -> Result<(),... function update_repository_selection (line 270) | pub async fn update_repository_selection( function sync_repositories (line 292) | pub async fn sync_repositories( function get_repositories (line 332) | pub async fn get_repositories( function add_repositories (line 358) | pub async fn add_repositories( function remove_repositories (line 382) | pub async fn remove_repositories( function update_repository_review_enabled (line 402) | pub async fn update_repository_review_enabled( function is_repository_review_enabled (line 434) | pub async fn is_repository_review_enabled( function set_all_repositories_review_enabled (line 456) | pub async fn set_all_repositories_review_enabled( function create_pending (line 478) | pub async fn create_pending( function get_pending_by_state (line 520) | pub async fn get_pending_by_state( function delete_pending (line 545) | pub async fn delete_pending(&self, state_token: &str) -> Result<(), GitH... function cleanup_expired_pending (line 559) | pub async fn cleanup_expired_pending(&self) -> Result { function new (line 13) | pub fn new(pool: &'a PgPool) -> Self { function assert_host_access (line 17) | pub async fn assert_host_access( function create_session (line 47) | pub async fn create_session( function list_accessible_hosts (line 76) | pub async fn list_accessible_hosts( FILE: crates/remote/src/db/identity_errors.rs type IdentityError (line 4) | pub enum IdentityError { method from (line 24) | fn from(err: crate::billing::BillingCheckError) -> Self { method from (line 31) | fn from(err: crate::billing::BillingCheckError) -> Self { FILE: crates/remote/src/db/invitations.rs type Invitation (line 16) | pub struct Invitation { type InvitationRepository (line 29) | pub struct InvitationRepository<'a> { function new (line 34) | pub fn new(pool: &'a PgPool) -> Self { function create_invitation (line 38) | pub async fn create_invitation( function list_invitations (line 100) | pub async fn list_invitations( function get_invitation_by_token (line 142) | pub async fn get_invitation_by_token(&self, token: &str) -> Result Result Result Result Result Result Result &'static str { method sort_direction_key (line 49) | fn sort_direction_key(sort_direction: SortDirection) -> &'static str { method escape_like_pattern (line 56) | fn escape_like_pattern(value: &str) -> String { method search (line 63) | pub async fn search( method find_by_id (line 268) | pub async fn find_by_id<'e, E>(executor: E, id: Uuid) -> Result( method delete (line 507) | pub async fn delete(pool: &PgPool, id: Uuid) -> Result PullRequestStatus { FILE: crates/remote/src/db/mod.rs type Tx (line 41) | pub(crate) type Tx<'a> = Transaction<'a, Postgres>; type TxContext (line 46) | pub struct TxContext { function begin_tx (line 57) | pub async fn begin_tx(pool: &PgPool) -> Result, sqlx::Error> { function get_txid (line 73) | pub async fn get_txid<'e, E>(executor: E) -> Result function migrate (line 83) | pub(crate) async fn migrate(pool: &PgPool) -> Result<(), MigrateError> { function create_pool (line 87) | pub async fn create_pool(database_url: &str) -> Result Self { type NotificationRepository (line 44) | pub struct NotificationRepository; method find_by_id (line 47) | pub async fn find_by_id<'e, E>( method create (line 79) | pub async fn create<'e, E>( method list_by_user (line 126) | pub async fn list_by_user<'e, E>( method update (line 185) | pub async fn update<'e, E>( method upsert_recent (line 224) | pub async fn upsert_recent<'e, E>( method delete (line 328) | pub async fn delete<'e, E>(executor: E, id: Uuid) -> Result<(), Notifi... FILE: crates/remote/src/db/oauth.rs type AuthorizationStatus (line 9) | pub enum AuthorizationStatus { method as_str (line 18) | pub fn as_str(&self) -> &'static str { type Err (line 30) | type Err = (); method from_str (line 32) | fn from_str(input: &str) -> Result { type OAuthHandoffError (line 45) | pub enum OAuthHandoffError { type OAuthHandoff (line 57) | pub struct OAuthHandoff { method status (line 77) | pub fn status(&self) -> Option { type CreateOAuthHandoff (line 83) | pub struct CreateOAuthHandoff<'a> { type OAuthHandoffRepository (line 91) | pub struct OAuthHandoffRepository<'a> { function new (line 96) | pub fn new(pool: &'a PgPool) -> Self { function create (line 100) | pub async fn create( function get (line 144) | pub async fn get(&self, id: Uuid) -> Result Result Result<(), OAuthHandoffEr... function ensure_redeemable (line 284) | pub async fn ensure_redeemable(&self, id: Uuid) -> Result<(), OAuthHando... FILE: crates/remote/src/db/oauth_accounts.rs type OAuthAccountError (line 7) | pub enum OAuthAccountError { type OAuthAccount (line 13) | pub struct OAuthAccount { type OAuthAccountInsert (line 28) | pub struct OAuthAccountInsert<'a> { type OAuthAccountRepository (line 39) | pub struct OAuthAccountRepository<'a> { function new (line 44) | pub fn new(pool: &'a PgPool) -> Self { function get_by_provider_user (line 48) | pub async fn get_by_provider_user( function get_by_user_provider (line 80) | pub async fn get_by_user_provider( function list_by_user (line 113) | pub async fn list_by_user( function upsert (line 143) | pub async fn upsert( function update_encrypted_provider_tokens (line 198) | pub async fn update_encrypted_provider_tokens( FILE: crates/remote/src/db/organization_members.rs function add_member (line 7) | pub(super) async fn add_member<'a, E>( function check_user_role (line 33) | pub(crate) async fn check_user_role( function is_member (line 53) | pub async fn is_member<'a, E>( function assert_membership (line 78) | pub(crate) async fn assert_membership( function assert_issue_access (line 92) | pub(crate) async fn assert_issue_access( function assert_project_access (line 113) | pub(crate) async fn assert_project_access( function list_by_organization (line 129) | pub(crate) async fn list_by_organization( function list_users_by_organization (line 151) | pub(crate) async fn list_users_by_organization( function assert_admin (line 175) | pub(super) async fn assert_admin( FILE: crates/remote/src/db/organizations.rs type OrganizationRepository (line 14) | pub struct OrganizationRepository<'a> { function new (line 19) | pub fn new(pool: &'a PgPool) -> Self { function assert_membership (line 23) | pub async fn assert_membership( function fetch_organization (line 31) | pub async fn fetch_organization( function is_personal (line 56) | pub async fn is_personal(&self, organization_id: Uuid) -> Result( function find_organization_by_slug (line 300) | async fn find_organization_by_slug( function create_personal_org_tx (line 324) | async fn create_personal_org_tx<'e, E>( function personal_org_name (line 355) | fn personal_org_name(hint: Option<&str>, user_id: Uuid) -> String { function personal_org_slug (line 361) | fn personal_org_slug(user_id: Uuid) -> String { function derive_issue_prefix (line 369) | fn derive_issue_prefix(name: &str) -> String { FILE: crates/remote/src/db/pending_uploads.rs type PendingUpload (line 7) | pub struct PendingUpload { type PendingUploadError (line 17) | pub enum PendingUploadError { type PendingUploadRepository (line 22) | pub struct PendingUploadRepository; method create (line 25) | pub async fn create( method find_by_id (line 56) | pub async fn find_by_id( method delete (line 81) | pub async fn delete(pool: &PgPool, id: Uuid) -> Result<(), PendingUplo... method delete_expired (line 88) | pub async fn delete_expired(pool: &PgPool) -> Result( FILE: crates/remote/src/db/project_statuses.rs constant DEFAULT_STATUSES (line 11) | pub const DEFAULT_STATUSES: &[(&str, &str, i32, bool)] = &[ type ProjectStatusError (line 21) | pub enum ProjectStatusError { type ProjectStatusRepository (line 26) | pub struct ProjectStatusRepository; method find_by_id (line 29) | pub async fn find_by_id<'e, E>( method find_by_name (line 58) | pub async fn find_by_name<'e, E>( method create (line 89) | pub async fn create( method update (line 133) | pub async fn update( method delete (line 175) | pub async fn delete(pool: &PgPool, id: Uuid) -> Result( method create_default_statuses (line 214) | pub async fn create_default_statuses<'e, E>( FILE: crates/remote/src/db/projects.rs constant INITIAL_PROJECT_COLOR (line 11) | pub const INITIAL_PROJECT_COLOR: &str = "217 91% 60%"; constant INITIAL_PROJECT_NAME (line 14) | pub const INITIAL_PROJECT_NAME: &str = "Initial Project"; type ProjectError (line 17) | pub enum ProjectError { type ProjectRepository (line 28) | pub struct ProjectRepository; method find_by_id (line 31) | pub async fn find_by_id<'e, E>(executor: E, id: Uuid) -> Result( method list_by_organization (line 110) | pub async fn list_by_organization<'e, E>( method update (line 142) | pub async fn update( method update_partial (line 158) | pub async fn update_partial<'e, E>( method delete (line 200) | pub async fn delete(pool: &PgPool, id: Uuid) -> Result( method create_initial_project_tx (line 232) | pub async fn create_initial_project_tx( method create_with_defaults (line 257) | pub async fn create_with_defaults( FILE: crates/remote/src/db/pull_requests.rs type PullRequestError (line 8) | pub enum PullRequestError { type PullRequestRepository (line 13) | pub struct PullRequestRepository; method list_by_issue (line 16) | pub async fn list_by_issue( method list_by_project (line 46) | pub async fn list_by_project( method find_by_url (line 75) | pub async fn find_by_url( method create (line 106) | pub async fn create( method update (line 155) | pub async fn update( FILE: crates/remote/src/db/reviews.rs type ReviewError (line 11) | pub enum ReviewError { type Review (line 19) | pub struct Review { method is_webhook_review (line 41) | pub fn is_webhook_review(&self) -> bool { type CreateReviewParams (line 47) | pub struct CreateReviewParams<'a> { type CreateWebhookReviewParams (line 58) | pub struct CreateWebhookReviewParams<'a> { type ReviewRepository (line 69) | pub struct ReviewRepository<'a> { function new (line 74) | pub fn new(pool: &'a PgPool) -> Self { function create (line 78) | pub async fn create(&self, params: CreateReviewParams<'_>) -> Result Result { function count_since (line 194) | pub async fn count_since( function mark_completed (line 220) | pub async fn mark_completed(&self, id: Uuid) -> Result<(), ReviewError> { function mark_failed (line 237) | pub async fn mark_failed(&self, id: Uuid) -> Result<(), ReviewError> { function has_pending_review_for_pr (line 254) | pub async fn has_pending_review_for_pr( FILE: crates/remote/src/db/tags.rs type TagError (line 9) | pub enum TagError { constant DEFAULT_TAGS (line 16) | pub const DEFAULT_TAGS: &[(&str, &str)] = &[ type TagRepository (line 23) | pub struct TagRepository; method find_by_id (line 26) | pub async fn find_by_id(pool: &PgPool, id: Uuid) -> Result... method create (line 46) | pub async fn create( method update (line 83) | pub async fn update( method delete (line 118) | pub async fn delete(pool: &PgPool, id: Uuid) -> Result Resul... method create_default_tags (line 151) | pub async fn create_default_tags<'e, E>( FILE: crates/remote/src/db/types.rs function is_valid_hsl_color (line 3) | pub fn is_valid_hsl_color(color: &str) -> bool { function test_valid_hsl_colors (line 47) | fn test_valid_hsl_colors() { function test_invalid_hsl_colors (line 56) | fn test_invalid_hsl_colors() { FILE: crates/remote/src/db/users.rs type UpsertUser (line 8) | pub struct UpsertUser<'a> { type UserRepository (line 16) | pub struct UserRepository<'a> { function new (line 21) | pub fn new(pool: &'a PgPool) -> Self { function upsert_user (line 25) | pub async fn upsert_user(&self, user: UpsertUser<'_>) -> Result Result) -> Result, user_id: Uuid) -> Result Result Result<(), WorkspaceEr... method count_by_issue_id (line 230) | pub async fn count_by_issue_id(pool: &PgPool, issue_id: Uuid) -> Resul... method update (line 240) | pub async fn update( FILE: crates/remote/src/digest/email.rs function build_digest_items (line 11) | pub fn build_digest_items( function notifications_url (line 33) | pub fn notifications_url(base_url: &str) -> String { function select_preview_rows (line 37) | fn select_preview_rows(rows: &[NotificationDigestRow]) -> Vec<&Notificat... type PreviewGroup (line 63) | struct PreviewGroup<'a> { function build_preview_groups (line 67) | fn build_preview_groups(rows: &[NotificationDigestRow]) -> Vec Option { type DigestCopy (line 96) | struct DigestCopy { function build_digest_copy (line 101) | fn build_digest_copy(row: &NotificationDigestRow) -> DigestCopy { function issue_context (line 203) | fn issue_context(payload: &NotificationPayload) -> Option { function issue_label (line 208) | fn issue_label(payload: &NotificationPayload) -> String { function priority_label (line 212) | fn priority_label(priority: api_types::IssuePriority) -> &'static str { function clean_optional_text (line 221) | fn clean_optional_text(value: Option<&str>) -> Option { function clean_preview_text (line 228) | fn clean_preview_text(value: &str) -> String { function truncate_text (line 232) | fn truncate_text(value: &str, max_chars: usize) -> String { function absolute_url (line 243) | fn absolute_url(base_url: &str, deeplink_path: &str) -> String { FILE: crates/remote/src/digest/mod.rs type DigestUser (line 17) | pub struct DigestUser { type DigestStats (line 26) | pub struct DigestStats { type DigestError (line 33) | pub enum DigestError { function run_email_digest (line 47) | pub async fn run_email_digest( function process_user_digest (line 88) | async fn process_user_digest( function digest_window (line 128) | fn digest_window( FILE: crates/remote/src/digest/task.rs constant DEFAULT_WINDOW (line 15) | const DEFAULT_WINDOW: Duration = Duration::from_secs(86400); constant DEFAULT_RUN_HOUR_UTC (line 16) | const DEFAULT_RUN_HOUR_UTC: u32 = 8; constant DEFAULT_SEND_DELAY (line 17) | const DEFAULT_SEND_DELAY: Duration = Duration::from_millis(100); function spawn_digest_task (line 19) | pub fn spawn_digest_task( function digest_loop (line 79) | async fn digest_loop( function acquire_run_lock (line 126) | async fn acquire_run_lock(pool: &PgPool) -> Option { function next_run_at (line 140) | fn next_run_at(now: DateTime, run_hour_utc: u32) -> DateTime { FILE: crates/remote/src/github_app/jwt.rs type GitHubAppJwt (line 10) | pub struct GitHubAppJwt { method new (line 37) | pub fn new(app_id: u64, private_key_base64: SecretString) -> Result Result { type JwtError (line 16) | pub enum JwtError { type GitHubAppClaims (line 26) | struct GitHubAppClaims { function test_invalid_base64_fails (line 85) | fn test_invalid_base64_fails() { function test_invalid_pem_fails (line 91) | fn test_invalid_pem_fails() { FILE: crates/remote/src/github_app/pr_review.rs type PrReviewParams (line 21) | pub struct PrReviewParams { type PrReviewError (line 33) | pub enum PrReviewError { type PrReviewService (line 47) | pub struct PrReviewService { method new (line 56) | pub fn new( method process_pr_review (line 82) | pub async fn process_pr_review( method r2_public_url (line 194) | fn r2_public_url(&self) -> &str { function create_tarball (line 204) | fn create_tarball(source_dir: &Path) -> Result, std::io::Error> { function add_directory_to_archive (line 224) | fn add_directory_to_archive( FILE: crates/remote/src/github_app/service.rs constant USER_AGENT (line 12) | const USER_AGENT: &str = "VibeKanbanRemote/1.0"; constant GITHUB_API_BASE (line 13) | const GITHUB_API_BASE: &str = "https://api.github.com"; type GitHubAppError (line 16) | pub enum GitHubAppError { type InstallationInfo (line 31) | pub struct InstallationInfo { type InstallationAccount (line 39) | pub struct InstallationAccount { type Repository (line 48) | pub struct Repository { type InstallationTokenResponse (line 56) | struct InstallationTokenResponse { type RepositoriesResponse (line 62) | struct RepositoriesResponse { type PrDetails (line 68) | pub struct PrDetails { type PrRef (line 77) | pub struct PrRef { type GitHubAppService (line 85) | pub struct GitHubAppService { method new (line 93) | pub fn new(config: &GitHubAppConfig, client: Client) -> Result &str { method webhook_secret (line 110) | pub fn webhook_secret(&self) -> &SecretString { method get_installation_token (line 115) | pub async fn get_installation_token( method get_installation (line 157) | pub async fn get_installation( method list_installation_repos (line 190) | pub async fn list_installation_repos( method post_pr_comment (line 233) | pub async fn post_pr_comment( method clone_repo (line 278) | pub async fn clone_repo( method get_merge_base (line 396) | pub async fn get_merge_base( method get_pr_details (line 420) | pub async fn get_pr_details( FILE: crates/remote/src/github_app/webhook.rs type HmacSha256 (line 5) | type HmacSha256 = Hmac; function verify_webhook_signature (line 13) | pub fn verify_webhook_signature(secret: &[u8], signature_header: &str, p... function test_valid_signature (line 40) | fn test_valid_signature() { function test_invalid_signature (line 54) | fn test_invalid_signature() { function test_missing_prefix (line 64) | fn test_missing_prefix() { function test_invalid_hex (line 73) | fn test_invalid_hex() { FILE: crates/remote/src/lib.rs function init_otel_layer (line 40) | fn init_otel_layer() -> Option + Send + Sync>> function init_tracing (line 85) | pub fn init_tracing() { function configure_user_scope (line 119) | pub fn configure_user_scope(user_id: uuid::Uuid, username: Option<&str>,... FILE: crates/remote/src/mail.rs constant LOOPS_INVITE_TEMPLATE_ID (line 9) | const LOOPS_INVITE_TEMPLATE_ID: &str = "cmhvy2wgs3s13z70i1pxakij9"; constant LOOPS_REVIEW_READY_TEMPLATE_ID (line 10) | const LOOPS_REVIEW_READY_TEMPLATE_ID: &str = "cmj47k5ge16990iylued9by17"; constant LOOPS_REVIEW_FAILED_TEMPLATE_ID (line 11) | const LOOPS_REVIEW_FAILED_TEMPLATE_ID: &str = "cmj49ougk1c8s0iznavijdqpo"; constant DIGEST_PREVIEW_COUNT (line 13) | pub const DIGEST_PREVIEW_COUNT: usize = 5; type DigestContact (line 16) | pub struct DigestContact<'a> { type DigestNotificationItem (line 24) | pub struct DigestNotificationItem { type Mailer (line 31) | pub trait Mailer: Send + Sync { method send_org_invitation (line 32) | async fn send_org_invitation( method send_review_ready (line 41) | async fn send_review_ready(&self, email: &str, review_url: &str, pr_na... method send_review_failed (line 43) | async fn send_review_failed(&self, email: &str, pr_name: &str, review_... method send_digest_event (line 45) | async fn send_digest_event( method send_org_invitation (line 59) | async fn send_org_invitation( method send_review_ready (line 74) | async fn send_review_ready(&self, email: &str, _review_url: &str, pr_n... method send_review_failed (line 82) | async fn send_review_failed(&self, email: &str, pr_name: &str, _review... method send_digest_event (line 90) | async fn send_digest_event( method send_org_invitation (line 125) | async fn send_org_invitation( method send_review_ready (line 182) | async fn send_review_ready(&self, email: &str, review_url: &str, pr_na... method send_review_failed (line 223) | async fn send_review_failed(&self, email: &str, pr_name: &str, review_... method send_digest_event (line 264) | async fn send_digest_event( type NoopMailer (line 55) | pub struct NoopMailer; type LoopsMailer (line 107) | pub struct LoopsMailer { method new (line 113) | pub fn new(api_key: String) -> Self { FILE: crates/remote/src/main.rs function main (line 7) | async fn main() -> anyhow::Result<()> { FILE: crates/remote/src/middleware/version.rs function add_version_headers (line 8) | pub async fn add_version_headers(request: Request, next: Next) -> ... FILE: crates/remote/src/mutation_definition.rs type MutationMarker (line 34) | type MutationMarker = fn() -> (E, C, U); type HasJsonPayload (line 44) | pub trait HasJsonPayload {} type MutationDefinition (line 62) | pub struct MutationDefinition { type MutationBuilder (line 79) | pub struct MutationBuilder { function new (line 88) | pub fn new(table: &'static str) -> Self { function list (line 100) | pub fn list(mut self, handler: H) -> Self function get (line 110) | pub fn get(mut self, handler: H) -> Self function delete (line 120) | pub fn delete(mut self, handler: H) -> Self function router (line 130) | pub fn router(self) -> axum::Router { function create (line 145) | pub fn create(self, handler: H) -> MutationBuilder function update (line 165) | pub fn update(self, handler: H) -> MutationBuilder type NoCreate (line 181) | pub struct NoCreate; type NoUpdate (line 184) | pub struct NoUpdate; function definition (line 189) | pub fn definition(&self) -> MutationDefinition { function definition (line 200) | pub fn definition(&self) -> MutationDefinition { function definition (line 211) | pub fn definition(&self) -> MutationDefinition { function definition (line 222) | pub fn definition(&self) -> MutationDefinition { FILE: crates/remote/src/notifications.rs function notify_issue_subscribers (line 12) | pub async fn notify_issue_subscribers( function send_issue_notifications (line 49) | pub async fn send_issue_notifications( function send_debounced_issue_notifications (line 84) | pub async fn send_debounced_issue_notifications( function notify_user (line 118) | pub async fn notify_user( function collect_issue_recipients (line 148) | pub async fn collect_issue_recipients( function build_payload (line 174) | fn build_payload( FILE: crates/remote/src/r2.rs constant PAYLOAD_FILENAME (line 17) | pub const PAYLOAD_FILENAME: &str = "payload.tar.gz"; type R2Service (line 20) | pub struct R2Service { method new (line 46) | pub fn new(config: &R2Config) -> Self { method create_presigned_upload (line 76) | pub async fn create_presigned_upload( method upload_bytes (line 118) | pub async fn upload_bytes(&self, review_id: Uuid, data: Vec) -> Re... type PresignedUpload (line 27) | pub struct PresignedUpload { type R2Error (line 36) | pub enum R2Error { FILE: crates/remote/src/routes/attachments.rs function router (line 32) | pub fn router() -> Router { type InitUploadRequest (line 58) | pub struct InitUploadRequest { type InitUploadResponse (line 67) | pub struct InitUploadResponse { type ConfirmUploadRequest (line 76) | pub struct ConfirmUploadRequest { type CommitAttachmentsRequest (line 92) | pub struct CommitAttachmentsRequest { type CommitAttachmentsResponse (line 97) | pub struct CommitAttachmentsResponse { type RouteError (line 102) | pub enum RouteError { method into_response (line 128) | fn into_response(self) -> Response { constant MAX_FILE_SIZE (line 171) | const MAX_FILE_SIZE: i64 = 20 * 1024 * 1024; function init_upload (line 174) | async fn init_upload( function confirm_upload (line 231) | async fn confirm_upload( function commit_issue_attachments (line 332) | async fn commit_issue_attachments( function commit_comment_attachments (line 349) | async fn commit_comment_attachments( function list_issue_attachments (line 366) | async fn list_issue_attachments( function list_comment_attachments (line 391) | async fn list_comment_attachments( function get_attachment_file (line 416) | async fn get_attachment_file( function get_attachment_thumbnail (line 433) | async fn get_attachment_thumbnail( function delete_attachment (line 453) | async fn delete_attachment( function ensure_attachment_access (line 485) | async fn ensure_attachment_access( function sanitize_filename (line 510) | fn sanitize_filename(filename: &str) -> String { FILE: crates/remote/src/routes/billing.rs function public_router (line 22) | pub fn public_router() -> Router { function protected_router (line 26) | pub fn protected_router() -> Router { function get_billing_status (line 39) | pub async fn get_billing_status( function create_portal_session (line 64) | pub async fn create_portal_session( function create_checkout_session (line 86) | pub async fn create_checkout_session( function handle_webhook (line 108) | pub async fn handle_webhook( function billing_error (line 130) | fn billing_error(error: BillingError) -> ErrorResponse { FILE: crates/remote/src/routes/electric_proxy.rs type OrgShapeQuery (line 18) | pub(crate) struct OrgShapeQuery { type ShapeQuery (line 25) | pub(crate) struct ShapeQuery { constant ELECTRIC_PARAMS (line 30) | const ELECTRIC_PARAMS: &[&str] = &["offset", "handle", "live", "cursor",... constant ELECTRIC_STICKY_HEADER (line 31) | const ELECTRIC_STICKY_HEADER: &str = "x-vk-electric-sticky"; function router (line 33) | pub fn router() -> Router { function proxy_table (line 45) | pub(crate) async fn proxy_table( type ProxyError (line 119) | pub(crate) enum ProxyError { method into_response (line 126) | fn into_response(self) -> Response { FILE: crates/remote/src/routes/error.rs type ErrorResponse (line 11) | pub struct ErrorResponse { method new (line 17) | pub fn new(status: StatusCode, message: impl Into) -> Self { method into_response (line 26) | fn into_response(self) -> Response { function db_error (line 31) | pub(crate) fn db_error( function membership_error (line 56) | pub(crate) fn membership_error(error: IdentityError, forbidden_message: ... FILE: crates/remote/src/routes/github_app.rs function public_router (line 28) | pub fn public_router() -> Router { function protected_router (line 36) | pub fn protected_router() -> Router { type InstallUrlResponse (line 62) | pub struct InstallUrlResponse { type GitHubAppStatusResponse (line 67) | pub struct GitHubAppStatusResponse { type InstallationDetails (line 75) | pub struct InstallationDetails { type RepositoryDetails (line 86) | pub struct RepositoryDetails { type CallbackQuery (line 94) | pub struct CallbackQuery { type TriggerPrReviewRequest (line 100) | pub struct TriggerPrReviewRequest { type TriggerPrReviewResponse (line 106) | pub struct TriggerPrReviewResponse { type UpdateRepoReviewEnabledRequest (line 111) | pub struct UpdateRepoReviewEnabledRequest { type BulkUpdateReviewEnabledResponse (line 116) | pub struct BulkUpdateReviewEnabledResponse { function get_install_url (line 124) | pub async fn get_install_url( function get_status (line 189) | pub async fn get_status( function uninstall (line 253) | pub async fn uninstall( function update_repo_review_enabled (line 285) | pub async fn update_repo_review_enabled( function fetch_repositories (line 345) | pub async fn fetch_repositories( function bulk_update_review_enabled (line 416) | pub async fn bulk_update_review_enabled( function handle_callback (line 466) | pub async fn handle_callback( function handle_webhook (line 609) | pub async fn handle_webhook( function handle_installation_event (line 667) | async fn handle_installation_event(state: &AppState, payload: &serde_jso... function handle_installation_repos_event (line 713) | async fn handle_installation_repos_event( type TriggerReviewContext (line 802) | struct TriggerReviewContext<'a> { type PrMetadata (line 812) | struct PrMetadata { function try_trigger_pr_review (line 821) | async fn try_trigger_pr_review( function handle_pull_request_event (line 939) | async fn handle_pull_request_event( function handle_issue_comment_event (line 993) | async fn handle_issue_comment_event( function parse_pr_url (line 1053) | fn parse_pr_url(url: &str) -> Option<(String, String, u64)> { function trigger_pr_review (line 1079) | pub async fn trigger_pr_review( FILE: crates/remote/src/routes/hosts.rs constant RELAY_SESSION_TTL_SECS (line 20) | const RELAY_SESSION_TTL_SECS: i64 = 120; type CreateRelaySessionResponse (line 23) | pub struct CreateRelaySessionResponse { function router (line 27) | pub fn router() -> Router { function list_hosts (line 33) | async fn list_hosts( function create_relay_session (line 49) | async fn create_relay_session( FILE: crates/remote/src/routes/identity.rs type IdentityResponse (line 9) | pub struct IdentityResponse { function router (line 15) | pub fn router() -> Router { function get_identity (line 20) | pub async fn get_identity(Extension(ctx): Extension) -> ... FILE: crates/remote/src/routes/issue_assignees.rs function mutation (line 26) | pub fn mutation() -> MutationBuilder axum::Router { function list_issue_assignees (line 43) | async fn list_issue_assignees( function get_issue_assignee (line 68) | async fn get_issue_assignee( function create_issue_assignee (line 94) | async fn create_issue_assignee( function delete_issue_assignee (line 139) | async fn delete_issue_assignee( FILE: crates/remote/src/routes/issue_comment_reactions.rs function mutation (line 31) | pub fn mutation() -> MutationBuilder< function router (line 44) | pub fn router() -> axum::Router { function notify_comment_author_about_reaction (line 48) | async fn notify_comment_author_about_reaction( function list_issue_comment_reactions (line 94) | async fn list_issue_comment_reactions( function get_issue_comment_reaction (line 130) | async fn get_issue_comment_reaction( function create_issue_comment_reaction (line 162) | async fn create_issue_comment_reaction( function update_issue_comment_reaction (line 207) | async fn update_issue_comment_reaction( function delete_issue_comment_reaction (line 267) | async fn delete_issue_comment_reaction( FILE: crates/remote/src/routes/issue_comments.rs function mutation (line 30) | pub fn mutation() function router (line 40) | pub fn router() -> axum::Router { function list_issue_comments (line 49) | async fn list_issue_comments( function get_issue_comment (line 74) | async fn get_issue_comment( function create_issue_comment (line 100) | async fn create_issue_comment( function update_issue_comment (line 162) | async fn update_issue_comment( function delete_issue_comment (line 216) | async fn delete_issue_comment( FILE: crates/remote/src/routes/issue_followers.rs function mutation (line 25) | pub fn mutation() -> MutationBuilder axum::Router { function list_issue_followers (line 42) | async fn list_issue_followers( function get_issue_follower (line 67) | async fn get_issue_follower( function create_issue_follower (line 93) | async fn create_issue_follower( function delete_issue_follower (line 120) | async fn delete_issue_follower( FILE: crates/remote/src/routes/issue_relationships.rs function mutation (line 25) | pub fn mutation() -> MutationBuilder axum::Router { function list_issue_relationships (line 42) | async fn list_issue_relationships( function get_issue_relationship (line 72) | async fn get_issue_relationship( function create_issue_relationship (line 98) | async fn create_issue_relationship( function delete_issue_relationship (line 126) | async fn delete_issue_relationship( FILE: crates/remote/src/routes/issue_tags.rs function mutation (line 25) | pub fn mutation() -> MutationBuilder axum::Router { function list_issue_tags (line 42) | async fn list_issue_tags( function get_issue_tag (line 67) | async fn get_issue_tag( function create_issue_tag (line 93) | async fn create_issue_tag( function delete_issue_tag (line 116) | async fn delete_issue_tag( FILE: crates/remote/src/routes/issues.rs function mutation (line 34) | pub fn mutation() -> MutationBuilder axum::Router { function notify_issue_update_changes (line 51) | async fn notify_issue_update_changes( function list_issues (line 180) | async fn list_issues( function search_issues (line 219) | async fn search_issues( function get_issue (line 241) | async fn get_issue( function create_issue (line 264) | async fn create_issue( function update_issue (line 343) | async fn update_issue( function delete_issue (line 406) | async fn delete_issue( type BulkUpdateIssueItem (line 469) | pub struct BulkUpdateIssueItem { type BulkUpdateIssuesRequest (line 476) | pub struct BulkUpdateIssuesRequest { type BulkUpdateIssuesResponse (line 481) | pub struct BulkUpdateIssuesResponse { function bulk_update_issues (line 491) | async fn bulk_update_issues( FILE: crates/remote/src/routes/migration.rs function router (line 21) | pub fn router() -> Router { function migrate_projects (line 30) | async fn migrate_projects( function migrate_issues (line 55) | async fn migrate_issues( function migrate_pull_requests (line 76) | async fn migrate_pull_requests( function migrate_workspaces (line 97) | async fn migrate_workspaces( FILE: crates/remote/src/routes/mod.rs function public_router (line 21) | pub fn public_router() -> Router { function protected_router (line 24) | pub fn protected_router() -> Router { function router (line 54) | pub fn router(state: AppState) -> Router { type HealthResponse (line 171) | struct HealthResponse { function health (line 176) | async fn health() -> Json { function all_mutation_definitions (line 184) | pub fn all_mutation_definitions() -> Vec MutationBuilder Router { function list_notifications (line 68) | async fn list_notifications( function get_notification (line 92) | async fn get_notification( function update_notification (line 123) | async fn update_notification( function delete_notification (line 177) | async fn delete_notification( function bulk_update_notifications (line 230) | async fn bulk_update_notifications( FILE: crates/remote/src/routes/oauth.rs function public_router (line 26) | pub fn public_router() -> Router { function protected_router (line 34) | pub fn protected_router() -> Router { function web_init (line 40) | pub async fn web_init( function web_redeem (line 66) | pub async fn web_redeem( type StartQuery (line 106) | pub struct StartQuery { function authorize_start (line 110) | pub async fn authorize_start( type CallbackQuery (line 131) | pub struct CallbackQuery { function authorize_callback (line 137) | pub async fn authorize_callback( function profile (line 198) | pub async fn profile( function logout (line 225) | pub async fn logout( function init_error_response (line 255) | fn init_error_response(error: HandoffError) -> Response { function redeem_error_response (line 270) | fn redeem_error_response(error: HandoffError) -> Response { function classify_handoff_error (line 288) | fn classify_handoff_error(error: &HandoffError) -> (StatusCode, Cow<'_, ... function append_query_params (line 327) | fn append_query_params( FILE: crates/remote/src/routes/organization_members.rs function public_router (line 34) | pub fn public_router() -> Router { function protected_router (line 38) | pub fn protected_router() -> Router { type CreateInvitationRequest (line 62) | pub struct CreateInvitationRequest { type CreateInvitationResponse (line 68) | pub struct CreateInvitationResponse { type ListInvitationsResponse (line 73) | pub struct ListInvitationsResponse { type GetInvitationResponse (line 78) | pub struct GetInvitationResponse { type AcceptInvitationResponse (line 87) | pub struct AcceptInvitationResponse { function create_invitation (line 93) | pub async fn create_invitation( function list_invitations (line 187) | pub async fn list_invitations( function get_invitation (line 211) | pub async fn get_invitation( function revoke_invitation (line 242) | pub async fn revoke_invitation( function accept_invitation (line 280) | pub async fn accept_invitation( function list_members (line 332) | pub async fn list_members( function remove_member (line 373) | pub async fn remove_member( function update_member_role (line 477) | pub async fn update_member_role( function ensure_member_access (line 595) | pub(crate) async fn ensure_member_access( function ensure_admin_access (line 605) | pub(crate) async fn ensure_admin_access( function ensure_project_access (line 616) | pub(crate) async fn ensure_project_access( function ensure_issue_access (line 661) | pub(crate) async fn ensure_issue_access( function ensure_comment_access (line 706) | pub(crate) async fn ensure_comment_access( FILE: crates/remote/src/routes/organizations.rs function router (line 23) | pub fn router() -> Router { function create_organization (line 32) | pub async fn create_organization( function list_organizations (line 92) | pub async fn list_organizations( function get_organization (line 106) | pub async fn get_organization( function update_organization (line 147) | pub async fn update_organization( function delete_organization (line 180) | pub async fn delete_organization( FILE: crates/remote/src/routes/project_statuses.rs function mutation (line 28) | pub fn mutation() function router (line 39) | pub fn router() -> axum::Router { function list_project_statuses (line 50) | async fn list_project_statuses( function get_project_status (line 75) | async fn get_project_status( function create_project_status (line 101) | async fn create_project_status( function update_project_status (line 138) | async fn update_project_status( function delete_project_status (line 188) | async fn delete_project_status( type BulkUpdateProjectStatusItem (line 217) | pub struct BulkUpdateProjectStatusItem { type BulkUpdateProjectStatusesRequest (line 224) | pub struct BulkUpdateProjectStatusesRequest { type BulkUpdateProjectStatusesResponse (line 229) | pub struct BulkUpdateProjectStatusesResponse { function bulk_update_project_statuses (line 239) | async fn bulk_update_project_statuses( FILE: crates/remote/src/routes/projects.rs function mutation (line 26) | pub fn mutation() -> MutationBuilder axum::Router { function list_projects (line 46) | async fn list_projects( function get_project (line 68) | async fn get_project( function create_project (line 91) | async fn create_project( function update_project (line 137) | async fn update_project( function bulk_update_projects (line 183) | async fn bulk_update_projects( function delete_project (line 277) | async fn delete_project( FILE: crates/remote/src/routes/pull_requests.rs type CreatePullRequestRequest (line 30) | pub struct CreatePullRequestRequest { type UpdatePullRequestRequest (line 42) | pub struct UpdatePullRequestRequest { function router (line 49) | pub fn router() -> Router { function list_pull_requests (line 64) | async fn list_pull_requests( function create_pull_request (line 89) | async fn create_pull_request( function update_pull_request (line 149) | async fn update_pull_request( function upsert_pull_request (line 195) | async fn upsert_pull_request( FILE: crates/remote/src/routes/review.rs function public_router (line 21) | pub fn public_router() -> Router { type InitReviewRequest (line 35) | pub struct InitReviewRequest { type InitReviewResponse (line 46) | pub struct InitReviewResponse { type ReviewMetadataResponse (line 54) | pub struct ReviewMetadataResponse { type ReviewError (line 60) | pub enum ReviewError { method into_response (line 82) | fn into_response(self) -> Response { function normalize_github_url (line 136) | fn normalize_github_url(url: &str) -> String { function extract_client_ip (line 146) | fn extract_client_ip(headers: &HeaderMap) -> Option { function check_rate_limit (line 181) | async fn check_rate_limit(repo: &ReviewRepository<'_>, ip: IpAddr) -> Re... function init_review_upload (line 201) | pub async fn init_review_upload( function proxy_to_worker (line 253) | async fn proxy_to_worker(state: &AppState, path: &str) -> Result MutationBuilder axum::Router { function list_tags (line 43) | async fn list_tags( function get_tag (line 65) | async fn get_tag( function create_tag (line 88) | async fn create_tag( function update_tag (line 123) | async fn update_tag( function delete_tag (line 164) | async fn delete_tag( FILE: crates/remote/src/routes/tokens.rs function public_router (line 23) | pub fn public_router() -> Router { type TokenRefreshError (line 28) | pub enum TokenRefreshError { method from (line 52) | fn from(err: OAuthTokenValidationError) -> Self { method from (line 69) | fn from(err: OAuthAccountError) -> Self { function refresh_token (line 76) | pub async fn refresh_token( method into_response (line 211) | fn into_response(self) -> Response { FILE: crates/remote/src/routes/workspaces.rs type CreateWorkspaceRequest (line 26) | pub struct CreateWorkspaceRequest { function router (line 37) | pub fn router() -> Router { function create_workspace (line 65) | async fn create_workspace( function update_workspace (line 121) | async fn update_workspace( function sync_issue_status_from_local_merge (line 162) | async fn sync_issue_status_from_local_merge( function delete_workspace (line 196) | async fn delete_workspace( function unlink_workspace (line 232) | async fn unlink_workspace( function get_workspace_by_local_id (line 268) | async fn get_workspace_by_local_id( function workspace_exists (line 294) | async fn workspace_exists( FILE: crates/remote/src/shape_definition.rs type ShapeDefinition (line 8) | pub struct ShapeDefinition { type ShapeExport (line 21) | pub trait ShapeExport: Sync { method name (line 22) | fn name(&self) -> &'static str; method table (line 23) | fn table(&self) -> &'static str; method where_clause (line 24) | fn where_clause(&self) -> &'static str; method params (line 25) | fn params(&self) -> &'static [&'static str]; method url (line 26) | fn url(&self) -> &'static str; method ts_type_name (line 27) | fn ts_type_name(&self) -> String; method name (line 31) | fn name(&self) -> &'static str { method table (line 34) | fn table(&self) -> &'static str { method where_clause (line 37) | fn where_clause(&self) -> &'static str { method params (line 40) | fn params(&self) -> &'static [&'static str] { method url (line 43) | fn url(&self) -> &'static str { method ts_type_name (line 46) | fn ts_type_name(&self) -> String { FILE: crates/remote/src/shape_route.rs type HasQueryParams (line 47) | pub trait HasQueryParams {} type OrgFallbackQuery (line 61) | pub struct OrgFallbackQuery { type ProjectFallbackQuery (line 67) | pub struct ProjectFallbackQuery { type IssueFallbackQuery (line 73) | pub struct IssueFallbackQuery { type NoQueryParams (line 81) | pub struct NoQueryParams {} type ShapeScope (line 92) | pub enum ShapeScope { type ShapeRoute (line 124) | pub struct ShapeRoute { method new (line 139) | pub fn new( function build_proxy_handler (line 168) | fn build_proxy_handler( FILE: crates/remote/src/shape_routes.rs type ListNotificationsResponse (line 45) | struct ListNotificationsResponse { type ListOrganizationMembersResponse (line 50) | struct ListOrganizationMembersResponse { type ListUsersResponse (line 55) | struct ListUsersResponse { type ListWorkspacesResponse (line 60) | struct ListWorkspacesResponse { function all_shape_routes (line 71) | pub fn all_shape_routes() -> Vec { function fallback_list_projects (line 180) | async fn fallback_list_projects( function fallback_list_notifications (line 197) | async fn fallback_list_notifications( function fallback_list_organization_members (line 219) | async fn fallback_list_organization_members( function fallback_list_users (line 242) | async fn fallback_list_users( function fallback_list_tags (line 264) | async fn fallback_list_tags( function fallback_list_project_statuses (line 281) | async fn fallback_list_project_statuses( function fallback_list_issues (line 302) | async fn fallback_list_issues( function fallback_list_project_workspaces (line 337) | async fn fallback_list_project_workspaces( function fallback_list_issue_assignees (line 354) | async fn fallback_list_issue_assignees( function fallback_list_issue_followers (line 375) | async fn fallback_list_issue_followers( function fallback_list_issue_tags (line 396) | async fn fallback_list_issue_tags( function fallback_list_issue_relationships (line 416) | async fn fallback_list_issue_relationships( function fallback_list_pull_requests (line 439) | async fn fallback_list_pull_requests( function fallback_list_user_workspaces (line 463) | async fn fallback_list_user_workspaces( function fallback_list_issue_comments (line 485) | async fn fallback_list_issue_comments( function fallback_list_issue_comment_reactions (line 505) | async fn fallback_list_issue_comment_reactions( FILE: crates/remote/src/shapes.rs constant PROJECTS_SHAPE (line 15) | pub const PROJECTS_SHAPE: ShapeDefinition = crate::define_shape!( constant NOTIFICATIONS_SHAPE (line 23) | pub const NOTIFICATIONS_SHAPE: ShapeDefinition = crate::de... constant ORGANIZATION_MEMBERS_SHAPE (line 31) | pub const ORGANIZATION_MEMBERS_SHAPE: ShapeDefinition = crate::define_shape!( constant PROJECT_TAGS_SHAPE (line 51) | pub const PROJECT_TAGS_SHAPE: ShapeDefinition = crate::define_shape!( constant PROJECT_PROJECT_STATUSES_SHAPE (line 59) | pub const PROJECT_PROJECT_STATUSES_SHAPE: ShapeDefinition... constant PROJECT_ISSUES_SHAPE (line 67) | pub const PROJECT_ISSUES_SHAPE: ShapeDefinition = crate::define_s... constant USER_WORKSPACES_SHAPE (line 75) | pub const USER_WORKSPACES_SHAPE: ShapeDefinition = crate::def... constant PROJECT_WORKSPACES_SHAPE (line 83) | pub const PROJECT_WORKSPACES_SHAPE: ShapeDefinition = crate::... constant PROJECT_ISSUE_ASSIGNEES_SHAPE (line 95) | pub const PROJECT_ISSUE_ASSIGNEES_SHAPE: ShapeDefinition ... constant PROJECT_ISSUE_FOLLOWERS_SHAPE (line 103) | pub const PROJECT_ISSUE_FOLLOWERS_SHAPE: ShapeDefinition ... constant PROJECT_ISSUE_TAGS_SHAPE (line 111) | pub const PROJECT_ISSUE_TAGS_SHAPE: ShapeDefinition = crate::d... constant PROJECT_ISSUE_RELATIONSHIPS_SHAPE (line 119) | pub const PROJECT_ISSUE_RELATIONSHIPS_SHAPE: ShapeDefinition = cr... constant ISSUE_COMMENTS_SHAPE (line 139) | pub const ISSUE_COMMENTS_SHAPE: ShapeDefinition = crate::d... constant ISSUE_REACTIONS_SHAPE (line 147) | pub const ISSUE_REACTIONS_SHAPE: ShapeDefinition =... FILE: crates/remote/src/shared_key_auth.rs type SharedKeyAuthorizationPolicy (line 21) | pub struct SharedKeyAuthorizationPolicy { method send (line 28) | async fn send( function generate_authorization (line 46) | fn generate_authorization( function string_to_sign (line 58) | fn string_to_sign(account: &str, h: &Headers, u: &Url, method: &Method) ... function add_if_exists (line 83) | fn add_if_exists<'a>(h: &'a Headers, key: &HeaderName) -> &'a str { function canonicalize_header (line 87) | fn canonicalize_header(headers: &Headers) -> String { function lexy_sort (line 103) | fn lexy_sort<'a>( function canonicalized_resource (line 115) | fn canonicalized_resource(account: &str, uri: &Url) -> String { function hmac_sha256 (line 151) | pub fn hmac_sha256(data: &str, key: &Secret) -> String { FILE: crates/remote/src/state.rs type AppState (line 17) | pub struct AppState { method new (line 35) | pub fn new( method pool (line 67) | pub fn pool(&self) -> &PgPool { method config (line 71) | pub fn config(&self) -> &RemoteServerConfig { method jwt (line 75) | pub fn jwt(&self) -> Arc { method handoff (line 79) | pub fn handoff(&self) -> Arc { method providers (line 83) | pub fn providers(&self) -> Arc { method oauth_token_validator (line 87) | pub fn oauth_token_validator(&self) -> Arc { method r2 (line 91) | pub fn r2(&self) -> Option<&R2Service> { method azure_blob (line 95) | pub fn azure_blob(&self) -> Option<&AzureBlobService> { method github_app (line 99) | pub fn github_app(&self) -> Option<&GitHubAppService> { method billing (line 103) | pub fn billing(&self) -> &BillingService { method analytics (line 107) | pub fn analytics(&self) -> Option<&AnalyticsService> { FILE: crates/review/src/api.rs type ReviewApiClient (line 9) | pub struct ReviewApiClient { method new (line 77) | pub fn new(base_url: String) -> Self { method init (line 85) | pub async fn init( method upload (line 126) | pub async fn upload(&self, upload_url: &str, payload: Vec) -> Resu... method start (line 151) | pub async fn start(&self, request: StartRequest) -> Result<(), ReviewE... method poll_status (line 176) | pub async fn poll_status(&self, review_id: &str) -> Result String { type InitResponse (line 16) | pub struct InitResponse { type InitRequest (line 24) | struct InitRequest { type StartRequest (line 33) | pub struct StartRequest { type StatusResponse (line 46) | pub struct StatusResponse { type ReviewStatus (line 55) | pub enum ReviewStatus { method fmt (line 64) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { FILE: crates/review/src/archive.rs function create_tarball (line 10) | pub fn create_tarball(source_dir: &Path) -> Result, ReviewError> { function add_directory_to_archive (line 34) | fn add_directory_to_archive( function test_create_tarball (line 79) | fn test_create_tarball() { FILE: crates/review/src/claude_session.rs type ClaudeProject (line 15) | pub struct ClaudeProject { type ClaudeSession (line 26) | pub struct ClaudeSession { type JsonlRecord (line 36) | struct JsonlRecord { type JsonlMessage (line 43) | struct JsonlMessage { function get_claude_projects_dir (line 49) | pub fn get_claude_projects_dir() -> Option { function discover_projects (line 55) | pub fn discover_projects() -> Result, ReviewError> { function extract_project_name (line 127) | fn extract_project_name(dir_name: &str) -> String { function discover_sessions (line 145) | pub fn discover_sessions(project: &ClaudeProject) -> Result Result (Option, Option String { function find_projects_by_branch (line 258) | pub fn find_projects_by_branch( function branches_match (line 281) | fn branches_match(target: &str, session_branch: &str) -> bool { function normalize_branch (line 298) | fn normalize_branch(branch: &str) -> String { function extract_branch_slug (line 306) | fn extract_branch_slug(branch: &str) -> String { type TimestampedMessage (line 312) | struct TimestampedMessage { function concatenate_sessions_to_json (line 324) | pub fn concatenate_sessions_to_json(session_paths: &[PathBuf]) -> Result... function extract_filtered_message (line 373) | fn extract_filtered_message(record: &serde_json::Value) -> Option Option { method load (line 18) | pub fn load() -> Self { method save (line 34) | pub fn save(&self) -> std::io::Result<()> { FILE: crates/review/src/error.rs type ReviewError (line 4) | pub enum ReviewError { FILE: crates/review/src/github.rs type PrInfo (line 11) | pub struct PrInfo { type GhPrView (line 24) | struct GhPrView { type GhApiPr (line 35) | struct GhApiPr { type GhApiRef (line 43) | struct GhApiRef { function parse_pr_url (line 52) | pub fn parse_pr_url(url: &str) -> Result<(String, String, i64), ReviewEr... function ensure_gh_available (line 91) | fn ensure_gh_available() -> Result<(), ReviewError> { function get_pr_info_via_api (line 108) | fn get_pr_info_via_api(owner: &str, repo: &str, pr_number: i64) -> Resul... function get_pr_info (line 147) | pub fn get_pr_info(owner: &str, repo: &str, pr_number: i64) -> Result Result<... function checkout_commit (line 232) | pub fn checkout_commit(commit_sha: &str, repo_dir: &Path) -> Result<(), ... function test_parse_pr_url_valid (line 275) | fn test_parse_pr_url_valid() { function test_parse_pr_url_with_trailing_slash (line 284) | fn test_parse_pr_url_with_trailing_slash() { function test_parse_pr_url_invalid_format (line 293) | fn test_parse_pr_url_invalid_format() { FILE: crates/review/src/main.rs constant DEFAULT_API_URL (line 21) | const DEFAULT_API_URL: &str = "https://api.vibekanban.com"; constant POLL_INTERVAL (line 22) | const POLL_INTERVAL: Duration = Duration::from_secs(10); constant TIMEOUT (line 23) | const TIMEOUT: Duration = Duration::from_secs(600); constant BANNER (line 25) | const BANNER: &str = r#" type Args (line 41) | struct Args { function show_disclaimer (line 54) | fn show_disclaimer() { function prompt_email (line 68) | fn prompt_email(config: &mut config::Config) -> String { function create_spinner (line 89) | fn create_spinner(message: &str) -> ProgressBar { function main (line 102) | async fn main() -> Result<()> { function run (line 133) | async fn run(args: Args) -> Result<(), ReviewError> { FILE: crates/review/src/session_selector.rs type SessionSelection (line 14) | pub enum SessionSelection { function select_session (line 30) | pub fn select_session(pr_branch: &str) -> Result Result String { function format_time_ago (line 156) | fn format_time_ago(time: SystemTime) -> String { FILE: crates/server-info/src/lib.rs type ServerInfo (line 6) | pub struct ServerInfo { method new (line 19) | pub fn new() -> Self { method set_port (line 27) | pub async fn set_port(&self, port: u16) { method get_port (line 31) | pub async fn get_port(&self) -> Option { method set_bind_ip (line 35) | pub async fn set_bind_ip(&self, bind_ip: IpAddr) { method get_bind_ip (line 39) | pub async fn get_bind_ip(&self) -> Option { method set_hostname (line 43) | pub async fn set_hostname(&self, hostname: String) { method get_hostname (line 47) | pub async fn get_hostname(&self) -> Option { method default (line 13) | fn default() -> Self { FILE: crates/server/build.rs function main (line 3) | fn main() { FILE: crates/server/src/bin/generate_types.rs function generate_types_content (line 7) | fn generate_types_content() -> String { function generate_json_schema (line 281) | fn generate_json_schema() -> Result Result, serde_jso... function write_schemas (line 347) | fn write_schemas( function schemas_up_to_date (line 362) | fn schemas_up_to_date(schemas_path: &Path, schemas: &HashMap<&str, Strin... function main (line 374) | fn main() { FILE: crates/server/src/error.rs type ApiError (line 33) | pub enum ApiError { method from (line 89) | fn from(msg: &'static str) -> Self { method from (line 95) | fn from(err: Git2Error) -> Self { method from (line 101) | fn from(_: RemoteClientNotConfigured) -> Self { method from (line 107) | fn from(err: WorkspaceManagerError) -> Self { method from (line 532) | fn from(err: TrustedKeyAuthError) -> Self { method from (line 544) | fn from(err: RepoServiceError) -> Self { type ErrorInfo (line 134) | struct ErrorInfo { method internal (line 141) | fn internal(error_type: &'static str) -> Self { method not_found (line 149) | fn not_found(error_type: &'static str, msg: impl Into) -> Self { method bad_request (line 157) | fn bad_request(error_type: &'static str, msg: impl Into) -> Se... method conflict (line 165) | fn conflict(error_type: &'static str, msg: impl Into) -> Self { method with_status (line 173) | fn with_status(status: StatusCode, error_type: &'static str, msg: impl... function remote_client_error (line 182) | fn remote_client_error(err: &RemoteClientError) -> ErrorInfo { method into_response (line 278) | fn into_response(self) -> Response { FILE: crates/server/src/lib.rs type DeploymentImpl (line 11) | pub type DeploymentImpl = local_deployment::LocalDeployment; FILE: crates/server/src/main.rs type VibeKanbanError (line 14) | pub enum VibeKanbanError { function main (line 26) | async fn main() -> Result<(), VibeKanbanError> { function shutdown_signal (line 99) | async fn shutdown_signal() { FILE: crates/server/src/middleware/error_logging.rs function log_server_errors (line 7) | pub async fn log_server_errors(request: Request, next: Next) -> Response { FILE: crates/server/src/middleware/model_loaders.rs function load_workspace_middleware (line 15) | pub async fn load_workspace_middleware( function load_execution_process_middleware (line 41) | pub async fn load_execution_process_middleware( function load_tag_middleware (line 69) | pub async fn load_tag_middleware( function load_session_middleware (line 96) | pub async fn load_session_middleware( FILE: crates/server/src/middleware/origin.rs type OriginKey (line 12) | struct OriginKey { method from_origin (line 19) | fn from_origin(origin: &str) -> Option { method from_host_header (line 31) | fn from_host_header(host: &str, https: bool) -> Option { function validate_origin (line 40) | pub fn validate_origin(req: &mut Request) -> Result<(), Response> { function get_origin_header (line 83) | fn get_origin_header(req: &Request) -> Option<&str> { function get_host_header (line 87) | fn get_host_header(req: &Request) -> Option<&str> { function get_header (line 91) | fn get_header(req: &Request, name: header::HeaderName) -> Option<&... function is_relay_request (line 98) | fn is_relay_request(req: &Request) -> bool { function forbidden (line 105) | fn forbidden() -> Response { function origin_matches_host (line 112) | fn origin_matches_host(origin: &str, host: &str) -> bool { function normalize_host (line 119) | fn normalize_host(host: &str) -> String { function default_port (line 134) | fn default_port(https: bool) -> u16 { function allowed_origins (line 138) | fn allowed_origins() -> &'static Vec { function make_request (line 159) | fn make_request(origin: Option<&str>, host: Option<&str>) -> Request) -> bool { function no_origin_header_allows_request (line 175) | fn no_origin_header_allows_request() { function null_origin_is_forbidden (line 181) | fn null_origin_is_forbidden() { function same_origin_allows_request (line 189) | fn same_origin_allows_request() { function cross_origin_forbidden (line 204) | fn cross_origin_forbidden() { function loopback_addresses_normalized_and_equivalent (line 220) | fn loopback_addresses_normalized_and_equivalent() { function default_ports_handled_correctly (line 245) | fn default_ports_handled_correctly() { FILE: crates/server/src/middleware/relay_request_signature.rs constant RELAY_HEADER (line 18) | const RELAY_HEADER: &str = "x-vk-relayed"; constant SIGNING_SESSION_HEADER (line 19) | const SIGNING_SESSION_HEADER: &str = "x-vk-sig-session"; constant TIMESTAMP_HEADER (line 20) | const TIMESTAMP_HEADER: &str = "x-vk-sig-ts"; constant NONCE_HEADER (line 21) | const NONCE_HEADER: &str = "x-vk-sig-nonce"; constant REQUEST_SIGNATURE_HEADER (line 22) | const REQUEST_SIGNATURE_HEADER: &str = "x-vk-sig-signature"; constant RESPONSE_TIMESTAMP_HEADER (line 24) | const RESPONSE_TIMESTAMP_HEADER: &str = "x-vk-resp-ts"; constant RESPONSE_NONCE_HEADER (line 25) | const RESPONSE_NONCE_HEADER: &str = "x-vk-resp-nonce"; constant RESPONSE_SIGNATURE_HEADER (line 26) | const RESPONSE_SIGNATURE_HEADER: &str = "x-vk-resp-signature"; type RelayRequestSignatureContext (line 29) | pub struct RelayRequestSignatureContext { type RelayRequestSignatureInput (line 35) | struct RelayRequestSignatureInput { function require_relay_request_signature (line 43) | pub async fn require_relay_request_signature( function sign_relay_response (line 100) | pub async fn sign_relay_response( function build_request_message (line 155) | fn build_request_message( function build_response_message (line 167) | fn build_response_message( function relay_path_and_query (line 182) | fn relay_path_and_query(request: &Request) -> Result { function extract_relay_request_signature_input (line 195) | fn extract_relay_request_signature_input( function try_parse_signature_from_headers (line 209) | fn try_parse_signature_from_headers( function try_parse_signature_from_query (line 252) | fn try_parse_signature_from_query( function parse_header_optional (line 326) | fn parse_header_optional(request: &Request, name: ... function insert_header (line 334) | fn insert_header(parts: &mut axum::http::response::Parts, name: &'static... function unix_timestamp_now (line 340) | fn unix_timestamp_now() -> Result { function is_relay_request (line 347) | fn is_relay_request(request: &Request) -> bool { FILE: crates/server/src/preview_proxy/bippy_bundle.js method inject (line 1) | inject(a){let s=++n;return t.set(s,a),j.add(a),r._instrumentationIsActiv... method get (line 1) | get(){return r} method set (line 1) | set(u){if(u&&typeof u=="object"){let d=r.renderers;r=u,d.size>0&&(d.forE... method scheduleRefresh (line 1) | scheduleRefresh(){} function V (line 1) | function V(e,t,n=!1){if(!e)return null;let r=t(e);if(r instanceof Promis... function f (line 4) | function f(c,i){let o=0,l=0,p=0;do{let R=c.next();p=d[R],o|=(p&31)<>>=5,l>0&... function _ (line 4) | function _(c,i){return c.pos>=i?!1:c.peek()!==r} method decode (line 4) | decode(c){return Buffer.from(c.buffer,c.byteOffset,c.byteLength).toStrin... method decode (line 4) | decode(c){let i="";for(let o=0;o0?o+C.decode(i.subarra... class y (line 4) | class y{constructor(i){this.pos=0,this.buffer=i}next(){return this.buffe... method constructor (line 4) | constructor(i){this.pos=0,this.buffer=i} method next (line 4) | next(){return this.buffer.charCodeAt(this.pos++)} method peek (line 4) | peek(){return this.buffer.charCodeAt(this.pos)} method indexOf (line 4) | indexOf(i){let{buffer:o,pos:l}=this,p=o.indexOf(i,l);return p===-1?o.l... function x (line 4) | function x(c){let{length:i}=c,o=new y(c),l=[],p=[],b=0;for(;o.pos0&&o.wr... function tt (line 4) | function tt(c){let{length:i}=c,o=new y(c),l=[],p=[],b=0,R=0,T=0,N=0,S=0,... function rt (line 4) | function rt(c){if(c.length===0)return"";let i=new h;for(let o=0;o &'static Client { function env_flag_enabled (line 41) | fn env_flag_enabled(name: &str) -> bool { function get_proxy_port (line 50) | pub fn get_proxy_port() -> Option { function set_proxy_port (line 56) | pub fn set_proxy_port(port: u16) -> Option { constant SKIP_REQUEST_HEADERS (line 60) | const SKIP_REQUEST_HEADERS: &[&str] = &[ constant STRIP_RESPONSE_HEADERS (line 77) | const STRIP_RESPONSE_HEADERS: &[&str] = &[ constant DEVTOOLS_SCRIPT (line 89) | const DEVTOOLS_SCRIPT: &str = include_str!("devtools_script.js"); constant BIPPY_BUNDLE (line 93) | const BIPPY_BUNDLE: &str = include_str!("bippy_bundle.js"); constant CLICK_TO_COMPONENT_SCRIPT (line 97) | const CLICK_TO_COMPONENT_SCRIPT: &str = include_str!("click_to_component... constant ERUDA_INIT (line 101) | const ERUDA_INIT: &str = include_str!("eruda_init.js"); function collect_response_headers (line 105) | fn collect_response_headers( function is_loopback_redirect_host (line 128) | fn is_loopback_redirect_host(host: &str) -> bool { function trim_wrapping_quotes (line 132) | fn trim_wrapping_quotes(value: &str) -> &str { function trim_trailing_redirect_punctuation (line 150) | fn trim_trailing_redirect_punctuation(mut value: &str) -> &str { function normalize_redirect_like_url_token (line 161) | fn normalize_redirect_like_url_token(value: &str) -> Option { function normalize_refresh_url_token (line 190) | fn normalize_refresh_url_token(raw_value: &str) -> &str { function rewrite_redirect_like_header_value (line 195) | fn rewrite_redirect_like_header_value( function rewrite_refresh_header_value (line 247) | fn rewrite_refresh_header_value(value: &str, target_port: u16, proxy_por... function is_redirect_like_header_name (line 276) | fn is_redirect_like_header_name(name_lower: &str) -> bool { function rewrite_redirect_like_headers (line 284) | fn rewrite_redirect_like_headers( function extract_target_from_host (line 317) | fn extract_target_from_host(headers: &HeaderMap) -> Option { function subdomain_proxy (line 323) | async fn subdomain_proxy(request: Request) -> Response { function proxy_impl (line 336) | async fn proxy_impl(target_port: u16, path_str: String, request: Request... function http_proxy_handler (line 385) | async fn http_proxy_handler(target_port: u16, path_str: String, request:... function handle_ws_proxy (line 641) | async fn handle_ws_proxy( function router (line 761) | pub fn router() -> Router type RscRedirectInfo (line 773) | struct RscRedirectInfo { function detect_rsc_redirect_in_body (line 787) | fn detect_rsc_redirect_in_body(body: &[u8]) -> Option { function collect_response_headers_preserves_multiple_set_cookie_values (line 858) | fn collect_response_headers_preserves_multiple_set_cookie_values() { function response_builder_preserves_multiple_set_cookie_values (line 877) | fn response_builder_preserves_multiple_set_cookie_values() { function collect_response_headers_preserves_mixed_headers_and_three_cookies (line 894) | fn collect_response_headers_preserves_mixed_headers_and_three_cookies() { function collect_response_headers_drops_content_length_for_html_only (line 920) | fn collect_response_headers_drops_content_length_for_html_only() { function collect_response_headers_strips_blocked_headers (line 933) | fn collect_response_headers_strips_blocked_headers() { function rewrite_redirect_like_header_value_rewrites_loopback_absolute_url (line 949) | fn rewrite_redirect_like_header_value_rewrites_loopback_absolute_url() { function rewrite_redirect_like_header_value_keeps_relative_and_non_loopback_urls (line 963) | fn rewrite_redirect_like_header_value_keeps_relative_and_non_loopback_ur... function rewrite_redirect_like_header_value_rewrites_scheme_relative_loopback_url (line 979) | fn rewrite_redirect_like_header_value_rewrites_scheme_relative_loopback_... function rewrite_refresh_header_value_rewrites_embedded_url (line 989) | fn rewrite_refresh_header_value_rewrites_embedded_url() { function rewrite_refresh_header_value_handles_trailing_comma_in_quoted_url (line 1003) | fn rewrite_refresh_header_value_handles_trailing_comma_in_quoted_url() { function rewrite_redirect_like_header_value_cleans_quoted_relative_url (line 1017) | fn rewrite_redirect_like_header_value_cleans_quoted_relative_url() { function rewrite_redirect_like_header_value_cleans_and_rewrites_quoted_absolute_url (line 1024) | fn rewrite_redirect_like_header_value_cleans_and_rewrites_quoted_absolut... function rewrite_redirect_like_header_value_skips_structured_values (line 1035) | fn rewrite_redirect_like_header_value_skips_structured_values() { function rewrite_redirect_like_headers_rewrites_generic_redirect_headers_only (line 1046) | fn rewrite_redirect_like_headers_rewrites_generic_redirect_headers_only() { function rewrite_redirect_like_headers_rewrites_rewrite_headers_and_keeps_plain_url_headers (line 1087) | fn rewrite_redirect_like_headers_rewrites_rewrite_headers_and_keeps_plai... function is_redirect_like_header_name_matches_nextjs_redirect (line 1112) | fn is_redirect_like_header_name_matches_nextjs_redirect() { function is_redirect_like_header_name_matches_action_redirect (line 1119) | fn is_redirect_like_header_name_matches_action_redirect() { function rewrite_redirect_like_headers_rewrites_nextjs_redirect (line 1126) | fn rewrite_redirect_like_headers_rewrites_nextjs_redirect() { function collect_response_headers_preserves_nextjs_redirect (line 1141) | fn collect_response_headers_preserves_nextjs_redirect() { function rewrite_redirect_like_headers_preserves_relative_nextjs_redirect (line 1155) | fn rewrite_redirect_like_headers_preserves_relative_nextjs_redirect() { function test_detect_rsc_redirect_basic (line 1168) | fn test_detect_rsc_redirect_basic() { function test_detect_rsc_redirect_url_with_semicolons (line 1182) | fn test_detect_rsc_redirect_url_with_semicolons() { function test_detect_rsc_redirect_false_positive_no_json_prefix (line 1196) | fn test_detect_rsc_redirect_false_positive_no_json_prefix() { function test_detect_rsc_redirect_body_size_cap (line 1203) | fn test_detect_rsc_redirect_body_size_cap() { function test_detect_rsc_redirect_invalid_type (line 1212) | fn test_detect_rsc_redirect_invalid_type() { function test_detect_rsc_redirect_invalid_status_code (line 1219) | fn test_detect_rsc_redirect_invalid_status_code() { function test_detect_rsc_redirect_permanent_redirect (line 1226) | fn test_detect_rsc_redirect_permanent_redirect() { function test_detect_rsc_redirect_absolute_url (line 1240) | fn test_detect_rsc_redirect_absolute_url() { function test_detect_rsc_redirect_empty_body (line 1254) | fn test_detect_rsc_redirect_empty_body() { function test_detect_rsc_redirect_no_redirect_in_body (line 1260) | fn test_detect_rsc_redirect_no_redirect_in_body() { FILE: crates/server/src/routes/approvals.rs function respond_to_approval (line 21) | pub async fn respond_to_approval( function stream_approvals_ws (line 51) | pub async fn stream_approvals_ws( function handle_approvals_ws (line 62) | async fn handle_approvals_ws( function router (line 109) | pub fn router() -> Router { FILE: crates/server/src/routes/attachments.rs function content_type_and_disposition_for_attachment (line 22) | pub(crate) fn content_type_and_disposition_for_attachment( function is_safe_inline_attachment_mime_type (line 32) | fn is_safe_inline_attachment_mime_type(mime_type: &str) -> bool { type AttachmentResponse (line 46) | pub struct AttachmentResponse { method from_file (line 58) | pub fn from_file(file: File) -> Self { type AttachmentMetadata (line 74) | pub struct AttachmentMetadata { function upload_file (line 83) | pub async fn upload_file( function process_file_upload (line 91) | pub(crate) async fn process_file_upload( function serve_file (line 136) | pub async fn serve_file( function delete_file (line 176) | pub async fn delete_file( function routes (line 185) | pub fn routes() -> Router { function allows_safe_images_inline (line 202) | fn allows_safe_images_inline() { function forces_html_to_download (line 209) | fn forces_html_to_download() { function forces_svg_to_download (line 216) | fn forces_svg_to_download() { function forces_pdf_to_download (line 224) | fn forces_pdf_to_download() { function forces_unknown_types_to_download (line 232) | fn forces_unknown_types_to_download() { function nosniff_header_name_matches_expected (line 240) | fn nosniff_header_name_matches_expected() { FILE: crates/server/src/routes/config.rs function router (line 42) | pub fn router() -> Router { type Environment (line 62) | pub struct Environment { method new (line 76) | pub fn new() -> Self { method default (line 70) | fn default() -> Self { type UserSystemInfo (line 88) | pub struct UserSystemInfo { function get_user_system_info (line 104) | async fn get_user_system_info( function update_config (line 139) | async fn update_config( function track_config_events (line 171) | async fn track_config_events(deployment: &DeploymentImpl, old: &Config, ... function handle_config_events (line 202) | async fn handle_config_events(deployment: &DeploymentImpl, old: &Config,... function get_sound (line 225) | async fn get_sound(Path(sound): Path) -> Result Router { FILE: crates/server/src/routes/events.rs function events (line 15) | pub async fn events( function router (line 24) | pub fn router(_: &DeploymentImpl) -> Router { FILE: crates/server/src/routes/execution_processes.rs type SessionExecutionProcessQuery (line 28) | pub struct SessionExecutionProcessQuery { function get_execution_process_by_id (line 35) | pub async fn get_execution_process_by_id( function stream_raw_logs_ws (line 42) | pub async fn stream_raw_logs_ws( function handle_raw_logs_ws (line 63) | async fn handle_raw_logs_ws( function stream_normalized_logs_ws (line 131) | pub async fn stream_normalized_logs_ws( function handle_normalized_logs_ws (line 154) | async fn handle_normalized_logs_ws( function stop_execution_process (line 188) | pub async fn stop_execution_process( function stream_execution_processes_by_session_ws (line 200) | pub async fn stream_execution_processes_by_session_ws( function handle_execution_processes_by_session_ws (line 219) | async fn handle_execution_processes_by_session_ws( function get_execution_process_repo_states (line 261) | pub async fn get_execution_process_repo_states( function router (line 271) | pub fn router(deployment: &DeploymentImpl) -> Router { FILE: crates/server/src/routes/filesystem.rs type ListDirectoryQuery (line 15) | pub struct ListDirectoryQuery { function list_directory (line 19) | pub async fn list_directory( function list_git_repos (line 41) | pub async fn list_git_repos( function router (line 74) | pub fn router() -> Router { FILE: crates/server/src/routes/frontend.rs type Assets (line 11) | pub struct Assets; function serve_frontend (line 13) | pub async fn serve_frontend(uri: axum::extract::Path) -> impl In... function serve_frontend_root (line 18) | pub async fn serve_frontend_root() -> impl IntoResponse { function serve_file (line 22) | async fn serve_file(path: &str) -> impl IntoResponse + use<> { FILE: crates/server/src/routes/health.rs function health_check (line 4) | pub async fn health_check() -> Json> { FILE: crates/server/src/routes/migration.rs function router (line 14) | pub fn router() -> Router { function start_migration (line 20) | async fn start_migration( function list_projects (line 38) | async fn list_projects( FILE: crates/server/src/routes/mod.rs function router (line 34) | pub fn router(deployment: DeploymentImpl) -> IntoMakeService { FILE: crates/server/src/routes/oauth.rs constant APP_ICON_BASE64 (line 24) | const APP_ICON_BASE64: &str = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABze... constant AUTH_PAGE_STYLES (line 29) | const AUTH_PAGE_STYLES: &str = r#"