Commit Graph

534 Commits

Author SHA1 Message Date
Dhruv Sharma 39396d4534 add cli error formatter and plugin store 2026-03-31 04:02:25 +05:30
Dhruv Sharma 30cf2cb84a update core README 2026-03-31 04:02:14 +05:30
Dhruv Sharma 147cd2ea37 support custom import function in plugin registry 2026-03-31 04:02:14 +05:30
Dhruv Sharma 582c296737 add InstalledPluginConfig type and plugin config schema 2026-03-31 04:02:14 +05:30
Ashish Huddar b8c67dca50
Merge pull request #670 from ComposioHQ/chore/remove-mobile-app
chore: remove React Native/Expo mobile app
2026-03-30 18:24:55 +05:30
Ashish Huddar 3e5224cb88 Merge main into chore/remove-mobile-app - resolve conflicts 2026-03-30 18:06:08 +05:30
Gautam Tayal b7d3293858
Merge pull request #759 from gautamtayal1/fix/add-launch-command-script
fix (cli): tmux runtime to execute long launch commands via temp script
2026-03-30 15:48:52 +05:30
Gautam Tayal 1d659f953c
Merge pull request #786 from gautamtayal1/feat/add-model-prompt
feat (cli): add interactive agent runtime selection prompt
2026-03-30 15:41:09 +05:30
Gautam Tayal 79938be822 refactor(cli): replace clack prompts with custom promptSelect function 2026-03-30 15:32:15 +05:30
Gautam Tayal fbf177300e refactor(cli): simplify agent selection prompt by removing unnecessary confirmation step 2026-03-30 15:32:15 +05:30
Gautam Tayal da8aabe0f2 feat(cli): add interactive option for agent configuration prompt before starting 2026-03-30 15:32:15 +05:30
Gautam Tayal 2282e0e9c9 fix: update jsdocs 2026-03-30 15:32:15 +05:30
Gautam Tayal 7d42dd7672 fix(cli): reload project configuration after saving changes 2026-03-30 15:32:15 +05:30
Gautam Tayal 56b36613f6 refactor(cli): streamline agent handling in spawn command 2026-03-30 15:32:15 +05:30
Gautam Tayal 7ca7632e73 refactor(cli): remove save to config option 2026-03-30 15:32:15 +05:30
Gautam Tayal 8c23903fa2 feat: add agent selection prompt 2026-03-30 15:32:15 +05:30
Dhruv Sharma b611222d87
Merge pull request #730 from ruskaruma/fix/parallel-pr-enrichment
perf(web): parallelize PR enrichment in GET /api/sessions
2026-03-30 14:30:54 +05:30
Deepak Veluvolu 852f1f93c8
fix: added GraphQL batch PRfeat: add GraphQL batch PR enrichment for orchestrator polling enrichment for orchestrator polling (fixes #608) (#637)
## Approach

  The orchestrator polling loop previously made individual API calls for each PR's
  state, CI status, and review decision - 3 separate calls per PR per poll.
  With multiple PRs being monitored, this quickly exhausted GitHub's 5,000-point
  hourly rate limit.

  This PR implements GraphQL batching using aliases, which allows fetching data
  for up to 25 PRs in a single GraphQL query. Additionally, a 2-Guard ETag
  strategy is used to skip queries entirely when nothing has changed.

  ## Implementation

  ### GraphQL Batching
  - `generateBatchQuery()` creates a single GraphQL query with unique aliases (pr0, pr1, pr2...)
  - Each PR gets the same set of fields: state, CI status, review decision, mergeability
  - Uses inline fragments for union types (CheckRun/StatusContext)
  - Variable types: String! for owner/repo, Int! for PR numbers

  ### 2-Guard ETag Strategy
  Before running expensive GraphQL queries, two lightweight REST ETag checks detect if
  anything changed:

  **Guard 1 (PR List ETag):**
  - Checks `/repos/{owner}/{repo}/pulls` with If-None-Match header
  - Returns 304 if no changes → skips GraphQL (0 points)
  - Detects: New commits, title/body edits, labels, reviews, state changes

  **Guard 2 (Commit Status ETag):**
  - Checks `/repos/{owner}/{repo}/commits/{sha}/status` per cached PR
  - Returns 304 if no changes → skips GraphQL (0 points)
  - Detects: CI status transitions (failing → passing, passing → failing, etc.)

  ### Caching
  - LRU caches for PR metadata (max 200 entries), ETags (100/500 entries)
  - Cache misses trigger individual API fallback via lifecycle-manager
  - No placeholder caching on errors - allows proper fallback behavior

  ## Impact

  - **API reduction:** ~88% fewer REST calls (216 vs 1,800 calls/hour for 5 PRs)
  - **GraphQL efficiency:** Batch query fetches 25 PRs for ~40 points vs ~400 for individual calls
  - **Polling interval:** Still 30s, but most polls return cached data (0 cost)
  - **Fallback:** Individual SCM calls still work for edge cases (permissions, cache misses)

  ## Testing

  - Unit tests for query generation and parsing helpers
  - Integration tests for real GraphQL API calls (skipped by default)
  - Covers batch failures, partial success, empty arrays, edge cases
2026-03-30 00:31:04 +05:30
Dhruv Sharma dfc8cdf516
Merge pull request #790 from gautamtayal1/fix/git-worktree-origin
fix (workspace): bugfix with git worktree creation for local repos
2026-03-29 22:18:13 +05:30
Dhruv Sharma d65d72e5c1
Merge pull request #797 from gautamtayal1/refactor/migrate-to-clack-prompts
refactor(cli): replace readline prompts with clack prompts
2026-03-29 22:17:49 +05:30
Gautam Tayal 1ed4430c70 fix: revert unlink script file 2026-03-29 20:34:33 +05:30
Harshit Singh Bhandari 8f271c4da5
Merge pull request #795 from harshitsinghbhandari/main
Fix: Resolved OpenCode discovery flakiness via extended timeouts, enabled integration test suite, and parallelized CLI session/status I/O for 80% faster response times.
2026-03-29 19:01:07 +05:30
harshitsinghbhandari 844c97cb63 minor fix 2026-03-29 18:52:34 +05:30
harshitsinghbhandari 8cafb578ba fix(core): sync enrichment timeout with discovery constant to ensure sufficient headroom 2026-03-29 18:47:00 +05:30
Gautam Tayal 5ba73016e0 fix: update promptSelect to handle undefined initialValue 2026-03-29 18:39:32 +05:30
suraj_markup 523550dd15
Merge pull request #791 from ComposioHQ/changeset-release/main
chore: version packages
2026-03-29 18:31:32 +05:30
harshitsinghbhandari e858cef29b perf(cli): parallelize tmux activity and agent introspection in fallback 'ao status' 2026-03-29 18:28:16 +05:30
harshitsinghbhandari 124cc33745 perf(cli): parallelize I/O calls in 'ao session ls' for faster listing 2026-03-29 18:28:04 +05:30
Gautam Tayal a180520575 refactor(cli): replace readline prompts with clack prompts 2026-03-29 18:06:27 +05:30
suraj-markup e9d7b64b05 chore: trigger CI for release PR 2026-03-29 17:11:48 +05:30
harshitsinghbhandari dd21054f48 extend opencode discovery timeout, include integration tests in pnpm test 2026-03-29 16:44:53 +05:30
github-actions[bot] d1e937b855 chore: version packages 2026-03-29 09:21:26 +00:00
suraj_markup f73aebe634
Merge pull request #761 from suraj-markup/fix-runtime-terminal-projectid-hardening
fix(web): runtime terminal port resolution + project-id hardening
2026-03-29 14:50:25 +05:30
Gautam Tayal b83686b662 test(workspace): add test for handling existing branch with local default-branch fallback 2026-03-29 14:16:54 +05:30
Gautam Tayal f113f8b801 fix(workspace): improve error handling in worktree creation 2026-03-29 13:18:41 +05:30
Gautam Tayal ffcf5ea8bb feat(workspace): enhance worktree creation with remote branch resolution 2026-03-29 12:51:46 +05:30
Gautam Tayal 13192d4998 fix: ensure Enter key is sent after launching tmux session 2026-03-29 09:59:58 +05:30
Gautam Tayal 04c801fff7 fix: add cleanup error boundary for script 2026-03-29 09:49:17 +05:30
suraj-markup f82e4e6ad9 fix(test): replace dynamic delete with Reflect.deleteProperty in withEnv
Fixes @typescript-eslint/no-dynamic-delete lint error in api-routes.test.ts
which was breaking Lint, Typecheck, and the onboarding build check.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 03:58:38 +05:30
suraj_markup 677df4b4f2
Merge pull request #754 from gautamtayal1/fix/cli-prompt-multi-projects
refactor(cli): prompt user when multiple projects are configured
2026-03-29 03:51:57 +05:30
suraj-markup 717253cf8e fix(web): harden project validation, fetch timeout, and test coverage
- centralize project existence check via validateConfiguredProject
  (Object.hasOwn) and apply to spawn, issues, verify, orchestrators routes
- add AbortController (1.5s) to runtime terminal config fetch in DirectTerminal
- add runtimeFetchDone flag to prevent repeated fetches on reconnect
- restore resolveDashboardProjectFilter fallback to getPrimaryProjectId()
- expand runtime terminal endpoint tests (defaults, invalid ports, proxy path)
- add validation.test.ts covering prototype-chain bypass cases
- add undefined case test for resolveDashboardProjectFilter
- update changeset with full list of changes for npm publish

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 03:17:42 +05:30
Ashish Huddar 25ec462499
Merge pull request #775 from ComposioHQ/ashish921998/add-design-md
feat: add comprehensive design system (DESIGN.md)
2026-03-29 01:06:12 +05:30
Ashish Huddar 8d16049222 fix: correct mismatched status colors after light/dark token swap
- Light mode --color-status-ready: #5B7EF8 → #5e6ad2 (DESIGN.md specifies darker shade for light backgrounds)
- Light mode --color-tint-red: rgba(207,34,46,...) → rgba(220,38,38,...) to match new #dc2626
- Dark mode --color-tint-red: rgba(255,123,114,...) → rgba(239,68,68,...) to match new #ef4444
- ActivityDot.tsx: update hardcoded bg tints — active gets green rgba(34,197,94,0.1), ready gets blue rgba(91,126,248,0.1)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 00:42:34 +05:30
Ashish Huddar f4ba0fb64d implement design system: Geist Sans, new accent tokens, GPU-composited dot pulse
- Replace IBM Plex Sans/Mono with Geist Sans (keep JetBrains Mono)
- Update accent: #5e6ad2 → #5B7EF8 (blue), add amber respond/cyan review status tokens
- Update status colors: working=green #22c55e, ready=blue #5B7EF8, error=red #ef4444
- Add --radius-base: 2px; apply 2px border-radius to session cards and orchestrator buttons
- Replace box-shadow activity-pulse with GPU-composited dot-ring pseudo-element (.dot-pulse)
- Remove ready-rail-breathe and ready-sheen keyframes (decorative anxiety, high perf cost)
- Update card entrance: slide-up uses 8px translateY and spring easing cubic-bezier(0.16,1,0.3,1)
- Cap nav backdrop-filter at blur(12px)
- Add contain: layout style paint to session cards
- Pulse animation min-opacity 0.4→0.6

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 00:10:28 +05:30
Ashish Huddar 0cfae4962b chore: remove .gstack/ from .gitignore
~/.gstack/ is a home directory path, never tracked by the repo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:57:55 +05:30
Ashish Huddar d87d79b970 feat: add comprehensive design system (DESIGN.md)
Complete design system created via /design-consultation with competitive
research (Conductor.build, T3 Code, OpenAI Codex, Emdash) and 4 design
voices (primary, Codex CLI, Claude subagent, Emil Kowalski design eng).

Key decisions: Geist Sans + JetBrains Mono (2 fonts), dual accent system
(blue #5B7EF8 + amber #f1be64), 2px base border-radius, GPU-composited
animations, status colors with distinct semantic roles.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 23:55:24 +05:30
Gautam Tayal b010e322e0 fix 2026-03-28 21:47:31 +05:30
Gautam Tayal e03d22871e fix 2026-03-28 21:46:16 +05:30
Gautam Tayal db7a7039e9 fix 2026-03-28 21:41:51 +05:30
Gautam Tayal 3860a42424 fix 2026-03-28 21:40:21 +05:30