Commit Graph

13 Commits

Author SHA1 Message Date
Mason Daugherty 7e0f3f7cc9 chore(cli): use short link (#3053) 2026-04-30 14:57:48 -04:00
Mason Daugherty 63fa537e99 fix(cli): fix mktemp template in debug script for macOS (#2603)
Fix BSD `mktemp` compatibility on macOS: the template must end with the
`X` characters for randomization to work, and `$TMPDIR` already includes
a trailing slash. Without this, the output file is literally named
`deepagents_debug_XXXXXX.txt`.
2026-04-08 19:15:41 -04:00
Mason Daugherty 816606272c chore(cli): add server startup debug script (#2602)
Add a diagnostic script for triaging server startup failures.
2026-04-08 19:09:53 -04:00
Mason Daugherty f618acc671 feat(cli): support root/MDM installs (#2346)
Support running the install script as root, targeting macOS MDM tools
(Kandji, Jamf, etc.) that execute scripts as root in a minimal
environment. When `id -u` is 0, the script resolves the real console
user's `HOME` and `chown`s all created files back to them. Non-root
installs are completely unaffected — all new code paths either
short-circuit on the root check or define `fix_owner` as a no-op.
2026-03-30 21:55:05 -04:00
Mason Daugherty fd92f6eaa8 feat(cli): auto-update lifecycle, /update command, install script ux (#2095)
Overhaul the CLI's update lifecycle — version checks, auto-upgrade,
install-method detection, and a new `/update` slash command — so users
can stay current without leaving the TUI. The install script also gets a
major quality-of-life pass with colored logging, interactive prompts,
error trapping, and optional ripgrep installation.

## Changes

- Add `detect_install_method()` in `update_check.py` that inspects
`sys.prefix` to distinguish uv, Homebrew, pip, and editable installs —
`upgrade_command()` and `perform_upgrade()` use this to select the right
upgrade path
- Add opt-in auto-update behind `DEEPAGENTS_AUTO_UPDATE` env var or
`[update].auto_update` in `config.toml`; `_check_for_updates` now
auto-upgrades when enabled, otherwise shows an install-method-aware hint
- Add "what's new" banner on first launch after an upgrade via
`should_show_whats_new()` / `mark_version_seen()`, tracked in
`~/.deepagents/seen_version.json`
- Add `/update` slash command (`_handle_update_command`) that checks
PyPI with `bypass_cache=True`, runs the upgrade in-process, and reports
success/failure inline
- Surface `update_available` through `AppResult` so `cli_main` prints an
exit-time update banner when a newer version was detected during the
session
- Rewrite `scripts/install.sh` with colored log helpers, an `EXIT` trap
for actionable failure messages, interactive mode detection (`/dev/tty`
for piped installs), post-install verification (`deepagents -v`), and
optional ripgrep installation via platform package managers with cargo
fallback
- Move `PYPI_URL` and `USER_AGENT` from `update_check.py` to
`_version.py` as canonical constants; narrow bare `except` clauses to
specific exception types throughout `update_check.py`

## Testing

- Add `TestHelpBodyDrift` in `test_command_registry.py` — parses the
`/help` output in `app.py` and asserts every command in the `COMMANDS`
registry appears there, catching future drift between the two
2026-03-20 03:20:58 -04:00
Mason Daugherty a5f56a634f docs(cli): update installation instructions/help text for sandbox extras (#1985) 2026-03-17 16:23:14 -04:00
Vincent G d9bd765cf7 docs(cli): fix install script url (#1772)
Fixes

- URL to the install script in libs/cli/README.md

## Social handles (optional)
<!-- If you'd like a shoutout on release, add your socials below -->
Twitter: @VinceOPS

---------

Co-authored-by: Mason Daugherty <github@mdrxy.com>
2026-03-10 18:03:42 -04:00
Mason Daugherty 27d3eda928 chore: relocate CLI install script (#1717) 2026-03-07 17:26:00 -05:00
Mason Daugherty c2f0572c11 refactor(infra): move cli check script (#1318) 2026-02-12 16:39:25 -05:00
Mason Daugherty db05de1b0c feat(infra): ensure dep group version match for CLI (#1316)
We should keep `langchain-openai` as a required dep, but don't want to
remove an optional group with its name so as to not confuse users.
Consequently, let's make sure their bounds are in sync.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:32:21 -05:00
Mason Daugherty 2460b1ee01 refactor(cli): format & lint (#1023) 2026-02-03 11:31:47 -05:00
Mason Daugherty b5f6f24666 chore(cli): cleanup pyproject.toml (#972)
* linting rules & application
* use hatchling
* set bounds on deps & group semantically
2026-01-30 23:10:12 -08:00
Mason Daugherty 754b5fde94 refactor(cli): rename folder to cli/ (#962)
from `deepagents-cli/` -> `cli/`
2026-01-30 14:53:59 -08:00