verbalcoding 0.2.12 → 0.2.13

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 (169) hide show
  1. package/.env.example +74 -4
  2. package/README.es.md +3 -1
  3. package/README.fr.md +3 -1
  4. package/README.ja.md +3 -1
  5. package/README.ko.md +4 -2
  6. package/README.md +4 -2
  7. package/README.ru.md +3 -1
  8. package/README.zh.md +3 -1
  9. package/app-node/agent_adapters.test.mjs +14 -0
  10. package/app-node/agent_routing.mjs +148 -0
  11. package/app-node/agent_routing.test.mjs +138 -0
  12. package/app-node/agent_turn.mjs +86 -0
  13. package/app-node/agent_turn.test.mjs +109 -0
  14. package/app-node/bridge_context.mjs +73 -0
  15. package/app-node/bridge_context.test.mjs +54 -0
  16. package/app-node/bridge_state.mjs +4 -0
  17. package/app-node/bridge_wireup.test.mjs +462 -0
  18. package/app-node/cli_install.test.mjs +31 -0
  19. package/app-node/cross_agent_routing.test.mjs +78 -0
  20. package/app-node/discord_command_router.mjs +204 -0
  21. package/app-node/discord_command_router.test.mjs +311 -0
  22. package/app-node/discord_voice_setup.mjs +251 -0
  23. package/app-node/discord_voice_setup.test.mjs +86 -0
  24. package/app-node/hermes_profiles.test.mjs +12 -1
  25. package/app-node/install_config.mjs +110 -3
  26. package/app-node/install_config.test.mjs +8 -0
  27. package/app-node/instance_doctor.test.mjs +9 -0
  28. package/app-node/instances.test.mjs +8 -1
  29. package/app-node/main.mjs +488 -1368
  30. package/app-node/mcp_tools.test.mjs +7 -0
  31. package/app-node/notification_handler.mjs +89 -0
  32. package/app-node/notification_handler.test.mjs +187 -0
  33. package/app-node/plan_dispatcher.mjs +215 -0
  34. package/app-node/plan_dispatcher.test.mjs +101 -0
  35. package/app-node/plan_mode.mjs +36 -7
  36. package/app-node/plan_mode.test.mjs +78 -0
  37. package/app-node/progress_handler.mjs +220 -0
  38. package/app-node/progress_handler.test.mjs +193 -0
  39. package/app-node/progress_speech.mjs +54 -32
  40. package/app-node/progress_speech.test.mjs +12 -3
  41. package/app-node/project_sessions.mjs +5 -2
  42. package/app-node/project_sessions.test.mjs +7 -0
  43. package/app-node/research_mode.mjs +282 -0
  44. package/app-node/research_mode.test.mjs +264 -0
  45. package/app-node/restart_notice.mjs +3 -0
  46. package/app-node/restart_notice.test.mjs +11 -0
  47. package/app-node/session_ontology.mjs +271 -0
  48. package/app-node/session_ontology.test.mjs +130 -0
  49. package/app-node/smart_progress.mjs +1 -1
  50. package/app-node/stream_sentencer.mjs +32 -2
  51. package/app-node/stream_sentencer.test.mjs +65 -0
  52. package/app-node/streaming_tts_queue.mjs +5 -1
  53. package/app-node/streaming_tts_queue.test.mjs +7 -1
  54. package/app-node/stt_whisper.mjs +24 -0
  55. package/app-node/stt_whisper.test.mjs +32 -0
  56. package/app-node/text_routing.mjs +4 -2
  57. package/app-node/tts_backends.mjs +537 -3
  58. package/app-node/tts_backends.test.mjs +454 -0
  59. package/app-node/tts_player.mjs +164 -0
  60. package/app-node/tts_player.test.mjs +202 -0
  61. package/app-node/tts_runtime.mjs +134 -0
  62. package/app-node/tts_runtime.test.mjs +89 -0
  63. package/app-node/tts_settings.mjs +150 -3
  64. package/app-node/tts_settings.test.mjs +204 -0
  65. package/app-node/tts_voice_config.mjs +136 -2
  66. package/app-node/tts_voice_config.test.mjs +94 -0
  67. package/app-node/utterance_router.mjs +216 -0
  68. package/app-node/utterance_router.test.mjs +236 -0
  69. package/app-node/voice_autojoin.mjs +37 -0
  70. package/app-node/voice_autojoin.test.mjs +59 -0
  71. package/app-node/voice_io.mjs +272 -0
  72. package/app-node/voice_io.test.mjs +102 -0
  73. package/app-node/voice_turn_runner.mjs +449 -0
  74. package/app-node/voice_turn_runner.test.mjs +289 -0
  75. package/docs/CONFIGURATION.md +12 -2
  76. package/docs/HARNESSES.md +58 -0
  77. package/docs/HARNESS_AIDER.md +50 -0
  78. package/docs/HARNESS_CLAUDE.md +56 -0
  79. package/docs/HARNESS_CODEX.md +56 -0
  80. package/docs/HARNESS_CURSOR.md +45 -0
  81. package/docs/HARNESS_GEMINI.md +45 -0
  82. package/docs/HARNESS_HERMES.md +57 -0
  83. package/docs/HARNESS_OPENCLAW.md +44 -0
  84. package/docs/HARNESS_OPENCODE.md +44 -0
  85. package/docs/README.md +1 -0
  86. package/docs/ROADMAP.md +20 -5
  87. package/docs/TTS_BACKENDS.md +227 -0
  88. package/docs/USAGE.md +22 -0
  89. package/docs/i18n/AGENTS.es.md +34 -0
  90. package/docs/i18n/AGENTS.fr.md +34 -0
  91. package/docs/i18n/AGENTS.ja.md +34 -0
  92. package/docs/i18n/AGENTS.ko.md +34 -0
  93. package/docs/i18n/AGENTS.ru.md +34 -0
  94. package/docs/i18n/AGENTS.zh.md +34 -0
  95. package/docs/i18n/HARNESSES.es.md +58 -0
  96. package/docs/i18n/HARNESSES.fr.md +58 -0
  97. package/docs/i18n/HARNESSES.ja.md +58 -0
  98. package/docs/i18n/HARNESSES.ko.md +58 -0
  99. package/docs/i18n/HARNESSES.ru.md +58 -0
  100. package/docs/i18n/HARNESSES.zh.md +58 -0
  101. package/docs/i18n/HARNESS_AIDER.es.md +48 -0
  102. package/docs/i18n/HARNESS_AIDER.fr.md +48 -0
  103. package/docs/i18n/HARNESS_AIDER.ja.md +50 -0
  104. package/docs/i18n/HARNESS_AIDER.ko.md +50 -0
  105. package/docs/i18n/HARNESS_AIDER.ru.md +48 -0
  106. package/docs/i18n/HARNESS_AIDER.zh.md +48 -0
  107. package/docs/i18n/HARNESS_CLAUDE.es.md +55 -0
  108. package/docs/i18n/HARNESS_CLAUDE.fr.md +55 -0
  109. package/docs/i18n/HARNESS_CLAUDE.ja.md +56 -0
  110. package/docs/i18n/HARNESS_CLAUDE.ko.md +56 -0
  111. package/docs/i18n/HARNESS_CLAUDE.ru.md +55 -0
  112. package/docs/i18n/HARNESS_CLAUDE.zh.md +56 -0
  113. package/docs/i18n/HARNESS_CODEX.es.md +55 -0
  114. package/docs/i18n/HARNESS_CODEX.fr.md +55 -0
  115. package/docs/i18n/HARNESS_CODEX.ja.md +56 -0
  116. package/docs/i18n/HARNESS_CODEX.ko.md +56 -0
  117. package/docs/i18n/HARNESS_CODEX.ru.md +55 -0
  118. package/docs/i18n/HARNESS_CODEX.zh.md +56 -0
  119. package/docs/i18n/HARNESS_CURSOR.es.md +42 -0
  120. package/docs/i18n/HARNESS_CURSOR.fr.md +42 -0
  121. package/docs/i18n/HARNESS_CURSOR.ja.md +45 -0
  122. package/docs/i18n/HARNESS_CURSOR.ko.md +45 -0
  123. package/docs/i18n/HARNESS_CURSOR.ru.md +42 -0
  124. package/docs/i18n/HARNESS_CURSOR.zh.md +42 -0
  125. package/docs/i18n/HARNESS_GEMINI.es.md +44 -0
  126. package/docs/i18n/HARNESS_GEMINI.fr.md +44 -0
  127. package/docs/i18n/HARNESS_GEMINI.ja.md +45 -0
  128. package/docs/i18n/HARNESS_GEMINI.ko.md +45 -0
  129. package/docs/i18n/HARNESS_GEMINI.ru.md +44 -0
  130. package/docs/i18n/HARNESS_GEMINI.zh.md +45 -0
  131. package/docs/i18n/HARNESS_HERMES.es.md +54 -0
  132. package/docs/i18n/HARNESS_HERMES.fr.md +54 -0
  133. package/docs/i18n/HARNESS_HERMES.ja.md +57 -0
  134. package/docs/i18n/HARNESS_HERMES.ko.md +57 -0
  135. package/docs/i18n/HARNESS_HERMES.ru.md +54 -0
  136. package/docs/i18n/HARNESS_HERMES.zh.md +57 -0
  137. package/docs/i18n/HARNESS_OPENCLAW.es.md +41 -0
  138. package/docs/i18n/HARNESS_OPENCLAW.fr.md +41 -0
  139. package/docs/i18n/HARNESS_OPENCLAW.ja.md +44 -0
  140. package/docs/i18n/HARNESS_OPENCLAW.ko.md +44 -0
  141. package/docs/i18n/HARNESS_OPENCLAW.ru.md +41 -0
  142. package/docs/i18n/HARNESS_OPENCLAW.zh.md +42 -0
  143. package/docs/i18n/HARNESS_OPENCODE.es.md +41 -0
  144. package/docs/i18n/HARNESS_OPENCODE.fr.md +41 -0
  145. package/docs/i18n/HARNESS_OPENCODE.ja.md +44 -0
  146. package/docs/i18n/HARNESS_OPENCODE.ko.md +44 -0
  147. package/docs/i18n/HARNESS_OPENCODE.ru.md +41 -0
  148. package/docs/i18n/HARNESS_OPENCODE.zh.md +44 -0
  149. package/docs/superpowers/plans/2026-05-14-cross-agent-voice-transfer.md +625 -0
  150. package/docs/superpowers/plans/2026-05-21-audio-overview-narrated-diffs.md +95 -0
  151. package/docs/superpowers/plans/2026-05-21-autoresearch-ontology.md +83 -0
  152. package/docs/superpowers/plans/2026-05-21-phase11-push-to-talk-wakeword-v2.md +77 -0
  153. package/docs/superpowers/plans/2026-05-21-phase12-multi-user-voice.md +147 -0
  154. package/docs/superpowers/plans/2026-05-21-phase14-verbalbench.md +136 -0
  155. package/docs/superpowers/plans/2026-05-21-phase15-phone-companion.md +72 -0
  156. package/integrations/fireredtts2/mlx_llm.py +183 -0
  157. package/integrations/fireredtts2/synth.py +156 -0
  158. package/integrations/fireredtts2/synth_mlx.py +196 -0
  159. package/integrations/mlxaudio/synth.py +74 -0
  160. package/integrations/neuttsair/synth.py +104 -0
  161. package/integrations/omnivoice/synth.py +110 -0
  162. package/package.json +6 -1
  163. package/scripts/cli.mjs +84 -0
  164. package/scripts/doctor.mjs +104 -4
  165. package/scripts/install.mjs +5 -1
  166. package/scripts/install_fireredtts2.sh +109 -0
  167. package/scripts/install_mlxaudio.sh +34 -0
  168. package/scripts/install_mossttsnano.sh +46 -0
  169. package/scripts/postinstall.mjs +34 -0
