core-agent-ide/codex-cli/tests
Thomas 081786eaa6
feat: add /command autocomplete (#317)
Add interactive slash‑command autocomplete & navigation in chat input

    Description
This PR enhances the chat input component by adding first‑class support
for slash commands (/help, /clear, /compact, etc.)
    with:

* **Live filtering:** As soon as the user types leading `/`, a list of
matching commands is shown below the prompt.
* **Arrow‑key navigation:** Up/Down arrows cycle through suggestions.
* **Enter to autocomplete:** Pressing Enter on a partial command will
fill it (without submitting) so you can add
    arguments or simply press Enter again to execute.
* **Type‑safe registry:** A new `slash‑commands.ts` file declares all
supported commands in one place, along with
    TypeScript types to prevent drift.
* **Validation:** Only registered commands will ever autocomplete or be
suggested; unknown single‑word slash inputs still
    show an “Invalid command” system message.
        * **Automated tests:**
            * Unit tests for the command registry and prefix filtering

            * Existing tests continue passing with no regressions

    Motivation
Slash commands provide a quick, discoverable way to control the agent
(clearing history, compacting context, opening overlays,
etc.). Before, users had to memorize the exact command or rely on the
generic /help list—autocomplete makes them far more
    accessible and reduces typos.

    Changes

* `src/utils/slash‑commands.ts` – defines `SlashCommand` and exports a
flat list of supported commands + descriptions
        * `terminal‑chat‑input.tsx`
            * Import and type the command registry

* Render filtered suggestions under the prompt when input starts with
`/`

* Hook into `useInput` to handle Up/Down and Enter for selection & fill

* Flag to swallow the first Enter (autocomplete) and only submit on the
next
* Updated tests in `tests/slash‑commands.test.ts` to cover registry
contents and filtering logic
        * Removed old JS version and fixed stray `@ts‑expect‑error`

    How to test locally

        1. Type `/` in the prompt—you should see matching commands.
2. Use arrows to move the highlight, press Enter to fill, then Enter
again to execute.
3. Run the full test suite (`npm test`) to verify no regressions.

    Notes

* Future work could include fuzzy matching, paging long lists, or more
visual styling.
* This change is purely additive and does not affect non‑slash inputs or
existing slash handlers.

---------

Co-authored-by: Fouad Matin <169186268+fouad-openai@users.noreply.github.com>
Co-authored-by: Thibault Sottiaux <tibo@openai.com>
2025-04-19 07:25:46 -07:00
..
__fixtures__ Initial commit 2025-04-16 12:56:08 -04:00
__snapshots__ feat: notify when a newer version is available (#333) 2025-04-18 17:00:45 -07:00
agent-cancel-early.test.ts feat: add notifications for MacOS using Applescript (#160) 2025-04-17 16:19:26 -07:00
agent-cancel-prev-response.test.ts feat: add notifications for MacOS using Applescript (#160) 2025-04-17 16:19:26 -07:00
agent-cancel-race.test.ts feat: add notifications for MacOS using Applescript (#160) 2025-04-17 16:19:26 -07:00
agent-cancel.test.ts feat: add notifications for MacOS using Applescript (#160) 2025-04-17 16:19:26 -07:00
agent-function-call-id.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
agent-generic-network-error.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
agent-interrupt-continue.test.ts feat: add notifications for MacOS using Applescript (#160) 2025-04-17 16:19:26 -07:00
agent-invalid-request-error.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
agent-max-tokens-error.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
agent-network-errors.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
agent-project-doc.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
agent-rate-limit-error.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
agent-server-retry.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
agent-terminate.test.ts feat: add notifications for MacOS using Applescript (#160) 2025-04-17 16:19:26 -07:00
agent-thinking-time.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
api-key.test.ts Initial commit 2025-04-16 12:56:08 -04:00
apply-patch.test.ts Initial commit 2025-04-16 12:56:08 -04:00
approvals.test.ts feat: add user-defined safe commands configuration and approval logic #380 (#386) 2025-04-18 22:35:32 -07:00
cancel-exec.test.ts Initial commit 2025-04-16 12:56:08 -04:00
check-updates.test.ts feat: notify when a newer version is available (#333) 2025-04-18 17:00:45 -07:00
config.test.tsx feat: read approvalMode from config file (#298) 2025-04-19 07:25:25 -07:00
dummy.test.ts Initial commit 2025-04-16 12:56:08 -04:00
external-editor.test.ts Back out @lib indirection in tsconfig.json (#111) 2025-04-16 14:16:53 -07:00
format-command.test.ts Back out @lib indirection in tsconfig.json (#111) 2025-04-16 14:16:53 -07:00
input-utils.test.ts Add fallback text for missing images (#397) 2025-04-18 22:55:24 -07:00
invalid-command-handling.test.ts add support for -w,--writable-root to add more writable roots for sandbox (#263) 2025-04-17 15:39:26 -07:00
markdown.test.tsx Initial commit 2025-04-16 12:56:08 -04:00
model-utils-network-error.test.ts Initial commit 2025-04-16 12:56:08 -04:00
multiline-ctrl-enter-submit.test.tsx Initial commit 2025-04-16 12:56:08 -04:00
multiline-dynamic-width.test.tsx Initial commit 2025-04-16 12:56:08 -04:00
multiline-enter-submit-cr.test.tsx Initial commit 2025-04-16 12:56:08 -04:00
multiline-external-editor-shortcut.test.tsx Back out @lib indirection in tsconfig.json (#111) 2025-04-16 14:16:53 -07:00
multiline-history-behavior.test.tsx Back out @lib indirection in tsconfig.json (#111) 2025-04-16 14:16:53 -07:00
multiline-input-test.ts Initial commit 2025-04-16 12:56:08 -04:00
multiline-newline.test.tsx Initial commit 2025-04-16 12:56:08 -04:00
multiline-shift-enter-crlf.test.tsx Initial commit 2025-04-16 12:56:08 -04:00
multiline-shift-enter-mod1.test.tsx Fix handling of Shift+Enter in e.g. Ghostty (#338) 2025-04-18 09:19:06 -07:00
multiline-shift-enter.test.tsx Initial commit 2025-04-16 12:56:08 -04:00
parse-apply-patch.test.ts Back out @lib indirection in tsconfig.json (#111) 2025-04-16 14:16:53 -07:00
project-doc.test.ts Initial commit 2025-04-16 12:56:08 -04:00
raw-exec-process-group.test.ts fix: raw-exec-process-group.test improve reliability and error handling (#280) 2025-04-17 23:00:28 -07:00
slash-commands.test.ts feat: add /command autocomplete (#317) 2025-04-19 07:25:46 -07:00
terminal-chat-input-compact.test.tsx fix: /bug report command, thinking indicator (#381) 2025-04-18 18:13:34 -07:00
terminal-chat-response-item.test.tsx Initial commit 2025-04-16 12:56:08 -04:00
text-buffer-copy-paste.test.ts Back out @lib indirection in tsconfig.json (#111) 2025-04-16 14:16:53 -07:00
text-buffer-crlf.test.ts Back out @lib indirection in tsconfig.json (#111) 2025-04-16 14:16:53 -07:00
text-buffer-gaps.test.ts Back out @lib indirection in tsconfig.json (#111) 2025-04-16 14:16:53 -07:00
text-buffer-word.test.ts fix(text-buffer): correct word deletion logic for trailing spaces (Ctrl+Backspace) (#131) 2025-04-16 16:25:08 -07:00
text-buffer.test.ts Back out @lib indirection in tsconfig.json (#111) 2025-04-16 14:16:53 -07:00
typeahead-scroll.test.tsx (fix) do not transitively rely on deprecated lodash deps (#175) 2025-04-16 20:52:35 -07:00
ui-test-helpers.tsx Initial commit 2025-04-16 12:56:08 -04:00