SYMBOL INDEX (898 symbols across 57 files) FILE: .codex/skills/land/land_watch.py class PrInfo (line 23) | class PrInfo: class RateLimitError (line 31) | class RateLimitError(RuntimeError): function is_rate_limit_error (line 35) | def is_rate_limit_error(error: str) -> bool: function run_gh (line 39) | async def run_gh(*args: str) -> str: function get_pr_info (line 65) | async def get_pr_info() -> PrInfo: function get_paginated_list (line 82) | async def get_paginated_list(endpoint: str) -> list[dict[str, Any]]: function get_issue_comments (line 104) | async def get_issue_comments(pr_number: int) -> list[dict[str, Any]]: function get_review_comments (line 110) | async def get_review_comments(pr_number: int) -> list[dict[str, Any]]: function get_reviews (line 116) | async def get_reviews(pr_number: int) -> list[dict[str, Any]]: function get_check_runs (line 138) | async def get_check_runs(head_sha: str) -> list[dict[str, Any]]: function parse_time (line 164) | def parse_time(value: str) -> datetime: function sanitize_terminal_output (line 172) | def sanitize_terminal_output(value: str) -> str: function check_timestamp (line 176) | def check_timestamp(check: dict[str, Any]) -> datetime | None: function dedupe_check_runs (line 184) | def dedupe_check_runs(check_runs: list[dict[str, Any]]) -> list[dict[str... function summarize_checks (line 201) | def summarize_checks(check_runs: list[dict[str, Any]]) -> tuple[bool, bo... function latest_review_request_at (line 221) | def latest_review_request_at(comments: list[dict[str, Any]]) -> datetime... function filter_codex_comments (line 237) | def filter_codex_comments( function is_codex_bot_user (line 268) | def is_codex_bot_user(user: dict[str, Any]) -> bool: function is_bot_user (line 273) | def is_bot_user(user: dict[str, Any]) -> bool: function is_codex_reply_body (line 282) | def is_codex_reply_body(body: str) -> bool: function is_codex_review_body (line 286) | def is_codex_review_body(body: str) -> bool: function latest_codex_issue_reply_time (line 290) | def latest_codex_issue_reply_time( function filter_human_issue_comments (line 306) | def filter_human_issue_comments(comments: list[dict[str, Any]]) -> list[... function filter_codex_review_issue_comments (line 330) | def filter_codex_review_issue_comments( function thread_root_id (line 350) | def thread_root_id(comment: dict[str, Any]) -> int | None: function comment_time (line 354) | def comment_time(comment: dict[str, Any]) -> datetime | None: function latest_codex_reply_by_thread (line 361) | def latest_codex_reply_by_thread( function filter_human_review_comments (line 379) | def filter_human_review_comments( function is_blocking_review (line 401) | def is_blocking_review( function review_timestamp (line 432) | def review_timestamp(review: dict[str, Any]) -> datetime | None: function dedupe_reviews (line 439) | def dedupe_reviews(reviews: list[dict[str, Any]]) -> list[dict[str, Any]]: function filter_blocking_reviews (line 458) | def filter_blocking_reviews( function is_merge_conflicting (line 469) | def is_merge_conflicting(pr: PrInfo) -> bool: function fetch_review_context (line 473) | async def fetch_review_context( function raise_on_human_feedback (line 488) | def raise_on_human_feedback( function wait_for_codex (line 514) | async def wait_for_codex(pr_number: int, checks_done: asyncio.Event) -> ... function wait_for_checks (line 547) | async def wait_for_checks(head_sha: str, checks_done: asyncio.Event) -> ... function watch_pr (line 575) | async def watch_pr() -> None: FILE: elixir/lib/mix/tasks/pr_body.check.ex class Mix.Tasks.PrBody.Check (line 1) | defmodule Mix.Tasks.PrBody.Check method run (line 21) | def run(args) do method read_template (line 45) | defp read_template do method read_template_candidate (line 56) | defp read_template_candidate(path) do method required_opt (line 63) | defp required_opt(opts, key) do method read_file (line 70) | defp read_file(path) do method extract_template_headings (line 77) | defp extract_template_headings(template, template_path) do method lint_and_print (line 89) | defp lint_and_print(template_path, template, body, headings) do method lint (line 101) | defp lint(template, body, headings) do method check_required_headings (line 109) | defp check_required_headings(errors, body, headings) do method check_order (line 114) | defp check_order(errors, body, headings) do method check_no_placeholders (line 123) | defp check_no_placeholders(errors, body) do method check_sections_from_template (line 131) | defp check_sections_from_template(errors, template, body, headings) do method maybe_require_bullets (line 151) | defp maybe_require_bullets(errors, heading, template_section, body_sec... method maybe_require_checkboxes (line 161) | defp maybe_require_checkboxes(errors, heading, template_section, body_... method heading_position (line 171) | defp heading_position(body, heading) do method capture_heading_section (line 178) | defp capture_heading_section(doc, heading, headings) do method extract_section_content (line 191) | defp extract_section_content(doc, content_start, heading, headings) do method next_heading_offset (line 200) | defp next_heading_offset(content, heading, headings) do method headings_after (line 211) | defp headings_after(current_heading, headings) do FILE: elixir/lib/mix/tasks/specs.check.ex class Mix.Tasks.Specs.Check (line 1) | defmodule Mix.Tasks.Specs.Check method run (line 15) | def run(args) do method load_exemptions (line 41) | defp load_exemptions(path) do FILE: elixir/lib/mix/tasks/workspace.before_remove.ex class Mix.Tasks.Workspace.BeforeRemove (line 1) | defmodule Mix.Tasks.Workspace.BeforeRemove method run (line 21) | def run(args) do method maybe_close_open_pull_requests (line 43) | defp maybe_close_open_pull_requests(_repo, nil), do: :ok method maybe_close_open_pull_requests (line 45) | defp maybe_close_open_pull_requests(repo, branch) do method gh_available? (line 55) | defp gh_available? do method gh_authenticated? (line 59) | defp gh_authenticated? do method list_open_pull_request_numbers (line 63) | defp list_open_pull_request_numbers(repo, branch) do method close_pull_request (line 88) | defp close_pull_request(repo, branch, pr_number) do method closing_comment (line 108) | defp closing_comment(branch) do method format_output (line 112) | defp format_output(""), do: "" method format_output (line 113) | defp format_output(output), do: " output=#{inspect(output)}" method current_branch (line 115) | defp current_branch do method run_command (line 128) | defp run_command(command, args) do FILE: elixir/lib/symphony_elixir.ex class SymphonyElixir (line 1) | defmodule SymphonyElixir method start_link (line 10) | def start_link(opts \\ []) do class SymphonyElixir.Application (line 15) | defmodule SymphonyElixir.Application method start (line 23) | def start(_type, _args) do method stop (line 43) | def stop(_state) do FILE: elixir/lib/symphony_elixir/agent_runner.ex class SymphonyElixir.AgentRunner (line 1) | defmodule SymphonyElixir.AgentRunner method run (line 13) | def run(issue, codex_update_recipient \\ nil, opts \\ []) do method run_on_worker_host (line 29) | defp run_on_worker_host(issue, codex_update_recipient, opts, worker_ho... method codex_message_handler (line 49) | defp codex_message_handler(recipient, issue) do method send_codex_update (line 61) | defp send_codex_update(_recipient, _issue, _message), do: :ok method send_worker_runtime_info (line 77) | defp send_worker_runtime_info(_recipient, _issue, _worker_host, _works... method run_codex_turns (line 79) | defp run_codex_turns(workspace, issue, codex_update_recipient, opts, w... method do_run_codex_turns (line 92) | defp do_run_codex_turns(app_session, workspace, issue, codex_update_re... method build_turn_prompt (line 133) | defp build_turn_prompt(issue, opts, 1, _max_turns), do: PromptBuilder.... method build_turn_prompt (line 135) | defp build_turn_prompt(_issue, _opts, turn_number, max_turns) do method continue_with_issue? (line 164) | defp continue_with_issue?(issue, _issue_state_fetcher), do: {:done, is... method active_issue_state? (line 173) | defp active_issue_state?(_state_name), do: false method selected_worker_host (line 175) | defp selected_worker_host(nil, []), do: nil method worker_host_for_log (line 191) | defp worker_host_for_log(nil), do: "local" method worker_host_for_log (line 192) | defp worker_host_for_log(worker_host), do: worker_host method issue_context (line 200) | defp issue_context(%Issue{id: issue_id, identifier: identifier}) do FILE: elixir/lib/symphony_elixir/cli.ex class SymphonyElixir.CLI (line 1) | defmodule SymphonyElixir.CLI method main (line 21) | def main(args) do method evaluate (line 33) | def evaluate(args, deps \\ runtime_deps()) do method run (line 55) | def run(workflow_path, deps) do method usage_message (line 74) | defp usage_message do method runtime_deps (line 79) | defp runtime_deps do method maybe_set_logs_root (line 89) | defp maybe_set_logs_root(opts, deps) do method require_guardrails_acknowledgement (line 105) | defp require_guardrails_acknowledgement(opts) do method acknowledgement_banner (line 114) | defp acknowledgement_banner do method set_logs_root (line 146) | defp set_logs_root(logs_root) do method maybe_set_server_port (line 151) | defp maybe_set_server_port(opts, deps) do method wait_for_shutdown (line 173) | defp wait_for_shutdown do FILE: elixir/lib/symphony_elixir/codex/app_server.ex class SymphonyElixir.Codex.AppServer (line 1) | defmodule SymphonyElixir.Codex.AppServer method run (line 29) | def run(workspace, prompt, issue, opts \\ []) do method start_session (line 40) | def start_session(workspace, opts \\ []) do method run_turn (line 70) | def run_turn( method start_port (line 189) | defp start_port(workspace, nil) do method send_initialize (line 241) | defp send_initialize(port) do method session_policies (line 265) | defp session_policies(workspace, nil) do method do_start_session (line 273) | defp do_start_session(port, workspace, session_policies) do method start_thread (line 280) | defp start_thread(port, workspace, %{approval_policy: approval_policy,... method start_turn (line 304) | defp start_turn(port, thread_id, prompt, issue, workspace, approval_po... method await_turn_completion (line 329) | defp await_turn_completion(port, on_message, tool_executor, auto_appro... method receive_loop (line 340) | defp receive_loop(port, on_message, timeout_ms, pending_line, tool_exe... method handle_incoming (line 364) | defp handle_incoming(port, on_message, data, timeout_ms, tool_executor... method emit_turn_event (line 441) | defp emit_turn_event(on_message, event, payload, payload_string, port,... method handle_turn_method (line 454) | defp handle_turn_method( method maybe_handle_approval_request (line 526) | defp maybe_handle_approval_request( method maybe_handle_approval_request (line 548) | defp maybe_handle_approval_request( method maybe_handle_approval_request (line 583) | defp maybe_handle_approval_request( method maybe_handle_approval_request (line 605) | defp maybe_handle_approval_request( method maybe_handle_approval_request (line 627) | defp maybe_handle_approval_request( method maybe_handle_approval_request (line 649) | defp maybe_handle_approval_request( method maybe_handle_approval_request (line 671) | defp maybe_handle_approval_request( method normalize_dynamic_tool_result (line 702) | defp normalize_dynamic_tool_result(result) do method dynamic_tool_output (line 711) | defp dynamic_tool_output(result), do: Jason.encode!(result, pretty: true) method approve_or_require (line 722) | defp approve_or_require( method approve_or_require (line 744) | defp approve_or_require( method maybe_auto_answer_tool_request_user_input (line 757) | defp maybe_auto_answer_tool_request_user_input( method maybe_auto_answer_tool_request_user_input (line 793) | defp maybe_auto_answer_tool_request_user_input( method tool_request_user_input_approval_answers (line 833) | defp tool_request_user_input_approval_answers(_params), do: :error method reply_with_non_interactive_tool_input_answer (line 835) | defp reply_with_non_interactive_tool_input_answer( method tool_request_user_input_unavailable_answers (line 881) | defp tool_request_user_input_unavailable_answers(_params), do: :error method tool_request_user_input_question_id (line 886) | defp tool_request_user_input_question_id(_question), do: :error method tool_request_user_input_approval_answer (line 896) | defp tool_request_user_input_approval_answer(_question), do: :error method tool_request_user_input_approval_option_label (line 898) | defp tool_request_user_input_approval_option_label(options) do method tool_request_user_input_option_label (line 911) | defp tool_request_user_input_option_label(_option), do: nil method await_response (line 922) | defp await_response(port, request_id) do method with_timeout_response (line 926) | defp with_timeout_response(port, request_id, timeout_ms, pending_line) do method handle_response (line 943) | defp handle_response(port, request_id, data, timeout_ms) do method log_non_json_stream_line (line 966) | defp log_non_json_stream_line(data, stream_label) do method protocol_message_candidate? (line 982) | defp protocol_message_candidate?(data) do method issue_context (line 989) | defp issue_context(%{id: issue_id, identifier: identifier}) do method metadata_from_message (line 1014) | defp metadata_from_message(port, payload) do method maybe_set_usage (line 1028) | defp maybe_set_usage(metadata, _payload), do: metadata method default_on_message (line 1034) | defp default_on_message(_message), do: :ok method tool_call_name (line 1049) | defp tool_call_name(_params), do: nil method tool_call_arguments (line 1055) | defp tool_call_arguments(_params), do: %{} method send_message (line 1057) | defp send_message(port, message) do method needs_input? (line 1067) | defp needs_input?(_method, _payload), do: false method request_payload_requires_input? (line 1081) | defp request_payload_requires_input?(payload) do method needs_input_field? (line 1095) | defp needs_input_field?(_payload), do: false FILE: elixir/lib/symphony_elixir/codex/dynamic_tool.ex class SymphonyElixir.Codex.DynamicTool (line 1) | defmodule SymphonyElixir.Codex.DynamicTool method execute (line 30) | def execute(tool, arguments, opts \\ []) do method tool_specs (line 46) | def tool_specs do method execute_linear_graphql (line 56) | defp execute_linear_graphql(arguments, opts) do method normalize_linear_graphql_arguments (line 91) | defp normalize_linear_graphql_arguments(_arguments), do: {:error, :inv... method normalize_query (line 93) | defp normalize_query(arguments) do method normalize_variables (line 106) | defp normalize_variables(arguments) do method graphql_response (line 113) | defp graphql_response(response) do method failure_response (line 124) | defp failure_response(payload) do method encode_payload (line 145) | defp encode_payload(payload), do: inspect(payload) method tool_error_payload (line 147) | defp tool_error_payload(:missing_query) do method tool_error_payload (line 155) | defp tool_error_payload(:invalid_arguments) do method tool_error_payload (line 163) | defp tool_error_payload(:invalid_variables) do method tool_error_payload (line 171) | defp tool_error_payload(:missing_linear_api_token) do method tool_error_payload (line 179) | defp tool_error_payload({:linear_api_status, status}) do method tool_error_payload (line 188) | defp tool_error_payload({:linear_api_request, reason}) do method tool_error_payload (line 197) | defp tool_error_payload(reason) do method supported_tool_names (line 206) | defp supported_tool_names do FILE: elixir/lib/symphony_elixir/config.ex class SymphonyElixir.Config (line 1) | defmodule SymphonyElixir.Config method settings (line 30) | def settings do method settings! (line 41) | def settings! do method max_concurrent_agents_for_state (line 62) | def max_concurrent_agents_for_state(_state_name), do: settings!().agen... method codex_turn_sandbox_policy (line 65) | def codex_turn_sandbox_policy(workspace \\ nil) do method workflow_prompt (line 76) | def workflow_prompt do method server_port (line 87) | def server_port do method validate! (line 95) | def validate! do method codex_runtime_settings (line 103) | def codex_runtime_settings(workspace \\ nil, opts \\ []) do method validate_semantics (line 117) | defp validate_semantics(settings) do method format_config_error (line 136) | defp format_config_error(reason) do FILE: elixir/lib/symphony_elixir/config/schema.ex class SymphonyElixir.Config.Schema (line 1) | defmodule SymphonyElixir.Config.Schema method resolve_turn_sandbox_policy (line 293) | def resolve_turn_sandbox_policy(settings, workspace \\ nil) do method resolve_runtime_turn_sandbox_policy (line 308) | def resolve_runtime_turn_sandbox_policy(settings, workspace \\ nil, op... method normalize_state_limits (line 327) | def normalize_state_limits(nil), do: %{} method validate_state_limits (line 337) | def validate_state_limits(changeset, field) do method changeset (line 354) | defp changeset(attrs) do method finalize_settings (line 368) | defp finalize_settings(settings) do method normalize_keys (line 396) | defp normalize_keys(value), do: value method normalize_optional_map (line 398) | defp normalize_optional_map(nil), do: nil method normalize_key (line 402) | defp normalize_key(value), do: to_string(value) method drop_nil_values (line 414) | defp drop_nil_values(value), do: value method resolve_secret_setting (line 416) | defp resolve_secret_setting(nil, fallback), do: normalize_secret_value... method env_reference_name (line 459) | defp env_reference_name("$" <> env_name) do method env_reference_name (line 467) | defp env_reference_name(_value), do: :error method resolve_env_token (line 469) | defp resolve_env_token(env_name) do method normalize_secret_value (line 480) | defp normalize_secret_value(_value), do: nil method default_turn_sandbox_policy (line 482) | defp default_turn_sandbox_policy(workspace) do method default_runtime_turn_sandbox_policy (line 504) | defp default_runtime_turn_sandbox_policy(workspace_root, _opts) do method default_workspace_root (line 511) | defp default_workspace_root(nil, fallback), do: fallback method default_workspace_root (line 512) | defp default_workspace_root("", fallback), do: fallback method default_workspace_root (line 513) | defp default_workspace_root(workspace, _fallback), do: workspace method expand_local_workspace_root (line 520) | defp expand_local_workspace_root(_workspace_root) do method format_errors (line 524) | defp format_errors(changeset) do method flatten_errors (line 531) | defp flatten_errors(errors, prefix \\ nil) method translate_error (line 549) | defp translate_error({message, options}) do method error_value_to_string (line 556) | defp error_value_to_string(value), do: inspect(value) class StringOrMap (line 14) | defmodule StringOrMap method type (line 19) | def type, do: :map method embed_as (line 22) | def embed_as(_format), do: :self method equal? (line 25) | def equal?(left, right), do: left == right method cast (line 29) | def cast(_value), do: :error method load (line 33) | def load(_value), do: :error method dump (line 37) | def dump(_value), do: :error class Tracker (line 40) | defmodule Tracker method changeset (line 58) | def changeset(schema, attrs) do class Polling (line 68) | defmodule Polling method changeset (line 79) | def changeset(schema, attrs) do class Workspace (line 86) | defmodule Workspace method changeset (line 97) | def changeset(schema, attrs) do class Worker (line 103) | defmodule Worker method changeset (line 115) | def changeset(schema, attrs) do class Agent (line 122) | defmodule Agent method changeset (line 138) | def changeset(schema, attrs) do class Codex (line 153) | defmodule Codex method changeset (line 180) | def changeset(schema, attrs) do class Hooks (line 202) | defmodule Hooks method changeset (line 217) | def changeset(schema, attrs) do class Observability (line 224) | defmodule Observability method changeset (line 237) | def changeset(schema, attrs) do class Server (line 245) | defmodule Server method changeset (line 257) | def changeset(schema, attrs) do FILE: elixir/lib/symphony_elixir/http_server.ex class SymphonyElixir.HttpServer (line 1) | defmodule SymphonyElixir.HttpServer method child_spec (line 12) | def child_spec(opts) do method start_link (line 20) | def start_link(opts \\ []) do method bound_port (line 52) | def bound_port(_server \\ __MODULE__) do method parse_host (line 63) | defp parse_host({_, _, _, _} = ip), do: {:ok, ip} method parse_host (line 64) | defp parse_host({_, _, _, _, _, _, _, _} = ip), do: {:ok, ip} method normalize_host (line 83) | defp normalize_host(host), do: to_string(host) method secret_key_base (line 85) | defp secret_key_base do FILE: elixir/lib/symphony_elixir/linear/adapter.ex class SymphonyElixir.Linear.Adapter (line 1) | defmodule SymphonyElixir.Linear.Adapter method fetch_candidate_issues (line 41) | def fetch_candidate_issues, do: client_module().fetch_candidate_issues() method fetch_issues_by_states (line 44) | def fetch_issues_by_states(states), do: client_module().fetch_issues_b... method fetch_issue_states_by_ids (line 47) | def fetch_issue_states_by_ids(issue_ids), do: client_module().fetch_is... method client_module (line 76) | defp client_module do method resolve_state_id (line 80) | defp resolve_state_id(issue_id, state_name) do FILE: elixir/lib/symphony_elixir/linear/client.ex class SymphonyElixir.Linear.Client (line 1) | defmodule SymphonyElixir.Linear.Client method fetch_candidate_issues (line 107) | def fetch_candidate_issues do method do_fetch_by_states (line 239) | defp do_fetch_by_states(project_slug, state_names, assignee_filter) do method do_fetch_by_states_page (line 243) | defp do_fetch_by_states_page(project_slug, state_names, assignee_filte... method do_fetch_issue_states (line 274) | defp do_fetch_issue_states(ids, assignee_filter) do method do_fetch_issue_states_page (line 284) | defp do_fetch_issue_states_page([], _assignee_filter, _graphql_fun, ac... method do_fetch_issue_states_page (line 291) | defp do_fetch_issue_states_page(ids, assignee_filter, graphql_fun, acc... method build_graphql_payload (line 326) | defp build_graphql_payload(query, variables, operation_name) do method maybe_put_operation_name (line 344) | defp maybe_put_operation_name(payload, _operation_name), do: payload method summarize_error_body (line 369) | defp summarize_error_body(body) do method graphql_headers (line 383) | defp graphql_headers do method post_graphql_request (line 397) | defp post_graphql_request(payload, headers) do method decode_linear_response (line 405) | defp decode_linear_response(%{"data" => %{"issues" => %{"nodes" => nod... method decode_linear_response (line 414) | defp decode_linear_response(%{"errors" => errors}, _assignee_filter) do method decode_linear_response (line 418) | defp decode_linear_response(_unknown, _assignee_filter) do method decode_linear_page_response (line 422) | defp decode_linear_page_response( method decode_linear_page_response (line 438) | defp decode_linear_page_response(response, assignee_filter), do: decod... method next_page_cursor (line 445) | defp next_page_cursor(%{has_next_page: true}), do: {:error, :linear_mi... method next_page_cursor (line 446) | defp next_page_cursor(_), do: :done method normalize_issue (line 469) | defp normalize_issue(_issue, _assignee_filter), do: nil method assignee_field (line 472) | defp assignee_field(_assignee, _field), do: nil method assigned_to_worker? (line 474) | defp assigned_to_worker?(_assignee, nil), do: true method assigned_to_worker? (line 486) | defp assigned_to_worker?(_assignee, _assignee_filter), do: false method assignee_id (line 488) | defp assignee_id(%{} = assignee), do: normalize_assignee_match_value(a... method routing_assignee_filter (line 490) | defp routing_assignee_filter do method resolve_viewer_assignee_filter (line 513) | defp resolve_viewer_assignee_filter do method normalize_assignee_match_value (line 539) | defp normalize_assignee_match_value(_value), do: nil method extract_labels (line 548) | defp extract_labels(_), do: [] method extract_blockers (line 573) | defp extract_blockers(_), do: [] method parse_datetime (line 575) | defp parse_datetime(nil), do: nil method parse_datetime (line 577) | defp parse_datetime(raw) do method parse_priority (line 585) | defp parse_priority(_priority), do: nil FILE: elixir/lib/symphony_elixir/linear/issue.ex class SymphonyElixir.Linear.Issue (line 1) | defmodule SymphonyElixir.Linear.Issue method label_names (line 40) | def label_names(%__MODULE__{labels: labels}) do FILE: elixir/lib/symphony_elixir/log_file.ex class SymphonyElixir.LogFile (line 1) | defmodule SymphonyElixir.LogFile method default_log_file (line 14) | def default_log_file do method configure (line 24) | def configure do method setup_disk_handler (line 32) | defp setup_disk_handler(log_file, max_bytes, max_files) do method remove_existing_handler (line 52) | defp remove_existing_handler do method remove_default_console_handler (line 60) | defp remove_default_console_handler do method disk_log_handler_config (line 68) | defp disk_log_handler_config(path, max_bytes, max_files) do FILE: elixir/lib/symphony_elixir/orchestrator.ex class SymphonyElixir.Orchestrator (line 1) | defmodule SymphonyElixir.Orchestrator method start_link (line 46) | def start_link(opts \\ []) do method init (line 52) | def init(_opts) do method handle_info (line 91) | def handle_info({:tick, _tick_token}, state), do: {:noreply, state} method handle_info (line 93) | def handle_info(:tick, state) do method handle_info (line 109) | def handle_info(:run_poll_cycle, state) do method handle_info (line 119) | def handle_info( method handle_info (line 183) | def handle_info( method handle_info (line 204) | def handle_info({:codex_worker_update, _issue_id, _update}, state), do... method handle_info (line 206) | def handle_info({:retry_issue, issue_id, retry_token}, state) do method handle_info (line 217) | def handle_info({:retry_issue, _issue_id}, state), do: {:noreply, state} method handle_info (line 219) | def handle_info(msg, state) do method maybe_dispatch (line 224) | defp maybe_dispatch(%State{} = state) do method reconcile_running_issues (line 275) | defp reconcile_running_issues(%State{} = state) do method should_dispatch_issue_for_test (line 312) | def should_dispatch_issue_for_test(%Issue{} = issue, %State{} = state) do method select_worker_host_for_test (line 332) | def select_worker_host_for_test(%State{} = state, preferred_worker_hos... method reconcile_running_issue_states (line 336) | defp reconcile_running_issue_states([], state, _active_states, _termin... method reconcile_running_issue_states (line 338) | defp reconcile_running_issue_states([issue | rest], state, active_stat... method reconcile_issue_state (line 347) | defp reconcile_issue_state(%Issue{} = issue, state, active_states, ter... method reconcile_issue_state (line 369) | defp reconcile_issue_state(_issue, state, _active_states, _terminal_st... method reconcile_missing_running_issue_ids (line 391) | defp reconcile_missing_running_issue_ids(state, _requested_issue_ids, ... method log_missing_running_issue (line 403) | defp log_missing_running_issue(_state, _issue_id), do: :ok method refresh_running_issue_state (line 405) | defp refresh_running_issue_state(%State{} = state, %Issue{} = issue) do method terminate_running_issue (line 415) | defp terminate_running_issue(%State{} = state, issue_id, cleanup_works... method reconcile_stalled_running_issues (line 448) | defp reconcile_stalled_running_issues(%State{} = state) do method restart_stalled_issue (line 467) | defp restart_stalled_issue(state, issue_id, running_entry, now, timeou... method stall_elapsed_ms (line 489) | defp stall_elapsed_ms(running_entry, now) do method last_activity_timestamp (line 505) | defp last_activity_timestamp(_running_entry), do: nil method terminate_task (line 517) | defp terminate_task(_pid), do: :ok method choose_issues (line 519) | defp choose_issues(issues, state) do method priority_rank (line 545) | defp priority_rank(_priority), do: 5 method issue_created_at_sort_key (line 547) | defp issue_created_at_sort_key(%Issue{created_at: %DateTime{} = create... method issue_created_at_sort_key (line 551) | defp issue_created_at_sort_key(%Issue{}), do: 9_223_372_036_854_775_807 method issue_created_at_sort_key (line 552) | defp issue_created_at_sort_key(_issue), do: 9_223_372_036_854_775_807 method should_dispatch_issue? (line 554) | defp should_dispatch_issue?( method should_dispatch_issue? (line 569) | defp should_dispatch_issue?(_issue, _state, _active_states, _terminal_... method state_slots_available? (line 577) | defp state_slots_available?(_issue, _running), do: false method candidate_issue? (line 607) | defp candidate_issue?(_issue, _active_states, _terminal_states), do: f... method issue_routable_to_worker? (line 613) | defp issue_routable_to_worker?(_issue), do: true method todo_issue_blocked_by_non_terminal? (line 630) | defp todo_issue_blocked_by_non_terminal?(_issue, _terminal_states), do... method terminal_issue_state? (line 636) | defp terminal_issue_state?(_state_name, _terminal_states), do: false method terminal_state_set (line 646) | defp terminal_state_set do method active_state_set (line 653) | defp active_state_set do method dispatch_issue (line 660) | defp dispatch_issue(%State{} = state, issue, attempt \\ nil, preferred... method do_dispatch_issue (line 680) | defp do_dispatch_issue(%State{} = state, issue, attempt, preferred_wor... method spawn_issue_on_worker_host (line 693) | defp spawn_issue_on_worker_host(%State{} = state, issue, attempt, reci... method revalidate_issue_for_dispatch (line 763) | defp revalidate_issue_for_dispatch(issue, _issue_fetcher, _terminal_st... method complete_issue (line 765) | defp complete_issue(%State{} = state, issue_id) do method handle_retry_issue (line 829) | defp handle_retry_issue(%State{} = state, issue_id, attempt, metadata) do method handle_retry_issue_lookup (line 849) | defp handle_retry_issue_lookup(%Issue{} = issue, state, issue_id, atte... method handle_retry_issue_lookup (line 869) | defp handle_retry_issue_lookup(nil, state, issue_id, _attempt, _metada... method cleanup_issue_workspace (line 874) | defp cleanup_issue_workspace(identifier, worker_host \\ nil) method cleanup_issue_workspace (line 880) | defp cleanup_issue_workspace(_identifier, _worker_host), do: :ok method run_terminal_workspace_cleanup (line 882) | defp run_terminal_workspace_cleanup do method notify_dashboard (line 899) | defp notify_dashboard do method handle_active_retry (line 903) | defp handle_active_retry(state, issue, attempt, metadata) do method release_issue_claim (line 924) | defp release_issue_claim(%State{} = state, issue_id) do method failure_retry_delay (line 936) | defp failure_retry_delay(attempt) do method normalize_retry_attempt (line 942) | defp normalize_retry_attempt(_attempt), do: 0 method next_retry_attempt_from_running (line 944) | defp next_retry_attempt_from_running(running_entry) do method pick_retry_identifier (line 951) | defp pick_retry_identifier(issue_id, previous_retry, metadata) do method pick_retry_error (line 955) | defp pick_retry_error(previous_retry, metadata) do method pick_retry_worker_host (line 959) | defp pick_retry_worker_host(previous_retry, metadata) do method pick_retry_workspace_path (line 963) | defp pick_retry_workspace_path(previous_retry, metadata) do method maybe_put_runtime_value (line 967) | defp maybe_put_runtime_value(running_entry, _key, nil), do: running_entry method select_worker_host (line 973) | defp select_worker_host(%State{} = state, preferred_worker_host) do method preferred_worker_host_available? (line 999) | defp preferred_worker_host_available?(_preferred_worker_host, _hosts),... method worker_slots_available? (line 1017) | defp worker_slots_available?(%State{} = state) do method worker_slots_available? (line 1021) | defp worker_slots_available?(%State{} = state, preferred_worker_host) do method find_issue_id_for_ref (line 1045) | defp find_issue_id_for_ref(running, ref) do method running_entry_session_id (line 1055) | defp running_entry_session_id(_running_entry), do: "n/a" method issue_context (line 1057) | defp issue_context(%Issue{id: issue_id, identifier: identifier}) do method available_slots (line 1061) | defp available_slots(%State{} = state) do method request_refresh (line 1070) | def request_refresh do method request_refresh (line 1075) | def request_refresh(server) do method snapshot (line 1084) | def snapshot, do: snapshot(__MODULE__, 15_000) method snapshot (line 1087) | def snapshot(server, timeout) do method handle_call (line 1101) | def handle_call(:snapshot, _from, state) do method handle_call (line 1157) | def handle_call(:request_refresh, _from, state) do method integrate_codex_update (line 1172) | defp integrate_codex_update(running_entry, %{event: event, timestamp: ... method codex_app_server_pid_for_update (line 1213) | defp codex_app_server_pid_for_update(existing, _update), do: existing method session_id_for_update (line 1218) | defp session_id_for_update(existing, _update), do: existing method turn_count_for_update (line 1236) | defp turn_count_for_update(_existing_count, _existing_session_id, _upd... method summarize_codex_update (line 1238) | defp summarize_codex_update(update) do method schedule_poll_cycle_start (line 1262) | defp schedule_poll_cycle_start do method next_poll_in_ms (line 1267) | defp next_poll_in_ms(nil, _now_ms), do: nil method pop_running_entry (line 1273) | defp pop_running_entry(state, issue_id) do method record_session_completion_totals (line 1294) | defp record_session_completion_totals(state, _running_entry), do: state method refresh_runtime_config (line 1296) | defp refresh_runtime_config(%State{} = state) do method retry_candidate_issue? (line 1306) | defp retry_candidate_issue?(%Issue{} = issue, terminal_states) do method dispatch_slots_available? (line 1311) | defp dispatch_slots_available?(%Issue{} = issue, %State{} = state) do method apply_codex_token_delta (line 1323) | defp apply_codex_token_delta(state, _token_delta), do: state method apply_codex_rate_limits (line 1335) | defp apply_codex_rate_limits(state, _update), do: state method apply_token_delta (line 1337) | defp apply_token_delta(codex_totals, token_delta) do method extract_token_delta (line 1353) | defp extract_token_delta(running_entry, %{event: _, timestamp: _} = up... method compute_token_delta (line 1390) | defp compute_token_delta(running_entry, token_key, usage, reported_key... method extract_token_usage (line 1407) | defp extract_token_usage(update) do method extract_rate_limits (line 1422) | defp extract_rate_limits(update) do method absolute_token_usage_from_payload (line 1446) | defp absolute_token_usage_from_payload(_payload), do: nil method turn_completed_usage_from_payload (line 1462) | defp turn_completed_usage_from_payload(_payload), do: nil method rate_limits_from_payload (line 1483) | defp rate_limits_from_payload(_payload), do: nil method rate_limits_map? (line 1529) | defp rate_limits_map?(_payload), do: false method explicit_map_at_paths (line 1539) | defp explicit_map_at_paths(_payload, _paths), do: nil method map_at_path (line 1551) | defp map_at_path(_payload, _path), do: nil method integer_token_map? (line 1553) | defp integer_token_map?(payload) do method get_token_usage (line 1584) | defp get_token_usage(usage, :input), method get_token_usage (line 1598) | defp get_token_usage(usage, :output), method get_token_usage (line 1613) | defp get_token_usage(usage, :total), method payload_get (line 1628) | defp payload_get(payload, field), do: map_integer_value(payload, field) method map_integer_value (line 1630) | defp map_integer_value(payload, field) do method running_seconds (line 1639) | defp running_seconds(%DateTime{} = started_at, %DateTime{} = now) do method running_seconds (line 1643) | defp running_seconds(_started_at, _now), do: 0 method integer_like (line 1654) | defp integer_like(_value), do: nil class State (line 24) | defmodule State FILE: elixir/lib/symphony_elixir/path_safety.ex class SymphonyElixir.PathSafety (line 1) | defmodule SymphonyElixir.PathSafety method resolve_segments (line 23) | defp resolve_segments(root, resolved_segments, []), do: {:ok, join_pat... method resolve_segments (line 25) | defp resolve_segments(root, resolved_segments, [segment | rest]) do FILE: elixir/lib/symphony_elixir/prompt_builder.ex class SymphonyElixir.PromptBuilder (line 1) | defmodule SymphonyElixir.PromptBuilder method build_prompt (line 11) | def build_prompt(issue, opts \\ []) do method prompt_template! (line 28) | defp prompt_template!({:ok, %{prompt_template: prompt}}), do: default_... method prompt_template! (line 30) | defp prompt_template!({:error, reason}) do method to_solid_value (line 48) | defp to_solid_value(%DateTime{} = value), do: DateTime.to_iso8601(value) method to_solid_value (line 49) | defp to_solid_value(%NaiveDateTime{} = value), do: NaiveDateTime.to_is... method to_solid_value (line 50) | defp to_solid_value(%Date{} = value), do: Date.to_iso8601(value) method to_solid_value (line 51) | defp to_solid_value(%Time{} = value), do: Time.to_iso8601(value) method to_solid_value (line 52) | defp to_solid_value(%_{} = value), do: value |> Map.from_struct() |> t... method to_solid_value (line 55) | defp to_solid_value(value), do: value FILE: elixir/lib/symphony_elixir/specs_check.ex class SymphonyElixir.SpecsCheck (line 1) | defmodule SymphonyElixir.SpecsCheck method missing_public_specs (line 13) | def missing_public_specs(paths, opts \\ []) do method finding_identifier (line 26) | def finding_identifier(%{module: module, name: name, arity: arity}) do method collect_elixir_files (line 30) | defp collect_elixir_files(path) do method file_findings (line 43) | defp file_findings(file, exemptions) do method module_nodes (line 60) | defp module_nodes(ast) do method find_missing_specs (line 73) | defp find_missing_specs(body, module_name, file, exemptions) do method initial_state (line 82) | defp initial_state do method consume_form (line 86) | defp consume_form({:@, _, [{:spec, _, spec_nodes}]}, state, _module_na... method consume_form (line 95) | defp consume_form({:@, _, [{:impl, _, _}]}, state, _module_name, _file... method consume_form (line 99) | defp consume_form({:@, _, _}, state, _module_name, _file, _exemptions)... method consume_form (line 101) | defp consume_form({:def, meta, [head_ast, _]} = _form, state, module_n... method consume_form (line 132) | defp consume_form({:defp, _, _}, state, _module_name, _file, _exemptio... method consume_form (line 136) | defp consume_form(_form, state, _module_name, _file, _exemptions) do method compliant? (line 140) | defp compliant?(finding, state, exemptions) do method normalize_block (line 148) | defp normalize_block({:__block__, _, forms}), do: forms method normalize_block (line 149) | defp normalize_block(form), do: [form] method extract_spec_identifiers (line 151) | defp extract_spec_identifiers({:"::", _, [head, _return_type]}) do method extract_spec_identifiers (line 158) | defp extract_spec_identifiers({:when, _, [{:"::", _, [head, _return_ty... method extract_spec_identifiers (line 165) | defp extract_spec_identifiers(_), do: [] method spec_head_to_identifier (line 167) | defp spec_head_to_identifier({:when, _, [inner | _guards]}), do: spec_... method spec_head_to_identifier (line 170) | defp spec_head_to_identifier(_), do: nil method def_head_to_identifier (line 172) | defp def_head_to_identifier({:when, _, [head | _guards]}), do: def_hea... FILE: elixir/lib/symphony_elixir/ssh.ex class SymphonyElixir.SSH (line 1) | defmodule SymphonyElixir.SSH method ssh_executable (line 34) | defp ssh_executable do method ssh_args (line 41) | defp ssh_args(host, command) do method maybe_put_line_option (line 51) | defp maybe_put_line_option(port_opts, nil), do: port_opts method maybe_put_line_option (line 52) | defp maybe_put_line_option(port_opts, line_bytes), do: Keyword.put(por... method maybe_put_config (line 54) | defp maybe_put_config(args) do method maybe_put_port (line 64) | defp maybe_put_port(args, nil), do: args method maybe_put_port (line 65) | defp maybe_put_port(args, port), do: args ++ ["-p", port] FILE: elixir/lib/symphony_elixir/status_dashboard.ex class SymphonyElixir.StatusDashboard (line 1) | defmodule SymphonyElixir.StatusDashboard method start_link (line 78) | def start_link(opts \\ []) do method notify_update (line 84) | def notify_update(server \\ __MODULE__) do method init (line 98) | def init(opts) do method render_offline_status (line 130) | def render_offline_status do method handle_info (line 148) | def handle_info(:tick, %{enabled: true} = state) do method handle_info (line 155) | def handle_info(:refresh, %{enabled: true} = state), do: {:noreply, ma... method handle_info (line 156) | def handle_info(:refresh, state), do: {:noreply, state} method handle_info (line 158) | def handle_info({:flush_render, timer_ref}, %{enabled: true, flush_tim... method handle_info (line 176) | def handle_info({:flush_render, _timer_ref}, state), do: {:noreply, st... method handle_info (line 177) | def handle_info(:tick, state), do: {:noreply, state} method refresh_runtime_config (line 179) | defp refresh_runtime_config(%__MODULE__{} = state) do method schedule_tick (line 190) | defp schedule_tick(refresh_ms, true), do: Process.send_after(self(), :... method schedule_tick (line 191) | defp schedule_tick(_refresh_ms, false), do: :ok method maybe_render (line 193) | defp maybe_render(state) do method maybe_enqueue_render (line 233) | defp maybe_enqueue_render(state, content, now_ms) do method maybe_update_snapshot_fingerprint (line 246) | defp maybe_update_snapshot_fingerprint(state, snapshot_data) do method periodic_rerender_due? (line 254) | defp periodic_rerender_due?(%{last_rendered_at_ms: nil}, _now_ms), do:... method periodic_rerender_due? (line 261) | defp periodic_rerender_due?(_state, _now_ms), do: false method render_now? (line 263) | defp render_now?(%{last_rendered_at_ms: nil, flush_timer_ref: nil}, _n... method render_now? (line 270) | defp render_now?(_state, _now_ms), do: false method schedule_flush_render (line 275) | defp schedule_flush_render(state, now_ms) do method flush_delay_ms (line 282) | defp flush_delay_ms(%{last_rendered_at_ms: nil}, _now_ms), do: 1 method flush_delay_ms (line 284) | defp flush_delay_ms( method render_content (line 292) | defp render_content(state, content, now_ms) do method snapshot_with_samples (line 308) | defp snapshot_with_samples(token_samples, now_ms) do method format_snapshot_content (line 333) | defp format_snapshot_content(snapshot_data, tps, terminal_columns_over... method format_project_link_lines (line 395) | defp format_project_link_lines do method format_project_refresh_line (line 416) | defp format_project_refresh_line(%{checking?: true}) do method format_project_refresh_line (line 426) | defp format_project_refresh_line(_) do method linear_project_url (line 430) | defp linear_project_url(project_slug), do: "https://linear.app/project... method dashboard_url (line 432) | defp dashboard_url do method dashboard_url (line 436) | defp dashboard_url(_host, nil, _bound_port), do: nil method dashboard_url (line 438) | defp dashboard_url(host, configured_port, bound_port) do method render_to_terminal (line 468) | defp render_to_terminal(content) do method update_token_samples (line 477) | defp update_token_samples(samples, now_ms, total_tokens) do method prune_samples (line 481) | defp prune_samples(samples, now_ms) do method prune_graph_samples (line 486) | defp prune_graph_samples(samples, now_ms) do method rolling_tps (line 493) | def rolling_tps(samples, now_ms, current_tokens) do method throttled_tps (line 521) | def throttled_tps(last_second, last_value, now_ms, token_samples, curr... method format_timestamp_for_test (line 533) | def format_timestamp_for_test(%DateTime{} = datetime), do: format_time... method format_snapshot_content_for_test (line 537) | def format_snapshot_content_for_test(snapshot_data, tps), do: format_s... method format_snapshot_content_for_test (line 541) | def format_snapshot_content_for_test(snapshot_data, tps, terminal_colu... method dashboard_url_for_test (line 547) | def dashboard_url_for_test(host, configured_port, bound_port), method snapshot_payload (line 550) | defp snapshot_payload do method format_running_rows (line 576) | defp format_running_rows(running, running_event_width) do method format_running_summary (line 590) | defp format_running_summary(running_entry, running_event_width) do method format_running_summary_for_test (line 637) | def format_running_summary_for_test(running_entry, terminal_columns \\... method format_tps_for_test (line 642) | def format_tps_for_test(value), do: format_tps(value) method tps_graph_for_test (line 646) | def tps_graph_for_test(samples, now_ms, current_tokens), do: tps_graph... method format_retry_rows (line 648) | defp format_retry_rows(retrying) do method format_retry_summary (line 659) | defp format_retry_summary(retry_entry) do method next_in_words (line 681) | defp next_in_words(_), do: "n/a" method format_retry_error (line 702) | defp format_retry_error(_), do: "" method format_runtime_seconds (line 711) | defp format_runtime_seconds(_), do: "0m 0s" method format_runtime_and_turns (line 717) | defp format_runtime_and_turns(seconds, _turn_count), do: format_runtim... method format_count (line 719) | defp format_count(nil), do: "0" method format_count (line 737) | defp format_count(value), do: to_string(value) method running_table_header_row (line 739) | defp running_table_header_row(running_event_width) do method running_table_separator_row (line 755) | defp running_table_separator_row(running_event_width) do method running_event_width (line 768) | defp running_event_width(terminal_columns) do method fixed_running_width (line 777) | defp fixed_running_width do method terminal_columns (line 786) | defp terminal_columns do method terminal_columns_from_env (line 796) | defp terminal_columns_from_env do method format_cell (line 809) | defp format_cell(value, width, align \\ :left) do method truncate_plain (line 824) | defp truncate_plain(value, width) do method compact_session_id (line 832) | defp compact_session_id(nil), do: "n/a" method compact_session_id (line 835) | defp compact_session_id(session_id) do method prepend (line 854) | defp prepend("", value), do: value method prepend (line 855) | defp prepend(prefix, value), do: prefix <> value method tps_graph (line 864) | defp tps_graph(samples, now_ms, current_tokens) do method in_bucket? (line 917) | defp in_bucket?(timestamp, bucket_start, bucket_end, true), method in_bucket? (line 920) | defp in_bucket?(timestamp, bucket_start, bucket_end, false), method format_rate_limits (line 923) | defp format_rate_limits(nil), do: colorize("unavailable", @ansi_gray) method format_rate_limits (line 943) | defp format_rate_limits(other) do method format_rate_limit_bucket (line 950) | defp format_rate_limit_bucket(nil), do: "n/a" method format_rate_limit_bucket (line 997) | defp format_rate_limit_bucket(other), do: to_string(other) method format_rate_limit_credits (line 999) | defp format_rate_limit_credits(nil), do: "credits n/a" method format_rate_limit_credits (line 1021) | defp format_rate_limit_credits(other), do: "credits #{to_string(other)}" method format_reset_value (line 1025) | defp format_reset_value(value), do: to_string(value) method map_value (line 1039) | defp map_value(_map, _keys), do: nil method integer_like? (line 1042) | defp integer_like?(_value), do: false method status_dot (line 1044) | defp status_dot(color_code) do method snapshot_total_tokens (line 1052) | defp snapshot_total_tokens(_snapshot_data), do: 0 method format_timestamp (line 1054) | defp format_timestamp(datetime) do method normalize_status_lines (line 1060) | defp normalize_status_lines(content) do method closing_border (line 1064) | defp closing_border, do: "╰─" method colorize (line 1066) | defp colorize(value, code) do method humanize_codex_message (line 1072) | def humanize_codex_message(nil), do: "no codex message yet" method humanize_codex_message (line 1074) | def humanize_codex_message(%{event: event, message: message}) do method humanize_codex_message (line 1081) | def humanize_codex_message(%{message: message}) do method humanize_codex_message (line 1088) | def humanize_codex_message(message) do method summarize_message (line 1095) | defp summarize_message(message), do: humanize_codex_message(message) method humanize_codex_event (line 1097) | defp humanize_codex_event(:session_started, _message, payload) do method humanize_codex_event (line 1107) | defp humanize_codex_event(:turn_input_required, _message, _payload), d... method humanize_codex_event (line 1109) | defp humanize_codex_event(:approval_auto_approved, message, payload) do method humanize_codex_event (line 1127) | defp humanize_codex_event(:tool_input_auto_answered, message, payload) do method humanize_codex_event (line 1139) | defp humanize_codex_event(:tool_call_completed, _message, payload), method humanize_codex_event (line 1142) | defp humanize_codex_event(:tool_call_failed, _message, payload), method humanize_codex_event (line 1145) | defp humanize_codex_event(:unsupported_tool_call, _message, payload), method humanize_codex_event (line 1148) | defp humanize_codex_event(:turn_ended_with_error, message, _payload), ... method humanize_codex_event (line 1149) | defp humanize_codex_event(:startup_failed, message, _payload), do: "st... method humanize_codex_event (line 1150) | defp humanize_codex_event(:turn_failed, _message, payload), do: humani... method humanize_codex_event (line 1151) | defp humanize_codex_event(:turn_cancelled, _message, _payload), do: "t... method humanize_codex_event (line 1152) | defp humanize_codex_event(:malformed, _message, _payload), do: "malfor... method humanize_codex_event (line 1153) | defp humanize_codex_event(_event, _message, _payload), do: nil method unwrap_codex_message_payload (line 1155) | defp unwrap_codex_message_payload(%{} = message) do method unwrap_codex_message_payload (line 1164) | defp unwrap_codex_message_payload(message), do: message method humanize_codex_payload (line 1166) | defp humanize_codex_payload(%{} = payload) do method humanize_codex_payload (line 1196) | defp humanize_codex_payload(payload) do method humanize_codex_method (line 1211) | defp humanize_codex_method("thread/started", payload) do method humanize_codex_method (line 1221) | defp humanize_codex_method("turn/started", payload) do method humanize_codex_method (line 1231) | defp humanize_codex_method("turn/completed", payload) do method humanize_codex_method (line 1253) | defp humanize_codex_method("turn/failed", payload) do method humanize_codex_method (line 1261) | defp humanize_codex_method("turn/cancelled", _payload), do: "turn canc... method humanize_codex_method (line 1263) | defp humanize_codex_method("turn/diff/updated", payload) do method humanize_codex_method (line 1277) | defp humanize_codex_method("turn/plan/updated", payload) do method humanize_codex_method (line 1294) | defp humanize_codex_method("thread/tokenUsage/updated", payload) do method humanize_codex_method (line 1306) | defp humanize_codex_method("item/started", payload), do: humanize_item... method humanize_codex_method (line 1307) | defp humanize_codex_method("item/completed", payload), do: humanize_it... method humanize_codex_method (line 1309) | defp humanize_codex_method("item/agentMessage/delta", payload), method humanize_codex_method (line 1312) | defp humanize_codex_method("item/plan/delta", payload), method humanize_codex_method (line 1315) | defp humanize_codex_method("item/reasoning/summaryTextDelta", payload), method humanize_codex_method (line 1318) | defp humanize_codex_method("item/reasoning/summaryPartAdded", payload), method humanize_codex_method (line 1321) | defp humanize_codex_method("item/reasoning/textDelta", payload), method humanize_codex_method (line 1324) | defp humanize_codex_method("item/commandExecution/outputDelta", payload), method humanize_codex_method (line 1327) | defp humanize_codex_method("item/fileChange/outputDelta", payload), method humanize_codex_method (line 1330) | defp humanize_codex_method("item/commandExecution/requestApproval", pa... method humanize_codex_method (line 1340) | defp humanize_codex_method("item/fileChange/requestApproval", payload) do method humanize_codex_method (line 1350) | defp humanize_codex_method("item/tool/requestUserInput", payload) do method humanize_codex_method (line 1364) | defp humanize_codex_method("tool/requestUserInput", payload), method humanize_codex_method (line 1367) | defp humanize_codex_method("account/updated", payload) do method humanize_codex_method (line 1376) | defp humanize_codex_method("account/rateLimits/updated", payload) do method humanize_codex_method (line 1384) | defp humanize_codex_method("account/chatgptAuthTokens/refresh", _paylo... method humanize_codex_method (line 1386) | defp humanize_codex_method("item/tool/call", payload) do method humanize_codex_method (line 1396) | defp humanize_codex_method(<<"codex/event/", suffix::binary>>, payload... method humanize_codex_method (line 1400) | defp humanize_codex_method(method, payload) do method humanize_dynamic_tool_event (line 1412) | defp humanize_dynamic_tool_event(base, payload) do method dynamic_tool_name (line 1428) | defp dynamic_tool_name(payload) do method humanize_item_lifecycle (line 1435) | defp humanize_item_lifecycle(state, payload) do method humanize_codex_wrapper_event (line 1454) | defp humanize_codex_wrapper_event("mcp_startup_update", payload) do method humanize_codex_wrapper_event (line 1468) | defp humanize_codex_wrapper_event("mcp_startup_complete", _payload), d... method humanize_codex_wrapper_event (line 1469) | defp humanize_codex_wrapper_event("task_started", _payload), do: "task... method humanize_codex_wrapper_event (line 1470) | defp humanize_codex_wrapper_event("user_message", _payload), do: "user... method humanize_codex_wrapper_event (line 1472) | defp humanize_codex_wrapper_event("item_started", payload) do method humanize_codex_wrapper_event (line 1480) | defp humanize_codex_wrapper_event("item_completed", payload) do method humanize_codex_wrapper_event (line 1488) | defp humanize_codex_wrapper_event("agent_message_delta", payload), method humanize_codex_wrapper_event (line 1491) | defp humanize_codex_wrapper_event("agent_message_content_delta", paylo... method humanize_codex_wrapper_event (line 1494) | defp humanize_codex_wrapper_event("agent_reasoning_delta", payload), method humanize_codex_wrapper_event (line 1497) | defp humanize_codex_wrapper_event("reasoning_content_delta", payload), method humanize_codex_wrapper_event (line 1500) | defp humanize_codex_wrapper_event("agent_reasoning_section_break", _pa... method humanize_codex_wrapper_event (line 1501) | defp humanize_codex_wrapper_event("agent_reasoning", payload), do: hum... method humanize_codex_wrapper_event (line 1502) | defp humanize_codex_wrapper_event("turn_diff", _payload), do: "turn di... method humanize_codex_wrapper_event (line 1503) | defp humanize_codex_wrapper_event("exec_command_begin", payload), do: ... method humanize_codex_wrapper_event (line 1504) | defp humanize_codex_wrapper_event("exec_command_end", payload), do: hu... method humanize_codex_wrapper_event (line 1505) | defp humanize_codex_wrapper_event("exec_command_output_delta", _payloa... method humanize_codex_wrapper_event (line 1506) | defp humanize_codex_wrapper_event("mcp_tool_call_begin", _payload), do... method humanize_codex_wrapper_event (line 1507) | defp humanize_codex_wrapper_event("mcp_tool_call_end", _payload), do: ... method humanize_codex_wrapper_event (line 1509) | defp humanize_codex_wrapper_event("token_count", payload) do method humanize_codex_wrapper_event (line 1518) | defp humanize_codex_wrapper_event(other, payload) do method humanize_exec_command_begin (line 1530) | defp humanize_exec_command_begin(payload) do method humanize_exec_command_end (line 1546) | defp humanize_exec_command_end(payload) do method format_usage_counts (line 1613) | defp format_usage_counts(_usage), do: nil method append_usage_part (line 1616) | defp append_usage_part(parts, label, value), do: parts ++ ["#{label} #... method format_rate_limits_summary (line 1618) | defp format_rate_limits_summary(nil), do: "n/a" method format_rate_limits_summary (line 1635) | defp format_rate_limits_summary(_rate_limits), do: "n/a" method format_rate_limit_bucket_summary (line 1653) | defp format_rate_limit_bucket_summary(_bucket), do: nil method format_error_value (line 1657) | defp format_error_value(error), do: inspect(error, limit: 10) method format_reason (line 1671) | defp format_reason(other), do: format_error_value(other) method humanize_streaming_event (line 1673) | defp humanize_streaming_event(label, payload) do method humanize_reasoning_update (line 1680) | defp humanize_reasoning_update(payload) do method extract_reasoning_focus (line 1687) | defp extract_reasoning_focus(payload) do method extract_delta_preview (line 1698) | defp extract_delta_preview(payload) do method extract_command (line 1711) | defp extract_command(payload) do method fallback_command (line 1718) | defp fallback_command(nil, payload) do method fallback_command (line 1725) | defp fallback_command(command, _payload), do: command method normalize_command (line 1727) | defp normalize_command(%{} = command) do method normalize_command (line 1750) | defp normalize_command(_command), do: nil method humanize_item_type (line 1752) | defp humanize_item_type(nil), do: "item" method humanize_item_type (line 1763) | defp humanize_item_type(type), do: to_string(type) method humanize_status (line 1773) | defp humanize_status(_status), do: nil method short_id (line 1777) | defp short_id(_id), do: nil method append_if_present (line 1780) | defp append_if_present(list, _value), do: list method wrapper_payload_type (line 1782) | defp wrapper_payload_type(payload) do method inline_text (line 1795) | defp inline_text(other), do: other |> to_string() |> inline_text() method parse_integer (line 1806) | defp parse_integer(_value), do: nil method token_usage_paths (line 1808) | defp token_usage_paths do method delta_paths (line 1819) | defp delta_paths do method reasoning_focus_paths (line 1858) | defp reasoning_focus_paths do method extract_first_path (line 1887) | defp extract_first_path(payload, paths) do method map_path (line 1901) | defp map_path(_data, _path), do: nil method alternate_key (line 1926) | defp alternate_key(key), do: key method truncate (line 1932) | defp truncate(value, _max), do: value method dashboard_enabled? (line 1934) | defp dashboard_enabled? do method keyword_override (line 1946) | defp keyword_override(opts, key) do method resolve_override (line 1950) | defp resolve_override(nil, default), do: default method resolve_override (line 1951) | defp resolve_override(override, _default), do: override FILE: elixir/lib/symphony_elixir/tracker.ex class SymphonyElixir.Tracker (line 1) | defmodule SymphonyElixir.Tracker method fetch_candidate_issues (line 15) | def fetch_candidate_issues do method fetch_issues_by_states (line 20) | def fetch_issues_by_states(states) do method fetch_issue_states_by_ids (line 25) | def fetch_issue_states_by_ids(issue_ids) do method create_comment (line 30) | def create_comment(issue_id, body) do method update_issue_state (line 35) | def update_issue_state(issue_id, state_name) do method adapter (line 40) | def adapter do FILE: elixir/lib/symphony_elixir/tracker/memory.ex class SymphonyElixir.Tracker.Memory (line 1) | defmodule SymphonyElixir.Tracker.Memory method fetch_candidate_issues (line 11) | def fetch_candidate_issues do method fetch_issues_by_states (line 16) | def fetch_issues_by_states(state_names) do method fetch_issue_states_by_ids (line 29) | def fetch_issue_states_by_ids(issue_ids) do method create_comment (line 39) | def create_comment(issue_id, body) do method update_issue_state (line 45) | def update_issue_state(issue_id, state_name) do method configured_issues (line 50) | defp configured_issues do method issue_entries (line 54) | defp issue_entries do method send_event (line 58) | defp send_event(message) do method normalize_state (line 71) | defp normalize_state(_state), do: "" FILE: elixir/lib/symphony_elixir/workflow.ex class SymphonyElixir.Workflow (line 1) | defmodule SymphonyElixir.Workflow method workflow_file_path (line 11) | def workflow_file_path do method clear_workflow_file_path (line 24) | def clear_workflow_file_path do method current (line 37) | def current do method load (line 48) | def load do method parse (line 63) | defp parse(content) do method split_front_matter (line 85) | defp split_front_matter(content) do method front_matter_yaml_to_map (line 102) | defp front_matter_yaml_to_map(lines) do method maybe_reload_store (line 116) | defp maybe_reload_store do FILE: elixir/lib/symphony_elixir/workflow_store.ex class SymphonyElixir.WorkflowStore (line 1) | defmodule SymphonyElixir.WorkflowStore method start_link (line 20) | def start_link(opts \\ []) do method current (line 25) | def current do method force_reload (line 36) | def force_reload do method init (line 50) | def init(_opts) do method handle_call (line 62) | def handle_call(:current, _from, %State{} = state) do method handle_call (line 72) | def handle_call(:force_reload, _from, %State{} = state) do method handle_info (line 83) | def handle_info(:poll, %State{} = state) do method schedule_poll (line 92) | defp schedule_poll do method reload_state (line 96) | defp reload_state(%State{} = state) do method reload_path (line 106) | defp reload_path(path, state) do method reload_current_path (line 117) | defp reload_current_path(path, state) do method load_state (line 131) | defp load_state(path) do method log_reload_error (line 150) | defp log_reload_error(path, reason) do class State (line 13) | defmodule State FILE: elixir/lib/symphony_elixir/workspace.ex class SymphonyElixir.Workspace (line 1) | defmodule SymphonyElixir.Workspace method create_for_issue (line 15) | def create_for_issue(issue_or_identifier, worker_host \\ nil) do method ensure_workspace (line 34) | defp ensure_workspace(workspace, nil) do method create_workspace (line 81) | defp create_workspace(workspace) do method remove (line 88) | def remove(workspace), do: remove(workspace, nil) method remove (line 91) | def remove(workspace, nil) do method remove_issue_workspaces (line 131) | def remove_issue_workspaces(identifier), do: remove_issue_workspaces(i... method remove_issue_workspaces (line 162) | def remove_issue_workspaces(_identifier, _worker_host) do method safe_identifier (line 206) | defp safe_identifier(identifier) do method maybe_run_after_create_hook (line 210) | defp maybe_run_after_create_hook(workspace, issue_context, created?, w... method maybe_run_before_remove_hook (line 228) | defp maybe_run_before_remove_hook(workspace, nil) do method ignore_hook_failure (line 291) | defp ignore_hook_failure(:ok), do: :ok method ignore_hook_failure (line 292) | defp ignore_hook_failure({:error, _reason}), do: :ok method run_hook (line 294) | defp run_hook(command, workspace, issue_context, hook_name, nil) do method handle_hook_command_result (line 334) | defp handle_hook_command_result({_output, 0}, _workspace, _issue_id, _... method handle_hook_command_result (line 338) | defp handle_hook_command_result({output, status}, workspace, issue_con... method sanitize_hook_output_for_log (line 346) | defp sanitize_hook_output_for_log(output, max_bytes \\ 2_048) do method parse_remote_workspace_output (line 412) | defp parse_remote_workspace_output(output) do method worker_host_for_log (line 456) | defp worker_host_for_log(nil), do: "local" method worker_host_for_log (line 457) | defp worker_host_for_log(worker_host), do: worker_host method issue_context (line 459) | defp issue_context(%{id: issue_id, identifier: identifier}) do method issue_context (line 473) | defp issue_context(_identifier) do method issue_log_context (line 480) | defp issue_log_context(%{issue_id: issue_id, issue_identifier: issue_i... FILE: elixir/lib/symphony_elixir_web/components/layouts.ex class SymphonyElixirWeb.Layouts (line 1) | defmodule SymphonyElixirWeb.Layouts method root (line 9) | def root(assigns) do method app (line 49) | def app(assigns) do FILE: elixir/lib/symphony_elixir_web/controllers/observability_api_controller.ex class SymphonyElixirWeb.ObservabilityApiController (line 1) | defmodule SymphonyElixirWeb.ObservabilityApiController method state (line 12) | def state(conn, _params) do method issue (line 17) | def issue(conn, %{"issue_identifier" => issue_identifier}) do method refresh (line 28) | def refresh(conn, _params) do method method_not_allowed (line 41) | def method_not_allowed(conn, _params) do method not_found (line 46) | def not_found(conn, _params) do method error_response (line 50) | defp error_response(conn, status, code, message) do method orchestrator (line 56) | defp orchestrator do method snapshot_timeout_ms (line 60) | defp snapshot_timeout_ms do FILE: elixir/lib/symphony_elixir_web/controllers/static_asset_controller.ex class SymphonyElixirWeb.StaticAssetController (line 1) | defmodule SymphonyElixirWeb.StaticAssetController method dashboard_css (line 12) | def dashboard_css(conn, _params), do: serve(conn, "/dashboard.css") method phoenix_html_js (line 15) | def phoenix_html_js(conn, _params), do: serve(conn, "/vendor/phoenix_h... method phoenix_js (line 18) | def phoenix_js(conn, _params), do: serve(conn, "/vendor/phoenix/phoeni... method phoenix_live_view_js (line 21) | def phoenix_live_view_js(conn, _params), do: serve(conn, "/vendor/phoe... method serve (line 23) | defp serve(conn, path) do FILE: elixir/lib/symphony_elixir_web/endpoint.ex class SymphonyElixirWeb.Endpoint (line 1) | defmodule SymphonyElixirWeb.Endpoint FILE: elixir/lib/symphony_elixir_web/error_html.ex class SymphonyElixirWeb.ErrorHTML (line 1) | defmodule SymphonyElixirWeb.ErrorHTML method render (line 5) | def render(template, _assigns) do FILE: elixir/lib/symphony_elixir_web/error_json.ex class SymphonyElixirWeb.ErrorJSON (line 1) | defmodule SymphonyElixirWeb.ErrorJSON method render (line 5) | def render(template, _assigns) do FILE: elixir/lib/symphony_elixir_web/live/dashboard_live.ex class SymphonyElixirWeb.DashboardLive (line 1) | defmodule SymphonyElixirWeb.DashboardLive method mount (line 12) | def mount(_params, _session, socket) do method handle_info (line 27) | def handle_info(:runtime_tick, socket) do method handle_info (line 33) | def handle_info(:observability_updated, socket) do method render (line 41) | def render(assigns) do method load_payload (line 252) | defp load_payload do method orchestrator (line 256) | defp orchestrator do method snapshot_timeout_ms (line 260) | defp snapshot_timeout_ms do method completed_runtime_seconds (line 264) | defp completed_runtime_seconds(payload) do method total_runtime_seconds (line 268) | defp total_runtime_seconds(payload, now) do method format_runtime_and_turns (line 279) | defp format_runtime_and_turns(started_at, _turn_count, now), method runtime_seconds_from_started_at (line 289) | defp runtime_seconds_from_started_at(%DateTime{} = started_at, %DateTi... method runtime_seconds_from_started_at (line 300) | defp runtime_seconds_from_started_at(_started_at, _now), do: 0 method format_int (line 310) | defp format_int(_value), do: "n/a" method state_badge_class (line 312) | defp state_badge_class(state) do method schedule_runtime_tick (line 324) | defp schedule_runtime_tick do method pretty_value (line 328) | defp pretty_value(nil), do: "n/a" method pretty_value (line 329) | defp pretty_value(value), do: inspect(value, pretty: true, limit: :inf... FILE: elixir/lib/symphony_elixir_web/observability_pubsub.ex class SymphonyElixirWeb.ObservabilityPubSub (line 1) | defmodule SymphonyElixirWeb.ObservabilityPubSub method subscribe (line 11) | def subscribe do method broadcast_update (line 16) | def broadcast_update do FILE: elixir/lib/symphony_elixir_web/presenter.ex class SymphonyElixirWeb.Presenter (line 1) | defmodule SymphonyElixirWeb.Presenter method state_payload (line 9) | def state_payload(orchestrator, snapshot_timeout_ms) do method refresh_payload (line 53) | def refresh_payload(orchestrator) do method issue_payload_body (line 63) | defp issue_payload_body(issue_identifier, running, retry) do method issue_id_from_entries (line 87) | defp issue_id_from_entries(running, retry), method restart_count (line 90) | defp restart_count(retry), do: max(retry_attempt(retry) - 1, 0) method retry_attempt (line 91) | defp retry_attempt(nil), do: 0 method retry_attempt (line 92) | defp retry_attempt(retry), do: retry.attempt || 0 method issue_status (line 94) | defp issue_status(_running, nil), do: "running" method issue_status (line 95) | defp issue_status(nil, _retry), do: "retrying" method issue_status (line 96) | defp issue_status(_running, _retry), do: "running" method running_entry_payload (line 98) | defp running_entry_payload(entry) do method retry_entry_payload (line 119) | defp retry_entry_payload(entry) do method running_issue_payload (line 131) | defp running_issue_payload(running) do method retry_issue_payload (line 150) | defp retry_issue_payload(retry) do method workspace_path (line 160) | defp workspace_path(issue_identifier, running, retry) do method workspace_host (line 166) | defp workspace_host(running, retry) do method recent_events_payload (line 170) | defp recent_events_payload(running) do method summarize_message (line 181) | defp summarize_message(nil), do: nil method summarize_message (line 182) | defp summarize_message(message), do: StatusDashboard.humanize_codex_me... method due_at_iso8601 (line 191) | defp due_at_iso8601(_due_in_ms), do: nil method iso8601 (line 193) | defp iso8601(%DateTime{} = datetime) do method iso8601 (line 199) | defp iso8601(_datetime), do: nil FILE: elixir/lib/symphony_elixir_web/router.ex class SymphonyElixirWeb.Router (line 1) | defmodule SymphonyElixirWeb.Router FILE: elixir/lib/symphony_elixir_web/static_assets.ex class SymphonyElixirWeb.StaticAssets (line 1) | defmodule SymphonyElixirWeb.StaticAssets FILE: elixir/mix.exs class SymphonyElixir.MixProject (line 1) | defmodule SymphonyElixir.MixProject method project (line 4) | def project do method application (line 56) | def application do method deps (line 64) | defp deps do method aliases (line 82) | defp aliases do method escript (line 90) | defp escript do FILE: elixir/test/mix/tasks/pr_body_check_test.exs class Mix.Tasks.PrBody.CheckTest (line 1) | defmodule Mix.Tasks.PrBody.CheckTest method in_temp_repo (line 319) | defp in_temp_repo(fun) do method write_template! (line 337) | defp write_template!(content) do FILE: elixir/test/mix/tasks/specs_check_task_test.exs class Mix.Tasks.Specs.CheckTaskTest (line 1) | defmodule Mix.Tasks.Specs.CheckTaskTest method in_temp_project (line 93) | defp in_temp_project(fun) do method write_module! (line 108) | defp write_module!(path, source) do FILE: elixir/test/mix/tasks/workspace_before_remove_test.exs class Mix.Tasks.Workspace.BeforeRemoveTest (line 1) | defmodule Mix.Tasks.Workspace.BeforeRemoveTest method with_fake_gh (line 257) | defp with_fake_gh(fun) do method with_fake_gh (line 289) | defp with_fake_gh(script, fun) do method with_fake_gh_and_git (line 293) | defp with_fake_gh_and_git(gh_script, git_script, fun) do method with_fake_binaries (line 297) | defp with_fake_binaries(scripts, fun) do method with_path (line 330) | defp with_path(paths, fun) do method with_env (line 334) | defp with_env(overrides, fun) do method in_temp_dir (line 349) | defp in_temp_dir(fun) do method capture_task_output (line 367) | defp capture_task_output(fun) do FILE: elixir/test/support/snapshot_support.exs class SymphonyElixir.TestSupport.Snapshot (line 1) | defmodule SymphonyElixir.TestSupport.Snapshot method snapshot_path (line 63) | defp snapshot_path(relative_path), do: Path.join(@snapshot_root, relat... method update_snapshots? (line 65) | defp update_snapshots? do method normalize_content (line 72) | defp normalize_content(content) do FILE: elixir/test/support/test_support.exs class SymphonyElixir.TestSupport (line 1) | defmodule SymphonyElixir.TestSupport method write_workflow_file! (line 54) | def write_workflow_file!(path, overrides \\ []) do method restore_env (line 69) | def restore_env(key, nil), do: System.delete_env(key) method restore_env (line 70) | def restore_env(key, value), do: System.put_env(key, value) method stop_default_http_server (line 72) | def stop_default_http_server do method workflow_content (line 91) | defp workflow_content(overrides) do method yaml_value (line 211) | defp yaml_value(true), do: "true" method yaml_value (line 212) | defp yaml_value(false), do: "false" method yaml_value (line 213) | defp yaml_value(nil), do: "null" method yaml_value (line 226) | defp yaml_value(value), do: yaml_value(to_string(value)) method hooks_yaml (line 228) | defp hooks_yaml(nil, nil, nil, nil, timeout_ms), do: "hooks:\n timeou... method hooks_yaml (line 230) | defp hooks_yaml(hook_after_create, hook_before_run, hook_after_run, ho... method worker_yaml (line 247) | defp worker_yaml(ssh_hosts, max_concurrent_agents_per_host) do method observability_yaml (line 258) | defp observability_yaml(enabled, refresh_ms, render_interval_ms) do method server_yaml (line 268) | defp server_yaml(nil, nil), do: nil method server_yaml (line 270) | defp server_yaml(port, host) do method hook_entry (line 280) | defp hook_entry(_name, nil), do: nil FILE: elixir/test/symphony_elixir/app_server_test.exs class SymphonyElixir.AppServerTest (line 1) | defmodule SymphonyElixir.AppServerTest FILE: elixir/test/symphony_elixir/cli_test.exs class SymphonyElixir.CLITest (line 1) | defmodule SymphonyElixir.CLITest FILE: elixir/test/symphony_elixir/core_test.exs class SymphonyElixir.CoreTest (line 1) | defmodule SymphonyElixir.CoreTest method assert_due_in_range (line 753) | defp assert_due_in_range(due_at_ms, min_remaining_ms, max_remaining_ms... method restore_app_env (line 760) | defp restore_app_env(key, nil), do: Application.delete_env(:symphony_e... method restore_app_env (line 761) | defp restore_app_env(key, value), do: Application.put_env(:symphony_el... FILE: elixir/test/symphony_elixir/dynamic_tool_test.exs class SymphonyElixir.Codex.DynamicToolTest (line 1) | defmodule SymphonyElixir.Codex.DynamicToolTest FILE: elixir/test/symphony_elixir/extensions_test.exs class SymphonyElixir.ExtensionsTest (line 1) | defmodule SymphonyElixir.ExtensionsTest method start_test_endpoint (line 675) | defp start_test_endpoint(overrides) do method static_snapshot (line 686) | defp static_snapshot do method wait_for_bound_port (line 719) | defp wait_for_bound_port do method assert_eventually (line 727) | defp assert_eventually(fun, attempts \\ 20) method assert_eventually (line 738) | defp assert_eventually(_fun, 0), do: flunk("condition not met in time") method ensure_workflow_store_running (line 740) | defp ensure_workflow_store_running do class FakeLinearClient (line 12) | defmodule FakeLinearClient method fetch_candidate_issues (line 13) | def fetch_candidate_issues do method fetch_issues_by_states (line 18) | def fetch_issues_by_states(states) do method fetch_issue_states_by_ids (line 23) | def fetch_issue_states_by_ids(issue_ids) do method graphql (line 28) | def graphql(query, variables) do class SlowOrchestrator (line 42) | defmodule SlowOrchestrator method start_link (line 45) | def start_link(opts) do method init (line 49) | def init(:ok), do: {:ok, :ok} method handle_call (line 51) | def handle_call(:snapshot, _from, state) do method handle_call (line 56) | def handle_call(:request_refresh, _from, state) do class StaticOrchestrator (line 61) | defmodule StaticOrchestrator method start_link (line 64) | def start_link(opts) do method init (line 69) | def init(opts), do: {:ok, opts} method handle_call (line 71) | def handle_call(:snapshot, _from, state) do method handle_call (line 75) | def handle_call(:request_refresh, _from, state) do FILE: elixir/test/symphony_elixir/live_e2e_test.exs class SymphonyElixir.LiveE2ETest (line 1) | defmodule SymphonyElixir.LiveE2ETest method fetch_team! (line 133) | defp fetch_team!(team_key) do method completed_project_status! (line 173) | defp completed_project_status! do method create_project! (line 187) | defp create_project!(team_id, name) do method create_issue! (line 193) | defp create_issue!(team_id, project_id, state_id, title) do method issue_completed? (line 241) | defp issue_completed?(%{"state" => %{"type" => type}}), do: type in ["... method issue_completed? (line 242) | defp issue_completed?(_issue), do: false method issue_has_comment? (line 248) | defp issue_has_comment?(_issue, _expected_body), do: false method update_entity (line 250) | defp update_entity(mutation, variables, mutation_name, entity_name) do method live_prompt (line 299) | defp live_prompt(project_slug) do method expected_result (line 391) | defp expected_result(issue_identifier, project_slug) do method expected_comment (line 395) | defp expected_comment(issue_identifier, project_slug) do method receive_runtime_info! (line 399) | defp receive_runtime_info!(issue_id) do method cleanup_live_worker_setup (line 544) | defp cleanup_live_worker_setup(_worker_setup), do: :ok method restart_orchestrator_if_needed (line 546) | defp restart_orchestrator_if_needed do method live_ssh_worker_hosts (line 626) | defp live_ssh_worker_hosts do method shared_remote_home! (line 655) | defp shared_remote_home!(_worker_hosts), do: flunk("expected at least ... method reserve_tcp_ports (line 679) | defp reserve_tcp_ports(0, _seen, ports), do: Enum.reverse(ports) method reserve_tcp_ports (line 681) | defp reserve_tcp_ports(remaining, seen, ports) do method reserve_tcp_port! (line 691) | defp reserve_tcp_port! do method retry_or_flunk_ssh_host (line 794) | defp retry_or_flunk_ssh_host(worker_host, deadline_ms) do FILE: elixir/test/symphony_elixir/log_file_test.exs class SymphonyElixir.LogFileTest (line 1) | defmodule SymphonyElixir.LogFileTest FILE: elixir/test/symphony_elixir/observability_pubsub_test.exs class SymphonyElixir.ObservabilityPubSubTest (line 1) | defmodule SymphonyElixir.ObservabilityPubSubTest FILE: elixir/test/symphony_elixir/orchestrator_status_test.exs class SymphonyElixir.OrchestratorStatusTest (line 1) | defmodule SymphonyElixir.OrchestratorStatusTest method do_wait_for_snapshot (line 1560) | defp do_wait_for_snapshot(pid, predicate, deadline_ms) do method graph_samples_from_rates (line 1575) | defp graph_samples_from_rates(rates_per_bucket) do method graph_samples_for_stability_test (line 1588) | defp graph_samples_for_stability_test(now_ms) do FILE: elixir/test/symphony_elixir/specs_check_test.exs class SymphonyElixir.SpecsCheckTest (line 1) | defmodule SymphonyElixir.SpecsCheckTest method create_tmp_dir (line 80) | defp create_tmp_dir do method write_module! (line 88) | defp write_module!(dir, rel_path, source) do FILE: elixir/test/symphony_elixir/ssh_test.exs class SymphonyElixir.SSHTest (line 1) | defmodule SymphonyElixir.SSHTest method install_fake_ssh! (line 165) | defp install_fake_ssh!(test_root, trace_file, script \\ nil) do method wait_for_trace! (line 185) | defp wait_for_trace!(trace_file, attempts \\ 20) method wait_for_trace! (line 186) | defp wait_for_trace!(trace_file, 0), do: flunk("timed out waiting for ... method wait_for_trace! (line 188) | defp wait_for_trace!(trace_file, attempts) do method restore_env (line 197) | defp restore_env(key, nil), do: System.delete_env(key) method restore_env (line 198) | defp restore_env(key, value), do: System.put_env(key, value) FILE: elixir/test/symphony_elixir/status_dashboard_snapshot_test.exs class SymphonyElixir.StatusDashboardSnapshotTest (line 1) | defmodule SymphonyElixir.StatusDashboardSnapshotTest method render_snapshot (line 197) | defp render_snapshot(snapshot_data, tps) do method running_entry (line 201) | defp running_entry(overrides) do method retry_entry (line 218) | defp retry_entry(overrides) do method turn_started_message (line 231) | defp turn_started_message do method turn_completed_message (line 241) | defp turn_completed_message(status) do method exec_command_message (line 251) | defp exec_command_message(command) do method agent_message_delta (line 261) | defp agent_message_delta(delta) do method token_usage_message (line 271) | defp token_usage_message(input_tokens, output_tokens, total_tokens) do FILE: elixir/test/symphony_elixir/workspace_and_config_test.exs class SymphonyElixir.WorkspaceAndConfigTest (line 1) | defmodule SymphonyElixir.WorkspaceAndConfigTest