@@ -0,0 +1,55 @@
1
+ # Codex — Заметки по harness
2
+
3
+ <p align="center">
4
+ <a href="../../README.ru.md">README</a> ·
5
+ <a href="HARNESSES.ru.md">Harness-ы</a> ·
6
+ <a href="USAGE.ru.md">Использование</a> ·
7
+ <a href="CONFIGURATION.ru.md">Настройка</a>
8
+ </p>
9
+
10
+ Codex CLI — терминальный кодинг-агент OpenAI. VerbalCoding вызывает его через `codex exec`. Поскольку `codex exec` пишет финальный текст ассистента во временный файл при `--output-last-message <path>`, адаптер вставляет этот флаг автоматически и читает ответ из файла, даже если stdout шумный.
11
+
12
+ ## Установка
13
+
14
+ ```bash
15
+ npm install -g @openai/codex
16
+ codex login # либо OPENAI_API_KEY для headless
17
+ codex exec "hello"
18
+ ```
19
+
20
+ ## Настройка
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=codex
25
+ CODEX_COMMAND="codex exec"
26
+ AGENT_PROJECT_CONTEXT="Что делаем, что уже решено."
27
+ AGENT_WORKDIR=/Users/you/code/your-project
28
+ AGENT_CHAT_TIMEOUT_MS=45000
29
+ AGENT_TASK_TIMEOUT_MS=0
30
+ ```
31
+
32
+ `AGENT_SESSION_FILE` не используется (Codex `exec` stateless).
33
+
34
+ ## Захват вывода
35
+
36
+ Для Codex адаптер:
37
+
38
+ 1. Создаёт временный путь `verbalcoding-codex-last-<pid>-<ts>.txt` в `os.tmpdir()`.
39
+ 2. Вставляет `--output-last-message <path>` прямо перед последним позиционным аргументом.
40
+ 3. После запуска читает этот файл как авторитетный ответ (приоритетнее stdout).
41
+ 4. Удаляет временный файл.
42
+
43
+ Даже если Codex льёт tool-use в stdout, в голос идёт ответ из захваченного файла.
44
+
45
+ ## Голосовые фразы для переключения на Codex
46
+
47
+ - en: `"switch to Codex"`, `"ask Codex what it thinks"`
48
+ - ru: `"переключись на Codex"`, `"спроси Codex"`
49
+
50
+ ## Подводные камни
51
+
52
+ - **Долгие задачи.** Ставьте `AGENT_TASK_TIMEOUT_MS=0` под кодогенерацию на минуты. `signal.aborted` уважается — barge-in режет чисто.
53
+ - **Нет возобновления.** Передавайте контекст через `AGENT_PROJECT_CONTEXT`, после смены маршрута — блок hand-off.
54
+ - **Защита от patch-вывода.** Если turn прерван во время diff, мост не зачитывает diff и отправляет в текстовый канал.
55
+ - **Авторизация.** 401 идёт как non-zero exit; fallback на дефолт, если Codex не был дефолтом.
@@ -0,0 +1,56 @@
1
+ # Codex — Harness 说明
2
+
3
+ <p align="center">
4
+ <a href="../../README.zh.md">README</a> ·
5
+ <a href="HARNESSES.zh.md">Harness</a> ·
6
+ <a href="USAGE.zh.md">使用</a> ·
7
+ <a href="CONFIGURATION.zh.md">配置</a>
8
+ </p>
9
+
10
+ Codex CLI 是 OpenAI 的终端编码代理。VerbalCoding 通过 `codex exec` 驱动。`codex exec` 在带 `--output-last-message <path>` 时会把最终助手文本写到临时文件,适配器会自动插入此标志,并从文件可靠读取答案,即便 stdout 嘈杂。
11
+
12
+ ## 安装
13
+
14
+ ```bash
15
+ npm install -g @openai/codex
16
+ codex login # 或 headless 设 OPENAI_API_KEY
17
+ codex exec "hello"
18
+ ```
19
+
20
+ ## VerbalCoding 配置
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=codex
25
+ # 可选
26
+ CODEX_COMMAND="codex exec" # 默认
27
+ AGENT_PROJECT_CONTEXT="工作内容与已定事项。"
28
+ AGENT_WORKDIR=/Users/you/code/your-project
29
+ AGENT_CHAT_TIMEOUT_MS=45000
30
+ AGENT_TASK_TIMEOUT_MS=0
31
+ ```
32
+
33
+ `AGENT_SESSION_FILE` 未使用 (Codex `exec` 跨调用无状态)。
34
+
35
+ ## 输出抓取
36
+
37
+ 针对 Codex,适配器:
38
+
39
+ 1. 在 `os.tmpdir()` 下生成临时路径 `verbalcoding-codex-last-<pid>-<ts>.txt`。
40
+ 2. 在最终 prompt 实参前插入 `--output-last-message <path>`。
41
+ 3. 运行后读取该文件作为权威答案 (优先于 stdout)。
42
+ 4. 删除临时文件。
43
+
44
+ 即使 Codex 在 stdout 输出工具使用记录,语音回答仍来自抓取文件。
45
+
46
+ ## 切到 Codex 的语音表述
47
+
48
+ - en: `"switch to Codex"`、`"ask Codex what it thinks"`
49
+ - zh: `"切到 Codex"`、`"问 Codex"`
50
+
51
+ ## 坑
52
+
53
+ - **长任务。** 长达分钟级的代码生成需要 `AGENT_TASK_TIMEOUT_MS=0`。适配器尊重 `signal.aborted`,barge-in 切得干净。
54
+ - **无会话续接。** 用 `AGENT_PROJECT_CONTEXT` 传递上下文,路由变化后的连续性靠跨代理 handoff 块。
55
+ - **patch 输出安全。** 中断时若 Codex 正发 diff,bridge 不会朗读 diff,只播报 "已中断" 并提示查看文本频道。
56
+ - **认证。** OpenAI 后端 401 以非零退出;非默认后端时 fallback 提示改用默认代理。
@@ -0,0 +1,42 @@
1
+ # Cursor CLI — Notas del Harness
2
+
3
+ <p align="center">
4
+ <a href="../../README.es.md">README</a> ·
5
+ <a href="HARNESSES.es.md">Harnesses</a> ·
6
+ <a href="USAGE.es.md">Uso</a> ·
7
+ <a href="CONFIGURATION.es.md">Configuración</a>
8
+ </p>
9
+
10
+ Cursor CLI (`cursor-agent`) es el agente de terminal de Cursor. VerbalCoding lo invoca con `cursor-agent --print --prompt`, pasando la transcripción como valor de `--prompt`. `--print` mantiene la corrida no interactiva.
11
+
12
+ ## Instalación
13
+
14
+ ```bash
15
+ cursor-agent --print --prompt "hello"
16
+ ```
17
+
18
+ ## Configuración
19
+
20
+ ```bash
21
+ # .env
22
+ AGENT_BACKEND=cursor # alias 'cursor-cli' aceptado
23
+ CURSOR_COMMAND="cursor-agent --print --prompt"
24
+ AGENT_PROJECT_CONTEXT="..."
25
+ AGENT_WORKDIR=/Users/you/code/your-project
26
+ AGENT_CHAT_TIMEOUT_MS=45000
27
+ AGENT_TASK_TIMEOUT_MS=0
28
+ ```
29
+
30
+ ## Frases de voz para cambiar a Cursor
31
+
32
+ - en: `"switch to Cursor"`, `"switch to cursor cli"`, `"switch to cursor agent"`
33
+ - es: `"cambia a Cursor"`
34
+
35
+ Alias: `cursor`, `cursor cli`, `cursor-cli`, `cursor agent`, `cursor-agent`.
36
+
37
+ ## Trampas
38
+
39
+ - **Posición del prompt.** `--prompt` espera el valor a continuación; el constructor de argv coloca la transcripción al final, así que `CURSOR_COMMAND` debe terminar en `--prompt`.
40
+ - **Efectos colaterales del editor.** Cursor CLI puede tocar ficheros de estado en el cwd; aísla con `AGENT_WORKDIR`.
41
+ - **Sin reanudación.** `AGENT_PROJECT_CONTEXT` + bloque de handoff para continuidad.
42
+ - **Patch safety.** Si se interrumpe en medio de un diff, no se lee en voz.
@@ -0,0 +1,42 @@
1
+ # Cursor CLI — Notes Harness
2
+
3
+ <p align="center">
4
+ <a href="../../README.fr.md">README</a> ·
5
+ <a href="HARNESSES.fr.md">Harnesses</a> ·
6
+ <a href="USAGE.fr.md">Utilisation</a> ·
7
+ <a href="CONFIGURATION.fr.md">Configuration</a>
8
+ </p>
9
+
10
+ Cursor CLI (`cursor-agent`) est l'agent terminal de Cursor. VerbalCoding l'invoque via `cursor-agent --print --prompt`, en passant la transcription comme valeur de `--prompt`. `--print` maintient le run non interactif.
11
+
12
+ ## Installation
13
+
14
+ ```bash
15
+ cursor-agent --print --prompt "hello"
16
+ ```
17
+
18
+ ## Configuration
19
+
20
+ ```bash
21
+ # .env
22
+ AGENT_BACKEND=cursor # alias 'cursor-cli' accepté
23
+ CURSOR_COMMAND="cursor-agent --print --prompt"
24
+ AGENT_PROJECT_CONTEXT="..."
25
+ AGENT_WORKDIR=/Users/you/code/your-project
26
+ AGENT_CHAT_TIMEOUT_MS=45000
27
+ AGENT_TASK_TIMEOUT_MS=0
28
+ ```
29
+
30
+ ## Phrases vocales pour basculer vers Cursor
31
+
32
+ - en: `"switch to Cursor"`, `"switch to cursor cli"`, `"switch to cursor agent"`
33
+ - fr: `"passe à Cursor"`
34
+
35
+ Alias : `cursor`, `cursor cli`, `cursor-cli`, `cursor agent`, `cursor-agent`.
36
+
37
+ ## Pièges
38
+
39
+ - **Position du prompt.** `--prompt` attend la valeur juste après ; le builder argv place la transcription en dernier, donc `CURSOR_COMMAND` doit se terminer par `--prompt`.
40
+ - **Effets de bord éditeur.** Cursor CLI peut toucher des fichiers d'état dans le cwd ; isolez via `AGENT_WORKDIR`.
41
+ - **Pas de reprise.** `AGENT_PROJECT_CONTEXT` + bloc de handoff pour la continuité.
42
+ - **Patch safety.** Aucune lecture vocale du diff en cas d'interruption.
@@ -0,0 +1,45 @@
1
+ # Cursor CLI — ハーネスノート
2
+
3
+ <p align="center">
4
+ <a href="../../README.ja.md">README</a> ·
5
+ <a href="HARNESSES.ja.md">ハーネス</a> ·
6
+ <a href="USAGE.ja.md">使い方</a> ·
7
+ <a href="CONFIGURATION.ja.md">設定</a>
8
+ </p>
9
+
10
+ Cursor CLI (`cursor-agent`) は Cursor のターミナルエージェント。VerbalCoding は `cursor-agent --print --prompt` で呼び出し、STT 結果を prompt 値として渡します。`--print` は非対話実行を維持。
11
+
12
+ ## インストール
13
+
14
+ 上流 Cursor CLI インストールガイドに従い、確認:
15
+
16
+ ```bash
17
+ cursor-agent --print --prompt "hello"
18
+ ```
19
+
20
+ ## VerbalCoding 設定
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=cursor # 'cursor-cli' エイリアス可
25
+ # 任意
26
+ CURSOR_COMMAND="cursor-agent --print --prompt" # 既定
27
+ AGENT_PROJECT_CONTEXT="..."
28
+ AGENT_WORKDIR=/Users/you/code/your-project
29
+ AGENT_CHAT_TIMEOUT_MS=45000
30
+ AGENT_TASK_TIMEOUT_MS=0
31
+ ```
32
+
33
+ ## Cursor へ切り替える音声表現
34
+
35
+ - en: `"switch to Cursor"`, `"ask Cursor ..."`, `"switch to cursor cli"`, `"switch to cursor agent"`
36
+ - ja: `"Cursor に切り替えて"`, `"Cursor に聞いて"`
37
+
38
+ エイリアス: `cursor`, `cursor cli`, `cursor-cli`, `cursor agent`, `cursor-agent`。
39
+
40
+ ## 罠
41
+
42
+ - **prompt 位置。** `--prompt` は値を後続させるため、VerbalCoding の shell 認識 argv ビルダーが STT 結果を最後の positional 引数に置きます。`CURSOR_COMMAND` は `--prompt` で終わる必要あり。
43
+ - **エディタ副作用。** Cursor CLI はワーキングディレクトリに cursor 関連状態ファイルを書く可能性。音声専用フローで意外な場合は分離プロジェクトディレクトリを `AGENT_WORKDIR` に設定。
44
+ - **セッション再開なし。** ターン間連続性は `AGENT_PROJECT_CONTEXT` と、他ハーネスから戻る際のクロスエージェントハンドオフブロックに依存。
45
+ - **patch 安全策。** Cursor が diff 中に中断された場合、bridge は diff を読み上げません。
@@ -0,0 +1,45 @@
1
+ # Cursor CLI — 하니스 노트
2
+
3
+ <p align="center">
4
+ <a href="../../README.ko.md">README</a> ·
5
+ <a href="HARNESSES.ko.md">하니스</a> ·
6
+ <a href="USAGE.ko.md">사용법</a> ·
7
+ <a href="CONFIGURATION.ko.md">설정</a>
8
+ </p>
9
+
10
+ Cursor CLI(`cursor-agent`)는 Cursor의 터미널 에이전트. VerbalCoding은 `cursor-agent --print --prompt`로 호출하면서 STT 결과를 prompt 값으로 넘겨. `--print`는 실행을 non-interactive로 유지.
11
+
12
+ ## 설치
13
+
14
+ 상위 Cursor CLI 설치 가이드를 따르고 확인:
15
+
16
+ ```bash
17
+ cursor-agent --print --prompt "hello"
18
+ ```
19
+
20
+ ## VerbalCoding 설정
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=cursor # 'cursor-cli' 별칭도 허용
25
+ # 선택
26
+ CURSOR_COMMAND="cursor-agent --print --prompt" # 기본값
27
+ AGENT_PROJECT_CONTEXT="..."
28
+ AGENT_WORKDIR=/Users/you/code/your-project
29
+ AGENT_CHAT_TIMEOUT_MS=45000
30
+ AGENT_TASK_TIMEOUT_MS=0
31
+ ```
32
+
33
+ ## Cursor로 전환하는 음성 표현
34
+
35
+ - en: `"switch to Cursor"`, `"ask Cursor ..."`, `"switch to cursor cli"`, `"switch to cursor agent"`
36
+ - ko: `"커서로 전환"`, `"cursor한테 물어봐"`
37
+
38
+ 매처가 받는 별칭: `cursor`, `cursor cli`, `cursor-cli`, `cursor agent`, `cursor-agent`.
39
+
40
+ ## 함정
41
+
42
+ - **Prompt 위치.** `--prompt`는 값을 뒤에 받는데, VerbalCoding의 shell-aware argv 빌더가 STT 결과를 마지막 positional 인자로 두니까 `CURSOR_COMMAND`는 `--prompt`로 끝나야 해.
43
+ - **에디터 부수 효과.** Cursor CLI는 working directory에 cursor 관련 상태 파일을 만질 수 있어. 음성 전용 흐름에선 놀랍게 느껴질 수 있으니 격리된 프로젝트 디렉터리로 `AGENT_WORKDIR`를 지정해.
44
+ - **세션 재개 없음.** 턴 사이 연속성은 `AGENT_PROJECT_CONTEXT` + 다른 하니스에서 돌아올 때의 크로스 에이전트 핸드오프 블록에 의존.
45
+ - **Patch 안전장치.** Cursor가 diff를 반환 중 interrupt되면 bridge는 diff를 음성으로 안 읽어.
@@ -0,0 +1,42 @@
1
+ # Cursor CLI — Заметки по harness
2
+
3
+ <p align="center">
4
+ <a href="../../README.ru.md">README</a> ·
5
+ <a href="HARNESSES.ru.md">Harness-ы</a> ·
6
+ <a href="USAGE.ru.md">Использование</a> ·
7
+ <a href="CONFIGURATION.ru.md">Настройка</a>
8
+ </p>
9
+
10
+ Cursor CLI (`cursor-agent`) — терминальный агент Cursor. VerbalCoding вызывает его через `cursor-agent --print --prompt`, передавая расшифровку значением `--prompt`. `--print` держит запуск не интерактивным.
11
+
12
+ ## Установка
13
+
14
+ ```bash
15
+ cursor-agent --print --prompt "hello"
16
+ ```
17
+
18
+ ## Настройка
19
+
20
+ ```bash
21
+ # .env
22
+ AGENT_BACKEND=cursor # алиас 'cursor-cli' принимается
23
+ CURSOR_COMMAND="cursor-agent --print --prompt"
24
+ AGENT_PROJECT_CONTEXT="..."
25
+ AGENT_WORKDIR=/Users/you/code/your-project
26
+ AGENT_CHAT_TIMEOUT_MS=45000
27
+ AGENT_TASK_TIMEOUT_MS=0
28
+ ```
29
+
30
+ ## Голосовые фразы для переключения на Cursor
31
+
32
+ - en: `"switch to Cursor"`, `"switch to cursor cli"`, `"switch to cursor agent"`
33
+ - ru: `"переключись на Cursor"`
34
+
35
+ Алиасы: `cursor`, `cursor cli`, `cursor-cli`, `cursor agent`, `cursor-agent`.
36
+
37
+ ## Подводные камни
38
+
39
+ - **Позиция prompt-а.** `--prompt` ждёт значение сразу после; argv-сборщик ставит расшифровку последним позиционным аргументом, поэтому `CURSOR_COMMAND` должна заканчиваться на `--prompt`.
40
+ - **Побочные эффекты редактора.** Cursor CLI может трогать cursor-файлы состояния в cwd; изолируйте через `AGENT_WORKDIR`.
41
+ - **Нет возобновления.** Непрерывность — через `AGENT_PROJECT_CONTEXT` и блок hand-off.
42
+ - **Patch-safety.** При прерывании в момент diff мост не зачитывает diff.
@@ -0,0 +1,42 @@
1
+ # Cursor CLI — Harness 说明
2
+
3
+ <p align="center">
4
+ <a href="../../README.zh.md">README</a> ·
5
+ <a href="HARNESSES.zh.md">Harness</a> ·
6
+ <a href="USAGE.zh.md">使用</a> ·
7
+ <a href="CONFIGURATION.zh.md">配置</a>
8
+ </p>
9
+
10
+ Cursor CLI (`cursor-agent`) 是 Cursor 的终端代理。VerbalCoding 通过 `cursor-agent --print --prompt` 驱动,将 STT 结果作为 prompt 值传入。`--print` 保证非交互。
11
+
12
+ ## 安装
13
+
14
+ ```bash
15
+ cursor-agent --print --prompt "hello"
16
+ ```
17
+
18
+ ## VerbalCoding 配置
19
+
20
+ ```bash
21
+ # .env
22
+ AGENT_BACKEND=cursor # 也接受 'cursor-cli'
23
+ CURSOR_COMMAND="cursor-agent --print --prompt" # 默认
24
+ AGENT_PROJECT_CONTEXT="..."
25
+ AGENT_WORKDIR=/Users/you/code/your-project
26
+ AGENT_CHAT_TIMEOUT_MS=45000
27
+ AGENT_TASK_TIMEOUT_MS=0
28
+ ```
29
+
30
+ ## 切到 Cursor 的语音表述
31
+
32
+ - en: `"switch to Cursor"`、`"switch to cursor cli"`、`"switch to cursor agent"`
33
+ - zh: `"切到 Cursor"`
34
+
35
+ 别名: `cursor`、`cursor cli`、`cursor-cli`、`cursor agent`、`cursor-agent`。
36
+
37
+ ## 坑
38
+
39
+ - **prompt 位置。** `--prompt` 期待紧随其后的值。VerbalCoding 的 shell-aware argv 构造器将 STT 结果作为末尾 positional 参数,因此 `CURSOR_COMMAND` 必须以 `--prompt` 结尾。
40
+ - **编辑器副作用。** Cursor CLI 可能在工作目录写 cursor 相关状态文件;纯语音流中若不希望如此,把 `AGENT_WORKDIR` 指向隔离目录。
41
+ - **无会话续接。** 用 `AGENT_PROJECT_CONTEXT` 维持连续性,从其它 harness 切回时还有跨代理 handoff 块兜底。
42
+ - **patch 安全。** Cursor 在 diff 期间被中断时,bridge 不朗读 diff。
@@ -0,0 +1,44 @@
1
+ # Gemini CLI — Notas del Harness
2
+
3
+ <p align="center">
4
+ <a href="../../README.es.md">README</a> ·
5
+ <a href="HARNESSES.es.md">Harnesses</a> ·
6
+ <a href="USAGE.es.md">Uso</a> ·
7
+ <a href="CONFIGURATION.es.md">Configuración</a>
8
+ </p>
9
+
10
+ Gemini CLI es el agente de codificación de terminal de Google. VerbalCoding lo invoca con `gemini -p`. Cada turno de voz es una invocación; no hay reanudación entre llamadas.
11
+
12
+ ## Instalación
13
+
14
+ Sigue la guía oficial de Gemini CLI. Confirma:
15
+
16
+ ```bash
17
+ gemini -p "hello"
18
+ ```
19
+
20
+ ## Configuración
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=gemini
25
+ GEMINI_COMMAND="gemini -p"
26
+ AGENT_PROJECT_CONTEXT="..."
27
+ AGENT_WORKDIR=/Users/you/code/your-project
28
+ AGENT_CHAT_TIMEOUT_MS=45000
29
+ AGENT_TASK_TIMEOUT_MS=0
30
+ ```
31
+
32
+ ## Frases de voz para cambiar a Gemini
33
+
34
+ - en: `"switch to Gemini"`, `"ask Gemini ..."`, `"switch to Gemini CLI"`
35
+ - es: `"cambia a Gemini"`, `"pregunta a Gemini"`
36
+
37
+ Alias: `gemini`, `gemini cli`, `gemini-cli`.
38
+
39
+ ## Trampas
40
+
41
+ - **Sin reanudación.** Misma estrategia que Claude/Codex: `AGENT_PROJECT_CONTEXT` + bloque de handoff.
42
+ - **Respuestas largas.** Gemini a veces devuelve respuestas estructuradas grandes; el sentencer las parte en frases TTSables. Las cercas de código se eliminan del audio (el canal de texto sí trae el código).
43
+ - **API key.** Si Gemini sale con error de auth, el puente reporta; el fallback ofrece el agente por defecto.
44
+ - **Progreso detallado.** Gemini no emite previos al estilo `┊` de Hermes; el progreso detallado depende del summarizer LLM.
@@ -0,0 +1,44 @@
1
+ # Gemini CLI — Notes Harness
2
+
3
+ <p align="center">
4
+ <a href="../../README.fr.md">README</a> ·
5
+ <a href="HARNESSES.fr.md">Harnesses</a> ·
6
+ <a href="USAGE.fr.md">Utilisation</a> ·
7
+ <a href="CONFIGURATION.fr.md">Configuration</a>
8
+ </p>
9
+
10
+ Gemini CLI est l'agent terminal de Google. VerbalCoding l'invoque via `gemini -p`. Un tour vocal = un appel ; pas de reprise entre appels.
11
+
12
+ ## Installation
13
+
14
+ Suivez le guide officiel, puis vérifiez :
15
+
16
+ ```bash
17
+ gemini -p "hello"
18
+ ```
19
+
20
+ ## Configuration
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=gemini
25
+ GEMINI_COMMAND="gemini -p"
26
+ AGENT_PROJECT_CONTEXT="..."
27
+ AGENT_WORKDIR=/Users/you/code/your-project
28
+ AGENT_CHAT_TIMEOUT_MS=45000
29
+ AGENT_TASK_TIMEOUT_MS=0
30
+ ```
31
+
32
+ ## Phrases vocales pour basculer vers Gemini
33
+
34
+ - en: `"switch to Gemini"`, `"ask Gemini ..."`, `"switch to Gemini CLI"`
35
+ - fr: `"passe à Gemini"`, `"demande à Gemini"`
36
+
37
+ Alias : `gemini`, `gemini cli`, `gemini-cli`.
38
+
39
+ ## Pièges
40
+
41
+ - **Pas de reprise.** Même stratégie que Claude/Codex : `AGENT_PROJECT_CONTEXT` + bloc de handoff.
42
+ - **Réponses longues.** Gemini renvoie parfois de grands blocs structurés ; le sentencer les découpe. Les blocs de code sont retirés de la voix (canal texte conserve le code).
43
+ - **Clé API.** Une erreur d'auth ressort en exit non-nul ; fallback proposé si Gemini n'était pas le défaut.
44
+ - **Progression verbeuse.** Gemini ne sort pas de previews `┊` à la Hermes ; la progression dépend principalement du summarizer LLM.
@@ -0,0 +1,45 @@
1
+ # Gemini CLI — ハーネスノート
2
+
3
+ <p align="center">
4
+ <a href="../../README.ja.md">README</a> ·
5
+ <a href="HARNESSES.ja.md">ハーネス</a> ·
6
+ <a href="USAGE.ja.md">使い方</a> ·
7
+ <a href="CONFIGURATION.ja.md">設定</a>
8
+ </p>
9
+
10
+ Gemini CLI は Google のターミナルコーディングエージェント。VerbalCoding は `gemini -p` で呼び出します。音声ターン 1 つにつき 1 invocation、呼び出し間のセッション再開はありません。
11
+
12
+ ## インストール
13
+
14
+ 上流 Gemini CLI インストールガイドに従い、確認:
15
+
16
+ ```bash
17
+ gemini -p "hello"
18
+ ```
19
+
20
+ ## VerbalCoding 設定
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=gemini
25
+ # 任意
26
+ GEMINI_COMMAND="gemini -p" # 既定。--model, --debug 追加可
27
+ AGENT_PROJECT_CONTEXT="..."
28
+ AGENT_WORKDIR=/Users/you/code/your-project
29
+ AGENT_CHAT_TIMEOUT_MS=45000
30
+ AGENT_TASK_TIMEOUT_MS=0
31
+ ```
32
+
33
+ ## Gemini へ切り替える音声表現
34
+
35
+ - en: `"switch to Gemini"`, `"ask Gemini ..."`, `"switch to Gemini CLI"`
36
+ - ja: `"Gemini に切り替えて"`, `"Gemini に聞いて"`
37
+
38
+ エイリアス: `gemini`, `gemini cli`, `gemini-cli`, `ジェミニ`。
39
+
40
+ ## 罠
41
+
42
+ - **セッション再開なし。** Claude / Codex と同様の連続性戦略: `AGENT_PROJECT_CONTEXT` とクロスエージェントハンドオフブロックに依存。
43
+ - **長い応答。** Gemini が大きな構造化応答を返すことがあります。ストリーム sentencer が TTS 可能な文に分割。コードフェンスは音声から除外 (テキストチャンネルには全文)。
44
+ - **API キー。** Gemini が認証エラーで非零 exit すると bridge がメッセージを報告。既定外なら fallback プロンプトが既定エージェントへの retry 提案。
45
+ - **詳細進捗。** Gemini の stdout は Hermes の `┊` 形式ではないため、詳細進捗は主に smart-progress LLM 要約器に依存。
@@ -0,0 +1,45 @@
1
+ # Gemini CLI — 하니스 노트
2
+
3
+ <p align="center">
4
+ <a href="../../README.ko.md">README</a> ·
5
+ <a href="HARNESSES.ko.md">하니스</a> ·
6
+ <a href="USAGE.ko.md">사용법</a> ·
7
+ <a href="CONFIGURATION.ko.md">설정</a>
8
+ </p>
9
+
10
+ Gemini CLI는 구글의 터미널 코딩 에이전트. VerbalCoding은 `gemini -p`로 호출해. voice turn 하나가 invocation 한 번이고, 호출 간 세션 재개는 없어.
11
+
12
+ ## 설치
13
+
14
+ 상위 Gemini CLI 설치 가이드를 따라줘. 확인:
15
+
16
+ ```bash
17
+ gemini -p "hello"
18
+ ```
19
+
20
+ ## VerbalCoding 설정
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=gemini
25
+ # 선택
26
+ GEMINI_COMMAND="gemini -p" # 기본값. 필요하면 --model, --debug 추가
27
+ AGENT_PROJECT_CONTEXT="..."
28
+ AGENT_WORKDIR=/Users/you/code/your-project
29
+ AGENT_CHAT_TIMEOUT_MS=45000
30
+ AGENT_TASK_TIMEOUT_MS=0
31
+ ```
32
+
33
+ ## Gemini로 전환하는 음성 표현
34
+
35
+ - en: `"switch to Gemini"`, `"ask Gemini ..."`, `"switch to Gemini CLI"`
36
+ - ko: `"제미나이로 전환"`, `"gemini한테 물어봐"`
37
+
38
+ 매처가 받는 별칭: `gemini`, `gemini cli`, `gemini-cli`, `제미나이`.
39
+
40
+ ## 함정
41
+
42
+ - **세션 재개 없음.** Claude / Codex와 같은 연속성 전략: `AGENT_PROJECT_CONTEXT` + 크로스 에이전트 핸드오프 블록 의존.
43
+ - **긴 응답.** Gemini는 가끔 큰 구조화 응답을 반환하는데, 스트림 sentencer가 TTS 가능한 문장으로 잘라줘. 코드 펜스는 음성에서 제외 (텍스트 채널에는 코드 포함 전체 답변).
44
+ - **API 키.** Gemini가 인증 오류로 non-zero exit하면 bridge가 메시지를 보고. 기본 에이전트가 아닐 때 크로스 에이전트 fallback 프롬프트가 기본 에이전트로 재시도 제안.
45
+ - **상세 진행.** Gemini stdout은 Hermes의 `┊` 스타일 미리보기 포맷이 아니라서 상세 진행은 주로 smart-progress LLM 요약기에 의존해.
@@ -0,0 +1,44 @@
1
+ # Gemini CLI — Заметки по harness
2
+
3
+ <p align="center">
4
+ <a href="../../README.ru.md">README</a> ·
5
+ <a href="HARNESSES.ru.md">Harness-ы</a> ·
6
+ <a href="USAGE.ru.md">Использование</a> ·
7
+ <a href="CONFIGURATION.ru.md">Настройка</a>
8
+ </p>
9
+
10
+ Gemini CLI — терминальный кодинг-агент Google. VerbalCoding вызывает его через `gemini -p`. Один turn — один вызов; возобновления между вызовами нет.
11
+
12
+ ## Установка
13
+
14
+ Следуйте официальному гайду, затем проверьте:
15
+
16
+ ```bash
17
+ gemini -p "hello"
18
+ ```
19
+
20
+ ## Настройка
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=gemini
25
+ GEMINI_COMMAND="gemini -p"
26
+ AGENT_PROJECT_CONTEXT="..."
27
+ AGENT_WORKDIR=/Users/you/code/your-project
28
+ AGENT_CHAT_TIMEOUT_MS=45000
29
+ AGENT_TASK_TIMEOUT_MS=0
30
+ ```
31
+
32
+ ## Голосовые фразы для переключения на Gemini
33
+
34
+ - en: `"switch to Gemini"`, `"ask Gemini ..."`, `"switch to Gemini CLI"`
35
+ - ru: `"переключись на Gemini"`, `"спроси Gemini"`
36
+
37
+ Алиасы: `gemini`, `gemini cli`, `gemini-cli`.
38
+
39
+ ## Подводные камни
40
+
41
+ - **Нет возобновления.** Та же стратегия, что у Claude/Codex: `AGENT_PROJECT_CONTEXT` + блок hand-off.
42
+ - **Длинные ответы.** Gemini иногда возвращает большие структуры; sentencer режет их на TTS-фразы. Код-блоки убираются из голоса (в текстовом канале остаются).
43
+ - **API key.** Ошибка авторизации — non-zero exit; fallback на дефолт, если Gemini не был дефолтом.
44
+ - **Подробный прогресс.** У Gemini нет превью в стиле `┊` Hermes — прогресс в основном даёт LLM-сводщик.
@@ -0,0 +1,45 @@
1
+ # Gemini CLI — Harness 说明
2
+
3
+ <p align="center">
4
+ <a href="../../README.zh.md">README</a> ·
5
+ <a href="HARNESSES.zh.md">Harness</a> ·
6
+ <a href="USAGE.zh.md">使用</a> ·
7
+ <a href="CONFIGURATION.zh.md">配置</a>
8
+ </p>
9
+
10
+ Gemini CLI 是 Google 的终端编码代理。VerbalCoding 通过 `gemini -p` 驱动。每个语音 turn 一次调用;调用间无内建会话续接。
11
+
12
+ ## 安装
13
+
14
+ 参考上游 Gemini CLI 指引,确认:
15
+
16
+ ```bash
17
+ gemini -p "hello"
18
+ ```
19
+
20
+ ## VerbalCoding 配置
21
+
22
+ ```bash
23
+ # .env
24
+ AGENT_BACKEND=gemini
25
+ # 可选
26
+ GEMINI_COMMAND="gemini -p" # 默认,可加 --model、--debug
27
+ AGENT_PROJECT_CONTEXT="..."
28
+ AGENT_WORKDIR=/Users/you/code/your-project
29
+ AGENT_CHAT_TIMEOUT_MS=45000
30
+ AGENT_TASK_TIMEOUT_MS=0
31
+ ```
32
+
33
+ ## 切到 Gemini 的语音表述
34
+
35
+ - en: `"switch to Gemini"`、`"ask Gemini ..."`、`"switch to Gemini CLI"`
36
+ - zh: `"切到 Gemini"`、`"问 Gemini"`
37
+
38
+ 别名: `gemini`、`gemini cli`、`gemini-cli`。
39
+
40
+ ## 坑
41
+
42
+ - **无会话续接。** 与 Claude / Codex 同样的连续性策略: 依赖 `AGENT_PROJECT_CONTEXT` 与跨代理 handoff 块。
43
+ - **长回答。** Gemini 偶尔返回大块结构化响应;流式 sentencer 会切分成 TTS 可读句。代码围栏从语音剥离 (文本频道仍含完整代码)。
44
+ - **API 密钥。** Gemini 因鉴权失败非零退出时,bridge 会报告消息;非默认后端时 fallback 提示。
45
+ - **详细进度。** Gemini stdout 不是 Hermes `┊` 风格,详细进度主要依赖 smart-progress LLM 摘要。