oh-my-opencode-slim 2.0.0-beta.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.ja-JP.md +86 -32
  2. package/README.ko-KR.md +690 -0
  3. package/README.md +118 -45
  4. package/README.zh-CN.md +97 -37
  5. package/dist/cli/background-subagents.d.ts +13 -0
  6. package/dist/cli/companion.d.ts +4 -0
  7. package/dist/cli/index.d.ts +2 -1
  8. package/dist/cli/index.js +624 -96
  9. package/dist/cli/install.d.ts +6 -1
  10. package/dist/cli/providers.d.ts +2 -1
  11. package/dist/cli/types.d.ts +8 -0
  12. package/dist/companion/manager.d.ts +38 -0
  13. package/dist/config/constants.d.ts +4 -1
  14. package/dist/config/fallback-chains.d.ts +1 -0
  15. package/dist/config/schema.d.ts +46 -40
  16. package/dist/hooks/auto-update-checker/checker.d.ts +7 -1
  17. package/dist/hooks/auto-update-checker/constants.d.ts +1 -0
  18. package/dist/hooks/auto-update-checker/types.d.ts +10 -0
  19. package/dist/hooks/index.d.ts +0 -2
  20. package/dist/hooks/json-error-recovery/hook.d.ts +1 -1
  21. package/dist/hooks/phase-reminder/index.d.ts +1 -1
  22. package/dist/index.js +1996 -2132
  23. package/dist/mcp/grep-app.d.ts +1 -1
  24. package/dist/multiplexer/zellij/index.d.ts +17 -3
  25. package/dist/tools/cancel-task.d.ts +16 -0
  26. package/dist/tools/index.d.ts +1 -0
  27. package/dist/tools/preset-manager.d.ts +6 -7
  28. package/dist/tui.js +71 -32
  29. package/dist/utils/background-job-board.d.ts +40 -0
  30. package/dist/utils/index.d.ts +0 -1
  31. package/dist/utils/task.d.ts +2 -0
  32. package/oh-my-opencode-slim.schema.json +34 -91
  33. package/package.json +4 -3
  34. package/src/skills/codemap.md +3 -1
  35. package/src/skills/deepwork/SKILL.md +25 -3
  36. package/src/skills/oh-my-opencode-slim/SKILL.md +326 -0
  37. package/dist/divoom/council.gif +0 -0
  38. package/dist/divoom/designer.gif +0 -0
  39. package/dist/divoom/explorer.gif +0 -0
  40. package/dist/divoom/fixer.gif +0 -0
  41. package/dist/divoom/input.gif +0 -0
  42. package/dist/divoom/intro.gif +0 -0
  43. package/dist/divoom/librarian.gif +0 -0
  44. package/dist/divoom/manager.d.ts +0 -57
  45. package/dist/divoom/oracle.gif +0 -0
  46. package/dist/divoom/orchestrator.gif +0 -0
  47. package/dist/hooks/goal/index.d.ts +0 -38
  48. package/dist/hooks/todo-continuation/index.d.ts +0 -55
  49. package/dist/hooks/todo-continuation/todo-hygiene.d.ts +0 -35
  50. package/dist/utils/session-manager.d.ts +0 -55
package/README.ja-JP.md CHANGED
@@ -1,13 +1,13 @@
1
1
  <div align="center">
2
2
  <a href="https://github.com/alvinunreal/oh-my-opencode-slim/stargazers">
3
- <img src="img/v2beta.webp" alt="V2 Beta Release" style="border-radius: 10px;">
3
+ <img src="img/v2.webp" alt="oh-my-opencode-slim V2 Release" style="border-radius: 10px;">
4
4
  </a>
5
- <h3>✨ V2 ベータリリース:バックグラウンドオーケストレーションが登場 ✨</h3>
6
- <p><i>オーケストレーターがバックグラウンドで専門エージェントをスケジューリングし、<br><code>/deepwork</code> が大きなゴールをファイルに紐づいた計画へと変換します。<br>ベータテスターの皆様:フィードバックは Telegram でお寄せください。</i></p>
5
+ <h3>✨ oh-my-opencode-slim ✨</h3>
7
6
 
8
- <p><b>オープン・マルチエージェント・スイート</b> · あらゆるモデルを組み合わせ · タスクを自動委譲</p>
7
+ <p><i>コードの夜明けから七柱の神聖なる存在が現れました。それぞれが不朽の技の達人として、<br>あなたの命令を待ち、混沌から秩序を鍛え上げ、かつて不可能と思われたものを築きます。</i></p>
9
8
 
