Major rewrite of the Grok CLI agent:
- Runtime: Bun-first (removed Node.js/tsx fallbacks)
- UI: Replaced Ink with OpenTUI (@opentui/react) terminal framework
- Tools: Simplified to bash-only (removed text-editor, search, morph, todo, confirmation tools)
- Search: Integrated X Search API and Web Search via xAI Responses API
- Models: Updated to all latest Grok models (grok-4, grok-4.20-beta, grok-4-1-fast, grok-4-fast, grok-3-mini)
- Agent: Streamlined agent loop with async generator streaming
- Client: Dual API support (Chat Completions for tool calling, Responses API for search)
- Removed MCP integration, confirmation service, token counter, Morph editor
- Updated tsconfig for OpenTUI React JSX
- Clean 10-file architecture in src/
Co-authored-by: Ismail Pelaseyed <homanp@users.noreply.github.com>
* feat: add support for global custom instructions
* Remove comments
* Fix import syntax for fs-extra module (#112)
* Fix import syntax for fs-extra module
* Fix import syntax for fs-extra module
* Fix import syntax for fs-extra module
* Fix missing newline at end of morph-editor.ts
* Add where to set the API key in the json file (#107)
* Fix diff generation showing entire file as changed (fixes#83) (#98)
The diff preview was showing the entire file as changed when only a few
lines were actually modified. This was caused by a broken change detection
algorithm that couldn't properly handle insertions and deletions.
Replaced the naive line-matching algorithm with a proper LCS (Longest
Common Subsequence) based diff algorithm using dynamic programming. This
produces minimal, accurate diffs that match what git diff shows.
Changes:
- Added computeLCS(): Computes longest common subsequence between old/new lines
- Added extractChanges(): Extracts actual change regions from LCS table
- Updated generateDiff(): Uses LCS-based change detection instead of broken algorithm
Impact:
- Diff previews now show only actual changes (e.g., 4 lines instead of 260)
- Drastically reduces context pollution in conversation history
- Matches git diff output accuracy
🤖 Contributed by ZDS-AI (https://zds.group)
* add model migration manager and new grok models (#124)
* minor tweaks
---------
Co-authored-by: jszczypk <janusz@fide.pl>
Co-authored-by: Ben Faerber <benfaerber@protonmail.com>
Co-authored-by: Joseph Cheek <jcheek@users.noreply.github.com>
Co-authored-by: Ismail Pelaseyed <homanp@gmail.com>
The diff preview was showing the entire file as changed when only a few
lines were actually modified. This was caused by a broken change detection
algorithm that couldn't properly handle insertions and deletions.
Replaced the naive line-matching algorithm with a proper LCS (Longest
Common Subsequence) based diff algorithm using dynamic programming. This
produces minimal, accurate diffs that match what git diff shows.
Changes:
- Added computeLCS(): Computes longest common subsequence between old/new lines
- Added extractChanges(): Extracts actual change regions from LCS table
- Updated generateDiff(): Uses LCS-based change detection instead of broken algorithm
Impact:
- Diff previews now show only actual changes (e.g., 4 lines instead of 260)
- Drastically reduces context pollution in conversation history
- Matches git diff output accuracy
🤖 Contributed by ZDS-AI (https://zds.group)
* Fix import syntax for fs-extra module
* Fix import syntax for fs-extra module
* Fix import syntax for fs-extra module
* Fix missing newline at end of morph-editor.ts
* Convert to ES and install with bun
* Delete package-lock.json
* Update README with bun info
* Update .gitignore
* Update .npmignore
* Bump version
* Unignore package lock
* feat: improve model configuration and settings management
- Refactor model configuration system with unified settings approach
- Add support for user-level default models and project-level current models
- Implement automatic saving of API key and base URL from command line arguments
- Remove model descriptions for cleaner UI and easier extensibility
- Fix commander.js subcommand argument parsing with fallback mechanism
- Improve configuration file structure and priority handling
- Add comprehensive model configuration utilities in src/utils/model-config.ts
Configuration priority: project current model > user default model > system default
Both main command and git subcommand now save credentials automatically
* refactor: unify settings management
- Add SettingsManager singleton for user/project settings
- Eliminate duplicate settings code across files
- Clear separation: user settings vs project settings
* docs: improve README clarity and organization
- Simplify setup section with quick start approach
- Consolidate configuration info into unified section
- Add clear explanation of user vs project settings
- Document OpenAI-compatible API support
- Remove duplicate model configuration sections
* bump sdk
---------
Co-authored-by: Ismail Pelaseyed <homanp@gmail.com>
* feat: add /commit-and-push for AI-generated commits and pushes
* fix: handle missing upstream branch in git push
* feat: add git commit-and-push subcommand with AI assistance
* feat: automate staging changes with git add in commit workflow
* chore: bump version to 0.0.12
* revert package json
* chore(release): bump version to 0.0.12
- rewrote generateDiff() to show only relevant context (3 lines before/after changes)
- fixed incorrect change counts (was showing 272 additions/removals for 1-line change)
- added fuzzy matching for multi-line string replacements to handle formatting differences
- added replaceAll parameter to replace all occurrences of a string
- added replaceLines() method for line-based editing when string matching isn't suitable
- improved hunk generation to merge nearby changes for better readability
this significantly improves the user experience when editing large files by showing
only the relevant changes instead of the entire file content in confirmation dialogs.