Commit Graph

42 Commits

Author SHA1 Message Date
Mohamed Boudra
7f9dafab68 refactor(cli): deduplicate command options between top-level and agent subcommands
Extract addXxxOptions() builder functions for all 9 shared commands
(ls, run, attach, logs, stop, delete, send, inspect, wait) so both
paseo <cmd> and paseo agent <cmd> use a single source of truth.

Fixes drift where agent subcommands were missing --wait-timeout (run),
--worktree/--base/--image (run), --since (logs), and --image (send).
2026-03-23 10:33:06 +07:00
Mohamed Boudra
f6579dbeb4 Switch to double quotes and reformat codebase with Biome 2026-03-21 20:22:15 +07:00
Mohamed Boudra
22c6df3f85 feat(cli): add --wait-timeout option to run command
Replace hardcoded 10-minute timeout with configurable --wait-timeout.
Default is no limit, matching the wait command behavior. Extracts
parseDuration to shared utils so both run and wait can use it.

Fixes OUTPUT_SCHEMA_FAILED errors when agents take >10 minutes.
2026-03-15 10:41:06 +07:00
Mohamed Boudra
f12dc6127b feat: add --prompt and --prompt-file options to agent send command 2026-03-14 22:38:13 +07:00
Mohamed Boudra
e526f375c8 Merge branch 'fix-tests-suite-loop'
# Conflicts:
#	package-lock.json
#	packages/server/src/server/speech/speech-config-resolver.ts
#	packages/server/src/shared/tool-call-display.ts
2026-03-14 22:06:42 +07:00
Mohamed Boudra
3ae1102d13 feat: add agent ID/name resolution and provider/model syntax support 2026-03-14 22:04:09 +07:00
Mohamed Boudra
10671cf999 fix(tests): iteration 6 2026-03-13 13:42:51 +07:00
Mohamed Boudra
e2cb67462d refactor(cli): extract common command options into reusable helpers 2026-03-11 21:08:08 +07:00
Mohamed Boudra
2a1ef17107 feat: implement two-shim CLI install with fallback instructions 2026-03-08 15:40:02 +07:00
Mohamed Boudra
1d1c7058f1 feat: add agent delete command and bulk tab close operations 2026-03-07 12:32:49 +07:00
Mohamed Boudra
111b9d95f4 feat: carry archive UI label hard cut updates 2026-03-04 10:39:28 +07:00
Mohamed Boudra
3f06063b4b fix(cli): make agent wait unlimited by default 2026-02-23 20:51:42 +07:00
Mohamed Boudra
0c710b09f5 refactor(app): introduce attachment storage layer and draft lifecycle management
Replace inline data-URL image handling with a persistent attachment storage service, add draft lifecycle states (active/abandoned/sent) with generation tracking, and update fetchAgent to return project placement alongside agent snapshots.
2026-02-22 16:22:21 +07:00
Mohamed Boudra
52336425bc Improve wait output with recent activity snapshot 2026-02-22 12:10:38 +07:00
Mohamed Boudra
d7e2ab4437 feat: add thinking option support and autonomous run handling 2026-02-21 22:09:48 +07:00
Mohamed Boudra
6dad3212da fix: interrupt running agents before archive 2026-02-20 13:34:06 +07:00
Mohamed Boudra
ce5d9d6dc8 refactor: unify structured generation pipeline 2026-02-17 14:52:58 +07:00
Mohamed Boudra
41d1fa6d97 feat: update sidebar agent workflow and host filter UI 2026-02-15 08:59:17 +07:00
Mohamed Boudra
6ff1c42132 refactor(cli): simplify agent mode validation flow
What I changed:
- extracted a single missingModeError helper in agent/mode.ts so the command no longer duplicates the same command error payload in two branches
- flattened control flow by returning early for --list and using one set-mode path guarded by explicit missing-mode validation
- tightened tests/10-agent-mode.test.ts to assert the exact missing-mode error message instead of allowing a daemon-connection fallback