10
- <p><sub><b>Boring Dystopia Development</b> による開発</sub></p>
9
+ <p><b>Opencode マルチエージェントスイート</b> · 任意のモデルを組み合わせ · タスクを自動委譲</p>
10
+ <p><sub>by <b>Boring Dystopia Development</b></sub></p>
11
11
  <p>
12
12
  <a href="https://boringdystopia.ai/"><img src="https://img.shields.io/badge/boringdystopia.ai-111111?style=for-the-badge&logo=vercel&logoColor=white" alt="boringdystopia.ai"></a>&nbsp;
13
13
  <a href="https://x.com/alvinunreal"><img src="https://img.shields.io/badge/X-@alvinunreal-000000?style=for-the-badge&logo=x&logoColor=white" alt="X @alvinunreal"></a>&nbsp;
@@ -15,8 +15,11 @@
15
15
  </p>
16
16
 
17
17
  <p>
18
- <a href="README.md">English</a> | <a href="README.zh-CN.md">简体中文</a> | <b>日本語</b>
18
+ <a href="README.md">English</a> | <a href="README.zh-CN.md">简体中文</a> | <b>日本語</b> | <a href="README.ko-KR.md">한국어</a>
19
19
  </p>
20
+
21
+ <p><sub>✦ ✦ ✦</sub></p>
22
+
20
23
  </div>
21
24
 
22
25
  ---
@@ -45,22 +48,9 @@ Install and configure oh-my-opencode-slim: https://raw.githubusercontent.com/alv
45
48
  bunx oh-my-opencode-slim@latest install
46
49
  ```
47
50
 
48
- ### V2 バックグラウンドオーケストレーション・ベータ
49
-
50
- V2 では、オーケストレーターがデフォルトの実行ワーカーからスケジューラーへと役割を変えます。
51
- 作業を計画し、専門エージェントをバックグラウンドタスクとしてディスパッチし、ステータスをポーリングし、
52
- 結果を整合させてから処理を続行します。これには OpenCode のネイティブな
53
- バックグラウンドサブエージェントサポートが必要であり、ベータユーザーは実験的なフラグを
54
- 有効にして OpenCode を起動する必要があります。
55
-
56
- ```bash
57
- bunx oh-my-opencode-slim@beta install
58
- OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS=1 opencode
59
- ```
60
-
61
51
  ### はじめに
62
52
 
63
- インストーラーは OpenAI と OpenCode Go の両方のプリセットを生成し、デフォルトで OpenAI が有効になっています。OpenAI プリセットでは、判断力の高いエージェントに `openai/gpt-5.5` を、より高速でスコープの限定されたエージェントに `openai/gpt-5.4-mini` を使用します。インストール時に OpenCode Go をアクティブにするには `bunx oh-my-opencode-slim@latest install --preset=opencode-go` を実行するか、インストール後に `~/.config/opencode/oh-my-opencode-slim.json` のデフォルトプリセット名を変更してください。
53
+ インストーラーは OpenAI と OpenCode Go の両方のプリセットを生成し、デフォルトで OpenAI が有効になります。OpenAI はワークフローマネージャー/スケジューラーに `openai/gpt-5.5 (medium)`、Oracle に `openai/gpt-5.5 (high)`、Fixer `openai/gpt-5.5 (low)`、その他の専門家には `openai/gpt-5.4-mini` 系のバリアントを使用します。インストール時に OpenCode Go を有効にするには `bunx oh-my-opencode-slim@latest install --preset=opencode-go` を実行するか、インストール後に `~/.config/opencode/oh-my-opencode-slim.json` のデフォルトプリセット名を変更してください。
64
54
 
65
55
  次に:
66
56
 
@@ -75,11 +65,13 @@ OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS=1 opencode
75
65
  opencode models --refresh
76
66
  ```
77
67
  3. **プラグイン設定**を開きます: `~/.config/opencode/oh-my-opencode-slim.json`
68
+ カスタム OpenCode 設定ディレクトリを使っている場合は
69
+ `$OPENCODE_CONFIG_DIR/oh-my-opencode-slim.json`
78
70
 
79
71
  4. **各エージェントに使用したいモデルを更新します**
80
72
 
81
73
  > [!TIP]
