tonedial 0.0.0-stage → 0.1.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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.es.md +83 -0
  3. package/README.ja.md +83 -0
  4. package/README.ko.md +83 -0
  5. package/README.md +82 -2
  6. package/README.zh.md +83 -0
  7. package/THIRD_PARTY_NOTICES.md +113 -0
  8. package/dist/bin.js +5 -0
  9. package/dist/cli.js +507 -0
  10. package/dist/commands/compile.js +122 -0
  11. package/dist/commands/create.js +110 -0
  12. package/dist/commands/doctor.js +1098 -0
  13. package/dist/commands/edit.js +301 -0
  14. package/dist/commands/eject.js +18 -0
  15. package/dist/commands/init.js +448 -0
  16. package/dist/commands/list.js +76 -0
  17. package/dist/commands/rebuild.js +544 -0
  18. package/dist/commands/save.js +99 -0
  19. package/dist/commands/set.js +406 -0
  20. package/dist/commands/show.js +217 -0
  21. package/dist/commands/test.js +168 -0
  22. package/dist/commands/transfer.js +146 -0
  23. package/dist/commands/update.js +173 -0
  24. package/dist/commands/use.js +101 -0
  25. package/dist/commands/wire.js +463 -0
  26. package/dist/core/anchors.js +187 -0
  27. package/dist/core/combos.js +76 -0
  28. package/dist/core/compile.js +89 -0
  29. package/dist/core/config.js +893 -0
  30. package/dist/core/i18n.js +1411 -0
  31. package/dist/core/legacy-tone.js +349 -0
  32. package/dist/core/locales/es.js +645 -0
  33. package/dist/core/locales/ja.js +645 -0
  34. package/dist/core/locales/zh.js +645 -0
  35. package/dist/core/net.js +74 -0
  36. package/dist/core/operations.js +905 -0
  37. package/dist/core/paths.js +408 -0
  38. package/dist/core/presets.js +417 -0
  39. package/dist/core/reader.js +431 -0
  40. package/dist/core/resolve.js +13 -0
  41. package/dist/core/seeds.js +549 -0
  42. package/dist/core/selfupdate.js +259 -0
  43. package/dist/core/skill.js +438 -0
  44. package/dist/install.js +1288 -0
  45. package/dist/ui/dial.js +234 -0
  46. package/dist/ui/format.js +73 -0
  47. package/dist/ui/gauge.js +119 -0
  48. package/dist/ui/prompt.js +138 -0
  49. package/dist/ui/style.js +37 -0
  50. package/dist/ui/width.js +206 -0
  51. package/dist/wiring/apply.js +2462 -0
  52. package/dist/wiring/codex-trust.js +45 -0
  53. package/dist/wiring/hooks.js +282 -0
  54. package/dist/wiring/ownership.js +265 -0
  55. package/dist/wiring/region.js +86 -0
  56. package/dist/wiring/shell.js +39 -0
  57. package/dist/wiring/skill.js +921 -0
  58. package/dist/wiring/targets.js +565 -0
  59. package/package.json +45 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Deokgyu Yang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.es.md ADDED
