Merge pull request #3876 from code-yeongyu/feature/web-team-mode-and-model-updates
feat(web): refresh landing for v4.0 — Team Mode, accurate models, Lighthouse 100
This commit is contained in:
+28
-3
@@ -145,6 +145,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
| | 機能 | 何をするのか |
|
||||
| :---: | :------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 🤖 | **規律あるエージェント (Discipline Agents)** | Sisyphus が Hephaestus、Oracle、Librarian、Explore をオーケストレーションします。完全な AI 開発チームが並列で動きます。 |
|
||||
| 👥 | **Team Mode** (v4.0, オプトイン) | リードエージェント + 最大 8 メンバーの並列実行、リアルタイム tmux 可視化、専用 `team_*` ツール群。`hyperplan`(5 人の敵対的批評家)と `security-research`(3 人のハンター + 2 人の PoC エンジニア)を駆動します。[ドキュメント →](docs/guide/team-mode.md) |
|
||||
| ⚡ | **`ultrawork` / `ulw`** | 一言で OK。すべてのエージェントがアクティブになり、終わるまで止まりません。 |
|
||||
| 🚪 | **[IntentGate](https://factory.ai/news/terminal-bench)** | ユーザーの真の意図を分析してから分類・行動します。もう文字通りに誤解して的外れなことをすることはありません。 |
|
||||
| 🔗 | **ハッシュベースの編集ツール** | `LINE#ID` のコンテンツハッシュですべての変更を検証します。stale-line エラー 0%。[oh-my-pi](https://github.com/can1357/oh-my-pi) にインスパイアされています。[The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
|
||||
@@ -169,7 +170,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
|
||||
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) はあなたのメインオーケストレーターです。計画を立て、専門家に委任し、攻撃的な並列実行でタスクを完了まで推進します。途中で投げ出すことはありません。
|
||||
|
||||
**Hephaestus** (`gpt-5.4`) はあなたの自律的なディープワーカーです。レシピではなく、目標を与えてください。手取り足取り教えなくても、コードベースを探索し、パターンを調査し、エンドツーエンドで実行します。*正当なる職人 (The Legitimate Craftsman).*
|
||||
**Hephaestus** (`gpt-5.5`) はあなたの自律的なディープワーカーです。レシピではなく、目標を与えてください。手取り足取り教えなくても、コードベースを探索し、パターンを調査し、エンドツーエンドで実行します。*正当なる職人 (The Legitimate Craftsman).*
|
||||
|
||||
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) はあなたの戦略プランナーです。インタビューモードで質問を投げ、スコープを特定し、コードに一行触れる前に詳細な計画を構築します。
|
||||
|
||||
@@ -177,7 +178,31 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
|
||||
> Anthropic が [私たちのせいで OpenCode をブロックしました。](https://x.com/thdxr/status/2010149530486911014) だからこそ Hephaestus は「正当なる職人 (The Legitimate Craftsman)」と呼ばれているのです。皮肉を込めています。
|
||||
>
|
||||
> Opus で最もよく動きますが、Kimi K2.6 + GPT-5.4 の組み合わせだけでも、バニラの Claude Code を軽く凌駕します。設定は一切不要です。
|
||||
> Opus で最もよく動きますが、Kimi K2.6 + GPT-5.5 の組み合わせだけでも、バニラの Claude Code を軽く凌駕します。設定は一切不要です。
|
||||
|
||||
### Team Mode (v4.0)
|
||||
|
||||
エージェント 1 体でも速い。調和したチームは*圧倒的*です。
|
||||
|
||||
**Team Mode** は oh-my-openagent を「サブエージェント付きの一体のエージェント」から、本物のマルチエージェントシステムへと変えます。リードエージェントがカテゴリ特化のメンバーチームを統括し、全員が**並列で**動き、専用ツール(`team_create`、`team_send_message`、`team_task_create`、`team_status`、…)で通信します。tmux レイアウトの focus + grid ウィンドウで、全メンバーの作業を同時に観察できます。
|
||||
|
||||
```jsonc
|
||||
// .opencode/oh-my-openagent.jsonc
|
||||
{
|
||||
"team_mode": {
|
||||
"enabled": true,
|
||||
"max_parallel_members": 4,
|
||||
"tmux_visualization": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
opencode を再起動すると `team_*` ツールファミリーが解放されます。すでに 2 つのスキルがその上に乗っています:
|
||||
|
||||
- **`hyperplan`** — 5 人の敵対的エージェントが、一行のコードが書かれる前に直交する角度から計画を引き裂きます。
|
||||
- **`security-research`** — 3 人の脆弱性ハンター + 2 人の PoC エンジニアがコードベースを並列で監査。重大度は*実際の悪用可能性*で校正されます。
|
||||
|
||||
> **デフォルトは OFF。必要なときに ON。** [Team Mode ガイド全文 →](docs/guide/team-mode.md)
|
||||
|
||||
### エージェントのオーケストレーション
|
||||
|
||||
@@ -190,7 +215,7 @@ Sisyphus がサブエージェントにタスクを委任する際、モデル
|
||||
| `quick` | 単一ファイルの変更、タイポの修正 |
|
||||
| `ultrabrain` | ハードロジック、アーキテクチャの決定 |
|
||||
|
||||
エージェントは作業の種類を伝えるだけで、ハーネスが適切なモデルを選びます。`ultrabrain` はデフォルトで GPT-5.4 xhigh にルーティングされるようになりました。あなたが触るものは何もありません。
|
||||
エージェントは作業の種類を伝えるだけで、ハーネスが適切なモデルを選びます。`ultrabrain` はデフォルトで GPT-5.5 xhigh にルーティングされるようになりました。あなたが触るものは何もありません。
|
||||
|
||||
### Claude Code 互換性
|
||||
|
||||
|
||||
+28
-3
@@ -146,6 +146,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
| | 기능 | 하는 일 |
|
||||
| :---: | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 🤖 | **Discipline Agents** | Sisyphus가 Hephaestus, Oracle, Librarian, Explore를 지휘합니다. 병렬로 도는 풀스택 AI 개발팀. |
|
||||
| 👥 | **Team Mode** (v4.0, opt-in) | 리드 에이전트 + 최대 8명의 병렬 멤버, 실시간 tmux 시각화, 전용 `team_*` 도구. `hyperplan`(5명의 적대적 비평가)과 `security-research`(3명의 헌터 + 2명의 PoC 엔지니어)를 구동합니다. [문서 →](docs/guide/team-mode.md) |
|
||||
| ⚡ | **`ultrawork` / `ulw`** | 한 단어. 모든 에이전트가 켜집니다. 끝날 때까지 멈추지 않습니다. |
|
||||
| 🚪 | **[IntentGate](https://factory.ai/news/terminal-bench)** | 분류하거나 행동하기 전에 사용자의 진짜 의도부터 분석합니다. 문자 그대로 오해하는 일은 끝. |
|
||||
| 🔗 | **Hash-Anchored Edit Tool** | `LINE#ID` 콘텐츠 해시가 모든 변경을 검증합니다. 낡은 라인 에러 0건. [oh-my-pi](https://github.com/can1357/oh-my-pi)에서 영감. [The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
|
||||
@@ -170,7 +171,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
|
||||
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**)는 메인 오케스트레이터입니다. 계획을 세우고, 전문가에게 위임하고, 공격적인 병렬 실행으로 작업을 끝까지 밀어붙입니다. 중간에 멈추지 않습니다.
|
||||
|
||||
**Hephaestus** (`gpt-5.4`)는 자율적으로 깊게 파는 작업자입니다. 레시피가 아니라 목표를 주세요. 코드베이스를 탐색하고, 패턴을 조사하고, 손을 잡아주지 않아도 엔드투엔드로 실행합니다. *The Legitimate Craftsman.*
|
||||
**Hephaestus** (`gpt-5.5`)는 자율적으로 깊게 파는 작업자입니다. 레시피가 아니라 목표를 주세요. 코드베이스를 탐색하고, 패턴을 조사하고, 손을 잡아주지 않아도 엔드투엔드로 실행합니다. *The Legitimate Craftsman.*
|
||||
|
||||
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**)는 전략 플래너입니다. 인터뷰 모드: 질문으로 스코프를 파악하고, 코드에 손대기 전에 상세한 계획을 만듭니다.
|
||||
|
||||
@@ -178,7 +179,31 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
|
||||
> Anthropic은 [우리 때문에 OpenCode를 차단했습니다.](https://x.com/thdxr/status/2010149530486911014) 그래서 Hephaestus에게 "The Legitimate Craftsman"이라는 별명이 붙었습니다. 의도된 아이러니입니다.
|
||||
>
|
||||
> Opus에서 가장 잘 돌지만, Kimi K2.6 + GPT-5.4 조합만으로도 이미 바닐라 Claude Code를 이깁니다. 별도 설정 없이요.
|
||||
> Opus에서 가장 잘 돌지만, Kimi K2.6 + GPT-5.5 조합만으로도 이미 바닐라 Claude Code를 이깁니다. 별도 설정 없이요.
|
||||
|
||||
### Team Mode (v4.0)
|
||||
|
||||
에이전트 한 명도 빠릅니다. 조율된 팀은 *압도적*입니다.
|
||||
|
||||
**Team Mode**는 oh-my-openagent를 "서브에이전트를 가진 한 명의 에이전트"에서 진짜 멀티 에이전트 시스템으로 바꿉니다. 리드 에이전트가 카테고리별 전문화된 멤버 팀을 지휘하며, 모두 **병렬로** 동작하고 전용 도구(`team_create`, `team_send_message`, `team_task_create`, `team_status`, ...)로 통신합니다. tmux 레이아웃의 focus + grid 윈도우에서 모든 멤버의 작업을 동시에 지켜보세요.
|
||||
|
||||
```jsonc
|
||||
// .opencode/oh-my-openagent.jsonc
|
||||
{
|
||||
"team_mode": {
|
||||
"enabled": true,
|
||||
"max_parallel_members": 4,
|
||||
"tmux_visualization": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
opencode를 재시작하면 `team_*` 도구 패밀리가 활성화됩니다. 이미 두 개의 스킬이 그 위에 올라가 있습니다:
|
||||
|
||||
- **`hyperplan`** — 5명의 적대적 에이전트가 코드 한 줄 작성되기 전에 직교 각도에서 당신의 계획을 갈가리 분해합니다.
|
||||
- **`security-research`** — 3명의 취약점 헌터 + 2명의 PoC 엔지니어가 코드베이스를 병렬로 감사합니다. 심각도는 *실제 익스플로잇 가능성*으로 보정됩니다.
|
||||
|
||||
> **기본은 OFF. 원할 때 켜세요.** [Team Mode 가이드 전체 →](docs/guide/team-mode.md)
|
||||
|
||||
### Agent Orchestration
|
||||
|
||||
@@ -191,7 +216,7 @@ Sisyphus가 서브에이전트에 위임할 때는 모델을 직접 고르지
|
||||
| `quick` | 단일 파일 변경, 오타 수정 |
|
||||
| `ultrabrain` | 어려운 로직, 아키텍처 결정 |
|
||||
|
||||
에이전트는 필요한 작업 종류만 말하고, 하네스가 적합한 모델을 고릅니다. `ultrabrain`은 이제 기본으로 GPT-5.4 xhigh로 라우팅됩니다. 당신이 건드릴 건 없습니다.
|
||||
에이전트는 필요한 작업 종류만 말하고, 하네스가 적합한 모델을 고릅니다. `ultrabrain`은 이제 기본으로 GPT-5.5 xhigh로 라우팅됩니다. 당신이 건드릴 건 없습니다.
|
||||
|
||||
### Claude Code 호환성
|
||||
|
||||
|
||||
@@ -146,6 +146,7 @@ Even with only the following subscriptions, `ultrawork` works well (this project
|
||||
| | Feature | What it does |
|
||||
| :---: | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 🤖 | **Discipline Agents** | Sisyphus orchestrates Hephaestus, Oracle, Librarian, Explore. A full AI dev team in parallel. |
|
||||
| 👥 | **Team Mode** (v4.0, opt-in) | Lead agent + up to 8 parallel members, real-time tmux visualization, dedicated `team_*` tools. Powers `hyperplan` (5 hostile critics) and `security-research` (3 hunters + 2 PoC engineers). [Docs →](docs/guide/team-mode.md) |
|
||||
| ⚡ | **`ultrawork` / `ulw`** | One word. Every agent activates. Doesn't stop until done. |
|
||||
| 🚪 | **[IntentGate](https://factory.ai/news/terminal-bench)** | Analyzes true user intent before classifying or acting. No more literal misinterpretations. |
|
||||
| 🔗 | **Hash-Anchored Edit Tool** | `LINE#ID` content hash validates every change. Zero stale-line errors. Inspired by [oh-my-pi](https://github.com/can1357/oh-my-pi). [The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
|
||||
@@ -170,7 +171,7 @@ Even with only the following subscriptions, `ultrawork` works well (this project
|
||||
|
||||
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`** ) is your main orchestrator. He plans, delegates to specialists, and drives tasks to completion with aggressive parallel execution. He does not stop halfway.
|
||||
|
||||
**Hephaestus** (`gpt-5.4`) is your autonomous deep worker. Give him a goal, not a recipe. He explores the codebase, researches patterns, and executes end-to-end without hand-holding. *The Legitimate Craftsman.*
|
||||
**Hephaestus** (`gpt-5.5`) is your autonomous deep worker. Give him a goal, not a recipe. He explores the codebase, researches patterns, and executes end-to-end without hand-holding. *The Legitimate Craftsman.*
|
||||
|
||||
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`** ) is your strategic planner. Interview mode: he asks questions, identifies scope, and builds a detailed plan before a single line of code is touched.
|
||||
|
||||
@@ -178,7 +179,31 @@ Every agent is tuned to its model's specific strengths. No manual model juggling
|
||||
|
||||
> Anthropic [blocked OpenCode because of us.](https://x.com/thdxr/status/2010149530486911014) That's why Hephaestus is called "The Legitimate Craftsman." The irony is intentional.
|
||||
>
|
||||
> We run best on Opus, but Kimi K2.6 + GPT-5.4 already beats vanilla Claude Code. Zero config needed.
|
||||
> We run best on Opus, but Kimi K2.6 + GPT-5.5 already beats vanilla Claude Code. Zero config needed.
|
||||
|
||||
### Team Mode (v4.0)
|
||||
|
||||
One agent is fast. A coordinated team is *devastating*.
|
||||
|
||||
**Team Mode** turns oh-my-openagent from "one agent with subagents" into a real multi-agent system. A lead agent orchestrates a team of category-specialized members, all running **in parallel** and communicating through dedicated tools (`team_create`, `team_send_message`, `team_task_create`, `team_status`, ...). Watch every member work simultaneously in a tmux layout with focus + grid windows.
|
||||
|
||||
```jsonc
|
||||
// .opencode/oh-my-openagent.jsonc
|
||||
{
|
||||
"team_mode": {
|
||||
"enabled": true,
|
||||
"max_parallel_members": 4,
|
||||
"tmux_visualization": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Restart opencode and the `team_*` tool family unlocks. Two skills already ride on top:
|
||||
|
||||
- **`hyperplan`** — 5 hostile agents tear apart your plan from orthogonal angles before a single line of code is written.
|
||||
- **`security-research`** — 3 vulnerability hunters + 2 PoC engineers audit your codebase in parallel, with severity calibrated by *actual exploitability*.
|
||||
|
||||
> **Off by default. Enable it when you want it.** [Full Team Mode guide →](docs/guide/team-mode.md)
|
||||
|
||||
### Agent Orchestration
|
||||
|
||||
@@ -191,7 +216,7 @@ When Sisyphus delegates to a subagent, it doesn't pick a model. It picks a **cat
|
||||
| `quick` | Single-file changes, typos |
|
||||
| `ultrabrain` | Hard logic, architecture decisions |
|
||||
|
||||
The agent says what kind of work it needs; the harness picks the right model. `ultrabrain` now routes to GPT-5.4 xhigh by default. You touch nothing.
|
||||
The agent says what kind of work it needs; the harness picks the right model. `ultrabrain` now routes to GPT-5.5 xhigh by default. You touch nothing.
|
||||
|
||||
### Claude Code Compatibility
|
||||
|
||||
|
||||
+28
-3
@@ -145,6 +145,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
| | Функция | Что делает |
|
||||
| --- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 🤖 | **Дисциплинированные агенты** | Sisyphus оркестрирует Hephaestus, Oracle, Librarian, Explore. Полноценная AI-команда разработки в параллельном режиме. |
|
||||
| 👥 | **Team Mode** (v4.0, opt-in) | Лид-агент + до 8 параллельных участников, визуализация в tmux в реальном времени, выделенные инструменты `team_*`. Питает `hyperplan` (5 враждебных критиков) и `security-research` (3 охотника + 2 PoC-инженера). [Документация →](docs/guide/team-mode.md) |
|
||||
| ⚡ | **`ultrawork` / `ulw`** | Одно слово. Все агенты активируются. Не останавливается, пока задача не выполнена. |
|
||||
| 🚪 | **[IntentGate](https://factory.ai/news/terminal-bench)** | Анализирует истинное намерение пользователя перед классификацией и действием. Никакого буквального неверного толкования. |
|
||||
| 🔗 | **Инструмент правок на основе хэш-якорей** | Хэш содержимого `LINE#ID` проверяет каждое изменение. Ноль ошибок с устаревшими строками. Вдохновлено [oh-my-pi](https://github.com/can1357/oh-my-pi). [The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
|
||||
@@ -169,7 +170,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
|
||||
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) — главный оркестратор. Он планирует, делегирует задачи специалистам и доводит их до завершения с агрессивным параллельным выполнением. Он не останавливается на полпути.
|
||||
|
||||
**Hephaestus** (`gpt-5.4`) — автономный глубокий исполнитель. Дайте ему цель, а не рецепт. Он исследует кодовую базу, изучает паттерны и выполняет задачи сквозным образом без лишних подсказок. *Законный Мастер.*
|
||||
**Hephaestus** (`gpt-5.5`) — автономный глубокий исполнитель. Дайте ему цель, а не рецепт. Он исследует кодовую базу, изучает паттерны и выполняет задачи сквозным образом без лишних подсказок. *Законный Мастер.*
|
||||
|
||||
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) — стратегический планировщик. Режим интервью: он задаёт вопросы, определяет объём работ и формирует детальный план до того, как написана хотя бы одна строка кода.
|
||||
|
||||
@@ -177,7 +178,31 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
|
||||
> Anthropic [заблокировал OpenCode из-за нас.](https://x.com/thdxr/status/2010149530486911014) Именно поэтому Hephaestus зовётся «Законным Мастером». Ирония намеренная.
|
||||
>
|
||||
> Мы работаем лучше всего на Opus, но Kimi K2.6 + GPT-5.4 уже превосходят ванильный Claude Code. Никакой настройки не требуется.
|
||||
> Мы работаем лучше всего на Opus, но Kimi K2.6 + GPT-5.5 уже превосходят ванильный Claude Code. Никакой настройки не требуется.
|
||||
|
||||
### Team Mode (v4.0)
|
||||
|
||||
Один агент — это быстро. Слаженная команда — это *разрушительно*.
|
||||
|
||||
**Team Mode** превращает oh-my-openagent из «одного агента с подагентами» в полноценную мультиагентную систему. Лид-агент оркестрирует команду специализированных по категориям участников, все они работают **параллельно** и общаются через выделенные инструменты (`team_create`, `team_send_message`, `team_task_create`, `team_status`, …). Наблюдайте за работой каждого участника одновременно в tmux-раскладке с focus- и grid-окнами.
|
||||
|
||||
```jsonc
|
||||
// .opencode/oh-my-openagent.jsonc
|
||||
{
|
||||
"team_mode": {
|
||||
"enabled": true,
|
||||
"max_parallel_members": 4,
|
||||
"tmux_visualization": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Перезапустите opencode — и семейство инструментов `team_*` будет активировано. Два навыка уже стоят на этом фундаменте:
|
||||
|
||||
- **`hyperplan`** — 5 враждебных агентов разносят ваш план под ортогональными углами ещё до написания первой строчки кода.
|
||||
- **`security-research`** — 3 охотника за уязвимостями + 2 PoC-инженера параллельно проводят аудит кодовой базы. Серьёзность калибруется по *фактической эксплуатируемости*.
|
||||
|
||||
> **По умолчанию выключено. Включайте, когда нужно.** [Полное руководство по Team Mode →](docs/guide/team-mode.md)
|
||||
|
||||
### Оркестрация агентов
|
||||
|
||||
@@ -190,7 +215,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
| `quick` | Изменения в одном файле, опечатки |
|
||||
| `ultrabrain` | Сложная логика, архитектурные решения |
|
||||
|
||||
Агент сообщает тип задачи, а обвязка подбирает нужную модель. `ultrabrain` теперь по умолчанию направляется в GPT-5.4 xhigh. Вы ни к чему не прикасаетесь.
|
||||
Агент сообщает тип задачи, а обвязка подбирает нужную модель. `ultrabrain` теперь по умолчанию направляется в GPT-5.5 xhigh. Вы ни к чему не прикасаетесь.
|
||||
|
||||
### Совместимость с Claude Code
|
||||
|
||||
|
||||
+28
-3
@@ -145,6 +145,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
| | 特性 | 功能说明 |
|
||||
| :---: | :-------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| 🤖 | **自律军团 (Discipline Agents)** | Sisyphus 负责调度 Hephaestus、Oracle、Librarian 和 Explore。一支完整的 AI 开发团队并行工作。 |
|
||||
| 👥 | **Team Mode** (v4.0, 选择性启用) | 领导 Agent + 最多 8 个并行成员,实时 tmux 可视化,专用 `team_*` 工具家族。驱动 `hyperplan`(5 个敌对评论者) 和 `security-research`(3 个猎手 + 2 个 PoC 工程师)。[文档 →](docs/guide/team-mode.md) |
|
||||
| ⚡ | **`ultrawork` / `ulw`** | 一键触发,所有智能体出动。任务完成前绝不罢休。 |
|
||||
| 🚪 | **[IntentGate 意图门](https://factory.ai/news/terminal-bench)** | 真正行动前,先分析用户的真实意图。彻底告别被字面意思误导的 AI 废话。 |
|
||||
| 🔗 | **基于哈希的编辑工具** | 每次修改都通过 `LINE#ID` 内容哈希验证、0% 错误修改。灵感来自 [oh-my-pi](https://github.com/can1357/oh-my-pi)。[The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
|
||||
@@ -169,7 +170,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
|
||||
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) 是你的主指挥官。他负责制定计划、分配任务给专家团队,并以极其激进的并行策略推动任务直至完成。他从不半途而废。
|
||||
|
||||
**Hephaestus** (`gpt-5.4`) 是你的自主深度工作者。你只需要给他目标,不要给他具体做法。他会自动探索代码库模式,从头到尾独立执行任务,绝不会中途要你当保姆。*名副其实的正牌工匠。*
|
||||
**Hephaestus** (`gpt-5.5`) 是你的自主深度工作者。你只需要给他目标,不要给他具体做法。他会自动探索代码库模式,从头到尾独立执行任务,绝不会中途要你当保姆。*名副其实的正牌工匠。*
|
||||
|
||||
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) 是你的战略规划师。他通过访谈模式,在动一行代码之前,先通过提问确定范围并构建详尽的执行计划。
|
||||
|
||||
@@ -177,7 +178,31 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
|
||||
> Anthropic [因为我们屏蔽了 OpenCode](https://x.com/thdxr/status/2010149530486911014)。这就是为什么我们将 Hephaestus 命名为"正牌工匠 (The Legitimate Craftsman)"。这是一个故意的讽刺。
|
||||
>
|
||||
> 我们在 Opus 上运行得最好,但仅仅使用 Kimi K2.5 + GPT-5.4 就足以碾压原版的 Claude Code。完全不需要配置。
|
||||
> 我们在 Opus 上运行得最好,但仅仅使用 Kimi K2.6 + GPT-5.5 就足以碾压原版的 Claude Code。完全不需要配置。
|
||||
|
||||
### Team Mode (v4.0)
|
||||
|
||||
一个 Agent 已经够快。一支协调的团队是 *毁灭性* 的。
|
||||
|
||||
**Team Mode** 把 oh-my-openagent 从「带子 Agent 的单个 Agent」升级为真正的多 Agent 系统。一个领导 Agent 协调一队按类别专业化的成员,全部 **并行** 运行,通过专用工具(`team_create`、`team_send_message`、`team_task_create`、`team_status`、…)进行通信。在 tmux 布局的 focus + grid 窗口中同时观察每个成员的工作。
|
||||
|
||||
```jsonc
|
||||
// .opencode/oh-my-openagent.jsonc
|
||||
{
|
||||
"team_mode": {
|
||||
"enabled": true,
|
||||
"max_parallel_members": 4,
|
||||
"tmux_visualization": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
重启 opencode,`team_*` 工具家族就会解锁。已经有两个技能站在它之上:
|
||||
|
||||
- **`hyperplan`** — 5 个敌对 Agent 在写下第一行代码之前,从正交角度撕碎你的计划。
|
||||
- **`security-research`** — 3 个漏洞猎手 + 2 个 PoC 工程师并行审计你的代码库。严重性按 *实际可利用性* 校准。
|
||||
|
||||
> **默认关闭。需要时再开。** [Team Mode 完整指南 →](docs/guide/team-mode.md)
|
||||
|
||||
### 智能体调度机制
|
||||
|
||||
@@ -190,7 +215,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
|
||||
| `quick` | 单文件修改、修错字 |
|
||||
| `ultrabrain` | 复杂硬核逻辑、架构决策 |
|
||||
|
||||
智能体只需要说明要做什么类型的工作,框架就会挑选出最合适的模型去干。`ultrabrain` 现在默认路由到 GPT-5.4 xhigh。你完全不需要操心。
|
||||
智能体只需要说明要做什么类型的工作,框架就会挑选出最合适的模型去干。`ultrabrain` 现在默认路由到 GPT-5.5 xhigh。你完全不需要操心。
|
||||
|
||||
### 完全兼容 Claude Code
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import type { Metadata } from "next"
|
||||
import type { JSX, SVGProps } from "react"
|
||||
import { getTranslations } from "next-intl/server"
|
||||
import Image from "next/image"
|
||||
import {
|
||||
Layers,
|
||||
Star,
|
||||
@@ -18,6 +17,12 @@ import {
|
||||
HardDrive,
|
||||
ArrowRight,
|
||||
Target,
|
||||
Users,
|
||||
Network,
|
||||
Terminal,
|
||||
Wrench,
|
||||
Sparkles,
|
||||
Sword,
|
||||
} from "lucide-react"
|
||||
import { HeroStats } from "@/components/landing/hero-stats"
|
||||
import { InstallCommand } from "@/components/landing/install-command"
|
||||
@@ -38,7 +43,7 @@ const FALLBACK_STATS = {
|
||||
export const landingMetadata: Metadata = {
|
||||
title: "Oh My OpenAgent — The Best Agent Harness",
|
||||
description:
|
||||
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, background agents, 40+ lifecycle hooks.",
|
||||
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, Team Mode, background agents, 50+ lifecycle hooks.",
|
||||
}
|
||||
|
||||
export async function LandingPage(): Promise<JSX.Element> {
|
||||
@@ -109,18 +114,13 @@ export async function LandingPage(): Promise<JSX.Element> {
|
||||
|
||||
return (
|
||||
<div className="flex min-h-screen flex-col overflow-x-hidden">
|
||||
<link rel="preload" as="image" href="/images/hero.webp" fetchPriority="low" />
|
||||
<section className="relative flex min-h-[90vh] items-center justify-center overflow-hidden pt-16">
|
||||
<div className="absolute inset-0 z-0 opacity-30">
|
||||
<Image
|
||||
src="/images/hero.png"
|
||||
alt=""
|
||||
fill
|
||||
priority
|
||||
fetchPriority="high"
|
||||
className="object-cover object-center"
|
||||
sizes="100vw"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
aria-hidden="true"
|
||||
className="hero-bg absolute inset-0 z-0 bg-cover bg-center"
|
||||
style={{ backgroundImage: "url(/images/hero.webp)" }}
|
||||
/>
|
||||
<div className="absolute inset-0 z-0 bg-gradient-to-b from-black/80 via-black/90 to-[#0a0a0a]" />
|
||||
|
||||
<div className="relative z-10 container mx-auto flex flex-col items-center gap-8 px-4 text-center md:px-6">
|
||||
@@ -146,10 +146,10 @@ export async function LandingPage(): Promise<JSX.Element> {
|
||||
}}
|
||||
labels={{
|
||||
githubStars: t("hero.githubStars", { count: "{count}" }),
|
||||
specializedAgents: t("hero.specializedAgents", { count: "10" }),
|
||||
specializedAgents: t("hero.specializedAgents", { count: "11" }),
|
||||
totalDownloads: t("hero.totalDownloads", { count: "{count}" }),
|
||||
monthlyDownloads: t("hero.monthlyDownloads", { count: "{count}" }),
|
||||
lifecycleHooks: t("hero.lifecycleHooks", { count: "40+" }),
|
||||
lifecycleHooks: t("hero.lifecycleHooks", { count: "50+" }),
|
||||
}}
|
||||
/>
|
||||
|
||||
@@ -466,6 +466,126 @@ export async function LandingPage(): Promise<JSX.Element> {
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section
|
||||
id="team-mode"
|
||||
className="relative overflow-hidden border-t border-white/5 bg-[#0a0a0a] py-24"
|
||||
>
|
||||
<div className="absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-fuchsia-900/20 via-black to-black opacity-70" />
|
||||
<div className="relative z-10 container mx-auto px-4 md:px-6">
|
||||
<div className="mx-auto max-w-5xl">
|
||||
<div className="mb-6 flex flex-wrap items-center gap-3">
|
||||
<Badge className="border-fuchsia-500/30 bg-fuchsia-500/10 px-4 py-1.5 font-mono text-fuchsia-300">
|
||||
{t("teamMode.badge")}
|
||||
</Badge>
|
||||
<Badge variant="outline" className="border-zinc-700 text-xs text-zinc-400">
|
||||
opt-in
|
||||
</Badge>
|
||||
</div>
|
||||
|
||||
<h2 className="mb-4 text-4xl font-bold tracking-tight md:text-5xl">
|
||||
<span className="bg-gradient-to-r from-fuchsia-400 via-purple-400 to-cyan-400 bg-clip-text text-transparent">
|
||||
{t("teamMode.title")}
|
||||
</span>
|
||||
</h2>
|
||||
<h3 className="mb-6 text-2xl font-bold text-zinc-200 md:text-3xl">
|
||||
{t("teamMode.headline")}
|
||||
</h3>
|
||||
<p className="mb-12 max-w-3xl text-xl leading-relaxed text-zinc-400">
|
||||
{t("teamMode.description")}
|
||||
</p>
|
||||
|
||||
<div className="mb-16 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4">
|
||||
{(
|
||||
[
|
||||
{ key: "lead", icon: Network },
|
||||
{ key: "parallel", icon: Users },
|
||||
{ key: "tmux", icon: Terminal },
|
||||
{ key: "tools", icon: Wrench },
|
||||
] as const
|
||||
).map(({ key, icon: Icon }) => (
|
||||
<div key={key}>
|
||||
<Card className="h-full border-zinc-800 bg-zinc-900/30 transition-colors hover:border-fuchsia-500/30">
|
||||
<CardHeader className="pb-3">
|
||||
<div className="w-fit rounded-lg bg-fuchsia-500/10 p-2 text-fuchsia-300">
|
||||
<Icon className="h-5 w-5" />
|
||||
</div>
|
||||
<CardTitle className="mt-3 text-lg text-fuchsia-200">
|
||||
{t(`teamMode.features.${key}.title`)}
|
||||
</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<p className="text-sm leading-relaxed text-zinc-400">
|
||||
{t(`teamMode.features.${key}.description`)}
|
||||
</p>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className="mb-10 flex items-center gap-3">
|
||||
<Sparkles className="h-4 w-4 text-fuchsia-400" />
|
||||
<span className="font-mono text-sm tracking-widest text-fuchsia-300/80 uppercase">
|
||||
{t("teamMode.poweredBy")}
|
||||
</span>
|
||||
<div className="h-px flex-1 bg-gradient-to-r from-fuchsia-500/30 to-transparent" />
|
||||
</div>
|
||||
|
||||
<div className="mb-12 grid grid-cols-1 gap-6 lg:grid-cols-2">
|
||||
{(
|
||||
[
|
||||
{ key: "hyperplan", icon: Sword, accent: "purple" as const },
|
||||
{ key: "securityResearch", icon: Shield, accent: "rose" as const },
|
||||
] as const
|
||||
).map(({ key, icon: Icon, accent }) => (
|
||||
<div key={key}>
|
||||
<Card
|
||||
className={`h-full border-zinc-800 bg-zinc-900/30 ${
|
||||
accent === "purple"
|
||||
? "hover:border-purple-500/40"
|
||||
: "hover:border-rose-500/40"
|
||||
} transition-colors`}
|
||||
>
|
||||
<CardHeader>
|
||||
<div className="flex items-center gap-3">
|
||||
<div
|
||||
className={`rounded-lg p-2 ${
|
||||
accent === "purple"
|
||||
? "bg-purple-500/10 text-purple-300"
|
||||
: "bg-rose-500/10 text-rose-300"
|
||||
}`}
|
||||
>
|
||||
<Icon className="h-5 w-5" />
|
||||
</div>
|
||||
<CardTitle
|
||||
className={`font-mono text-lg ${
|
||||
accent === "purple" ? "text-purple-300" : "text-rose-300"
|
||||
}`}
|
||||
>
|
||||
{t(`teamMode.skills.${key}.name`)}
|
||||
</CardTitle>
|
||||
</div>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<p className="leading-relaxed text-zinc-300">
|
||||
{t(`teamMode.skills.${key}.description`)}
|
||||
</p>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className="flex flex-col items-start gap-4 rounded-xl border border-zinc-800 bg-black/40 p-6 sm:flex-row sm:items-center sm:justify-between">
|
||||
<code className="font-mono text-sm break-all text-fuchsia-200/90">
|
||||
{t("teamMode.optIn")}
|
||||
</code>
|
||||
<p className="text-sm text-zinc-400 italic sm:text-right">{t("teamMode.tagline")}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="border-t border-white/5 bg-[#0a0a0a] py-24">
|
||||
<div className="container mx-auto px-4 md:px-6">
|
||||
<div className="mb-16 text-center">
|
||||
@@ -532,10 +652,10 @@ export async function LandingPage(): Promise<JSX.Element> {
|
||||
<div className="space-y-2">
|
||||
{[
|
||||
{ cat: "visual-engineering", model: "Gemini 3.1 Pro" },
|
||||
{ cat: "ultrabrain", model: "GPT 5.4" },
|
||||
{ cat: "ultrabrain", model: "GPT 5.5 xHigh" },
|
||||
{ cat: "artistry", model: "Gemini 3.1 Pro" },
|
||||
{ cat: "quick", model: "Claude Haiku 4.5" },
|
||||
{ cat: "deep", model: "GPT 5.3 Codex" },
|
||||
{ cat: "quick", model: "GPT 5.4 Mini" },
|
||||
{ cat: "deep", model: "GPT 5.5 Medium" },
|
||||
{ cat: "writing", model: "Kimi K2.5" },
|
||||
{ cat: "git", model: "Claude Haiku 4.5" },
|
||||
].map((item) => (
|
||||
@@ -556,7 +676,7 @@ export async function LandingPage(): Promise<JSX.Element> {
|
||||
Skill Injection
|
||||
</h3>
|
||||
<div className="grid grid-cols-2 gap-3">
|
||||
{["playwright", "git-master", "frontend-ui-ux", "dev-browser"].map(
|
||||
{["playwright", "git-master", "frontend-ui-ux", "team-mode"].map(
|
||||
(skill) => (
|
||||
<div
|
||||
key={skill}
|
||||
|
||||
+23
-5
@@ -7,7 +7,6 @@
|
||||
@theme {
|
||||
--font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
||||
--font-mono: var(--font-geist-mono), ui-monospace, SFMono-Regular, monospace;
|
||||
--font-manrope: var(--font-manrope), sans-serif;
|
||||
|
||||
--color-background: var(--background);
|
||||
--color-foreground: var(--foreground);
|
||||
@@ -133,11 +132,9 @@
|
||||
/* Typography */
|
||||
--font-geist-sans: var(--font-geist-sans);
|
||||
--font-geist-mono: var(--font-geist-mono);
|
||||
--font-manrope: var(--font-manrope);
|
||||
--font-inter: var(--font-inter);
|
||||
|
||||
/* Semantic Fonts */
|
||||
--font-heading: var(--font-manrope);
|
||||
--font-heading: var(--font-geist-sans);
|
||||
--font-body: var(--font-geist-sans);
|
||||
--font-code: var(--font-geist-mono);
|
||||
}
|
||||
@@ -153,13 +150,34 @@
|
||||
"rlig" 1,
|
||||
"calt" 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Hero background image fades in after first paint so the headline text is
|
||||
* the LCP candidate. The image is decorative (opacity 30%) and is preloaded
|
||||
* with low priority so it doesn't compete with critical resources.
|
||||
*/
|
||||
.hero-bg {
|
||||
opacity: 0;
|
||||
animation: hero-bg-fade-in 600ms ease-out 200ms forwards;
|
||||
}
|
||||
@keyframes hero-bg-fade-in {
|
||||
to {
|
||||
opacity: 0.3;
|
||||
}
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.hero-bg {
|
||||
animation: none;
|
||||
opacity: 0.3;
|
||||
}
|
||||
}
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: var(--font-manrope);
|
||||
font-family: var(--font-geist-sans);
|
||||
}
|
||||
|
||||
[lang|="ko"] h1,
|
||||
|
||||
+19
-28
@@ -1,22 +1,9 @@
|
||||
import type { Metadata } from "next"
|
||||
import { GeistSans } from "geist/font/sans"
|
||||
import { GeistMono } from "geist/font/mono"
|
||||
import { Inter, Manrope } from "next/font/google"
|
||||
import Script from "next/script"
|
||||
import "./globals.css"
|
||||
|
||||
const inter = Inter({
|
||||
subsets: ["latin"],
|
||||
variable: "--font-inter",
|
||||
display: "swap",
|
||||
})
|
||||
|
||||
const manrope = Manrope({
|
||||
subsets: ["latin"],
|
||||
variable: "--font-manrope",
|
||||
display: "swap",
|
||||
})
|
||||
|
||||
const primarySiteUrl = "https://ohmyopenagent.com"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
@@ -26,7 +13,7 @@ export const metadata: Metadata = {
|
||||
template: "%s | Oh My OpenAgent",
|
||||
},
|
||||
description:
|
||||
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, background agents, 40+ lifecycle hooks.",
|
||||
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, Team Mode, background agents, 50+ lifecycle hooks.",
|
||||
keywords: [
|
||||
"opencode",
|
||||
"oh-my-opencode",
|
||||
@@ -36,6 +23,8 @@ export const metadata: Metadata = {
|
||||
"code agent",
|
||||
"sisyphus",
|
||||
"multi-model",
|
||||
"team mode",
|
||||
"agent orchestration",
|
||||
"claude",
|
||||
"gpt",
|
||||
"gemini",
|
||||
@@ -50,14 +39,14 @@ export const metadata: Metadata = {
|
||||
siteName: "Oh My OpenAgent",
|
||||
title: "Oh My OpenAgent — The Best Agent Harness",
|
||||
description:
|
||||
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, background agents, 40+ lifecycle hooks.",
|
||||
images: [{ url: "/images/hero.png", width: 1200, height: 630, alt: "Oh My OpenAgent" }],
|
||||
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, Team Mode, background agents, 50+ lifecycle hooks.",
|
||||
images: [{ url: "/images/hero.webp", width: 1024, height: 683, alt: "Oh My OpenAgent" }],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "Oh My OpenAgent — The Best Agent Harness",
|
||||
description: "Meet Sisyphus: The batteries-included agent that codes like you.",
|
||||
images: ["/images/hero.png"],
|
||||
images: ["/images/hero.webp"],
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
@@ -82,7 +71,7 @@ const jsonLd = {
|
||||
url: "https://github.com/code-yeongyu",
|
||||
},
|
||||
description:
|
||||
"The batteries-included agent harness for OpenCode. Multi-model orchestration, background agents, 40+ lifecycle hooks.",
|
||||
"The batteries-included agent harness for OpenCode. Multi-model orchestration, Team Mode, background agents, 50+ lifecycle hooks.",
|
||||
offers: {
|
||||
"@type": "Offer",
|
||||
price: "0",
|
||||
@@ -97,19 +86,21 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
||||
return (
|
||||
<html
|
||||
lang="en"
|
||||
className={`dark ${GeistSans.variable} ${GeistMono.variable} ${inter.variable} ${manrope.variable}`}
|
||||
className={`dark ${GeistSans.variable} ${GeistMono.variable}`}
|
||||
suppressHydrationWarning
|
||||
>
|
||||
<body className="flex min-h-screen flex-col bg-[#0a0a0a] text-[#ededed] antialiased">
|
||||
<Script
|
||||
src={`https://www.googletagmanager.com/gtag/js?id=${gaMeasurementId}`}
|
||||
strategy="afterInteractive"
|
||||
/>
|
||||
<Script id="google-analytics" strategy="afterInteractive">
|
||||
{`window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', '${gaMeasurementId}', { cookie_domain: '${gaTrackedDomain}' });`}
|
||||
<Script id="google-analytics-loader" strategy="lazyOnload">
|
||||
{`if (typeof window !== 'undefined' && window.location.hostname === '${gaTrackedDomain}') {
|
||||
var s = document.createElement('script');
|
||||
s.async = true;
|
||||
s.src = 'https://www.googletagmanager.com/gtag/js?id=${gaMeasurementId}';
|
||||
document.head.appendChild(s);
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', '${gaMeasurementId}', { cookie_domain: '${gaTrackedDomain}' });
|
||||
}`}
|
||||
</Script>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
|
||||
+40
-3
@@ -28,6 +28,7 @@
|
||||
"@types/node": "^25.6.2",
|
||||
"@types/react": "^19.2.14",
|
||||
"@types/react-dom": "^19.2.3",
|
||||
"critters": "^0.0.25",
|
||||
"eslint": "^10.3.0",
|
||||
"eslint-config-next": "15.5.18",
|
||||
"eslint-config-prettier": "10.1.8",
|
||||
@@ -720,7 +721,7 @@
|
||||
|
||||
"ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
|
||||
|
||||
"ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
|
||||
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
||||
|
||||
"aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="],
|
||||
|
||||
@@ -762,6 +763,8 @@
|
||||
|
||||
"body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="],
|
||||
|
||||
"boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="],
|
||||
|
||||
"bowser": ["bowser@2.13.1", "", {}, "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw=="],
|
||||
|
||||
"brace-expansion": ["brace-expansion@5.0.4", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg=="],
|
||||
@@ -780,7 +783,7 @@
|
||||
|
||||
"caniuse-lite": ["caniuse-lite@1.0.30001792", "", {}, "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw=="],
|
||||
|
||||
"chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
|
||||
"chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
|
||||
|
||||
"ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="],
|
||||
|
||||
@@ -794,6 +797,10 @@
|
||||
|
||||
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
|
||||
|
||||
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
||||
|
||||
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
||||
|
||||
"combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
|
||||
|
||||
"commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="],
|
||||
@@ -810,8 +817,14 @@
|
||||
|
||||
"cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
|
||||
|
||||
"critters": ["critters@0.0.25", "", { "dependencies": { "chalk": "^4.1.0", "css-select": "^5.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.2", "htmlparser2": "^8.0.2", "postcss": "^8.4.23", "postcss-media-query-parser": "^0.2.3" } }, "sha512-ROF/tjJyyRdM8/6W0VqoN5Ql05xAGnkf5b7f3sTEl1bI5jTQQf8O918RD/V9tEb9pRY/TKcvJekDbJtniHyPtQ=="],
|
||||
|
||||
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
|
||||
|
||||
"css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="],
|
||||
|
||||
"css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="],
|
||||
|
||||
"csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
|
||||
|
||||
"damerau-levenshtein": ["damerau-levenshtein@1.0.8", "", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="],
|
||||
@@ -840,6 +853,14 @@
|
||||
|
||||
"doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="],
|
||||
|
||||
"dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
|
||||
|
||||
"domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="],
|
||||
|
||||
"domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
|
||||
|
||||
"domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
|
||||
|
||||
"dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="],
|
||||
|
||||
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
|
||||
@@ -858,6 +879,8 @@
|
||||
|
||||
"enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="],
|
||||
|
||||
"entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
|
||||
|
||||
"error-stack-parser-es": ["error-stack-parser-es@1.0.5", "", {}, "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA=="],
|
||||
|
||||
"es-abstract": ["es-abstract@1.24.1", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw=="],
|
||||
@@ -1018,6 +1041,8 @@
|
||||
|
||||
"has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="],
|
||||
|
||||
"has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
|
||||
|
||||
"has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="],
|
||||
|
||||
"has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="],
|
||||
@@ -1028,6 +1053,8 @@
|
||||
|
||||
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
|
||||
|
||||
"htmlparser2": ["htmlparser2@8.0.2", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1", "entities": "^4.4.0" } }, "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA=="],
|
||||
|
||||
"http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="],
|
||||
|
||||
"human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="],
|
||||
@@ -1234,6 +1261,8 @@
|
||||
|
||||
"npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="],
|
||||
|
||||
"nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="],
|
||||
|
||||
"object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
|
||||
|
||||
"object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],
|
||||
@@ -1298,6 +1327,8 @@
|
||||
|
||||
"postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="],
|
||||
|
||||
"postcss-media-query-parser": ["postcss-media-query-parser@0.2.3", "", {}, "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig=="],
|
||||
|
||||
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
|
||||
|
||||
"prettier": ["prettier@3.8.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw=="],
|
||||
@@ -1416,7 +1447,7 @@
|
||||
|
||||
"styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="],
|
||||
|
||||
"supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="],
|
||||
"supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
|
||||
|
||||
"supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
|
||||
|
||||
@@ -1544,8 +1575,12 @@
|
||||
|
||||
"@node-minify/core/glob": ["glob@9.3.5", "", { "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" } }, "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q=="],
|
||||
|
||||
"@opennextjs/aws/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
|
||||
|
||||
"@opennextjs/aws/esbuild": ["esbuild@0.25.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.4", "@esbuild/android-arm": "0.25.4", "@esbuild/android-arm64": "0.25.4", "@esbuild/android-x64": "0.25.4", "@esbuild/darwin-arm64": "0.25.4", "@esbuild/darwin-x64": "0.25.4", "@esbuild/freebsd-arm64": "0.25.4", "@esbuild/freebsd-x64": "0.25.4", "@esbuild/linux-arm": "0.25.4", "@esbuild/linux-arm64": "0.25.4", "@esbuild/linux-ia32": "0.25.4", "@esbuild/linux-loong64": "0.25.4", "@esbuild/linux-mips64el": "0.25.4", "@esbuild/linux-ppc64": "0.25.4", "@esbuild/linux-riscv64": "0.25.4", "@esbuild/linux-s390x": "0.25.4", "@esbuild/linux-x64": "0.25.4", "@esbuild/netbsd-arm64": "0.25.4", "@esbuild/netbsd-x64": "0.25.4", "@esbuild/openbsd-arm64": "0.25.4", "@esbuild/openbsd-x64": "0.25.4", "@esbuild/sunos-x64": "0.25.4", "@esbuild/win32-arm64": "0.25.4", "@esbuild/win32-ia32": "0.25.4", "@esbuild/win32-x64": "0.25.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q=="],
|
||||
|
||||
"@poppinss/dumper/supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="],
|
||||
|
||||
"@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
|
||||
|
||||
"@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
|
||||
@@ -1620,6 +1655,8 @@
|
||||
|
||||
"terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="],
|
||||
|
||||
"wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
|
||||
|
||||
"wrap-ansi/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="],
|
||||
|
||||
"@aws-crypto/sha1-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
|
||||
|
||||
@@ -26,7 +26,7 @@ test.describe("Landing Page", () => {
|
||||
await expect(installCommand).toBeVisible()
|
||||
})
|
||||
|
||||
test("renders all 10 agent cards", async ({ page }) => {
|
||||
test("renders all rendered agent cards", async ({ page }) => {
|
||||
// given
|
||||
await page.goto("/")
|
||||
|
||||
@@ -41,7 +41,6 @@ test.describe("Landing Page", () => {
|
||||
"Metis",
|
||||
"Momus",
|
||||
"Atlas",
|
||||
"Sisyphus Junior",
|
||||
]
|
||||
for (const name of agentNames) {
|
||||
await expect(page.getByText(name, { exact: true }).first()).toBeVisible()
|
||||
|
||||
+45
-8
@@ -79,7 +79,7 @@
|
||||
},
|
||||
"boulderTitle": "Session Continuity",
|
||||
"boulderDescription": "Active work tracked in boulder.json. Power outage? System crash? Doesn't matter. Pick up exactly where you stopped.",
|
||||
"model": "Claude Opus 4.6 Max"
|
||||
"model": "Claude Opus 4.7 Max"
|
||||
},
|
||||
"prometheusAtlas": {
|
||||
"badge": "Orchestration Workflow",
|
||||
@@ -88,7 +88,7 @@
|
||||
"prometheus": {
|
||||
"name": "Prometheus",
|
||||
"role": "Strategic Planner",
|
||||
"model": "Claude Opus 4.6 Max",
|
||||
"model": "Claude Opus 4.7 Max",
|
||||
"description": "The architect. Interviews you, explores your codebase, and creates detailed battle plans. Never writes code. Uses Metis and Momus as quality gates.",
|
||||
"features": [
|
||||
"Intelligent interview mode",
|
||||
@@ -139,7 +139,44 @@
|
||||
"verify": "VERIFY — Prove it works"
|
||||
},
|
||||
"tagline": "For when good enough isn't.",
|
||||
"model": "GPT 5.3 Codex Medium"
|
||||
"model": "GPT 5.5 Medium"
|
||||
},
|
||||
"teamMode": {
|
||||
"badge": "NEW · v4.0",
|
||||
"title": "Team Mode",
|
||||
"headline": "Multiple Agents. Side-by-Side. In Parallel.",
|
||||
"description": "A lead agent orchestrates a team of category-specialized members, all running in parallel and communicating through dedicated tools. Watch every member work simultaneously in tmux. Opt-in — flip team_mode.enabled and restart.",
|
||||
"features": {
|
||||
"lead": {
|
||||
"title": "Lead Orchestration",
|
||||
"description": "One coordinator. Multiple specialists. Real-time messaging via team_send_message and team_task_create."
|
||||
},
|
||||
"parallel": {
|
||||
"title": "True Parallelism",
|
||||
"description": "Up to 8 members work simultaneously. No waiting, no queues — every angle covered at once."
|
||||
},
|
||||
"tmux": {
|
||||
"title": "Tmux Visualization",
|
||||
"description": "Focus and grid windows let you zoom into one teammate without losing the bigger picture."
|
||||
},
|
||||
"tools": {
|
||||
"title": "team_* Tool Family",
|
||||
"description": "12 dedicated tools (team_create, team_status, team_send_message, ...) gated behind team_mode.enabled."
|
||||
}
|
||||
},
|
||||
"poweredBy": "Powered by Team Mode",
|
||||
"skills": {
|
||||
"hyperplan": {
|
||||
"name": "hyperplan",
|
||||
"description": "5 hostile agents tear apart your plan from orthogonal angles before a single line of code is written."
|
||||
},
|
||||
"securityResearch": {
|
||||
"name": "security-research",
|
||||
"description": "3 vulnerability hunters + 2 PoC engineers audit your codebase. Severity calibrated by actual exploitability."
|
||||
}
|
||||
},
|
||||
"optIn": "team_mode.enabled = true → restart opencode",
|
||||
"tagline": "Off by default. Devastating when on."
|
||||
},
|
||||
"agents": {
|
||||
"title": "Specialized Agents",
|
||||
@@ -147,31 +184,31 @@
|
||||
"oracle": {
|
||||
"name": "Oracle",
|
||||
"role": "Architecture Consultant",
|
||||
"model": "GPT 5.4 High",
|
||||
"model": "GPT 5.5 High",
|
||||
"description": "Complex debugging and architectural decisions. When the path forward isn't obvious."
|
||||
},
|
||||
"librarian": {
|
||||
"name": "Librarian",
|
||||
"role": "Docs & Code Search",
|
||||
"model": "MiniMax M2.5",
|
||||
"model": "GPT 5.4 Mini Fast",
|
||||
"description": "Finds real GitHub examples and official docs. Evidence-based, with permalinks."
|
||||
},
|
||||
"explore": {
|
||||
"name": "Explore",
|
||||
"role": "Codebase Grep",
|
||||
"model": "MiniMax M2.5",
|
||||
"model": "GPT 5.4 Mini Fast",
|
||||
"description": "Blazing fast codebase search. Cheap, parallel, always background."
|
||||
},
|
||||
"metis": {
|
||||
"name": "Metis",
|
||||
"role": "Plan Consultant",
|
||||
"model": "Claude Opus 4.6",
|
||||
"model": "Claude Sonnet 4.6",
|
||||
"description": "Catches ambiguities in plans before they become production bugs."
|
||||
},
|
||||
"momus": {
|
||||
"name": "Momus",
|
||||
"role": "Plan Reviewer",
|
||||
"model": "GPT 5.4",
|
||||
"model": "GPT 5.5 xHigh",
|
||||
"description": "Ruthless validation. Only approves when the plan is bulletproof."
|
||||
},
|
||||
"dynamicSystem": {
|
||||
|
||||
+45
-8
@@ -79,7 +79,7 @@
|
||||
},
|
||||
"boulderTitle": "Session Continuity",
|
||||
"boulderDescription": "アクティブな作業はboulder.jsonに追跡されます。停電?システムクラッシュ?関係ありません。止まったそのままの場所から再開できます。",
|
||||
"model": "Claude Opus 4.6 Max"
|
||||
"model": "Claude Opus 4.7 Max"
|
||||
},
|
||||
"prometheusAtlas": {
|
||||
"badge": "オーケストレーションワークフロー",
|
||||
@@ -88,7 +88,7 @@
|
||||
"prometheus": {
|
||||
"name": "Prometheus",
|
||||
"role": "Strategic Planner",
|
||||
"model": "Claude Opus 4.6 Max",
|
||||
"model": "Claude Opus 4.7 Max",
|
||||
"description": "設計者。あなたとインタビューし、コードベースを探索し、詳細な実行計画を作成します。コードは絶対に書きません。MetisとMomusを品質ゲートとして使用します。",
|
||||
"features": [
|
||||
"知的なインタビューモード",
|
||||
@@ -139,7 +139,44 @@
|
||||
"verify": "VERIFY — 動作を証明する"
|
||||
},
|
||||
"tagline": "良いだけではない時に。",
|
||||
"model": "GPT 5.3 Codex Medium"
|
||||
"model": "GPT 5.5 Medium"
|
||||
},
|
||||
"teamMode": {
|
||||
"badge": "NEW · v4.0",
|
||||
"title": "Team Mode",
|
||||
"headline": "複数のエージェント。横並び。並列で。",
|
||||
"description": "リードエージェントがカテゴリ特化のメンバーチームを統括します。全員が並列で動き、専用ツールでリアルタイムに通信。tmuxで全メンバーの作業を同時に観察できます。オプトイン — team_mode.enabledを切り替えて再起動。",
|
||||
"features": {
|
||||
"lead": {
|
||||
"title": "リードオーケストレーション",
|
||||
"description": "コーディネーター1人、スペシャリスト複数。team_send_messageとteam_task_createによるリアルタイムメッセージング。"
|
||||
},
|
||||
"parallel": {
|
||||
"title": "真の並列性",
|
||||
"description": "最大8メンバーが同時に作業。待機なし、キューなし — あらゆる角度を一度にカバー。"
|
||||
},
|
||||
"tmux": {
|
||||
"title": "Tmuxビジュアライゼーション",
|
||||
"description": "Focusとgridウィンドウで一人のチームメンバーに集中しつつ、全体像も見逃しません。"
|
||||
},
|
||||
"tools": {
|
||||
"title": "team_* ツールファミリー",
|
||||
"description": "12の専用ツール(team_create、team_status、team_send_message、…)。team_mode.enabledの裏でゲーティング。"
|
||||
}
|
||||
},
|
||||
"poweredBy": "Team Modeで動作",
|
||||
"skills": {
|
||||
"hyperplan": {
|
||||
"name": "hyperplan",
|
||||
"description": "5つの敵対的エージェントが、コード一行が書かれる前に直交する角度から計画を引き裂きます。"
|
||||
},
|
||||
"securityResearch": {
|
||||
"name": "security-research",
|
||||
"description": "3人の脆弱性ハンター + 2人のPoCエンジニアがコードベースを監査。実際の悪用可能性で重大度を調整。"
|
||||
}
|
||||
},
|
||||
"optIn": "team_mode.enabled = true → opencode再起動",
|
||||
"tagline": "デフォルトはOFF。ONにすると圧倒的。"
|
||||
},
|
||||
"agents": {
|
||||
"title": "Specialized Agents",
|
||||
@@ -147,31 +184,31 @@
|
||||
"oracle": {
|
||||
"name": "Oracle",
|
||||
"role": "Architecture Consultant",
|
||||
"model": "GPT 5.4 High",
|
||||
"model": "GPT 5.5 High",
|
||||
"description": "複雑なデバッグとアーキテクチャ決定。前進の道が明らかでない時。"
|
||||
},
|
||||
"librarian": {
|
||||
"name": "Librarian",
|
||||
"role": "Docs & Code Search",
|
||||
"model": "MiniMax M2.5",
|
||||
"model": "GPT 5.4 Mini Fast",
|
||||
"description": "実際のGitHub例と公式ドキュメントを見つける。証拠ベース、パーマリンク付き。"
|
||||
},
|
||||
"explore": {
|
||||
"name": "Explore",
|
||||
"role": "Codebase Grep",
|
||||
"model": "MiniMax M2.5",
|
||||
"model": "GPT 5.4 Mini Fast",
|
||||
"description": "超高速コードベース検索。安価で、並列で、常にバックグラウンドで。"
|
||||
},
|
||||
"metis": {
|
||||
"name": "Metis",
|
||||
"role": "Plan Consultant",
|
||||
"model": "Claude Opus 4.6",
|
||||
"model": "Claude Sonnet 4.6",
|
||||
"description": "プランの曖昧さをプロダクションバグになる前に捕捉する。"
|
||||
},
|
||||
"momus": {
|
||||
"name": "Momus",
|
||||
"role": "Plan Reviewer",
|
||||
"model": "GPT 5.4",
|
||||
"model": "GPT 5.5 xHigh",
|
||||
"description": "容赦ない検証。プランが弾丸不可能な時だけ承認する。"
|
||||
},
|
||||
"dynamicSystem": {
|
||||
|
||||
+51
-14
@@ -79,7 +79,7 @@
|
||||
},
|
||||
"boulderTitle": "세션 연속성",
|
||||
"boulderDescription": "모든 작업은 boulder.json에 기록됩니다. 정전? 시스템 크래시? 상관없습니다. 멈춘 그 자리에서 즉시 재개하세요.",
|
||||
"model": "Claude Opus 4.6 Max"
|
||||
"model": "Claude Opus 4.7 Max"
|
||||
},
|
||||
"prometheusAtlas": {
|
||||
"badge": "오케스트레이션 워크플로우",
|
||||
@@ -87,8 +87,8 @@
|
||||
"headline": "계획과 실행은 엄연히 다른 영역입니다",
|
||||
"prometheus": {
|
||||
"name": "Prometheus",
|
||||
"role": "전략 기획자",
|
||||
"model": "Claude Opus 4.6 Max",
|
||||
"role": "Strategic Planner",
|
||||
"model": "Claude Opus 4.7 Max",
|
||||
"description": "설계자입니다. 당신과 인터뷰하고, 코드베이스를 탐색하여 상세한 작전 계획을 짭니다. 코드는 절대 쓰지 않습니다. Metis와 Momus를 통해 품질을 검증합니다.",
|
||||
"features": [
|
||||
"지능형 인터뷰 모드",
|
||||
@@ -139,39 +139,76 @@
|
||||
"verify": "VERIFY — 동작 증명"
|
||||
},
|
||||
"tagline": "'적당히'로는 충분하지 않을 때.",
|
||||
"model": "GPT 5.3 Codex Medium"
|
||||
"model": "GPT 5.5 Medium"
|
||||
},
|
||||
"teamMode": {
|
||||
"badge": "NEW · v4.0",
|
||||
"title": "Team Mode",
|
||||
"headline": "여러 에이전트. 나란히. 병렬로.",
|
||||
"description": "리드 에이전트가 카테고리별 전문 멤버 팀을 지휘합니다. 모두 병렬로 동작하며 전용 도구로 실시간 통신합니다. tmux에서 모든 멤버가 동시에 작업하는 모습을 지켜보세요. 옵트인 — team_mode.enabled를 켜고 재시작하세요.",
|
||||
"features": {
|
||||
"lead": {
|
||||
"title": "리드 오케스트레이션",
|
||||
"description": "코디네이터 한 명, 전문가 여럿. team_send_message와 team_task_create를 통한 실시간 메시징."
|
||||
},
|
||||
"parallel": {
|
||||
"title": "진짜 병렬성",
|
||||
"description": "최대 8명의 멤버가 동시 작업. 대기 없음, 큐 없음 — 모든 각도를 한 번에 커버."
|
||||
},
|
||||
"tmux": {
|
||||
"title": "Tmux 시각화",
|
||||
"description": "Focus와 grid 윈도우로 한 팀원에 집중하면서도 전체 그림을 놓치지 않습니다."
|
||||
},
|
||||
"tools": {
|
||||
"title": "team_* 도구 패밀리",
|
||||
"description": "12개 전용 도구(team_create, team_status, team_send_message, ...). team_mode.enabled 뒤에 게이팅."
|
||||
}
|
||||
},
|
||||
"poweredBy": "Team Mode 기반",
|
||||
"skills": {
|
||||
"hyperplan": {
|
||||
"name": "hyperplan",
|
||||
"description": "5명의 적대적 에이전트가 코드 한 줄 작성되기 전에 직교 각도에서 계획을 갈가리 분해합니다."
|
||||
},
|
||||
"securityResearch": {
|
||||
"name": "security-research",
|
||||
"description": "3명의 취약점 헌터 + 2명의 PoC 엔지니어가 코드베이스를 감사. 실제 익스플로잇 가능성으로 심각도 보정."
|
||||
}
|
||||
},
|
||||
"optIn": "team_mode.enabled = true → opencode 재시작",
|
||||
"tagline": "기본은 OFF. 켜면 압도적."
|
||||
},
|
||||
"agents": {
|
||||
"title": "특화 에이전트",
|
||||
"subtitle": "각 태스크에 최적화된 프롬프트와 툴셋으로 무장한 전문가들입니다.",
|
||||
"oracle": {
|
||||
"name": "Oracle",
|
||||
"role": "아키텍처 컨설턴트",
|
||||
"model": "GPT 5.4 High",
|
||||
"role": "Architecture Consultant",
|
||||
"model": "GPT 5.5 High",
|
||||
"description": "복잡한 디버깅과 아키텍처 결정. 길이 보이지 않을 때."
|
||||
},
|
||||
"librarian": {
|
||||
"name": "Librarian",
|
||||
"role": "문서 & 코드 검색",
|
||||
"model": "MiniMax M2.5",
|
||||
"role": "Docs & Code Search",
|
||||
"model": "GPT 5.4 Mini Fast",
|
||||
"description": "실제 GitHub 예제와 공식 문서를 찾습니다. 증거 기반, 퍼머링크 제공."
|
||||
},
|
||||
"explore": {
|
||||
"name": "Explore",
|
||||
"role": "코드베이스 탐색",
|
||||
"model": "MiniMax M2.5",
|
||||
"role": "Codebase Grep",
|
||||
"model": "GPT 5.4 Mini Fast",
|
||||
"description": "초고속 코드베이스 검색. 저렴하고 빠르며, 항상 백그라운드에서 실행."
|
||||
},
|
||||
"metis": {
|
||||
"name": "Metis",
|
||||
"role": "계획 컨설턴트",
|
||||
"model": "Claude Opus 4.6",
|
||||
"role": "Plan Consultant",
|
||||
"model": "Claude Sonnet 4.6",
|
||||
"description": "계획의 모호함이 프로덕션 버그로 이어지기 전에 차단합니다."
|
||||
},
|
||||
"momus": {
|
||||
"name": "Momus",
|
||||
"role": "계획 검토자",
|
||||
"model": "GPT 5.4",
|
||||
"role": "Plan Reviewer",
|
||||
"model": "GPT 5.5 xHigh",
|
||||
"description": "무자비한 검증. 계획이 완벽하지 않으면 승인하지 않습니다."
|
||||
},
|
||||
"dynamicSystem": {
|
||||
|
||||
+45
-8
@@ -79,7 +79,7 @@
|
||||
},
|
||||
"boulderTitle": "Session Continuity",
|
||||
"boulderDescription": "活跃工作被记录在 boulder.json 中。停电?系统崩溃?没关系。从你停下的地方精确恢复。",
|
||||
"model": "Claude Opus 4.6 Max"
|
||||
"model": "Claude Opus 4.7 Max"
|
||||
},
|
||||
"prometheusAtlas": {
|
||||
"badge": "编排工作流",
|
||||
@@ -88,7 +88,7 @@
|
||||
"prometheus": {
|
||||
"name": "Prometheus",
|
||||
"role": "Strategic Planner",
|
||||
"model": "Claude Opus 4.6 Max",
|
||||
"model": "Claude Opus 4.7 Max",
|
||||
"description": "架构师。与你访谈,探索代码库,并创建详细的执行计划。从不写代码。使用 Metis 和 Momus 作为质量关卡。",
|
||||
"features": [
|
||||
"智能访谈模式",
|
||||
@@ -139,7 +139,44 @@
|
||||
"verify": "VERIFY — 证明有效"
|
||||
},
|
||||
"tagline": "当足够好还不够时。",
|
||||
"model": "GPT 5.3 Codex Medium"
|
||||
"model": "GPT 5.5 Medium"
|
||||
},
|
||||
"teamMode": {
|
||||
"badge": "NEW · v4.0",
|
||||
"title": "Team Mode",
|
||||
"headline": "多个 Agent。并排运行。真正并行。",
|
||||
"description": "一个领导 Agent 协调一队按类别专业化的成员,全部并行运行,通过专用工具实时通信。在 tmux 中同时观察每个成员工作。选择性启用 — 翻转 team_mode.enabled 并重启。",
|
||||
"features": {
|
||||
"lead": {
|
||||
"title": "领导编排",
|
||||
"description": "一个协调者,多个专家。通过 team_send_message 和 team_task_create 进行实时消息传递。"
|
||||
},
|
||||
"parallel": {
|
||||
"title": "真正的并行",
|
||||
"description": "最多 8 个成员同时工作。无等待,无队列 — 所有角度一次覆盖。"
|
||||
},
|
||||
"tmux": {
|
||||
"title": "Tmux 可视化",
|
||||
"description": "Focus 和 grid 窗口让你聚焦一名队员的同时不失全局视野。"
|
||||
},
|
||||
"tools": {
|
||||
"title": "team_* 工具家族",
|
||||
"description": "12 个专用工具(team_create、team_status、team_send_message、…),在 team_mode.enabled 后启用。"
|
||||
}
|
||||
},
|
||||
"poweredBy": "由 Team Mode 驱动",
|
||||
"skills": {
|
||||
"hyperplan": {
|
||||
"name": "hyperplan",
|
||||
"description": "5 个敌对 Agent 在写一行代码前,从正交角度撕碎你的计划。"
|
||||
},
|
||||
"securityResearch": {
|
||||
"name": "security-research",
|
||||
"description": "3 个漏洞猎手 + 2 个 PoC 工程师审计你的代码库。严重性按实际可利用性校准。"
|
||||
}
|
||||
},
|
||||
"optIn": "team_mode.enabled = true → 重启 opencode",
|
||||
"tagline": "默认关闭。开启时具有毁灭性。"
|
||||
},
|
||||
"agents": {
|
||||
"title": "Specialized Agents",
|
||||
@@ -147,31 +184,31 @@
|
||||
"oracle": {
|
||||
"name": "Oracle",
|
||||
"role": "Architecture Consultant",
|
||||
"model": "GPT 5.4 High",
|
||||
"model": "GPT 5.5 High",
|
||||
"description": "复杂调试和架构决策。当前路不明时。"
|
||||
},
|
||||
"librarian": {
|
||||
"name": "Librarian",
|
||||
"role": "Docs & Code Search",
|
||||
"model": "MiniMax M2.5",
|
||||
"model": "GPT 5.4 Mini Fast",
|
||||
"description": "寻找真正的 GitHub 示例和官方文档。基于证据,附带永久链接。"
|
||||
},
|
||||
"explore": {
|
||||
"name": "Explore",
|
||||
"role": "Codebase Grep",
|
||||
"model": "MiniMax M2.5",
|
||||
"model": "GPT 5.4 Mini Fast",
|
||||
"description": "超高速代码库搜索。便宜、并行、始终在后台运行。"
|
||||
},
|
||||
"metis": {
|
||||
"name": "Metis",
|
||||
"role": "Plan Consultant",
|
||||
"model": "Claude Opus 4.6 Max",
|
||||
"model": "Claude Sonnet 4.6",
|
||||
"description": "在计划中的歧义变成生产 Bug 之前捕获它们。"
|
||||
},
|
||||
"momus": {
|
||||
"name": "Momus",
|
||||
"role": "Plan Reviewer",
|
||||
"model": "GPT 5.4 Extra High",
|
||||
"model": "GPT 5.5 xHigh",
|
||||
"description": "严苛验证。只有当计划无懈可击时才批准。"
|
||||
},
|
||||
"dynamicSystem": {
|
||||
|
||||
@@ -6,6 +6,9 @@ const nextConfig: NextConfig = {
|
||||
turbopack: {
|
||||
root: __dirname,
|
||||
},
|
||||
experimental: {
|
||||
optimizeCss: true,
|
||||
},
|
||||
}
|
||||
|
||||
const withNextIntl = createNextIntlPlugin()
|
||||
|
||||
+8
-1
@@ -37,6 +37,12 @@
|
||||
"tailwind-merge": "^3.5.0",
|
||||
"tailwindcss-animate": "^1.0.7"
|
||||
},
|
||||
"browserslist": [
|
||||
"chrome >= 100",
|
||||
"firefox >= 100",
|
||||
"safari >= 15",
|
||||
"edge >= 100"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@opennextjs/cloudflare": "^1.19.8",
|
||||
"@playwright/test": "1.59.1",
|
||||
@@ -44,6 +50,7 @@
|
||||
"@types/node": "^25.6.2",
|
||||
"@types/react": "^19.2.14",
|
||||
"@types/react-dom": "^19.2.3",
|
||||
"critters": "^0.0.25",
|
||||
"eslint": "^10.3.0",
|
||||
"eslint-config-next": "15.5.18",
|
||||
"eslint-config-prettier": "10.1.8",
|
||||
@@ -53,8 +60,8 @@
|
||||
"prettier": "3.8.3",
|
||||
"prettier-plugin-tailwindcss": "^0.8.0",
|
||||
"tailwindcss": "4.2.4",
|
||||
"typescript-eslint": "^8.59.2",
|
||||
"typescript": "6.0.3",
|
||||
"typescript-eslint": "^8.59.2",
|
||||
"wrangler": "^4.90.0"
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.3 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
Reference in New Issue
Block a user