82
- > 自動委譲の仕組みを理解しておくことを**推奨**します。**[Orchestrator のプロンプト](https://github.com/alvinunreal/oh-my-opencode-slim/blob/master/src/agents/orchestrator.ts#L28)** には、委譲ルール、専門エージェントへのルーティングロジック、メインエージェントがサブエージェントに作業を引き継ぐべきしきい値が記述されています。`@agentName <task>` のようにサブエージェントを呼び出すことで、いつでも手動で委譲できます。
74
+ > バックグラウンドオーケストレーションの仕組みを理解しておくことを**推奨**します。**[Orchestrator のプロンプト](https://github.com/alvinunreal/oh-my-opencode-slim/blob/master/src/agents/orchestrator.ts#L28)** には、スケジューラーのルール、専門エージェントへのルーティングロジック、作業をバックグラウンドエージェントへ割り当てるしきい値が記述されています。`@agentName <task>` のようにサブエージェントを呼び出すことで、いつでも手動で委譲できます。
83
75
 
84
76
  デフォルトで生成される設定には `openai` と `opencode-go` の両方のプリセットが含まれます。
85
77
 
@@ -89,18 +81,18 @@ OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS=1 opencode
89
81
  "preset": "openai",
90
82
  "presets": {
91
83
  "openai": {
92
- "orchestrator": { "model": "openai/gpt-5.5", "skills": ["*"], "mcps": ["*", "!context7"] },
84
+ "orchestrator": { "model": "openai/gpt-5.5", "variant": "medium", "skills": ["*"], "mcps": ["*", "!context7"] },
93
85
  "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": ["simplify"], "mcps": [] },
94
- "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
86
+ "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
95
87
  "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
96
88
  "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": [], "mcps": [] },
97
- "fixer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] }
89
+ "fixer": { "model": "openai/gpt-5.5", "variant": "low", "skills": [], "mcps": [] }
98
90
  },
99
91
  "opencode-go": {
100
92
  "orchestrator": { "model": "opencode-go/glm-5.1", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
101
93
  "oracle": { "model": "opencode-go/deepseek-v4-pro", "variant": "max", "skills": ["simplify"], "mcps": [] },
102
94
  "council": { "model": "opencode-go/deepseek-v4-pro", "variant": "high", "skills": [], "mcps": [] },
103
- "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "grep_app" ] },
95
+ "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "gh_grep" ] },
104
96
  "explorer": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [] },
105
97
  "designer": { "model": "opencode-go/kimi-k2.6", "variant": "medium", "skills": [], "mcps": [] },
106
98
  "fixer": { "model": "opencode-go/deepseek-v4-flash", "variant": "high", "skills": [], "mcps": [] }
@@ -141,6 +133,63 @@ ping all agents
141
133
 
142
134
  ---
143
135
 
136
+ ### V2 の新機能
137
+
138
+ V2 は oh-my-opencode-slim を、スケジューラー中心のマルチエージェントワークフローシステムへと進化させます。Orchestrator は計画、委譲、結果の整合、検証に集中し、専門エージェントはそれぞれの lane で作業を行います。
139
+
140
+ - **[バックグラウンドエージェント](#バックグラウンドエージェント)** — Orchestrator は専門家をバックグラウンドタスクとしてディスパッチし、タスク/セッション ID を追跡し、完了イベントを待ってから結果を整合します。
141
+ - **[Companion](#companion)** — 任意のフローティングデスクトップウィンドウが、並列実行中のバックグラウンド専門家を含め、現在アクティブなエージェントを表示します。
142
+ - **[Deepwork](#deepwork)** — 大規模、多ファイル、高リスク、または段階的なコーディング作業向けの構造化ワークフローです。永続的な計画ファイルと Oracle レビューゲートを使用します。
143
+ - **[oh-my-opencode-slim Skill](#oh-my-opencode-slim-skill)** — モデル、プロンプト、カスタムエージェント、MCP アクセス、プリセット、プラグイン動作を安全に調整するための同梱設定 skill です。
144
+
145
+ #### バックグラウンドエージェント
146
+
147
+ V2 では、バックグラウンド専門家が基本の考え方になります。Orchestrator は作業グラフを計画し、適切なエージェントを起動し、重複する書き込み所有権を避け、ターミナルタスクの結果を受け取ってから次の行動に進みます。
148
+
149
+ 完全なスケジューラーモデルは **[Background Orchestration](docs/v2-background-orchestration.md)** を参照してください。
150
+
151
+ #### Companion
152
+
153
+ 任意の Companion は、リアルタイムのエージェント活動を表示するフローティングデスクトップステータスウィンドウです。現在のセッション状態とアクティブなエージェントを表示するため、バックグラウンド作業を一目で追いやすくなります。
154
+
155
+ <div align="center">
156
+ <img src="img/companion.gif" alt="Companion showing active agents" width="600">
157
+ <p><i>左下のビジュアル Companion。</i></p>
158
+ </div>
159
+
160
+ 対話式インストールでは、インストーラーが Companion を有効にするか尋ね、デフォルトは `yes` です。自動化では明示的に有効化できます。
161
+
162
+ ```bash
163
+ bunx oh-my-opencode-slim@latest install --companion=yes
164
+ ```
165
+
166
+ 設定、位置、サイズ、インストール詳細は **[Companion](docs/companion.md)** を参照してください。
167
+
168
+ #### Deepwork
169
+
170
+ Deepwork は、大規模リファクタリング、多段階機能、高リスクなアーキテクチャ変更、または永続的な計画が必要な重いコーディングセッション向けです。ローカルの markdown 進捗ファイルを作成し、Oracle レビューゲートを使い、実装フェーズを構造化します。
171
+
172
+ 次のように開始します。
173
+
174
+ ```text
175
+ /deepwork <heavy coding task>
176
+ ```
177
+
178
+ いつ使うべきか、ワークフローがどのように動くかは **[Skills](docs/skills.md#deepwork)** を参照してください。
179
+
180
+ #### oh-my-opencode-slim Skill
181
+
182
+ 同梱の `oh-my-opencode-slim` skill は、Orchestrator がプラグイン自体を設定・改善するのを支援します。モデル調整、カスタムエージェント、プロンプト上書き、skill/MCP 権限、プリセット、任意エージェント、バックグラウンドオーケストレーション、繰り返し発生するワークフロー上の摩擦に利用できます。
183
+
184
+ <div align="center">
185
+ <img src="img/oh-my-opencode-skill.png" alt="oh-my-opencode-slim skill in use" width="600">
186
+ <p><i>同梱 skill にエージェント設定の調整と改善を依頼できます。</i></p>
187
+ </div>
188
+
189
+ 例と安全ルールは **[Skills](docs/skills.md#oh-my-opencode-slim)** を参照してください。
190
+
191
+ ---
192
+
144
193
  <a id="meet-the-pantheon"></a>
145
194
 
146
195
  ## 🏛️ パンテオン(神々)の紹介
@@ -501,15 +550,11 @@ ping all agents
501
550
  | **[Council](docs/council.md)** | 複数のモデルを並列実行し、`@council` で 1 つの回答に統合します |
502
551
  | **[Multiplexer Integration](docs/multiplexer-integration.md)** | エージェントの動作を Tmux や Zellij のペインでライブ表示します |
503
552
  | **[Session Management](docs/session-management.md)** | 短いエイリアスで最近の子エージェントセッションを再利用し、最初からやり直さずに済みます |
504
- | **[Session Goal](docs/session-goal.md)** | `/goal` でセッションの目標をピン留めし、TODO・委譲・検証の整合性を保ちます |
505
- | **[Todo Continuation](docs/todo-continuation.md)** | クールダウンと安全チェック付きで Orchestrator セッションを自動継続します |
506
553
  | **[Preset Switching](docs/preset-switching.md)** | `/preset` で実行時にエージェントモデルのプリセットを切り替えます |
507
554
  | **[Custom Agents](docs/configuration.md#custom-agents)** | カスタムプロンプト、モデル、MCP アクセス、Orchestrator の委譲ルールを備えた独自の専門エージェントを定義します |
508
- | **[Subtask](docs/subtask.md)** | `/subtask` で境界が明確な子ワーカーを実行し、構造化された要約をメインセッションに返します |
509
555
  | **[Codemap](docs/codemap.md)** | 階層的なコードマップを生成し、大規模コードベースを迅速に理解します |
510
556
  | **[Clonedeps](docs/clonedeps.md)** | 選択した依存関係のソースを ignore 済みのローカルワークスペースにクローンし、調査できるようにします |
511
- | **[Interview](docs/interview.md)** | ブラウザベースの Q&A フローで、ざっくりとしたアイデアを構造化された Markdown 仕様に変換します |
512
- | **[Divoom Display](docs/divoom.md)** | Orchestrator および専門エージェントの動作を Divoom MiniToo Bluetooth ディスプレイにミラーリングします |
557
+ | **[Interview](docs/interview.md)** | ブラウザベース의 Q&A フローで、ざっくりとしたアイデアを構造化された Markdown 仕様に変換します |
513
558
 
514
559
  ### ⚙️ 設定 & リファレンス
515
560
 
@@ -518,7 +563,7 @@ ping all agents
518
563
  | **[Configuration](docs/configuration.md)** | 設定ファイルの配置場所、JSONC サポート、プロンプトの上書き、全オプションのリファレンス |
519
564
  | **[Maintainer Guide](docs/maintainers.md)** | Issue のトリアージルール、ラベルの意味、サポートの振り分け、リポジトリ運用ワークフロー |
520
565
  | **[Skills](docs/skills.md)** | `simplify`、`codemap`、`clonedeps` などの同梱スキル |
521
- | **[MCPs](docs/mcps.md)** | `websearch`、`context7`、`grep_app`、およびエージェントごとの MCP 権限の仕組み |
566
+ | **[MCPs](docs/mcps.md)** | `websearch`、`context7`、`gh_grep`、およびエージェントごとの MCP 権限の仕組み |
522
567
  | **[Tools](docs/tools.md)** | `webfetch`、LSP ツール、コード検索、フォーマッターなどの組み込みツール機能 |
523
568
 
524
569
  ### 💡 プリセット
@@ -538,7 +583,7 @@ ping all agents
538
583
  <p><sub>マージされたすべての貢献は、この世界に痕跡を残します。</sub></p>
539
584
 
540
585
  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
541
- [![All Contributors](https://img.shields.io/badge/all_contributors-52-orange.svg?style=flat-square)](#contributors-)
586
+ [![All Contributors](https://img.shields.io/badge/all_contributors-59-orange.svg?style=flat-square)](#contributors-)
542
587
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
543
588
  </div>
544
589
 
@@ -618,6 +663,15 @@ ping all agents
618
663
  <td align="center" valign="top" width="16.66%"><a href="https://github.com/andrewylies"><img src="https://avatars.githubusercontent.com/u/103019336?v=4?s=100" width="100px;" alt="m.seomoon"/><br /><sub><b>m.seomoon</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=andrewylies" title="Code">💻</a></td>
619
664
  <td align="center" valign="top" width="16.66%"><a href="https://github.com/yolo2h"><img src="https://avatars.githubusercontent.com/u/10754850?v=4?s=100" width="100px;" alt="Yolo"/><br /><sub><b>Yolo</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=yolo2h" title="Code">💻</a></td>
620
665
  <td align="center" valign="top" width="16.66%"><a href="https://github.com/xinxingi"><img src="https://avatars.githubusercontent.com/u/49302071?v=4?s=100" width="100px;" alt="XinXing"/><br /><sub><b>XinXing</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=xinxingi" title="Code">💻</a></td>
666
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/eltociear"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt="Ikko Eltociear Ashimine"/><br /><sub><b>Ikko Eltociear Ashimine</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=eltociear" title="Code">💻</a></td>
667
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/dev-wantap"><img src="https://avatars.githubusercontent.com/u/69743540?v=4?s=100" width="100px;" alt="GWANWOO KIM"/><br /><sub><b>GWANWOO KIM</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=dev-wantap" title="Code">💻</a></td>
668
+ </tr>
669
+ <tr>
670
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/OmerFarukOruc"><img src="https://avatars.githubusercontent.com/u/7347742?v=4?s=100" width="100px;" alt="Omer Faruk Oruc"/><br /><sub><b>Omer Faruk Oruc</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=OmerFarukOruc" title="Code">💻</a></td>
671
+ <td align="center" valign="top" width="16.66%"><a href="https://khallaf.uk/"><img src="https://avatars.githubusercontent.com/u/51155980?v=4?s=100" width="100px;" alt="Omar Mohamed Khallaf"/><br /><sub><b>Omar Mohamed Khallaf</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=omar-mohamed-khallaf" title="Code">💻</a></td>
672
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/Qesire"><img src="https://avatars.githubusercontent.com/u/102657430?v=4?s=100" width="100px;" alt="Knowingthesea_Qesire"/><br /><sub><b>Knowingthesea_Qesire</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=Qesire" title="Code">💻</a></td>
673
+ <td align="center" valign="top" width="16.66%"><a href="http://www.flyinghail.net/"><img src="https://avatars.githubusercontent.com/u/157430?v=4?s=100" width="100px;" alt="FENG Hao"/><br /><sub><b>FENG Hao</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=flyinghail" title="Code">💻</a></td>
674
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/smatheusblu"><img src="https://avatars.githubusercontent.com/u/5666794?v=4?s=100" width="100px;" alt="Matheus Nogueira Silveira"/><br /><sub><b>Matheus Nogueira Silveira</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=smatheusblu" title="Code">💻</a></td>
621
675
  </tr>
622
676
  </tbody>
623
677
  </table>