feat: turn Explore into a full /explore command

Promote the last plain-prompt draft chip into a proper /explore command so
all draft welcome presets are now commands. Its hidden prompt investigates
the repository and gives a structured orientation — big picture, main
modules, how they connect, conventions, and where to start — instead of a
file-by-file dump.

Follows the established pattern: visible + hidden magic prompts wired into
command autocomplete, the submit handler, the draft chip, and the Magic
Prompts settings page, with i18n across all locales. Drops the now-unused
explore prompt string.
This commit is contained in:
Bohdan Triapitsyn
2026-05-30 02:04:32 +03:00
parent 4bc75cc749
commit 6cd71bdfe5
21 changed files with 110 additions and 10 deletions
+24 -2
View File
@@ -99,7 +99,7 @@ type DraftPreset = {
command?: string;
};
const DRAFT_PRESETS: readonly DraftPreset[] = [
{ id: 'explore', icon: 'compass-3', labelKey: 'chat.draftPresets.explore.label', promptKey: 'chat.draftPresets.explore.prompt' },
{ id: 'explore', icon: 'compass-3', labelKey: 'chat.draftPresets.explore.label', command: '/explore' },
{ id: 'catchup', icon: 'history', labelKey: 'chat.draftPresets.catchup.label', command: '/catch-up' },
{ id: 'weigh', icon: 'scales-3', labelKey: 'chat.draftPresets.weigh.label', command: '/weigh' },
{ id: 'plan', icon: 'survey', labelKey: 'chat.draftPresets.plan.label', command: '/plan-feature' },
@@ -1124,7 +1124,7 @@ const ChatInputComponent: React.FC<ChatInputProps> = ({ onOpenSettings, scrollTo
const availableSkills = useSkillsStore((s) => s.skills);
const knownSlashNames = React.useMemo(() => {
const names = new Set<string>([
'init', 'review', 'undo', 'redo', 'timeline', 'compact', 'summary', 'workspace-review', 'plan-feature', 'catch-up', 'debug', 'weigh',
'init', 'review', 'undo', 'redo', 'timeline', 'compact', 'summary', 'workspace-review', 'plan-feature', 'catch-up', 'debug', 'weigh', 'explore',
]);
for (const command of availableCommands) names.add(command.name.toLowerCase());
for (const skill of availableSkills) names.add(skill.name.toLowerCase());
@@ -2040,6 +2040,28 @@ const ChatInputComponent: React.FC<ChatInputProps> = ({ onOpenSettings, scrollTo
}
return;
}
else if (commandName === 'explore' && (currentSessionId || newSessionDraftOpen)) {
try {
await sessionActions.waitForConnectionOrThrow();
const visibleText = await renderMagicPrompt('session.explore.visible');
const instructionsText = await renderMagicPrompt('session.explore.instructions');
await sendMessage(
visibleText,
providerIdToSend,
modelIdToSend,
agentNameToSend,
[],
agentMentionName,
[{ text: instructionsText, synthetic: true }],
variantToSend,
inputMode,
);
scrollToBottom?.();
} catch (error) {
toast.error(error instanceof Error ? error.message : t('chat.chatInput.toast.exploreFailed'));
}
return;
}
}
const currentSessionDirectory = currentSessionId
@@ -168,6 +168,10 @@ export const CommandAutocomplete = React.forwardRef<CommandAutocompleteHandle, C
? [{ id: 'openchamber:weigh', name: 'weigh', source: 'openchamber' as const, description: t('chat.commandAutocomplete.command.weighDescription'), isOpenChamber: true }]
: []
),
...(canStartSessionCommand
? [{ id: 'openchamber:explore', name: 'explore', source: 'openchamber' as const, description: t('chat.commandAutocomplete.command.exploreDescription'), isOpenChamber: true }]
: []
),
];
const allCommands = [...builtInCommands, ...customCommands, ...skillCommands];
@@ -229,6 +233,10 @@ export const CommandAutocomplete = React.forwardRef<CommandAutocompleteHandle, C
? [{ id: 'openchamber:weigh', name: 'weigh', source: 'openchamber' as const, description: t('chat.commandAutocomplete.command.weighDescription'), isOpenChamber: true }]
: []
),
...(canStartSessionCommand
? [{ id: 'openchamber:explore', name: 'explore', source: 'openchamber' as const, description: t('chat.commandAutocomplete.command.exploreDescription'), isOpenChamber: true }]
: []
),
];
const filtered = (searchQuery
@@ -172,6 +172,14 @@ const PROMPT_PAGE_MAP: Record<string, PromptPageConfig> = {
{ id: 'session.weigh.instructions', titleKey: 'settings.magicPrompts.page.block.instructions' },
],
},
'session.explore': {
titleKey: 'settings.magicPrompts.page.group.sessionExplore.title',
descriptionKey: 'settings.magicPrompts.page.group.sessionExplore.description',
blocks: [
{ id: 'session.explore.visible', titleKey: 'settings.magicPrompts.page.block.visiblePrompt' },
{ id: 'session.explore.instructions', titleKey: 'settings.magicPrompts.page.block.instructions' },
],
},
'session.fusion': {
titleKey: 'settings.magicPrompts.page.group.sessionFusion.title',
descriptionKey: 'settings.magicPrompts.page.group.sessionFusion.description',
@@ -45,6 +45,7 @@ export const MagicPromptsSidebar: React.FC<MagicPromptsSidebarProps> = ({ onItem
{
groupKey: 'settings.magicPrompts.sidebar.group.session',
items: [
{ id: 'session.explore', titleKey: 'settings.magicPrompts.sidebar.item.sessionExplore' },
{ id: 'session.summary', titleKey: 'settings.magicPrompts.sidebar.item.sessionSummary' },
{ id: 'session.review', titleKey: 'settings.magicPrompts.sidebar.item.sessionWorkspaceReview' },
{ id: 'session.plan', titleKey: 'settings.magicPrompts.sidebar.item.sessionFeaturePlan' },
@@ -223,6 +223,7 @@ export const settingsDict = {
'settings.magicPrompts.sidebar.item.planImplement': 'Implement Plan',
'settings.magicPrompts.sidebar.item.sessionSummary': 'Session Summary',
'settings.magicPrompts.sidebar.item.sessionWorkspaceReview': 'Workspace Review',
'settings.magicPrompts.sidebar.item.sessionExplore': 'Codebase Tour',
'settings.magicPrompts.sidebar.item.sessionFeaturePlan': 'Feature Planning',
'settings.magicPrompts.sidebar.item.sessionCatchUp': 'Catch Up',
'settings.magicPrompts.sidebar.item.sessionDebug': 'Debugging',
@@ -1689,6 +1690,8 @@ export const settingsDict = {
'settings.magicPrompts.page.group.sessionSummary.title': 'Session Summary',
'settings.magicPrompts.page.group.sessionSummary.description': 'Prompts used by the /summary slash command: visible user message + hidden instructions. Non-destructive - does not compact session history.',
'settings.magicPrompts.page.group.sessionWorkspaceReview.title': 'Workspace Review',
'settings.magicPrompts.page.group.sessionExplore.title': 'Codebase Tour',
'settings.magicPrompts.page.group.sessionExplore.description': 'Prompts used by the /explore slash command: visible user message + hidden instructions. Investigates the repository and gives a structured orientation — the big picture, main modules, how they connect, and where to start — rather than a file-by-file dump.',
'settings.magicPrompts.page.group.sessionWorkspaceReview.description': 'Prompts used by the /workspace-review slash command: visible user message + hidden instructions. Reviews current workspace changes for high-signal issues only.',
'settings.magicPrompts.page.group.sessionFeaturePlan.title': 'Feature Planning',
'settings.magicPrompts.page.group.sessionFeaturePlan.description': 'Prompts used by the /plan-feature slash command: visible user message + hidden instructions. Runs a guided dialogue that researches the code and asks clarifying questions in small batches before producing an implementation plan.',
+2 -1
View File
@@ -1454,7 +1454,6 @@ export const dict = {
'chat.emptyState.draftTitle': 'What are we working on?',
'chat.emptyState.draftTitleWithProject': 'What are we working on in {project}?',
'chat.draftPresets.explore.label': 'Explore the codebase',
'chat.draftPresets.explore.prompt': 'Give me a high-level tour of this codebase — the architecture, the main modules, and how they fit together.',
'chat.draftPresets.catchup.label': 'Catch me up',
'chat.draftPresets.weigh.label': 'Weigh my options',
'chat.draftPresets.plan.label': 'Start feature planning',
@@ -1524,6 +1523,7 @@ export const dict = {
'chat.commandAutocomplete.command.catchUpDescription': 'Re-establish context: what you were doing and where to pick up.',
'chat.commandAutocomplete.command.debugDescription': 'Guided root-cause investigation for a bug before proposing a fix.',
'chat.commandAutocomplete.command.weighDescription': 'Weigh 2-3 approaches with trade-offs and a recommendation before you commit.',
'chat.commandAutocomplete.command.exploreDescription': 'Get oriented in this codebase: a high-level tour of the architecture and main parts.',
'chat.commandAutocomplete.badge.skill': 'skill',
'chat.commandAutocomplete.badge.command': 'command',
'chat.commandAutocomplete.badge.system': 'system',
@@ -1643,6 +1643,7 @@ export const dict = {
'chat.chatInput.toast.catchUpFailed': 'Failed to catch up',
'chat.chatInput.toast.debugFailed': 'Failed to start debugging',
'chat.chatInput.toast.weighFailed': 'Failed to weigh options',
'chat.chatInput.toast.exploreFailed': 'Failed to start the tour',
'chat.chatInput.toast.attachmentsTooLarge': 'Attachments are too large to send. Please try reducing the number or size of images.',
'chat.chatInput.toast.sendAttachmentsFailed': 'Failed to send attachments. Try fewer files or smaller images.',
'chat.chatInput.toast.messageSendFailed': 'Message failed to send. Attachments restored.',
@@ -190,6 +190,7 @@ export const settingsDict = {
"settings.magicPrompts.sidebar.item.planImplement": "Implementar plan",
"settings.magicPrompts.sidebar.item.sessionSummary": "Resumen de sesión",
"settings.magicPrompts.sidebar.item.sessionWorkspaceReview": "Revisión del espacio de trabajo",
"settings.magicPrompts.sidebar.item.sessionExplore": "Recorrido del código",
"settings.magicPrompts.sidebar.item.sessionFeaturePlan": "Planificación de funciones",
"settings.magicPrompts.sidebar.item.sessionCatchUp": "Ponerse al día",
"settings.magicPrompts.sidebar.item.sessionDebug": "Depuración",
@@ -1656,6 +1657,8 @@ export const settingsDict = {
"settings.magicPrompts.page.group.sessionSummary.title": "Resumen de sesión",
"settings.magicPrompts.page.group.sessionSummary.description": "Prompts usados por el comando /summary: mensaje visible del usuario + instrucciones ocultas. No destructivo: no compacta el historial de la sesión.",
"settings.magicPrompts.page.group.sessionWorkspaceReview.title": "Revisión del espacio de trabajo",
"settings.magicPrompts.page.group.sessionExplore.title": "Recorrido del código",
"settings.magicPrompts.page.group.sessionExplore.description": "Prompts usados por el comando /explore: mensaje visible del usuario + instrucciones ocultas. Investiga el repositorio y ofrece una orientación estructurada — la visión general, los módulos principales, cómo se conectan y por dónde empezar — en lugar de un listado archivo por archivo.",
"settings.magicPrompts.page.group.sessionWorkspaceReview.description": "Prompts usados por el comando /workspace-review: mensaje visible del usuario + instrucciones ocultas. Revisa los cambios actuales del espacio de trabajo solo para problemas de alta señal.",
"settings.magicPrompts.page.group.sessionFeaturePlan.title": "Planificación de funciones",
"settings.magicPrompts.page.group.sessionFeaturePlan.description": "Prompts usados por el comando /plan-feature: mensaje visible del usuario + instrucciones ocultas. Ejecuta un diálogo guiado que investiga el código y hace preguntas aclaratorias en lotes pequeños antes de producir un plan de implementación.",
+2 -1
View File
@@ -1420,7 +1420,6 @@ export const dict: Record<I18nKey, string> = {
"chat.emptyState.draftTitle": "What are we working on?",
"chat.emptyState.draftTitleWithProject": "What are we working on in {project}?",
"chat.draftPresets.explore.label": "Explore the codebase",
"chat.draftPresets.explore.prompt": "Give me a high-level tour of this codebase — the architecture, the main modules, and how they fit together.",
"chat.draftPresets.catchup.label": "Catch me up",
"chat.draftPresets.weigh.label": "Weigh my options",
"chat.draftPresets.plan.label": "Start feature planning",
@@ -1490,6 +1489,7 @@ export const dict: Record<I18nKey, string> = {
"chat.commandAutocomplete.command.catchUpDescription": "Recupera el contexto: qué estabas haciendo y por dónde continuar.",
"chat.commandAutocomplete.command.debugDescription": "Investigación guiada de la causa raíz de un error antes de proponer una solución.",
"chat.commandAutocomplete.command.weighDescription": "Compara 2-3 enfoques con sus ventajas y desventajas y una recomendación antes de decidir.",
"chat.commandAutocomplete.command.exploreDescription": "Oriéntate en este código: un recorrido general de la arquitectura y las partes principales.",
"chat.commandAutocomplete.badge.skill": "habilidad",
"chat.commandAutocomplete.badge.command": "comando",
"chat.commandAutocomplete.badge.system": "sistema",
@@ -1609,6 +1609,7 @@ export const dict: Record<I18nKey, string> = {
"chat.chatInput.toast.catchUpFailed": "No se pudo recuperar el contexto",
"chat.chatInput.toast.debugFailed": "No se pudo iniciar la depuración",
"chat.chatInput.toast.weighFailed": "No se pudieron comparar las opciones",
"chat.chatInput.toast.exploreFailed": "No se pudo iniciar el recorrido",
"chat.chatInput.toast.attachmentsTooLarge": "Los adjuntos son demasiado grandes para enviar. Intenta reducir la cantidad o el tamaño de las imágenes.",
"chat.chatInput.toast.sendAttachmentsFailed": "No se pudieron enviar los adjuntos. Intenta con menos archivos o imágenes más pequeñas.",
"chat.chatInput.toast.messageSendFailed": "El mensaje no se pudo enviar. Los adjuntos se restauraron.",
@@ -190,6 +190,7 @@ export const settingsDict = {
'settings.magicPrompts.sidebar.item.planImplement': '계획 구현',
'settings.magicPrompts.sidebar.item.sessionSummary': '세션 요약',
'settings.magicPrompts.sidebar.item.sessionWorkspaceReview': '워크스페이스 리뷰',
'settings.magicPrompts.sidebar.item.sessionExplore': '코드베이스 둘러보기',
'settings.magicPrompts.sidebar.item.sessionFeaturePlan': '기능 계획',
'settings.magicPrompts.sidebar.item.sessionCatchUp': '따라잡기',
'settings.magicPrompts.sidebar.item.sessionDebug': '디버깅',
@@ -1656,6 +1657,8 @@ export const settingsDict = {
'settings.magicPrompts.page.group.sessionSummary.title': '세션 요약',
'settings.magicPrompts.page.group.sessionSummary.description': '/summary slash command에서 사용하는 프롬프트입니다: 표시 사용자 메시지 + 숨겨진 지침. 비파괴적이며 세션 기록을 압축하지 않습니다.',
'settings.magicPrompts.page.group.sessionWorkspaceReview.title': '워크스페이스 리뷰',
'settings.magicPrompts.page.group.sessionExplore.title': '코드베이스 둘러보기',
'settings.magicPrompts.page.group.sessionExplore.description': '/explore slash command에서 사용하는 프롬프트입니다: 표시 사용자 메시지 + 숨겨진 지침. 저장소를 조사하여 파일별 나열이 아니라 큰 그림, 주요 모듈, 연결 방식, 시작점 등 구조적인 방향을 제시합니다.',
'settings.magicPrompts.page.group.sessionWorkspaceReview.description': '/workspace-review slash command에서 사용하는 프롬프트입니다: 표시 사용자 메시지 + 숨겨진 지침. 현재 workspace 변경 사항에서 중요한 문제만 리뷰합니다.',
'settings.magicPrompts.page.group.sessionFeaturePlan.title': '기능 계획',
'settings.magicPrompts.page.group.sessionFeaturePlan.description': '/plan-feature slash command에서 사용하는 프롬프트입니다: 표시 사용자 메시지 + 숨겨진 지침. 코드를 조사하고 작은 묶음으로 명확화 질문을 한 뒤 구현 계획을 만드는 가이드 대화를 실행합니다.',
+2 -1
View File
@@ -1456,7 +1456,6 @@ export const dict: Record<I18nKey, string> = {
'chat.emptyState.draftTitle': 'What are we working on?',
'chat.emptyState.draftTitleWithProject': 'What are we working on in {project}?',
'chat.draftPresets.explore.label': 'Explore the codebase',
'chat.draftPresets.explore.prompt': 'Give me a high-level tour of this codebase — the architecture, the main modules, and how they fit together.',
'chat.draftPresets.catchup.label': 'Catch me up',
'chat.draftPresets.weigh.label': 'Weigh my options',
'chat.draftPresets.plan.label': 'Start feature planning',
@@ -1526,6 +1525,7 @@ export const dict: Record<I18nKey, string> = {
'chat.commandAutocomplete.command.catchUpDescription': '맥락을 다시 파악합니다: 무엇을 하고 있었고 어디서 이어서 할지.',
'chat.commandAutocomplete.command.debugDescription': '수정안을 제시하기 전에 버그의 근본 원인을 단계적으로 조사합니다.',
'chat.commandAutocomplete.command.weighDescription': '결정하기 전에 2~3가지 접근 방식을 장단점과 함께 비교하고 추천을 제시합니다.',
'chat.commandAutocomplete.command.exploreDescription': '코드베이스에 대한 방향을 잡습니다: 아키텍처와 주요 부분을 한눈에 살펴봅니다.',
'chat.commandAutocomplete.badge.skill': '스킬',
'chat.commandAutocomplete.badge.command': '명령',
'chat.commandAutocomplete.badge.system': 'system',
@@ -1643,6 +1643,7 @@ export const dict: Record<I18nKey, string> = {
'chat.chatInput.toast.catchUpFailed': '컨텍스트를 불러오지 못했습니다',
'chat.chatInput.toast.debugFailed': '디버깅을 시작하지 못했습니다',
'chat.chatInput.toast.weighFailed': '옵션을 비교하지 못했습니다',
'chat.chatInput.toast.exploreFailed': '둘러보기를 시작하지 못했습니다',
'chat.chatInput.toast.attachmentsTooLarge': '첨부 파일이 너무 커서 보낼 수 없습니다. 이미지 수나 크기를 줄여 보세요.',
'chat.chatInput.toast.sendAttachmentsFailed': '첨부 파일 전송 실패. 파일 수나 이미지 크기를 줄여 보세요.',
'chat.chatInput.toast.messageSendFailed': '메시지 전송에 실패했습니다. 첨부 파일을 복원했습니다.',
@@ -288,6 +288,8 @@ export const settingsDict = {
'settings.magicPrompts.page.group.sessionWeigh.title': 'Rozważanie opcji',
'settings.magicPrompts.page.group.sessionWeigh.description': 'Prompty używane przez polecenie /weigh: widoczna wiadomość użytkownika + ukryte instrukcje. Bada kod, a następnie przedstawia 2-3 różne podejścia z kompromisami i rekomendacją — bez pisania planu ani kodu.',
'settings.magicPrompts.page.group.sessionWorkspaceReview.title': 'Przegląd obszaru roboczego',
'settings.magicPrompts.page.group.sessionExplore.title': 'Przegląd bazy kodu',
'settings.magicPrompts.page.group.sessionExplore.description': 'Prompty używane przez polecenie /explore: widoczna wiadomość użytkownika + ukryte instrukcje. Bada repozytorium i daje uporządkowaną orientację — ogólny obraz, główne moduły, jak się łączą i od czego zacząć — zamiast zrzutu plik po pliku.',
'settings.magicPrompts.page.group.sessionFusion.title': 'Fusion',
'settings.magicPrompts.page.group.sessionFusion.description': 'Prompty używane do łączenia wyników multi-run w jedną końcową odpowiedź: widoczna wiadomość użytkownika + ukryte instrukcje przed wynikami źródłowymi.',
'settings.magicPrompts.page.loading.aria': 'Ładowanie',
@@ -324,6 +326,7 @@ export const settingsDict = {
'settings.magicPrompts.sidebar.item.planTodo': 'Planowanie Todo',
'settings.magicPrompts.sidebar.item.sessionSummary': 'Podsumowanie Sesji',
'settings.magicPrompts.sidebar.item.sessionWorkspaceReview': 'Przegląd obszaru roboczego',
'settings.magicPrompts.sidebar.item.sessionExplore': 'Przegląd bazy kodu',
'settings.magicPrompts.sidebar.item.sessionFeaturePlan': 'Planowanie funkcji',
'settings.magicPrompts.sidebar.item.sessionCatchUp': 'Nadrobienie kontekstu',
'settings.magicPrompts.sidebar.item.sessionDebug': 'Debugowanie',
+2 -1
View File
@@ -446,7 +446,6 @@ export const dict: Record<I18nKey, string> = {
'chat.emptyState.draftTitle': 'What are we working on?',
'chat.emptyState.draftTitleWithProject': 'What are we working on in {project}?',
'chat.draftPresets.explore.label': 'Explore the codebase',
'chat.draftPresets.explore.prompt': 'Give me a high-level tour of this codebase — the architecture, the main modules, and how they fit together.',
'chat.draftPresets.catchup.label': 'Catch me up',
'chat.draftPresets.weigh.label': 'Weigh my options',
'chat.draftPresets.plan.label': 'Start feature planning',
@@ -515,6 +514,7 @@ export const dict: Record<I18nKey, string> = {
'chat.commandAutocomplete.command.catchUpDescription': 'Przywróć kontekst: nad czym pracowałeś i od czego kontynuować.',
'chat.commandAutocomplete.command.debugDescription': 'Prowadzone badanie pierwotnej przyczyny błędu przed zaproponowaniem poprawki.',
'chat.commandAutocomplete.command.weighDescription': 'Rozważ 2-3 podejścia z kompromisami i rekomendacją, zanim się zdecydujesz.',
'chat.commandAutocomplete.command.exploreDescription': 'Zorientuj się w bazie kodu: ogólny przegląd architektury i głównych części.',
'chat.commandAutocomplete.badge.skill': 'skill',
'chat.commandAutocomplete.badge.command': 'polecenie',
'chat.commandAutocomplete.badge.system': 'system',
@@ -924,6 +924,7 @@ export const dict: Record<I18nKey, string> = {
'chat.chatInput.toast.catchUpFailed': 'Nie udało się przywrócić kontekstu',
'chat.chatInput.toast.debugFailed': 'Nie udało się rozpocząć debugowania',
'chat.chatInput.toast.weighFailed': 'Nie udało się rozważyć opcji',
'chat.chatInput.toast.exploreFailed': 'Nie udało się rozpocząć przeglądu',
'chat.chatInput.toast.sendAttachmentsFailed': 'Nie udało się wysłać załączników. Spróbuj użyć mniejszej liczby plików lub mniejszych obrazów.',
'chat.chatInput.toast.someFilesSkipped': 'Pominięto niektóre pliki:\n{summary}',
'chat.chatInput.toast.summaryFailed': 'Nie udało się wygenerować podsumowania',
@@ -190,6 +190,7 @@ export const settingsDict = {
"settings.magicPrompts.sidebar.item.planImplement": "Implementar plano",
"settings.magicPrompts.sidebar.item.sessionSummary": "Resumo de sessão",
"settings.magicPrompts.sidebar.item.sessionWorkspaceReview": "Revisão do workspace",
"settings.magicPrompts.sidebar.item.sessionExplore": "Tour do código",
"settings.magicPrompts.sidebar.item.sessionFeaturePlan": "Planejamento de funcionalidade",
"settings.magicPrompts.sidebar.item.sessionCatchUp": "Retomada de contexto",
"settings.magicPrompts.sidebar.item.sessionDebug": "Depuração",
@@ -1656,6 +1657,8 @@ export const settingsDict = {
"settings.magicPrompts.page.group.sessionSummary.title": "Resumo de sessão",
"settings.magicPrompts.page.group.sessionSummary.description": "Prompts usados pelo comando /summary: mensagem visível do usuário + instruções ocultas. Não destrutivo: não compacta o histórico da sessão.",
"settings.magicPrompts.page.group.sessionWorkspaceReview.title": "Revisão do workspace",
"settings.magicPrompts.page.group.sessionExplore.title": "Tour do código",
"settings.magicPrompts.page.group.sessionExplore.description": "Prompts usados pelo comando /explore: mensagem visível do usuário + instruções ocultas. Investiga o repositório e dá uma orientação estruturada — o panorama geral, os módulos principais, como se conectam e por onde começar — em vez de uma listagem arquivo por arquivo.",
"settings.magicPrompts.page.group.sessionWorkspaceReview.description": "Prompts usados pelo comando /workspace-review: mensagem visível do usuário + instruções ocultas. Revise apenas problemas importantes nas alterações atuais do workspace.",
"settings.magicPrompts.page.group.sessionFeaturePlan.title": "Planejamento de funcionalidade",
"settings.magicPrompts.page.group.sessionFeaturePlan.description": "Prompts usados pelo comando /plan-feature: mensagem visível do usuário + instruções ocultas. Executa um diálogo guiado que investiga o código e faz perguntas de esclarecimento em pequenos lotes antes de produzir um plano de implementação.",
+2 -1
View File
@@ -1420,7 +1420,6 @@ export const dict: Record<I18nKey, string> = {
"chat.emptyState.draftTitle": "What are we working on?",
"chat.emptyState.draftTitleWithProject": "What are we working on in {project}?",
"chat.draftPresets.explore.label": "Explore the codebase",
"chat.draftPresets.explore.prompt": "Give me a high-level tour of this codebase — the architecture, the main modules, and how they fit together.",
"chat.draftPresets.catchup.label": "Catch me up",
"chat.draftPresets.weigh.label": "Weigh my options",
"chat.draftPresets.plan.label": "Start feature planning",
@@ -1490,6 +1489,7 @@ export const dict: Record<I18nKey, string> = {
"chat.commandAutocomplete.command.catchUpDescription": "Retome o contexto: o que você estava fazendo e por onde continuar.",
"chat.commandAutocomplete.command.debugDescription": "Investigação guiada da causa raiz de um bug antes de propor uma correção.",
"chat.commandAutocomplete.command.weighDescription": "Compare 2-3 abordagens com seus prós e contras e uma recomendação antes de decidir.",
"chat.commandAutocomplete.command.exploreDescription": "Oriente-se neste código: um tour geral pela arquitetura e pelas partes principais.",
"chat.commandAutocomplete.badge.skill": "habilidade",
"chat.commandAutocomplete.badge.command": "comando",
"chat.commandAutocomplete.badge.system": "sistema",
@@ -1609,6 +1609,7 @@ export const dict: Record<I18nKey, string> = {
"chat.chatInput.toast.catchUpFailed": "Não foi possível retomar o contexto",
"chat.chatInput.toast.debugFailed": "Não foi possível iniciar a depuração",
"chat.chatInput.toast.weighFailed": "Não foi possível comparar as opções",
"chat.chatInput.toast.exploreFailed": "Não foi possível iniciar o tour",
"chat.chatInput.toast.attachmentsTooLarge": "Os anexos são grandes demais para enviar. Tente reduzir a quantidade ou o tamanho das imagens.",
"chat.chatInput.toast.sendAttachmentsFailed": "Não foi possível enviar os anexos. Tente com menos arquivos ou imagens menores.",
"chat.chatInput.toast.messageSendFailed": "A mensagem não pôde ser enviada. Os anexos foram restaurados.",
@@ -190,6 +190,7 @@ export const settingsDict = {
"settings.magicPrompts.sidebar.item.planImplement": "Реалізувати план",
"settings.magicPrompts.sidebar.item.sessionSummary": "Підсумок сесії",
"settings.magicPrompts.sidebar.item.sessionWorkspaceReview": "Огляд робочого простору",
"settings.magicPrompts.sidebar.item.sessionExplore": "Огляд кодової бази",
"settings.magicPrompts.sidebar.item.sessionFeaturePlan": "Планування фічі",
"settings.magicPrompts.sidebar.item.sessionCatchUp": "Повернення в контекст",
"settings.magicPrompts.sidebar.item.sessionDebug": "Дебаг",
@@ -1656,6 +1657,8 @@ export const settingsDict = {
"settings.magicPrompts.page.group.sessionSummary.title": "Підсумок сесії",
"settings.magicPrompts.page.group.sessionSummary.description": "Промпти, які використовуються командою /summary: видиме повідомлення користувача + приховані інструкції. Неруйнівний – не стискає історію сесії.",
"settings.magicPrompts.page.group.sessionWorkspaceReview.title": "Огляд робочого простору",
"settings.magicPrompts.page.group.sessionExplore.title": "Огляд кодової бази",
"settings.magicPrompts.page.group.sessionExplore.description": "Промпти, які використовуються командою /explore: видиме повідомлення користувача + приховані інструкції. Досліджує репозиторій і дає структуровану орієнтацію — загальна картина, основні модулі, як вони пов'язані й звідки почати — а не дамп файл за файлом.",
"settings.magicPrompts.page.group.sessionWorkspaceReview.description": "Промпти, які використовуються командою /workspace-review: видиме повідомлення користувача + приховані інструкції. Переглядає поточні зміни робочого простору лише для проблем із сильним сигналом.",
"settings.magicPrompts.page.group.sessionFeaturePlan.title": "Планування фічі",
"settings.magicPrompts.page.group.sessionFeaturePlan.description": "Промпти, які використовуються командою /plan-feature: видиме повідомлення користувача + приховані інструкції. Запускає кероване діалогове планування — досліджує код і ставить уточнюючі запитання невеликими батчами, перш ніж скласти план імплементації.",
+2 -1
View File
@@ -1420,7 +1420,6 @@ export const dict: Record<I18nKey, string> = {
"chat.emptyState.draftTitle": "Над чим працюємо?",
"chat.emptyState.draftTitleWithProject": "Над чим працюємо в {project}?",
"chat.draftPresets.explore.label": "Огляд кодової бази",
"chat.draftPresets.explore.prompt": "Зроби високорівневий огляд цієї кодової бази — архітектуру, основні модулі та як вони пов'язані між собою.",
"chat.draftPresets.catchup.label": "Повернутись у контекст",
"chat.draftPresets.weigh.label": "Зважити варіанти",
"chat.draftPresets.plan.label": "Розпочати планування фічі",
@@ -1490,6 +1489,7 @@ export const dict: Record<I18nKey, string> = {
"chat.commandAutocomplete.command.catchUpDescription": "Повернутись у контекст: над чим працювали і звідки продовжити.",
"chat.commandAutocomplete.command.debugDescription": "Кероване дослідження першопричини бага перед тим, як пропонувати фікс.",
"chat.commandAutocomplete.command.weighDescription": "Зважити 2-3 підходи з trade-offs і рекомендацією перш ніж братися до роботи.",
"chat.commandAutocomplete.command.exploreDescription": "Зорієнтуватись у кодовій базі: високорівневий тур архітектурою й основними частинами.",
"chat.commandAutocomplete.badge.skill": "навичка",
"chat.commandAutocomplete.badge.command": "команда",
"chat.commandAutocomplete.badge.system": "система",
@@ -1609,6 +1609,7 @@ export const dict: Record<I18nKey, string> = {
"chat.chatInput.toast.catchUpFailed": "Не вдалося зібрати контекст",
"chat.chatInput.toast.debugFailed": "Не вдалося розпочати дебаг",
"chat.chatInput.toast.weighFailed": "Не вдалося зважити варіанти",
"chat.chatInput.toast.exploreFailed": "Не вдалося розпочати огляд",
"chat.chatInput.toast.attachmentsTooLarge": "Вкладені файли завеликі для надсилання. Спробуйте зменшити кількість або розмір зображень.",
"chat.chatInput.toast.sendAttachmentsFailed": "Не вдалося надіслати вкладення. Спробуйте зменшити кількість файлів або зображень.",
"chat.chatInput.toast.messageSendFailed": "Не вдалося надіслати повідомлення. Вкладення відновлено.",
@@ -190,6 +190,7 @@ export const settingsDict = {
'settings.magicPrompts.sidebar.item.planImplement': '执行计划',
'settings.magicPrompts.sidebar.item.sessionSummary': '会话总结',
'settings.magicPrompts.sidebar.item.sessionWorkspaceReview': '工作区审查',
'settings.magicPrompts.sidebar.item.sessionExplore': '代码库导览',
'settings.magicPrompts.sidebar.item.sessionFeaturePlan': '功能规划',
'settings.magicPrompts.sidebar.item.sessionCatchUp': '快速回顾',
'settings.magicPrompts.sidebar.item.sessionDebug': '调试',
@@ -1656,6 +1657,8 @@ export const settingsDict = {
'settings.magicPrompts.page.group.sessionSummary.title': '会话总结',
'settings.magicPrompts.page.group.sessionSummary.description': '由 /summary 斜杠命令使用的提示词:可见用户消息 + 隐藏说明。非破坏性,不会压缩会话历史。',
'settings.magicPrompts.page.group.sessionWorkspaceReview.title': '工作区审查',
'settings.magicPrompts.page.group.sessionExplore.title': '代码库导览',
'settings.magicPrompts.page.group.sessionExplore.description': '由 /explore 斜杠命令使用的提示词:可见用户消息 + 隐藏说明。调研仓库并给出结构化的导览——整体概貌、主要模块、它们如何连接以及从哪里入手——而不是逐文件罗列。',
'settings.magicPrompts.page.group.sessionWorkspaceReview.description': '由 /workspace-review 斜杠命令使用的提示词:可见用户消息 + 隐藏说明。仅审查当前工作区的高信号问题。',
'settings.magicPrompts.page.group.sessionFeaturePlan.title': '功能规划',
'settings.magicPrompts.page.group.sessionFeaturePlan.description': '由 /plan-feature 斜杠命令使用的提示词:可见用户消息 + 隐藏说明。运行引导式对话,先调研代码并分小批提出澄清问题,然后生成实现计划。',
+2 -1
View File
@@ -1420,7 +1420,6 @@ export const dict: Record<I18nKey, string> = {
'chat.emptyState.draftTitle': 'What are we working on?',
'chat.emptyState.draftTitleWithProject': 'What are we working on in {project}?',
'chat.draftPresets.explore.label': 'Explore the codebase',
'chat.draftPresets.explore.prompt': 'Give me a high-level tour of this codebase — the architecture, the main modules, and how they fit together.',
'chat.draftPresets.catchup.label': 'Catch me up',
'chat.draftPresets.weigh.label': 'Weigh my options',
'chat.draftPresets.plan.label': 'Start feature planning',
@@ -1490,6 +1489,7 @@ export const dict: Record<I18nKey, string> = {
'chat.commandAutocomplete.command.catchUpDescription': '重新进入上下文:你之前在做什么、从哪里继续。',
'chat.commandAutocomplete.command.debugDescription': '在提出修复方案前,引导式地排查 bug 的根本原因。',
'chat.commandAutocomplete.command.weighDescription': '在动手前,权衡 2-3 种方案的利弊并给出推荐。',
'chat.commandAutocomplete.command.exploreDescription': '快速熟悉这个代码库:对架构和主要部分的概览。',
'chat.commandAutocomplete.badge.skill': '技能',
'chat.commandAutocomplete.badge.command': '命令',
'chat.commandAutocomplete.badge.system': '系统',
@@ -1609,6 +1609,7 @@ export const dict: Record<I18nKey, string> = {
'chat.chatInput.toast.catchUpFailed': '无法获取上下文',
'chat.chatInput.toast.debugFailed': '无法开始调试',
'chat.chatInput.toast.weighFailed': '无法权衡方案',
'chat.chatInput.toast.exploreFailed': '无法开始导览',
'chat.chatInput.toast.attachmentsTooLarge': '附件过大,无法发送。请减少图片数量或大小。',
'chat.chatInput.toast.sendAttachmentsFailed': '发送附件失败。请尝试更少文件或更小图片。',
'chat.chatInput.toast.messageSendFailed': '消息发送失败,附件已恢复。',
@@ -187,6 +187,7 @@
'settings.magicPrompts.sidebar.item.planImplement': '執行計畫',
'settings.magicPrompts.sidebar.item.sessionSummary': '工作階段總結',
'settings.magicPrompts.sidebar.item.sessionWorkspaceReview': '工作區審查',
'settings.magicPrompts.sidebar.item.sessionExplore': '程式碼庫導覽',
'settings.magicPrompts.sidebar.item.sessionFeaturePlan': '功能規劃',
'settings.magicPrompts.sidebar.item.sessionCatchUp': '快速回顧',
'settings.magicPrompts.sidebar.item.sessionDebug': '除錯',
@@ -1577,6 +1578,8 @@
'settings.magicPrompts.page.group.sessionSummary.title': '工作階段總結',
'settings.magicPrompts.page.group.sessionSummary.description': '由 /summary 斜線命令使用的提示詞:可見使用者訊息 + 隱藏說明。非破壞性,不會壓縮工作階段歷史。',
'settings.magicPrompts.page.group.sessionWorkspaceReview.title': '工作區審查',
'settings.magicPrompts.page.group.sessionExplore.title': '程式碼庫導覽',
'settings.magicPrompts.page.group.sessionExplore.description': '由 /explore 斜線命令使用的提示詞:可見使用者訊息 + 隱藏說明。調研儲存庫並給出結構化的導覽——整體概貌、主要模組、它們如何連接以及從哪裡入手——而不是逐檔案羅列。',
'settings.magicPrompts.page.group.sessionWorkspaceReview.description': '由 /workspace-review 斜線命令使用的提示詞:可見使用者訊息 + 隱藏說明。僅審查目前工作區中的高訊號問題。',
'settings.magicPrompts.page.group.sessionFeaturePlan.title': '功能規劃',
'settings.magicPrompts.page.group.sessionFeaturePlan.description': '由 /plan-feature 斜線命令使用的提示詞:可見使用者訊息 + 隱藏說明。執行引導式對話,先調研程式碼並分小批提出釐清問題,然後產生實作計畫。',
+2 -1
View File
@@ -1417,7 +1417,6 @@ export const dict: Record<I18nKey, string> = {
'chat.emptyState.draftTitle': 'What are we working on?',
'chat.emptyState.draftTitleWithProject': 'What are we working on in {project}?',
'chat.draftPresets.explore.label': 'Explore the codebase',
'chat.draftPresets.explore.prompt': 'Give me a high-level tour of this codebase — the architecture, the main modules, and how they fit together.',
'chat.draftPresets.catchup.label': 'Catch me up',
'chat.draftPresets.weigh.label': 'Weigh my options',
'chat.draftPresets.plan.label': 'Start feature planning',
@@ -1487,6 +1486,7 @@ export const dict: Record<I18nKey, string> = {
'chat.commandAutocomplete.command.catchUpDescription': '重新進入上下文:你之前在做什麼、從哪裡繼續。',
'chat.commandAutocomplete.command.debugDescription': '在提出修復方案前,引導式地排查 bug 的根本原因。',
'chat.commandAutocomplete.command.weighDescription': '在動手前,權衡 2-3 種方案的利弊並給出推薦。',
'chat.commandAutocomplete.command.exploreDescription': '快速熟悉這個程式碼庫:對架構和主要部分的概覽。',
'chat.commandAutocomplete.badge.skill': 'Skills',
'chat.commandAutocomplete.badge.command': '命令',
'chat.commandAutocomplete.badge.system': '系統',
@@ -1606,6 +1606,7 @@ export const dict: Record<I18nKey, string> = {
'chat.chatInput.toast.catchUpFailed': '無法取得上下文',
'chat.chatInput.toast.debugFailed': '無法開始除錯',
'chat.chatInput.toast.weighFailed': '無法權衡方案',
'chat.chatInput.toast.exploreFailed': '無法開始導覽',
'chat.chatInput.toast.attachmentsTooLarge': '附件過大,無法傳送。請減少圖片數量或大小。',
'chat.chatInput.toast.sendAttachmentsFailed': '傳送附件失敗。請嘗試更少檔案或更小圖片。',
'chat.chatInput.toast.messageSendFailed': '訊息傳送失敗,附件已恢復。',
+29
View File
@@ -35,6 +35,8 @@ export type MagicPromptId =
| 'session.debug.instructions'
| 'session.weigh.visible'
| 'session.weigh.instructions'
| 'session.explore.visible'
| 'session.explore.instructions'
| 'session.fusion.visible'
| 'session.fusion.instructions';
@@ -697,6 +699,33 @@ Then give a clear recommendation. Anchor it on what best serves the user's actua
Keep it concrete and scannable. Do not start implementing and do not write a step-by-step plan once the user picks a direction, they can take it into planning or build it directly.
Respond in the same language the user uses.`,
},
{
id: 'session.explore.visible',
title: 'Codebase Tour Visible Prompt',
group: 'Session',
description: 'Visible user message sent by the /explore command.',
template: 'Give me a high-level tour of this codebase.',
},
{
id: 'session.explore.instructions',
title: 'Codebase Tour Instructions',
group: 'Session',
description: 'Hidden instructions attached to the /explore command. Investigates the repository and gives a structured orientation rather than a file-by-file dump.',
template: `The user wants to get oriented in this codebase — a high-level tour, as if you were onboarding a new contributor. Investigate first, then explain; do not guess from file or symbol names alone.
Explore the actual repository: entry points, the top-level structure, how it is built and run, and the main modules and how they connect. Read enough real code to be accurate.
Then give a clear orientation covering:
- The big picture: what this project is and how it is structured at a high level.
- Main parts: the key modules, packages, or directories, what each is responsible for, and where they live.
- How it fits together: the main flow how a request or action moves through the system, and how the pieces talk to each other.
- Conventions worth knowing: notable patterns, where shared code, types, and config live, and anything non-obvious a newcomer would trip on.
- Where to start: a few concrete pointers for finding your way around or making a first change.
Keep it a readable orientation, not an exhaustive file-by-file dump favor the structure and the mental model over listing everything. Lead with the big picture, then drill down. If the user named a specific area, focus the tour there.
Respond in the same language the user uses.`,
},
{