@@ -0,0 +1,83 @@
1
+ # ToneDial
2
+
3
+ **Dale un personaje a tu agente de programación.**
4
+
5
+ Elige un personaje, ajusta doce diales y guarda una voz para usarla en distintos proyectos.
6
+
7
+ **7 personajes · 12 ejes de tono · 5 idiomas del CLI · Cero dependencias en ejecución**
8
+
9
+ [English](https://github.com/awesometic/tonedial/blob/main/README.md) | [한국어](https://github.com/awesometic/tonedial/blob/main/README.ko.md) | [日本語](https://github.com/awesometic/tonedial/blob/main/README.ja.md) | [简体中文](https://github.com/awesometic/tonedial/blob/main/README.zh.md) | **Español**
10
+
11
+ ## Mira cómo responde
12
+
13
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/es/voice-examples.svg" alt="Royal Advisor y Ego Sword responden a la misma pregunta sobre renombrar una función en conversaciones reales de Codex" width="760">
14
+
15
+ <sub>Respuestas reales de Codex, presentadas como diálogos de terminal. <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/es/voice-examples.json">Entradas y procedencia</a>.</sub>
16
+
17
+ **[Ver los 7 personajes →](https://github.com/awesometic/tonedial/blob/main/docs/EXAMPLES.es.md)**
18
+
19
+ ## Pruébalo
20
+
21
+ Requiere **Node 24 o posterior** y npm.
22
+
23
+ ```bash
24
+ npm install --global tonedial
25
+ tonedial init --tools none --global --lang es
26
+ tonedial set
27
+ ```
28
+
29
+ La configuración muestra los cambios de archivos y pide aprobación. Puedes abrir el dial sin conectar un agente.
30
+
31
+ [Conecta tu agente](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent) · [Prueba con ajustes temporales](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md#isolated-candidate)
32
+
33
+ ## Elige tu personaje
34
+
35
+ | Preajuste | Tú → agente |
36
+ | --- | --- |
37
+ | Caring Brother | Hermano pequeño → hermano mayor |
38
+ | Bratty Kid | Interlocutor → niño descarado |
39
+ | Eager Sycophant | Creador → fan entusiasta |
40
+ | Royal Advisor | Monarca → súbdito leal |
41
+ | Ego Sword | Novato → espada consciente |
42
+ | Heavenly Demon | Discípulo → maestro marcial severo |
43
+ | Right Hand | Jefe → consigliere de confianza |
44
+
45
+ ```bash
46
+ tonedial use ego-sword
47
+ tonedial set verbosity=1 warmth=3
48
+ tonedial save "My Sword"
49
+ ```
50
+
51
+ Crea el tuyo con `tonedial create`. Cada perfil guarda tono, roles, formas de trato, registro y palabra clave.
52
+
53
+ ## Ajusta los diales
54
+
55
+ **Doce ejes, cinco niveles cada uno.** Decide cuánta formalidad, brevedad, calidez, crítica o teatralidad quieres.
56
+
57
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/es/dial.svg" alt="Dial de doce ejes de ToneDial con niveles actuales, explicación de warmth y teclas de control" width="760">
58
+
59
+ <sub>Vista previa sintética de 80 columnas generada con el renderizador actual del CLI. <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/es/dial-example.json">Procedencia del fotograma</a> · <a href="https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#current-dial-example">Receta</a>.</sub>
60
+
61
+ **↑↓** elegir eje · **←→ / 1–5** fijar nivel · **Enter** aplicar · **Esc** descartar
62
+
63
+ ToneDial compila los ajustes en `TONE.md` de forma local y determinista. Tu agente aporta el modelo.
64
+
65
+ ## Conecta tu agente
66
+
67
+ **Claude Code · Codex · Antigravity IDE/Desktop** — [guía de conexión](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent)
68
+
69
+ Prueba una conversación nueva con un cliente Codex o Claude Code instalado:
70
+
71
+ ```bash
72
+ tonedial test codex --preset my-sword
73
+ ```
74
+
75
+ - Las vistas previas usan tu cuenta del proveedor; se aplican el consumo, los cargos y el historial habituales.
76
+ - El tono cambia el estilo. Los permisos y las aprobaciones del cliente siguen vigentes.
77
+ - El comportamiento varía según el modelo. Es para divertirse; no se recomienda en producción.
78
+
79
+ ## Más información
80
+
81
+ [Uso y referencia](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md) · [Aporta un preajuste o una corrección](https://github.com/awesometic/tonedial/blob/main/CONTRIBUTING.md) · [Pruebas](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md) · [Seguridad](https://github.com/awesometic/tonedial/blob/main/SECURITY.md)
82
+
83
+ [Guía para agentes](https://github.com/awesometic/tonedial/blob/main/AGENTS.md) · [Licencia MIT](https://github.com/awesometic/tonedial/blob/main/LICENSE) · [Avisos de terceros](https://github.com/awesometic/tonedial/blob/main/THIRD_PARTY_NOTICES.md)
package/README.ja.md ADDED
@@ -0,0 +1,83 @@
1
+ # ToneDial
2
+
3
+ **コーディングエージェントにキャラクターを。**
4
+
5
+ キャラクターを選び、12個のダイヤルで口調を調整。保存した声をプロジェクトをまたいで使えます。
6
+
7
+ **7キャラクター · 12の口調軸 · CLIは5言語 · 実行時の依存パッケージなし**
8
+
9
+ [English](https://github.com/awesometic/tonedial/blob/main/README.md) | [한국어](https://github.com/awesometic/tonedial/blob/main/README.ko.md) | **日本語** | [简体中文](https://github.com/awesometic/tonedial/blob/main/README.zh.md) | [Español](https://github.com/awesometic/tonedial/blob/main/README.es.md)
10
+
11
+ ## まずは応答から
12
+
13
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/ja/voice-examples.svg" alt="同じ関数名変更の質問に答えるRoyal AdvisorとEgo Swordの実際のCodex対話記録" width="760">
14
+
15
+ <sub>実際のCodex応答をターミナル風の対話として表示しています。 <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/ja/voice-examples.json">入力と生成記録</a>.</sub>
16
+
17
+ **[7キャラクターすべてを見る →](https://github.com/awesometic/tonedial/blob/main/docs/EXAMPLES.ja.md)**
18
+
19
+ ## 試してみる
20
+
21
+ **Node 24以降**とnpmが必要です。
22
+
23
+ ```bash
24
+ npm install --global tonedial
25
+ tonedial init --tools none --global --lang ja
26
+ tonedial set
27
+ ```
28
+
29
+ 設定時にファイル変更を表示し、承認を求めます。エージェントに接続せず、まずダイヤルを試せます。
30
+
31
+ [エージェントを接続する](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent) · [一時設定で試す](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md#isolated-candidate)
32
+
33
+ ## キャラクターを選ぶ
34
+
35
+ | プリセット | あなた → エージェント |
36
+ | --- | --- |
37
+ | Caring Brother | 弟や妹 → 頼れる兄 |
38
+ | Bratty Kid | 話し相手 → 生意気な子供 |
39
+ | Eager Sycophant | 創作者 → 熱狂的ファン |
40
+ | Royal Advisor | 君主 → 忠実な臣下 |
41
+ | Ego Sword | 駆け出しの冒険者 → 自我を持つ剣 |
42
+ | Heavenly Demon | 弟子 → 厳格な天魔 |
43
+ | Right Hand | 親分 → 信頼できる右腕 |
44
+
45
+ ```bash
46
+ tonedial use ego-sword
47
+ tonedial set verbosity=1 warmth=3
48
+ tonedial save "My Sword"
49
+ ```
50
+
51
+ `tonedial create` で自分のキャラクターも作れます。口調、役割、呼称、敬語区分、合言葉を1つのプロファイルに保存します。
52
+
53
+ ## ダイヤルを回す
54
+
55
+ **12の軸を、それぞれ5段階で。** 格式、簡潔さ、温かさ、批判、役柄の強さを調整します。
56
+
57
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/ja/dial.svg" alt="現在値、選択したwarmthの説明、キー操作を示すToneDialの12軸ダイヤル" width="760">
58
+
59
+ <sub>現在のCLIレンダラーで生成した80列の合成プレビューです。 <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/ja/dial-example.json">フレームの生成記録</a> · <a href="https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#current-dial-example">生成手順</a>.</sub>
60
+
61
+ **↑↓** 軸を選択 · **←→ / 1–5** 値を変更 · **Enter** 適用 · **Esc** 破棄
62
+
63
+ ToneDialは設定をローカルで `TONE.md` にコンパイルします。同じ設定からは同じ結果を生成し、モデルは利用中のエージェントが提供します。
64
+
65
+ ## エージェントと使う
66
+
67
+ **Claude Code · Codex · Antigravity IDE/Desktop** — [接続ガイド](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent)
68
+
69
+ インストール済みのCodexかClaude Codeで、新しい会話を試せます。
70
+
71
+ ```bash
72
+ tonedial test codex --preset my-sword
73
+ ```
74
+
75
+ - プレビューは利用者のプロバイダーアカウントを使い、通常の使用量・料金・履歴の扱いが適用されます。
76
+ - 変わるのは話し方です。ホストの権限と承認要件はそのままです。
77
+ - 反応はモデルによって異なります。娯楽用で、実務利用は推奨しません。
78
+
79
+ ## さらに詳しく
80
+
81
+ [使い方とリファレンス](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md) · [プリセットや修正を提案](https://github.com/awesometic/tonedial/blob/main/CONTRIBUTING.md) · [テスト](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md) · [セキュリティ](https://github.com/awesometic/tonedial/blob/main/SECURITY.md)
82
+
83
+ [エージェント作業ガイド](https://github.com/awesometic/tonedial/blob/main/AGENTS.md) · [MITライセンス](https://github.com/awesometic/tonedial/blob/main/LICENSE) · [第三者の権利表示](https://github.com/awesometic/tonedial/blob/main/THIRD_PARTY_NOTICES.md)
package/README.ko.md ADDED
@@ -0,0 +1,83 @@
1
+ # ToneDial
2
+
3
+ **코딩 에이전트에 캐릭터를 더하세요.**
4
+
5
+ 캐릭터를 고르고 열두 축으로 말투를 맞춰 보세요. 저장한 말투는 여러 프로젝트에서 쓸 수 있습니다.
6
+
7
+ **캐릭터 7개 · 말투 축 12개 · CLI 언어 5개 · 런타임 의존성 없음**
8
+
9
+ [English](https://github.com/awesometic/tonedial/blob/main/README.md) | **한국어** | [日本語](https://github.com/awesometic/tonedial/blob/main/README.ja.md) | [简体中文](https://github.com/awesometic/tonedial/blob/main/README.zh.md) | [Español](https://github.com/awesometic/tonedial/blob/main/README.es.md)
10
+
11
+ ## 답변부터 보세요
12
+
13
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/ko/voice-examples.svg" alt="같은 함수명 변경 질문에 답하는 Royal Advisor와 Ego Sword의 실제 Codex 대화 기록" width="760">
14
+
15
+ <sub>실제 Codex 응답을 터미널 대화 형식으로 정리한 이미지입니다. <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/ko/voice-examples.json">입력과 생성 기록</a>.</sub>
16
+
17
+ **[캐릭터 7개 모두 보기 →](https://github.com/awesometic/tonedial/blob/main/docs/EXAMPLES.ko.md)**
18
+
19
+ ## 바로 시작하기
20
+
21
+ **Node 24 이상**과 npm이 필요합니다.
22
+
23
+ ```bash
24
+ npm install --global tonedial
25
+ tonedial init --tools none --global --lang ko
26
+ tonedial set
27
+ ```
28
+
29
+ 설정 과정에서 파일 변경 내용을 보여주고 승인을 받습니다. 에이전트 연결 없이 다이얼부터 열어 봅니다.
30
+
31
+ [에이전트 연결하기](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent) · [임시 설정으로 시험하기](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md#isolated-candidate)
32
+
33
+ ## 캐릭터 고르기
34
+
35
+ | 프리셋 | 사용자 → 에이전트 |
36
+ | --- | --- |
37
+ | Caring Brother | 동생 → 든든한 형 |
38
+ | Bratty Kid | 대화 상대 → 말썽꾸러기 꼬마 |
39
+ | Eager Sycophant | 창작자 → 과몰입한 팬 |
40
+ | Royal Advisor | 왕 → 충직한 신하 |
41
+ | Ego Sword | 초보 모험가 → 자아를 가진 검 |
42
+ | Heavenly Demon | 제자 → 엄격한 천마 |
43
+ | Right Hand | 보스 → 믿음직한 오른팔 |
44
+
45
+ ```bash
46
+ tonedial use ego-sword
47
+ tonedial set verbosity=1 warmth=3
48
+ tonedial save "My Sword"
49
+ ```
50
+
51
+ `tonedial create`로 직접 만들 수도 있습니다. 말투, 역할, 호칭, 말씨, 세이프워드를 프로필 하나에 저장합니다.
52
+
53
+ ## 말투 조절하기
54
+
55
+ **열두 축을 각각 1–5로 조절합니다.** 격식, 답변 길이, 다정함, 비판, 역할극의 강도를 정해 보세요.
56
+
57
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/ko/dial.svg" alt="현재 값, 선택한 warmth 설명, 키보드 조작을 보여주는 ToneDial의 열두 축 다이얼" width="760">
58
+
59
+ <sub>현재 CLI 렌더러로 만든 80열 합성 미리보기입니다. <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/ko/dial-example.json">프레임 생성 기록</a> · <a href="https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#current-dial-example">만드는 방법</a>.</sub>
60
+
61
+ **↑↓** 축 선택 · **←→ / 1–5** 값 조절 · **Enter** 적용 · **Esc** 취소
62
+
63
+ ToneDial은 설정을 로컬에서 `TONE.md`로 컴파일합니다. 같은 설정이면 같은 결과를 만들며, 모델은 사용 중인 에이전트가 제공합니다.
64
+
65
+ ## 에이전트 연결하기
66
+
67
+ **Claude Code · Codex · Antigravity IDE/Desktop** — [연결 가이드](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent)
68
+
69
+ 설치된 Codex나 Claude Code 클라이언트에서 새 대화를 열어 시험해 보세요.
70
+
71
+ ```bash
72
+ tonedial test codex --preset my-sword
73
+ ```
74
+
75
+ - 미리보기는 사용 중인 프로바이더 계정을 쓰며, 평소와 같은 사용량·요금·기록 정책이 적용됩니다.
76
+ - 말투만 바꿉니다. 호스트의 권한과 승인 요건은 그대로입니다.
77
+ - 모델마다 반응이 다릅니다. 재미를 위한 도구로, 실무 사용은 권장하지 않습니다.
78
+
79
+ ## 더 알아보기
80
+
81
+ [사용법과 전체 명령어](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md) · [프리셋·수정 기여하기](https://github.com/awesometic/tonedial/blob/main/CONTRIBUTING.md) · [테스트](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md) · [보안](https://github.com/awesometic/tonedial/blob/main/SECURITY.md)
82
+
83
+ [에이전트 작업 가이드](https://github.com/awesometic/tonedial/blob/main/AGENTS.md) · [MIT 라이선스](https://github.com/awesometic/tonedial/blob/main/LICENSE) · [서드파티 고지](https://github.com/awesometic/tonedial/blob/main/THIRD_PARTY_NOTICES.md)
package/README.md CHANGED
@@ -1,3 +1,83 @@
1
- # Temporary Holding Version
1
+ # ToneDial
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ **Give your coding agent a character.**
4
+
5
+ Pick a character, tune twelve dials, and save a voice to use across projects.
6
+
7
+ **7 characters · 12 tone axes · 5 CLI languages · Zero runtime dependencies**
8
+
9
+ **English** | [한국어](https://github.com/awesometic/tonedial/blob/main/README.ko.md) | [日本語](https://github.com/awesometic/tonedial/blob/main/README.ja.md) | [简体中文](https://github.com/awesometic/tonedial/blob/main/README.zh.md) | [Español](https://github.com/awesometic/tonedial/blob/main/README.es.md)
10
+
11
+ ## Hear it first
12
+
13
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/en/voice-examples.svg" alt="Royal Advisor and Ego Sword answer the same function-renaming question in recorded Codex conversations" width="760">
14
+
15
+ <sub>Recorded Codex replies, formatted as terminal dialogue. <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/en/voice-examples.json">Inputs & provenance</a>.</sub>
16
+
17
+ **[See all 7 characters →](https://github.com/awesometic/tonedial/blob/main/docs/EXAMPLES.md)**
18
+
19
+ ## Try it
20
+
21
+ Requires **Node 24+** and npm.
22
+
23
+ ```bash
24
+ npm install --global tonedial
25
+ tonedial init --tools none --global --lang en
26
+ tonedial set
27
+ ```
28
+
29
+ Setup previews file changes for approval. This opens the dial without connecting an agent.
30
+
31
+ [Connect your agent](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent) · [Try with disposable settings](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md#isolated-candidate)
32
+
33
+ ## Pick your character
34
+
35
+ | Preset | You → agent |
36
+ | --- | --- |
37
+ | Caring Brother | Little sibling → big brother |
38
+ | Bratty Kid | Conversation partner → cheeky kid |
39
+ | Eager Sycophant | Creator → overexcited fan |
40
+ | Royal Advisor | Monarch → loyal subject |
41
+ | Ego Sword | Rookie → sentient sword |
42
+ | Heavenly Demon | Apprentice → stern martial master |
43
+ | Right Hand | Boss → trusted consigliere |
44
+
45
+ ```bash
46
+ tonedial use ego-sword
47
+ tonedial set verbosity=1 warmth=3
48
+ tonedial save "My Sword"
49
+ ```
50
+
51
+ Use `tonedial create` to build your own. Profiles keep tone, roles, address forms, register and safeword together.
52
+
53
+ ## Turn the dials
54
+
55
+ **Twelve axes, five levels each.** Choose how formal, brief, warm, critical or theatrical your agent sounds.
56
+
57
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/en/dial.png" alt="ToneDial's twelve-axis inline dial with current levels, selected warmth hints and keyboard controls" width="760">
58
+
59
+ <sub>80-column synthetic preview from the current CLI renderer. <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/en/dial-example.json">Frame provenance</a> · <a href="https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#current-dial-example">Recipe</a>.</sub>
60
+
61
+ **↑↓** choose an axis · **←→ / 1–5** set its level · **Enter** apply · **Esc** discard
62
+
63
+ ToneDial compiles your settings into `TONE.md` locally and deterministically. Your agent supplies the model.
64
+
65
+ ## Bring your agent
66
+
67
+ **Claude Code · Codex · Antigravity IDE/Desktop** — [connection guide](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent)
68
+
69
+ Try a fresh conversation through an installed Codex or Claude Code client:
70
+
71
+ ```bash
72
+ tonedial test codex --preset my-sword
73
+ ```
74
+
75
+ - Previews use your provider account; normal usage, charges and history apply.
76
+ - Tone changes style. Host permissions and approval requirements stay in place.
77
+ - Model behavior varies. This is for fun, not recommended for production use.
78
+
79
+ ## Go further
80
+
81
+ [Usage & reference](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md) · [Contribute a preset or fix](https://github.com/awesometic/tonedial/blob/main/CONTRIBUTING.md) · [Testing](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md) · [Security](https://github.com/awesometic/tonedial/blob/main/SECURITY.md)
82
+
83
+ [Agent guide](https://github.com/awesometic/tonedial/blob/main/AGENTS.md) · [MIT license](https://github.com/awesometic/tonedial/blob/main/LICENSE) · [Third-party notices](https://github.com/awesometic/tonedial/blob/main/THIRD_PARTY_NOTICES.md)
package/README.zh.md ADDED
@@ -0,0 +1,83 @@
1
+ # ToneDial
2
+
3
+ **给编程代理一个角色。**
4
+
5
+ 选择角色,调整十二个语气轴,保存一套能在不同项目中复用的语气。
6
+
7
+ **7 个角色 · 12 个语气轴 · 5 种 CLI 语言 · 零运行时依赖**
8
+
9
+ [English](https://github.com/awesometic/tonedial/blob/main/README.md) | [한국어](https://github.com/awesometic/tonedial/blob/main/README.ko.md) | [日本語](https://github.com/awesometic/tonedial/blob/main/README.ja.md) | **简体中文** | [Español](https://github.com/awesometic/tonedial/blob/main/README.es.md)
10
+
11
+ ## 先看实际回复
12
+
13
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/zh/voice-examples.svg" alt="Royal Advisor 和 Ego Sword 回答同一函数改名问题的实际 Codex 对话记录" width="760">
14
+
15
+ <sub>实际 Codex 回复,按终端对话形式排版。 <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/zh/voice-examples.json">输入与生成记录</a>.</sub>
16
+
17
+ **[查看全部 7 个角色 →](https://github.com/awesometic/tonedial/blob/main/docs/EXAMPLES.zh.md)**
18
+
19
+ ## 开始试用
20
+
21
+ 需要 **Node 24 或更高版本**和 npm。
22
+
23
+ ```bash
24
+ npm install --global tonedial
25
+ tonedial init --tools none --global --lang zh
26
+ tonedial set
27
+ ```
28
+
29
+ 设置时会先展示文件变更并请求批准。无需连接代理即可先打开面板试用。
30
+
31
+ [连接代理](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent) · [使用临时设置试用](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md#isolated-candidate)
32
+
33
+ ## 选择你的角色
34
+
35
+ | 预设 | 你 → 代理 |
36
+ | --- | --- |
37
+ | Caring Brother | 弟弟 → 可靠的哥哥 |
38
+ | Bratty Kid | 聊天对象 → 淘气小孩 |
39
+ | Eager Sycophant | 创作者 → 狂热粉丝 |
40
+ | Royal Advisor | 君王 → 忠臣 |
41
+ | Ego Sword | 新手冒险者 → 自我之剑 |
42
+ | Heavenly Demon | 徒弟 → 严厉的天魔 |
43
+ | Right Hand | 老大 → 可靠的左右手 |
44
+
45
+ ```bash
46
+ tonedial use ego-sword
47
+ tonedial set verbosity=1 warmth=3
48
+ tonedial save "My Sword"
49
+ ```
50
+
51
+ 也可用 `tonedial create` 创建自己的角色。语气、角色、称呼、敬语形式和安全词一起保存在配置中。
52
+
53
+ ## 调节语气
54
+
55
+ **十二个语气轴,各有五个级别。** 调整正式程度、简洁度、温暖、批评及角色表现强度。
56
+
57
+ <img src="https://raw.githubusercontent.com/awesometic/tonedial/main/docs/media/readme/zh/dial.svg" alt="显示当前值、所选 warmth 说明和键盘操作的 ToneDial 十二轴面板" width="760">
58
+
59
+ <sub>使用当前 CLI 渲染器生成的 80 列合成预览。 <a href="https://github.com/awesometic/tonedial/blob/main/docs/media/readme/zh/dial-example.json">帧生成记录</a> · <a href="https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#current-dial-example">生成方法</a>.</sub>
60
+
61
+ **↑↓** 选择语气轴 · **←→ / 1–5** 调整级别 · **Enter** 应用 · **Esc** 放弃
62
+
63
+ ToneDial 在本地将设置编译为 `TONE.md`,相同设置生成相同结果。模型由你使用的代理提供。
64
+
65
+ ## 接入你的代理
66
+
67
+ **Claude Code · Codex · Antigravity IDE/Desktop** — [连接指南](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md#connecting-an-agent)
68
+
69
+ 通过已安装的 Codex 或 Claude Code 客户端试用一次新对话:
70
+
71
+ ```bash
72
+ tonedial test codex --preset my-sword
73
+ ```
74
+
75
+ - 预览使用你的服务商账号,按正常规则处理用量、费用和历史记录。
76
+ - 只改变表达风格,主机权限和批准要求保持不变。
77
+ - 模型反应各异。本工具用于娱乐,不建议用于生产工作。
78
+
79
+ ## 进一步了解
80
+
81
+ [使用方法与参考](https://github.com/awesometic/tonedial/blob/main/docs/USAGE.md) · [贡献预设或修复](https://github.com/awesometic/tonedial/blob/main/CONTRIBUTING.md) · [测试](https://github.com/awesometic/tonedial/blob/main/docs/TESTING.md) · [安全](https://github.com/awesometic/tonedial/blob/main/SECURITY.md)
82
+
83
+ [代理工作指南](https://github.com/awesometic/tonedial/blob/main/AGENTS.md) · [MIT 许可证](https://github.com/awesometic/tonedial/blob/main/LICENSE) · [第三方声明](https://github.com/awesometic/tonedial/blob/main/THIRD_PARTY_NOTICES.md)
@@ -0,0 +1,113 @@
1
+ # Third-Party Notices
2
+
3
+ Runtime Unicode data and adapted authoring principles used by ToneDial are covered by the notices below.
4
+ Authoring guidance stays in the repository; the East Asian Width tables compiled into `dist/ui/width.js` ship with the package.
5
+
6
+ ## Unicode Character Database
7
+
8
+ `src/ui/width.ts` is generated by `scripts/generate-width-table.py` from Python 3.14's `unicodedata`, which exposes the East Asian Width property of the Unicode Character Database (Unicode 16.0.0).
9
+ The generated ranges are what keep a gauge column aligned in Korean, Japanese and Chinese, and they are compiled into `dist/ui/width.js`, so they travel inside the npm package.
10
+
11
+ The complete [Unicode License v3](https://www.unicode.org/license.txt) notice follows.
12
+
13
+ ```text
14
+ UNICODE LICENSE V3
15
+
16
+ COPYRIGHT AND PERMISSION NOTICE
17
+
18
+ Copyright © 1991-2026 Unicode, Inc.
19
+
20
+ NOTICE TO USER: Carefully read the following legal agreement. BY
21
+ DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
22
+ SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
23
+ TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
24
+ DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
25
+
26
+ Permission is hereby granted, free of charge, to any person obtaining a
27
+ copy of data files and any associated documentation (the "Data Files") or
28
+ software and any associated documentation (the "Software") to deal in the
29
+ Data Files or Software without restriction, including without limitation
30
+ the rights to use, copy, modify, merge, publish, distribute, and/or sell
31
+ copies of the Data Files or Software, and to permit persons to whom the
32
+ Data Files or Software are furnished to do so, provided that either (a)
33
+ this copyright and permission notice appear with all copies of the Data
34
+ Files or Software, or (b) this copyright and permission notice appear in
35
+ associated Documentation.
36
+
37
+ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
38
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
39
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
40
+ THIRD PARTY RIGHTS.
41
+
42
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
43
+ BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
44
+ OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
45
+ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
46
+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
47
+ FILES OR SOFTWARE.
48
+
49
+ Except as contained in this notice, the name of a copyright holder shall
50
+ not be used in advertising or otherwise to promote the sale, use or other
51
+ dealings in these Data Files or Software without prior written
52
+ authorization of the copyright holder.
53
+ ```
54
+
55
+ Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
56
+
57
+ ## epoko77-ai/im-not-ai
58
+
59
+ The Korean writing guidance in [agent guidance](https://github.com/awesometic/tonedial/blob/main/AGENTS.md)
60
+ and [contributing](https://github.com/awesometic/tonedial/blob/main/CONTRIBUTING.md) is adapted from
61
+ [epoko77-ai/im-not-ai](https://github.com/epoko77-ai/im-not-ai). Its notice applies to that guidance.
62
+
63
+ ```text
64
+ MIT License
65
+
66
+ Copyright (c) 2026 epoko77-ai
67
+
68
+ Permission is hereby granted, free of charge, to any person obtaining a copy
69
+ of this software and associated documentation files (the "Software"), to deal
70
+ in the Software without restriction, including without limitation the rights
71
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
72
+ copies of the Software, and to permit persons to whom the Software is
73
+ furnished to do so, subject to the following conditions:
74
+
75
+ The above copyright notice and this permission notice shall be included in all
76
+ copies or substantial portions of the Software.
77
+
78
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
79
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
80
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
81
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
82
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
83
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
84
+ SOFTWARE.
85
+ ```
86
+
87
+ ## DietrichGebert/ponytail
88
+
89
+ The concise reuse/standard-library/minimum-needed ladder in [AGENTS.md](https://github.com/awesometic/tonedial/blob/main/AGENTS.md) is adapted from [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail).
90
+
91
+ ```text
92
+ MIT License
93
+
94
+ Copyright (c) 2026 DietrichGebert
95
+
96
+ Permission is hereby granted, free of charge, to any person obtaining a copy
97
+ of this software and associated documentation files (the "Software"), to deal
98
+ in the Software without restriction, including without limitation the rights
99
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
100
+ copies of the Software, and to permit persons to whom the Software is
101
+ furnished to do so, subject to the following conditions:
102
+
103
+ The above copyright notice and this permission notice shall be included in all
104
+ copies or substantial portions of the Software.
105
+
106
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
107
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
108
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
109
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
110
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
111
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
112
+ SOFTWARE.
113
+ ```
package/dist/bin.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ // The executable entry point. Everything it can do lives in cli.ts, so the tests drive the
3
+ // same path a user does rather than a parallel one built for them.
4
+ import { run } from "./cli.js";
5
+ process.exitCode = await run(process.argv.slice(2));