Skip to content

Commit 0bbd52a

Browse files
committed
Extract headless CLI invocation translations into a dedicated feature module
- translations in `apps/editor/src/features/headless-cli-invocation` have incorrrect keys └── apps └── editor └── src ├── features │ ├── checkpoints │ │ ├── actions │ │ │ ├── accept-checkpoint.ts │ │ │ ├── create-checkpoint.ts │ │ │ ├── delete-checkpoint.ts │ │ │ ├── get-checkpoints.ts │ │ │ └── index.ts │ │ ├── types │ │ │ ├── checkpoint.ts │ │ │ └── index.ts │ │ └── utils │ │ ├── copy-optimised-recursively.ts │ │ ├── get-checkpoint-path.ts │ │ ├── get-incremented-description.ts │ │ ├── git-utils.ts │ │ └── index.ts │ └── headless-cli-invocation │ ├── agents │ │ ├── antigravity.ts │ │ ├── claude.ts │ │ ├── codex.ts │ │ ├── cursor.ts │ │ ├── grok.ts │ │ ├── index.ts │ │ ├── muse.ts │ │ └── opencode.ts │ ├── index.ts │ ├── invoke-headless-cli.ts │ ├── types.ts │ └── utils │ ├── check-command-exists.ts │ ├── format-duration.ts │ └── get-progress-dots.ts ├── i18n │ ├── index.ts │ └── translations │ ├── features │ │ ├── checkpoints.ts │ │ ├── headless-cli-invocation.ts │ │ └── index.ts │ └── views │ ├── index.ts │ └── prompt │ ├── handlers │ │ ├── handle-agentic-search.ts │ │ ├── handle-invoke-headless-cli.ts │ │ └── index.ts │ └── index.ts └── views └── prompt └── backend └── message-handlers ├── handle-agentic-search │ └── agentic-search.ts └── handle-invoke-headless-cli.ts
1 parent 918961b commit 0bbd52a

6 files changed

Lines changed: 256 additions & 264 deletions

File tree

