chore: format with prettier [skip ci]

This commit is contained in:
github-actions[bot] 2026-06-25 21:47:31 +00:00
parent bc7fc85f79
commit 22c72813c0
8 changed files with 2999 additions and 2939 deletions

View File

@ -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

View File

@ -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
@ -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,15 +181,15 @@ 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
@ -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.

View File

@ -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
@ -223,6 +234,7 @@ graph LR
```
**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
@ -316,6 +334,7 @@ sequenceDiagram
```
**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
@ -369,12 +389,14 @@ graph TD
```
**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
@ -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
@ -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

View File

@ -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"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -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<FileRouteTypes>()
ShellRoute: ShellRouteWithChildren,
};
export const routeTree = rootRouteImport._addFileChildren(rootRouteChildren)._addFileTypes<FileRouteTypes>();

View File

@ -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"
}
}

View File

@ -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"]
}