Reasoning:
- this keeps behavior the same while reducing branch duplication and making the validation contract explicit
- the hardened test protects the intended precedence: missing required mode should fail before any daemon interaction

Verification:
- npm run typecheck
- (cd packages/cli && npx tsx tests/10-agent-mode.test.ts)

Notes for next agent:
- repository had a pre-existing local modification in scripts/codex-refactor-loop.sh; I intentionally did not touch or stage it
- no blockers encountered for this refactor
2026-02-14 01:39:01 +07:00
Mohamed Boudra
193c723714 refactor(cli): simplify agent mode command control flow
Context from recent agent work
- Prior commits focused on voice/background model gating, speech resolver typing, and timeline cursor loading.
- This change targets a separate CLI command path to avoid overlap.

What changed
- Normalized the optional mode argument once (`mode?.trim()`) and reused it.
- Removed duplicated `client.close()` calls and centralized cleanup in a `finally` block.
- Typed the daemon client variable explicitly (`Awaited<ReturnType<typeof connectToDaemon>> | undefined`).
- Kept user-facing behavior and error codes stable, including DAEMON_NOT_RUNNING and MODE_OPERATION_FAILED.

Reasoning
- The previous implementation duplicated lifecycle handling and relied on non-null assertions for mode values.
- Centralized resource cleanup lowers leak risk and makes control flow easier to audit.
- This is a behavior-preserving refactor aligned with the refactor skill contract.

Verification
- `npm run typecheck`
- `npx tsx packages/cli/tests/10-agent-mode.test.ts`

Accomplishments for next agent
- `runModeCommand` now has a single cleanup path and clearer branching for list vs set mode.
- Mode argument handling is explicit and trimmed before use.

Challenges / follow-up
- CLI output typing still requires `AnyCommandResult<any>` for mixed-shape commands due the current `withOutput` generic design.
- If desired, a future refactor can redesign output typing to support per-branch result schemas without `any`.
2026-02-14 01:23:01 +07:00
Mohamed Boudra
8169134ac3 refactor timeline loading to cursor-based fetch API 2026-02-14 01:03:36 +07:00
Mohamed Boudra
cb2e4aacfe feat(cli): add --output-schema flag for structured agent output 2026-02-12 18:04:39 +07:00
Mohamed Boudra
fba7c73c8b feat(cli): add agent update command for name and labels 2026-02-12 14:15:33 +07:00
Mohamed Boudra
6053ee7c34 fix(cli): list all non-archived agents by default and drop ls --ui 2026-02-12 14:05:46 +07:00
Mohamed Boudra
6d115074e9 Update files 2026-02-09 11:11:11 +07:00
Mohamed Boudra
8cf86a5d98 chore: align server package name for workspaces 2026-02-05 13:12:53 +07:00
Mohamed Boudra
79aec0069c Improve daemon RPC resiliency and diff handling 2026-02-04 10:21:36 +07:00
Mohamed Boudra
bf9555829b refactor: replace agent_list polling with request/response RPC pattern 2026-02-01 22:37:32 +07:00
Mohamed Boudra
a473302a9f refactor: use --json flag alias instead of --format json throughout CLI 2026-02-01 12:33:18 +07:00
Mohamed Boudra
25c7d5afa9 refactor: consolidate agent wait methods and use in-memory MCP transport 2026-01-30 14:50:01 +07:00
Mohamed Boudra
0618dc6b0d refactor: rename session_state to agent_list and add subscriptions 2026-01-30 13:39:40 +07:00
Mohamed Boudra
7a8841481e feat: wait returns on permission request and improve CLI logging 2026-01-29 12:12:39 +07:00
Mohamed Boudra
c015fdbef1 refactor: replace agent-control MCP with labels system and Paseo MCP 2026-01-29 11:31:15 +07:00
Mohamed Boudra
dfda6daeed refactor(cli): rename ps to ls and add top-level agent commands 2026-01-29 10:41:19 +07:00
Mohamed Boudra
7d4636ecff feat(cli): add agent logs command
Add `paseo agent logs <id>` command to view agent activity/timeline.