‎apps/editor/src/features/headless-cli-invocation/invoke-headless-cli.ts‎

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -43,24 +43,22 @@ export const invoke_headless_cli = async (params: {
4343

4444
if (available_agents.length == 0) {
4545
vscode.window.showInformationMessage(
46-
t('views.prompt.handlers.handle-agentic-search.info.no-agents')
46+
t('feature.headless-cli-invocation.info.no-agents')
4747
)
4848
return undefined
4949
}
5050

5151
const add_button = {
5252
iconPath: new vscode.ThemeIcon('flag'),
53-
tooltip: t('views.prompt.handlers.handle-agentic-search.agent.add-flags')
53+
tooltip: t('feature.headless-cli-invocation.agent.add-flags')
5454
}
5555
const edit_button = {
5656
iconPath: new vscode.ThemeIcon('edit'),
57-
tooltip: t('views.prompt.handlers.handle-agentic-search.agent.edit-flags')
57+
tooltip: t('feature.headless-cli-invocation.agent.edit-flags')
5858
}
5959
const delete_button = {
6060
iconPath: new vscode.ThemeIcon('trash'),
61-
tooltip: t(
62-
'views.prompt.handlers.handle-agentic-search.agent.delete-flags'
63-
)
61+
tooltip: t('feature.headless-cli-invocation.agent.delete-flags')
6462
}
6563
const doc_button = {
6664
iconPath: new vscode.ThemeIcon('question'),
@@ -147,10 +145,10 @@ export const invoke_headless_cli = async (params: {
147145
}
148146

149147
agent_quick_pick.title = t(
150-
'views.prompt.handlers.handle-agentic-search.agent.select-agent'
148+
'feature.headless-cli-invocation.agent.select-agent'
151149
)
152150
agent_quick_pick.placeholder = t(
153-
'views.prompt.handlers.handle-agentic-search.agent.select-agent-placeholder'
151+
'feature.headless-cli-invocation.agent.select-agent-placeholder'
154152
)
155153
agent_quick_pick.buttons = params.show_back_button
156154
? [vscode.QuickInputButtons.Back, close_button]
@@ -318,12 +316,10 @@ export const invoke_headless_cli = async (params: {
318316
active_flag_index = -1
319317

320318
const new_flags = await vscode.window.showInputBox({
321-
title: t('views.prompt.handlers.handle-agentic-search.agent.add-flags'),
322-
prompt: t(
323-
'views.prompt.handlers.handle-agentic-search.agent.edit-flags-prompt'
324-
),
319+
title: t('feature.headless-cli-invocation.agent.add-flags'),
320+
prompt: t('feature.headless-cli-invocation.agent.edit-flags-prompt'),
325321
placeHolder: t(
326-
'views.prompt.handlers.handle-agentic-search.agent.edit-flags-placeholder'
322+
'feature.headless-cli-invocation.agent.edit-flags-placeholder'
327323
),
328324
value: '',
329325
ignoreFocusOut: true
@@ -351,14 +347,10 @@ export const invoke_headless_cli = async (params: {
351347
active_flag_index = index
352348

353349
const new_flags = await vscode.window.showInputBox({
354-
title: t(
355-
'views.prompt.handlers.handle-agentic-search.agent.edit-flags'
356-
),
357-
prompt: t(
358-
'views.prompt.handlers.handle-agentic-search.agent.edit-flags-prompt'
359-
),
350+
title: t('feature.headless-cli-invocation.agent.edit-flags'),
351+
prompt: t('feature.headless-cli-invocation.agent.edit-flags-prompt'),
360352
placeHolder: t(
361-
'views.prompt.handlers.handle-agentic-search.agent.edit-flags-placeholder'
353+
'feature.headless-cli-invocation.agent.edit-flags-placeholder'
362354
),
363355
value: value,
364356
ignoreFocusOut: true
@@ -421,10 +413,10 @@ export const invoke_headless_cli = async (params: {
421413
quick_pick.activeItems = [active_item]
422414
}
423415
quick_pick.title = t(
424-
'views.prompt.handlers.handle-agentic-search.agent.select-workspace'
416+
'feature.headless-cli-invocation.agent.select-workspace'
425417
)
426418
quick_pick.placeholder = t(
427-
'views.prompt.handlers.handle-agentic-search.agent.select-workspace-placeholder'
419+
'feature.headless-cli-invocation.agent.select-workspace-placeholder'
428420
)
429421
quick_pick.buttons = [vscode.QuickInputButtons.Back, close_button]
430422
quick_pick.ignoreFocusOut = true
@@ -621,7 +613,7 @@ export const invoke_headless_cli = async (params: {
621613
)
622614
} catch (err) {
623615
vscode.window.showErrorMessage(
624-
t('views.prompt.handlers.handle-agentic-search.error.failed', {
616+
t('feature.headless-cli-invocation.error.failed', {
625617
error: String(err)
626618
})
627619
)
Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
export const translations = {
2+
'feature.headless-cli-invocation.info.no-agents': {
3+
en: 'No agents available.',
4+
pl: 'Brak dostępnych agentów.',
5+
'zh-cn': '没有可用的智能体。',
6+
ja: '利用可能なエージェントがありません。',
7+
'zh-tw': '沒有可用的智能體。',
8+
de: 'Keine Agenten verfügbar.',
9+
es: 'No hay agentes disponibles.',
10+
fr: 'Aucun agent disponible.',
11+
'pt-br': 'Nenhum agente disponível.',
12+
ru: 'Нет доступных агентов.',
13+
ko: '사용 가능한 에이전트가 없습니다.',
14+
it: 'Nessun agente disponibile.',
15+
tr: 'Kullanılabilir aracı yok.',
16+
cs: 'Nejsou k dispozici žádní agenti.',
17+
hu: 'Nincsenek elérhető ügynökök.',
18+
bg: 'Няма налични агенти.'
19+
},
20+
'feature.headless-cli-invocation.agent.add-flags': {
21+
en: 'Add flags',
22+
pl: 'Dodaj flagi',
23+
'zh-cn': '添加标志',
24+
ja: 'フラグを追加',
25+
'zh-tw': '新增標誌',
26+
de: 'Flags hinzufügen',
27+
es: 'Agregar banderas',
28+
fr: 'Ajouter des drapeaux',
29+
'pt-br': 'Adicionar sinalizadores',
30+
ru: 'Добавить флаги',
31+
ko: '플래그 추가',
32+
it: 'Aggiungi flag',
33+
tr: 'Bayrak ekle',
34+
cs: 'Přidat příznaky',
35+
hu: 'Jelzők hozzáadása',
36+
bg: 'Добавяне на флагове'
37+
},
38+
'feature.headless-cli-invocation.agent.edit-flags': {
39+
en: 'Edit flags',
40+
pl: 'Edytuj flagi',
41+
'zh-cn': '编辑标志',
42+
ja: 'フラグを編集',
43+
'zh-tw': '編輯標誌',
44+
de: 'Flags bearbeiten',
45+
es: 'Editar banderas',
46+
fr: 'Modifier les drapeaux',
47+
'pt-br': 'Editar sinalizadores',
48+
ru: 'Редактировать флаги',
49+
ko: '플래그 편집',
50+
it: 'Modifica flag',
51+
tr: 'Bayrakları düzenle',
52+
cs: 'Upravit příznaky',
53+
hu: 'Jelzők szerkesztése',
54+
bg: 'Редактиране на флагове'
55+
},
56+
'feature.headless-cli-invocation.agent.delete-flags': {
57+
en: 'Delete flags',
58+
pl: 'Usuń flagi',
59+
'zh-cn': '删除标志',
60+
ja: 'フラグを削除',
61+
'zh-tw': '刪除標誌',
62+
de: 'Flags löschen',
63+
es: 'Eliminar banderas',
64+
fr: 'Supprimer les drapeaux',
65+
'pt-br': 'Excluir sinalizadores',
66+
ru: 'Удалить флаги',
67+
ko: '플래그 삭제',
68+
it: 'Elimina flag',
69+
tr: 'Bayrakları sil',
70+
cs: 'Odstranit příznaky',
71+
hu: 'Jelzők törlése',
72+
bg: 'Изтриване на флагове'
73+
},
74+
'feature.headless-cli-invocation.agent.select-agent': {
75+
en: 'Select Agent',
76+
pl: 'Wybierz agenta',
77+
'zh-cn': '选择智能体',
78+
ja: 'エージェントを選択',
79+
'zh-tw': '選擇智能體',
80+
de: 'Agenten auswählen',
81+
es: 'Seleccionar agente',
82+
fr: 'Sélectionner un agent',
83+
'pt-br': 'Selecionar agente',
84+
ru: 'Выбрать агента',
85+
ko: '에이전트 선택',
86+
it: 'Seleziona agente',
87+
tr: 'Aracı Seç',
88+
cs: 'Vybrat agenta',
89+
hu: 'Ügynök kiválasztása',
90+
bg: 'Изберете агент'
91+
},
92+
'feature.headless-cli-invocation.agent.select-agent-placeholder': {
93+
en: 'Select an agent to perform the search',
94+
pl: 'Wybierz agenta, aby wykonać wyszukiwanie',
95+
'zh-cn': '选择一个智能体来执行搜索',
96+
ja: '検索を実行するエージェントを選択します',
97+
'zh-tw': '選擇一個智能體來執行搜尋',
98+
de: 'Wählen Sie einen Agenten, um die Suche durchzuführen',
99+
es: 'Seleccione un agente para realizar la búsqueda',
100+
fr: 'Sélectionnez un agent pour effectuer la recherche',
101+
'pt-br': 'Selecione um agente para realizar a pesquisa',
102+
ru: 'Выберите агента для выполнения поиска',
103+
ko: '검색을 수행할 에이전트를 선택하세요',
104+
it: 'Seleziona un agente per eseguire la ricerca',
105+
tr: 'Arama yapmak için bir aracı seçin',
106+
cs: 'Vyberte agenta pro provedení hledání',
107+
hu: 'Válasszon ügynököt a keresés végrehajtásához',
108+
bg: 'Изберете агент, който да извърши търсенето'
109+
},
110+
'feature.headless-cli-invocation.agent.edit-flags-prompt': {
111+
en: 'Enter custom CLI flags for the agent',
112+
pl: 'Wprowadź niestandardowe flagi CLI dla agenta',
113+
'zh-cn': '输入智能体的自定义 CLI 标志',
114+
ja: 'エージェントのカスタム CLI フラグを入力します',
115+
'zh-tw': '輸入智能體的自訂 CLI 標誌',
116+
de: 'Benutzerdefinierte CLI-Flags für den Agenten eingeben',
117+
es: 'Ingrese banderas CLI personalizadas para el agente',
118+
fr: "Entrez des drapeaux CLI personnalisés pour l'agent",
119+
'pt-br': 'Insira sinalizadores CLI personalizados para o agente',
120+
ru: 'Введите пользовательские флаги CLI для агента',
121+
ko: '에이전트에 대한 사용자 지정 CLI 플래그 입력',
122+
it: "Inserisci flag CLI personalizzati per l'agente",
123+
tr: 'Aracı için özel CLI bayrakları girin',
124+
cs: 'Zadejte vlastní příznaky CLI pro agenta',
125+
hu: 'Adjon meg egyéni CLI jelzőket az ügynökhöz',
126+
bg: 'Въведете персонализирани CLI флагове за агента'
127+
},
128+
'feature.headless-cli-invocation.agent.edit-flags-placeholder': {
129+
en: 'e.g. --verbose --max-steps 10',
130+
pl: 'np. --verbose --max-steps 10',
131+
'zh-cn': '例如 --verbose --max-steps 10',
132+
ja: '例:--verbose --max-steps 10',
133+
'zh-tw': '例如 --verbose --max-steps 10',
134+
de: 'z. B. --verbose --max-steps 10',
135+
es: 'p. ej. --verbose --max-steps 10',
136+
fr: 'par ex. --verbose --max-steps 10',
137+
'pt-br': 'ex. --verbose --max-steps 10',
138+
ru: 'напр. --verbose --max-steps 10',
139+
ko: '예: --verbose --max-steps 10',
140+
it: 'es. --verbose --max-steps 10',
141+
tr: 'örn. --verbose --max-steps 10',
142+
cs: 'např. --verbose --max-steps 10',
143+
hu: 'pl. --verbose --max-steps 10',
144+
bg: 'напр. --verbose --max-steps 10'
145+
},
146+
'feature.headless-cli-invocation.agent.select-workspace': {
147+
en: 'Select Workspace',
148+
pl: 'Wybierz obszar roboczy',
149+
'zh-cn': '选择工作区',
150+
ja: 'ワークスペースを選択',
151+
'zh-tw': '選擇工作區',
152+
de: 'Arbeitsbereich auswählen',
153+
es: 'Seleccionar espacio de trabajo',
154+
fr: "Sélectionner l'espace de travail",
155+
'pt-br': 'Selecionar espaço de trabalho',
156+
ru: 'Выбрать рабочую область',
157+
ko: '작업 공간 선택',
158+
it: 'Seleziona area di lavoro',
159+
tr: 'Çalışma Alanı Seç',
160+
cs: 'Vybrat pracovní prostor',
161+
hu: 'Munkaterület kiválasztása',
162+
bg: 'Изберете работно пространство'
163+
},
164+
'feature.headless-cli-invocation.agent.select-workspace-placeholder': {
165+
en: 'Select the workspace for the agent to run in',
166+
pl: 'Wybierz obszar roboczy, w którym agent zostanie uruchomiony',
167+
'zh-cn': '选择智能体运行的工作区',
168+
ja: 'エージェントを実行するワークスペースを選択します',
169+
'zh-tw': '選擇智能體運行的工作區',
170+
de: 'Wählen Sie den Arbeitsbereich aus, in dem der Agent ausgeführt werden soll',
171+
es: 'Seleccione el espacio de trabajo en el que se ejecutará el agente',
172+
fr: "Sélectionnez l'espace de travail dans lequel l'agent s'exécutera",
173+
'pt-br': 'Selecione o espaço de trabalho para o agente ser executado',
174+
ru: 'Выберите рабочую область для запуска агента',
175+
ko: '에이전트가 실행될 작업 공간을 선택하세요',
176+
it: "Seleziona l'area di lavoro in cui eseguire l'agente",
177+
tr: 'Aracının çalışacağı çalışma alanını seçin',
178+
cs: 'Vyberte pracovní prostor, ve kterém se má agent spustit',
179+
hu: 'Válassza ki a munkaterületet, amelyben az ügynök futni fog',
180+
bg: 'Изберете работното пространство, в което да работи агентът'
181+
},
182+
'feature.headless-cli-invocation.agent.waiting-for-agent': {
183+
en: 'waiting for agent...',
184+
pl: 'oczekiwanie na agenta...',
185+
'zh-cn': '等待代理...',
186+
ja: 'エージェントを待機しています...',
187+
'zh-tw': '等待代理...',
188+
de: 'warten auf Agent...',
189+
es: 'esperando al agente...',
190+
fr: "en attente de l'agent...",
191+
'pt-br': 'esperando pelo agente...',
192+
ru: 'ожидание агента...',
193+
ko: '에이전트 대기 중...',
194+
it: "in attesa dell'agente...",
195+
tr: 'ajan bekleniyor...',
196+
cs: 'čekání na agenta...',
197+
hu: 'várakozás az ügynökre...',
198+
bg: 'изчакване на агент...'
199+
},
200+
'feature.headless-cli-invocation.error.failed': {
201+
en: 'Agent execution failed: {error}',
202+
pl: 'Wykonywanie agenta nie powiodło się: {error}',
203+
'zh-cn': '智能体执行失败: {error}',
204+
ja: 'エージェント実行に失敗しました: {error}',
205+
'zh-tw': '智能體執行失敗: {error}',
206+
de: 'Agentenausführung fehlgeschlagen: {error}',
207+
es: 'La ejecución del agente falló: {error}',
208+
fr: "L'exécution de l'agent a échoué: {error}",
209+
'pt-br': 'A execução do agente falhou: {error}',
210+
ru: 'Выполнение агента не удалось: {error}',
211+
ko: '에이전트 실행 실패: {error}',
212+
it: "Esecuzione dell'agente non riuscita: {error}",
213+
tr: 'Aracı yürütmesi başarısız oldu: {error}',
214+
cs: 'Provádění agenta selhalo: {error}',
215+
hu: 'Az ügynök futtatása sikertelen: {error}',
216+
bg: 'Изпълнението на агента се провали: {error}'
217+
},
218+
'feature.headless-cli-invocation.agent.finished': {
219+
en: 'Agent finished in {duration}.',
220+
pl: 'Agent zakończył działanie w {duration}.',
221+
'zh-cn': '智能体完成于 {duration}。',
222+
ja: 'エージェントは {duration} で完了しました。',
223+
'zh-tw': '智能體完成於 {duration}。',
224+
de: 'Agent abgeschlossen in {duration}.',
225+
es: 'Agente finalizado en {duration}.',
226+
fr: 'Agent terminé en {duration}.',
227+
'pt-br': 'Agente finalizado em {duration}.',
228+
ru: 'Агент завершил работу за {duration}.',
229+
ko: '{duration}만에 에이전트 완료.',
230+
it: 'Agente completato in {duration}.',
231+
tr: 'Aracı {duration} içinde tamamlandı.',
232+
cs: 'Agent dokončen za {duration}.',
233+
hu: 'Az ügynök befejezte {duration} alatt.',
234+
bg: 'Агентът завърши за {duration}.'
235+
}
236+
} as const
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { translations as search_files } from './search-files'
22
import { translations as checkpoints } from './checkpoints'
33
import { translations as context_restoration } from './context-restoration'
4+
import { translations as headless_cli_invocation } from './headless-cli-invocation'
45

56
export const translations = {
67
...search_files,
78
...checkpoints,
8-
...context_restoration
9+
...context_restoration,
10+
...headless_cli_invocation
911
}

0 commit comments

Comments
 (0)