├── .codespellignore ├── codex-cli ├── .dockerignore ├── .gitignore └── scripts │ ├── README.md │ └── build_container.sh ├── codex-rs ├── apply-patch │ ├── tests │ │ ├── suite │ │ │ └── mod.rs │ │ └── all.rs │ ├── src │ │ └── main.rs │ └── Cargo.toml ├── tui │ ├── src │ │ ├── resume │ │ │ └── mod.rs │ │ ├── render │ │ │ └── mod.rs │ │ ├── common.rs │ │ ├── onboarding │ │ │ └── mod.rs │ │ ├── snapshots │ │ │ ├── codex_tui__history_cell__tests__single_line_command_compact_when_fits.snap │ │ │ ├── codex_tui__history_cell__tests__coalesced_reads_dedupe_names.snap │ │ │ ├── codex_tui__history_cell__tests__multiline_command_without_wrap_uses_branch_then_eight_spaces.snap │ │ │ ├── codex_tui__status_indicator_widget__tests__renders_truncated.snap │ │ │ ├── codex_tui__history_cell__tests__user_history_cell_wraps_and_prefixes_each_line_snapshot.snap │ │ │ ├── codex_tui__history_cell__tests__plan_update_without_note_snapshot.snap │ │ │ ├── codex_tui__history_cell__tests__coalesces_reads_across_multiple_calls.snap │ │ │ ├── codex_tui__history_cell__tests__coalesces_sequential_reads_within_one_call.snap │ │ │ ├── codex_tui__history_cell__tests__multiline_command_wraps_with_extra_indent_on_subsequent_lines.snap │ │ │ ├── codex_tui__history_cell__tests__single_line_command_wraps_with_four_space_continuation.snap │ │ │ ├── codex_tui__history_cell__tests__stderr_tail_more_than_five_lines_snapshot.snap │ │ │ ├── codex_tui__history_cell__tests__multiline_command_both_lines_wrap_with_correct_prefixes.snap │ │ │ ├── codex_tui__status_indicator_widget__tests__renders_with_working_header.snap │ │ │ ├── codex_tui__history_cell__tests__ran_cell_multiline_with_stderr_snapshot.snap │ │ │ ├── codex_tui__diff_render__tests__apply_update_block_wraps_long_lines_text.snap │ │ │ ├── codex_tui__pager_overlay__tests__static_overlay_snapshot_basic.snap │ │ │ ├── codex_tui__pager_overlay__tests__transcript_overlay_snapshot_basic.snap │ │ │ └── codex_tui__history_cell__tests__plan_update_with_note_and_wrapping_snapshot.snap │ │ ├── chatwidget │ │ │ ├── snapshots │ │ │ │ ├── codex_tui__chatwidget__tests__interrupt_exec_marks_failed.snap │ │ │ │ ├── codex_tui__chatwidget__tests__exploring_step2_finish_ls.snap │ │ │ │ ├── codex_tui__chatwidget__tests__exploring_step1_start_ls.snap │ │ │ │ ├── codex_tui__chatwidget__tests__chat_small_idle_h1.snap │ │ │ │ ├── codex_tui__chatwidget__tests__chat_small_running_h1.snap │ │ │ │ ├── codex_tui__chatwidget__tests__exploring_step4_finish_cat_foo.snap │ │ │ │ ├── codex_tui__chatwidget__tests__exploring_step3_start_cat_foo.snap │ │ │ │ ├── codex_tui__chatwidget__tests__exploring_step5_finish_sed_range.snap │ │ │ │ ├── codex_tui__chatwidget__tests__exploring_step6_finish_cat_bar.snap │ │ │ │ ├── codex_tui__chatwidget__tests__disabled_slash_command_while_task_running_snapshot.snap │ │ │ │ ├── codex_tui__chatwidget__tests__apply_patch_manual_flow_history_approved.snap │ │ │ │ ├── codex_tui__chatwidget__tests__apply_patch_manual_flow_history_proposed.snap │ │ │ │ ├── codex_tui__chatwidget__tests__chat_small_idle_h2.snap │ │ │ │ ├── codex_tui__chatwidget__tests__chat_small_running_h2.snap │ │ │ │ ├── codex_tui__chatwidget__tests__final_reasoning_then_message_without_deltas_are_rendered.snap │ │ │ │ ├── codex_tui__chatwidget__tests__deltas_then_same_final_message_are_rendered_snapshot.snap │ │ │ │ ├── codex_tui__chatwidget__tests__limits_placeholder.snap │ │ │ │ ├── codex_tui__chatwidget__tests__chat_small_idle_h3.snap │ │ │ │ ├── codex_tui__chatwidget__tests__chat_small_running_h3.snap │ │ │ │ ├── codex_tui__chatwidget__tests__chatwidget_markdown_code_blocks_vt100_snapshot.snap │ │ │ │ ├── codex_tui__chatwidget__tests__chatwidget_exec_and_status_layout_vt100_snapshot.snap │ │ │ │ └── codex_tui__chatwidget__tests__status_widget_active.snap │ │ │ └── session_header.rs │ │ ├── text_block.rs │ │ ├── bin │ │ │ └── md-events.rs │ │ ├── bottom_pane │ │ │ ├── snapshots │ │ │ │ ├── codex_tui__bottom_pane__chat_composer__tests__slash_popup_mo.snap │ │ │ │ ├── codex_tui__bottom_pane__list_selection_view__tests__list_selection_spacing_without_subtitle.snap │ │ │ │ └── codex_tui__bottom_pane__list_selection_view__tests__list_selection_spacing_with_subtitle.snap │ │ │ └── popup_consts.rs │ │ ├── ui_consts.rs │ │ └── util │ │ │ └── list_window.rs │ └── frames │ │ ├── blocks │ │ ├── frame_1.txt │ │ ├── frame_10.txt │ │ ├── frame_11.txt │ │ ├── frame_12.txt │ │ ├── frame_13.txt │ │ ├── frame_14.txt │ │ ├── frame_15.txt │ │ ├── frame_16.txt │ │ ├── frame_17.txt │ │ ├── frame_18.txt │ │ ├── frame_19.txt │ │ ├── frame_2.txt │ │ ├── frame_20.txt │ │ ├── frame_21.txt │ │ ├── frame_22.txt │ │ ├── frame_23.txt │ │ ├── frame_24.txt │ │ ├── frame_25.txt │ │ ├── frame_26.txt │ │ ├── frame_27.txt │ │ ├── frame_28.txt │ │ ├── frame_29.txt │ │ ├── frame_3.txt │ │ ├── frame_30.txt │ │ ├── frame_31.txt │ │ ├── frame_32.txt │ │ ├── frame_33.txt │ │ ├── frame_34.txt │ │ ├── frame_35.txt │ │ ├── frame_36.txt │ │ ├── frame_4.txt │ │ ├── frame_5.txt │ │ ├── frame_6.txt │ │ ├── frame_7.txt │ │ ├── frame_8.txt │ │ └── frame_9.txt │ │ ├── codex │ │ ├── frame_1.txt │ │ ├── frame_10.txt │ │ ├── frame_11.txt │ │ ├── frame_12.txt │ │ ├── frame_13.txt │ │ ├── frame_14.txt │ │ ├── frame_15.txt │ │ ├── frame_16.txt │ │ ├── frame_17.txt │ │ ├── frame_18.txt │ │ ├── frame_19.txt │ │ ├── frame_2.txt │ │ ├── frame_20.txt │ │ ├── frame_21.txt │ │ ├── frame_22.txt │ │ ├── frame_23.txt │ │ ├── frame_24.txt │ │ ├── frame_25.txt │ │ ├── frame_26.txt │ │ ├── frame_27.txt │ │ ├── frame_28.txt │ │ ├── frame_29.txt │ │ ├── frame_3.txt │ │ ├── frame_30.txt │ │ ├── frame_31.txt │ │ ├── frame_32.txt │ │ ├── frame_33.txt │ │ ├── frame_34.txt │ │ ├── frame_35.txt │ │ ├── frame_36.txt │ │ ├── frame_4.txt │ │ ├── frame_5.txt │ │ ├── frame_6.txt │ │ ├── frame_7.txt │ │ ├── frame_8.txt │ │ └── frame_9.txt │ │ ├── default │ │ ├── frame_1.txt │ │ ├── frame_10.txt │ │ ├── frame_11.txt │ │ ├── frame_12.txt │ │ ├── frame_13.txt │ │ ├── frame_14.txt │ │ ├── frame_15.txt │ │ ├── frame_16.txt │ │ ├── frame_17.txt │ │ ├── frame_18.txt │ │ ├── frame_19.txt │ │ ├── frame_2.txt │ │ ├── frame_20.txt │ │ ├── frame_21.txt │ │ ├── frame_22.txt │ │ ├── frame_23.txt │ │ ├── frame_24.txt │ │ ├── frame_25.txt │ │ ├── frame_26.txt │ │ ├── frame_27.txt │ │ ├── frame_28.txt │ │ ├── frame_29.txt │ │ ├── frame_3.txt │ │ ├── frame_30.txt │ │ ├── frame_31.txt │ │ ├── frame_32.txt │ │ ├── frame_33.txt │ │ ├── frame_34.txt │ │ ├── frame_35.txt │ │ ├── frame_36.txt │ │ ├── frame_4.txt │ │ ├── frame_5.txt │ │ ├── frame_6.txt │ │ ├── frame_7.txt │ │ ├── frame_8.txt │ │ └── frame_9.txt │ │ ├── dots │ │ ├── frame_1.txt │ │ ├── frame_10.txt │ │ ├── frame_11.txt │ │ ├── frame_12.txt │ │ ├── frame_13.txt │ │ ├── frame_14.txt │ │ ├── frame_15.txt │ │ ├── frame_16.txt │ │ ├── frame_17.txt │ │ ├── frame_18.txt │ │ ├── frame_19.txt │ │ ├── frame_2.txt │ │ ├── frame_20.txt │ │ ├── frame_21.txt │ │ ├── frame_22.txt │ │ ├── frame_23.txt │ │ ├── frame_24.txt │ │ ├── frame_25.txt │ │ ├── frame_26.txt │ │ ├── frame_27.txt │ │ ├── frame_28.txt │ │ ├── frame_29.txt │ │ ├── frame_3.txt │ │ ├── frame_30.txt │ │ ├── frame_31.txt │ │ ├── frame_32.txt │ │ ├── frame_33.txt │ │ ├── frame_34.txt │ │ ├── frame_35.txt │ │ ├── frame_36.txt │ │ ├── frame_4.txt │ │ ├── frame_5.txt │ │ ├── frame_6.txt │ │ ├── frame_7.txt │ │ ├── frame_8.txt │ │ └── frame_9.txt │ │ └── hash │ │ ├── frame_1.txt │ │ ├── frame_10.txt │ │ ├── frame_11.txt │ │ ├── frame_12.txt │ │ ├── frame_13.txt │ │ ├── frame_14.txt │ │ ├── frame_15.txt │ │ ├── frame_16.txt │ │ ├── frame_17.txt │ │ ├── frame_18.txt │ │ ├── frame_19.txt │ │ ├── frame_2.txt │ │ ├── frame_20.txt │ │ ├── frame_21.txt │ │ ├── frame_22.txt │ │ ├── frame_23.txt │ │ ├── frame_24.txt │ │ ├── frame_25.txt │ │ ├── frame_26.txt │ │ ├── frame_27.txt │ │ ├── frame_28.txt │ │ ├── frame_29.txt │ │ ├── frame_3.txt │ │ ├── frame_30.txt │ │ ├── frame_31.txt │ │ ├── frame_32.txt │ │ ├── frame_33.txt │ │ ├── frame_34.txt │ │ ├── frame_35.txt │ │ ├── frame_36.txt │ │ └── frame_4.txt ├── codex-cli │ └── bin │ │ └── coder-aarch64-apple-darwin ├── mcp-client │ ├── src │ │ └── lib.rs │ └── Cargo.toml ├── core │ ├── tests │ │ ├── fixtures │ │ │ ├── incomplete_sse.json │ │ │ └── completed_template.json │ │ ├── all.rs │ │ ├── common │ │ │ └── Cargo.toml │ │ ├── cli_responses_fixture.sse │ │ └── suite │ │ │ └── mod.rs │ ├── src │ │ ├── exec_command │ │ │ └── session_id.rs │ │ ├── flags.rs │ │ ├── rollout │ │ │ └── mod.rs │ │ └── tool_apply_patch.lark │ └── templates │ │ └── compact │ │ ├── prompt.md │ │ └── history_bridge.md ├── execpolicy │ ├── build.rs │ ├── tests │ │ ├── all.rs │ │ └── suite │ │ │ ├── mod.rs │ │ │ ├── bad.rs │ │ │ ├── good.rs │ │ │ └── parse_sed_command.rs │ └── src │ │ └── sed_command.rs ├── mcp-server │ ├── src │ │ ├── tool_handlers │ │ │ └── mod.rs │ │ ├── error_code.rs │ │ └── main.rs │ └── tests │ │ ├── all.rs │ │ ├── suite │ │ └── mod.rs │ │ └── common │ │ ├── Cargo.toml │ │ └── lib.rs ├── chatgpt │ ├── src │ │ └── lib.rs │ ├── tests │ │ ├── suite │ │ │ └── mod.rs │ │ └── all.rs │ ├── README.md │ └── Cargo.toml ├── rust-toolchain.toml ├── exec │ └── tests │ │ ├── fixtures │ │ ├── apply_patch_freeform_final.txt │ │ └── cli_responses_fixture.sse │ │ ├── all.rs │ │ └── suite │ │ └── mod.rs ├── linux-sandbox │ ├── tests │ │ ├── suite │ │ │ └── mod.rs │ │ └── all.rs │ ├── src │ │ ├── main.rs │ │ └── lib.rs │ └── README.md ├── login │ └── tests │ │ ├── suite │ │ └── mod.rs │ │ └── all.rs ├── mcp-types │ ├── tests │ │ ├── suite │ │ │ └── mod.rs │ │ └── all.rs │ ├── Cargo.toml │ ├── README.md │ └── check_lib_rs.py ├── browser │ └── src │ │ ├── hooks │ │ └── mod.rs │ │ └── tools │ │ └── mod.rs ├── rustfmt.toml ├── codex-version │ ├── Cargo.toml │ ├── src │ │ └── lib.rs │ └── build.rs ├── mcp-test-server │ └── Cargo.toml ├── .gitignore ├── protocol │ ├── src │ │ ├── lib.rs │ │ ├── message_history.rs │ │ ├── custom_prompts.rs │ │ └── parse_command.rs │ └── README.md ├── mcp-smoke │ └── Cargo.toml ├── protocol-ts │ ├── generate-ts │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── common │ ├── README.md │ └── Cargo.toml ├── file-search │ ├── README.md │ └── Cargo.toml ├── ansi-escape │ ├── Cargo.toml │ └── README.md └── arg0 │ └── Cargo.toml ├── docs ├── logo.png ├── screenshots │ ├── diff.png │ ├── intro.png │ ├── agents.png │ ├── browser.png │ └── simple.png ├── license.md ├── open-source-fund.md └── experimental.md ├── .github ├── codex │ └── home │ │ └── config.toml └── release-trigger.txt ├── pnpm-workspace.yaml ├── .npmrc ├── .prettierignore ├── .prettierrc.toml ├── NOTICE ├── .codespellrc ├── .vscode ├── extensions.json └── launch.json ├── homebrew-tap └── README.md ├── release-notes └── RELEASE_NOTES.md ├── pnpm-lock.yaml └── scripts └── ci-tests.sh /.codespellignore: -------------------------------------------------------------------------------- 1 | iTerm 2 | -------------------------------------------------------------------------------- /codex-cli/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /codex-rs/apply-patch/tests/suite/mod.rs: -------------------------------------------------------------------------------- 1 | mod cli; 2 | -------------------------------------------------------------------------------- /codex-rs/tui/src/resume/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod discovery; 2 | 3 | -------------------------------------------------------------------------------- /codex-rs/codex-cli/bin/coder-aarch64-apple-darwin: -------------------------------------------------------------------------------- 1 | ../../target/dev-fast/coder -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basnijholt/code/main/docs/logo.png -------------------------------------------------------------------------------- /codex-rs/tui/src/render/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod line_utils; 2 | pub mod markdown_utils; 3 | -------------------------------------------------------------------------------- /codex-rs/mcp-client/src/lib.rs: -------------------------------------------------------------------------------- 1 | mod mcp_client; 2 | 3 | pub use mcp_client::McpClient; 4 | -------------------------------------------------------------------------------- /.github/codex/home/config.toml: -------------------------------------------------------------------------------- 1 | model = "gpt-5" 2 | 3 | # Consider setting [mcp_servers] here! 4 | -------------------------------------------------------------------------------- /codex-rs/apply-patch/src/main.rs: -------------------------------------------------------------------------------- 1 | pub fn main() -> ! { 2 | codex_apply_patch::main() 3 | } 4 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - docs 3 | 4 | ignoredBuiltDependencies: 5 | - esbuild 6 | -------------------------------------------------------------------------------- /docs/screenshots/diff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basnijholt/code/main/docs/screenshots/diff.png -------------------------------------------------------------------------------- /docs/screenshots/intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basnijholt/code/main/docs/screenshots/intro.png -------------------------------------------------------------------------------- /codex-rs/core/tests/fixtures/incomplete_sse.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"type": "response.output_item.done"} 3 | ] 4 | -------------------------------------------------------------------------------- /codex-rs/tui/src/common.rs: -------------------------------------------------------------------------------- 1 | // DEFAULT_WRAP_COLS removed - streaming content no longer wraps artificially 2 | -------------------------------------------------------------------------------- /docs/license.md: -------------------------------------------------------------------------------- 1 | ## License 2 | 3 | This repository is licensed under the [Apache-2.0 License](../LICENSE). -------------------------------------------------------------------------------- /docs/screenshots/agents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basnijholt/code/main/docs/screenshots/agents.png -------------------------------------------------------------------------------- /docs/screenshots/browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basnijholt/code/main/docs/screenshots/browser.png -------------------------------------------------------------------------------- /docs/screenshots/simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basnijholt/code/main/docs/screenshots/simple.png -------------------------------------------------------------------------------- /codex-rs/execpolicy/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("cargo:rerun-if-changed=src/default.policy"); 3 | } 4 | -------------------------------------------------------------------------------- /codex-rs/mcp-server/src/tool_handlers/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod create_conversation; 2 | pub(crate) mod send_message; 3 | -------------------------------------------------------------------------------- /codex-rs/chatgpt/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod apply_command; 2 | mod chatgpt_client; 3 | mod chatgpt_token; 4 | pub mod get_task; 5 | -------------------------------------------------------------------------------- /codex-rs/rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "1.89.0" 3 | components = [ "clippy", "rustfmt", "rust-src"] 4 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | shamefully-hoist=true 2 | strict-peer-dependencies=false 3 | node-linker=hoisted 4 | prefer-workspace-packages=true 5 | -------------------------------------------------------------------------------- /codex-rs/exec/tests/fixtures/apply_patch_freeform_final.txt: -------------------------------------------------------------------------------- 1 | class BaseClass: 2 | def method(): 3 | 4 | return True 5 | -------------------------------------------------------------------------------- /codex-rs/chatgpt/tests/suite/mod.rs: -------------------------------------------------------------------------------- 1 | // Aggregates all former standalone integration tests as modules. 2 | mod apply_command_e2e; 3 | -------------------------------------------------------------------------------- /codex-rs/linux-sandbox/tests/suite/mod.rs: -------------------------------------------------------------------------------- 1 | // Aggregates all former standalone integration tests as modules. 2 | mod landlock; 3 | -------------------------------------------------------------------------------- /codex-rs/login/tests/suite/mod.rs: -------------------------------------------------------------------------------- 1 | // Aggregates all former standalone integration tests as modules. 2 | mod login_server_e2e; 3 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /codex-cli/dist 2 | /codex-cli/node_modules 3 | pnpm-lock.yaml 4 | 5 | prompt.md 6 | *_prompt.md 7 | *_instructions.md 8 | -------------------------------------------------------------------------------- /codex-rs/tui/src/onboarding/mod.rs: -------------------------------------------------------------------------------- 1 | mod auth; 2 | mod continue_to_chat; 3 | pub mod onboarding_screen; 4 | mod trust_directory; 5 | mod welcome; 6 | -------------------------------------------------------------------------------- /.github/release-trigger.txt: -------------------------------------------------------------------------------- 1 | Trigger release workflow 2 | Timestamp: $(date -u +%Y-%m-%dT%H:%M:%SZ) 3 | Reason: manual bump to force Release CI to run 4 | -------------------------------------------------------------------------------- /codex-rs/core/tests/all.rs: -------------------------------------------------------------------------------- 1 | // Single integration test binary that aggregates all test modules. 2 | // The submodules live in `tests/all/`. 3 | mod suite; 4 | -------------------------------------------------------------------------------- /codex-rs/mcp-server/src/error_code.rs: -------------------------------------------------------------------------------- 1 | pub(crate) const INVALID_REQUEST_ERROR_CODE: i64 = -32600; 2 | pub(crate) const INTERNAL_ERROR_CODE: i64 = -32603; 3 | -------------------------------------------------------------------------------- /codex-rs/mcp-types/tests/suite/mod.rs: -------------------------------------------------------------------------------- 1 | // Aggregates all former standalone integration tests as modules. 2 | mod initialize; 3 | mod progress_notification; 4 | -------------------------------------------------------------------------------- /codex-rs/browser/src/hooks/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod browser_injector; 2 | 3 | pub use browser_injector::BrowserInjector; 4 | pub use browser_injector::InjectionResult; 5 | -------------------------------------------------------------------------------- /codex-rs/chatgpt/tests/all.rs: -------------------------------------------------------------------------------- 1 | // Single integration test binary that aggregates all test modules. 2 | // The submodules live in `tests/suite/`. 3 | mod suite; 4 | -------------------------------------------------------------------------------- /codex-rs/exec/tests/all.rs: -------------------------------------------------------------------------------- 1 | // Single integration test binary that aggregates all test modules. 2 | // The submodules live in `tests/suite/`. 3 | mod suite; 4 | -------------------------------------------------------------------------------- /codex-rs/login/tests/all.rs: -------------------------------------------------------------------------------- 1 | // Single integration test binary that aggregates all test modules. 2 | // The submodules live in `tests/suite/`. 3 | mod suite; 4 | -------------------------------------------------------------------------------- /codex-rs/apply-patch/tests/all.rs: -------------------------------------------------------------------------------- 1 | // Single integration test binary that aggregates all test modules. 2 | // The submodules live in `tests/suite/`. 3 | mod suite; 4 | -------------------------------------------------------------------------------- /codex-rs/execpolicy/tests/all.rs: -------------------------------------------------------------------------------- 1 | // Single integration test binary that aggregates all test modules. 2 | // The submodules live in `tests/suite/`. 3 | mod suite; 4 | -------------------------------------------------------------------------------- /codex-rs/linux-sandbox/tests/all.rs: -------------------------------------------------------------------------------- 1 | // Single integration test binary that aggregates all test modules. 2 | // The submodules live in `tests/suite/`. 3 | mod suite; 4 | -------------------------------------------------------------------------------- /codex-rs/mcp-server/tests/all.rs: -------------------------------------------------------------------------------- 1 | // Single integration test binary that aggregates all test modules. 2 | // The submodules live in `tests/suite/`. 3 | mod suite; 4 | -------------------------------------------------------------------------------- /codex-rs/mcp-types/tests/all.rs: -------------------------------------------------------------------------------- 1 | // Single integration test binary that aggregates all test modules. 2 | // The submodules live in `tests/suite/`. 3 | mod suite; 4 | -------------------------------------------------------------------------------- /codex-rs/exec/tests/suite/mod.rs: -------------------------------------------------------------------------------- 1 | // Aggregates all former standalone integration tests as modules. 2 | mod apply_patch; 3 | mod common; 4 | mod resume; 5 | mod sandbox; 6 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__single_line_command_compact_when_fits.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • echo ok 6 | -------------------------------------------------------------------------------- /codex-rs/rustfmt.toml: -------------------------------------------------------------------------------- 1 | edition = "2024" 2 | # The warnings caused by this setting can be ignored. 3 | # See https://github.com/openai/openai/pull/298039 for details. 4 | imports_granularity = "Item" 5 | -------------------------------------------------------------------------------- /codex-rs/codex-version/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "codex-version" 3 | version = { workspace = true } 4 | edition = { workspace = true } 5 | build = "build.rs" 6 | 7 | [lib] 8 | path = "src/lib.rs" 9 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__interrupt_exec_marks_failed.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: exec_blob 4 | --- 5 | >_ 6 | ✗ ⌨️ sleep 1 7 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step2_finish_ls.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: blob2 4 | --- 5 | • Explored 6 | └ List ls -la 7 | -------------------------------------------------------------------------------- /.prettierrc.toml: -------------------------------------------------------------------------------- 1 | printWidth = 80 2 | quoteProps = "consistent" 3 | semi = true 4 | tabWidth = 2 5 | trailingComma = "all" 6 | 7 | # Preserve existing behavior for markdown/text wrapping. 8 | proseWrap = "preserve" 9 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step1_start_ls.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: blob1 4 | --- 5 | ⠋ Exploring... 6 | └ List ls -la 7 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__coalesced_reads_dedupe_names.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Explored 6 | └ Read auth.rs, shimmer.rs 7 | -------------------------------------------------------------------------------- /codex-rs/core/src/exec_command/session_id.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | use serde::Serialize; 3 | 4 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] 5 | pub(crate) struct SessionId(pub u32); 6 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_idle_h1.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: terminal.backend() 4 | --- 5 | "▌ Ask Codex to do anything " 6 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_running_h1.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: terminal.backend() 4 | --- 5 | "▌ Ask Codex to do anything " 6 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step4_finish_cat_foo.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: blob4 4 | --- 5 | • Explored 6 | └ List ls -la 7 | Read foo.txt 8 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step3_start_cat_foo.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: blob3 4 | --- 5 | ⠋ Exploring... 6 | └ List ls -la 7 | Read foo.txt 8 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step5_finish_sed_range.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: blob5 4 | --- 5 | • Explored 6 | └ List ls -la 7 | Read foo.txt 8 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step6_finish_cat_bar.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: blob6 4 | --- 5 | • Explored 6 | └ List ls -la 7 | Read foo.txt, bar.txt 8 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__multiline_command_without_wrap_uses_branch_then_eight_spaces.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Ran 6 | └ echo one 7 | echo two 8 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__status_indicator_widget__tests__renders_truncated.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/status_indicator_widget.rs 3 | expression: terminal.backend() 4 | --- 5 | " Working (0s • Esc " 6 | " " 7 | -------------------------------------------------------------------------------- /codex-rs/mcp-test-server/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "codex-mcp-test-server" 3 | version = { workspace = true } 4 | edition = "2024" 5 | 6 | [dependencies] 7 | serde = { version = "1", features = ["derive"] } 8 | serde_json = "1" 9 | 10 | -------------------------------------------------------------------------------- /codex-rs/execpolicy/tests/suite/mod.rs: -------------------------------------------------------------------------------- 1 | // Aggregates all former standalone integration tests as modules. 2 | mod bad; 3 | mod cp; 4 | mod good; 5 | mod head; 6 | mod literal; 7 | mod ls; 8 | mod parse_sed_command; 9 | mod pwd; 10 | mod sed; 11 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__disabled_slash_command_while_task_running_snapshot.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: blob 4 | --- 5 | ■ '/model' is disabled while a task is in progress. 6 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__user_history_cell_wraps_and_prefixes_each_line_snapshot.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | ▌ one two 6 | ▌ three four 7 | ▌ five six 8 | ▌ seven 9 | -------------------------------------------------------------------------------- /codex-rs/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | 3 | # Recommended value of CARGO_TARGET_DIR when using Docker as explained in .devcontainer/README.md. 4 | /target-amd64/ 5 | 6 | # Value of CARGO_TARGET_DIR when using .devcontainer/devcontainer.json. 7 | /target-arm64/ 8 | -------------------------------------------------------------------------------- /codex-rs/protocol/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod config_types; 2 | pub mod custom_prompts; 3 | pub mod mcp_protocol; 4 | pub mod message_history; 5 | pub mod models; 6 | pub mod num_format; 7 | pub mod parse_command; 8 | pub mod plan_tool; 9 | pub mod protocol; 10 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__apply_patch_manual_flow_history_approved.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: lines_to_single_string(&approved_lines) 4 | --- 5 | • Change Approved foo.txt (+1 -0) 6 | -------------------------------------------------------------------------------- /codex-rs/mcp-smoke/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "codex-mcp-smoke" 3 | version = { workspace = true } 4 | edition = "2024" 5 | 6 | [dependencies] 7 | anyhow = "1" 8 | codex-core = { path = "../core" } 9 | tokio = { version = "1", features = ["full"] } 10 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | OpenAI Codex 2 | Copyright 2025 OpenAI 3 | 4 | This project includes code derived from [Ratatui](https://github.com/ratatui/ratatui), licensed under the MIT license. 5 | Copyright (c) 2016-2022 Florian Dehau 6 | Copyright (c) 2023-2025 The Ratatui Developers 7 | -------------------------------------------------------------------------------- /codex-rs/protocol-ts/generate-ts: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | cd "$(dirname "$0")"/.. 6 | 7 | tmpdir=$(mktemp -d) 8 | just codex generate-ts --prettier ../node_modules/.bin/prettier --out "$tmpdir" 9 | 10 | echo "wrote output to $tmpdir" 11 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__plan_update_without_note_snapshot.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Updated Plan 6 | └ □ Define error taxonomy 7 | □ Implement mapping to user messages 8 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__coalesces_reads_across_multiple_calls.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Explored 6 | └ Search shimmer_spans 7 | Read shimmer.rs, status_indicator_widget.rs 8 | -------------------------------------------------------------------------------- /codex-rs/linux-sandbox/src/main.rs: -------------------------------------------------------------------------------- 1 | /// Note that the cwd, env, and command args are preserved in the ultimate call 2 | /// to `execv`, so the caller is responsible for ensuring those values are 3 | /// correct. 4 | fn main() -> ! { 5 | codex_linux_sandbox::run_main() 6 | } 7 | -------------------------------------------------------------------------------- /codex-rs/chatgpt/README.md: -------------------------------------------------------------------------------- 1 | # ChatGPT 2 | 3 | This crate pertains to first party ChatGPT APIs and products such as Codex agent. 4 | 5 | This crate should be primarily built and maintained by OpenAI employees. Please reach out to a maintainer before making an external contribution. 6 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__apply_patch_manual_flow_history_proposed.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: lines_to_single_string(&proposed_lines) 4 | --- 5 | • Proposed Change foo.txt (+1 -0) 6 | 1 +hello 7 | -------------------------------------------------------------------------------- /codex-cli/.gitignore: -------------------------------------------------------------------------------- 1 | # Added by ./scripts/install_native_deps.sh 2 | /bin/codex-aarch64-apple-darwin 3 | /bin/codex-aarch64-unknown-linux-musl 4 | /bin/codex-linux-sandbox-arm64 5 | /bin/codex-linux-sandbox-x64 6 | /bin/codex-x86_64-apple-darwin 7 | /bin/codex-x86_64-unknown-linux-musl 8 | -------------------------------------------------------------------------------- /codex-rs/mcp-server/tests/suite/mod.rs: -------------------------------------------------------------------------------- 1 | // Aggregates all former standalone integration tests as modules. 2 | mod auth; 3 | mod codex_message_processor_flow; 4 | mod codex_tool; 5 | mod config; 6 | mod create_conversation; 7 | mod interrupt; 8 | mod login; 9 | mod send_message; 10 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__coalesces_sequential_reads_within_one_call.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Explored 6 | └ Search shimmer_spans 7 | Read shimmer.rs 8 | Read status_indicator_widget.rs 9 | -------------------------------------------------------------------------------- /.codespellrc: -------------------------------------------------------------------------------- 1 | [codespell] 2 | # Ref: https://github.com/codespell-project/codespell#using-a-config-file 3 | skip = .git*,vendor,*-lock.yaml,*.lock,.codespellrc,*test.ts,*.jsonl 4 | check-hidden = true 5 | ignore-regex = ^\s*"image/\S+": ".*|\b(afterAll)\b 6 | ignore-words-list = ratatui,ser 7 | -------------------------------------------------------------------------------- /codex-rs/browser/src/tools/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod browser_tools; 2 | pub mod schema; 3 | 4 | pub use browser_tools::BrowserToolCall; 5 | pub use browser_tools::BrowserToolResult; 6 | pub use browser_tools::BrowserTools; 7 | pub use schema::BrowserToolSchema; 8 | pub use schema::get_browser_tools_schema; 9 | -------------------------------------------------------------------------------- /codex-rs/protocol/src/message_history.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | use serde::Serialize; 3 | use ts_rs::TS; 4 | 5 | #[derive(Serialize, Deserialize, Debug, Clone, TS)] 6 | pub struct HistoryEntry { 7 | pub session_id: String, 8 | pub ts: u64, 9 | pub text: String, 10 | } 11 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_idle_h2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | assertion_line: 779 4 | expression: terminal.backend() 5 | --- 6 | "▌ Ask Codex to do anything " 7 | " " 8 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_running_h2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | assertion_line: 807 4 | expression: terminal.backend() 5 | --- 6 | "▌ Ask Codex to do anything " 7 | " " 8 | -------------------------------------------------------------------------------- /codex-cli/scripts/README.md: -------------------------------------------------------------------------------- 1 | # npm releases 2 | 3 | Run the following: 4 | 5 | To build the 0.2.x or later version of the npm module, which runs the Rust version of the CLI, build it as follows: 6 | 7 | ```bash 8 | ./codex-cli/scripts/stage_rust_release.py --release-version 0.6.0 9 | ``` 10 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__final_reasoning_then_message_without_deltas_are_rendered.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: combined 4 | --- 5 | thinking 6 | I will first analyze the request. 7 | 8 | codex 9 | Here is the result. 10 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__multiline_command_wraps_with_extra_indent_on_subsequent_lines.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Ran 6 | └ set -o pipefail 7 | cargo test 8 | --all-features 9 | --quiet 10 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__single_line_command_wraps_with_four_space_continuation.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Ran 6 | └ a_very_long_toke 7 | n_without_spaces 8 | _to_force_wrappi 9 | ng 10 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__stderr_tail_more_than_five_lines_snapshot.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • seq 1 10 1>&2 && false 6 | └ 1 7 | 2 8 | 3 9 | 4 10 | 5 11 | 6 12 | 7 13 | 8 14 | 9 15 | 10 16 | -------------------------------------------------------------------------------- /codex-rs/protocol/src/custom_prompts.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | use serde::Serialize; 3 | use ts_rs::TS; 4 | use std::path::PathBuf; 5 | 6 | #[derive(Serialize, Deserialize, Debug, Clone, TS)] 7 | pub struct CustomPrompt { 8 | pub name: String, 9 | pub path: PathBuf, 10 | pub content: String, 11 | } 12 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__deltas_then_same_final_message_are_rendered_snapshot.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | assertion_line: 886 4 | expression: combined 5 | --- 6 | thinking 7 | I will first analyze the request. 8 | 9 | codex 10 | Here is the result. 11 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__multiline_command_both_lines_wrap_with_correct_prefixes.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Ran 6 | └ first_token_is_long_ 7 | enough_to_wrap 8 | second_token_is_also 9 | _long_enough_to_wrap 10 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__limits_placeholder.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: visual 4 | --- 5 | [magenta]/limits[/] 6 | 7 | [bold]Usage Limits[/] 8 | Real usage data is not available yet. 9 | [dim] Send a message to Codex, then run /limits again.[/] 10 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_idle_h3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | assertion_line: 779 4 | expression: terminal.backend() 5 | --- 6 | " " 7 | "▌ Ask Codex to do anything " 8 | " " 9 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_running_h3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | assertion_line: 807 4 | expression: terminal.backend() 5 | --- 6 | " " 7 | "▌ Ask Codex to do anything " 8 | " " 9 | -------------------------------------------------------------------------------- /codex-rs/mcp-types/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2024" 3 | name = "mcp-types" 4 | version = { workspace = true } 5 | 6 | [lints] 7 | workspace = true 8 | 9 | [dependencies] 10 | serde = { version = "1", features = ["derive"] } 11 | serde_json = "1" 12 | ts-rs = { version = "11", features = ["serde-json-impl", "no-serde-warnings"] } 13 | -------------------------------------------------------------------------------- /codex-rs/common/README.md: -------------------------------------------------------------------------------- 1 | # codex-common 2 | 3 | This crate is designed for utilities that need to be shared across other crates in the workspace, but should not go in `core`. 4 | 5 | For narrow utility features, the pattern is to add introduce a new feature under `[features]` in `Cargo.toml` and then gate it with `#[cfg]` in `lib.rs`, as appropriate. 6 | -------------------------------------------------------------------------------- /codex-rs/core/tests/common/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "core_test_support" 3 | version = { workspace = true } 4 | edition = "2024" 5 | 6 | [lib] 7 | path = "lib.rs" 8 | 9 | [dependencies] 10 | codex-core = { path = "../.." } 11 | serde_json = "1" 12 | tempfile = "3" 13 | tokio = { version = "1", features = ["time"] } 14 | wiremock = "0.6" 15 | -------------------------------------------------------------------------------- /codex-rs/tui/src/text_block.rs: -------------------------------------------------------------------------------- 1 | use ratatui::text::Line; 2 | 3 | /// Simple wrapper around Vec for holding text content 4 | #[derive(Clone, Debug)] 5 | pub(crate) struct TextBlock { 6 | pub lines: Vec>, 7 | } 8 | 9 | impl TextBlock { 10 | pub fn new(lines: Vec>) -> Self { 11 | Self { lines } 12 | } 13 | } -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "rust-lang.rust-analyzer", 4 | "tamasfe.even-better-toml", 5 | "vadimcn.vscode-lldb", 6 | 7 | // Useful if touching files in .github/workflows, though most 8 | // contributors will not be doing that? 9 | // "github.vscode-github-actions", 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__status_indicator_widget__tests__renders_with_working_header.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/status_indicator_widget.rs 3 | expression: terminal.backend() 4 | --- 5 | " Working (0s • Esc to interrupt) " 6 | " " 7 | -------------------------------------------------------------------------------- /docs/open-source-fund.md: -------------------------------------------------------------------------------- 1 | ## Codex open source fund 2 | 3 | We're excited to launch a **$1 million initiative** supporting open source projects that use Codex CLI and other OpenAI models. 4 | 5 | - Grants are awarded up to **$25,000** API credits. 6 | - Applications are reviewed **on a rolling basis**. 7 | 8 | **Interested? [Apply here](https://openai.com/form/codex-open-source-fund/).** -------------------------------------------------------------------------------- /codex-rs/mcp-server/src/main.rs: -------------------------------------------------------------------------------- 1 | use codex_arg0::arg0_dispatch_or_else; 2 | use codex_common::CliConfigOverrides; 3 | use code_mcp_server::run_main; 4 | 5 | fn main() -> anyhow::Result<()> { 6 | arg0_dispatch_or_else(|codex_linux_sandbox_exe| async move { 7 | run_main(codex_linux_sandbox_exe, CliConfigOverrides::default()).await?; 8 | Ok(()) 9 | }) 10 | } 11 | -------------------------------------------------------------------------------- /codex-rs/linux-sandbox/src/lib.rs: -------------------------------------------------------------------------------- 1 | #[cfg(target_os = "linux")] 2 | mod landlock; 3 | #[cfg(target_os = "linux")] 4 | mod linux_run_main; 5 | 6 | #[cfg(target_os = "linux")] 7 | pub fn run_main() -> ! { 8 | linux_run_main::run_main(); 9 | } 10 | 11 | #[cfg(not(target_os = "linux"))] 12 | pub fn run_main() -> ! { 13 | panic!("codex-linux-sandbox is only supported on Linux"); 14 | } 15 | -------------------------------------------------------------------------------- /codex-rs/file-search/README.md: -------------------------------------------------------------------------------- 1 | # codex_file_search 2 | 3 | Fast fuzzy file search tool for Codex. 4 | 5 | Uses under the hood (which is what `ripgrep` uses) to traverse a directory (while honoring `.gitignore`, etc.) to produce the list of files to search and then uses to fuzzy-match the user supplied `PATTERN` against the corpus. 6 | -------------------------------------------------------------------------------- /codex-rs/core/tests/fixtures/completed_template.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "response.completed", 4 | "response": { 5 | "id": "__ID__", 6 | "usage": { 7 | "input_tokens": 0, 8 | "input_tokens_details": null, 9 | "output_tokens": 0, 10 | "output_tokens_details": null, 11 | "total_tokens": 0 12 | }, 13 | "output": [] 14 | } 15 | } 16 | ] 17 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__ran_cell_multiline_with_stderr_snapshot.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Ran 6 | └ echo 7 | this_is_a_very_long_ 8 | single_token_that_wi 9 | ll_wrap_across_the_a 10 | vailable_width 11 | error: first line on 12 | stderr 13 | error: second line on 14 | stderr 15 | -------------------------------------------------------------------------------- /codex-rs/core/tests/cli_responses_fixture.sse: -------------------------------------------------------------------------------- 1 | event: response.created 2 | data: {"type":"response.created","response":{"id":"resp1"}} 3 | 4 | event: response.output_item.done 5 | data: {"type":"response.output_item.done","item":{"type":"message","role":"assistant","content":[{"type":"output_text","text":"fixture hello"}]}} 6 | 7 | event: response.completed 8 | data: {"type":"response.completed","response":{"id":"resp1","output":[]}} 9 | -------------------------------------------------------------------------------- /homebrew-tap/README.md: -------------------------------------------------------------------------------- 1 | # just-every/homebrew-tap 2 | 3 | Unofficial tap for Code (terminal coding agent). 4 | 5 | ## Usage 6 | 7 | ```bash 8 | brew tap just-every/tap 9 | brew install code 10 | ``` 11 | 12 | ## Updating 13 | 14 | - Regenerate the formula in the main repo: 15 | ```bash 16 | scripts/generate-homebrew-formula.sh 17 | ``` 18 | - Copy `Formula/Code.rb` into this tap at `Formula/Code.rb` and push a commit. 19 | -------------------------------------------------------------------------------- /codex-rs/ansi-escape/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2024" 3 | name = "codex-ansi-escape" 4 | version = { workspace = true } 5 | 6 | [lib] 7 | name = "codex_ansi_escape" 8 | path = "src/lib.rs" 9 | 10 | [dependencies] 11 | ansi-to-tui = "7.0.0" 12 | ratatui = { version = "0.29.0", features = [ 13 | "unstable-rendered-line-info", 14 | "unstable-widget-ref", 15 | ] } 16 | tracing = { version = "0.1.41", features = ["log"] } 17 | -------------------------------------------------------------------------------- /codex-rs/execpolicy/tests/suite/bad.rs: -------------------------------------------------------------------------------- 1 | use codex_execpolicy::NegativeExamplePassedCheck; 2 | use codex_execpolicy::get_default_policy; 3 | 4 | #[test] 5 | fn verify_everything_in_bad_list_is_rejected() { 6 | let policy = get_default_policy().expect("failed to load default policy"); 7 | let violations = policy.check_each_bad_list_individually(); 8 | assert_eq!(Vec::::new(), violations); 9 | } 10 | -------------------------------------------------------------------------------- /codex-rs/execpolicy/tests/suite/good.rs: -------------------------------------------------------------------------------- 1 | use codex_execpolicy::PositiveExampleFailedCheck; 2 | use codex_execpolicy::get_default_policy; 3 | 4 | #[test] 5 | fn verify_everything_in_good_list_is_allowed() { 6 | let policy = get_default_policy().expect("failed to load default policy"); 7 | let violations = policy.check_each_good_list_individually(); 8 | assert_eq!(Vec::::new(), violations); 9 | } 10 | -------------------------------------------------------------------------------- /codex-rs/codex-version/src/lib.rs: -------------------------------------------------------------------------------- 1 | // Compile-time embedded version string. 2 | // Prefer the CODE_VERSION provided by CI; fall back to the package 3 | // version for local builds. 4 | pub const CODE_VERSION: &str = { 5 | match option_env!("CODE_VERSION") { 6 | Some(v) => v, 7 | None => env!("CARGO_PKG_VERSION"), 8 | } 9 | }; 10 | 11 | #[inline] 12 | pub fn version() -> &'static str { 13 | CODE_VERSION 14 | } 15 | -------------------------------------------------------------------------------- /codex-rs/tui/src/bin/md-events.rs: -------------------------------------------------------------------------------- 1 | use std::io::Read; 2 | use std::io::{self}; 3 | 4 | fn main() { 5 | let mut input = String::new(); 6 | if let Err(err) = io::stdin().read_to_string(&mut input) { 7 | eprintln!("failed to read stdin: {err}"); 8 | std::process::exit(1); 9 | } 10 | 11 | let parser = pulldown_cmark::Parser::new(&input); 12 | for event in parser { 13 | println!("{event:?}"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /codex-rs/exec/tests/fixtures/cli_responses_fixture.sse: -------------------------------------------------------------------------------- 1 | event: response.created 2 | data: {"type":"response.created","response":{"id":"resp1"}} 3 | 4 | event: response.output_item.done 5 | data: {"type":"response.output_item.done","item":{"type":"message","role":"assistant","content":[{"type":"output_text","text":"fixture hello"}]}} 6 | 7 | event: response.completed 8 | data: {"type":"response.completed","response":{"id":"resp1","output":[]}} 9 | 10 | 11 | -------------------------------------------------------------------------------- /codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__slash_popup_mo.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/bottom_pane/chat_composer.rs 3 | expression: terminal.backend() 4 | --- 5 | "▌ /mo " 6 | "▌ " 7 | "▌/model choose what model and reasoning effort to use " 8 | "▌/mention mention a file " 9 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/session_header.rs: -------------------------------------------------------------------------------- 1 | pub(crate) struct SessionHeader { 2 | model: String, 3 | } 4 | 5 | impl SessionHeader { 6 | pub(crate) fn new(model: String) -> Self { 7 | Self { model } 8 | } 9 | 10 | /// Updates the header's model text. 11 | pub(crate) fn set_model(&mut self, model: &str) { 12 | if self.model != model { 13 | self.model = model.to_string(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /docs/experimental.md: -------------------------------------------------------------------------------- 1 | ## Experimental technology disclaimer 2 | 3 | Codex CLI is an experimental project under active development. It is not yet stable, may contain bugs, incomplete features, or undergo breaking changes. We're building it in the open with the community and welcome: 4 | 5 | - Bug reports 6 | - Feature requests 7 | - Pull requests 8 | - Good vibes 9 | 10 | Help us improve by filing issues or submitting PRs (see the section below for how to contribute)! -------------------------------------------------------------------------------- /codex-rs/protocol/README.md: -------------------------------------------------------------------------------- 1 | # codex-protocol 2 | 3 | This crate defines the "types" for the protocol used by Codex CLI, which includes both "internal types" for communication between `codex-core` and `codex-tui`, as well as "external types" used with `codex mcp`. 4 | 5 | This crate should have minimal dependencies. 6 | 7 | Ideally, we should avoid "material business logic" in this crate, as we can always introduce `Ext`-style traits to add functionality to types in other crates. 8 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_update_block_wraps_long_lines_text.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/diff_render.rs 3 | expression: text 4 | --- 5 | 1 1 6 | 2 -2 7 | 2 +added long line w 8 | hich wraps and_if 9 | _there_is_a_long_ 10 | token_it_will_be_ 11 | broken 12 | 3 3 13 | 4 -4 14 | 4 +4 context line wh 15 | ich also wraps ac 16 | ross 17 | -------------------------------------------------------------------------------- /codex-cli/scripts/build_container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | SCRIPT_DIR=$(realpath "$(dirname "$0")") 6 | trap "popd >> /dev/null" EXIT 7 | pushd "$SCRIPT_DIR/.." >> /dev/null || { 8 | echo "Error: Failed to change directory to $SCRIPT_DIR/.." 9 | exit 1 10 | } 11 | pnpm install 12 | pnpm run build 13 | rm -rf ./dist/openai-codex-*.tgz 14 | pnpm pack --pack-destination ./dist 15 | mv ./dist/openai-codex-*.tgz ./dist/codex.tgz 16 | docker build -t codex -f "./Dockerfile" . 17 | -------------------------------------------------------------------------------- /codex-rs/core/tests/suite/mod.rs: -------------------------------------------------------------------------------- 1 | // Aggregates all former standalone integration tests as modules. 2 | 3 | mod cli_stream; 4 | mod client; 5 | mod compact; 6 | mod compact_resume_fork; 7 | mod exec; 8 | mod exec_stream_events; 9 | mod fork_conversation; 10 | mod live_cli; 11 | mod model_overrides; 12 | mod prompt_caching; 13 | mod review; 14 | mod rollout_list_find; 15 | mod rollout_resume; 16 | mod seatbelt; 17 | mod stream_error_allows_next_turn; 18 | mod stream_no_completed; 19 | mod stream_order; 20 | -------------------------------------------------------------------------------- /codex-rs/linux-sandbox/README.md: -------------------------------------------------------------------------------- 1 | # codex-linux-sandbox 2 | 3 | This crate is responsible for producing: 4 | 5 | - a `codex-linux-sandbox` standalone executable for Linux that is bundled with the Node.js version of the Codex CLI 6 | - a lib crate that exposes the business logic of the executable as `run_main()` so that 7 | - the `codex-exec` CLI can check if its arg0 is `codex-linux-sandbox` and, if so, execute as if it were `codex-linux-sandbox` 8 | - this should also be true of the `codex` multitool CLI 9 | -------------------------------------------------------------------------------- /codex-rs/ansi-escape/README.md: -------------------------------------------------------------------------------- 1 | # oai-codex-ansi-escape 2 | 3 | Small helper functions that wrap functionality from 4 | : 5 | 6 | ```rust 7 | pub fn ansi_escape_line(s: &str) -> Line<'static> 8 | pub fn ansi_escape<'a>(s: &'a str) -> Text<'a> 9 | ``` 10 | 11 | Advantages: 12 | 13 | - `ansi_to_tui::IntoText` is not in scope for the entire TUI crate 14 | - we `panic!()` and log if `IntoText` returns an `Err` and log it so that 15 | the caller does not have to deal with it 16 | -------------------------------------------------------------------------------- /codex-rs/arg0/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2024" 3 | name = "codex-arg0" 4 | version = { workspace = true } 5 | 6 | [lib] 7 | name = "codex_arg0" 8 | path = "src/lib.rs" 9 | 10 | [lints] 11 | workspace = true 12 | 13 | [dependencies] 14 | anyhow = "1" 15 | codex-apply-patch = { path = "../apply-patch" } 16 | codex-core = { path = "../core" } 17 | codex-linux-sandbox = { path = "../linux-sandbox" } 18 | dotenvy = "0.15.7" 19 | tempfile = "3" 20 | tokio = { version = "1", features = ["rt-multi-thread"] } 21 | -------------------------------------------------------------------------------- /codex-rs/mcp-types/README.md: -------------------------------------------------------------------------------- 1 | # mcp-types 2 | 3 | Types for Model Context Protocol. Inspired by https://crates.io/crates/lsp-types. 4 | 5 | As documented on https://modelcontextprotocol.io/specification/2025-06-18/basic: 6 | 7 | - TypeScript schema is the source of truth: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/schema/2025-06-18/schema.ts 8 | - JSON schema is amenable to automated tooling: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/schema/2025-06-18/schema.json 9 | -------------------------------------------------------------------------------- /codex-rs/protocol-ts/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2024" 3 | name = "codex-protocol-ts" 4 | version = { workspace = true } 5 | 6 | [lints] 7 | workspace = true 8 | 9 | [lib] 10 | name = "codex_protocol_ts" 11 | path = "src/lib.rs" 12 | 13 | [[bin]] 14 | name = "codex-protocol-ts" 15 | path = "src/main.rs" 16 | 17 | [dependencies] 18 | anyhow = "1" 19 | mcp-types = { path = "../mcp-types" } 20 | codex-protocol = { path = "../protocol" } 21 | ts-rs = "11" 22 | clap = { version = "4", features = ["derive"] } 23 | -------------------------------------------------------------------------------- /codex-rs/tui/src/bottom_pane/popup_consts.rs: -------------------------------------------------------------------------------- 1 | //! Shared popup-related constants for bottom pane widgets. 2 | 3 | /// Maximum number of rows any popup should attempt to display. 4 | /// Keep this consistent across all popups for a uniform feel. 5 | pub(crate) const MAX_POPUP_ROWS: usize = 8; 6 | 7 | /// Standard footer hint text used by popups. 8 | /// Prefix with underscore to avoid dead_code warnings if not referenced. 9 | pub(crate) const _STANDARD_POPUP_HINT_LINE: &str = "Press Enter to confirm or Esc to go back"; 10 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chatwidget_markdown_code_blocks_vt100_snapshot.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: visual 4 | --- 5 | > -- Indented code block (4 spaces) 6 | SELECT * 7 | FROM "users" 8 | WHERE "email" LIKE '%@example.com'; 9 | 10 | ```sh 11 | printf 'fenced within fenced\n' 12 | ``` 13 | 14 | { 15 | // comment allowed in jsonc 16 | "path": "C:\\Program Files\\App", 17 | "regex": "^foo.*(bar)?$" 18 | } 19 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chatwidget_exec_and_status_layout_vt100_snapshot.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | expression: visual 4 | --- 5 | > I’m going to search the repo for where “Change Approved” is rendered to update 6 | that view. 7 | 8 | • Explored 9 | └ Search Change Approved 10 | Read diff_render.rs 11 | 12 | Investigating rendering code (0s • Esc to interrupt) 13 | 14 | ▌Summarize recent commits 15 | ⏎ send Ctrl+J newline Ctrl+T transcript Ctrl+H help 16 | -------------------------------------------------------------------------------- /codex-rs/tui/src/ui_consts.rs: -------------------------------------------------------------------------------- 1 | //! Shared UI constants for layout and alignment within the TUI. 2 | 3 | /// Width (in terminal columns) reserved for the left gutter/prefix used by 4 | /// live cells and aligned widgets. 5 | /// 6 | /// Semantics: 7 | /// - Chat composer reserves this many columns for the left border + padding. 8 | /// - Status indicator lines begin with this many spaces for alignment. 9 | /// - User history lines account for this many columns (e.g., "▌ ") when wrapping. 10 | pub(crate) const _LIVE_PREFIX_COLS: u16 = 2; 11 | -------------------------------------------------------------------------------- /codex-rs/mcp-types/check_lib_rs.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import subprocess 4 | import sys 5 | from pathlib import Path 6 | 7 | 8 | def main() -> int: 9 | crate_dir = Path(__file__).resolve().parent 10 | generator = crate_dir / "generate_mcp_types.py" 11 | 12 | result = subprocess.run( 13 | [sys.executable, str(generator), "--check"], 14 | cwd=crate_dir, 15 | check=False, 16 | ) 17 | return result.returncode 18 | 19 | 20 | if __name__ == "__main__": 21 | raise SystemExit(main()) 22 | -------------------------------------------------------------------------------- /codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_spacing_without_subtitle.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/bottom_pane/list_selection_view.rs 3 | expression: render_lines(&view) 4 | --- 5 | ▌ Select Approval Mode 6 | ▌ 7 | ▌> 1. Read Only (current) Codex can read files 8 | ▌ 2. Full Access Codex can edit files 9 | 10 | Press Enter to confirm or Esc to go back 11 | -------------------------------------------------------------------------------- /codex-rs/file-search/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2024" 3 | name = "codex-file-search" 4 | version = { workspace = true } 5 | 6 | [[bin]] 7 | name = "codex-file-search" 8 | path = "src/main.rs" 9 | 10 | [lib] 11 | name = "codex_file_search" 12 | path = "src/lib.rs" 13 | 14 | [dependencies] 15 | anyhow = "1" 16 | clap = { version = "4", features = ["derive"] } 17 | ignore = "0.4.23" 18 | nucleo-matcher = "0.3.1" 19 | serde = { version = "1", features = ["derive"] } 20 | serde_json = "1" 21 | tokio = { version = "1", features = ["full"] } 22 | -------------------------------------------------------------------------------- /release-notes/RELEASE_NOTES.md: -------------------------------------------------------------------------------- 1 | ## @just-every/code v0.2.162 2 | 3 | This release improves CLI resume reliability and hardens runtime handling. 4 | 5 | ### Changes 6 | 7 | - CLI/Resume: fix --last to reliably select the most recent session under active runtimes. 8 | - Stability: avoid nested Tokio runtime creation during resume lookup to prevent sporadic failures. 9 | 10 | ### Install 11 | 12 | ``` 13 | npm install -g @just-every/code@latest 14 | code 15 | ``` 16 | 17 | Compare: https://github.com/just-every/code/compare/v0.2.161...v0.2.162 18 | 19 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "lldb", 6 | "request": "launch", 7 | "name": "Cargo launch", 8 | "cargo": { 9 | "cwd": "${workspaceFolder}/codex-rs", 10 | "args": ["build", "--bin=codex-tui"] 11 | }, 12 | "args": [] 13 | }, 14 | { 15 | "type": "lldb", 16 | "request": "attach", 17 | "name": "Attach to running codex CLI", 18 | "pid": "${command:pickProcess}", 19 | "sourceLanguages": ["rust"] 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /codex-rs/core/src/flags.rs: -------------------------------------------------------------------------------- 1 | use std::time::Duration; 2 | 3 | use env_flags::env_flags; 4 | 5 | env_flags! { 6 | pub OPENAI_API_BASE: &str = "https://api.openai.com/v1"; 7 | 8 | /// Fallback when the provider-specific key is not set. 9 | pub OPENAI_API_KEY: Option<&str> = None; 10 | pub OPENAI_TIMEOUT_MS: Duration = Duration::from_millis(300_000), |value| { 11 | value.parse().map(Duration::from_millis) 12 | }; 13 | 14 | /// Fixture path for offline tests (see client.rs). 15 | pub CODEX_RS_SSE_FIXTURE: Option<&str> = None; 16 | } 17 | -------------------------------------------------------------------------------- /codex-rs/chatgpt/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2024" 3 | name = "codex-chatgpt" 4 | version = { workspace = true } 5 | 6 | [lints] 7 | workspace = true 8 | 9 | [dependencies] 10 | anyhow = "1" 11 | clap = { version = "4", features = ["derive"] } 12 | codex-common = { path = "../common", features = ["cli"] } 13 | codex-core = { path = "../core" } 14 | codex-protocol = { path = "../protocol" } 15 | serde = { version = "1", features = ["derive"] } 16 | serde_json = "1" 17 | tokio = { version = "1", features = ["full"] } 18 | 19 | [dev-dependencies] 20 | tempfile = "3" 21 | -------------------------------------------------------------------------------- /codex-rs/core/templates/compact/prompt.md: -------------------------------------------------------------------------------- 1 | You have exceeded the maximum number of tokens, please stop coding and instead write a short memento message for the next agent. Your note should: 2 | - Summarize what you finished and what still needs work. If there was a recent update_plan call, repeat its steps verbatim. 3 | - List outstanding TODOs with file paths / line numbers so they're easy to find. 4 | - Flag code that needs more tests (edge cases, performance, integration, etc.). 5 | - Record any open bugs, quirks, or setup steps that will make it easier for the next agent to pick up where you left off. -------------------------------------------------------------------------------- /codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_spacing_with_subtitle.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/bottom_pane/list_selection_view.rs 3 | expression: render_lines(&view) 4 | --- 5 | ▌ Select Approval Mode 6 | ▌ Switch between Codex approval presets 7 | ▌ 8 | ▌> 1. Read Only (current) Codex can read files 9 | ▌ 2. Full Access Codex can edit files 10 | 11 | Press Enter to confirm or Esc to go back 12 | -------------------------------------------------------------------------------- /codex-rs/core/templates/compact/history_bridge.md: -------------------------------------------------------------------------------- 1 | You were originally given instructions from a user over one or more turns. Here were the user messages: 2 | 3 | {{ user_messages_text }} 4 | 5 | Another language model started to solve this problem and produced a summary of its thinking process. You also have access to the state of the tools that were used by that language model. Use this to build on the work that has already been done and avoid duplicating work. Here is the summary produced by the other language model, use the information in this summary to assist with your own analysis: 6 | 7 | {{ summary_text }} -------------------------------------------------------------------------------- /codex-rs/execpolicy/src/sed_command.rs: -------------------------------------------------------------------------------- 1 | use crate::error::Error; 2 | use crate::error::Result; 3 | 4 | pub fn parse_sed_command(sed_command: &str) -> Result<()> { 5 | // For now, we parse only commands like `122,202p`. 6 | if let Some(stripped) = sed_command.strip_suffix("p") 7 | && let Some((first, rest)) = stripped.split_once(",") 8 | && first.parse::().is_ok() 9 | && rest.parse::().is_ok() 10 | { 11 | return Ok(()); 12 | } 13 | 14 | Err(Error::SedCommandNotProvablySafe { 15 | command: sed_command.to_string(), 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /codex-rs/common/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2024" 3 | name = "codex-common" 4 | version = { workspace = true } 5 | 6 | [lints] 7 | workspace = true 8 | 9 | [dependencies] 10 | clap = { version = "4", features = ["derive", "wrap_help"], optional = true } 11 | codex-core = { path = "../core" } 12 | codex-protocol = { path = "../protocol" } 13 | serde = { version = "1", optional = true } 14 | toml = { version = "0.9", optional = true } 15 | 16 | [features] 17 | # Separate feature so that `clap` is not a mandatory dependency. 18 | cli = ["clap", "serde", "toml"] 19 | elapsed = [] 20 | sandbox_summary = [] 21 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | overrides: 8 | braces: ^3.0.3 9 | micromatch: ^4.0.8 10 | semver: ^7.7.1 11 | 12 | importers: 13 | 14 | .: 15 | devDependencies: 16 | prettier: 17 | specifier: ^3.6.2 18 | version: 3.6.2 19 | 20 | packages: 21 | 22 | prettier@3.6.2: 23 | resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 24 | engines: {node: '>=14'} 25 | hasBin: true 26 | 27 | snapshots: 28 | 29 | prettier@3.6.2: {} 30 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__pager_overlay__tests__static_overlay_snapshot_basic.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/pager_overlay.rs 3 | expression: term.backend() 4 | --- 5 | "/ S T A T I C / / / / / / / / / / / / / " 6 | "one " 7 | "two " 8 | "three " 9 | "~ " 10 | "~ " 11 | "───────────────────────────────── 100% ─" 12 | " ↑/↓ scroll PgUp/PgDn page Home/End " 13 | " q quit " 14 | " " 15 | -------------------------------------------------------------------------------- /codex-rs/core/src/rollout/mod.rs: -------------------------------------------------------------------------------- 1 | //! Rollout module: persistence and discovery of session rollout files. 2 | 3 | pub const SESSIONS_SUBDIR: &str = "sessions"; 4 | #[allow(dead_code)] 5 | pub const ARCHIVED_SESSIONS_SUBDIR: &str = "archived_sessions"; 6 | 7 | pub mod list; 8 | pub(crate) mod policy; 9 | pub mod recorder; 10 | 11 | #[allow(unused_imports)] 12 | pub use codex_protocol::protocol::SessionMeta; 13 | #[allow(unused_imports)] 14 | pub use list::find_conversation_path_by_id_str; 15 | pub use recorder::RolloutRecorder; 16 | #[allow(unused_imports)] 17 | pub use recorder::RolloutRecorderParams; 18 | 19 | #[cfg(test)] 20 | pub mod tests; 21 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__pager_overlay__tests__transcript_overlay_snapshot_basic.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/pager_overlay.rs 3 | expression: term.backend() 4 | --- 5 | "/ T R A N S C R I P T / / / / / / / / / " 6 | "alpha " 7 | " " 8 | "beta " 9 | " " 10 | "gamma " 11 | "───────────────────────────────── 100% ─" 12 | " ↑/↓ scroll PgUp/PgDn page Home/End " 13 | " q quit Esc edit prev " 14 | " " 15 | -------------------------------------------------------------------------------- /codex-rs/apply-patch/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2024" 3 | name = "codex-apply-patch" 4 | version = { workspace = true } 5 | 6 | [lib] 7 | name = "codex_apply_patch" 8 | path = "src/lib.rs" 9 | 10 | [[bin]] 11 | name = "apply_patch" 12 | path = "src/main.rs" 13 | 14 | [lints] 15 | workspace = true 16 | 17 | [dependencies] 18 | anyhow = "1" 19 | similar = "2.7.0" 20 | thiserror = "2.0.16" 21 | tree-sitter = "0.25.9" 22 | tree-sitter-bash = "0.25.0" 23 | once_cell = "1" 24 | tokio = { version = "1", features = ["rt", "rt-multi-thread"] } 25 | 26 | [dev-dependencies] 27 | assert_cmd = "2" 28 | pretty_assertions = "1.4.1" 29 | tempfile = "3.13.0" 30 | -------------------------------------------------------------------------------- /scripts/ci-tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | echo "[ci-tests] Running curated integration tests..." 5 | pushd codex-rs >/dev/null 6 | 7 | cargo test -p codex-login --test all -q 8 | cargo test -p codex-chatgpt --test all -q 9 | cargo test -p codex-apply-patch --test all -q 10 | cargo test -p codex-execpolicy --tests -q 11 | cargo test -p mcp-types --tests -q 12 | 13 | popd >/dev/null 14 | 15 | echo "[ci-tests] CLI smokes with host binary..." 16 | BIN=./codex-rs/target/dev-fast/code 17 | "${BIN}" --version >/dev/null 18 | "${BIN}" completion bash >/dev/null 19 | "${BIN}" doctor >/dev/null || true 20 | 21 | echo "[ci-tests] Done." 22 | -------------------------------------------------------------------------------- /codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__plan_update_with_note_and_wrapping_snapshot.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/history_cell.rs 3 | expression: rendered 4 | --- 5 | • Updated Plan 6 | └ I’ll update Grafana call 7 | error handling by adding 8 | retries and clearer 9 | messages when the backend is 10 | unreachable. 11 | ✔ Investigate existing error 12 | paths and logging around 13 | HTTP timeouts 14 | □ Harden Grafana client 15 | error handling with retry/ 16 | backoff and user‑friendly 17 | messages 18 | □ Add tests for transient 19 | failure scenarios and 20 | surfacing to the UI 21 | -------------------------------------------------------------------------------- /codex-rs/mcp-client/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "codex-mcp-client" 3 | version = { workspace = true } 4 | edition = "2024" 5 | 6 | [lints] 7 | workspace = true 8 | 9 | [dependencies] 10 | anyhow = "1" 11 | mcp-types = { path = "../mcp-types" } 12 | codex-version = { path = "../codex-version" } 13 | serde = { version = "1", features = ["derive"] } 14 | serde_json = "1" 15 | tracing = { version = "0.1.41", features = ["log"] } 16 | tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] } 17 | tokio = { version = "1", features = [ 18 | "io-util", 19 | "macros", 20 | "process", 21 | "rt-multi-thread", 22 | "sync", 23 | "time", 24 | ] } 25 | -------------------------------------------------------------------------------- /codex-rs/protocol/src/parse_command.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | use serde::Serialize; 3 | use ts_rs::TS; 4 | 5 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize, TS)] 6 | #[serde(tag = "type", rename_all = "snake_case")] 7 | pub enum ParsedCommand { 8 | Read { 9 | cmd: String, 10 | name: String, 11 | }, 12 | ListFiles { 13 | cmd: String, 14 | path: Option, 15 | }, 16 | Search { 17 | cmd: String, 18 | query: Option, 19 | path: Option, 20 | }, 21 | ReadCommand { 22 | cmd: String, 23 | }, 24 | Unknown { 25 | cmd: String, 26 | }, 27 | } 28 | -------------------------------------------------------------------------------- /codex-rs/core/src/tool_apply_patch.lark: -------------------------------------------------------------------------------- 1 | start: begin_patch hunk+ end_patch 2 | begin_patch: "*** Begin Patch" LF 3 | end_patch: "*** End Patch" LF? 4 | 5 | hunk: add_hunk | delete_hunk | update_hunk 6 | add_hunk: "*** Add File: " filename LF add_line+ 7 | delete_hunk: "*** Delete File: " filename LF 8 | update_hunk: "*** Update File: " filename LF change_move? change? 9 | 10 | filename: /(.+)/ 11 | add_line: "+" /(.*)/ LF -> line 12 | 13 | change_move: "*** Move to: " filename LF 14 | change: (change_context | change_line)+ eof_line? 15 | change_context: ("@@" | "@@ " /(.+)/) LF 16 | change_line: ("+" | "-" | " ") /(.*)/ LF 17 | eof_line: "*** End of File" LF 18 | 19 | %import common.LF 20 | -------------------------------------------------------------------------------- /codex-rs/execpolicy/tests/suite/parse_sed_command.rs: -------------------------------------------------------------------------------- 1 | use codex_execpolicy::Error; 2 | use codex_execpolicy::parse_sed_command; 3 | 4 | #[test] 5 | fn parses_simple_print_command() { 6 | assert_eq!(parse_sed_command("122,202p"), Ok(())); 7 | } 8 | 9 | #[test] 10 | fn rejects_malformed_print_command() { 11 | assert_eq!( 12 | parse_sed_command("122,202"), 13 | Err(Error::SedCommandNotProvablySafe { 14 | command: "122,202".to_string(), 15 | }) 16 | ); 17 | assert_eq!( 18 | parse_sed_command("122202"), 19 | Err(Error::SedCommandNotProvablySafe { 20 | command: "122202".to_string(), 21 | }) 22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /codex-rs/mcp-server/tests/common/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2024" 3 | name = "mcp_test_support" 4 | version = { workspace = true } 5 | 6 | [lib] 7 | path = "lib.rs" 8 | 9 | [dependencies] 10 | anyhow = "1" 11 | assert_cmd = "2" 12 | codex-core = { path = "../../../core" } 13 | code-mcp-server = { path = "../.." } 14 | codex-protocol = { path = "../../../protocol" } 15 | mcp-types = { path = "../../../mcp-types" } 16 | os_info = "3.12.0" 17 | pretty_assertions = "1.4.1" 18 | serde = { version = "1" } 19 | serde_json = "1" 20 | tokio = { version = "1", features = [ 21 | "io-std", 22 | "macros", 23 | "process", 24 | "rt-multi-thread", 25 | ] } 26 | wiremock = "0.6" 27 | -------------------------------------------------------------------------------- /codex-rs/tui/src/util/list_window.rs: -------------------------------------------------------------------------------- 1 | //! Small helper to compute an anchored list window for a selection. 2 | //! Given a total `count`, selected index, and `max_visible` rows (odd preferred), 3 | //! returns `(start, visible, middle)` where `start` is the first index to render. 4 | 5 | pub fn anchored_window(selected: usize, count: usize, max_visible: usize) -> (usize, usize, usize) { 6 | if count == 0 || max_visible == 0 { return (0, 0, 0); } 7 | let visible = max_visible.min(count).max(1); 8 | let middle = visible / 2; // centered index within the window 9 | let start = selected.saturating_sub(middle).min(count.saturating_sub(visible)); 10 | (start, visible, middle) 11 | } 12 | 13 | -------------------------------------------------------------------------------- /codex-rs/mcp-server/tests/common/lib.rs: -------------------------------------------------------------------------------- 1 | mod mcp_process; 2 | mod mock_model_server; 3 | mod responses; 4 | 5 | pub use mcp_process::McpProcess; 6 | use mcp_types::JSONRPCResponse; 7 | pub use mock_model_server::create_mock_chat_completions_server; 8 | pub use responses::create_apply_patch_sse_response; 9 | pub use responses::create_final_assistant_message_sse_response; 10 | pub use responses::create_shell_sse_response; 11 | use serde::de::DeserializeOwned; 12 | 13 | pub fn to_response(response: JSONRPCResponse) -> anyhow::Result { 14 | let value = serde_json::to_value(response.result)?; 15 | let codex_response = serde_json::from_value(value)?; 16 | Ok(codex_response) 17 | } 18 | -------------------------------------------------------------------------------- /codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_widget_active.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: tui/src/chatwidget/tests.rs 3 | assertion_line: 878 4 | expression: terminal.backend() 5 | --- 6 | " " 7 | " Analyzing (0s • Esc to interrupt) " 8 | " " 9 | "▌ Ask Codex to do anything " 10 | " ⏎ send Ctrl+J newline Ctrl+T transcript Ctrl+H help " 11 | " " 12 | -------------------------------------------------------------------------------- /codex-rs/protocol-ts/src/main.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use clap::Parser; 3 | use std::path::PathBuf; 4 | 5 | #[derive(Parser, Debug)] 6 | #[command(about = "Generate TypeScript bindings for the Codex protocol")] 7 | struct Args { 8 | /// Output directory where .ts files will be written 9 | #[arg(short = 'o', long = "out", value_name = "DIR")] 10 | out_dir: PathBuf, 11 | 12 | /// Optional path to the Prettier executable to format generated files 13 | #[arg(short = 'p', long = "prettier", value_name = "PRETTIER_BIN")] 14 | prettier: Option, 15 | } 16 | 17 | fn main() -> Result<()> { 18 | let args = Args::parse(); 19 | codex_protocol_ts::generate_ts(&args.out_dir, args.prettier.as_deref()) 20 | } 21 | -------------------------------------------------------------------------------- /codex-rs/codex-version/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // Prefer an explicit CODE_VERSION provided by CI; fall back to the 3 | // crate's package version to keep local builds sane. 4 | let version = std::env::var("CODE_VERSION") 5 | .unwrap_or_else(|_| env!("CARGO_PKG_VERSION").to_string()); 6 | 7 | // Inject the version as a rustc env so it participates in the compiler 8 | // invocation hash (sccache-friendly) and guarantees a cache miss when 9 | // the version changes. 10 | println!("cargo:rustc-env=CODE_VERSION={}", version); 11 | 12 | // Ensure dependent crates rebuild when CODE_VERSION changes even if the 13 | // source graph stays the same. 14 | println!("cargo:rerun-if-env-changed=CODE_VERSION"); 15 | } 16 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_1.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓▒▓▒██▒▒██▒ 3 | ▒▒█▓█▒█▓█▒▒░░▒▒ ▒ █▒ 4 | █░█░███ ▒░ ░ █░ ░▒░░░█ 5 | ▓█▒▒████▒ ▓█░▓░█ 6 | ▒▒▓▓█▒░▒░▒▒ ▓░▒▒█ 7 | ░█ █░ ░█▓▓░░█ █▓▒░░█ 8 | █▒ ▓█ █▒░█▓ ░▒ ░▓░ 9 | ░░▒░░ █▓▓░▓░█ ░░ 10 | ░▒░█░ ▓░░▒▒░ ▓░██████▒██ ▒ ░ 11 | ▒░▓█ ▒▓█░ ▓█ ░ ░▒▒▒▓▓███░▓█▓█░ 12 | ▒▒▒ ▒ ▒▒█▓▓░ ░▒████ ▒█ ▓█▓▒▓ 13 | █▒█ █ ░ ██▓█▒░ 14 | ▒▒█░▒█▒ ▒▒▒█░▒█ 15 | ▒██▒▒ ██▓▓▒▓▓▓▒██▒█░█ 16 | ░█ █░░░▒▒▒█▒▓██ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_10.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒████▒██▒ 3 | ██░███▒░▓▒██ 4 | ▒▒█░░▓░░▓░█▒██ 5 | ░▒▒▓▒░▓▒▓▒███▒▒█ 6 | ▓ ▓░░ ░▒ ██▓▒▓░▓ 7 | ░░ █░█░▓▓▒ ░▒ ░ 8 | ▒ ░█ █░░░░█ ░▓█ 9 | ░░▒█▓█░░▓▒░▓▒░░ 10 | ░▒ ▒▒░▓░░█▒█▓░░ 11 | ░ █░▒█░▒▓▒█▒▒▒░█░ 12 | █ ░░░░░ ▒█ ▒░░ 13 | ▒░██▒██ ▒░ █▓▓ 14 | ░█ ░░░░██▓█▓░▓░ 15 | ▓░██▓░█▓▒ ▓▓█ 16 | ██ ▒█▒▒█▓█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_11.txt: -------------------------------------------------------------------------------- 1 | 2 | ███████▒ 3 | ▓ ▓░░░▒▒█ 4 | ▓ ▒▒░░▓▒█▓▒█ 5 | ░▒▒░░▒▓█▒▒▓▓ 6 | ▒ ▓▓▒░█▒█▓▒░░█ 7 | ░█░░░█▒▓▓░▒▓░░ 8 | ██ █░░░░░░▒░▒▒ 9 | ░ ░░▓░░▒▓ ░ ░ 10 | ▓ █░▓░░█▓█░▒░ 11 | ██ ▒░▓▒█ ▓░▒░▒ 12 | █░▓ ░░░░▒▓░▒▒░ 13 | ▒▒▓▓░▒█▓██▓░░ 14 | ▒ █░▒▒▒▒░▓ 15 | ▒█ █░░█▒▓█░ 16 | ▒▒ ███▒█░ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_12.txt: -------------------------------------------------------------------------------- 1 | 2 | █████▓ 3 | █▒░▒▓░█▒ 4 | ░▓▒██ 5 | ▓█░░░▒▒ ░ 6 | ░ █░░░░▓▓░ 7 | ░█▓▓█▒ ▒░ 8 | ░ ░▓▒░░▒ 9 | ░ ▓█▒░░ 10 | ██ ░▓░░█░░ 11 | ░ ▓░█▓█▒ 12 | ░▓ ░ ▒██▓ 13 | █ █░ ▒█░ 14 | ▓ ██░██▒░ 15 | █▒▓ █░▒░░ 16 | ▒ █░▒▓▓ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_13.txt: -------------------------------------------------------------------------------- 1 | 2 | ▓████ 3 | ░▒▒░░ 4 | ░░▒░ 5 | ░██░▒ 6 | █ ░░ 7 | ▓▓░░ 8 | █ ░░ 9 | █ ░ 10 | ▓█ ▒░▓ 11 | ░ █▒░ 12 | █░▓▓ ░░ 13 | ░▒▒▒░ 14 | ░██░▒ 15 | █▒▒░▒ 16 | █ ▓ ▒ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_14.txt: -------------------------------------------------------------------------------- 1 | 2 | ████▓ 3 | █▓▒▒▓▒ 4 | ░▒░░▓ ░ 5 | ░░▓░ ▒░█ 6 | ░░░▒ ░ 7 | ░█░░ █░ 8 | ░░░░ ▓ █ 9 | ░░▒░░ ▒ 10 | ░░░░ 11 | ▒▓▓ ▓▓ 12 | ▒░ █▓█░ 13 | ░█░░▒▒▒░ 14 | ▓ ░▒▒▒░ 15 | ░▒▓█▒▒▓ 16 | ▒█ █▒▓ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_15.txt: -------------------------------------------------------------------------------- 1 | 2 | █████░▒ 3 | ░█▒░░▒▓██ 4 | ▓▓░█▒▒░ █░ 5 | ░▓░ ▓▓█▓▒▒░ 6 | ░░▒ ▒▒░░▓ ▒░ 7 | ▒░░▓░░▓▓░ 8 | ░░ ░░░░░░█░ 9 | ░░▓░░█░░░ █▓░ 10 | ░░████░░░▒▓▓░ 11 | ░▒░▓▓░▒░█▓ ▓░ 12 | ░▓░░░░▒░ ░ ▓ 13 | ░██▓▒░░▒▓ ▒ 14 | █░▒█ ▓▓▓░ ▓░ 15 | ░▒░░▒▒▓█▒▓ 16 | ▒▒█▒▒▒▒▓ 17 | ░░ -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_16.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▒█ ███░▒ 3 | ▓▒░░█░░▒░▒▒ 4 | ░▓▓ ▒▓▒▒░░ █▒ 5 | ▓▓▓ ▓█▒▒░▒░░██░ 6 | ░░▓▒▓██▒░░█▓░░▒ 7 | ░░░█░█ ░▒▒ ░ ░▓░ 8 | ▒▒░ ▓░█░░░░▓█ █ ░ 9 | ░▓▓ ░░░░▓░░░ ▓ ░░ 10 | ▒▒░░░█░▓▒░░ ██ ▓ 11 | █ ▒▒█▒▒▒█░▓▒░ █▒░ 12 | ░░░█ ▓█▒░▓ ▓▓░░░ 13 | ░░█ ░░ ░▓▓█ ▓ 14 | ▒░█ ░ ▓█▓▒█░ 15 | ▒░░ ▒█░▓▓█▒░ 16 | █▓▓▒▒▓▒▒▓█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_17.txt: -------------------------------------------------------------------------------- 1 | 2 | █▒███▓▓░█▒ 3 | ▒▓██░░░█▒█░█ ▒█ 4 | ██▒▓▒▒▒░██ ░░░▒ ▒ 5 | ▓░▓▒▓░ ▒░ █░▓▒░░░▒▒ 6 | ░▓▒ ░ ░ ▓▒▒▒▓▓ █ 7 | ░▒██▓░ █▓▓░ ▓█▒▓░▓▓ 8 | █ ▓▓░ █▓▓░▒ █ ░░▓▒░ 9 | ▓ ▒░ ▓▓░░▓░█░░▒▓█ 10 | █▓█▓▒▒▒█░▒▒░▒▒▓▒░░░ ░ 11 | ░ ▒▓▒▒░▓█▒▓░░▒ ▒███▒ 12 | ▒▒▒▓ ████▒▒░█▓▓▒ ▒█ 13 | ▒░░▒█ ░▓░░░ ▓ 14 | ▒▒▒ █▒▒ ███▓▒▒▓ 15 | █ ░██▒▒█░▒▓█▓░█ 16 | ░█▓▓▒██░█▒██ 17 | ░ -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_18.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▒▒█▒▒█▓░█▒ 3 | ▒█ ▒▓███░▒▒█ █▓▓▒ 4 | ▒▓▓░█ █▒ █ ▓▒ █▓▓▒ █ 5 | █░░█▓█▒ █ █▒░▒▓▒░▒▓▒▒▒█ 6 | ▒▒▓▓ ▓░ ▒ █▒▒▓░▓░▒▒▓▒▒▒ 7 | ▓▒░ ██░▓▒▒▒▓███░█▓▓▒▓░▓░ 8 | ░░▒▓▓ █▓█▓░ ▒▓ █░▒░▒█ 9 | ▒▓░░ ▒▒ ░░▓▒ ░▓░ 10 | ▒ █▒▒▒▓▒▓█░░█░█▓▒█ ░█░░ 11 | ▒▒▒░█▒█ ░░▓▒▒▒▒░░░▒▓░░▒ █ 12 | ░▓░▒░ █████░ ▒▒▒▓░▓█▓░▓░ 13 | ▒▒ █▒█ ░░█ ▓█▒█ 14 | ▒▒██▒▒▓ ▒█▒▒▓▒█░ 15 | █░▓████▒▒▒▒██▒▓▒██ 16 | ░░▒▓▒▒█▓█ ▓█ 17 | ░ -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_19.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▒▒▒█░█▒▒░▓▒ 3 | ▒█░░░▒▓▒▒▒▒█▒█░███ 4 | ██▓▓▓ ░██░ ░█▓█░█▓▒ 5 | ▓▓░██▒░ ▒▒▒██▒░██ 6 | ░░▓░▓░ █░▒ ▓ ░▒ ░▒█ 7 | ░▒▓██ ▒░█░▓ ▓▓ █▓█░ 8 | ▒▒░░█ ▓█▒▓░██░ ▓▓▓█░ 9 | ░░░░ ░▓ ▒░ █ ░ ░░░ 10 | ░█░▒█▒▓▓▒▒▒░░░░██▓█░▓ ▒ ░░ 11 | ▒▓▓█░▒█▓▒██▒█░█ ▒▒ ▓▒▒▒█▓▓░▒ 12 | █▒ ▓█░ ██ ▒▒▒▓░▓▓ ▓▓█ 13 | ▒▒▒█▒▒ ░▓▓▒▓▓█ 14 | █ ▒▒░░██ █▓▒▓▓░▓░ 15 | █ ▓░█▓░█▒▒▒▓▓█ ▓█░█ 16 | ░▓▒▓▓█▒█▓▒█▓▒ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_2.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓▒▓▒█▒▒▒██▒ 3 | ▒██▓█▓█░░░▒░░▒▒█░██▒ 4 | █░█░▒██░█░░ ░ █▒█▓░░▓░█ 5 | ▒░▓▒▓████▒ ▓█▒░▓░█ 6 | █▒ ▓█▒░▒▒▒▒▒ ▒█░▒░█ 7 | █▓█ ░ ░█▒█▓▒█ ▒▒░█░ 8 | █░██░ ▒▓░▓░▒░█ ▓ ░ ░ 9 | ░ ▒░ █░█░░▓█ ░█▓▓░ 10 | █ ▒░ ▓░▒▒▒░ ▓░█████████░▒░░█ 11 | ▒▒█░ ▓░░█ ▓█ ░▒▒▒▒▒▒▓▓▒▒░█▓ ░ 12 | ▒▒▒ █ █▒▓▓░█ ░ ███████ ░██░░ 13 | █▒▒▓▓█ ░ ██▓▓██ 14 | ▓▒▒▒░██ █▒▒█ ▒░ 15 | ░░▒▓▒▒ ██▓▓▒▓▓▓▒█░▒░░█ 16 | ░████░░▒▒▒▒░▓▓█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_20.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▒█▒░░▒█▒█▒▒ 3 | █▓▒ ▓█▒█▒▒▒░░▒▒█▒██ 4 | ██ ▒██ ░█ ░ ▒ ▒██░█▒ 5 | ▒░ ▒█░█ ▒██░▒▓█▒▒ 6 | ▒░ █░█ ▒▓ ▒░░▒█▒░░▒ 7 | ▓░█░█ ███▓░ ▓ █▒░░▒ 8 | ▓░▓█░ ██ ▓██▒ █▒░▓ 9 | ░▒▒▓░ ▓▓░ █ ░░ ░ 10 | ░▓░░▓█▒▓▒▒▒▒▒▒▒██▓▒▒▒▒█ ▓ ░▒ 11 | █░▒░▒ ▓░░▒▒▒▒░▒ █▒▒ ░▒▒ █▓ ░░ 12 | ▒█▒▒█ █ ▒█▒░░█░ ▓▒ 13 | █ ▒█▓█ ▒▓█▓░▓ 14 | ▒▒▒██░▒ █▓█░▓██ 15 | ▒█▓▓ ░█▒▓▓█▓ ░ ░█▓██ 16 | ░██░▒ ▒▒▒▒▒░█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_21.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▒█▒█▒▒█▒██▒▒ 3 | ███░░▒▒█░▒░█▓▒░▓██▒ 4 | ▓█▒▒██▒ ░ ░▒░██▒░██ 5 | ██░▓ █ ▒█▓██▓██ 6 | ▓█▓█░ █░▓▒▒ ▒▒▒▒█ 7 | ▓ ▓░ ███▒▓▓ ▒▒▒█ 8 | ░█░░ ▒ ▓░█▓█ ▒▓▒ 9 | ░▒ ▒▓ ░█ ░ ░ 10 | ░ ░ ██▓▓▓▓▓███ ▒░█ ░█ ▓▓ ░ 11 | ░ ░▒ ░▒ ▒█░ ▒ ░█░█ ▓ ▓▓ 12 | ▓ ▓ ░░ █░ ██▒█▓ ▓░ █ 13 | ██ ▓▓▒ ▒█ ▓ 14 | █▒ ▒▓▒ ▒▓▓██ █░ 15 | █▒▒ █ ██▓░░▓▓▒█ ▓░ 16 | ███▓█▒▒▒▒█▒▓██░ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_22.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒██▒█▒▒█▒██▒ 3 | ▒█▓█░▓▒▓░▓▒░░▓░█▓██▒ 4 | █▓█▓░▒██░ ░ █▒███▒▒██ 5 | ▓█░██ ██░░░▒█▒ 6 | ▒░░▓█ █▒▓░▒░▓▓▓█░ 7 | ▒░█▓░ █░▓░▓▒▓░ ▒░▒▒░ 8 | ░██▒▓ ░█░▒█▓█ ░░▓░ 9 | ░░▒░░ ░▒░░▒▒ ░▒░ ░ 10 | ░░█ █ █░▒▒▓▓▓▒██▒▒█░▒ ▒█ ▒░▓ 11 | ▒░▒ █▒▒▒█ ▓█ ░▓▓░ ▒█▓▒ ░██ ▓▒▒ 12 | ▒▒▒▒░ ██ ░ ░▓██▒▓▓▓ █░ 13 | ▒█▒▒▒█ ▒██ ░██ 14 | █ █▓ ██▒ ▒▓██ █▒▓ 15 | █▓███ █░▓▒█▓▓▓▒█ ███ 16 | ░ ░▒▓▒▒▒▓▒▒▓▒█░ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_23.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒██▒▒████▒█▒▒ 3 | ▒▒░█░▒▒█▒▒▒█░▒░█░█▒ 4 | █ █░██▓█░ ░▓█░▒▓░░█ 5 | ▓▓░█▓▓░ ▒▓▓▒░░▓▒ 6 | ▓▓░░▓█ █▓████▓█▒░▒ 7 | █▒░ ▓░ ▒█████▓██░░▒░█ 8 | ░░░ ░ ▓▓▓▓ ▒░░ ░██ 9 | ░▓░ ░ ░ ░█▒▒█ ░ █▓░ 10 | ▒ ▒ ░█░▓▒▒▒▒▒▓▒░▒█░▒ ▒▒ ░ ░░░ 11 | ░▒▒▒░ ▒ ▓░▒ ▒░▒▒█░ ▒▒░ 12 | ▓█░ ░ ░ █░▓▓▒░▒▓▒▓░ 13 | █░░▒░▓ █▓░▒▒▓░ 14 | ▒ ░██▓▒▒ ▒▓ ▓█▓█▓ 15 | ▒▒▒█▓██▒░▒▒▒██ ▓▒██░ 16 | ░ █▒▒░▒▒█▒▒██░ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_24.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒░▒▓███▒▒█▒ 3 | █ ▒▓ ░▒▒░▒▒██▒██ 4 | █ █▓▒▓█ ░ ▓░▓█░███ ▒ 5 | ██▓▓█▓░▒█▒░░▓░ ▒█▒░▒▒█ 6 | █ ▓▓▒▓█ ░ ▓▒▒░░░▒░██ 7 | ░█▒█▒░ ███▓ ▓░▓ ▓ ▒ 8 | ░ ░░ █▓▒█▓ ▓▒▒░▒▒░▒ 9 | ░ ▒░░ ░█▒▓▒▒░░▒▓▓░░░ 10 | ░▓ ░▓▓▓▓██░░░██▒██▒░ ░ ░░ 11 | ▒ ▓ █░▓██▓▓██░▓▒▒██░ ░█░ 12 | ▒ █▒░▒█ ░ ▒█▓█▒░▒▓█░ 13 | ▒ ▒██▒ ░ ▓▓▓ 14 | ▒▓█▒░░▓ ▒▒ ▒▓▓▒█ 15 | ▓▓██▒▒ ░░▓▒▒▓░▒▒▓░ 16 | █▓▒██▓▒▒▒▒▒██ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_25.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒█▒█▓████▒ 3 | █ ███░▒▓▒░█░░█ 4 | ▓░▓▓██ ▓░█▒▒▒░░░▒ 5 | ░██░ ▓ ▒░ ▒░██▒▓ 6 | █▒▒▒█▓█▒▓▓▒░ ░▓▓▒▓█ 7 | ▒█░░░▒██▓▒░▓ ▓░█░▓▓░█ 8 | ░▓░█░ ░▒▒▓▒▒▓░▒▓▒ ░▒░ 9 | ░░░▓░▓ ░▒▒▒▓░▒▒░▒░░▒ 10 | ▒█▒░ ░▒▒▒▒▒▒█░░▒▒░██░▒ 11 | ▓▓ ░▓░█░▒░░▓█▒░▒█▒▓▒░ 12 | ▒░█▓▒░░ ██▓░▒░▓░░ 13 | ░▒ ░▓█▓▒▓██▓▒▓█▓▓░▓ 14 | ▒░▒░▒▒▒█▓▓█▒▓▒░░▓ 15 | ▒▓▓▒▒▒█▒░██ █░█ 16 | ░█ █▒██▒█░█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_26.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓███ ██ 3 | ▓█░▓▓▒░█▓░█ 4 | ▓█ ░▓▒░▒ ▒█ 5 | ▓█ █░░░▒░░▒█▓▒ 6 | ░▒█▒░▓░ █▒▓▓░▒▓ 7 | ▒ ░▓▓▓ █▒▒ ▒▒▓ 8 | ░ ██▒░░▓░░▓▓ █ 9 | ▓▓ ▒░░░▒▒▒░░▓░░ 10 | ░ ▓▒█▓█░█▒▒▓▒░░ 11 | ▓▒░▓█░▒▒██▒▒█░ 12 | ░░ ▓░█ ▒█▓░█▒░░ 13 | ▒▒░░▓▒ ▓▓ ░░░ 14 | █ █░▒ ▒░▓░▓█ 15 | ░ █▒▒ █▒██▓ 16 | ▒▓▓▒█░▒▒█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_27.txt: -------------------------------------------------------------------------------- 1 | 2 | ▓█████ 3 | ░▓▓▓░▓▒ 4 | ▓█░ █░▓█░ 5 | ░░░▒░░▓░░ 6 | ░ ░░▒▓█▒ 7 | ░▒▓▒ ░░░░░ 8 | ▒ ░░▒█░░ 9 | ░ ░░░░▒ ░░ 10 | ░▓ ▓ ░█░░░░ 11 | █▒ ▓ ▒░▒█░░ 12 | ░▓ ▒▒███▓█ 13 | ░░██░░▒▓░ 14 | ░▒▒█▒█▓░▒ 15 | ▒▒▒░▒▒▓▓ 16 | █▒ ▒▒▓ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_28.txt: -------------------------------------------------------------------------------- 1 | 2 | ▓██▓ 3 | ░█▒░░ 4 | ▒ ▓░░ 5 | ░▓░█░ 6 | ░ ░░ 7 | ░ ▓ ░ 8 | ▒░░ ▒░ 9 | ░▓ ░ 10 | ▓▒ ▒░ 11 | ░░▓▓░░ 12 | ░ ▒░ 13 | ░▒█▒░ 14 | ░▒█░░ 15 | █▒▒▓░ 16 | ░ ▓█░ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_29.txt: -------------------------------------------------------------------------------- 1 | 2 | ██████ 3 | █░█▓ █▒ 4 | ▒█░░ █ ░ 5 | ░░░░▒▒█▓ 6 | ▒ ░ ░ ░ 7 | ░█░░░ ▒▒ 8 | ░▒▒░░░ ▒ 9 | ░░▒░░ 10 | ░░░█░ ░ 11 | ▒░▒░░ ░ 12 | █░░▓░▒ ▒ 13 | ░▓░░░ ▒░ 14 | ░░░░░░▒░ 15 | ░▒░█▓ ░█ 16 | ░░█ ▓█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_3.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓▒▓██▒▒▒▒█▒ 3 | ▒██▓▒░░█░ ▒▒░▓▒▒░██▒ 4 | █▓▓█▓░█ ░ ░ ░ ███▓▒░█ 5 | ▓█▓▒░▓██▒ ░▒█ ░░▒ 6 | █▓█░▓▒▓░░█▒▒ ▒▒▒░░▒ 7 | ▓░▒▒▓ ▓█░▒▓▒▒ ░ ▒▒░ 8 | ▒█ ░ ██▒░▒ ░█ ▓█▓░█ 9 | █▓░█░ █▓░ ▓▒░ ░▒░▒░ 10 | ▓ █░ ▓░██░░█▓░▒██▒▒▒██▒░▒ ▓░ 11 | █▒▓▒█ ▓▓█▓▓▓░ ░█░▒▒█ ▒▓█▓▒░░▒░░ 12 | █▒░ ░ ░░██ ███ ███▓▓▓█▓ 13 | ██░ ▒█ ░ ▓▒█▒▓▓ 14 | ▒▒▓▓█▒█ ██▓▓ █░█ 15 | ▒▒██▒██▒▒▓▒▓█▓▒█▓░▒█ 16 | ░███▒▓░▒▒▒▒░▓▓▒ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_30.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓ ████ 3 | ▒▓▓░░▒██▒▒ 4 | █▒░█▒▒░██▒ 5 | ░░▒░▓░▒▒░▒ ▒█ 6 | ▒█░░░▒░█░█ ░ 7 | ░█░▒█ █░░░░▓░ 8 | ▒▓░░░▒▒ ▒▓▒░ ▒░ 9 | ░ ██▒░█░ ░▓ ░ 10 | ░▒ ▒░▒░▒▓░█ ░ 11 | ░░▒░▒▒░░ ██ ░ 12 | ▒░░▓▒▒█░░░█░░ 13 | ░█▓▓█▓█▒░░ ░ 14 | ▒░▒░░▓█░░█░▓ 15 | █▒██▒▒▓░█▓█ 16 | ▒▓▓░▒▒▒▓█ 17 | ░░░░ -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_31.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓▓████▒█ 3 | ▒██▓██▒ █▒███ 4 | █░▒▓▓█▒▒░▓ ░▒█▒ 5 | █░▓█▒▒█▓▒█▒▒░▒░░▒ 6 | ▒░░░░█▓█▒▒█ ▒░▓▒▒ 7 | ▓░▒░░▒░█ ▒▓██▓▓░█ ░ 8 | ▓░░ ░▒█░▒▓▒▓▓█░█░▓░ 9 | ▒▒█ ░░ ░▒ ░▒ ░░▒▓░ 10 | ░▒█▒░█▒░░░▓█░░░▒ ░ 11 | ░░░▓▓░░▒▒▒▒▒░▒░░ █ 12 | ▒█▒▓█░█ ▓███░▓░█░▒ 13 | ░░░▒▒▒█ ▒▒█ ░ 14 | ▓░█▒▒ █ ▓ ░█░▓░ 15 | ▓░▒░▓▒░░█░ █░░ 16 | █ ▒░▒██▓▓▓█ 17 | ░░░░ -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_32.txt: -------------------------------------------------------------------------------- 1 | 2 | █████▓▓░█▒ 3 | ▓█░██░▒░░██░░█ 4 | ▓▒█▒▒██▒▓▓░█░█▒███ 5 | █▓▓░▒█░▓▓ ▓ █▒▒░██ █ 6 | ▓▓░█░█▒██░▓ █░█░▒▓▒█▒█ 7 | ▒▓▒▒█▒█░░▓░░█▒ ░█▓ █ 8 | █░ ▓█░█▒░░██░█▒░▓▒▓▓░█▒ 9 | ░░░█▒ ▒░░ ▓█░▓▓▒ ▒░ ░ 10 | ▒░░▓▒ █▒░ ▒▒░███░░░▒░ ▒░ 11 | █ ▒░░█▒█▒▒▒▒▒▒░░█░▓░▓▒ 12 | █▒█░░▓ ░█ ███▒▓▓▓▓▓▓ 13 | ▒█░▒▒▒ █▒░▓█░ 14 | ███░░░█▒ ▒▓▒░▓ █ 15 | ▒▓▒ ░█░▓▒█░▒█ ▒▓ 16 | ░▓▒▒▒██▓█▒ 17 | ░░░ -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_33.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒██▒█▒█▒░▓▒ 3 | ▒██░░▒█▒░▓░▓░█░█▓ 4 | ▒▓▒░████▒ ░ █▓░░█ █ 5 | █▒▓░▓▒░█▒ █░░▒▒█ 6 | ▒▓░▓░░░▓▒▒▒ ░█▒▒▒ 7 | ▓▓█ ▒▒▒▒░▒█ ▓▒▓▒▒ 8 | ░░█ ▒██░▒░▒ ░█░░ 9 | █░██ ███▒▓▒█ ▒ ░█ 10 | ░░░ ░ █░ ▓████▓▒▒█░░█▓▒░▒░ 11 | ▒▓░█ ▓▓█▓░░░▒▒▒▒▒░░█▒▒▒░░▓ 12 | ▒▒▒█ ░▓░▓ ▓ ███ ░░█▓▒░ 13 | ▒█▒██ █ ▓▓▓▓▒▓ 14 | █▒ ███▓█ ▒█░█▓█▒█ 15 | ▒░ █▒█░█▓█▒ ▓█▒█░█ 16 | ▒▒██▒▒▒▒██▓▓ 17 | ░░░░ -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_34.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒█▒████▒░█▒ 3 | ▒███▓▒▓░ ░██▒██▓█▒▒ 4 | ▒▓▓█░█ ▓░█░ ░▒▒▒█ ███ 5 | █▓▒░█▒▓█▒ █░██▒▒ 6 | ▓▓░▒▓▓░ ░ █ ▒▒█▒▒ 7 | █▓▒░░▓ ▒▒ ░▒█▒ ▒█▒░▒ 8 | ░█▒░▒ █▒▒█░▒▒ ░▓░▒ 9 | ▒░▒ ▓ ░█▒░▓ ░ ▓ ▒▒ 10 | ██▓▓ ▓▒▓▓ ▒▒▒██████░▒▒ ░▒░ 11 | ░░▒█▓██▒ ▓▓█░░░▒░▓▒▒▒█▓▒░░░░▒ 12 | ▓▒▒█ ░▒░█▒ ██░░░░▒ █▓█▒░█ 13 | ▓█▒▓▒▒▒ ▓▓▓░▓█ 14 | ▒█░░█▒▓█ ▒█▒ ▒▓█░ 15 | ▓▒▓░ ░██▓██▒█▒█░██▓█ 16 | ░▒▓▒▒▒▒▒▒▓▒█▒▒ 17 | ░░░ -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_35.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒██▓▒███▒██▒ 3 | ██▒█▓░███ ░█░▓ ░█▒▒ 4 | ▒▓▓░▓██░▒█ ░ ░ █▒█▓ ░██ 5 | █▓▓█▓█▓█▒ ██▒▒░▒ 6 | ▓▓░░▓▓▒ ▒██ ░▒█░█ 7 | ▓▓▓▓█░ █░▒ ▓▓█▒ ░▒▒░ 8 | ▒ ▓▓ ▒▒ ██▒▓ ░▒▒▒ 9 | ░░░▓ ▓▒▒▓▓█ ▓ ▓ 10 | ▓ █▒ █░░▓▓ ▓░▒▒▒▓▒▒█░░ ░░▒█ 11 | ░█▒▓█ ▓▓▓ ██▓░▓ ▒█▒▒▒▒▓ ░▓█ ░█ 12 | ▓░▒██▓▒▒░▓▒░ ░ ▒▒▒▒█▒▒█▓▓▒█░ 13 | ▓▒▒▓░ ▒▓█ █▒ 14 | ▒▓░▒▓█▓█ █▓▓▒███ 15 | ▒▒ ░█░▓▓░░█░▓▓█ ▒▓▓ 16 | ▒░▓▒▒▒▓▒▒███ ▒ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_36.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▒█▒████▒██▒ 3 | ▒▒ ▒█▓▓▓█▒█▓██ ███▒ 4 | █▒█▒███▓█ ░░ ░ █░██░██░█ 5 | ▒░ ██▒▒▒▒ ██░▒ ░ 6 | █▓▒▓▒█░▒░▒█▓ ▒▒▓█ 7 | ▓ █▓░ █▒ ░▓█ ▒▒█ 8 | ░ ▓ ░ ▒ ▒▒ ░▒░█ 9 | ░░▒░ ▒▒ ▒▓▓ ▒░ ░ 10 | ░█ ░ ▓▓ ██ ████▒█████▒ ░▒░░ 11 | ▒█░▒ █░▒▒▓░▓ ░░▒▒▒▒▒▒▒░░ ▒▓█░ 12 | █ █░▒ █▒█▓▒ ██▒▒▒▒▒ ░█ ▓ 13 | ██ ▒▓▓ █▓░ ▓ 14 | ▒▓░░█░█ ███ ▓█░ 15 | ██▒ ██▒▒▓░▒█░▓ ▓ █▓██ 16 | ░██▓░▒██▒██████ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_4.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓▒▓█▒▒█▒██▒ 3 | ▒▓ ██░▓ ░▒▒▓█▓░ ▓██▒ 4 | ██▒░░░██ ░ ░▒░▒▒█░▓▒▒▒ 5 | ▓▓░█░ ▓██ ░██▒█▒ 6 | ▓░▓▒░▒░▒▓▒░█ ▒ ▒░█▒ 7 | ▓░░▒░ █▒░░▓█▒ █ ▒▒░█ 8 | ▒░▓░ ███▒█ ░█ █ ▓░ 9 | ░▓▒ █░▓█▒░░ ░░░ 10 | ▒░ ░▒ ▓░▓ ▒▓▓█░███▒▒▒▒██ ░░█ 11 | ░▒▓ ░ █▓▓▓█▒░░▒▒░█▓▒█▓▓▒▓░▓▓ ░ 12 | ░░▓█▒█▒▒█▒▓ ████████▒▓░░░░ 13 | █░▒ ░▒░ █▒▓▓███ 14 | ▒▒█▓▒ █▒ ▒▓▒██▓░▓ 15 | ░░░▒▒██▒▓▓▒▓██▒██▒░█░ 16 | █▒▒░▓░▒▒▒▒▒▓▓█░ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_5.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓▒▓▓█▒▒▒██▒ 3 | ▒█ █▓█▓░░█░▒█▓▒░ ██ 4 | █▒▓▒█░█ ░ ▒▒░█▒ ███ 5 | █░▓░▓░▓▒█ ▓▒░░░░▒ 6 | █▒▓█▓▒▒█░▒▒█ ░ ▒░▒░▒ 7 | ░░░░▓ ▒▒░▒▓▓░▒ █▓░░ 8 | ░▓░ █ ░▒▒░▒ ░█ ██░█░█ 9 | ░▓░▒ █▒▒░▓▒░ █░▒░ 10 | ░█░▒█ ▓▒░ █░█▒▒░█░▒▒▒██▒ ░▓░ 11 | ▒▒░▒██▓██ ░ ▓▓▒▒▒█▒▓█▓░▓█░░ 12 | ▒█░░█░█▒▒▓█░ ██ █░▓░▒▓ 13 | ▒▒█▓▒▒ ░ ▓▒▓██▒ 14 | ▒▓█▒░▒█▒ ▒▒████▓█ 15 | ▒░█░███▒▓░▒▒██▒█▒░▓█ 16 | ▒▓█▒█ ▒▒▒▓▒███░ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_6.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓▒▓▓█▒▒██▒▒ 3 | █▒▓▓█░▒██░██▓▒███▒ 4 | ███░░░█ ░ ░▓▒███▓▒▒ 5 | ▓█░█░█▒▒█ ▒█░░░░█ 6 | █▒░░░█▒▒██▒ ▓▒▒░▒█ 7 | ▓▓▓░▓░▒█▓░▒▒░█ ▓▒▒▓░ 8 | ▒ █░░ ▒▒░▓▒▒ ▒█░▒░ 9 | ░ ░░░ ▒░▒░▓░░ ░█▒░░ 10 | ▒▓░▓░ ▓█░░█▓▓█▒░█░▒▒██▒▓▒▓░ 11 | ░░▒█▓▒▒▒▓█ ░▓▒██░░█▓▒▒▒░█░▒ 12 | ▓ ░ ▓░░░▓▓ █ ██ ░▒▒▓░ 13 | █ ▓ ▓█░ █▓▒▓▓░░ 14 | ▓░▒▒███ ▒█▒▒▓███ 15 | ░ ░██ █ ▓░▒▒████ ▓▓█ 16 | ▒▓▓███▒▒▒░▒███ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_7.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▓░▓██▒▒██▒ 3 | ██░█▒░███▒▒▒▓ ░██ 4 | █ █░░░█░ ░▒░░ █▓▒██ 5 | ▒▒░░░░▓█ ▒░▒█░▓█ 6 | ░█░█░░▒░▓▒█ ▓ █░░▒ 7 | ░ ▓░░ ░█▒▓░▒ █▓░░░ 8 | ░▒ ░ ▒▒░▒░▒░ ██▒░░ 9 | ▒ ▓░░ ▒█▓░█░░ █ ░░░ 10 | ▓ ░█ █ ▒▓░▒▓░░▓▓▒░░▒▓█▒░░ 11 | ░██░░▒▓░░▓█░▓▒░░▒▒█▒█▓▒░▒░ 12 | ▒ ▒▒▓█░█▒▓ ██████ ▒▓░░ 13 | █▒ ▓▒▓▒░ █ ▓▓▓▓█ 14 | █▓██▒▒▒▒ █▒░██▓██ 15 | ▒▒█▒░█▒▓░▒▒▒██░██▓ 16 | ░█ ░▓░▒▒█▒▓██ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_8.txt: -------------------------------------------------------------------------------- 1 | 2 | ▒▒█▒▓██▒██▒ 3 | █ █▓░░░█▒▒ ░ █ 4 | ▒░▒█░▓▓█ █ ░▓░█▒█▒█ 5 | ▒█▒█▓░██░ █ ▒▒░░▒ 6 | █ ▓░▓█▒░▓▒ ▓█▒░░█ 7 | ░██░▒▒▒▒▒░▒█ ▒█░░░ 8 | ░█░░░ █▒▓▒░░░ ░▒░▓░█ 9 | ▒█░░▓ ░█▒▓░██▓ ▓░▓░░ 10 | ▒ ▒░░▒▒ ▓█▒░░▓█████▒░░░ 11 | ▒█▓▒▒░ █░█░░▓░▒▒▒░░▒█ 12 | ▓▓▒▒░▒░░░▓█▒█▒█ ▒█ ▓▒░ 13 | ██ ░▒░░░ ▓█▓▓▓█ 14 | █▒▒█▒▒▒▒ ▒▓▒▒░█▓█ 15 | ▓▓█░██ ▓▓██▓▓▒█░░ 16 | ░░▒██▒░▒██▓▒░ 17 | ░░ -------------------------------------------------------------------------------- /codex-rs/tui/frames/blocks/frame_9.txt: -------------------------------------------------------------------------------- 1 | 2 | ▓▒▒█▓██▒█ 3 | ▓█▒▓░░█ ▒ ▒▓▒▒ 4 | ▓ █░░▓█▒▒▒▓ ▒▒░█ 5 | ░░▓▓▒▒ ▒▒█░▒▒░██ 6 | ▓█ ▓▒█ ░██ █▓██▓█░░ 7 | ░ ░░░ ▒░▒▓▒▒ ░█░█░░░ 8 | ░ ░█▒░██░▒▒█ ▓█▓ ░░░ 9 | ░ ░▓▒█▒░░░▒▓▒▒▒░ ░░ 10 | █░ ▓░ ░░░░█░░█░░░ 11 | ░▒░░░▒█░▒░▒░░░░▒▒░░░ 12 | ░▒▓▒▒░▓ ████░░ ▓▒░ 13 | ▒░░░▒█░ █▓ ▒▓░░ 14 | ▒█▒░▒▒ ▓▓▒▓░▓█ 15 | ▒▓ ▒▒░█▓█▒▓▓█░░ 16 | █▓▒ █▒▒░▓█▓ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_1.txt: -------------------------------------------------------------------------------- 1 | 2 | eoeddccddcoe 3 | edoocecocedxxde ecce 4 | oxcxccccee eccecxdxxxc 5 | dceeccooe ocxdxo 6 | eedocexeeee coxeeo 7 | xc ce xcodxxo coexxo 8 | cecoc cexcocxe xox 9 | xxexe oooxdxc cex 10 | xdxce dxxeexcoxcccccceco dc x 11 | exdc edce oc xcxeeeodoooxoooox 12 | eeece eeoooe eecccc eccoodeo 13 | ceo co e ococex 14 | eeoeece edecxecc 15 | ecoee ccdddddodcceoxc 16 | ecccxxxeeeoedccc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_10.txt: -------------------------------------------------------------------------------- 1 | 2 | eccccecce 3 | ccecccexoeco 4 | eeoxxoxxoxceoo 5 | xeeoexdeoeocceeo 6 | o dxxcxe cooeoxo 7 | xe cxcxooe eecx 8 | e xcccxxxxc xoo 9 | c xxecocxxoeeoexx 10 | c xe eexdxxcecdxx 11 | x oxeoxeoeceeexce 12 | o cxxxxxcc eocexe 13 | eecoeocc exccooo 14 | xc xxxxcodooxoe 15 | deccoxcde ooc 16 | co eceeodc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_11.txt: -------------------------------------------------------------------------------- 1 | 2 | occcccce 3 | oc dxxxeeo 4 | oceexxdecoeo 5 | xeexxddoedoo 6 | ecodexcecdexxo 7 | xcexxceddxeoxx 8 | cc oxxxxxxexde 9 | x xxoxxeo xcx 10 | o cxoxxcocxex 11 | cc exodocoxexe 12 | ceo xxxxdoxeex 13 | eeooxecoccdxe 14 | e cxeeeexdc 15 | ec cxxoeoce 16 | ee cccece 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_12.txt: -------------------------------------------------------------------------------- 1 | 2 | ccccco 3 | odeeoxoe 4 | c xoeco 5 | ocxxxddcx 6 | x cxxxxoox 7 | xcoocecexc 8 | x xoexxe 9 | x ocexxc 10 | co xoxxcxx 11 | x oxcdce 12 | xo xcdcco 13 | o cx eox 14 | o ccxocex 15 | ceocoxexe 16 | e cxeoo 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_13.txt: -------------------------------------------------------------------------------- 1 | 2 | occco 3 | xeexx 4 | xeexc 5 | xccxe 6 | c xx 7 | cdoxx 8 | o xx 9 | c cx 10 | oc exo 11 | xc cdx 12 | ceoo xe 13 | xeeex 14 | xcoxe 15 | ceexd 16 | o ocd 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_14.txt: -------------------------------------------------------------------------------- 1 | 2 | ccccd 3 | ooeeoe 4 | xexxo x 5 | xxoxcexo 6 | xxxe x 7 | xcxx cx 8 | xxxx o c 9 | xxexe e 10 | xxxx c 11 | ceoo do 12 | exccooox 13 | xcxxeeex 14 | o cxddde 15 | xeoceeo 16 | ec cdo 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_15.txt: -------------------------------------------------------------------------------- 1 | 2 | cccccxe 3 | eodxxedco 4 | ooxcdexccx 5 | xoe ooooeex 6 | xxdcdexxocex 7 | exxoxxoox c 8 | xx xxxxxxox 9 | xxoxxcxxx cox 10 | xxcoocxxxeodx 11 | xexdoxexco ox 12 | xoxxxxex e d 13 | xccoexxeo d 14 | cxeo oooe de 15 | xexxeeoceo 16 | eeceeeeo 17 | ee -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_16.txt: -------------------------------------------------------------------------------- 1 | 2 | edcccccxe 3 | oexxcxxexde 4 | xooceodexx ce 5 | ooo dceexexxccx 6 | xxdeoccdxxcoxee 7 | xxxcxc xed x xox 8 | eex oeoxxxxocco x 9 | xod xexxoxxxcd ex 10 | eexxxcxoexxccc o 11 | cceeoddecxoex oex 12 | xxxcccocexdcdoxxe 13 | xxc xe eooo o 14 | exc x oooeox 15 | exxcecxoocex 16 | cdoeddeedc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_17.txt: -------------------------------------------------------------------------------- 1 | 2 | odcccddxoe 3 | edccxxxcdcxoceo 4 | oceoeddecocxxxece 5 | oxoeoxcee cxdexxxde 6 | xoe x xcoedeoo o 7 | edcooe odox oodoxoo 8 | c dox oooxe ccxxodx 9 | ocdx ooxxoxoxxddc 10 | oocoeddcxeexeedexxx x 11 | xcedeexoceoxxe eccce 12 | eeeoccccccceexcooe ec 13 | exxec eoxxe d 14 | eee cee ocooeeo 15 | o xccdeceedcdxc 16 | ecdoeocxcecc 17 | e -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_18.txt: -------------------------------------------------------------------------------- 1 | 2 | eddcddcdxoe 3 | eccedoccxeeoccdde 4 | eodxcccdcocoeccooe c 5 | oxxcooecc ceeeodxedeeeo 6 | eeoo ox ecceeoxoxeedeee 7 | oex ooxoeeeoocoxcooeoeox 8 | xxedo cocoxceoccxdxdo 9 | ceoxx eecxxde xdxc 10 | ecc oedddddcxxoxcoeo xcxe 11 | eeexcec xxoeeeexxxedxee o 12 | xoxeeccccccce eeeoxocoeoe 13 | ee oeo eeccocec 14 | eecceeo eceeoeoe 15 | cxoccccdddecceoeoc 16 | cxxeoeeooccdcc 17 | e -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_19.txt: -------------------------------------------------------------------------------- 1 | 2 | eeddcxcddxoe 3 | ecxxxeodddeceoxcoo 4 | ocddocxcce ecdoecde 5 | odxcoee eddcoexco 6 | xxoeoe oxecocxe xeo 7 | xeocc excxo oo cocx 8 | edxxc oceoxcoe odocx 9 | xxxx xdcexco x xxx 10 | xcxeoddddddxxxxccdcxd e cxx 11 | edooxdcoecceoeo ee deeeoooxe 12 | cecocxcccccccc eeeoxoo ooc 13 | eeecee eooeooc 14 | c eexxco oddooxde 15 | ccoxcoxceeddocc dcxc 16 | cxoedoceooecoe 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_2.txt: -------------------------------------------------------------------------------- 1 | 2 | eoeddcdddcoe 3 | ecoocdcxxxdxxdecxcce 4 | oxcxeccxcee eccdcoxxdxo 5 | exoeoccooe ooexoxo 6 | oecocexeeeee eoxexo 7 | cocce xcecoec eexcx 8 | oxccx eoxdxexo ocxcx 9 | xc ee oxcxxdc xcoox 10 | cccdx dxeeexcoxccccccccoxexxc 11 | edcx oxxc oc xdeeeeeooeexco x 12 | eee c ceooxc ecccccccccxocxx 13 | ceeooo e ocdooc 14 | oeeexco odec exc 15 | exedeecccdddddodceexxc 16 | eccccxxeeeexdocc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_20.txt: -------------------------------------------------------------------------------- 1 | 2 | eecdxxdcdoee 3 | oddcdoeodddxxeececo 4 | oocecccxcc ecececcxce 5 | excecxc eocxeocee 6 | ex oxc eo exxecexxe 7 | oeoxc cccdxco cexxe 8 | dxdcx oc occe oexo 9 | xeeoe ccddxco xxcx 10 | xoxxdoddddddddeocdeeeec o xe 11 | cxexec oeeeeeexe ceecxde oo xx 12 | eoeecccccccccc eodxxox oe 13 | c ecoo eocoxo 14 | eeecoxe odcedcc 15 | eooocxceddodcxceoocc 16 | eccxe deeeexccc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_21.txt: -------------------------------------------------------------------------------- 1 | 2 | eeodcddcdcoee 3 | occeeeecxdxcdeeocce 4 | dceeccece eexcceeco 5 | ocxdcc eodcodco 6 | oooce oxoee eeeeo 7 | ocox occeoo eeeo 8 | xcxe e oeooc edec 9 | ee ed cxo x x 10 | x x ocdddddccc exocxo do x 11 | x xe xe eox ececxo ocoo 12 | d co eeccc ce cceod oe o 13 | cc dde ecc o 14 | ce eoe eodcc oe 15 | cde ccccdxxdddccc oe 16 | cccdceeeeoedcce 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_22.txt: -------------------------------------------------------------------------------- 1 | 2 | eocdcddcdcoe 3 | ecocxoeoxoexxdxcocce 4 | odcdxecce ecceccceeco 5 | dcxccc ooxxxece 6 | exxoc oeoxdxoodcx 7 | excoe oxoxdeoe exedx 8 | xcceo xcxecoc xxox 9 | xxdxe xexxee xexcx 10 | xxoco cxddddddcceecxe eo exdc 11 | exd ceeeo oocxoox ecdecxoo oed 12 | eeeex cccccccce edcceooocoe 13 | eceeeo ecocxoc 14 | cccd cce eococceo 15 | cdccoccxddcddodccccoc 16 | cxcxedeeeodeodce 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_23.txt: -------------------------------------------------------------------------------- 1 | 2 | eocedccccdcee 3 | edxcxeeoeddoxexcxce 4 | occxcodce cxdcxedxxo 5 | odxcdoe eddexxde 6 | ooxeoc ooooccocexe 7 | oexcoe ecccccoccxxexo 8 | exxcx odoo exe c xcc 9 | xox x xcxoeeo x cox 10 | ece xcxddddddddxecxecee x xxx 11 | xeeexcdc oee exeeox eex 12 | ocx x eccccccc ceoddxeoeoe 13 | oxxexo ooxeeoe 14 | e xocoee eocdcoco 15 | edecdccexddecccoecce 16 | cx cdexeeceecce 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_24.txt: -------------------------------------------------------------------------------- 1 | 2 | exedcccddoe 3 | oceocxeexddcoecc 4 | occdeoccx oedcxcco e 5 | ocooooxdoeexoe ecexeec 6 | o ooeoo eccoeexeeexoc 7 | xoecee cooo oxd oce 8 | x xx ooeoocoeexeexe 9 | x exx xodoeexxeooexx 10 | xo xddddccxxxccecoex x xx 11 | e o cxoooddooxoeeccx xcx 12 | e cexeccccccce eoocexdooe 13 | e eoce x codo 14 | eoceexo edceodec 15 | oocoeecxxddddxeeoe 16 | cdeccdeeeddcc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_25.txt: -------------------------------------------------------------------------------- 1 | 2 | ecdcdcccce 3 | o coceedexcxxo 4 | oxoooocoxcedexxxe 5 | xccx o dx cexoceo 6 | oeeeoocedoexc xooeoc 7 | eoxxxeccoexd oxoxooxo 8 | xoxcx xeeoeeoxeoecxdx 9 | xxxoxoc xedeoxeexdxxe 10 | ecexcxeeddddcxxeexccxe 11 | oocxoxoxexxdcexecdoex 12 | excoexecccccccoxexoxe 13 | xecxdcdeoocdeooooxo 14 | eeexeeecdooeoexxo 15 | eodeeecdxcc cxc 16 | xoccecoecxc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_26.txt: -------------------------------------------------------------------------------- 1 | 2 | edccccco 3 | ocxdoexcdxo 4 | occcxdexecceo 5 | dccoxxxexxecoe 6 | xeoexoxcceodxed 7 | e cxodocceeceeo 8 | x ccdxxoxxddcc 9 | oo exxxeedxxoxx 10 | x oecdcxcddoexx 11 | oexooxeeoceecx 12 | xecoxcceooecexx 13 | eexxoe oocxxe 14 | c cxe eeoxoo 15 | xcceecceccd 16 | eodecxeec 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_27.txt: -------------------------------------------------------------------------------- 1 | 2 | dcccco 3 | xddoxoe 4 | dce cxocx 5 | xxxexxdxx 6 | x exeocd 7 | xeoecexxxe 8 | d cxxecxx 9 | x exxxdcxx 10 | xo o xcxxxx 11 | cd ocexecxx 12 | xo eecccoc 13 | xxccxxeox 14 | xddcdooxe 15 | eeexedoo 16 | cec eeo 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_28.txt: -------------------------------------------------------------------------------- 1 | 2 | occd 3 | xcexe 4 | d dxe 5 | xoecx 6 | x xx 7 | x ocx 8 | exx ex 9 | xoccx 10 | oe ex 11 | xxodxx 12 | x ex 13 | xdcdx 14 | xdcxx 15 | ceeox 16 | x ocx 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_29.txt: -------------------------------------------------------------------------------- 1 | 2 | ccccco 3 | oxco ce 4 | eoxx ccx 5 | xxxxeeoo 6 | e xcx x 7 | xoxxx ee 8 | xeexxx e 9 | xxdxx 10 | xxxcx e 11 | exdxx e 12 | cxxoxe d 13 | xoxxx ex 14 | xxxxexex 15 | xdxcocxc 16 | xxc oo 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_3.txt: -------------------------------------------------------------------------------- 1 | 2 | eoddccddddoe 3 | ecooexxcxcddxdeexcce 4 | odocdxccce ecx cccoexo 5 | ocoexdoce edc xxe 6 | cocxoeoxxcee eeexxe 7 | oxeeo ooxedee x eex 8 | dc x ccexecxo ocoxo 9 | ooxox ooxcoex xexdx 10 | occx dxccxxcoxdcceeeccexecdx 11 | oedeo oocoddx xcxeeo doodeexexe 12 | cex x cxxcoc cccccccccoooooo 13 | ccx ec e oeceoo 14 | deooceo ocdocoxc 15 | decoecceddddoddcdeecc 16 | ecccedxeeeexdoec 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_30.txt: -------------------------------------------------------------------------------- 1 | 2 | edcccco 3 | eodxxeccde 4 | ccexoeexcoe 5 | xxexoxeexe eo 6 | dcxxeexoxo x 7 | xcxec cxxxxox 8 | eoxxxee eoex de 9 | cx ccdxoxcxo e 10 | cxecexdxeoxo e 11 | cxxexeexx co e 12 | exxdeecxxxcxx 13 | xcoooocexxc x 14 | exexxocxxoxo 15 | oeocdeoxooc 16 | eooxeeedc 17 | eeee -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_31.txt: -------------------------------------------------------------------------------- 1 | 2 | eodccccdo 3 | eccdcoeccecco 4 | oxeooodeeocxece 5 | oxoceecdeoeexexxe 6 | exxxxcoceeocexoee 7 | dxeexexccedcoooxocx 8 | oxx xecxeododcxcxox 9 | eeo xxcxe xeccxxeox 10 | xeoexcexxxocxxxe x 11 | cxxxooxxeeeeexexx c 12 | eceocxo occceoxcxe 13 | xxxeeeo edc x 14 | dxcde o o xceoe 15 | dxexoexeoxcoxe 16 | ccdxeccoodc 17 | eeee -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_32.txt: -------------------------------------------------------------------------------- 1 | 2 | occccddxoe 3 | dcxccxexxccxxo 4 | oecdeocedoecxcecco 5 | cooxeoedo o oeexco o 6 | ooxoxceccxd ceoxeoeceo 7 | eoeeoecxedxxce xco c 8 | cxcdoecexxooxodeoeooxce 9 | xxxoe cexxcocxdoecexcce 10 | exxoe cexceexcccxxxdxcde 11 | ccceexceceeeeeexxcxdxoe 12 | oecxxo xccccccedooooo 13 | eoxeee oexocx 14 | cccxxxce eoexo o 15 | eoecxcxddceecceo 16 | xddeeococecc 17 | eee -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_33.txt: -------------------------------------------------------------------------------- 1 | 2 | eocdcdcdxoe 3 | eccxxecdxdxoxcxco 4 | eoexcccodce ccoxxcco 5 | oeoxoexoe cxxeec 6 | eoxoexxoeee xceee 7 | ooo eeeeeeo oeoee 8 | xxc eocxexe xcxx 9 | cxoo occeodo ecxc 10 | xxx x oe ocooodddcxxcoexex 11 | eoxccodooexxeeeeexxceeexxo 12 | edeo xoxo o ccccccc xxooee 13 | ececoco oododo 14 | ceccocdo ecxoocec 15 | exccecxodcecdoecxc 16 | cddcoeeeeccdoc 17 | eeee -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_34.txt: -------------------------------------------------------------------------------- 1 | 2 | eodccccdxoe 3 | ecccoedxcxccdccdode 4 | eoooxccdxce eeeeoccco 5 | ooexceooe cxocee 6 | ooxeoox xc o eecee 7 | ooexeo eecxece eoexe 8 | xcexe ceecxee xdxe 9 | exdcd xcexocx o ee 10 | ocooc oeooceddccccccxeec xee 11 | xxeooooecoocxxxexoeeeooexxexe 12 | oeeo xexce ccceeeee oooexc 13 | ooeddee odoxoc 14 | ecexcedo ecdceooe 15 | oeoxcxcodocdcdceccdc 16 | cxeddeeeeeddcde 17 | eee -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_35.txt: -------------------------------------------------------------------------------- 1 | 2 | eocddcccdcoe 3 | ocdcoxccccxcxdcxcde 4 | eooxdccxecce eccdcocxco 5 | ooocoodoe cceexe 6 | ooxxooe ceco xecxo 7 | dodoce cxecooce xeex 8 | e oo ee cceo xeee 9 | xxxd oeedoc o co 10 | o oe oxxodcoxddededcxx xxdc 11 | xoedc oodcccoxd eoeeeeocxoc xc 12 | oeeocoeexoee eceeeeceecooeox 13 | coeeox eoc oe 14 | edeedodo odoeccc 15 | ceecxcxodxxcxdocceodc 16 | cexddeeoeecccce 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_36.txt: -------------------------------------------------------------------------------- 1 | 2 | eecdccccdcoe 3 | edccecodocecdcccccce 4 | oeceoccoccee eccxccxocxo 5 | exccceeee ccxecx 6 | ooedecxeeeoo eeoc 7 | o ooe ce cxoo ceec 8 | x d e e cee xexo 9 | xxex ee eoo ex x 10 | xccx oo occcocceccccce xexx 11 | ecxe oxeeoxo exeeeeeeexx eoce 12 | c cxe cecoe ccceeeeec xoco 13 | cocedo ooxco 14 | eoxxcxo occcooe 15 | coecccdedxecxdcocodcc 16 | eccoxeooeooccccc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_4.txt: -------------------------------------------------------------------------------- 1 | 2 | eoddcddcdcoe 3 | eocccxo xedocdxcocoe 4 | ocdxxxccce eexeecxoeee 5 | ooxoxcoco cxccece 6 | oxoexdxedexo ecexce 7 | oxxex cexxoce c edxo 8 | cexde ccceccxo o cdx 9 | xoe oxocexx xxx 10 | ex xe dxoceoocxccceeeeoo xxc 11 | xeo x oooooexedexooeodoedxoocx 12 | exdceoeeoeo ccccccccceoxxxe 13 | oxecxee oedoccc 14 | eeode oe eoeocdxo 15 | xxxdecceddddocdccexce 16 | ceexdxeeeeedoce 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_5.txt: -------------------------------------------------------------------------------- 1 | 2 | eodddcdddcoe 3 | ecccocoxxcxdcdexcco 4 | ceoecxcce cedxce oco 5 | oxoxoxodo oexxxxe 6 | oeocoeecxeeo e exexe 7 | xxxxo eexedoxe coxx 8 | xox c eeexecxo ccxcxo 9 | xoxec oedxoex cxex 10 | xoxec oexcoxcdexcxeeecoecxox 11 | eexeoooccc xc ooedeodoooxocxe 12 | eoxxoxoeeoce ccccccccoxdxeo 13 | eecoee e oeocoe 14 | eocexdce edcoccdc 15 | excxoccedxdeocdcexdc 16 | eocecceeeoeocce 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_6.txt: -------------------------------------------------------------------------------- 1 | 2 | eodddcddccee 3 | oedocxdccxccdeocce 4 | oooxxxcc ecxodcccoee 5 | ooxcxcedo ecxxxxo 6 | cdxxxceecce oeexeo 7 | dooxoeecdxeexo odeox 8 | e cxx eexoee ecxex 9 | x xxx exdxoxx xcexx 10 | eoxox ocxxcdocexcxeecceoeox 11 | xxeooeeedc xodcoxxodddexoxe 12 | o x oxxxdoc cccccccceeeox 13 | o d ooe odeooxe 14 | oeeecco eceeococ 15 | ecxcocc dxeeoccc ddc 16 | eodccoeeeeeocc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_7.txt: -------------------------------------------------------------------------------- 1 | 2 | eoxdccddcoe 3 | ocecexcccdded eco 4 | c oxxxce eexe coeco 5 | eexxxxdc execxoo 6 | ecxcxxexoeo o cxxe 7 | x dxxc ecedxe ooxxx 8 | eecx eexexex ccexx 9 | ecoxx dcoxcxe c xxx 10 | ocxc oceoxeoxxddexxddcexx 11 | xocxxddxxocxoexxeeododexex 12 | e deocxceo cccccccceoxx 13 | ce oeoee ocoodoc 14 | cdoceeee oexococc 15 | eecexcedxeeeccxcco 16 | cxccxdxeeoedcc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_8.txt: -------------------------------------------------------------------------------- 1 | 2 | eecedccdcoe 3 | occoxxxcdd x cc 4 | exdoxooc ocxoxceceo 5 | ececoxocx c dexxe 6 | c oxooexoe ocexxo 7 | xcoxeeeeexec ecxxx 8 | xcxxx cedexex xexoxo 9 | eoxxo xceoxoco oeoxx 10 | e exxee ocdxxococooexxx 11 | ecodexcoxoxxdxdeexxdc 12 | ooeexexxxocececceccoex 13 | cocxexee oooooc 14 | ceeceeee eoeexcoc 15 | odcxoc ddccdodoxe 16 | xxeccexeocode 17 | ee -------------------------------------------------------------------------------- /codex-rs/tui/frames/codex/frame_9.txt: -------------------------------------------------------------------------------- 1 | 2 | odecoccdo 3 | oceoxxccd eoee 4 | o oxxoceedo eexo 5 | c xxodde eeoxeexco 6 | occdeccxco coccdcxx 7 | x xxxcexedee xcxcxxx 8 | e xcexccxeeocooo exx 9 | x xoeoexxxeodeex xx 10 | coxc oxcxxxxcxxoxxe 11 | xexxxeoxexexxxxeexxx 12 | c eeoeexocccccxxcoex 13 | exxxeoe oo eoxe 14 | ecexee odedxoc 15 | eoceexcocdddcxe 16 | coe ceexdcoc 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_1.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _._:=++==+,_              3 |          _=,/*\+/+\=||=_ _"+_          4 |        ,|*|+**"^`   `"*`"~=~||+        5 |       ;*_\*',,_            /*|;|,      6 |      \^;/'^|\`\\            ".|\\,     7 |     ~* +`  |*/;||,           '.\||,    8 |    +^"-*    '\|*/"|_          ! |/|    9 |    ||_|`     ,//|;|*            "`|    10 |    |=~'`    ;||^\|".~++++++_+, =" |    11 |     _~;*  _;+` /* |"|___.:,,,|/,/,|    12 |     \^_"^ ^\,./`   `^*''* ^*"/,;_/     13 |      *^, ", `              ,'/*_|      14 |        ^\,`\+_          _=_+|_+"       15 |          ^*,\_!*+:;=;;.=*+_,|*         16 |            `*"*|~~___,_;+*"            17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_10.txt: -------------------------------------------------------------------------------- 1 |                                        2 |               _+***\++_                3 |              *'`+*+\~/_*,              4 |             ^_,||/~~-~+\,,             5 |            |__/\|;_.\,''\\,            6 |            / ;||"|^  /_/|/            7 |           |` '|*~//\   `_"|            8 |           \  ~*"*||~|*   |/,           9 |           "  ||\+/+||-_ .\||           10 |           "  ~\ \\|;~~+\+;||           11 |           |  ,|\,|_/_*___|*`           12 |            , "|||||""!\,"\|`           13 |            \`',\,*"  "",//            14 |             |' |||~*,:,/|/`            15 |              ;`**/|+;_!//'             16 |               *, _*\_,;*               17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_11.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                ,****++_                3 |               /" ;|||\\,               4 |              /"__||;\*/\,              5 |              |__||=;,_=//              6 |             _".;\|+\';_||,             7 |             |+`||+_;;|_/||             8 |             ** ,||||||_|=\             9 |             |  ||/||\/ |"|             10 |             /  '|/||*/+|_|             11 |             ** _|/=,"/|_|^             12 |             '`- ||||=/|\\|             13 |              \_-/|_*/**;|`             14 |              !_ *|\\^_|;"              15 |               \+!*||,_/*`              16 |                \_ '*+_+`               17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_12.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                 +***+.                 3 |                ,=`_/|,\                4 |                "  |/\+,                5 |                /+~||=="|               6 |               | '~|||./|               7 |               |'..*^"_|"               8 |               |   ~/\||\               9 |               |   /+\||"               10 |               *, ~/||+|~               11 |               |   /|*;*_               12 |               |.  |"=**/               13 |                ,  *|!_,|               14 |                / **|,*\|               15 |                '^/",|\|`               16 |                 \ '~\./                17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_13.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                  /***,                 3 |                  |__||                 4 |                  |`_|"                 5 |                  |**|_                 6 |                  *  ||                 7 |                  ":-||                 8 |                  ,  ||                 9 |                  +  "|                 10 |                 /+  _~.                11 |                 |"  +=|                12 |                 '`.. ~`                13 |                  |___|                 14 |                  |+,|_                 15 |                  *__|=                 16 |                  , ."=                 17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_14.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                  +***;                 3 |                  ,/__.\                4 |                 |_||. |                5 |                 ||/|"^~,               6 |                 |||\   |               7 |                 ~*||  '|               8 |                 |||| . *               9 |                 ||\|`  \               10 |                 |||~   "               11 |                 "^//  ;/               12 |                 \|"",.,|               13 |                 |*~|___|               14 |                 /!"|===`               15 |                 |\/*__/                16 |                  _* '=/                17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_15.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                  ++***~_               3 |                 `,=||^:*,              4 |                //|*=\|"*|              5 |                |/` //,.__|             6 |               ||="=\||/"^|             7 |               \||-||//|  "             8 |               ||   ||||~~,|            9 |               ||/~|+||| '-|            10 |               ||+,,*|||_.:|            11 |               |_|;/|\~*. .|            12 |               |/||||_| ` ;             13 |               |**.^~|\-  =             14 |               '|\, ///` ;`             15 |                |^||\\.+\/              16 |                 \^*^___/               17 |                    ``                  -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_16.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                 _=+"**+~_              3 |                /^||*||\|=\             4 |               |//"\/=\|| '\            5 |              /// ;' \|\||**|           6 |              ||;_ =||*/|`\           7 |             |||*|  /|= !| ~.|          8 |             \\|  ,||||/*", |          9 |             |/; |`||/|||"; `|          10 |             \\|~|+~/^||"*+  /          11 |             *"__,==\*|._| ,_|          12 |             |||+""/*\|;";.~|`          13 |              ||* |   `//,  /           14 |              \|*  |  /,/_,|            15 |               \|~"_*~//+_|             16 |                ':._=:__;*              17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_17.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                 ,=+++;;~,_             3 |              _;**|~~*=*|,"^,           4 |             ,*\/_==`+,"|||_"\          5 |            /|/_/|"   |;\~||=\         6 |            |/_ ~     "/\=\//  ,        7 |           `=*,/`   ,:/| /,=/|./        8 |           *!;/|   ,//|_ *"||/=|        9 |           -"=|!   !//||/ ,||=;*        10 |           ,/*/\==+~\_|\^:\||| |        11 |            |"_;__|/*\/||\!\+'+\        12 |           \\\/"""****\_|*//\ \'        13 |            \||_*       `/||` ;         14 |             _\\!*\_   ,',/^_/          15 |              , ~*+=\+`_;*:|'           16 |               `+;/_,+~*_+*             17 |                    `                   -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_18.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                _==+==+;~,_             3 |             _+"_;,++~__,"+;;_          4 |           _/:|*"*=" "._"+//\ *         5 |          ,||*.,^" _/=~\;\\\,       6 |         _\// /|   _\/~/|_\;\\_       7 |         /\| ,, _/,*,|'-/^/`/~!      8 |         ||\:/     +/*/|"_/"*|=|=,      9 |         "\-~|     ^\"||;^   |;|"       10 |        \"" ,\==;=;+~|,|*/\, |*|`       11 |         _\\|*\* ~|/__\_~||_;~`\ ,      12 |         |/|\`""*****` \__/|/*/`-`      13 |          \\!,\,         ``*"/*_'       14 |           \^*+^^.      _*^_/\,`        15 |            '|.**++===^'*_/_,*          16 |              "~|_/__,.+";+"            17 |                     `                  -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_19.txt: -------------------------------------------------------------------------------- 1 |                                        2 |               __==+~+==~._             3 |            _+|||\/===_*_,|*,,          4 |          ,*;;/"|+*`    `*:,`*;\        5 |         /;|*,^`         _==+,^|*,      6 |        ||/`/`         ,|^"/"|\ |\,     7 |       |\/*'         _|*~/!./ '.*|      8 |       ^=|~'        /*^/|+,`   /:/+|    9 |       ||||         |;"\|",    | |||    10 |       |*|\,=;;===~~~|+*;*|;   \ "||    11 |       ^;/,|=*/^*+\,`, ^_ :\_\,/.|_     12 |       '\"/+|"""""**"   ^\_/|// //'     13 |        \\^*_\             `//_//'      14 |         '!_\~~*,        ,;=./|;`       15 |           '".|*/~+__=;/*" ;*~'         16 |              "~._:-'_,.^*-^            17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_2.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _._:=+===+,_              3 |          _+,/*;+||~=~|=_'|*+_          4 |        ,|*|\**~*``  `"*=*/||;|,        5 |      _|/_/*',,_           -,\|/|,      6 |      ,^"/*^|\_\\_           ^,|\|,     7 |     '/+"`  |*\+/\+           \\|*|     8 |    ,|'*|    ^/|;|_|,          /"|"|    9 |    |" \`     ,|*||;*          |'/.|    10 |    *""=|    ;|^^_|".~++++++++,|_|~*    11 |     _='|  /||' /* |=\____..__|+/!|!    12 |     \\\ * *\..|'   `"*******"|,*||     13 |      '\_./, `              ,+;/,*      14 |        .\__|+,          ,=_+!_|"       15 |         `~^;__"*+:;=;;.=*`_||*         16 |            `*+*+~~____~;/*"            17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_20.txt: -------------------------------------------------------------------------------- 1 |                                        2 |               __+=~~=+=,__             3 |           ,;=";,_,===||_^*\+,          4 |         ,,"_+*"~*"    `"^"\+*|+_       5 |       _|"_*|*           _,+|\/*\\      6 |      _| ,|*           _/!_||^*\||\     7 |      /`,|'           +*';|"/  '\~|\    8 |     ;|;+|          ,* .+*^     ,\|/    9 |     |_^/`          "";:|",     |~"|    10 |     |/||;,=;======_,';^^\\*    / |\    11 |     '|^|_" /``____|\  *\\"|=\ ,/ ||    12 |      \,^\'"""""""*"     \,=||,| /\     13 |       * ^*/,               _/*.|/      14 |         \_^*,~_          ,;*`;*'       15 |           ^,-."~+^;;,:"~"`,/*'         16 |             `*+~_!=____|*""            17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_21.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              __,=+==+=+,__             3 |           ,+*``__+~=~+;_`-*+_          4 |         ;*^_+*^"`     `^~*+_`*,        5 |       ,*|;"'             _,;*,;*,      6 |      /,/*`             ,|/_\ \\_^,     7 |     /"/|             ,**_//    \\^,    8 |     |'|`           _!/`,/'     \;\"    9 |      `\            \; "|,       | |    10 |     | |  ,+;;;;;+++  ^|,"|,    ;/ |    11 |     | ~\ |_      _,|   ^"`*|,  /"./    12 |      ; ". ``"""  '`     '*_,; /` ,     13 |      '+ :;_                 _*" /      14 |        *_  ^-_          _.;*' ,`       15 |          *=_ *"*+:~~;:=*""  -`         16 |             *++;+____,_;+*`            17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_22.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _,+=+==+=+,_              3 |          _+/*|._/|/\||;|+/*+_          4 |        ,;*;~\**`    `"*\**+__+,        5 |       ;*~**"            ,,|||_*\       6 |      \|~/'            ,_/|=|./;'|      7 |     \|*/`           ,~/|;^/` \|\=|     8 |    |+*\/           ~+|\*/'    ~|/|     9 |    ||=|`           |\|~^\     |^|"|    10 |    ||,", +~==;;;=++_\*|_!\,   _|;"!    11 |    ^|= *_\\,!/,"~//|  \*;_"|,,!/\=     12 |     \\\_| """""**"`    `:*+_///",`     13 |      \*\_\,               _*,"|,'      14 |       '"+; ++_         _.*,"*_/        15 |         ':*+,"*~;=+;;/=*""',*          16 |            "~"~_;___-=_.=*`            17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_23.txt: -------------------------------------------------------------------------------- 1 |                                        2 |             _,+_=+*++=+__              3 |          _=|+|\_,_==,|_|*|+_           4 |        ,"+|',;*`    "~:+|\;||,         5 |       /;|*;/`          _;;\||;\        6 |      //|`/'          ,/,,'*/*\|\       7 |     ,\|"/`         _***''/*'|~\|,      8 |     `||"|         /:/. _|`  "!|'*      9 |     ~/| |         |"|,_\,   | */|      10 |     ^"\ |+~;=====;=|_*|_"\_ | |~|      11 |     |\\_|"="       /`\ \|_\,~ \_|      12 |      /'| | `"""""""   '`/;=|_/^/`      13 |       ,||_|.             ,/|\^/`       14 |        \ |,'/__       _.";*/+/         15 |          \=\+;*+\~==_++"-_+*`          16 |            "~!*=\~__+__**`             17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_24.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _~_;++*==,_               3 |           ,"_/"|__~==+,_'+             4 |         ,"';\/+"~ .`:*~**, \           5 |        ,'//,/|=,\`~/`!_*\|\_'          6 |       , //\/,    `""/\_|``\|,'         7 |       ~,\+\`       *,,/!.|;!/"\        8 |      |  |~!      ,/_,/"/^\|\^|^        9 |      | \||       |,=/\_|~_/.`||        10 |      |. |;;;:++~~~++_*,_| |  ||        11 |       _ / !*|/,,;;,,|.^\+*| |*|        12 |       \ '\|\*""""""` \,.*\|=/,`        13 |        \ \,*\           |!"/;/         14 |         \.*\`|.      _="_/:_*          15 |           .-*,\^"~~:==;|^_/`           16 |             *:_*+;\__==+*              17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_25.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _+=*;++++_                3 |            ,!*,*`_;\|*||,              4 |           /|//,,".|+\=\|||_            5 |          |+*| /! =| "\|,*\/            6 |         ,__\,/'^;/_|" |//\/*           7 |         \,~|~_*+.^|: /|,|//|,          8 |         |/|*| |__/\_/|\/_"|=|          9 |         |||/|."!~_=\/|\_~=||\          10 |        ^+\|"|__====+~|\\|+*|\          11 |         /-"|/|,|_||;*_|\*=/\|          12 |         \~*/\|`"""""'+/|\|/|`          13 |          |_"|;+;\-,*:_/,//|/           14 |           ^`^|_\_*;/,^/_||/            15 |            \.;\\_*=|**!*|*             16 |              ~,"*\+,_+|*               17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_26.txt: -------------------------------------------------------------------------------- 1 |                                        2 |               _;***"+,                 3 |              /*|;/\|+;|,               4 |             /*""|;\|\""\,              5 |            ;*",||~_||_+/^              6 |            |_,\|.~"*\/;|\;             7 |            \ "|/:/"*_\"\\/             8 |           |!  *'=||/||;;"+             9 |           /-  \|||^^=||/||             10 |           |  .\*;+~+==/\||             11 |           ! ._|/,|__,*\\*|             12 |            |`"/|*"\,/`+\||             13 |            \_~|/\   //"||`             14 |             *  *|\ ^`/|/,              15 |              |"*\\"*_**;               16 |               \/:^*~_\*                17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_27.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                 ;***+,                 3 |                |;:/|/\                 4 |               ;'` *|/'|                5 |               |~~^||;|~                6 |               |  `|_-'=                7 |               ~_._"`|||`               8 |               = "||_*||!               9 |              |  `||~="||               10 |              |. .!|+||||               11 |              '= ."_|_*||               12 |               |- _^**+/'               13 |               ||++||_/|                14 |               |==+=,/|^                15 |                \__|\=//                16 |                '\" ^\/                 17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_28.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                  /**;                  3 |                  |+_|`                 4 |                  = ;|`                 5 |                  |-`*|                 6 |                  |  ~|                 7 |                  | -"|                 8 |                 ^|~ _|                 9 |                  |-""|                 10 |                 /\  _|                 11 |                 ||.:~|                 12 |                  |  _|                 13 |                  |=+=|                 14 |                  |=*||                 15 |                  *__/|                 16 |                  ~ .+|                 17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_29.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                  +****,                3 |                 ,|*/!*\                4 |                 ^,|| '"|               5 |                 ||||^\,/               6 |                 \ ~"|  |               7 |                 |,~|| __               8 |                 |\\||| ^               9 |                 ||=~|                  10 |                 ||~*|   `              11 |                 _|=||   `              12 |                 *||/|^ =               13 |                 |/~~| _|               14 |                 ~|||`~_|               15 |                 |=|*/"|'               16 |                  ~|* .,                17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_3.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _.=;++====,_              3 |          _+,/\||+|"==|;_^|*+_          4 |        ,;/*;|*""`   `"~!**+/^|,        5 |       /+/\|;,+_          `=*!||\       6 |      '/*|/^/||*\_           \^\||_     7 |     /|\\/  .,|\;\\           | \\|     8 |     =* |    '*\|_"|,          .*/|,    9 |    ,-|,|     ,-|"/\|          ~_|=|    10 |     -"'|    ;|*+~|*-~=++___++_~^";|    11 |     ,\:\, ./*/;;| |*|__,!=.,;\`|\|`    12 |     '^| | "||+,"   "***"""**,///,/     13 |      '*~ \+ `              /^+^//      14 |        =^//*\,          ,+;/",|'       15 |          =^+,_**^=;=;,:=*;`_+"         16 |            `*+*_:~____~;/^"            17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_30.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                  _;"**+,               3 |                _/;||\*'=\              4 |                "'^|,\\|+,\             5 |               ||\|/|_\|\ \,            6 |               =*||`\|,|,  |            7 |              |*|^+  *||||.|            8 |              \/|||\_ \/\| =`           9 |              "| '+=~,|"|-  `           10 |              "|_"\~=~\/|,  `           11 |              "||\|__~|!+,  `           12 |              !\||;\_*~||+~|            13 |               |*//,/*\||" |            14 |               \|\||/*~|,~/             15 |                ,^,+=^/|,/'             16 |                 \-.|^__;'              17 |                   ````                 -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_31.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                 _.:*+*+=,              3 |               _+*;+,_"+\'*,            4 |              ,|\//,=_`."|_*\           5 |             ,~/+__*;_,\\|\~|\          6 |             ^||||+-*\_,"\|/__          7 |            ;|^`~_|'"\;*,./|,"|         8 |            /|| |^*|\.=/;*|*|/|         9 |            \\, |~"|\ |^""|~\.|         10 |            |\,_|'^~|~/+~~|_  |         11 |            "||~//||___\_|\|| *         12 |            ^*_/+|, /***`/|'~_!         13 |             |||\\\,     _=* |          14 |              ;|*=_!,  . |*`/`          15 |               :|\|/_|`,|",|`           16 |                '"=~_+*/.;*             17 |                    ````                -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_32.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                 ,++++;;~,_             3 |               ;*~**~\||**|~,           4 |             /^*=^,+^:-`*|*\'*,         5 |            '//|_,`;- - ,_\|+,!,        6 |           //|,|*\'*|; '`,~\/\*\,       7 |           \/\\,\*|`:||+_   |+/ *       8 |          *|";,`'\||,,|,=`/_//|'_       9 |          |||,_  "_||"/'|;-_"\|""`      10 |          \||-_ '_|"__|+++~~~=|"=`      11 |          '""_`|*\'\_____||*|;~-_       12 |            ,\*||/ |*""***^;///./       13 |            \,|^\\        ,\|/'~        14 |            '**||~+_    _/_|/ ,         15 |              \-\"~+|;=*`_+"_/          16 |                ~;=__,+/*_""            17 |                    ```                 -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_33.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                _,+=+=+=~._             3 |             _+*||\*=~:|-|*|*.          4 |           _/\|+*+,="`  "*/||+",        5 |          ,\/|/_|,_        *||\_*       6 |         _.|/`||/\^\         |+\\^      7 |         //,   \_\\`\,        /\/_\     8 |         ||+ !  \,*|_|\       |*||      9 |         *|,,   ,''\/=,       \"|*      10 |         ||| | ,` /*,,,;==+~~+/_|\~     11 |         ^/|'"/:,/`~|_____||*^^^~|.     12 |         \=\, |/|/ / """"*** ||,/^`     13 |          \+\*,",           //;/=/      14 |           *\"*,*;,      _+|,/*\'       15 |             \~"*\+|,;+_";,\*~*         16 |               "==+,___^+*;-"           17 |                    ````                -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_34.txt: -------------------------------------------------------------------------------- 1 |                                        2 |                _,=++++=~,_             3 |            _+*+/\;|"~+*=**;,=_         4 |          _//,|*":~*`   `^\\,"**,       5 |         ,/_|*_/,_          *|,*\\      6 |        //|\-/|!|"!,          \\*\^     7 |       ,/\|`/ \\"|\*\          \,\|\    8 |       |*^~_   '\_*|_^          |;~_    9 |       \|=":    |*_|/"|         / _\    10 |       ,'/."   /\//"_==++++++~__" ~^`   11 |       ||\,/,,^"//'~||_~.___,/_||`|\    12 |        /_\, |\|*^!  "**````^ ,/,\|'    13 |         /,\;=\_             /;.|/'     14 |          \+`|+\;,        _+="_/,`      15 |            -\/~"|+,;,+=*=*`+*:'        16 |              "~\;=_____;=*=^           17 |                    ```                 -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_35.txt: -------------------------------------------------------------------------------- 1 |                                        2 |               _,+;=+++=+,_             3 |            ,*=*.~**+"|*~:"~*=_         4 |         _//|;+*|^*"`  `"*=*."|*,       5 |        ,//+/,;,_            *+_\|_     6 |       //~|//\ "\*,            |\*|,    7 |      ;/;/+` '|_"..*_           |\\|    8 |      \ !./    \\ '*_.           |^\\   9 |      ~|~:      /\\;/'           / "/   10 |      / ,_    ,||/;"/|==_;_=+~~  |~=*   11 |      |,^;'  //;"*+/|; \,____/"~/' |'   12 |       /`\,'/\_|/^`  `"^^^^*^^*//_,|    13 |        ".^\/~               _/* ,^     14 |         \;`^;,:,          ,;/_**'      15 |           "^_"~*~-:~~+~;/*"_/;"        16 |              "^~;=__/__++*"^           17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_36.txt: -------------------------------------------------------------------------------- 1 |                                        2 |               __+=++++=+,_             3 |           _=""\+/;/+\+;++"**+_         4 |         ,\'\,+*-*"`` `"*~*+|,*|,       5 |       _|"*+____            '*~\"|      6 |      ,/_;\'|\`\,.             ^\.*     7 |      / ,/`  *_ "|/,            "\^*    8 |     | ;!`     !\ "\\            |^|,   9 |     ||\~      _\ _//!           \| |   10 |     |'"|     // ,*"',++_+++++_  |\~|   11 |      _*|\  ,|__/~/ !`~_______|| \/'`   12 |      ' *|\ +_+/^     "**^^^^^" |,"/    13 |       ',"\;.                 ,/|"/     14 |         \/||+~,           ,++"/,`      15 |           *,_"**=^;~_+~;"-",;+'        16 |             `*+/~_,,_,,++**"           17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_4.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _.=;+==+=+,_              3 |          _-"+*|/!|\=/*;|"/*,_          4 |        ,*=|||+*"`   `^~\^*|/\\_        5 |       //|,|".+,          "|**\*\       6 |      /|/_|=|\;^|,          \"\|*\      7 |     /||^|  '_||/*\          ' \=|,     8 |     "\|;`   '**\+"|,         , ";|     9 |      |.\     ,|/*^||           |||     10 |     _|!|_   ;|/"^//+~+++____,, ||*     11 |     |\/!| ,///,_|`=\|,._,:/^;|//"|     12 |      `|;'\,\\,\/   "*******'^-|||`     13 |       ,|\"|_`             ,^;/**'      14 |        \\,:^!,_        _.^,*;|/        15 |          ~||=_**\;;=;,+=*+\|*`         16 |             *\\~:~_____;-*`            17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_5.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _.=;;+===+,_              3 |          _+"+/*/||+~=+;_|"+,           4 |         *_/\+|*"`   "^=|*\!,*,         5 |       ,|/|/|.=,          -^||||_       6 |      ,\/*/^_+|_\,         ` \|\|_      7 |      ~|||/ \_|\;/|_          +/||      8 |     |/|!+   `\_|\"|,        ''~+|,     9 |     |/|_"    ,_=|/_|          +|_|     10 |     |,|^*   /_|",|*=_~+~___+,_"|.|     11 |      _\|\,,/+*" |"!//\=^,=.,/|/*|`     12 |      \,||,~,\\/+`  "**""""",~;|\/      13 |       \\+/\\ `            /_/*,^       14 |        ^/*\|=+_        _=+,*';*        15 |          ^|*|,*+\;~=_,+=*^~;*          16 |             ^-*_*"___-_,+*`            17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_6.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _.=;;+==++__              3 |           ,^;/*|=*+|++;_,*+_           4 |         ,,,|||*"   `"~.=*+*/\_         5 |        /,|*|*_=,        \+||||,        6 |       '=|||*\\+*\         .\\|\,       7 |      ;-/|/`^+;|\_|,        .=\/|       8 |      _ +~|   !^\|/^\        ^+|_|      9 |      ~ |~|   _|=~/||        ~+\||      10 |      _.|-|  /'||*;/+_~+~__++_.\/|      11 |      ||\,/_^_;+ |/=*,||,;==\|,|\!      12 |       / | /~||;/"  "*"""'*"`\\/|       13 |        , ; /,`           ,:_//|`       14 |         .`\_**,       _+^_/*,+         15 |          `"~*,"+!;~__,+**!:;'          16 |             ^-;*+,___`_,+*             17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_7.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              _.~;*+==+,_               3 |           ,*`+\|+*+==\;!`*,            4 |          * ,|||*`  `^~`!*/_*,          5 |         \\|||~;+       ^~\*|/,         6 |        `'|*||^|/\,       . *||\        7 |       | ;||" `'\;|\       ,-|||        8 |        `\"|  ^_|\|\|       **^||       9 |       _"/~|   =+/|*|`      ' |||       10 |        /"~* ,"_/|\/~~;;_~~=;*\||       11 |       |,'||=:~|/'|.\||\\,=,;\|\|       12 |        \ =^/*|*_/  ******""_/||        13 |        '_ /_/_`         ,"-/;/'        14 |         ';,+\\\_      ,^~,*/*'         15 |           \_'\|*\;~___+*|*+/           16 |             "~*"~:~__,_;**             17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_8.txt: -------------------------------------------------------------------------------- 1 |                                        2 |              __+_;++=+,_               3 |            ,"*/|||*==!~ "+             4 |          _|=,|//*!,"~/~*\+^,           5 |         _*\*/|,+|     ' =^||\          6 |         ' /|/,\|/\      .'\||,         7 |        |',|\^^_\|_*      \+|||         8 |        |*||| '_;\|`|      ^|/|,        9 |        \,||/  |+\/|,*.    .`/||        10 |        \ \||_^ !/*=|~/+,+,,\~||        11 |        !  \*/=_|",|,||;|=__||='        12 |         //\\|\|||/'^*^*"\*"/\|         13 |         ',"|\|``        .,///'         14 |          '\_*\\\_    _/\_|+/*          15 |            .:'|,*!;;+*;/=,|`           16 |              ~~_**\|_,+/=`             17 |                   ``                   -------------------------------------------------------------------------------- /codex-rs/tui/frames/default/frame_9.txt: -------------------------------------------------------------------------------- 1 |                                        2 |               .=^*/++=,                3 |             /*_/||*"=!_-\_             4 |            / ,||/*^^=/!\_~,            5 |           " ||/;=_ _^,|\^|+,           6 |          /*";\*"|*,  +:+||           7 |          | |||"^|\;*   '|*|||          8 |          ` ~*\ **|\\," / `||          9 |         |  ~/_ ~||_/= | !||          10 |         !  ",|" /|"|~~|+|~,||`         11 |          |_|||_,|^|_||||__|||          12 |          " `^/\\|/"****||"/\|          13 |           \~||\,`     ,/ ^/|`          14 |            \+\|\\    /;_;|/*           15 |             ^-"\_|*/+=;;*|`            16 |              '-_ *\\|;+/"              17 |                                        -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_1.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉○◉○●●○○●●○ 3 | ○○●◉●○●◉●○○··○○ ○ ●○ 4 | ●·●·●●● ○· · ●· ·○···● 5 | ◉●○○●●●●○ ◉●·◉·● 6 | ○○◉◉●○·○·○○ ◉·○○● 7 | ·● ●· ·●◉◉··● ●◉○··● 8 | ●○ ◉● ●○·●◉ ·○ ·◉· 9 | ··○·· ●◉◉·◉·● ·· 10 | ·○·●· ◉··○○· ◉·●●●●●●○●● ○ · 11 | ○·◉● ○◉●· ◉● · ·○○○◉◉●●●·◉●◉●· 12 | ○○○ ○ ○○●◉◉· ·○●●●● ○● ◉●◉○◉ 13 | ●○● ● · ●●◉●○· 14 | ○○●·○●○ ○○○●·○● 15 | ○●●○○ ●●◉◉○◉◉◉○●●○●·● 16 | ·● ●···○○○●○◉●● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_10.txt: -------------------------------------------------------------------------------- 1 | 2 | ○●●●●○●●○ 3 | ●●·●●●○·◉○●● 4 | ○○●··◉··◉·●○●● 5 | ·○○◉○·◉○◉○●●●○○● 6 | ◉ ◉·· ·○ ●●◉○◉·◉ 7 | ·· ●·●·◉◉○ ·○ · 8 | ○ ·● ●····● ·◉● 9 | ··○●◉●··◉○·◉○·· 10 | ·○ ○○·◉··●○●◉·· 11 | · ●·○●·○◉○●○○○·●· 12 | ● ····· ○● ○·· 13 | ○·●●○●● ○· ●◉◉ 14 | ·● ····●●◉●◉·◉· 15 | ◉·●●◉·●◉○ ◉◉● 16 | ●● ○●○○●◉● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_11.txt: -------------------------------------------------------------------------------- 1 | 2 | ●●●●●●●○ 3 | ◉ ◉···○○● 4 | ◉ ○○··◉○●◉○● 5 | ·○○··○◉●○○◉◉ 6 | ○ ◉◉○·●○●◉○··● 7 | ·●···●○◉◉·○◉·· 8 | ●● ●······○·○○ 9 | · ··◉··○◉ · · 10 | ◉ ●·◉··●◉●·○· 11 | ●● ○·◉○● ◉·○·○ 12 | ●·◉ ····○◉·○○· 13 | ○○◉◉·○●◉●●◉·· 14 | ○ ●·○○○○·◉ 15 | ○● ●··●○◉●· 16 | ○○ ●●●○●· 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_12.txt: -------------------------------------------------------------------------------- 1 | 2 | ●●●●●◉ 3 | ●○·○◉·●○ 4 | ·◉○●● 5 | ◉●···○○ · 6 | · ●····◉◉· 7 | ·●◉◉●○ ○· 8 | · ·◉○··○ 9 | · ◉●○·· 10 | ●● ·◉··●·· 11 | · ◉·●◉●○ 12 | ·◉ · ○●●◉ 13 | ● ●· ○●· 14 | ◉ ●●·●●○· 15 | ●○◉ ●·○·· 16 | ○ ●·○◉◉ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_13.txt: -------------------------------------------------------------------------------- 1 | 2 | ◉●●●● 3 | ·○○·· 4 | ··○· 5 | ·●●·○ 6 | ● ·· 7 | ◉◉·· 8 | ● ·· 9 | ● · 10 | ◉● ○·◉ 11 | · ●○· 12 | ●·◉◉ ·· 13 | ·○○○· 14 | ·●●·○ 15 | ●○○·○ 16 | ● ◉ ○ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_14.txt: -------------------------------------------------------------------------------- 1 | 2 | ●●●●◉ 3 | ●◉○○◉○ 4 | ·○··◉ · 5 | ··◉· ○·● 6 | ···○ · 7 | ·●·· ●· 8 | ···· ◉ ● 9 | ··○·· ○ 10 | ···· 11 | ○◉◉ ◉◉ 12 | ○· ●◉●· 13 | ·●··○○○· 14 | ◉ ·○○○· 15 | ·○◉●○○◉ 16 | ○● ●○◉ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_15.txt: -------------------------------------------------------------------------------- 1 | 2 | ●●●●●·○ 3 | ·●○··○◉●● 4 | ◉◉·●○○· ●· 5 | ·◉· ◉◉●◉○○· 6 | ··○ ○○··◉ ○· 7 | ○··◉··◉◉· 8 | ·· ······●· 9 | ··◉··●··· ●◉· 10 | ··●●●●···○◉◉· 11 | ·○·◉◉·○·●◉ ◉· 12 | ·◉····○· · ◉ 13 | ·●●◉○··○◉ ○ 14 | ●·○● ◉◉◉· ◉· 15 | ·○··○○◉●○◉ 16 | ○○●○○○○◉ 17 | ·· -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_16.txt: -------------------------------------------------------------------------------- 1 | 2 | ○○● ●●●·○ 3 | ◉○··●··○·○○ 4 | ·◉◉ ○◉○○·· ●○ 5 | ◉◉◉ ◉●○○·○··●●· 6 | ··◉○◉●●○··●◉··○ 7 | ···●·● ·○○ · ·◉· 8 | ○○· ◉·●····◉● ● · 9 | ·◉◉ ····◉··· ◉ ·· 10 | ○○···●·◉○·· ●● ◉ 11 | ● ○○●○○○●·◉○· ●○· 12 | ···● ◉●○·◉ ◉◉··· 13 | ··● ·· ·◉◉● ◉ 14 | ○·● · ◉●◉○●· 15 | ○·· ○●·◉◉●○· 16 | ●◉◉○○◉○○◉● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_17.txt: -------------------------------------------------------------------------------- 1 | 2 | ●○●●●◉◉·●○ 3 | ○◉●●···●○●·● ○● 4 | ●●○◉○○○·●● ···○ ○ 5 | ◉·◉○◉· ○· ●·◉○···○○ 6 | ·◉○ · · ◉○○○◉◉ ● 7 | ·○●●◉· ●◉◉· ◉●○◉·◉◉ 8 | ● ◉◉· ●◉◉·○ ● ··◉○· 9 | ◉ ○· ◉◉··◉·●··○◉● 10 | ●◉●◉○○○●·○○·○○◉○··· · 11 | · ○◉○○·◉●○◉··○ ○●●●○ 12 | ○○○◉ ●●●●○○·●◉◉○ ○● 13 | ○··○● ·◉··· ◉ 14 | ○○○ ●○○ ●●●◉○○◉ 15 | ● ·●●○○●·○◉●◉·● 16 | ·●◉◉○●●·●○●● 17 | · -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_18.txt: -------------------------------------------------------------------------------- 1 | 2 | ○○○●○○●◉·●○ 3 | ○● ○◉●●●·○○● ●◉◉○ 4 | ○◉◉·● ●○ ● ◉○ ●◉◉○ ● 5 | ●··●◉●○ ● ●○·○◉○·○◉○○○● 6 | ○○◉◉ ◉· ○ ●○○◉·◉·○○◉○○○ 7 | ◉○· ●●·◉○○○◉●●●·●◉◉○◉·◉· 8 | ··○◉◉ ●◉●◉· ○◉ ●·○·○● 9 | ○◉·· ○○ ··◉○ ·◉· 10 | ○ ●○○○◉○◉●··●·●◉○● ·●·· 11 | ○○○·●○● ··◉○○○○···○◉··○ ● 12 | ·◉·○· ●●●●●· ○○○◉·◉●◉·◉· 13 | ○○ ●○● ··● ◉●○● 14 | ○○●●○○◉ ○●○○◉○●· 15 | ●·◉●●●●○○○○●●○◉○●● 16 | ··○◉○○●◉● ◉● 17 | · -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_19.txt: -------------------------------------------------------------------------------- 1 | 2 | ○○○○●·●○○·◉○ 3 | ○●···○◉○○○○●○●·●●● 4 | ●●◉◉◉ ·●●· ·●◉●·●◉○ 5 | ◉◉·●●○· ○○○●●○·●● 6 | ··◉·◉· ●·○ ◉ ·○ ·○● 7 | ·○◉●● ○·●·◉ ◉◉ ●◉●· 8 | ○○··● ◉●○◉·●●· ◉◉◉●· 9 | ···· ·◉ ○· ● · ··· 10 | ·●·○●○◉◉○○○····●●◉●·◉ ○ ·· 11 | ○◉◉●·○●◉○●●○●·● ○○ ◉○○○●◉◉·○ 12 | ●○ ◉●· ●● ○○○◉·◉◉ ◉◉● 13 | ○○○●○○ ·◉◉○◉◉● 14 | ● ○○··●● ●◉○◉◉·◉· 15 | ● ◉·●◉·●○○○◉◉● ◉●·● 16 | ·◉○◉◉●○●◉○●◉○ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_2.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉○◉○●○○○●●○ 3 | ○●●◉●◉●···○··○○●·●●○ 4 | ●·●·○●●·●·· · ●○●◉··◉·● 5 | ○·◉○◉●●●●○ ◉●○·◉·● 6 | ●○ ◉●○·○○○○○ ○●·○·● 7 | ●◉● · ·●○●◉○● ○○·●· 8 | ●·●●· ○◉·◉·○·● ◉ · · 9 | · ○· ●·●··◉● ·●◉◉· 10 | ● ○· ◉·○○○· ◉·●●●●●●●●●·○··● 11 | ○○●· ◉··● ◉● ·○○○○○○◉◉○○·●◉ · 12 | ○○○ ● ●○◉◉·● · ●●●●●●● ·●●·· 13 | ●○○◉◉● · ●●◉◉●● 14 | ◉○○○·●● ●○○● ○· 15 | ··○◉○○ ●●◉◉○◉◉◉○●·○··● 16 | ·●●●●··○○○○·◉◉● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_20.txt: -------------------------------------------------------------------------------- 1 | 2 | ○○●○··○●○●○○ 3 | ●◉○ ◉●○●○○○··○○●○●● 4 | ●● ○●● ·● · ○ ○●●·●○ 5 | ○· ○●·● ○●●·○◉●○○ 6 | ○· ●·● ○◉ ○··○●○··○ 7 | ◉·●·● ●●●◉· ◉ ●○··○ 8 | ◉·◉●· ●● ◉●●○ ●○·◉ 9 | ·○○◉· ◉◉· ● ·· · 10 | ·◉··◉●○◉○○○○○○○●●◉○○○○● ◉ ·○ 11 | ●·○·○ ◉··○○○○·○ ●○○ ·○○ ●◉ ·· 12 | ○●○○● ● ○●○··●· ◉○ 13 | ● ○●◉● ○◉●◉·◉ 14 | ○○○●●·○ ●◉●·◉●● 15 | ○●◉◉ ·●○◉◉●◉ · ·●◉●● 16 | ·●●·○ ○○○○○·● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_21.txt: -------------------------------------------------------------------------------- 1 | 2 | ○○●○●○○●○●●○○ 3 | ●●●··○○●·○·●◉○·◉●●○ 4 | ◉●○○●●○ · ·○·●●○·●● 5 | ●●·◉ ● ○●◉●●◉●● 6 | ◉●◉●· ●·◉○○ ○○○○● 7 | ◉ ◉· ●●●○◉◉ ○○○● 8 | ·●·· ○ ◉·●◉● ○◉○ 9 | ·○ ○◉ ·● · · 10 | · · ●●◉◉◉◉◉●●● ○·● ·● ◉◉ · 11 | · ·○ ·○ ○●· ○ ·●·● ◉ ◉◉ 12 | ◉ ◉ ·· ●· ●●○●◉ ◉· ● 13 | ●● ◉◉○ ○● ◉ 14 | ●○ ○◉○ ○◉◉●● ●· 15 | ●○○ ● ●●◉··◉◉○● ◉· 16 | ●●●◉●○○○○●○◉●●· 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_22.txt: -------------------------------------------------------------------------------- 1 | 2 | ○●●○●○○●○●●○ 3 | ○●◉●·◉○◉·◉○··◉·●◉●●○ 4 | ●◉●◉·○●●· · ●○●●●○○●● 5 | ◉●·●● ●●···○●○ 6 | ○··◉● ●○◉·○·◉◉◉●· 7 | ○·●◉· ●·◉·◉○◉· ○·○○· 8 | ·●●○◉ ·●·○●◉● ··◉· 9 | ··○·· ·○··○○ ·○· · 10 | ··● ● ●·○○◉◉◉○●●○○●·○ ○● ○·◉ 11 | ○·○ ●○○○● ◉● ·◉◉· ○●◉○ ·●● ◉○○ 12 | ○○○○· ●● · ·◉●●○◉◉◉ ●· 13 | ○●○○○● ○●● ·●● 14 | ● ●◉ ●●○ ○◉●● ●○◉ 15 | ●◉●●● ●·◉○●◉◉◉○● ●●● 16 | · ·○◉○○○◉○○◉○●· 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_23.txt: -------------------------------------------------------------------------------- 1 | 2 | ○●●○○●●●●○●○○ 3 | ○○·●·○○●○○○●·○·●·●○ 4 | ● ●·●●◉●· ·◉●·○◉··● 5 | ◉◉·●◉◉· ○◉◉○··◉○ 6 | ◉◉··◉● ●◉●●●●◉●○·○ 7 | ●○· ◉· ○●●●●●◉●●··○·● 8 | ··· · ◉◉◉◉ ○·· ·●● 9 | ·◉· · · ·●○○● · ●◉· 10 | ○ ○ ·●·◉○○○○○◉○·○●·○ ○○ · ··· 11 | ·○○○· ○ ◉·○ ○·○○●· ○○· 12 | ◉●· · · ●·◉◉○·○◉○◉· 13 | ●··○·◉ ●◉·○○◉· 14 | ○ ·●●◉○○ ○◉ ◉●◉●◉ 15 | ○○○●◉●●○·○○○●● ◉○●●· 16 | · ●○○·○○●○○●●· 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_24.txt: -------------------------------------------------------------------------------- 1 | 2 | ○·○◉●●●○○●○ 3 | ● ○◉ ·○○·○○●●○●● 4 | ● ●◉○◉● · ◉·◉●·●●● ○ 5 | ●●◉◉●◉·○●○··◉· ○●○·○○● 6 | ● ◉◉○◉● · ◉○○···○·●● 7 | ·●○●○· ●●●◉ ◉·◉ ◉ ○ 8 | · ·· ●◉○●◉ ◉○○·○○·○ 9 | · ○·· ·●○◉○○··○◉◉··· 10 | ·◉ ·◉◉◉◉●●···●●○●●○· · ·· 11 | ○ ◉ ●·◉●●◉◉●●·◉○○●●· ·●· 12 | ○ ●○·○● · ○●◉●○·○◉●· 13 | ○ ○●●○ · ◉◉◉ 14 | ○◉●○··◉ ○○ ○◉◉○● 15 | ◉◉●●○○ ··◉○○◉·○○◉· 16 | ●◉○●●◉○○○○○●● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_25.txt: -------------------------------------------------------------------------------- 1 | 2 | ○●○●◉●●●●○ 3 | ● ●●●·○◉○·●··● 4 | ◉·◉◉●● ◉·●○○○···○ 5 | ·●●· ◉ ○· ○·●●○◉ 6 | ●○○○●◉●○◉◉○· ·◉◉○◉● 7 | ○●···○●●◉○·◉ ◉·●·◉◉·● 8 | ·◉·●· ·○○◉○○◉·○◉○ ·○· 9 | ···◉·◉ ·○○○◉·○○·○··○ 10 | ○●○· ·○○○○○○●··○○·●●·○ 11 | ◉◉ ·◉·●·○··◉●○·○●○◉○· 12 | ○·●◉○·· ●●◉·○·◉·· 13 | ·○ ·◉●◉○◉●●◉○◉●◉◉·◉ 14 | ○·○·○○○●◉◉●○◉○··◉ 15 | ○◉◉○○○●○·●● ●·● 16 | ·● ●○●●○●·● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_26.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉●●● ●● 3 | ◉●·◉◉○·●◉·● 4 | ◉● ·◉○·○ ○● 5 | ◉● ●···○··○●◉○ 6 | ·○●○·◉· ●○◉◉·○◉ 7 | ○ ·◉◉◉ ●○○ ○○◉ 8 | · ●●○··◉··◉◉ ● 9 | ◉◉ ○···○○○··◉·· 10 | · ◉○●◉●·●○○◉○·· 11 | ◉○·◉●·○○●●○○●· 12 | ·· ◉·● ○●◉·●○·· 13 | ○○··◉○ ◉◉ ··· 14 | ● ●·○ ○·◉·◉● 15 | · ●○○ ●○●●◉ 16 | ○◉◉○●·○○● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_27.txt: -------------------------------------------------------------------------------- 1 | 2 | ◉●●●●● 3 | ·◉◉◉·◉○ 4 | ◉●· ●·◉●· 5 | ···○··◉·· 6 | · ··○◉●○ 7 | ·○◉○ ····· 8 | ○ ··○●·· 9 | · ····○ ·· 10 | ·◉ ◉ ·●···· 11 | ●○ ◉ ○·○●·· 12 | ·◉ ○○●●●◉● 13 | ··●●··○◉· 14 | ·○○●○●◉·○ 15 | ○○○·○○◉◉ 16 | ●○ ○○◉ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_28.txt: -------------------------------------------------------------------------------- 1 | 2 | ◉●●◉ 3 | ·●○·· 4 | ○ ◉·· 5 | ·◉·●· 6 | · ·· 7 | · ◉ · 8 | ○·· ○· 9 | ·◉ · 10 | ◉○ ○· 11 | ··◉◉·· 12 | · ○· 13 | ·○●○· 14 | ·○●·· 15 | ●○○◉· 16 | · ◉●· 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_29.txt: -------------------------------------------------------------------------------- 1 | 2 | ●●●●●● 3 | ●·●◉ ●○ 4 | ○●·· ● · 5 | ····○○●◉ 6 | ○ · · · 7 | ·●··· ○○ 8 | ·○○··· ○ 9 | ··○·· 10 | ···●· · 11 | ○·○·· · 12 | ●··◉·○ ○ 13 | ·◉··· ○· 14 | ······○· 15 | ·○·●◉ ·● 16 | ··● ◉● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_3.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉○◉●●○○○○●○ 3 | ○●●◉○··●· ○○·◉○○·●●○ 4 | ●◉◉●◉·● · · · ●●●◉○·● 5 | ◉●◉○·◉●●○ ·○● ··○ 6 | ●◉●·◉○◉··●○○ ○○○··○ 7 | ◉·○○◉ ◉●·○◉○○ · ○○· 8 | ○● · ●●○·○ ·● ◉●◉·● 9 | ●◉·●· ●◉· ◉○· ·○·○· 10 | ◉ ●· ◉·●●··●◉·○●●○○○●●○·○ ◉· 11 | ●○◉○● ◉◉●◉◉◉· ·●·○○● ○◉●◉○··○·· 12 | ●○· · ··●● ●●● ●●●◉◉◉●◉ 13 | ●●· ○● · ◉○●○◉◉ 14 | ○○◉◉●○● ●●◉◉ ●·● 15 | ○○●●○●●○○◉○◉●◉○●◉·○● 16 | ·●●●○◉·○○○○·◉◉○ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_30.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉ ●●●● 3 | ○◉◉··○●●○○ 4 | ●○·●○○·●●○ 5 | ··○·◉·○○·○ ○● 6 | ○●···○·●·● · 7 | ·●·○● ●····◉· 8 | ○◉···○○ ○◉○· ○· 9 | · ●●○·●· ·◉ · 10 | ·○ ○·○·○◉·● · 11 | ··○·○○·· ●● · 12 | ○··◉○○●···●·· 13 | ·●◉◉●◉●○·· · 14 | ○·○··◉●··●·◉ 15 | ●○●●○○◉·●◉● 16 | ○◉◉·○○○◉● 17 | ···· -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_31.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉◉●●●●○● 3 | ○●●◉●●○ ●○●●● 4 | ●·○◉◉●○○·◉ ·○●○ 5 | ●·◉●○○●◉○●○○·○··○ 6 | ○····●◉●○○● ○·◉○○ 7 | ◉·○··○·● ○◉●●◉◉·● · 8 | ◉·· ·○●·○◉○◉◉●·●·◉· 9 | ○○● ·· ·○ ·○ ··○◉· 10 | ·○●○·●○···◉●···○ · 11 | ···◉◉··○○○○○·○·· ● 12 | ○●○◉●·● ◉●●●·◉·●·○ 13 | ···○○○● ○○● · 14 | ◉·●○○ ● ◉ ·●·◉· 15 | ◉·○·◉○··●· ●·· 16 | ● ○·○●●◉◉◉● 17 | ···· -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_32.txt: -------------------------------------------------------------------------------- 1 | 2 | ●●●●●◉◉·●○ 3 | ◉●·●●·○··●●··● 4 | ◉○●○○●●○◉◉·●·●○●●● 5 | ●◉◉·○●·◉◉ ◉ ●○○·●● ● 6 | ◉◉·●·●○●●·◉ ●·●·○◉○●○● 7 | ○◉○○●○●··◉··●○ ·●◉ ● 8 | ●· ◉●·●○··●●·●○·◉○◉◉·●○ 9 | ···●○ ○·· ◉●·◉◉○ ○· · 10 | ○··◉○ ●○· ○○·●●●···○· ○· 11 | ● ○··●○●○○○○○○··●·◉·◉○ 12 | ●○●··◉ ·● ●●●○◉◉◉◉◉◉ 13 | ○●·○○○ ●○·◉●· 14 | ●●●···●○ ○◉○·◉ ● 15 | ○◉○ ·●·◉○●·○● ○◉ 16 | ·◉○○○●●◉●○ 17 | ··· -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_33.txt: -------------------------------------------------------------------------------- 1 | 2 | ○●●○●○●○·◉○ 3 | ○●●··○●○·◉·◉·●·●◉ 4 | ○◉○·●●●●○ · ●◉··● ● 5 | ●○◉·◉○·●○ ●··○○● 6 | ○◉·◉···◉○○○ ·●○○○ 7 | ◉◉● ○○○○·○● ◉○◉○○ 8 | ··● ○●●·○·○ ·●·· 9 | ●·●● ●●●○◉○● ○ ·● 10 | ··· · ●· ◉●●●●◉○○●··●◉○·○· 11 | ○◉·● ◉◉●◉···○○○○○··●○○○··◉ 12 | ○○○● ·◉·◉ ◉ ●●● ··●◉○· 13 | ○●○●● ● ◉◉◉◉○◉ 14 | ●○ ●●●◉● ○●·●◉●○● 15 | ○· ●○●·●◉●○ ◉●○●·● 16 | ○○●●○○○○●●◉◉ 17 | ···· -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_34.txt: -------------------------------------------------------------------------------- 1 | 2 | ○●○●●●●○·●○ 3 | ○●●●◉○◉· ·●●○●●◉●○○ 4 | ○◉◉●·● ◉·●· ·○○○● ●●● 5 | ●◉○·●○◉●○ ●·●●○○ 6 | ◉◉·○◉◉· · ● ○○●○○ 7 | ●◉○··◉ ○○ ·○●○ ○●○·○ 8 | ·●○·○ ●○○●·○○ ·◉·○ 9 | ○·○ ◉ ·●○·◉ · ◉ ○○ 10 | ●●◉◉ ◉○◉◉ ○○○●●●●●●·○○ ·○· 11 | ··○●◉●●○ ◉◉●···○·◉○○○●◉○····○ 12 | ◉○○● ·○·●○ ●●····○ ●◉●○·● 13 | ◉●○◉○○○ ◉◉◉·◉● 14 | ○●··●○◉● ○●○ ○◉●· 15 | ◉○◉· ·●●◉●●○●○●·●●◉● 16 | ·○◉○○○○○○◉○●○○ 17 | ··· -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_35.txt: -------------------------------------------------------------------------------- 1 | 2 | ○●●◉○●●●○●●○ 3 | ●●○●◉·●●● ·●·◉ ·●○○ 4 | ○◉◉·◉●●·○● · · ●○●◉ ·●● 5 | ●◉◉●◉●◉●○ ●●○○·○ 6 | ◉◉··◉◉○ ○●● ·○●·● 7 | ◉◉◉◉●· ●·○ ◉◉●○ ·○○· 8 | ○ ◉◉ ○○ ●●○◉ ·○○○ 9 | ···◉ ◉○○◉◉● ◉ ◉ 10 | ◉ ●○ ●··◉◉ ◉·○○○◉○○●·· ··○● 11 | ·●○◉● ◉◉◉ ●●◉·◉ ○●○○○○◉ ·◉● ·● 12 | ◉·○●●◉○○·◉○· · ○○○○●○○●◉◉○●· 13 | ◉○○◉· ○◉● ●○ 14 | ○◉·○◉●◉● ●◉◉○●●● 15 | ○○ ·●·◉◉··●·◉◉● ○◉◉ 16 | ○·◉○○○◉○○●●● ○ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_36.txt: -------------------------------------------------------------------------------- 1 | 2 | ○○●○●●●●○●●○ 3 | ○○ ○●◉◉◉●○●◉●● ●●●○ 4 | ●○●○●●●◉● ·· · ●·●●·●●·● 5 | ○· ●●○○○○ ●●·○ · 6 | ●◉○◉○●·○·○●◉ ○○◉● 7 | ◉ ●◉· ●○ ·◉● ○○● 8 | · ◉ · ○ ○○ ·○·● 9 | ··○· ○○ ○◉◉ ○· · 10 | ·● · ◉◉ ●● ●●●●○●●●●●○ ·○·· 11 | ○●·○ ●·○○◉·◉ ··○○○○○○○·· ○◉●· 12 | ● ●·○ ●○●◉○ ●●○○○○○ ·● ◉ 13 | ●● ○◉◉ ●◉· ◉ 14 | ○◉··●·● ●●● ◉●· 15 | ●●○ ●●○○◉·○●·◉ ◉ ●◉●● 16 | ·●●◉·○●●○●●●●●● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_4.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉○◉●○○●○●●○ 3 | ○◉ ●●·◉ ·○○◉●◉· ◉●●○ 4 | ●●○···●● · ·○·○○●·◉○○○ 5 | ◉◉·●· ◉●● ·●●○●○ 6 | ◉·◉○·○·○◉○·● ○ ○·●○ 7 | ◉··○· ●○··◉●○ ● ○○·● 8 | ○·◉· ●●●○● ·● ● ◉· 9 | ·◉○ ●·◉●○·· ··· 10 | ○· ·○ ◉·◉ ○◉◉●·●●●○○○○●● ··● 11 | ·○◉ · ●◉◉◉●○··○○·●◉○●◉◉○◉·◉◉ · 12 | ··◉●○●○○●○◉ ●●●●●●●●○◉···· 13 | ●·○ ·○· ●○◉◉●●● 14 | ○○●◉○ ●○ ○◉○●●◉·◉ 15 | ···○○●●○◉◉○◉●●○●●○·●· 16 | ●○○·◉·○○○○○◉◉●· 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_5.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉○◉◉●○○○●●○ 3 | ○● ●◉●◉··●·○●◉○· ●● 4 | ●○◉○●·● · ○○·●○ ●●● 5 | ●·◉·◉·◉○● ◉○····○ 6 | ●○◉●◉○○●·○○● · ○·○·○ 7 | ····◉ ○○·○◉◉·○ ●◉·· 8 | ·◉· ● ·○○·○ ·● ●●·●·● 9 | ·◉·○ ●○○·◉○· ●·○· 10 | ·●·○● ◉○· ●·●○○·●·○○○●●○ ·◉· 11 | ○○·○●●◉●● · ◉◉○○○●○◉●◉·◉●·· 12 | ○●··●·●○○◉●· ●● ●·◉·○◉ 13 | ○○●◉○○ · ◉○◉●●○ 14 | ○◉●○·○●○ ○○●●●●◉● 15 | ○·●·●●●○◉·○○●●○●○·◉● 16 | ○◉●○● ○○○◉○●●●· 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_6.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉○◉◉●○○●●○○ 3 | ●○◉◉●·○●●·●●◉○●●●○ 4 | ●●●···● · ·◉○●●●◉○○ 5 | ◉●·●·●○○● ○●····● 6 | ●○···●○○●●○ ◉○○·○● 7 | ◉◉◉·◉·○●◉·○○·● ◉○○◉· 8 | ○ ●·· ○○·◉○○ ○●·○· 9 | · ··· ○·○·◉·· ·●○·· 10 | ○◉·◉· ◉●··●◉◉●○·●·○○●●○◉○◉· 11 | ··○●◉○○○◉● ·◉○●●··●◉○○○·●·○ 12 | ◉ · ◉···◉◉ ● ●● ·○○◉· 13 | ● ◉ ◉●· ●◉○◉◉·· 14 | ◉·○○●●● ○●○○◉●●● 15 | · ·●● ● ◉·○○●●●● ◉◉● 16 | ○◉◉●●●○○○·○●●● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_7.txt: -------------------------------------------------------------------------------- 1 | 2 | ○◉·◉●●○○●●○ 3 | ●●·●○·●●●○○○◉ ·●● 4 | ● ●···●· ·○·· ●◉○●● 5 | ○○····◉● ○·○●·◉● 6 | ·●·●··○·◉○● ◉ ●··○ 7 | · ◉·· ·●○◉·○ ●◉··· 8 | ·○ · ○○·○·○· ●●○·· 9 | ○ ◉·· ○●◉·●·· ● ··· 10 | ◉ ·● ● ○◉·○◉··◉◉○··○◉●○·· 11 | ·●●··○◉··◉●·◉○··○○●○●◉○·○· 12 | ○ ○○◉●·●○◉ ●●●●●● ○◉·· 13 | ●○ ◉○◉○· ● ◉◉◉◉● 14 | ●◉●●○○○○ ●○·●●◉●● 15 | ○○●○·●○◉·○○○●●·●●◉ 16 | ·● ·◉·○○●○◉●● 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_8.txt: -------------------------------------------------------------------------------- 1 | 2 | ○○●○◉●●○●●○ 3 | ● ●◉···●○○ · ● 4 | ○·○●·◉◉● ● ·◉·●○●○● 5 | ○●○●◉·●●· ● ○○··○ 6 | ● ◉·◉●○·◉○ ◉●○··● 7 | ·●●·○○○○○·○● ○●··· 8 | ·●··· ●○◉○··· ·○·◉·● 9 | ○●··◉ ·●○◉·●●◉ ◉·◉·· 10 | ○ ○··○○ ◉●○··◉●●●●●○··· 11 | ○●◉○○· ●·●··◉·○○○··○● 12 | ◉◉○○·○···◉●○●○● ○● ◉○· 13 | ●● ·○··· ◉●◉◉◉● 14 | ●○○●○○○○ ○◉○○·●◉● 15 | ◉◉●·●● ◉◉●●◉◉○●·· 16 | ··○●●○·○●●◉○· 17 | ·· -------------------------------------------------------------------------------- /codex-rs/tui/frames/dots/frame_9.txt: -------------------------------------------------------------------------------- 1 | 2 | ◉○○●◉●●○● 3 | ◉●○◉··● ○ ○◉○○ 4 | ◉ ●··◉●○○○◉ ○○·● 5 | ··◉◉○○ ○○●·○○·●● 6 | ◉● ◉○● ·●● ●◉●●◉●·· 7 | · ··· ○·○◉○○ ·●·●··· 8 | · ·●○·●●·○○● ◉●◉ ··· 9 | · ·◉○●○···○◉○○○· ·· 10 | ●· ◉· ····●··●··· 11 | ·○···○●·○·○····○○··· 12 | ·○◉○○·◉ ●●●●·· ◉○· 13 | ○···○●· ●◉ ○◉·· 14 | ○●○·○○ ◉◉○◉·◉● 15 | ○◉ ○○·●◉●○◉◉●·· 16 | ●◉○ ●○○·◉●◉ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_1.txt: -------------------------------------------------------------------------------- 1 | 2 | -.-A*##**##- 3 | -*#A**#A#**..*- -█#- 4 | #.*.#**█-- -█*-█.*...# 5 | **-**█##- A*.*.# 6 | *-*A█-.*-** █..**# 7 | .* #- .*A*..# █.*..# 8 | #-█-* █*.*A█.- .A. 9 | ..-.- #AA.*.* █-. 10 | .*.█- *..-*.█..######-## *█ . 11 | -.** -*#- A* .█.---.A###.A#A#. 12 | *--█- -*#.A- --*██* -*█A#*-A 13 | *-# █# - #█A*-. 14 | -*#-*#- -*-#.-#█ 15 | -*#*- *#A****.**#-#.* 16 | -*█*...---#-*#*█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_10.txt: -------------------------------------------------------------------------------- 1 | 2 | -#****##- 3 | *█-#*#*.A-*# 4 | --#..A..-.#*## 5 | .--A*.*-.*#██**# 6 | A *..█.- █#A-A.A 7 | .- █.*.AA* --█. 8 | * .*█*....* .A# 9 | █ ..*#A#..---.*.. 10 | █ .* **.*..#*#*.. 11 | . #.*#.-A-*---.*- 12 | # █.....██ *#█*.- 13 | *-█#*#*█ -.██#AA 14 | .█ ....*#A#A.A- 15 | *-**A.#*- AA█ 16 | *# -**-#** 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_11.txt: -------------------------------------------------------------------------------- 1 | 2 | #****##- 3 | A█ *...**# 4 | A█--..***A*# 5 | .--..**#-*AA 6 | -█.**.#*█*-..# 7 | .#-..#-**.-A.. 8 | ** #......-.** 9 | . ..A..*A .█. 10 | A █.A..*A#.-. 11 | ** -.A*#█A.-.- 12 | █-- ....*A.**. 13 | *--A.-*A***.- 14 | - *.**--.*█ 15 | *# *..#-A*- 16 | *- █*#-#- 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_12.txt: -------------------------------------------------------------------------------- 1 | 2 | #***#. 3 | #*--A.#* 4 | █ .A*## 5 | A#...**█. 6 | . █.....A. 7 | .█..*-█-.█ 8 | . .A*..* 9 | . A#*..█ 10 | *# .A..#.. 11 | . A.***- 12 | .. .█***A 13 | # *. -#. 14 | A **.#**. 15 | █-A█#.*.- 16 | * █.*.A 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_13.txt: -------------------------------------------------------------------------------- 1 | 2 | A***# 3 | .--.. 4 | .--.█ 5 | .**.- 6 | * .. 7 | █A-.. 8 | # .. 9 | # █. 10 | A# -.. 11 | .█ #*. 12 | █-.. .- 13 | .---. 14 | .##.- 15 | *--.* 16 | # .█* 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_14.txt: -------------------------------------------------------------------------------- 1 | 2 | #**** 3 | #A--.* 4 | .-... . 5 | ..A.█-.# 6 | ...* . 7 | .*.. █. 8 | .... . * 9 | ..*.- * 10 | .... █ 11 | █-AA *A 12 | *.██#.#. 13 | .*..---. 14 | A █.***- 15 | .*A*--A 16 | -* █*A 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_15.txt: -------------------------------------------------------------------------------- 1 | 2 | ##***.- 3 | -#*..-A*# 4 | AA.***.█*. 5 | .A- AA#.--. 6 | ..*█**..A█-. 7 | *..-..AA. █ 8 | .. ......#. 9 | ..A..#... █-. 10 | ..###*...-.A. 11 | .-.*A.*.*. .. 12 | .A....-. - * 13 | .**.-..*- * 14 | █.*# AAA- *- 15 | .-..**.#*A 16 | *-*----A 17 | -- -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_16.txt: -------------------------------------------------------------------------------- 1 | 2 | -*#█**#.- 3 | A-..*..*.** 4 | .AA█*A**.. █* 5 | AAA **-*.*..**. 6 | ..*-A*█*..*A.-* 7 | ...*.█ .** . ... 8 | **. A-#....A*█# . 9 | .A* .-..A...█* -. 10 | **...#.A-..█*# A 11 | *█--#****..-. #-. 12 | ...#██A**.*█*...- 13 | ..* .- -AA# A 14 | *.* . A#A-#. 15 | *..█-*.AA#-. 16 | █A.-*A--** 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_17.txt: -------------------------------------------------------------------------------- 1 | 2 | #*###**.#- 3 | -***...***.#█-# 4 | #**A-**-##█...-█* 5 | A.A-A.█-- █.**...** 6 | .A- . .█A***AA # 7 | -**#A- #AA. A#*A..A 8 | * *A. #AA.- *█..A*. 9 | -█*. AA..A.#..*** 10 | #A*A***#.*-.*-A*... . 11 | .█-*--.A**A..* *#█#* 12 | ***A███*****-.*AA* *█ 13 | *..-* -A..- * 14 | -** **- #█#A--A 15 | # .*#**#--**A.█ 16 | -#*A-##.*-#* 17 | - -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_18.txt: -------------------------------------------------------------------------------- 1 | 2 | -**#**#*.#- 3 | -#█-*###.--#█#**- 4 | -AA.*█**█#█.-█#AA* * 5 | #..*.#-█* █*--A*.*****# 6 | -*AA A. -█#-*A.A.-****- 7 | A*. ##..---A#*#.█-A-A-A. 8 | ..*AA #A*A.█-A█*.*.*# 9 | █*-.. -*█..*- .*.█ 10 | *██ #******#..#.*A*# .*.- 11 | -**.*** ..A--*-...-*.-* # 12 | .A.*-██*****- *--A.A*A--- 13 | ** #*# --*█A*-█ 14 | *-*#--. -*--A*#- 15 | █..**##***-█*-A-#* 16 | █..-A--#.#█*#█ 17 | - -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_19.txt: -------------------------------------------------------------------------------- 1 | 2 | --**#.#**..- 3 | -#...*A***-*-#.*## 4 | #***A█.#*- -*A#-*** 5 | A*.*#-- -**##-.*# 6 | ..A-A- #.-█A█.* .*# 7 | .*A*█ -.*.A .A █.*. 8 | -*..█ A*-A.##- AAA#. 9 | .... .*█*.█# . ... 10 | .*.*#******....#***.* * █.. 11 | -*A#.**A-*#*#-# -- A*-*#A..- 12 | █*█A#.█████**█ -*-A.AA AA█ 13 | **-*-* -AA-AA█ 14 | █ -*..*# #**.A.*- 15 | ██..*A.#--**A*█ **.█ 16 | █..-A-█-#.-*-- 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_2.txt: -------------------------------------------------------------------------------- 1 | 2 | -.-A*#***##- 3 | -##A**#...*..*-█.*#- 4 | #.*.***.*-- -█***A..*.# 5 | -.A-A*█##- -#*.A.# 6 | #-█A*-.*-**- -#.*.# 7 | █A#█- .**#A*# **.*. 8 | #.█*. -A.*.-.# A█.█. 9 | .█ *- #.*..** .█A.. 10 | *██*. *.---.█..#########.-..* 11 | -*█. A..█ A* .**----..--.#A . 12 | *** * **...█ -█*******█.#*.. 13 | █*-.A# - ##*A#* 14 | .*--.## #*-# -.█ 15 | -.-*--█*#A****.**--..* 16 | -*#*#..----.*A*█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_20.txt: -------------------------------------------------------------------------------- 1 | 2 | --#*..*#*#-- 3 | #**█*#-#***..--**## 4 | ##█-#*█.*█ -█-█*#*.#- 5 | -.█-*.* -##.*A*** 6 | -. #.* -A -..-**..* 7 | A-#.█ #*█*.█A █*..* 8 | *.*#. #* .#*- #*.A 9 | .--A- ██*A.█# ..█. 10 | .A..*#********-#█*--*** A .* 11 | █.-.-█ A------.* ***█.** #A .. 12 | *#-*████████*█ *#*..#. A* 13 | * -*A# -A*..A 14 | *--*#.- #**-**█ 15 | -#-.█.#-**#A█.█-#A*█ 16 | -*#.- *----.*██ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_21.txt: -------------------------------------------------------------------------------- 1 | 2 | --#*#**#*##-- 3 | ##*----#.*.#*---*#- 4 | **--#*-█- --.*#--*# 5 | #*.*██ -#**#**# 6 | A#A*- #.A-* **--# 7 | A█A. #**-AA **-# 8 | .█.- - A-#A█ ***█ 9 | -* ** █.# . . 10 | . . ##*****### -.#█.# *A . 11 | . .* .- -#. -█-*.# A█.A 12 | * █. --███ █- █*-#* A- # 13 | █# A*- -*█ A 14 | *- --- -.**█ #- 15 | **- *█*#A..*A**██ -- 16 | *##*#----#-*#*- 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_22.txt: -------------------------------------------------------------------------------- 1 | 2 | -##*#**#*##- 3 | -#A*..-A.A*..*.#A*#- 4 | #***.***- -█****#--## 5 | **.**█ ##...-** 6 | *..A█ #-A.*..A*█. 7 | *.*A- #.A.*-A- *.**. 8 | .#**A .#.**A█ ..A. 9 | ..*.- .*..-* .-.█. 10 | ..#█# #.******##-**.- *# -.*█ 11 | -.* *-**# A#█.AA. ***-█.## A** 12 | ***-. █████**█- -A*#-AAA█#- 13 | ***-*# -*#█.#█ 14 | ██#* ##- -.*#█*-A 15 | █A*##█*.**#**A**███#* 16 | █.█.-*----*-.**- 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_23.txt: -------------------------------------------------------------------------------- 1 | 2 | -##-*#*##*#-- 3 | -*.#.*-#-**#.-.*.#- 4 | #█#.█#**- █.A#.**..# 5 | A*.**A- -***..** 6 | AA.-A█ #A##█*A**.* 7 | #*.█A- -***██A*█..*.# 8 | -..█. AAA. -.- █ .█* 9 | .A. . .█.#-*# . *A. 10 | -█* .#.********.-*.-█*- . ... 11 | .**-.█*█ A-* *.-*#. *-. 12 | A█. . -███████ █-A**.-A-A- 13 | #..-.. #A.*-A- 14 | * .#█A-- -.█**A#A 15 | ***#**#*.**-##█--#*- 16 | █. ***.--#--**- 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_24.txt: -------------------------------------------------------------------------------- 1 | 2 | -.-*##***#- 3 | #█-A█.--.**##-█# 4 | #██**A#█. .-A*.**# * 5 | #█AA#A.*#*-.A- -**.*-█ 6 | # AA*A# -██A*-.--*.#█ 7 | .#*#*- *##A ..* A█* 8 | . .. #A-#A█A-*.*-.- 9 | . *.. .#*A*-..-A.-.. 10 | .. .***A##...##-*#-. . .. 11 | - A *.A##**##..-*#*. .*. 12 | * █*.**██████- *#.**.*A#- 13 | * *#** . █A*A 14 | *.**-.. -*█-AA-* 15 | .-*#*-█..A***.--A- 16 | *A-*#**--**#* 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_25.txt: -------------------------------------------------------------------------------- 1 | 2 | -#***####- 3 | # *#*--**.*..# 4 | A.AA##█..#***...- 5 | .#*. A *. █*.#**A 6 | #--*#A█-*A-.█ .AA*A* 7 | *#...-*#.-.A A.#.AA.# 8 | .A.*. .--A*-A.*A-█.*. 9 | ...A..█ .-**A.*-.*..* 10 | -#*.█.--****#..**.#*.* 11 | A-█.A.#.-..**-.***A*. 12 | *.*A*.-██████#A.*.A.- 13 | .-█.*#**-#*A-A#AA.A 14 | ---.-*-**A#-A-..A 15 | *.***-**.** *.* 16 | .#█**##-#.* 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_26.txt: -------------------------------------------------------------------------------- 1 | 2 | -****█## 3 | A*.*A*.#*.# 4 | A*██.**.*██*# 5 | **█#...-..-#A- 6 | .-#*...█**A*.** 7 | * █.AAA█*-*█**A 8 | . *█*..A..**█# 9 | A- *...--*..A.. 10 | . .***#.#**A*.. 11 | .-.A#.--#****. 12 | .-█A.*█*#A-#*.. 13 | *-..A* AA█..- 14 | * *.* --A.A# 15 | .█***█*-*** 16 | *AA-*.-** 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_27.txt: -------------------------------------------------------------------------------- 1 | 2 | ****## 3 | .*AA.A* 4 | *█- *.A█. 5 | ...-..*.. 6 | . -.--█* 7 | .-.-█-...- 8 | * █..-*.. 9 | . -...*█.. 10 | .. . .#.... 11 | █* .█-.-*.. 12 | .- --**#A█ 13 | ..##..-A. 14 | .**#*#A.- 15 | *--.**AA 16 | █*█ -*A 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_28.txt: -------------------------------------------------------------------------------- 1 | 2 | A*** 3 | .#-.- 4 | * *.- 5 | .--*. 6 | . .. 7 | . -█. 8 | -.. -. 9 | .-██. 10 | A* -. 11 | ...A.. 12 | . -. 13 | .*#*. 14 | .**.. 15 | *--A. 16 | . .#. 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_29.txt: -------------------------------------------------------------------------------- 1 | 2 | #****# 3 | #.*A ** 4 | -#.. ██. 5 | ....-*#A 6 | * .█. . 7 | .#... -- 8 | .**... - 9 | ..*.. 10 | ...*. - 11 | -.*.. - 12 | *..A.- * 13 | .A... -. 14 | ....-.-. 15 | .*.*A█.█ 16 | ..* .# 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_3.txt: -------------------------------------------------------------------------------- 1 | 2 | -.**##****#- 3 | -##A*..#.█**.*--.*#- 4 | #*A**.*██- -█. **#A-.# 5 | A#A*.*##- -** ..* 6 | █A*.A-A..**- *-*..- 7 | A.**A .#.**** . **. 8 | ** . █**.-█.# .*A.# 9 | #-.#. #-.█A*. .-.*. 10 | -██. *.*#..*-.*##---##-.-█*. 11 | #*A*# .A*A**. .*.--# *.#**-.*.- 12 | █-. . █..##█ █***███**#AAA#A 13 | █*. *# - A-#-AA 14 | *-AA**# ##*A█#.█ 15 | *-##-**-****#A***--#█ 16 | -*#*-A.----.*A-█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_30.txt: -------------------------------------------------------------------------------- 1 | 2 | -*█**## 3 | -A*..**█** 4 | ██-.#**.##* 5 | ..*.A.-*.* *# 6 | **..-*.#.# . 7 | .*.-# *...... 8 | *A...*- *A*. *- 9 | █. █#*.#.█.- - 10 | █.-█*.*.*A.# - 11 | █..*.--.. ## - 12 | *..**-*...#.. 13 | .*AA#A**..█ . 14 | *.*..A*..#.A 15 | #-##*-A.#A█ 16 | *-..---*█ 17 | ---- -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_31.txt: -------------------------------------------------------------------------------- 1 | 2 | -.A*#*#*# 3 | -#**##-█#*█*# 4 | #.*AA#*--.█.-** 5 | #.A#--**-#**.*..* 6 | -....#-**-#█*.A-- 7 | *.--.-.██***#.A.#█. 8 | A.. .-*.*.*A**.*.A. 9 | **# ..█.* .-██..*.. 10 | .*#-.█-...A#...- . 11 | █...AA..---*-.*.. * 12 | -*-A#.# A***-A.█.- 13 | ...***# -** . 14 | *.**- # . .*-A- 15 | A.*.A-.-#.█#.- 16 | ██*.-#*A.** 17 | ---- -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_32.txt: -------------------------------------------------------------------------------- 1 | 2 | #####**.#- 3 | **.**.*..**..# 4 | A-**-##-A--*.**█*# 5 | █AA.-#-*- - #-*.## # 6 | AA.#.**█*.* █-#.*A***# 7 | *A**#**.-A..#- .#A * 8 | *.█*#-█*..##.#*-A-AA.█- 9 | ...#- █-..█A█.*--█*.██- 10 | *..-- █-.█--.###...*.█*- 11 | ███--.**█*-----..*.*.-- 12 | #**..A .*██***-*AAA.A 13 | *#.-** #*.A█. 14 | █**...#- -A-.A # 15 | *-*█.#.***--#█-A 16 | .**--##A*-██ 17 | --- -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_33.txt: -------------------------------------------------------------------------------- 1 | 2 | -##*#*#*..- 3 | -#*..***.A.-.*.*. 4 | -A*.#*##*█- █*A..#█# 5 | #*A.A-.#- *..*-* 6 | -..A-..A*-* .#**- 7 | AA# *-**-*# A*A-* 8 | ..# *#*.-.* .*.. 9 | *.## #██*A*# *█.* 10 | ... . #- A*###***#..#A-.*. 11 | -A.██AA#A-..-----..*---... 12 | ***# .A.A A ████*** ..#A-- 13 | *#**#█# AA*A*A 14 | **█*#**# -#.#A**█ 15 | *.█**#.#*#-█*#**.* 16 | █**##----#**-█ 17 | ---- -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_34.txt: -------------------------------------------------------------------------------- 1 | 2 | -#*####*.#- 3 | -#*#A**.█.#*****#*- 4 | -AA#.*█A.*- --**#█**# 5 | #A-.*-A#- *.#*** 6 | AA.*-A. .█ # ****- 7 | #A*.-A **█.*** *#*.* 8 | .*-.- █*-*.-- .*.- 9 | *.*█A .*-.A█. A -* 10 | #█A.█ A*AA█-**######.--█ .-- 11 | ..*#A##-█AA█...-..---#A-..-.* 12 | A-*# .*.*- █**----- #A#*.█ 13 | A#****- A*..A█ 14 | *#-.#**# -#*█-A#- 15 | -*A.█.##*##****-#*A█ 16 | █.***-----****- 17 | --- -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_35.txt: -------------------------------------------------------------------------------- 1 | 2 | -##**###*##- 3 | #***..**#█.*.A█.**- 4 | -AA.*#*.-*█- -█***.█.*# 5 | #AA#A#*#- *#-*.- 6 | AA..AA* █**# .**.# 7 | *A*A#- █.-█..*- .**. 8 | * .A ** █*-. .-** 9 | ...A A***A█ A █A 10 | A #- #..A*█A.**-*-*#.. ..** 11 | .#-*█ AA*█*#A.* *#----A█.A█ .█ 12 | A-*#█A*-.A-- -█----*--*AA-#. 13 | █.-*A. -A* #- 14 | **--*#A# #*A-**█ 15 | █--█.*.-A..#.*A*█-A*█ 16 | █-.**--A--##*█- 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_36.txt: -------------------------------------------------------------------------------- 1 | 2 | --#*####*##- 3 | -*██*#A*A#*#*##█**#- 4 | #*█*##*-*█-- -█*.*#.#*.# 5 | -.█*#---- █*.*█. 6 | #A-**█.*-*#. -*.* 7 | A #A- *- █.A# █*-* 8 | . * - * █** .-.# 9 | ..*. -* -AA *. . 10 | .██. AA #*██###-#####- .*.. 11 | -*.* #.--A.A -.-------.. *A█- 12 | █ *.* #-#A- █**-----█ .#█A 13 | █#█**. #A.█A 14 | *A..#.# ###█A#- 15 | *#-█***-*.-#.*█-█#*#█ 16 | -*#A.-##-####**█ 17 | -------------------------------------------------------------------------------- /codex-rs/tui/frames/hash/frame_4.txt: -------------------------------------------------------------------------------- 1 | 2 | -.**#**#*##- 3 | --█#*.A .**A**.█A*#- 4 | #**...#*█- --.*-*.A**- 5 | AA.#.█.## █.***** 6 | A.A-.*.**-.# *█*.** 7 | A..-. █-..A** █ **.# 8 | █*.*- █***#█.# # █*. 9 | ..* #.A*-.. ... 10 | -. .- *.A█-AA#.###----## ..* 11 | .*A . #AAA#-.-**.#.-#AA-*.AA█. 12 | -.*█*#**#*A █*******█--...- 13 | #.*█.-- #-*A**█ 14 | **#A- #- -.-#**.A 15 | ...*-*******##**#*.*- 16 | ***.A.-----*-*- 17 | --------------------------------------------------------------------------------