Features:
- View agent timeline entries (messages, tool calls, errors)
- `-f, --follow` flag for real-time streaming
- `--tail <n>` to limit entries shown
- Proper formatting of different timeline item types
2026-01-28 23:46:13 +07:00
Mohamed Boudra
74fceed9b5 feat(cli): add agent inspect command
Add the `paseo agent inspect <id>` command that shows detailed
information about an agent:

- Id, name, provider, model, status, mode, cwd
- Creation timestamp
- Token usage (input, output, cached, cost)
- Capabilities (streaming, persistence, dynamic modes, MCP servers)
- Available modes
- Pending permissions count
- Parent agent ID

The default output is YAML-like key-value pairs. Use `--format json`
or `--format yaml` for machine-readable output with the full agent
snapshot.

Supports agent ID prefix matching.
2026-01-28 23:41:50 +07:00
Mohamed Boudra
f96a4ee3df feat(cli): add agent mode command
Add the `paseo agent mode` command for changing and listing agent
operational modes. Supports setting a mode or listing available modes
with the --list flag.

Usage:
  paseo agent mode <id> <mode>     # Set mode
  paseo agent mode --list <id>     # List available modes
2026-01-28 23:41:14 +07:00
Mohamed Boudra
b040e2fc6d feat(cli): add agent stop command
Implements the `agent stop` command for stopping agents.

Features:
- Stop a specific agent by ID (with prefix matching)
- --all flag to stop all running agents
- --cwd flag to stop all agents in a specific directory
- Cancels running agents before terminating them
- Graceful error handling for partially failed stops

Usage:
  paseo agent stop <id>
  paseo agent stop --all
  paseo agent stop --cwd ~/dev/paseo
2026-01-28 23:26:53 +07:00
Mohamed Boudra
851d5ef247 feat(cli): add agent send command
Implements the `agent send` command for sending messages to existing agents.

Features:
- Send follow-up tasks to running agents
- Support for ID prefix matching (e.g., "a1b2" matches "a1b2c3d4")
- --no-wait flag to return immediately without waiting for completion
- Default behavior waits for agent to become idle

Usage:
  paseo agent send <id> <prompt>
  paseo agent send --no-wait a1b2c3d "Run the linter"
2026-01-28 23:25:45 +07:00
Mohamed Boudra
dd514a4a67 feat(cli): add agent run command
Implements the `paseo agent run` command for creating and running agents:
- Creates agent with initial prompt
- `-d, --detach` flag for background execution
- `--name <name>` to assign a title
- `--provider <provider>` to select claude/codex/opencode
- `--mode <mode>` for provider-specific modes
- `--cwd <path>` for working directory
- Supports all output formats (table, json, yaml, quiet)
- Graceful error handling when daemon not running

Usage:
  paseo agent run "Fix the failing tests"
  paseo agent run -d --name "test-fixer" "Run the test suite"
  paseo agent run --mode bypass "Refactor the auth module"

Phase 4 of CLI implementation (TDD checklist 4.1-4.6)
2026-01-28 23:22:57 +07:00
Mohamed Boudra
e38f8292d4 chore(cli): enable strict TypeScript config 2026-01-28 23:22:22 +07:00
Mohamed Boudra
59e6ab2bf5 feat(cli): add agent ps command
Implements the `paseo agent ps` command for listing agents:
- Lists running agents by default
- `-a, --all` flag to include archived agents
- `--status <status>` filter by agent status
- `--cwd <path>` filter by working directory
- Supports all output formats (table, json, yaml, quiet)
- Graceful error handling when daemon not running

Output format:
AGENT ID    NAME              PROVIDER  STATUS   CWD                    CREATED
a1b2c3d     🎭 Test fixer     claude    running  ~/dev/paseo            2 minutes ago

Phase 3 of CLI implementation (TDD checklist 3.1-3.5)
2026-01-28 23:13:38 +07:00