From 22c72813c00d9c71c0779e10a88352fdd792fcab Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 25 Jun 2026 21:47:31 +0000 Subject: [PATCH] chore: format with prettier [skip ci] --- README.md | 74 +- docs/architecture.md | 109 +- docs/backend-code-structure.md | 82 +- package.json | 40 +- packages/desktop/src/api/schema.ts | 5238 +++++++++-------- .../desktop/src/renderer/routeTree.gen.ts | 311 +- packages/shared/package.json | 50 +- packages/shared/tsconfig.json | 34 +- 8 files changed, 2999 insertions(+), 2939 deletions(-) diff --git a/README.md b/README.md index de751b3a5..e583ad177 100644 --- a/README.md +++ b/README.md @@ -49,17 +49,17 @@ An Agentic IDE that supervises parallel AI coding agents in isolated workspaces, ## Features -| Feature | Description | -| :--- | :--- | -| **Agent-Agnostic Platform** | 23+ agent adapters including [Claude Code](https://code.claude.com/docs/en/overview), [OpenAI Codex](https://openai.com/), [Cursor](https://cursor.com/), [OpenCode](https://opencode.ai/), [Aider](https://aider.chat/), [Amp](https://ampcode.com/manual), [Goose](https://goose-docs.ai/), [GitHub Copilot](https://github.com/features/copilot), [Grok](https://x.ai/grok), [Qwen Code](https://github.com/QwenLM/qwen-code), [Kimi Code](https://www.kimi.com/code), [Cline](https://cline.bot/), [Continue](https://www.continue.dev/), [Kiro](https://kiro.dev/), and more | -| **Isolated Workspaces** | Each session spawns into its own git worktree with dedicated runtime | -| **Platform-Native Runtimes** | tmux on Darwin/Linux, conpty on Windows for optimal performance | -| **Live PR Observation** | Provider-neutral SCM observer with automatic feedback routing | -| **Automatic Feedback Routing** | CI failures, review comments, and merge conflicts routed to the owning agent | -| **Durable Facts Storage** | SQLite persists immutable facts with display status derived at read time | -| **CDC Broadcasting** | DB triggers append changes to change_log, broadcasted via SSE | -| **Desktop Experience** | Native Electron app with React UI and live terminal streaming | -| **Loopback-Only Daemon** | HTTP control over 127.0.0.1 with no auth, CORS, or TLS by design | +| Feature | Description | +| :----------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Agent-Agnostic Platform** | 23+ agent adapters including [Claude Code](https://code.claude.com/docs/en/overview), [OpenAI Codex](https://openai.com/), [Cursor](https://cursor.com/), [OpenCode](https://opencode.ai/), [Aider](https://aider.chat/), [Amp](https://ampcode.com/manual), [Goose](https://goose-docs.ai/), [GitHub Copilot](https://github.com/features/copilot), [Grok](https://x.ai/grok), [Qwen Code](https://github.com/QwenLM/qwen-code), [Kimi Code](https://www.kimi.com/code), [Cline](https://cline.bot/), [Continue](https://www.continue.dev/), [Kiro](https://kiro.dev/), and more | +| **Isolated Workspaces** | Each session spawns into its own git worktree with dedicated runtime | +| **Platform-Native Runtimes** | tmux on Darwin/Linux, conpty on Windows for optimal performance | +| **Live PR Observation** | Provider-neutral SCM observer with automatic feedback routing | +| **Automatic Feedback Routing** | CI failures, review comments, and merge conflicts routed to the owning agent | +| **Durable Facts Storage** | SQLite persists immutable facts with display status derived at read time | +| **CDC Broadcasting** | DB triggers append changes to change_log, broadcasted via SSE | +| **Desktop Experience** | Native Electron app with React UI and live terminal streaming | +| **Loopback-Only Daemon** | HTTP control over 127.0.0.1 with no auth, CORS, or TLS by design | ### Supported Agents @@ -74,13 +74,14 @@ Works with 23+ CLI-based coding agents including Claude Code, OpenAI Codex, Curs ### Prerequisites | Requirement | Minimum | Recommended | -|-------------|---------|-------------| -| Go | 1.25+ | Latest | -| Node.js | 20+ | Latest LTS | -| Git | Any | Latest | -| pnpm | Any | Latest | +| ----------- | ------- | ----------- | +| Go | 1.25+ | Latest | +| Node.js | 20+ | Latest LTS | +| Git | Any | Latest | +| pnpm | Any | Latest | **Optional:** + - `tmux` (Darwin/Linux) - For Unix runtime - `gh` (GitHub CLI) - For authenticated GitHub API calls @@ -88,11 +89,11 @@ Works with 23+ CLI-based coding agents including Claude Code, OpenAI Codex, Curs Download the latest release for your platform: -| Platform | Download | -|----------|----------| -| **Windows** | [Setup.exe](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) | -| **macOS** | [Agent Orchestrator.dmg](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) | -| **Linux** | [Agent Orchestrator.AppImage](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) | +| Platform | Download | +| ----------- | ------------------------------------------------------------------------------------------------- | +| **Windows** | [Setup.exe](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) | +| **macOS** | [Agent Orchestrator.dmg](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) | +| **Linux** | [Agent Orchestrator.AppImage](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) | **Direct Download:** [Latest Release](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) @@ -105,6 +106,7 @@ Agent Orchestrator is a long-running Go daemon built around **inbound/outbound p **Core mental model:** OBSERVE external facts → UPDATE durable facts → DERIVE display status / ACT **Key components:** + - **Frontend** - Electron + React UI with TanStack Router/Query and shadcn/ui - **Backend Daemon** - Go-based HTTP server with controllers, services, and adapters - **Runtime** - Platform-specific: `tmux` on Darwin/Linux, `conpty` on Windows @@ -117,12 +119,12 @@ For detailed architecture diagrams, data flows, and load-bearing rules, see [arc ## Documentation -| Document | Description | -|----------|-------------| -| [Architecture](docs/architecture.md) | System architecture, data flows, and load-bearing rules | -| [Backend Code Structure](docs/backend-code-structure.md) | Package-by-package ownership and dependency rules | -| [AGENTS.md](AGENTS.md) | Contributor and worker-agent contract | -| [Agent Adapter Contract](docs/agent/README.md) | Agent adapter interface and hook behavior | +| Document | Description | +| -------------------------------------------------------- | ------------------------------------------------------- | +| [Architecture](docs/architecture.md) | System architecture, data flows, and load-bearing rules | +| [Backend Code Structure](docs/backend-code-structure.md) | Package-by-package ownership and dependency rules | +| [AGENTS.md](AGENTS.md) | Contributor and worker-agent contract | +| [Agent Adapter Contract](docs/agent/README.md) | Agent adapter interface and hook behavior | --- @@ -147,15 +149,15 @@ npx @redwoodjs/agent-ci run --all All configuration is environment-driven. The daemon takes no config file. -| Variable | Default | Purpose | -|----------|---------|---------| -| `AO_PORT` | `3001` | HTTP bind port | -| `AO_REQUEST_TIMEOUT` | `60s` | Per-request timeout | -| `AO_SHUTDOWN_TIMEOUT` | `10s` | Graceful shutdown cap | -| `AO_RUN_FILE` | `~/.ao/running.json` | PID/port handshake | -| `AO_DATA_DIR` | `~/.ao/data` | SQLite data directory | -| `AO_AGENT` | `claude-code` | Compatibility agent adapter | -| `GITHUB_TOKEN` | - | GitHub auth token | +| Variable | Default | Purpose | +| --------------------- | -------------------- | --------------------------- | +| `AO_PORT` | `3001` | HTTP bind port | +| `AO_REQUEST_TIMEOUT` | `60s` | Per-request timeout | +| `AO_SHUTDOWN_TIMEOUT` | `10s` | Graceful shutdown cap | +| `AO_RUN_FILE` | `~/.ao/running.json` | PID/port handshake | +| `AO_DATA_DIR` | `~/.ao/data` | SQLite data directory | +| `AO_AGENT` | `claude-code` | Compatibility agent adapter | +| `GITHUB_TOKEN` | - | GitHub auth token | ### Health Checks diff --git a/docs/architecture.md b/docs/architecture.md index 1a38332f5..ee1b231c0 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -26,12 +26,12 @@ graph TB EMain["Electron Main Process"] React["React 19 UI (renderer)"] TanStack["TanStack Router/Query + shadcn/ui"] - + EMain --> HTTP["HTTP (REST + SSE + WebSocket)"] React --> HTTP TanStack --> HTTP end - + subgraph Backend["Backend Go Daemon"] HTTP2["HTTP Layer (Controllers)"] CLI["CLI Layer (Cobra cmd)"] @@ -44,24 +44,24 @@ graph TB SCM["SCM Observer
(GitHub)"] Reaper["Reaper
(Runtime liveness)"] Storage["Storage + CDC
(SQLite with triggers)"] - + CLI --> Service HTTP2 --> Service Service --> SessionMgr SessionMgr --> RuntimeSelect - + RuntimeSelect -->|Darwin/Linux| Tmux RuntimeSelect -->|Windows| Conpty - + SessionMgr --> Lifecycle Tmux --> Lifecycle Conpty --> Lifecycle - + Lifecycle --> Storage SCM --> Lifecycle Reaper --> Lifecycle end - + HTTP -->|"Loopback Only
(127.0.0.1)"| HTTP2 ``` @@ -76,13 +76,13 @@ graph LR AO["Agent Orchestrator"] --> RuntimeCheck{"Platform Check"} RuntimeCheck -->|Darwin/Linux| TmuxRuntime["tmux Runtime"] RuntimeCheck -->|Windows| ConptyRuntime["conpty Runtime"] - + TmuxRuntime --> TmuxFeatures["• tmux sessions
• Direct CLI interaction
• Unix PTY integration"] ConptyRuntime --> ConptyFeatures["• Pty-host server
• B1 binary protocol
• Loopback TCP communication"] - + TmuxFeatures --> Common["Common Interface:
ports.Runtime + ports.Attacher"] ConptyFeatures --> Common - + Common --> Session["Session Management
& Terminal Streaming"] ``` @@ -118,6 +118,7 @@ sequenceDiagram ``` **Key Features:** + - Creates detached tmux sessions with hidden status bar - Direct tmux CLI interaction for session management - `tmux send-keys` for input delivery @@ -141,7 +142,7 @@ sequenceDiagram Host->>Agent: Execute agent in ConPTY Agent->>Host: Terminal output Host->>Host: Store in ring buffer - + Note over AO,Host: Attach Phase AO->>Host: Dial loopback TCP Host-->>AO: Scrollback replay (MsgTerminalData) @@ -149,6 +150,7 @@ sequenceDiagram ``` **Key Features:** + - Detached pty-host process with ConPTY - Custom B1 binary protocol over loopback TCP - Ring buffer for scrollback storage @@ -179,43 +181,43 @@ backend/internal/config daemon env/default config Swappable implementations for each port: -| Port | Darwin/Linux | Windows | Purpose | -|------|--------------|---------|---------| -| **Runtime** | tmux | conpty | Terminal multiplexing and session isolation | -| **Workspace** | git worktree | git worktree | Isolated working directories | -| **Agent** | claude-code, codex, etc. | claude-code, codex, etc. | AI coding agent execution | -| **SCM** | GitHub | GitHub | Pull request observation | -| **Tracker** | GitHub | GitHub | Issue tracking | -| **Reviewer** | claude-code | claude-code | Code review execution | -| **Notifier** | desktop, slack, discord, webhook | desktop, slack, discord, webhook | Notification delivery | +| Port | Darwin/Linux | Windows | Purpose | +| ------------- | -------------------------------- | -------------------------------- | ------------------------------------------- | +| **Runtime** | tmux | conpty | Terminal multiplexing and session isolation | +| **Workspace** | git worktree | git worktree | Isolated working directories | +| **Agent** | claude-code, codex, etc. | claude-code, codex, etc. | AI coding agent execution | +| **SCM** | GitHub | GitHub | Pull request observation | +| **Tracker** | GitHub | GitHub | Issue tracking | +| **Reviewer** | claude-code | claude-code | Code review execution | +| **Notifier** | desktop, slack, discord, webhook | desktop, slack, discord, webhook | Notification delivery | ## Session Lifecycle ```mermaid stateDiagram-v2 [*] --> Creating: POST /api/v1/sessions - + Creating --> WorkspaceCreated: Create git worktree WorkspaceCreated --> RuntimeCreated: Create tmux/conpty session RuntimeCreated --> Launching: Execute agent command Launching --> Spawned: Agent running - + Spawned --> Active: Agent reports activity Spawned --> Idle: Agent waiting Spawned --> WaitingInput: Agent needs input Spawned --> Terminated: Agent exits - + Active --> Idle: Agent finishes task Active --> WaitingInput: Agent needs input Active --> Terminated: Agent exits - + Idle --> Active: Agent starts new task Idle --> WaitingInput: Agent needs input Idle --> Terminated: Agent exits - + WaitingInput --> Active: User provides input WaitingInput --> Terminated: Session killed - + Terminated --> [*]: Session cleaned up ``` @@ -240,24 +242,24 @@ sequenceDiagram CLI->>HTTP: POST /api/v1/sessions HTTP->>Service: service.Session.Spawn() Service->>SessionMgr: session_manager.Spawn() - + SessionMgr->>SQLite: Create session row (seed state) SessionMgr->>Workspace: Workspace.Create() Workspace-->>SessionMgr: git worktree created SessionMgr->>Runtime: Runtime.Create() - + alt Darwin/Linux Runtime->>Runtime: tmux new-session -d -s else Windows Runtime->>Runtime: Spawn pty-host + ConPTY end - + Runtime-->>SessionMgr: Session handle SessionMgr->>Agent: Get launch command Agent-->>SessionMgr: Command Runtime->>Agent: Execute in tmux/ConPTY Agent->>Lifecycle: Report spawn complete - + Lifecycle->>SQLite: Update session (spawned state) SQLite->>CDC: Trigger change_log CDC->>Frontend: SSE session_created event @@ -276,7 +278,7 @@ sequenceDiagram Frontend->>HTTP: WebSocket upgrade /api/v1/sessions/{id}/terminal HTTP->>TerminalMgr: Create terminal session TerminalMgr->>Runtime: Runtime.Attach(handle, rows, cols) - + alt tmux (Darwin/Linux) Runtime->>Runtime: tmux attach-session -t Runtime-->>TerminalMgr: PTY stream @@ -286,9 +288,9 @@ sequenceDiagram Runtime->>Runtime: MsgTerminalData (scrollback) Runtime-->>TerminalMgr: TCP stream end - + TerminalMgr-->>Frontend: WebSocket terminal stream - + Note over Frontend,Runtime: Bidirectional terminal I/O ``` @@ -301,22 +303,22 @@ graph TD Start["Session Status Check"] --> Check1{"is_terminated?"} Check1 -->|Yes| Merged{"Merged PR?"} Check1 -->|No| Check2{"activity_state = waiting_input?"} - + Merged -->|Yes| Status1["Status: merged"] Merged -->|No| Status2["Status: terminated"] - + Check2 -->|Yes| Status3["Status: needs_input"] Check2 -->|No| Check3{"Open PR Facts?"} - + Check3 -->|Yes| PRStatus["PR Pipeline Status:
ci_failed, draft, changes_requested,
mergeable, approved, review_pending, pr_open"] Check3 -->|No| Check4{"activity_state = active?"} - + Check4 -->|Yes| Status4["Status: working"] Check4 -->|No| Check5{"Signal capable + <90s grace?"} - + Check5 -->|Yes| Status5["Status: no_signal"] Check5 -->|No| Status6["Status: idle"] - + PRStatus --> Final["Display Status"] Status1 --> Final Status2 --> Final @@ -340,12 +342,12 @@ graph TD `session_manager.Manager` performs internal session mutations: -| Operation | Description | -|-----------|-------------| -| **Spawn** | Create row → create workspace → create runtime → execute agent → report spawned | -| **Kill** | Mark terminated → destroy runtime → destroy workspace | +| Operation | Description | +| ----------- | -------------------------------------------------------------------------------------- | +| **Spawn** | Create row → create workspace → create runtime → execute agent → report spawned | +| **Kill** | Mark terminated → destroy runtime → destroy workspace | | **Restore** | Check terminated → restore workspace → create runtime → execute agent → report spawned | -| **Cleanup** | Reclaim terminated session workspaces | +| **Cleanup** | Reclaim terminated session workspaces | ### PR Manager @@ -385,6 +387,7 @@ graph LR ``` **Tables:** + - `projects` — Registered repos with soft-delete - `sessions` — Session facts (activity_state, is_terminated, runtime metadata) - `pr` — PR facts (state, ci_state, review_decision, mergeability) @@ -403,15 +406,15 @@ claude-code, codex, aider, cursor, opencode, cline, copilot, grok, droid, amp, a All configuration via environment variables: -| Variable | Default | Purpose | -|----------|---------|---------| -| `AO_PORT` | `3001` | HTTP bind port | -| `AO_REQUEST_TIMEOUT` | `60s` | Per-request timeout | -| `AO_SHUTDOWN_TIMEOUT` | `10s` | Graceful shutdown cap | -| `AO_RUN_FILE` | `~/.ao/running.json` | PID/port handshake | -| `AO_DATA_DIR` | `~/.ao/data` | SQLite data directory | -| `AO_AGENT` | `claude-code` | Compatibility agent | -| `GITHUB_TOKEN` | — | GitHub auth token | +| Variable | Default | Purpose | +| --------------------- | -------------------- | --------------------- | +| `AO_PORT` | `3001` | HTTP bind port | +| `AO_REQUEST_TIMEOUT` | `60s` | Per-request timeout | +| `AO_SHUTDOWN_TIMEOUT` | `10s` | Graceful shutdown cap | +| `AO_RUN_FILE` | `~/.ao/running.json` | PID/port handshake | +| `AO_DATA_DIR` | `~/.ao/data` | SQLite data directory | +| `AO_AGENT` | `claude-code` | Compatibility agent | +| `GITHUB_TOKEN` | — | GitHub auth token | **Runtime selection is automatic** based on platform — no configuration needed. diff --git a/docs/backend-code-structure.md b/docs/backend-code-structure.md index a53ea3d1f..8383eb24f 100644 --- a/docs/backend-code-structure.md +++ b/docs/backend-code-structure.md @@ -29,7 +29,7 @@ graph TB CLI["cmd/ao
CLI entrypoint"] Main["main.go
Daemon entrypoint"] end - + subgraph CoreLayer["Core Layer"] Domain["domain
Shared vocabulary"] Ports["ports
Capability interfaces"] @@ -37,7 +37,7 @@ graph TB SessionMgr["session_manager
Internal commands"] Lifecycle["lifecycle
Fact reducer"] end - + subgraph AdapterLayer["Adapter Layer"] AgentAdapters["adapters/agent/*
23+ agents"] RuntimeAdapters["adapters/runtime/*
tmux + conpty"] @@ -45,7 +45,7 @@ graph TB SCMAdapters["adapters/scm/*
GitHub"] TrackerAdapters["adapters/tracker/*
GitHub"] end - + subgraph Infrastructure["Infrastructure"] Storage["storage/sqlite
Persistence"] CDC["cdc
Change delivery"] @@ -55,31 +55,31 @@ graph TB Daemon["daemon
Composition root"] Config["config
Configuration"] end - + CLI --> CLI2 Main --> Daemon - + Daemon --> Services Daemon --> AdapterLayer Daemon --> Infrastructure - + Services --> Domain Services --> Ports Services --> SessionMgr - + SessionMgr --> Ports SessionMgr --> Lifecycle - + AdapterLayer --> Ports AdapterLayer --> Domain - + HTTPD --> Services CLI2 --> HTTPD - + Services --> Storage Lifecycle --> Storage Storage --> CDC - + Terminal --> RuntimeAdapters HTTPD --> Terminal ``` @@ -90,18 +90,18 @@ graph TB graph LR Controllers["httpd/controllers"] -->|calls| Services["service/*"] Controllers2["cli commands"] -->|calls| HTTP["httpd"] - + Services -->|orchestrates| SessionMgr["session_manager"] Services -->|queries| Storage["storage/sqlite"] - + SessionMgr -->|uses| Runtime["ports.Runtime"] SessionMgr -->|uses| Workspace["ports.Workspace"] SessionMgr -->|uses| Agent["ports.Agent"] SessionMgr -->|reports to| Lifecycle["lifecycle"] - + Runtime -->|implemented by| Tmux["adapters/runtime/tmux"] Runtime -->|implemented by| Conpty["adapters/runtime/conpty"] - + Lifecycle -->|persists to| Storage Storage -->|triggers| CDC["cdc"] CDC -->|broadcasts to| Frontend["Frontend subscribers"] @@ -114,12 +114,14 @@ graph LR `domain` is AO's shared product language. Keep it stable and free of infrastructure imports. **Belongs here:** + - Shared IDs: `ProjectID`, `SessionID`, `IssueID` - Shared enums and status vocabulary - Durable fact records that multiple packages must agree on - PR, tracker, project, and session vocabulary (not transport-specific) **Does not belong here:** + - HTTP request/response DTOs - CLI output shapes - OpenAPI wrapper/envelope types @@ -134,6 +136,7 @@ graph LR `service` packages are the controller-facing application boundary. **Belongs here:** + - Resource use cases called by HTTP controllers and CLI-backed API flows - Resource read models and command/result types - Display-model assembly (session status derived from session and PR facts) @@ -141,6 +144,7 @@ graph LR - Small store interfaces consumed by the service **Does not belong here:** + - Low-level runtime/workspace/agent process control - Raw sqlc generated rows as public service results - HTTP routing, path parsing, status-code decisions, or OpenAPI generation @@ -151,12 +155,14 @@ graph LR `session_manager` owns internal session commands: spawn, restore, kill, cleanup, and send-related orchestration over runtime, workspace, agent, storage, messenger, and lifecycle dependencies. **Belongs here:** + - Multi-step session mutations - Rollback/cleanup sequencing when spawn partially succeeds - Resource teardown safety - Internal errors (not found, terminated, not restorable) **Does not belong here:** + - HTTP request decoding - CLI formatting - Controller-facing list/get read-model assembly @@ -169,11 +175,13 @@ The split is intentional: `service/session` is the product/API boundary; `sessio `lifecycle` is the canonical write path for durable session lifecycle facts. It reduces runtime observations, activity signals, spawn completion, termination, and PR observations into small persisted facts. **Belongs here:** + - Updates to lifecycle-owned session facts - Guardrails around runtime/activity observations - Lifecycle-triggered agent nudges for actionable PR facts **Does not belong here:** + - Display status persistence - HTTP/CLI DTOs - Direct adapter implementation details @@ -184,6 +192,7 @@ The split is intentional: `service/session` is the product/API boundary; `sessio `ports` contains narrow capability interfaces and shared adapter-facing structs. It connects core code to replaceable systems. **Capability interfaces:** + - `Runtime` — Create/Destroy/IsAlive for tmux/conpty sessions - `Workspace` — Git worktree creation/destruction - `Agent` — Agent launch, restore, hooks, session info @@ -193,11 +202,13 @@ The split is intentional: `service/session` is the product/API boundary; `sessio - `AgentMessenger` — Message delivery to agents **Belongs here:** + - Interfaces consumed by core packages and implemented by adapters - Capability structs: `RuntimeConfig`, `WorkspaceConfig`, `SpawnConfig` - Vocabulary needed at the boundary between core orchestration and adapters **Does not belong here:** + - Resource read models (project/session API responses) - HTTP request/response DTOs - sqlc rows @@ -214,15 +225,16 @@ Adapters are concrete implementations of external systems. They should be leaves graph LR RunSelect["runtimeselect"] -->|Darwin/Linux| Tmux["tmux
Unix PTY integration"] RunSelect -->|Windows| Conpty["conpty
ConPTY + B1 protocol"] - + Tmux -->|implements| RuntimePort["ports.Runtime"] Conpty -->|implements| RuntimePort - + Tmux -->|uses| PtyExec["ptyexec
Unix PTY spawning"] Conpty -->|uses| PtyHost["Pty-host server
Ring buffer + Registry"] ``` **Current adapters:** + ```txt internal/adapters/agent/claudecode internal/adapters/agent/codex @@ -238,6 +250,7 @@ internal/adapters/reviewer/claudecode ``` **Good dependencies:** + ``` session_manager → ports.Runtime adapters/runtime/tmux → ports + domain @@ -246,6 +259,7 @@ daemon → adapters + services + storage ``` **Avoid:** + ``` domain → adapters service/session → adapters/runtime/tmux @@ -258,6 +272,7 @@ adapters/* → httpd `storage/sqlite` owns SQLite setup, migrations, sqlc generated code, and store implementations. **Belongs here:** + - Connection setup and PRAGMAs - Goose migrations - sqlc queries and generated code @@ -265,6 +280,7 @@ adapters/* → httpd - Transactions and CDC-triggered persistence behavior **Does not belong here:** + - HTTP response types - CLI output formatting - Product display status rules @@ -277,11 +293,13 @@ Generated sqlc types should stay behind store methods. Services and lifecycle co `cdc` owns `change_log` polling and event broadcasting. SQLite triggers append durable events to `change_log`; the poller tails that table and fans events out to subscribers. **Belongs here:** + - Event type definitions for the CDC stream - Poller and broadcaster logic - Subscriber fan-out behavior **Does not belong here:** + - Terminal byte streams - Product workflow decisions - Database schema ownership @@ -300,7 +318,7 @@ sequenceDiagram WS->>Mux: WebSocket upgrade Mux->>Term: Create attach session Term->>Runtime: Runtime.Attach(handle, rows, cols) - + alt tmux (Darwin/Linux) Runtime->>Runtime: tmux attach-session -t Runtime->>Runtime: PTY stream via ptyexec @@ -309,13 +327,14 @@ sequenceDiagram Runtime->>Runtime: B1 protocol handshake Runtime->>Runtime: MsgTerminalData (scrollback) end - + Runtime-->>Term: Stream Term-->>Mux: Framed protocol Mux-->>WS: WebSocket messages ``` **Belongs here:** + - Per-client attachment lifecycle (liveness gating, re-attach backoff) - Input/output framing independent of HTTP - PTY-backed attach handling and terminal protocol tests @@ -325,6 +344,7 @@ sequenceDiagram `httpd` is the HTTP protocol adapter. **Belongs here:** + - Routing and middleware - HTTP request decoding and response encoding - Path/query parameter handling @@ -362,19 +382,21 @@ graph TD Daemon --> Terminal["terminal"] Daemon --> Services["service/*"] Daemon --> HTTPD["httpd"] - + Config -->|"env vars"| Daemon Storage -->|"triggers"| CDC CDC -->|"events"| HTTPD ``` **Belongs here:** + - Production dependency construction - Adapter registration - Startup/shutdown sequencing - Cross-component wiring **Does not belong here:** + - Business logic that should be testable in service, lifecycle, or manager packages - Adapter implementation details @@ -383,27 +405,27 @@ graph TD ```mermaid graph TB Root["backend/"] - + Root --> Cmd["cmd/ao/
# CLI entrypoint"] Root --> Main["main.go
# Daemon entrypoint"] Root --> Sqlc["sqlc.yaml"] - + Root --> Domain["internal/domain/
# Shared vocabulary"] Root --> Ports["internal/ports/
# Capability interfaces"] - + Root --> Service["internal/service/"] Service --> Proj["project/
# Project API"] Service --> Sess["session/
# Session API"] Service --> PR["pr/
# PR service"] Service --> Review["review/
# Code review"] - + Root --> SessMgr["internal/session_manager/
# Internal commands"] Root --> Life["internal/lifecycle/
# Fact reducer"] - + Root --> Observe["internal/observe/"] Observe --> SCM["scm/
# GitHub observer"] Observe --> Reap["reaper/
# Liveness observer"] - + Root --> Store["internal/storage/sqlite/
# DB + stores"] Root --> CDC2["internal/cdc/
# Change delivery"] Root --> Term["internal/terminal/
# PTY protocol"] @@ -411,7 +433,7 @@ graph TB Root --> CLI2["internal/cli/
# CLI commands"] Root --> Daemon2["internal/daemon/
# Composition"] Root --> Cfg["internal/config/
# Config"] - + Root --> Adapters["internal/adapters/"] Adapters --> Agent["agent/
# 23+ agents"] Adapters --> Runtime2["runtime/"] @@ -441,7 +463,7 @@ Use these defaults: ```mermaid graph LR NewCode["New Code"] --> Choice{"What type?"} - + Choice -->|HTTP route| HTTPRoute["Add to httpd/
Call service/*
Update OpenAPI"] Choice -->|Product resource| Product["domain + service/
storage + ports"] Choice -->|Adapter| AdapterPath["adapters//
Implement ports
Wire in daemon"] @@ -459,6 +481,7 @@ Project-owned concepts live in `internal/service/project`: - The `Manager` contract consumed by HTTP controllers `internal/httpd/controllers` remains responsible for: + - Route registration - JSON decoding/encoding - HTTP status codes and error envelopes @@ -476,7 +499,7 @@ graph LR Adapters["adapters/*"] -->|✓| Ports Adapters -->|✓| Domain["domain"] end - + subgraph Avoid["Avoid Dependencies"] Services2["service/*"] -.->|✗| Adapters2["adapters/*"] Domain2["domain"] -.->|✗| Adapters2 @@ -486,6 +509,7 @@ graph LR ``` **Key rules:** + - Controllers call services, not storage directly - Services call session manager, not adapters directly - Adapters implement ports, don't depend on HTTP/storage diff --git a/package.json b/package.json index f4ab94df7..4cfab1cc4 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,22 @@ { - "name": "agent-orchestrator", - "version": "0.0.0", - "private": true, - "workspaces": [ - "packages/*" - ], - "scripts": { - "api": "run-s api:spec api:ts", - "api:spec": "cd backend && go generate ./internal/httpd/apispec/...", - "api:ts": "npx openapi-typescript@7.4.4 backend/internal/httpd/apispec/openapi.yaml -o packages/shared/src/api/schema.ts", - "lint": "npm run lint:backend && npm run lint:frontend", - "lint:backend": "cd backend && go test ./... && golangci-lint run", - "lint:frontend": "cd packages/desktop && npm run typecheck", - "build:shared": "cd packages/shared && npm run build", - "build:desktop": "cd packages/desktop && npm run build", - "build:mobile": "cd packages/mobile && npm run build" - }, - "devDependencies": { - "npm-run-all": "^4.1.5" - } + "name": "agent-orchestrator", + "version": "0.0.0", + "private": true, + "workspaces": [ + "packages/*" + ], + "scripts": { + "api": "run-s api:spec api:ts", + "api:spec": "cd backend && go generate ./internal/httpd/apispec/...", + "api:ts": "npx openapi-typescript@7.4.4 backend/internal/httpd/apispec/openapi.yaml -o packages/shared/src/api/schema.ts", + "lint": "npm run lint:backend && npm run lint:frontend", + "lint:backend": "cd backend && go test ./... && golangci-lint run", + "lint:frontend": "cd packages/desktop && npm run typecheck", + "build:shared": "cd packages/shared && npm run build", + "build:desktop": "cd packages/desktop && npm run build", + "build:mobile": "cd packages/mobile && npm run build" + }, + "devDependencies": { + "npm-run-all": "^4.1.5" + } } diff --git a/packages/desktop/src/api/schema.ts b/packages/desktop/src/api/schema.ts index a7f68302d..e2dc8703f 100644 --- a/packages/desktop/src/api/schema.ts +++ b/packages/desktop/src/api/schema.ts @@ -4,2611 +4,2647 @@ */ export interface paths { - "/api/v1/events": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Stream CDC events with durable replay */ - get: operations["streamEvents"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/notifications": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** List unread notifications */ - get: operations["listNotifications"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/notifications/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - /** Mark a notification read */ - patch: operations["markNotificationRead"]; - trace?: never; - }; - "/api/v1/notifications/read-all": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Mark all unread notifications read */ - post: operations["markAllNotificationsRead"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/notifications/stream": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Stream created notifications */ - get: operations["streamNotifications"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/orchestrators": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** List orchestrator sessions across projects */ - get: operations["listOrchestrators"]; - put?: never; - /** Spawn an orchestrator session */ - post: operations["spawnOrchestrator"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/orchestrators/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Fetch one orchestrator session */ - get: operations["getOrchestrator"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/projects": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** List all registered projects (active + degraded) */ - get: operations["listProjects"]; - put?: never; - /** Register a new project from a git repository path */ - post: operations["addProject"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/projects/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Fetch one project; discriminates ok vs degraded */ - get: operations["getProject"]; - put?: never; - post?: never; - /** Remove a project; stops sessions, cleans workspaces, unregisters */ - delete: operations["removeProject"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/projects/{id}/config": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** Replace a project's per-project config */ - put: operations["setProjectConfig"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/prs/{id}/merge": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Squash-merge a pull request */ - post: operations["mergePR"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/prs/{id}/resolve-comments": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Resolve review threads on a pull request */ - post: operations["resolveComments"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** List sessions */ - get: operations["listSessions"]; - put?: never; - /** Spawn a new agent session */ - post: operations["spawnSession"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Fetch one session */ - get: operations["getSession"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - /** Rename a session display name */ - patch: operations["renameSession"]; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/activity": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Report an agent activity-state signal for a session */ - post: operations["setSessionActivity"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/kill": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Mark a session terminated and tear down runtime/workspace resources */ - post: operations["killSession"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/pr": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** List pull requests owned by a session */ - get: operations["listSessionPRs"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/pr/claim": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Claim an existing pull request for a session */ - post: operations["claimSessionPR"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/preview": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Discover a browser preview URL for a session workspace */ - get: operations["getSessionPreview"]; - put?: never; - /** Set (or autodetect) the browser preview URL for a session */ - post: operations["setSessionPreview"]; - /** Clear the browser preview URL for a session */ - delete: operations["clearSessionPreview"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/preview/files/*": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Serve a static browser preview file from a session workspace */ - get: operations["getSessionPreviewFile"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/restore": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Restore a terminated session */ - post: operations["restoreSession"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/reviews": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** List a worker's code-review runs */ - get: operations["listReviews"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/reviews/submit": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Record a reviewer's result for a worker's PR */ - post: operations["submitReview"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/reviews/trigger": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Trigger a code review of a worker's PR */ - post: operations["triggerReview"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/rollback": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Undo a partially-completed spawn (delete seed row, or kill if spawn output exists) */ - post: operations["rollbackSession"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/{sessionId}/send": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Send a message to a running session's agent */ - post: operations["sendSessionMessage"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/v1/sessions/cleanup": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Clean up terminated session workspaces */ - post: operations["cleanupSessions"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; + "/api/v1/events": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Stream CDC events with durable replay */ + get: operations["streamEvents"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/notifications": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** List unread notifications */ + get: operations["listNotifications"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/notifications/{id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + /** Mark a notification read */ + patch: operations["markNotificationRead"]; + trace?: never; + }; + "/api/v1/notifications/read-all": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Mark all unread notifications read */ + post: operations["markAllNotificationsRead"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/notifications/stream": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Stream created notifications */ + get: operations["streamNotifications"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/orchestrators": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** List orchestrator sessions across projects */ + get: operations["listOrchestrators"]; + put?: never; + /** Spawn an orchestrator session */ + post: operations["spawnOrchestrator"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/orchestrators/{id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Fetch one orchestrator session */ + get: operations["getOrchestrator"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/projects": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** List all registered projects (active + degraded) */ + get: operations["listProjects"]; + put?: never; + /** Register a new project from a git repository path */ + post: operations["addProject"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/projects/{id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Fetch one project; discriminates ok vs degraded */ + get: operations["getProject"]; + put?: never; + post?: never; + /** Remove a project; stops sessions, cleans workspaces, unregisters */ + delete: operations["removeProject"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/projects/{id}/config": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** Replace a project's per-project config */ + put: operations["setProjectConfig"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/prs/{id}/merge": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Squash-merge a pull request */ + post: operations["mergePR"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/prs/{id}/resolve-comments": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Resolve review threads on a pull request */ + post: operations["resolveComments"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** List sessions */ + get: operations["listSessions"]; + put?: never; + /** Spawn a new agent session */ + post: operations["spawnSession"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Fetch one session */ + get: operations["getSession"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + /** Rename a session display name */ + patch: operations["renameSession"]; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/activity": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Report an agent activity-state signal for a session */ + post: operations["setSessionActivity"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/kill": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Mark a session terminated and tear down runtime/workspace resources */ + post: operations["killSession"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/pr": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** List pull requests owned by a session */ + get: operations["listSessionPRs"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/pr/claim": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Claim an existing pull request for a session */ + post: operations["claimSessionPR"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/preview": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Discover a browser preview URL for a session workspace */ + get: operations["getSessionPreview"]; + put?: never; + /** Set (or autodetect) the browser preview URL for a session */ + post: operations["setSessionPreview"]; + /** Clear the browser preview URL for a session */ + delete: operations["clearSessionPreview"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/preview/files/*": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Serve a static browser preview file from a session workspace */ + get: operations["getSessionPreviewFile"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/restore": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Restore a terminated session */ + post: operations["restoreSession"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/reviews": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** List a worker's code-review runs */ + get: operations["listReviews"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/reviews/submit": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Record a reviewer's result for a worker's PR */ + post: operations["submitReview"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/reviews/trigger": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Trigger a code review of a worker's PR */ + post: operations["triggerReview"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/rollback": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Undo a partially-completed spawn (delete seed row, or kill if spawn output exists) */ + post: operations["rollbackSession"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/{sessionId}/send": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Send a message to a running session's agent */ + post: operations["sendSessionMessage"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/sessions/cleanup": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Clean up terminated session workspaces */ + post: operations["cleanupSessions"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; } export type webhooks = Record; export interface components { - schemas: { - APIError: { - code: string; - details?: { - [key: string]: unknown; - }; - error: string; - message: string; - requestId?: string; - }; - AddProjectInput: { - asWorkspace?: boolean; - config?: components["schemas"]["ProjectConfig"]; - name?: null | string; - path: string; - projectId?: null | string; - }; - AgentConfig: { - model?: string; - permissions?: string; - }; - ClaimPRRequest: { - allowTakeover?: null | boolean; - pr: string; - }; - ClaimPRResponse: { - branchChanged: boolean; - ok: boolean; - prs: components["schemas"]["SessionPRFacts"][]; - sessionId: string; - takenOverFrom: string[]; - }; - CleanupSessionsResponse: { - cleaned: string[]; - ok: boolean; - skipped: components["schemas"]["CleanupSkippedSession"][]; - }; - CleanupSkippedSession: { - reason: string; - sessionId: string; - }; - ControllersSessionView: { - activity: components["schemas"]["DomainActivity"]; - branch?: string; - /** Format: date-time */ - createdAt: string; - displayName?: string; - harness?: string; - id: string; - isTerminated: boolean; - issueId?: string; - kind: string; - /** Format: int64 */ - previewRevision?: number; - previewUrl?: string; - projectId: string; - prs: components["schemas"]["SessionPRFacts"][]; - /** @enum {string} */ - status: "working" | "pr_open" | "draft" | "ci_failed" | "review_pending" | "changes_requested" | "approved" | "mergeable" | "merged" | "needs_input" | "idle" | "terminated" | "no_signal"; - terminalHandleId?: string; - /** Format: date-time */ - updatedAt: string; - }; - DegradedProject: { - id: string; - kind: string; - name: string; - path: string; - resolveError: string; - }; - DomainActivity: { - /** Format: date-time */ - lastActivityAt: string; - state: string; - }; - DomainReviewerConfig: { - harness: string; - }; - KillSessionResponse: { - freed?: boolean; - ok: boolean; - sessionId: string; - }; - ListNotificationsResponse: { - notifications: components["schemas"]["NotificationResponse"][]; - }; - ListProjectsResponse: { - projects: components["schemas"]["ProjectSummary"][]; - }; - ListReviewsResponse: { - reviewerHandleId: string; - reviews: components["schemas"]["ReviewRun"][]; - }; - ListSessionPRsResponse: { - prs: components["schemas"]["SessionPRSummary"][]; - sessionId: string; - }; - ListSessionsResponse: { - sessions: components["schemas"]["ControllersSessionView"][]; - }; - MarkAllNotificationsReadResponse: { - notifications: components["schemas"]["NotificationResponse"][]; - }; - MarkNotificationReadRequest: { - /** - * @description V1 supports only marking an unread notification read. - * @enum {string} - */ - status: "read"; - }; - MergePRResponse: { - method: string; - ok: boolean; - prNumber: number; - }; - NotificationEnvelope: { - notification: components["schemas"]["NotificationResponse"]; - }; - NotificationResponse: { - body: string; - /** Format: date-time */ - createdAt: string; - id: string; - prUrl: string; - projectId: string; - sessionId: string; - /** @enum {string} */ - status: "unread" | "read"; - target: components["schemas"]["NotificationTarget"]; - title: string; - /** @enum {string} */ - type: "needs_input" | "ready_to_merge" | "pr_merged" | "pr_closed_unmerged"; - }; - NotificationTarget: { - /** @enum {string} */ - kind: "session" | "pr"; - prUrl?: string; - sessionId: string; - }; - OrchestratorResponse: { - id: string; - projectId: string; - projectName?: string; - }; - Project: { - agent?: string; - config?: components["schemas"]["ProjectConfig"]; - defaultBranch: string; - id: string; - kind: string; - name: string; - path: string; - repo: string; - workspaceRepos?: components["schemas"]["WorkspaceRepo"][]; - }; - ProjectConfig: { - agentConfig?: components["schemas"]["AgentConfig"]; - defaultBranch?: string; - env?: { - [key: string]: string; - }; - orchestrator?: components["schemas"]["RoleOverride"]; - postCreate?: string[]; - reviewers?: components["schemas"]["DomainReviewerConfig"][]; - sessionPrefix?: string; - symlinks?: string[]; - worker?: components["schemas"]["RoleOverride"]; - }; - ProjectGetResponse: { - project: components["schemas"]["ProjectOrDegraded"]; - /** @enum {string} */ - status: "ok" | "degraded"; - }; - ProjectOrDegraded: components["schemas"]["Project"] | components["schemas"]["DegradedProject"]; - ProjectResponse: { - project: components["schemas"]["Project"]; - }; - ProjectSummary: { - id: string; - kind: string; - name: string; - path: string; - resolveError?: string; - sessionPrefix: string; - }; - RemoveProjectResult: { - projectId: string; - removedStorageDir: boolean; - }; - RenameSessionRequest: { - displayName: string; - }; - RenameSessionResponse: { - displayName: string; - ok: boolean; - sessionId: string; - }; - ResolveCommentsResponse: { - ok: boolean; - resolved: number; - }; - RestoreSessionResponse: { - ok: boolean; - session: components["schemas"]["ControllersSessionView"]; - sessionId: string; - }; - ReviewRun: { - body: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - deliveredAt?: null | string; - githubReviewId: string; - harness: string; - id: string; - prUrl: string; - reviewId: string; - sessionId: string; - status: string; - targetSha: string; - verdict: string; - }; - ReviewRunResponse: { - review: components["schemas"]["ReviewRun"]; - reviewerHandleId: string; - }; - RoleOverride: { - agent?: string; - agentConfig?: components["schemas"]["AgentConfig"]; - }; - RollbackSessionResponse: { - deleted?: boolean; - killed?: boolean; - ok: boolean; - sessionId: string; - }; - SendSessionMessageRequest: { - message: string; - }; - SendSessionMessageResponse: { - message: string; - ok: boolean; - sessionId: string; - }; - SessionPRCISummary: { - failingChecks: components["schemas"]["SessionPRFailingCheck"][]; - /** @enum {string} */ - state: "unknown" | "pending" | "passing" | "failing"; - }; - SessionPRConflictFile: { - path: string; - url?: string; - }; - SessionPRFacts: { - /** @enum {string} */ - ci: "unknown" | "pending" | "passing" | "failing"; - /** @enum {string} */ - mergeability: "unknown" | "mergeable" | "conflicting" | "blocked" | "unstable"; - number: number; - /** @enum {string} */ - review: "none" | "approved" | "changes_requested" | "review_required"; - reviewComments: boolean; - /** @enum {string} */ - state: "draft" | "open" | "merged" | "closed"; - /** Format: date-time */ - updatedAt: string; - url: string; - }; - SessionPRFailingCheck: { - conclusion: string; - name: string; - /** @enum {string} */ - status: "failed" | "cancelled"; - url?: string; - }; - SessionPRMergeabilitySummary: { - conflictFiles?: components["schemas"]["SessionPRConflictFile"][]; - prUrl: string; - reasons: string[]; - /** @enum {string} */ - state: "unknown" | "mergeable" | "conflicting" | "blocked" | "unstable"; - }; - SessionPRReviewCommentLink: { - file?: string; - line?: number; - url?: string; - }; - SessionPRReviewSummary: { - /** @enum {string} */ - decision: "none" | "approved" | "changes_requested" | "review_required"; - hasUnresolvedHumanComments: boolean; - unresolvedBy: components["schemas"]["SessionPRUnresolvedReviewer"][]; - }; - SessionPRSummary: { - additions: number; - author: string; - changedFiles: number; - ci: components["schemas"]["SessionPRCISummary"]; - /** Format: date-time */ - ciObservedAt?: string; - deletions: number; - headSha: string; - htmlUrl?: string; - mergeability: components["schemas"]["SessionPRMergeabilitySummary"]; - number: number; - /** Format: date-time */ - observedAt?: string; - /** @enum {string} */ - provider: "github"; - repo: string; - review: components["schemas"]["SessionPRReviewSummary"]; - /** Format: date-time */ - reviewObservedAt?: string; - sourceBranch: string; - /** @enum {string} */ - state: "draft" | "open" | "merged" | "closed"; - targetBranch: string; - title: string; - /** Format: date-time */ - updatedAt: string; - url: string; - }; - SessionPRUnresolvedReviewer: { - count: number; - links: components["schemas"]["SessionPRReviewCommentLink"][]; - reviewerId: string; - }; - SessionPreviewResponse: { - entry?: string; - previewUrl?: string; - sessionId: string; - }; - SessionResponse: { - session: components["schemas"]["ControllersSessionView"]; - }; - SetActivityRequest: { - /** - * @description Agent activity state reported by an agent hook. - * @enum {string} - */ - state: "active" | "idle" | "waiting_input" | "exited"; - }; - SetActivityResponse: { - ok: boolean; - sessionId: string; - state: string; - }; - SetProjectConfigInput: { - config: components["schemas"]["ProjectConfig"]; - }; - SetSessionPreviewRequest: { - /** @description Preview target URL. When empty, the daemon autodetects a static entry point in the session workspace. */ - url?: string; - }; - SpawnOrchestratorRequest: { - clean?: boolean; - projectId: string; - }; - SpawnOrchestratorResponse: { - orchestrator: components["schemas"]["OrchestratorResponse"]; - }; - SpawnSessionRequest: { - branch?: string; - /** @enum {string} */ - harness?: "claude-code" | "codex" | "aider" | "opencode" | "grok" | "droid" | "amp" | "agy" | "crush" | "cursor" | "qwen" | "copilot" | "goose" | "auggie" | "continue" | "devin" | "cline" | "kimi" | "kiro" | "kilocode" | "vibe" | "pi" | "autohand"; - issueId?: string; - /** @enum {string} */ - kind?: "worker" | "orchestrator"; - projectId: string; - prompt?: string; - }; - SubmitReviewInput: { - /** @description Review body recorded by AO. Required for changes_requested. */ - body: string; - /** @description Id of the GitHub PR review the reviewer posted, if any. */ - githubReviewId: string; - /** @description Review run id being completed. */ - runId: string; - /** @description Review verdict: approved or changes_requested. */ - verdict: string; - }; - WorkspaceRepo: { - name: string; - relativePath: string; - repo: string; - }; - }; - responses: never; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; + schemas: { + APIError: { + code: string; + details?: { + [key: string]: unknown; + }; + error: string; + message: string; + requestId?: string; + }; + AddProjectInput: { + asWorkspace?: boolean; + config?: components["schemas"]["ProjectConfig"]; + name?: null | string; + path: string; + projectId?: null | string; + }; + AgentConfig: { + model?: string; + permissions?: string; + }; + ClaimPRRequest: { + allowTakeover?: null | boolean; + pr: string; + }; + ClaimPRResponse: { + branchChanged: boolean; + ok: boolean; + prs: components["schemas"]["SessionPRFacts"][]; + sessionId: string; + takenOverFrom: string[]; + }; + CleanupSessionsResponse: { + cleaned: string[]; + ok: boolean; + skipped: components["schemas"]["CleanupSkippedSession"][]; + }; + CleanupSkippedSession: { + reason: string; + sessionId: string; + }; + ControllersSessionView: { + activity: components["schemas"]["DomainActivity"]; + branch?: string; + /** Format: date-time */ + createdAt: string; + displayName?: string; + harness?: string; + id: string; + isTerminated: boolean; + issueId?: string; + kind: string; + /** Format: int64 */ + previewRevision?: number; + previewUrl?: string; + projectId: string; + prs: components["schemas"]["SessionPRFacts"][]; + /** @enum {string} */ + status: + | "working" + | "pr_open" + | "draft" + | "ci_failed" + | "review_pending" + | "changes_requested" + | "approved" + | "mergeable" + | "merged" + | "needs_input" + | "idle" + | "terminated" + | "no_signal"; + terminalHandleId?: string; + /** Format: date-time */ + updatedAt: string; + }; + DegradedProject: { + id: string; + kind: string; + name: string; + path: string; + resolveError: string; + }; + DomainActivity: { + /** Format: date-time */ + lastActivityAt: string; + state: string; + }; + DomainReviewerConfig: { + harness: string; + }; + KillSessionResponse: { + freed?: boolean; + ok: boolean; + sessionId: string; + }; + ListNotificationsResponse: { + notifications: components["schemas"]["NotificationResponse"][]; + }; + ListProjectsResponse: { + projects: components["schemas"]["ProjectSummary"][]; + }; + ListReviewsResponse: { + reviewerHandleId: string; + reviews: components["schemas"]["ReviewRun"][]; + }; + ListSessionPRsResponse: { + prs: components["schemas"]["SessionPRSummary"][]; + sessionId: string; + }; + ListSessionsResponse: { + sessions: components["schemas"]["ControllersSessionView"][]; + }; + MarkAllNotificationsReadResponse: { + notifications: components["schemas"]["NotificationResponse"][]; + }; + MarkNotificationReadRequest: { + /** + * @description V1 supports only marking an unread notification read. + * @enum {string} + */ + status: "read"; + }; + MergePRResponse: { + method: string; + ok: boolean; + prNumber: number; + }; + NotificationEnvelope: { + notification: components["schemas"]["NotificationResponse"]; + }; + NotificationResponse: { + body: string; + /** Format: date-time */ + createdAt: string; + id: string; + prUrl: string; + projectId: string; + sessionId: string; + /** @enum {string} */ + status: "unread" | "read"; + target: components["schemas"]["NotificationTarget"]; + title: string; + /** @enum {string} */ + type: "needs_input" | "ready_to_merge" | "pr_merged" | "pr_closed_unmerged"; + }; + NotificationTarget: { + /** @enum {string} */ + kind: "session" | "pr"; + prUrl?: string; + sessionId: string; + }; + OrchestratorResponse: { + id: string; + projectId: string; + projectName?: string; + }; + Project: { + agent?: string; + config?: components["schemas"]["ProjectConfig"]; + defaultBranch: string; + id: string; + kind: string; + name: string; + path: string; + repo: string; + workspaceRepos?: components["schemas"]["WorkspaceRepo"][]; + }; + ProjectConfig: { + agentConfig?: components["schemas"]["AgentConfig"]; + defaultBranch?: string; + env?: { + [key: string]: string; + }; + orchestrator?: components["schemas"]["RoleOverride"]; + postCreate?: string[]; + reviewers?: components["schemas"]["DomainReviewerConfig"][]; + sessionPrefix?: string; + symlinks?: string[]; + worker?: components["schemas"]["RoleOverride"]; + }; + ProjectGetResponse: { + project: components["schemas"]["ProjectOrDegraded"]; + /** @enum {string} */ + status: "ok" | "degraded"; + }; + ProjectOrDegraded: components["schemas"]["Project"] | components["schemas"]["DegradedProject"]; + ProjectResponse: { + project: components["schemas"]["Project"]; + }; + ProjectSummary: { + id: string; + kind: string; + name: string; + path: string; + resolveError?: string; + sessionPrefix: string; + }; + RemoveProjectResult: { + projectId: string; + removedStorageDir: boolean; + }; + RenameSessionRequest: { + displayName: string; + }; + RenameSessionResponse: { + displayName: string; + ok: boolean; + sessionId: string; + }; + ResolveCommentsResponse: { + ok: boolean; + resolved: number; + }; + RestoreSessionResponse: { + ok: boolean; + session: components["schemas"]["ControllersSessionView"]; + sessionId: string; + }; + ReviewRun: { + body: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + deliveredAt?: null | string; + githubReviewId: string; + harness: string; + id: string; + prUrl: string; + reviewId: string; + sessionId: string; + status: string; + targetSha: string; + verdict: string; + }; + ReviewRunResponse: { + review: components["schemas"]["ReviewRun"]; + reviewerHandleId: string; + }; + RoleOverride: { + agent?: string; + agentConfig?: components["schemas"]["AgentConfig"]; + }; + RollbackSessionResponse: { + deleted?: boolean; + killed?: boolean; + ok: boolean; + sessionId: string; + }; + SendSessionMessageRequest: { + message: string; + }; + SendSessionMessageResponse: { + message: string; + ok: boolean; + sessionId: string; + }; + SessionPRCISummary: { + failingChecks: components["schemas"]["SessionPRFailingCheck"][]; + /** @enum {string} */ + state: "unknown" | "pending" | "passing" | "failing"; + }; + SessionPRConflictFile: { + path: string; + url?: string; + }; + SessionPRFacts: { + /** @enum {string} */ + ci: "unknown" | "pending" | "passing" | "failing"; + /** @enum {string} */ + mergeability: "unknown" | "mergeable" | "conflicting" | "blocked" | "unstable"; + number: number; + /** @enum {string} */ + review: "none" | "approved" | "changes_requested" | "review_required"; + reviewComments: boolean; + /** @enum {string} */ + state: "draft" | "open" | "merged" | "closed"; + /** Format: date-time */ + updatedAt: string; + url: string; + }; + SessionPRFailingCheck: { + conclusion: string; + name: string; + /** @enum {string} */ + status: "failed" | "cancelled"; + url?: string; + }; + SessionPRMergeabilitySummary: { + conflictFiles?: components["schemas"]["SessionPRConflictFile"][]; + prUrl: string; + reasons: string[]; + /** @enum {string} */ + state: "unknown" | "mergeable" | "conflicting" | "blocked" | "unstable"; + }; + SessionPRReviewCommentLink: { + file?: string; + line?: number; + url?: string; + }; + SessionPRReviewSummary: { + /** @enum {string} */ + decision: "none" | "approved" | "changes_requested" | "review_required"; + hasUnresolvedHumanComments: boolean; + unresolvedBy: components["schemas"]["SessionPRUnresolvedReviewer"][]; + }; + SessionPRSummary: { + additions: number; + author: string; + changedFiles: number; + ci: components["schemas"]["SessionPRCISummary"]; + /** Format: date-time */ + ciObservedAt?: string; + deletions: number; + headSha: string; + htmlUrl?: string; + mergeability: components["schemas"]["SessionPRMergeabilitySummary"]; + number: number; + /** Format: date-time */ + observedAt?: string; + /** @enum {string} */ + provider: "github"; + repo: string; + review: components["schemas"]["SessionPRReviewSummary"]; + /** Format: date-time */ + reviewObservedAt?: string; + sourceBranch: string; + /** @enum {string} */ + state: "draft" | "open" | "merged" | "closed"; + targetBranch: string; + title: string; + /** Format: date-time */ + updatedAt: string; + url: string; + }; + SessionPRUnresolvedReviewer: { + count: number; + links: components["schemas"]["SessionPRReviewCommentLink"][]; + reviewerId: string; + }; + SessionPreviewResponse: { + entry?: string; + previewUrl?: string; + sessionId: string; + }; + SessionResponse: { + session: components["schemas"]["ControllersSessionView"]; + }; + SetActivityRequest: { + /** + * @description Agent activity state reported by an agent hook. + * @enum {string} + */ + state: "active" | "idle" | "waiting_input" | "exited"; + }; + SetActivityResponse: { + ok: boolean; + sessionId: string; + state: string; + }; + SetProjectConfigInput: { + config: components["schemas"]["ProjectConfig"]; + }; + SetSessionPreviewRequest: { + /** @description Preview target URL. When empty, the daemon autodetects a static entry point in the session workspace. */ + url?: string; + }; + SpawnOrchestratorRequest: { + clean?: boolean; + projectId: string; + }; + SpawnOrchestratorResponse: { + orchestrator: components["schemas"]["OrchestratorResponse"]; + }; + SpawnSessionRequest: { + branch?: string; + /** @enum {string} */ + harness?: + | "claude-code" + | "codex" + | "aider" + | "opencode" + | "grok" + | "droid" + | "amp" + | "agy" + | "crush" + | "cursor" + | "qwen" + | "copilot" + | "goose" + | "auggie" + | "continue" + | "devin" + | "cline" + | "kimi" + | "kiro" + | "kilocode" + | "vibe" + | "pi" + | "autohand"; + issueId?: string; + /** @enum {string} */ + kind?: "worker" | "orchestrator"; + projectId: string; + prompt?: string; + }; + SubmitReviewInput: { + /** @description Review body recorded by AO. Required for changes_requested. */ + body: string; + /** @description Id of the GitHub PR review the reviewer posted, if any. */ + githubReviewId: string; + /** @description Review run id being completed. */ + runId: string; + /** @description Review verdict: approved or changes_requested. */ + verdict: string; + }; + WorkspaceRepo: { + name: string; + relativePath: string; + repo: string; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; } export type $defs = Record; export interface operations { - streamEvents: { - parameters: { - query?: { - /** @description Replay events with seq greater than this cursor. When omitted, clients may send Last-Event-ID instead. */ - after?: null | number; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/event-stream": string; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - listNotifications: { - parameters: { - query?: { - /** @description Notification status filter. V1 supports only unread. */ - status?: "unread"; - /** @description Maximum notifications to return. Defaults to 50; capped at 100. */ - limit?: number; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ListNotificationsResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - markNotificationRead: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Notification identifier. */ - id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["MarkNotificationReadRequest"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["NotificationEnvelope"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - markAllNotificationsRead: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["MarkAllNotificationsReadResponse"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - streamNotifications: { - parameters: { - query?: { - /** @description Optional project id filter for live notifications. */ - projectId?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/event-stream": string; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - listOrchestrators: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ListSessionsResponse"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - spawnOrchestrator: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["SpawnOrchestratorRequest"]; - }; - }; - responses: { - /** @description Created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SpawnOrchestratorResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - getOrchestrator: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Orchestrator session identifier, e.g. project-orchestrator. */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SessionResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - listProjects: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ListProjectsResponse"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - addProject: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["AddProjectInput"]; - }; - }; - responses: { - /** @description Created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ProjectResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Conflict */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - getProject: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Project identifier (registry key). */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ProjectGetResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - removeProject: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Project identifier (registry key). */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["RemoveProjectResult"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - setProjectConfig: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Project identifier (registry key). */ - id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["SetProjectConfigInput"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ProjectResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - mergePR: { - parameters: { - query?: never; - header?: never; - path: { - /** @description PR number. */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["MergePRResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Conflict */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Unprocessable Entity */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - resolveComments: { - parameters: { - query?: never; - header?: never; - path: { - /** @description PR number. */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ResolveCommentsResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Unprocessable Entity */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - listSessions: { - parameters: { - query?: { - /** @description Project id filter. */ - project?: string; - /** @description When true, return non-terminated sessions; when false, return terminated sessions. */ - active?: null | boolean; - /** @description When true, return only orchestrator sessions. */ - orchestratorOnly?: null | boolean; - /** @description When true, return only fresh non-terminated sessions. */ - fresh?: null | boolean; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ListSessionsResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - spawnSession: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["SpawnSessionRequest"]; - }; - }; - responses: { - /** @description Created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SessionResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - getSession: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SessionResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - renameSession: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["RenameSessionRequest"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["RenameSessionResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - setSessionActivity: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["SetActivityRequest"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SetActivityResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - killSession: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["KillSessionResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Conflict */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - listSessionPRs: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ListSessionPRsResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - claimSessionPR: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["ClaimPRRequest"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ClaimPRResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Conflict */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Unprocessable Entity */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Service Unavailable */ - 503: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - getSessionPreview: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SessionPreviewResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - setSessionPreview: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["SetSessionPreviewRequest"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SessionResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - clearSessionPreview: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SessionResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - getSessionPreviewFile: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/html": string; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - restoreSession: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["RestoreSessionResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Conflict */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - listReviews: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ListReviewsResponse"]; - }; - }; - /** @description Unprocessable Entity */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - submitReview: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["SubmitReviewInput"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ReviewRunResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Unprocessable Entity */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - triggerReview: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ReviewRunResponse"]; - }; - }; - /** @description Created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ReviewRunResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Unprocessable Entity */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - rollbackSession: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["RollbackSessionResponse"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Conflict */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - sendSessionMessage: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Session identifier, e.g. project-1. */ - sessionId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["SendSessionMessageRequest"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SendSessionMessageResponse"]; - }; - }; - /** @description Bad Request */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; - cleanupSessions: { - parameters: { - query?: { - /** @description Project id filter. When omitted, clean terminated sessions across all projects. */ - project?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["CleanupSessionsResponse"]; - }; - }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - /** @description Not Implemented */ - 501: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["APIError"]; - }; - }; - }; - }; + streamEvents: { + parameters: { + query?: { + /** @description Replay events with seq greater than this cursor. When omitted, clients may send Last-Event-ID instead. */ + after?: null | number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "text/event-stream": string; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + listNotifications: { + parameters: { + query?: { + /** @description Notification status filter. V1 supports only unread. */ + status?: "unread"; + /** @description Maximum notifications to return. Defaults to 50; capped at 100. */ + limit?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ListNotificationsResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + markNotificationRead: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Notification identifier. */ + id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MarkNotificationReadRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["NotificationEnvelope"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + markAllNotificationsRead: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["MarkAllNotificationsReadResponse"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + streamNotifications: { + parameters: { + query?: { + /** @description Optional project id filter for live notifications. */ + projectId?: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "text/event-stream": string; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + listOrchestrators: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ListSessionsResponse"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + spawnOrchestrator: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SpawnOrchestratorRequest"]; + }; + }; + responses: { + /** @description Created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SpawnOrchestratorResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + getOrchestrator: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Orchestrator session identifier, e.g. project-orchestrator. */ + id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SessionResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + listProjects: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ListProjectsResponse"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + addProject: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["AddProjectInput"]; + }; + }; + responses: { + /** @description Created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ProjectResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Conflict */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + getProject: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Project identifier (registry key). */ + id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ProjectGetResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + removeProject: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Project identifier (registry key). */ + id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["RemoveProjectResult"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + setProjectConfig: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Project identifier (registry key). */ + id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SetProjectConfigInput"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ProjectResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + mergePR: { + parameters: { + query?: never; + header?: never; + path: { + /** @description PR number. */ + id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["MergePRResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Conflict */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Unprocessable Entity */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + resolveComments: { + parameters: { + query?: never; + header?: never; + path: { + /** @description PR number. */ + id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ResolveCommentsResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Unprocessable Entity */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + listSessions: { + parameters: { + query?: { + /** @description Project id filter. */ + project?: string; + /** @description When true, return non-terminated sessions; when false, return terminated sessions. */ + active?: null | boolean; + /** @description When true, return only orchestrator sessions. */ + orchestratorOnly?: null | boolean; + /** @description When true, return only fresh non-terminated sessions. */ + fresh?: null | boolean; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ListSessionsResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + spawnSession: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SpawnSessionRequest"]; + }; + }; + responses: { + /** @description Created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SessionResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + getSession: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SessionResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + renameSession: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["RenameSessionRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["RenameSessionResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + setSessionActivity: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SetActivityRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SetActivityResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + killSession: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["KillSessionResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Conflict */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + listSessionPRs: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ListSessionPRsResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + claimSessionPR: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["ClaimPRRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ClaimPRResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Conflict */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Unprocessable Entity */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Service Unavailable */ + 503: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + getSessionPreview: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SessionPreviewResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + setSessionPreview: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SetSessionPreviewRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SessionResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + clearSessionPreview: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SessionResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + getSessionPreviewFile: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "text/html": string; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + restoreSession: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["RestoreSessionResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Conflict */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + listReviews: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ListReviewsResponse"]; + }; + }; + /** @description Unprocessable Entity */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + submitReview: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SubmitReviewInput"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ReviewRunResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Unprocessable Entity */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + triggerReview: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ReviewRunResponse"]; + }; + }; + /** @description Created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ReviewRunResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Unprocessable Entity */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + rollbackSession: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["RollbackSessionResponse"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Conflict */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + sendSessionMessage: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Session identifier, e.g. project-1. */ + sessionId: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SendSessionMessageRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SendSessionMessageResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; + cleanupSessions: { + parameters: { + query?: { + /** @description Project id filter. When omitted, clean terminated sessions across all projects. */ + project?: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CleanupSessionsResponse"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + /** @description Not Implemented */ + 501: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["APIError"]; + }; + }; + }; + }; } diff --git a/packages/desktop/src/renderer/routeTree.gen.ts b/packages/desktop/src/renderer/routeTree.gen.ts index 6a13a2dee..ffe4cdc41 100644 --- a/packages/desktop/src/renderer/routeTree.gen.ts +++ b/packages/desktop/src/renderer/routeTree.gen.ts @@ -8,188 +8,183 @@ // You should NOT make any changes in this file as it will be overwritten. // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. -import { Route as rootRouteImport } from './routes/__root' -import { Route as ShellRouteImport } from './routes/_shell' -import { Route as ShellIndexRouteImport } from './routes/_shell.index' -import { Route as ShellPrsRouteImport } from './routes/_shell.prs' -import { Route as ShellSessionsSessionIdRouteImport } from './routes/_shell.sessions.$sessionId' -import { Route as ShellProjectsProjectIdRouteImport } from './routes/_shell.projects.$projectId' -import { Route as ShellProjectsProjectIdSettingsRouteImport } from './routes/_shell.projects.$projectId_.settings' -import { Route as ShellProjectsProjectIdSessionsSessionIdRouteImport } from './routes/_shell.projects.$projectId_.sessions.$sessionId' +import { Route as rootRouteImport } from "./routes/__root"; +import { Route as ShellRouteImport } from "./routes/_shell"; +import { Route as ShellIndexRouteImport } from "./routes/_shell.index"; +import { Route as ShellPrsRouteImport } from "./routes/_shell.prs"; +import { Route as ShellSessionsSessionIdRouteImport } from "./routes/_shell.sessions.$sessionId"; +import { Route as ShellProjectsProjectIdRouteImport } from "./routes/_shell.projects.$projectId"; +import { Route as ShellProjectsProjectIdSettingsRouteImport } from "./routes/_shell.projects.$projectId_.settings"; +import { Route as ShellProjectsProjectIdSessionsSessionIdRouteImport } from "./routes/_shell.projects.$projectId_.sessions.$sessionId"; const ShellRoute = ShellRouteImport.update({ - id: '/_shell', - getParentRoute: () => rootRouteImport, -} as any) + id: "/_shell", + getParentRoute: () => rootRouteImport, +} as any); const ShellIndexRoute = ShellIndexRouteImport.update({ - id: '/', - path: '/', - getParentRoute: () => ShellRoute, -} as any) + id: "/", + path: "/", + getParentRoute: () => ShellRoute, +} as any); const ShellPrsRoute = ShellPrsRouteImport.update({ - id: '/prs', - path: '/prs', - getParentRoute: () => ShellRoute, -} as any) + id: "/prs", + path: "/prs", + getParentRoute: () => ShellRoute, +} as any); const ShellSessionsSessionIdRoute = ShellSessionsSessionIdRouteImport.update({ - id: '/sessions/$sessionId', - path: '/sessions/$sessionId', - getParentRoute: () => ShellRoute, -} as any) + id: "/sessions/$sessionId", + path: "/sessions/$sessionId", + getParentRoute: () => ShellRoute, +} as any); const ShellProjectsProjectIdRoute = ShellProjectsProjectIdRouteImport.update({ - id: '/projects/$projectId', - path: '/projects/$projectId', - getParentRoute: () => ShellRoute, -} as any) -const ShellProjectsProjectIdSettingsRoute = - ShellProjectsProjectIdSettingsRouteImport.update({ - id: '/projects/$projectId_/settings', - path: '/projects/$projectId/settings', - getParentRoute: () => ShellRoute, - } as any) -const ShellProjectsProjectIdSessionsSessionIdRoute = - ShellProjectsProjectIdSessionsSessionIdRouteImport.update({ - id: '/projects/$projectId_/sessions/$sessionId', - path: '/projects/$projectId/sessions/$sessionId', - getParentRoute: () => ShellRoute, - } as any) + id: "/projects/$projectId", + path: "/projects/$projectId", + getParentRoute: () => ShellRoute, +} as any); +const ShellProjectsProjectIdSettingsRoute = ShellProjectsProjectIdSettingsRouteImport.update({ + id: "/projects/$projectId_/settings", + path: "/projects/$projectId/settings", + getParentRoute: () => ShellRoute, +} as any); +const ShellProjectsProjectIdSessionsSessionIdRoute = ShellProjectsProjectIdSessionsSessionIdRouteImport.update({ + id: "/projects/$projectId_/sessions/$sessionId", + path: "/projects/$projectId/sessions/$sessionId", + getParentRoute: () => ShellRoute, +} as any); export interface FileRoutesByFullPath { - '/': typeof ShellIndexRoute - '/prs': typeof ShellPrsRoute - '/projects/$projectId': typeof ShellProjectsProjectIdRoute - '/sessions/$sessionId': typeof ShellSessionsSessionIdRoute - '/projects/$projectId/settings': typeof ShellProjectsProjectIdSettingsRoute - '/projects/$projectId/sessions/$sessionId': typeof ShellProjectsProjectIdSessionsSessionIdRoute + "/": typeof ShellIndexRoute; + "/prs": typeof ShellPrsRoute; + "/projects/$projectId": typeof ShellProjectsProjectIdRoute; + "/sessions/$sessionId": typeof ShellSessionsSessionIdRoute; + "/projects/$projectId/settings": typeof ShellProjectsProjectIdSettingsRoute; + "/projects/$projectId/sessions/$sessionId": typeof ShellProjectsProjectIdSessionsSessionIdRoute; } export interface FileRoutesByTo { - '/prs': typeof ShellPrsRoute - '/': typeof ShellIndexRoute - '/projects/$projectId': typeof ShellProjectsProjectIdRoute - '/sessions/$sessionId': typeof ShellSessionsSessionIdRoute - '/projects/$projectId/settings': typeof ShellProjectsProjectIdSettingsRoute - '/projects/$projectId/sessions/$sessionId': typeof ShellProjectsProjectIdSessionsSessionIdRoute + "/prs": typeof ShellPrsRoute; + "/": typeof ShellIndexRoute; + "/projects/$projectId": typeof ShellProjectsProjectIdRoute; + "/sessions/$sessionId": typeof ShellSessionsSessionIdRoute; + "/projects/$projectId/settings": typeof ShellProjectsProjectIdSettingsRoute; + "/projects/$projectId/sessions/$sessionId": typeof ShellProjectsProjectIdSessionsSessionIdRoute; } export interface FileRoutesById { - __root__: typeof rootRouteImport - '/_shell': typeof ShellRouteWithChildren - '/_shell/prs': typeof ShellPrsRoute - '/_shell/': typeof ShellIndexRoute - '/_shell/projects/$projectId': typeof ShellProjectsProjectIdRoute - '/_shell/sessions/$sessionId': typeof ShellSessionsSessionIdRoute - '/_shell/projects/$projectId_/settings': typeof ShellProjectsProjectIdSettingsRoute - '/_shell/projects/$projectId_/sessions/$sessionId': typeof ShellProjectsProjectIdSessionsSessionIdRoute + __root__: typeof rootRouteImport; + "/_shell": typeof ShellRouteWithChildren; + "/_shell/prs": typeof ShellPrsRoute; + "/_shell/": typeof ShellIndexRoute; + "/_shell/projects/$projectId": typeof ShellProjectsProjectIdRoute; + "/_shell/sessions/$sessionId": typeof ShellSessionsSessionIdRoute; + "/_shell/projects/$projectId_/settings": typeof ShellProjectsProjectIdSettingsRoute; + "/_shell/projects/$projectId_/sessions/$sessionId": typeof ShellProjectsProjectIdSessionsSessionIdRoute; } export interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: - | '/' - | '/prs' - | '/projects/$projectId' - | '/sessions/$sessionId' - | '/projects/$projectId/settings' - | '/projects/$projectId/sessions/$sessionId' - fileRoutesByTo: FileRoutesByTo - to: - | '/prs' - | '/' - | '/projects/$projectId' - | '/sessions/$sessionId' - | '/projects/$projectId/settings' - | '/projects/$projectId/sessions/$sessionId' - id: - | '__root__' - | '/_shell' - | '/_shell/prs' - | '/_shell/' - | '/_shell/projects/$projectId' - | '/_shell/sessions/$sessionId' - | '/_shell/projects/$projectId_/settings' - | '/_shell/projects/$projectId_/sessions/$sessionId' - fileRoutesById: FileRoutesById + fileRoutesByFullPath: FileRoutesByFullPath; + fullPaths: + | "/" + | "/prs" + | "/projects/$projectId" + | "/sessions/$sessionId" + | "/projects/$projectId/settings" + | "/projects/$projectId/sessions/$sessionId"; + fileRoutesByTo: FileRoutesByTo; + to: + | "/prs" + | "/" + | "/projects/$projectId" + | "/sessions/$sessionId" + | "/projects/$projectId/settings" + | "/projects/$projectId/sessions/$sessionId"; + id: + | "__root__" + | "/_shell" + | "/_shell/prs" + | "/_shell/" + | "/_shell/projects/$projectId" + | "/_shell/sessions/$sessionId" + | "/_shell/projects/$projectId_/settings" + | "/_shell/projects/$projectId_/sessions/$sessionId"; + fileRoutesById: FileRoutesById; } export interface RootRouteChildren { - ShellRoute: typeof ShellRouteWithChildren + ShellRoute: typeof ShellRouteWithChildren; } -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/_shell': { - id: '/_shell' - path: '' - fullPath: '/' - preLoaderRoute: typeof ShellRouteImport - parentRoute: typeof rootRouteImport - } - '/_shell/': { - id: '/_shell/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof ShellIndexRouteImport - parentRoute: typeof ShellRoute - } - '/_shell/prs': { - id: '/_shell/prs' - path: '/prs' - fullPath: '/prs' - preLoaderRoute: typeof ShellPrsRouteImport - parentRoute: typeof ShellRoute - } - '/_shell/sessions/$sessionId': { - id: '/_shell/sessions/$sessionId' - path: '/sessions/$sessionId' - fullPath: '/sessions/$sessionId' - preLoaderRoute: typeof ShellSessionsSessionIdRouteImport - parentRoute: typeof ShellRoute - } - '/_shell/projects/$projectId': { - id: '/_shell/projects/$projectId' - path: '/projects/$projectId' - fullPath: '/projects/$projectId' - preLoaderRoute: typeof ShellProjectsProjectIdRouteImport - parentRoute: typeof ShellRoute - } - '/_shell/projects/$projectId_/settings': { - id: '/_shell/projects/$projectId_/settings' - path: '/projects/$projectId/settings' - fullPath: '/projects/$projectId/settings' - preLoaderRoute: typeof ShellProjectsProjectIdSettingsRouteImport - parentRoute: typeof ShellRoute - } - '/_shell/projects/$projectId_/sessions/$sessionId': { - id: '/_shell/projects/$projectId_/sessions/$sessionId' - path: '/projects/$projectId/sessions/$sessionId' - fullPath: '/projects/$projectId/sessions/$sessionId' - preLoaderRoute: typeof ShellProjectsProjectIdSessionsSessionIdRouteImport - parentRoute: typeof ShellRoute - } - } +declare module "@tanstack/react-router" { + interface FileRoutesByPath { + "/_shell": { + id: "/_shell"; + path: ""; + fullPath: "/"; + preLoaderRoute: typeof ShellRouteImport; + parentRoute: typeof rootRouteImport; + }; + "/_shell/": { + id: "/_shell/"; + path: "/"; + fullPath: "/"; + preLoaderRoute: typeof ShellIndexRouteImport; + parentRoute: typeof ShellRoute; + }; + "/_shell/prs": { + id: "/_shell/prs"; + path: "/prs"; + fullPath: "/prs"; + preLoaderRoute: typeof ShellPrsRouteImport; + parentRoute: typeof ShellRoute; + }; + "/_shell/sessions/$sessionId": { + id: "/_shell/sessions/$sessionId"; + path: "/sessions/$sessionId"; + fullPath: "/sessions/$sessionId"; + preLoaderRoute: typeof ShellSessionsSessionIdRouteImport; + parentRoute: typeof ShellRoute; + }; + "/_shell/projects/$projectId": { + id: "/_shell/projects/$projectId"; + path: "/projects/$projectId"; + fullPath: "/projects/$projectId"; + preLoaderRoute: typeof ShellProjectsProjectIdRouteImport; + parentRoute: typeof ShellRoute; + }; + "/_shell/projects/$projectId_/settings": { + id: "/_shell/projects/$projectId_/settings"; + path: "/projects/$projectId/settings"; + fullPath: "/projects/$projectId/settings"; + preLoaderRoute: typeof ShellProjectsProjectIdSettingsRouteImport; + parentRoute: typeof ShellRoute; + }; + "/_shell/projects/$projectId_/sessions/$sessionId": { + id: "/_shell/projects/$projectId_/sessions/$sessionId"; + path: "/projects/$projectId/sessions/$sessionId"; + fullPath: "/projects/$projectId/sessions/$sessionId"; + preLoaderRoute: typeof ShellProjectsProjectIdSessionsSessionIdRouteImport; + parentRoute: typeof ShellRoute; + }; + } } interface ShellRouteChildren { - ShellPrsRoute: typeof ShellPrsRoute - ShellIndexRoute: typeof ShellIndexRoute - ShellProjectsProjectIdRoute: typeof ShellProjectsProjectIdRoute - ShellSessionsSessionIdRoute: typeof ShellSessionsSessionIdRoute - ShellProjectsProjectIdSettingsRoute: typeof ShellProjectsProjectIdSettingsRoute - ShellProjectsProjectIdSessionsSessionIdRoute: typeof ShellProjectsProjectIdSessionsSessionIdRoute + ShellPrsRoute: typeof ShellPrsRoute; + ShellIndexRoute: typeof ShellIndexRoute; + ShellProjectsProjectIdRoute: typeof ShellProjectsProjectIdRoute; + ShellSessionsSessionIdRoute: typeof ShellSessionsSessionIdRoute; + ShellProjectsProjectIdSettingsRoute: typeof ShellProjectsProjectIdSettingsRoute; + ShellProjectsProjectIdSessionsSessionIdRoute: typeof ShellProjectsProjectIdSessionsSessionIdRoute; } const ShellRouteChildren: ShellRouteChildren = { - ShellPrsRoute: ShellPrsRoute, - ShellIndexRoute: ShellIndexRoute, - ShellProjectsProjectIdRoute: ShellProjectsProjectIdRoute, - ShellSessionsSessionIdRoute: ShellSessionsSessionIdRoute, - ShellProjectsProjectIdSettingsRoute: ShellProjectsProjectIdSettingsRoute, - ShellProjectsProjectIdSessionsSessionIdRoute: - ShellProjectsProjectIdSessionsSessionIdRoute, -} + ShellPrsRoute: ShellPrsRoute, + ShellIndexRoute: ShellIndexRoute, + ShellProjectsProjectIdRoute: ShellProjectsProjectIdRoute, + ShellSessionsSessionIdRoute: ShellSessionsSessionIdRoute, + ShellProjectsProjectIdSettingsRoute: ShellProjectsProjectIdSettingsRoute, + ShellProjectsProjectIdSessionsSessionIdRoute: ShellProjectsProjectIdSessionsSessionIdRoute, +}; -const ShellRouteWithChildren = ShellRoute._addFileChildren(ShellRouteChildren) +const ShellRouteWithChildren = ShellRoute._addFileChildren(ShellRouteChildren); const rootRouteChildren: RootRouteChildren = { - ShellRoute: ShellRouteWithChildren, -} -export const routeTree = rootRouteImport - ._addFileChildren(rootRouteChildren) - ._addFileTypes() + ShellRoute: ShellRouteWithChildren, +}; +export const routeTree = rootRouteImport._addFileChildren(rootRouteChildren)._addFileTypes(); diff --git a/packages/shared/package.json b/packages/shared/package.json index b0f927612..c07398b72 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,27 +1,27 @@ { - "name": "@agent-orchestrator/shared", - "version": "0.0.0", - "private": true, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "scripts": { - "build": "tsc", - "typecheck": "tsc --noEmit", - "test": "jest" - }, - "dependencies": { - "@tanstack/react-query": "^5.0.0", - "@types/event-source": "^3.0.0", - "event-source": "^2.0.0", - "zustand": "^4.0.0" - }, - "devDependencies": { - "@types/jest": "^29.0.0", - "@types/react": "^18.0.0", - "jest": "^29.0.0", - "typescript": "^5.0.0" - }, - "peerDependencies": { - "react": "^18.0.0" - } + "name": "@agent-orchestrator/shared", + "version": "0.0.0", + "private": true, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "build": "tsc", + "typecheck": "tsc --noEmit", + "test": "jest" + }, + "dependencies": { + "@tanstack/react-query": "^5.0.0", + "@types/event-source": "^3.0.0", + "event-source": "^2.0.0", + "zustand": "^4.0.0" + }, + "devDependencies": { + "@types/jest": "^29.0.0", + "@types/react": "^18.0.0", + "jest": "^29.0.0", + "typescript": "^5.0.0" + }, + "peerDependencies": { + "react": "^18.0.0" + } } diff --git a/packages/shared/tsconfig.json b/packages/shared/tsconfig.json index 5944f7e71..5e21d37bb 100644 --- a/packages/shared/tsconfig.json +++ b/packages/shared/tsconfig.json @@ -1,19 +1,19 @@ { - "compilerOptions": { - "target": "ES2020", - "module": "ESNext", - "lib": ["ES2020", "DOM"], - "moduleResolution": "bundler", - "jsx": "react-jsx", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "declaration": true, - "outDir": "./dist", - "rootDir": "./src" - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "**/*.test.ts"] + "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "lib": ["ES2020", "DOM"], + "moduleResolution": "bundler", + "jsx": "react-jsx", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "declaration": true, + "outDir": "./dist", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] }