termux-dev 1.8.1 → 1.9.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.
- package/README.md +17 -4
- package/assets/banner.svg +1 -1
- package/assets/preview.svg +1 -1
- package/dist/cli/background-ui.js +116 -0
- package/dist/cli/files.js +2 -12
- package/dist/cli/finder.js +4 -0
- package/dist/cli/headless.js +6 -3
- package/dist/cli/index.js +259 -74
- package/dist/cli/keys.js +12 -3
- package/dist/cli/liveblock.js +38 -9
- package/dist/cli/mcp-panel.js +2 -0
- package/dist/cli/picker.js +2 -0
- package/dist/cli/prompt.js +93 -8
- package/dist/cli/provider-manager.js +197 -0
- package/dist/cli/providers.js +0 -5
- package/dist/cli/settings.js +38 -17
- package/dist/cli/typeahead.js +10 -17
- package/dist/cli/ui.js +189 -32
- package/dist/cli/updater.js +10 -8
- package/dist/cli/usage-panel.js +17 -4
- package/dist/cli/width.js +18 -0
- package/dist/core/background.js +390 -0
- package/dist/core/config-merge.js +67 -0
- package/dist/core/context-stats.js +1 -0
- package/dist/core/cost.js +25 -11
- package/dist/core/custom-providers.js +161 -0
- package/dist/core/images.js +46 -0
- package/dist/core/local-config.js +3 -1
- package/dist/core/locales/de.js +36 -7
- package/dist/core/locales/en.js +36 -7
- package/dist/core/locales/es.js +36 -7
- package/dist/core/locales/fr.js +36 -7
- package/dist/core/locales/ja.js +36 -7
- package/dist/core/locales/pt.js +36 -7
- package/dist/core/locales/ru.js +36 -7
- package/dist/core/locales/uk.js +36 -7
- package/dist/core/locales/zh.js +36 -7
- package/dist/core/loop.js +50 -2
- package/dist/core/prices.js +8 -4
- package/dist/core/session-media.js +115 -0
- package/dist/core/session.js +17 -2
- package/dist/core/title.js +19 -2
- package/dist/core/types.js +1 -1
- package/dist/core/usage.js +41 -4
- package/dist/permissions/guard.js +6 -1
- package/dist/prompts/builder.js +2 -1
- package/dist/providers/anthropic.js +67 -13
- package/dist/providers/index.js +16 -3
- package/dist/providers/openai.js +99 -41
- package/dist/providers/shared.js +83 -0
- package/dist/tools/background.js +118 -0
- package/dist/tools/bash.js +23 -1
- package/dist/tools/fs.js +32 -2
- package/dist/tools/index.js +2 -1
- package/package.json +1 -1
package/dist/core/locales/ja.js
CHANGED
|
@@ -20,25 +20,23 @@ export const ja = {
|
|
|
20
20
|
'conn.classicRestored': '✓ 接続が回復しました。生成を再開します...',
|
|
21
21
|
'stop.connection': '接続をキャンセルしました',
|
|
22
22
|
'stop.stopped': '停止しました',
|
|
23
|
-
'stop.interrupted': '中断しました。メッセージを送信します',
|
|
24
23
|
'stop.classicConnection': '接続をキャンセルしました (Ctrl+C)。',
|
|
25
24
|
'stop.classicStopped': '生成を停止しました (Ctrl+C)。',
|
|
26
|
-
'stop.classicInterrupted': '中断しました:メッセージを送信します。',
|
|
27
25
|
'status.waiting': 'モデルを待機中',
|
|
28
26
|
'status.thinking': '考え中',
|
|
29
27
|
'status.writing': '執筆中',
|
|
30
28
|
'status.running': '実行中',
|
|
31
29
|
'status.reconnecting': '再接続中',
|
|
32
|
-
'status.stop': '
|
|
30
|
+
'status.stop': 'esc で停止',
|
|
33
31
|
'status.thinkingLine': '思考',
|
|
34
32
|
'status.thoughtFor': '{sec} 秒考えました',
|
|
35
33
|
'composer.placeholder': 'タスクを説明するか質問してください…',
|
|
36
34
|
'composer.queued': 'キュー済み',
|
|
37
35
|
'composer.queuedMany': '{n} 件キュー済み',
|
|
38
|
-
'composer.queuedHint': '
|
|
39
|
-
'composer.hint1': 'enter でキュー ·
|
|
36
|
+
'composer.queuedHint': '↓ 編集',
|
|
37
|
+
'composer.hint1': 'enter でキュー · esc で停止',
|
|
40
38
|
'composer.hint2': 'enter でキュー',
|
|
41
|
-
'composer.hint3': 'enter でキュー ·
|
|
39
|
+
'composer.hint3': 'enter でキュー · esc で停止',
|
|
42
40
|
'composer.hint4': 'enter でキュー',
|
|
43
41
|
'summary.toolOne': 'ツール {n} 件',
|
|
44
42
|
'summary.toolMany': 'ツール {n} 件',
|
|
@@ -54,6 +52,7 @@ export const ja = {
|
|
|
54
52
|
'settings.row.layout': 'インターフェース',
|
|
55
53
|
'settings.row.pureBlack': '黒い背景',
|
|
56
54
|
'settings.row.autoApprove': '自動承認 (YOLO)',
|
|
55
|
+
'settings.row.extra': 'Extra(確認なし)',
|
|
57
56
|
'settings.row.maxIterations': '最大ステップ数',
|
|
58
57
|
'settings.row.memory': 'プロジェクトメモリ',
|
|
59
58
|
'settings.row.updates': '更新の確認',
|
|
@@ -63,6 +62,7 @@ export const ja = {
|
|
|
63
62
|
'settings.short.layout': 'UI',
|
|
64
63
|
'settings.short.pureBlack': '黒背景',
|
|
65
64
|
'settings.short.autoApprove': 'YOLO',
|
|
65
|
+
'settings.short.extra': 'Extra',
|
|
66
66
|
'settings.short.maxIterations': '手数',
|
|
67
67
|
'settings.short.memory': 'メモリ',
|
|
68
68
|
'settings.short.updates': '更新',
|
|
@@ -78,12 +78,15 @@ export const ja = {
|
|
|
78
78
|
'settings.hint.layout': 'シンプル:枠付きの入力欄、カード、控えめなツール行。クラシック:従来の ASCII レイアウト。',
|
|
79
79
|
'settings.hint.pureBlack': 'ターミナルの背景を深い OLED ブラック (#0a0a0c) にします。オフなら元の背景のままです。',
|
|
80
80
|
'settings.hint.autoApprove': '通常の許可確認を省略します。危険なコマンドや認証情報ファイルは引き続き確認します。このセッションだけ有効で、次回 devx を起動するとオフに戻ります。',
|
|
81
|
+
'settings.hint.extra': 'どんなコマンドも確認なしで実行します。破壊的なもの(rm -rf、sudo、git push --force)、ダウンロードしたスクリプト、キーや機密の読み取り、新しい MCP サーバーも含みます。サンドボックスはありません。このセッションのみ有効です。',
|
|
81
82
|
'settings.hint.maxIterations': '1 回のリクエストでエージェントが実行できるツールのステップ数(編集、コマンド)です。',
|
|
82
83
|
'settings.hint.memory': '.devx/memory.md のルールを毎回のセッションに読み込みます。',
|
|
83
84
|
'settings.hint.updates': '起動時に GitHub で devx の新バージョンを確認します。/update はどちらでも使えます。',
|
|
84
85
|
'settings.hint.language': 'インターフェースの言語:メッセージ、設定、ヒント。コードとツール名は英語のままです。',
|
|
85
86
|
'settings.hint.about': 'ApvCode 製のターミナル向け AI コーディングエージェント。MIT ライセンス。github.com/apvcode/Termux-Dev',
|
|
86
87
|
'settings.warnYolo': 'オン:エージェントは確認なしにコマンドを実行しファイルを編集します。',
|
|
88
|
+
'settings.warnExtra': '警告:確認は一切行われません。すべて失ってもよい環境でのみ。',
|
|
89
|
+
'settings.extraEnabled': 'Extra がオンです:エージェントは危険なものを含めどんなコマンドも確認なしで実行します。次に devx を起動するとオフに戻ります。',
|
|
87
90
|
'settings.keys.move': '移動',
|
|
88
91
|
'settings.keys.change': '変更',
|
|
89
92
|
'settings.keys.toggle': '切替',
|
|
@@ -219,9 +222,35 @@ export const ja = {
|
|
|
219
222
|
'onboard.language.note': 'あとで /settings から変更できます。',
|
|
220
223
|
'onboard.provider.title': 'プロバイダー',
|
|
221
224
|
'onboard.provider.placeholder': '入力してプロバイダーを探す',
|
|
222
|
-
'onboard.provider.note': '
|
|
225
|
+
'onboard.provider.note': 'モデルを提供するサービスです。一覧にない場合は「プロバイダを追加」で自分のものを追加できます。',
|
|
223
226
|
'onboard.custom': '独自のアドレス',
|
|
224
227
|
'onboard.customDetail': 'OpenAI 互換の任意のアドレス',
|
|
228
|
+
'provider.add': 'プロバイダを追加',
|
|
229
|
+
'provider.addDetail': 'OpenAI または Anthropic 互換の任意のアドレス',
|
|
230
|
+
'provider.customTag': 'カスタム',
|
|
231
|
+
'provider.new': '新しいプロバイダ',
|
|
232
|
+
'provider.name.label': 'プロバイダの名前',
|
|
233
|
+
'provider.name.placeholder': 'マイゲートウェイ',
|
|
234
|
+
'provider.name.empty': '名前を入力してください。',
|
|
235
|
+
'provider.name.long': '名前が長すぎます(最大 40 文字)。',
|
|
236
|
+
'provider.name.taken': '同じ名前のプロバイダがすでにあります。',
|
|
237
|
+
'provider.url.note': '/chat/completions または /messages の手前までのアドレス。例: https://api.example.com/v1',
|
|
238
|
+
'provider.url.invalid': 'アドレスではありません。例: https://api.example.com/v1',
|
|
239
|
+
'provider.url.scheme': 'アドレスは http:// または https:// で始めてください。',
|
|
240
|
+
'provider.key.none': 'キーは不要です',
|
|
241
|
+
'provider.key.noneDetail': 'このコンピュータまたはネットワーク上のサーバー',
|
|
242
|
+
'provider.key.enter': 'キーを入力',
|
|
243
|
+
'provider.menu.use': 'このプロバイダを使う',
|
|
244
|
+
'provider.menu.rename': '名前を変更',
|
|
245
|
+
'provider.menu.url': 'アドレスを変更',
|
|
246
|
+
'provider.menu.key': 'キーを変更',
|
|
247
|
+
'provider.menu.delete': '削除',
|
|
248
|
+
'provider.menu.deleteDetail': 'キーと一緒に削除します',
|
|
249
|
+
'provider.delete.question': 'プロバイダ {name} とそのキーを削除しますか?',
|
|
250
|
+
'provider.delete.active': '使用中のプロバイダです。別のものを選ぶまで引き続き動作します。',
|
|
251
|
+
'provider.saved': 'プロバイダ {name} を保存しました',
|
|
252
|
+
'provider.updated': 'プロバイダ {name} を更新しました',
|
|
253
|
+
'provider.deleted': 'プロバイダ {name} を削除しました',
|
|
225
254
|
'onboard.baseUrl.title': 'アドレス',
|
|
226
255
|
'onboard.baseUrl.label': 'API のベース URL',
|
|
227
256
|
'onboard.baseUrl.placeholder': 'https://api.example.com/v1',
|
package/dist/core/locales/pt.js
CHANGED
|
@@ -20,25 +20,23 @@ export const pt = {
|
|
|
20
20
|
'conn.classicRestored': '✓ Conexão restabelecida! Retomando a geração...',
|
|
21
21
|
'stop.connection': 'conexão cancelada',
|
|
22
22
|
'stop.stopped': 'interrompido',
|
|
23
|
-
'stop.interrupted': 'interrompido, enviando sua mensagem',
|
|
24
23
|
'stop.classicConnection': 'Conexão cancelada (Ctrl+C).',
|
|
25
24
|
'stop.classicStopped': 'Geração interrompida (Ctrl+C).',
|
|
26
|
-
'stop.classicInterrupted': 'Interrompido: enviando sua mensagem.',
|
|
27
25
|
'status.waiting': 'Aguardando o modelo',
|
|
28
26
|
'status.thinking': 'Pensando',
|
|
29
27
|
'status.writing': 'Escrevendo',
|
|
30
28
|
'status.running': 'Executando',
|
|
31
29
|
'status.reconnecting': 'Reconectando',
|
|
32
|
-
'status.stop': '
|
|
30
|
+
'status.stop': 'esc para parar',
|
|
33
31
|
'status.thinkingLine': 'pensando',
|
|
34
32
|
'status.thoughtFor': 'pensou {sec} s',
|
|
35
33
|
'composer.placeholder': 'Descreva uma tarefa ou faça uma pergunta…',
|
|
36
34
|
'composer.queued': 'na fila',
|
|
37
35
|
'composer.queuedMany': '{n} na fila',
|
|
38
|
-
'composer.queuedHint': '
|
|
39
|
-
'composer.hint1': 'enter enfileira ·
|
|
36
|
+
'composer.queuedHint': '↓ editar',
|
|
37
|
+
'composer.hint1': 'enter enfileira · esc para',
|
|
40
38
|
'composer.hint2': 'enter enfileira',
|
|
41
|
-
'composer.hint3': 'enter enfileira ·
|
|
39
|
+
'composer.hint3': 'enter enfileira · esc para',
|
|
42
40
|
'composer.hint4': 'enter enfileira',
|
|
43
41
|
'summary.toolOne': '{n} ferramenta',
|
|
44
42
|
'summary.toolMany': '{n} ferramentas',
|
|
@@ -54,6 +52,7 @@ export const pt = {
|
|
|
54
52
|
'settings.row.layout': 'Interface',
|
|
55
53
|
'settings.row.pureBlack': 'Fundo preto',
|
|
56
54
|
'settings.row.autoApprove': 'Autoaprovar (YOLO)',
|
|
55
|
+
'settings.row.extra': 'Extra (sem perguntar)',
|
|
57
56
|
'settings.row.maxIterations': 'Máx. de passos',
|
|
58
57
|
'settings.row.memory': 'Memória do projeto',
|
|
59
58
|
'settings.row.updates': 'Buscar atualizações',
|
|
@@ -63,6 +62,7 @@ export const pt = {
|
|
|
63
62
|
'settings.short.layout': 'Interface',
|
|
64
63
|
'settings.short.pureBlack': 'Fundo preto',
|
|
65
64
|
'settings.short.autoApprove': 'YOLO',
|
|
65
|
+
'settings.short.extra': 'Extra',
|
|
66
66
|
'settings.short.maxIterations': 'Passos',
|
|
67
67
|
'settings.short.memory': 'Memória',
|
|
68
68
|
'settings.short.updates': 'Atualiz.',
|
|
@@ -78,12 +78,15 @@ export const pt = {
|
|
|
78
78
|
'settings.hint.layout': 'Limpa: entrada com moldura, cartões e linhas de ferramentas discretas. Clássica: o layout ASCII original.',
|
|
79
79
|
'settings.hint.pureBlack': 'Deixa o fundo do terminal em preto OLED profundo (#0a0a0c). Desligado mantém o seu fundo.',
|
|
80
80
|
'settings.hint.autoApprove': 'Pula as permissões de rotina. Comandos perigosos e arquivos de credenciais continuam perguntando. Vale só para esta sessão: na próxima vez que o devx iniciar, volta a ficar desligado.',
|
|
81
|
+
'settings.hint.extra': 'Executa QUALQUER comando sem perguntar: também os destrutivos (rm -rf, sudo, git push --force), scripts baixados, leitura de chaves e segredos e novos servidores MCP. Aqui não há sandbox. Vale só para esta sessão.',
|
|
81
82
|
'settings.hint.maxIterations': 'Quantos passos com ferramentas (edições, comandos) o agente pode dar por pedido.',
|
|
82
83
|
'settings.hint.memory': 'Carrega as regras de .devx/memory.md em cada sessão.',
|
|
83
84
|
'settings.hint.updates': 'Procura uma nova versão do devx no GitHub ao iniciar. O /update funciona de qualquer forma.',
|
|
84
85
|
'settings.hint.language': 'Idioma da interface: mensagens, configurações e dicas. Código e nomes de ferramentas continuam em inglês.',
|
|
85
86
|
'settings.hint.about': 'Agente de programação com IA para o terminal, da ApvCode. Licença MIT. github.com/apvcode/Termux-Dev',
|
|
86
87
|
'settings.warnYolo': 'Ligado: o agente executa comandos e edita arquivos sem perguntar.',
|
|
88
|
+
'settings.warnExtra': 'Atenção: nada é perguntado. Só onde puder perder tudo.',
|
|
89
|
+
'settings.extraEnabled': 'Extra está ligado: o agente executa qualquer comando sem perguntar, inclusive os perigosos. Ele volta a ficar desligado na próxima vez que o devx iniciar.',
|
|
87
90
|
'settings.keys.move': 'mover',
|
|
88
91
|
'settings.keys.change': 'alterar',
|
|
89
92
|
'settings.keys.toggle': 'alternar',
|
|
@@ -219,9 +222,35 @@ export const pt = {
|
|
|
219
222
|
'onboard.language.note': 'Você pode mudar depois em /settings.',
|
|
220
223
|
'onboard.provider.title': 'provedor',
|
|
221
224
|
'onboard.provider.placeholder': 'digite para encontrar um provedor',
|
|
222
|
-
'onboard.provider.note': 'O serviço que fornece os modelos. Não está na lista?
|
|
225
|
+
'onboard.provider.note': 'O serviço que fornece os modelos. Não está na lista? Adicione o seu em «Adicionar provedor».',
|
|
223
226
|
'onboard.custom': 'Endereço próprio',
|
|
224
227
|
'onboard.customDetail': 'Qualquer endereço compatível com OpenAI',
|
|
228
|
+
'provider.add': 'Adicionar provedor',
|
|
229
|
+
'provider.addDetail': 'Qualquer endereço compatível com OpenAI ou Anthropic',
|
|
230
|
+
'provider.customTag': 'próprio',
|
|
231
|
+
'provider.new': 'novo provedor',
|
|
232
|
+
'provider.name.label': 'Nome do provedor',
|
|
233
|
+
'provider.name.placeholder': 'Meu gateway',
|
|
234
|
+
'provider.name.empty': 'Digite um nome.',
|
|
235
|
+
'provider.name.long': 'O nome é longo demais (no máximo 40 caracteres).',
|
|
236
|
+
'provider.name.taken': 'Já existe um provedor com esse nome.',
|
|
237
|
+
'provider.url.note': 'O endereço até /chat/completions ou /messages, por exemplo https://api.example.com/v1.',
|
|
238
|
+
'provider.url.invalid': 'Isso não é um endereço. Exemplo: https://api.example.com/v1',
|
|
239
|
+
'provider.url.scheme': 'O endereço deve começar com http:// ou https://.',
|
|
240
|
+
'provider.key.none': 'Não precisa de chave',
|
|
241
|
+
'provider.key.noneDetail': 'Um servidor neste computador ou nesta rede',
|
|
242
|
+
'provider.key.enter': 'Digitar uma chave',
|
|
243
|
+
'provider.menu.use': 'Usar este provedor',
|
|
244
|
+
'provider.menu.rename': 'Mudar o nome',
|
|
245
|
+
'provider.menu.url': 'Mudar o endereço',
|
|
246
|
+
'provider.menu.key': 'Mudar a chave',
|
|
247
|
+
'provider.menu.delete': 'Excluir',
|
|
248
|
+
'provider.menu.deleteDetail': 'Remove-o junto com a chave',
|
|
249
|
+
'provider.delete.question': 'Excluir o provedor {name} e a chave dele?',
|
|
250
|
+
'provider.delete.active': 'É o provedor em uso: continua funcionando até você escolher outro.',
|
|
251
|
+
'provider.saved': 'Provedor {name} salvo',
|
|
252
|
+
'provider.updated': 'Provedor {name} atualizado',
|
|
253
|
+
'provider.deleted': 'Provedor {name} excluído',
|
|
225
254
|
'onboard.baseUrl.title': 'endereço',
|
|
226
255
|
'onboard.baseUrl.label': 'URL base da API',
|
|
227
256
|
'onboard.baseUrl.placeholder': 'https://api.example.com/v1',
|
package/dist/core/locales/ru.js
CHANGED
|
@@ -20,25 +20,23 @@ export const ru = {
|
|
|
20
20
|
'conn.classicRestored': '✓ Соединение восстановлено! Возобновляем генерацию...',
|
|
21
21
|
'stop.connection': 'подключение отменено',
|
|
22
22
|
'stop.stopped': 'остановлено',
|
|
23
|
-
'stop.interrupted': 'прервано, отправляю ваше сообщение',
|
|
24
23
|
'stop.classicConnection': 'Подключение отменено (Ctrl+C).',
|
|
25
24
|
'stop.classicStopped': 'Ответ остановлен (Ctrl+C).',
|
|
26
|
-
'stop.classicInterrupted': 'Прервано: отправляю ваше сообщение.',
|
|
27
25
|
'status.waiting': 'Ожидание модели',
|
|
28
26
|
'status.thinking': 'Думает',
|
|
29
27
|
'status.writing': 'Пишет',
|
|
30
28
|
'status.running': 'Выполняется',
|
|
31
29
|
'status.reconnecting': 'Переподключение',
|
|
32
|
-
'status.stop': '
|
|
30
|
+
'status.stop': 'esc — стоп',
|
|
33
31
|
'status.thinkingLine': 'размышление',
|
|
34
32
|
'status.thoughtFor': 'думал {sec} с',
|
|
35
33
|
'composer.placeholder': 'Опишите задачу или задайте вопрос…',
|
|
36
34
|
'composer.queued': 'в очереди',
|
|
37
35
|
'composer.queuedMany': 'в очереди: {n}',
|
|
38
|
-
'composer.queuedHint': '
|
|
39
|
-
'composer.hint1': 'enter — в очередь ·
|
|
36
|
+
'composer.queuedHint': '↓ править',
|
|
37
|
+
'composer.hint1': 'enter — в очередь · esc — стоп',
|
|
40
38
|
'composer.hint2': 'enter — в очередь',
|
|
41
|
-
'composer.hint3': 'enter — в очередь ·
|
|
39
|
+
'composer.hint3': 'enter — в очередь · esc — стоп',
|
|
42
40
|
'composer.hint4': 'enter — в очередь',
|
|
43
41
|
'summary.toolOne': 'инструментов: {n}',
|
|
44
42
|
'summary.toolMany': 'инструментов: {n}',
|
|
@@ -54,6 +52,7 @@ export const ru = {
|
|
|
54
52
|
'settings.row.layout': 'Интерфейс',
|
|
55
53
|
'settings.row.pureBlack': 'Чёрный фон',
|
|
56
54
|
'settings.row.autoApprove': 'Автоодобрение (YOLO)',
|
|
55
|
+
'settings.row.extra': 'Extra (без вопросов)',
|
|
57
56
|
'settings.row.maxIterations': 'Макс. шагов',
|
|
58
57
|
'settings.row.memory': 'Память проекта',
|
|
59
58
|
'settings.row.updates': 'Проверка обновлений',
|
|
@@ -63,6 +62,7 @@ export const ru = {
|
|
|
63
62
|
'settings.short.layout': 'Интерфейс',
|
|
64
63
|
'settings.short.pureBlack': 'Чёрный фон',
|
|
65
64
|
'settings.short.autoApprove': 'YOLO',
|
|
65
|
+
'settings.short.extra': 'Extra',
|
|
66
66
|
'settings.short.maxIterations': 'Шагов',
|
|
67
67
|
'settings.short.memory': 'Память',
|
|
68
68
|
'settings.short.updates': 'Обновл.',
|
|
@@ -78,12 +78,15 @@ export const ru = {
|
|
|
78
78
|
'settings.hint.layout': 'Чистый: рамка у ввода, карточки и спокойные строки инструментов. Классический: прежний ASCII-вид.',
|
|
79
79
|
'settings.hint.pureBlack': 'Делает фон терминала глубоким чёрным для OLED (#0a0a0c). Выключено — остаётся ваш фон.',
|
|
80
80
|
'settings.hint.autoApprove': 'Пропускает обычные запросы разрешений. Опасные команды и файлы с ключами всё равно спрашивают. Действует только в этой сессии: при следующем запуске devx выключено.',
|
|
81
|
+
'settings.hint.extra': 'Выполняет ЛЮБЫЕ команды без вопросов: и разрушительные (rm -rf, sudo, git push --force), и скачанные скрипты, и чтение ключей и секретов, и новые MCP-серверы. Никакой песочницы нет. Действует только в этой сессии.',
|
|
81
82
|
'settings.hint.maxIterations': 'Сколько шагов с инструментами (правки файлов, команды) агент может сделать на один запрос.',
|
|
82
83
|
'settings.hint.memory': 'Загружает правила из .devx/memory.md в каждую сессию.',
|
|
83
84
|
'settings.hint.updates': 'При запуске ищет новую версию devx на GitHub. Команда /update работает в любом случае.',
|
|
84
85
|
'settings.hint.language': 'Язык интерфейса: сообщения, настройки и подсказки. Код и названия инструментов остаются английскими.',
|
|
85
86
|
'settings.hint.about': 'Терминальный ИИ-агент для программирования от ApvCode. Лицензия MIT. github.com/apvcode/Termux-Dev',
|
|
86
87
|
'settings.warnYolo': 'Включено: агент выполняет команды и правит файлы без вопросов.',
|
|
88
|
+
'settings.warnExtra': 'Внимание: ничего не спрашивается. Только где не жалко всё.',
|
|
89
|
+
'settings.extraEnabled': 'Extra включён: агент выполняет любые команды без вопросов, в том числе опасные. При следующем запуске devx он снова выключен.',
|
|
87
90
|
'settings.keys.move': 'выбор',
|
|
88
91
|
'settings.keys.change': 'изменить',
|
|
89
92
|
'settings.keys.toggle': 'переключить',
|
|
@@ -219,9 +222,35 @@ export const ru = {
|
|
|
219
222
|
'onboard.language.note': 'Позже его можно сменить в /settings.',
|
|
220
223
|
'onboard.provider.title': 'провайдер',
|
|
221
224
|
'onboard.provider.placeholder': 'начни вводить название',
|
|
222
|
-
'onboard.provider.note': 'Сервис, который даёт модели. Нет в списке?
|
|
225
|
+
'onboard.provider.note': 'Сервис, который даёт модели. Нет в списке? Добавьте свой через «Добавить провайдера».',
|
|
223
226
|
'onboard.custom': 'Свой адрес',
|
|
224
227
|
'onboard.customDetail': 'Любой адрес, совместимый с OpenAI',
|
|
228
|
+
'provider.add': 'Добавить провайдера',
|
|
229
|
+
'provider.addDetail': 'Любой адрес, совместимый с OpenAI или Anthropic',
|
|
230
|
+
'provider.customTag': 'свой',
|
|
231
|
+
'provider.new': 'новый провайдер',
|
|
232
|
+
'provider.name.label': 'Название провайдера',
|
|
233
|
+
'provider.name.placeholder': 'Мой шлюз',
|
|
234
|
+
'provider.name.empty': 'Введите название.',
|
|
235
|
+
'provider.name.long': 'Название слишком длинное (не больше 40 символов).',
|
|
236
|
+
'provider.name.taken': 'Провайдер с таким названием уже есть.',
|
|
237
|
+
'provider.url.note': 'Адрес до /chat/completions или /messages, например https://api.example.com/v1.',
|
|
238
|
+
'provider.url.invalid': 'Это не адрес. Пример: https://api.example.com/v1',
|
|
239
|
+
'provider.url.scheme': 'Адрес должен начинаться с http:// или https://.',
|
|
240
|
+
'provider.key.none': 'Ключ не нужен',
|
|
241
|
+
'provider.key.noneDetail': 'Сервер на этом компьютере или в этой сети',
|
|
242
|
+
'provider.key.enter': 'Ввести ключ',
|
|
243
|
+
'provider.menu.use': 'Использовать этого провайдера',
|
|
244
|
+
'provider.menu.rename': 'Изменить название',
|
|
245
|
+
'provider.menu.url': 'Изменить адрес',
|
|
246
|
+
'provider.menu.key': 'Изменить ключ',
|
|
247
|
+
'provider.menu.delete': 'Удалить',
|
|
248
|
+
'provider.menu.deleteDetail': 'Удалит провайдера и его ключ',
|
|
249
|
+
'provider.delete.question': 'Удалить провайдера {name} и его ключ?',
|
|
250
|
+
'provider.delete.active': 'Это текущий провайдер: он продолжит работать, пока вы не выберете другой.',
|
|
251
|
+
'provider.saved': 'Провайдер {name} сохранён',
|
|
252
|
+
'provider.updated': 'Провайдер {name} обновлён',
|
|
253
|
+
'provider.deleted': 'Провайдер {name} удалён',
|
|
225
254
|
'onboard.baseUrl.title': 'адрес',
|
|
226
255
|
'onboard.baseUrl.label': 'Базовый URL API',
|
|
227
256
|
'onboard.baseUrl.placeholder': 'https://api.example.com/v1',
|
package/dist/core/locales/uk.js
CHANGED
|
@@ -20,25 +20,23 @@ export const uk = {
|
|
|
20
20
|
'conn.classicRestored': '✓ З’єднання відновлено! Продовжуємо генерацію...',
|
|
21
21
|
'stop.connection': 'підключення скасовано',
|
|
22
22
|
'stop.stopped': 'зупинено',
|
|
23
|
-
'stop.interrupted': 'перервано, надсилаю ваше повідомлення',
|
|
24
23
|
'stop.classicConnection': 'Підключення скасовано (Ctrl+C).',
|
|
25
24
|
'stop.classicStopped': 'Відповідь зупинено (Ctrl+C).',
|
|
26
|
-
'stop.classicInterrupted': 'Перервано: надсилаю ваше повідомлення.',
|
|
27
25
|
'status.waiting': 'Очікування моделі',
|
|
28
26
|
'status.thinking': 'Думає',
|
|
29
27
|
'status.writing': 'Пише',
|
|
30
28
|
'status.running': 'Виконується',
|
|
31
29
|
'status.reconnecting': 'Перепідключення',
|
|
32
|
-
'status.stop': '
|
|
30
|
+
'status.stop': 'esc — стоп',
|
|
33
31
|
'status.thinkingLine': 'роздуми',
|
|
34
32
|
'status.thoughtFor': 'думав {sec} с',
|
|
35
33
|
'composer.placeholder': 'Опишіть завдання або поставте питання…',
|
|
36
34
|
'composer.queued': 'у черзі',
|
|
37
35
|
'composer.queuedMany': 'у черзі: {n}',
|
|
38
|
-
'composer.queuedHint': '
|
|
39
|
-
'composer.hint1': 'enter — у чергу ·
|
|
36
|
+
'composer.queuedHint': '↓ редагувати',
|
|
37
|
+
'composer.hint1': 'enter — у чергу · esc — стоп',
|
|
40
38
|
'composer.hint2': 'enter — у чергу',
|
|
41
|
-
'composer.hint3': 'enter — у чергу ·
|
|
39
|
+
'composer.hint3': 'enter — у чергу · esc — стоп',
|
|
42
40
|
'composer.hint4': 'enter — у чергу',
|
|
43
41
|
'summary.toolOne': 'інструментів: {n}',
|
|
44
42
|
'summary.toolMany': 'інструментів: {n}',
|
|
@@ -54,6 +52,7 @@ export const uk = {
|
|
|
54
52
|
'settings.row.layout': 'Інтерфейс',
|
|
55
53
|
'settings.row.pureBlack': 'Чорний фон',
|
|
56
54
|
'settings.row.autoApprove': 'Автосхвалення (YOLO)',
|
|
55
|
+
'settings.row.extra': 'Extra (без питань)',
|
|
57
56
|
'settings.row.maxIterations': 'Макс. кроків',
|
|
58
57
|
'settings.row.memory': 'Пам’ять проєкту',
|
|
59
58
|
'settings.row.updates': 'Перевірка оновлень',
|
|
@@ -63,6 +62,7 @@ export const uk = {
|
|
|
63
62
|
'settings.short.layout': 'Інтерфейс',
|
|
64
63
|
'settings.short.pureBlack': 'Чорний фон',
|
|
65
64
|
'settings.short.autoApprove': 'YOLO',
|
|
65
|
+
'settings.short.extra': 'Extra',
|
|
66
66
|
'settings.short.maxIterations': 'Кроків',
|
|
67
67
|
'settings.short.memory': 'Пам’ять',
|
|
68
68
|
'settings.short.updates': 'Оновл.',
|
|
@@ -78,12 +78,15 @@ export const uk = {
|
|
|
78
78
|
'settings.hint.layout': 'Чистий: рамка біля вводу, картки й спокійні рядки інструментів. Класичний: колишній ASCII-вигляд.',
|
|
79
79
|
'settings.hint.pureBlack': 'Робить тло термінала глибоким чорним для OLED (#0a0a0c). Вимкнено — лишається ваше тло.',
|
|
80
80
|
'settings.hint.autoApprove': 'Пропускає звичайні запити дозволів. Небезпечні команди й файли з ключами все одно питають. Діє лише в цій сесії: під час наступного запуску devx вимкнено.',
|
|
81
|
+
'settings.hint.extra': 'Виконує БУДЬ-ЯКІ команди без питань: і руйнівні (rm -rf, sudo, git push --force), і завантажені скрипти, і читання ключів та секретів, і нові MCP-сервери. Жодної пісочниці немає. Діє лише в цій сесії.',
|
|
81
82
|
'settings.hint.maxIterations': 'Скільки кроків з інструментами (правки файлів, команди) агент може зробити на один запит.',
|
|
82
83
|
'settings.hint.memory': 'Завантажує правила з .devx/memory.md у кожну сесію.',
|
|
83
84
|
'settings.hint.updates': 'Під час запуску шукає нову версію devx на GitHub. Команда /update працює в будь-якому разі.',
|
|
84
85
|
'settings.hint.language': 'Мова інтерфейсу: повідомлення, налаштування й підказки. Код і назви інструментів лишаються англійськими.',
|
|
85
86
|
'settings.hint.about': 'Терміналний ШІ-агент для програмування від ApvCode. Ліцензія MIT. github.com/apvcode/Termux-Dev',
|
|
86
87
|
'settings.warnYolo': 'Увімкнено: агент виконує команди й правит файли без питань.',
|
|
88
|
+
'settings.warnExtra': 'Увага: нічого не питається. Лише де не шкода все.',
|
|
89
|
+
'settings.extraEnabled': 'Extra увімкнено: агент виконує будь-які команди без питань, зокрема небезпечні. Під час наступного запуску devx він знову вимкнений.',
|
|
87
90
|
'settings.keys.move': 'вибір',
|
|
88
91
|
'settings.keys.change': 'змінити',
|
|
89
92
|
'settings.keys.toggle': 'перемкнути',
|
|
@@ -219,9 +222,35 @@ export const uk = {
|
|
|
219
222
|
'onboard.language.note': 'Пізніше її можна змінити в /settings.',
|
|
220
223
|
'onboard.provider.title': 'провайдер',
|
|
221
224
|
'onboard.provider.placeholder': 'почни вводити назву',
|
|
222
|
-
'onboard.provider.note': 'Сервіс, що
|
|
225
|
+
'onboard.provider.note': 'Сервіс, що дає моделі. Немає в списку? Додайте свій через «Додати провайдера».',
|
|
223
226
|
'onboard.custom': 'Власна адреса',
|
|
224
227
|
'onboard.customDetail': 'Будь-яка адреса, сумісна з OpenAI',
|
|
228
|
+
'provider.add': 'Додати провайдера',
|
|
229
|
+
'provider.addDetail': 'Будь-яка адреса, сумісна з OpenAI або Anthropic',
|
|
230
|
+
'provider.customTag': 'власний',
|
|
231
|
+
'provider.new': 'новий провайдер',
|
|
232
|
+
'provider.name.label': 'Назва провайдера',
|
|
233
|
+
'provider.name.placeholder': 'Мій шлюз',
|
|
234
|
+
'provider.name.empty': 'Введіть назву.',
|
|
235
|
+
'provider.name.long': 'Назва задовга (не більше 40 символів).',
|
|
236
|
+
'provider.name.taken': 'Провайдер із такою назвою вже є.',
|
|
237
|
+
'provider.url.note': 'Адреса до /chat/completions або /messages, наприклад https://api.example.com/v1.',
|
|
238
|
+
'provider.url.invalid': 'Це не адреса. Приклад: https://api.example.com/v1',
|
|
239
|
+
'provider.url.scheme': 'Адреса має починатися з http:// або https://.',
|
|
240
|
+
'provider.key.none': 'Ключ не потрібен',
|
|
241
|
+
'provider.key.noneDetail': 'Сервер на цьому комп’ютері або в цій мережі',
|
|
242
|
+
'provider.key.enter': 'Ввести ключ',
|
|
243
|
+
'provider.menu.use': 'Використати цього провайдера',
|
|
244
|
+
'provider.menu.rename': 'Змінити назву',
|
|
245
|
+
'provider.menu.url': 'Змінити адресу',
|
|
246
|
+
'provider.menu.key': 'Змінити ключ',
|
|
247
|
+
'provider.menu.delete': 'Видалити',
|
|
248
|
+
'provider.menu.deleteDetail': 'Видалить провайдера і його ключ',
|
|
249
|
+
'provider.delete.question': 'Видалити провайдера {name} і його ключ?',
|
|
250
|
+
'provider.delete.active': 'Це поточний провайдер: він працюватиме, доки ви не оберете інший.',
|
|
251
|
+
'provider.saved': 'Провайдера {name} збережено',
|
|
252
|
+
'provider.updated': 'Провайдера {name} оновлено',
|
|
253
|
+
'provider.deleted': 'Провайдера {name} видалено',
|
|
225
254
|
'onboard.baseUrl.title': 'адреса',
|
|
226
255
|
'onboard.baseUrl.label': 'Базовий URL API',
|
|
227
256
|
'onboard.baseUrl.placeholder': 'https://api.example.com/v1',
|
package/dist/core/locales/zh.js
CHANGED
|
@@ -20,25 +20,23 @@ export const zh = {
|
|
|
20
20
|
'conn.classicRestored': '✓ 连接已恢复!继续生成...',
|
|
21
21
|
'stop.connection': '连接已取消',
|
|
22
22
|
'stop.stopped': '已停止',
|
|
23
|
-
'stop.interrupted': '已中断,正在发送你的消息',
|
|
24
23
|
'stop.classicConnection': '连接已取消 (Ctrl+C)。',
|
|
25
24
|
'stop.classicStopped': '生成已停止 (Ctrl+C)。',
|
|
26
|
-
'stop.classicInterrupted': '已中断:正在发送你的消息。',
|
|
27
25
|
'status.waiting': '等待模型',
|
|
28
26
|
'status.thinking': '思考中',
|
|
29
27
|
'status.writing': '撰写中',
|
|
30
28
|
'status.running': '运行中',
|
|
31
29
|
'status.reconnecting': '重连中',
|
|
32
|
-
'status.stop': '
|
|
30
|
+
'status.stop': 'esc 停止',
|
|
33
31
|
'status.thinkingLine': '思考',
|
|
34
32
|
'status.thoughtFor': '思考了 {sec} 秒',
|
|
35
33
|
'composer.placeholder': '描述任务或提出问题…',
|
|
36
34
|
'composer.queued': '已排队',
|
|
37
35
|
'composer.queuedMany': '{n} 条已排队',
|
|
38
|
-
'composer.queuedHint': '
|
|
39
|
-
'composer.hint1': 'enter 排队 ·
|
|
36
|
+
'composer.queuedHint': '↓ 编辑',
|
|
37
|
+
'composer.hint1': 'enter 排队 · esc 停止',
|
|
40
38
|
'composer.hint2': 'enter 排队',
|
|
41
|
-
'composer.hint3': 'enter 排队 ·
|
|
39
|
+
'composer.hint3': 'enter 排队 · esc 停止',
|
|
42
40
|
'composer.hint4': 'enter 排队',
|
|
43
41
|
'summary.toolOne': '{n} 个工具',
|
|
44
42
|
'summary.toolMany': '{n} 个工具',
|
|
@@ -54,6 +52,7 @@ export const zh = {
|
|
|
54
52
|
'settings.row.layout': '界面',
|
|
55
53
|
'settings.row.pureBlack': '黑色背景',
|
|
56
54
|
'settings.row.autoApprove': '自动批准 (YOLO)',
|
|
55
|
+
'settings.row.extra': 'Extra(不再询问)',
|
|
57
56
|
'settings.row.maxIterations': '最大步数',
|
|
58
57
|
'settings.row.memory': '项目记忆',
|
|
59
58
|
'settings.row.updates': '检查更新',
|
|
@@ -63,6 +62,7 @@ export const zh = {
|
|
|
63
62
|
'settings.short.layout': '界面',
|
|
64
63
|
'settings.short.pureBlack': '黑背景',
|
|
65
64
|
'settings.short.autoApprove': 'YOLO',
|
|
65
|
+
'settings.short.extra': 'Extra',
|
|
66
66
|
'settings.short.maxIterations': '步数',
|
|
67
67
|
'settings.short.memory': '记忆',
|
|
68
68
|
'settings.short.updates': '更新',
|
|
@@ -78,12 +78,15 @@ export const zh = {
|
|
|
78
78
|
'settings.hint.layout': '简洁:带边框的输入框、卡片和安静的工具行。经典:原来的 ASCII 布局。',
|
|
79
79
|
'settings.hint.pureBlack': '将终端背景设为深邃的 OLED 黑 (#0a0a0c)。关闭则保留你自己的背景。',
|
|
80
80
|
'settings.hint.autoApprove': '跳过常规的权限确认。危险命令和凭据文件仍会先询问。仅在本次会话有效:下次启动 devx 时会重新关闭。',
|
|
81
|
+
'settings.hint.extra': '不经询问执行任何命令:包括破坏性命令(rm -rf、sudo、git push --force)、下载的脚本、读取密钥和机密,以及新的 MCP 服务器。这里没有沙箱。仅在本次会话有效。',
|
|
81
82
|
'settings.hint.maxIterations': '智能体处理一次请求最多可执行多少个工具步骤(编辑文件、运行命令)。',
|
|
82
83
|
'settings.hint.memory': '每次会话都会加载 .devx/memory.md 中的规则。',
|
|
83
84
|
'settings.hint.updates': '启动时在 GitHub 上查找 devx 新版本。无论开关,/update 都可用。',
|
|
84
85
|
'settings.hint.language': '界面语言:消息、设置和提示。代码和工具名称保持英文。',
|
|
85
86
|
'settings.hint.about': 'ApvCode 出品的终端原生 AI 编程智能体。MIT 许可证。github.com/apvcode/Termux-Dev',
|
|
86
87
|
'settings.warnYolo': '已开启:智能体将不经询问直接运行命令并编辑文件。',
|
|
88
|
+
'settings.warnExtra': '警告:不再询问任何事,仅在可承受全部丢失的环境中使用。',
|
|
89
|
+
'settings.extraEnabled': 'Extra 已开启:智能体将不经询问执行任何命令,包括危险命令。下次启动 devx 时会再次关闭。',
|
|
87
90
|
'settings.keys.move': '移动',
|
|
88
91
|
'settings.keys.change': '更改',
|
|
89
92
|
'settings.keys.toggle': '切换',
|
|
@@ -219,9 +222,35 @@ export const zh = {
|
|
|
219
222
|
'onboard.language.note': '之后可以在 /settings 中更改。',
|
|
220
223
|
'onboard.provider.title': '服务商',
|
|
221
224
|
'onboard.provider.placeholder': '输入以查找服务商',
|
|
222
|
-
'onboard.provider.note': '
|
|
225
|
+
'onboard.provider.note': '为你提供模型的服务。不在列表里?用“添加提供商”添加你自己的。',
|
|
223
226
|
'onboard.custom': '自定义地址',
|
|
224
227
|
'onboard.customDetail': '任何兼容 OpenAI 的地址',
|
|
228
|
+
'provider.add': '添加提供商',
|
|
229
|
+
'provider.addDetail': '任何兼容 OpenAI 或 Anthropic 的地址',
|
|
230
|
+
'provider.customTag': '自定义',
|
|
231
|
+
'provider.new': '新提供商',
|
|
232
|
+
'provider.name.label': '提供商名称',
|
|
233
|
+
'provider.name.placeholder': '我的网关',
|
|
234
|
+
'provider.name.empty': '请输入名称。',
|
|
235
|
+
'provider.name.long': '名称太长(最多 40 个字符)。',
|
|
236
|
+
'provider.name.taken': '已有同名的提供商。',
|
|
237
|
+
'provider.url.note': '到 /chat/completions 或 /messages 之前的地址,例如 https://api.example.com/v1。',
|
|
238
|
+
'provider.url.invalid': '这不是有效的地址。示例:https://api.example.com/v1',
|
|
239
|
+
'provider.url.scheme': '地址必须以 http:// 或 https:// 开头。',
|
|
240
|
+
'provider.key.none': '不需要密钥',
|
|
241
|
+
'provider.key.noneDetail': '本机或本网络上的服务器',
|
|
242
|
+
'provider.key.enter': '输入密钥',
|
|
243
|
+
'provider.menu.use': '使用此提供商',
|
|
244
|
+
'provider.menu.rename': '修改名称',
|
|
245
|
+
'provider.menu.url': '修改地址',
|
|
246
|
+
'provider.menu.key': '修改密钥',
|
|
247
|
+
'provider.menu.delete': '删除',
|
|
248
|
+
'provider.menu.deleteDetail': '连同密钥一起移除',
|
|
249
|
+
'provider.delete.question': '删除提供商 {name} 及其密钥?',
|
|
250
|
+
'provider.delete.active': '这是正在使用的提供商:在你选择其他提供商之前它仍可继续使用。',
|
|
251
|
+
'provider.saved': '提供商 {name} 已保存',
|
|
252
|
+
'provider.updated': '提供商 {name} 已更新',
|
|
253
|
+
'provider.deleted': '提供商 {name} 已删除',
|
|
225
254
|
'onboard.baseUrl.title': '地址',
|
|
226
255
|
'onboard.baseUrl.label': 'API 的基础 URL',
|
|
227
256
|
'onboard.baseUrl.placeholder': 'https://api.example.com/v1',
|