feat(/compress): manual session compression with focus topic — closes #469 (PR #619 by @franksong2702)
POST /api/session/compress with optional focus_topic. Transcript-inline cards: command, running, complete (collapsible green), reference. /compact alias kept. Fixes: var(--green) undefined color, focus_topic 500-char cap. Independent review by @nesquena (4 passes).
This commit is contained in:
@@ -61,7 +61,8 @@ const LOCALES = {
|
||||
// commands.js
|
||||
cmd_help: 'List available commands',
|
||||
cmd_clear: 'Clear conversation messages',
|
||||
cmd_compact: 'Compress conversation context',
|
||||
cmd_compress: 'Manually compress conversation context (usage: /compress [focus topic])',
|
||||
cmd_compact_alias: 'Legacy alias for /compress',
|
||||
cmd_model: 'Switch model (e.g. /model gpt-4o)',
|
||||
cmd_workspace: 'Switch workspace by name',
|
||||
cmd_new: 'Start a new chat session',
|
||||
@@ -72,6 +73,9 @@ const LOCALES = {
|
||||
available_commands: 'Available commands:',
|
||||
type_slash: 'Type / to see commands',
|
||||
conversation_cleared: 'Conversation cleared',
|
||||
command_label: 'Command',
|
||||
context_compaction_label: 'Context compaction',
|
||||
reference_only_label: 'Reference only',
|
||||
model_usage: 'Usage: /model <name>',
|
||||
no_model_match: 'No model matching "',
|
||||
switched_to: 'Switched to ',
|
||||
@@ -81,6 +85,10 @@ const LOCALES = {
|
||||
workspace_switch_failed: 'Workspace switch failed: ',
|
||||
new_session: 'New session created',
|
||||
compressing: 'Requesting context compression...',
|
||||
compress_running_label: 'Compressing',
|
||||
compress_complete_label: 'Compression complete',
|
||||
compress_failed_label: 'Compression failed',
|
||||
focus_label: 'Focus',
|
||||
token_usage_on: 'Token usage on',
|
||||
token_usage_off: 'Token usage off',
|
||||
theme_usage: 'Usage: /theme ',
|
||||
@@ -476,7 +484,8 @@ const LOCALES = {
|
||||
// commands.js
|
||||
cmd_help: 'Listar los comandos disponibles',
|
||||
cmd_clear: 'Borrar los mensajes de la conversación',
|
||||
cmd_compact: 'Comprimir el contexto de la conversación',
|
||||
cmd_compress: 'Comprimir manualmente el contexto de la conversación (uso: /compress [tema])',
|
||||
cmd_compact_alias: 'Alias antiguo de /compress',
|
||||
cmd_model: 'Cambiar de modelo (p. ej. /model gpt-4o)',
|
||||
cmd_workspace: 'Cambiar de espacio de trabajo por nombre',
|
||||
cmd_new: 'Iniciar una nueva sesión de chat',
|
||||
@@ -487,6 +496,9 @@ const LOCALES = {
|
||||
available_commands: 'Comandos disponibles:',
|
||||
type_slash: 'Escribe / para ver los comandos',
|
||||
conversation_cleared: 'Conversación borrada',
|
||||
command_label: 'Comando',
|
||||
context_compaction_label: 'Compacción de contexto',
|
||||
reference_only_label: 'Solo referencia',
|
||||
model_usage: 'Uso: /model <name>',
|
||||
no_model_match: 'No hay ningún modelo que coincida con "',
|
||||
switched_to: 'Se cambió a ',
|
||||
@@ -496,6 +508,10 @@ const LOCALES = {
|
||||
workspace_switch_failed: 'Error al cambiar de espacio de trabajo: ',
|
||||
new_session: 'Nueva sesión creada',
|
||||
compressing: 'Solicitando compresión del contexto...',
|
||||
compress_running_label: 'Comprimiendo',
|
||||
compress_complete_label: 'Compresión completa',
|
||||
compress_failed_label: 'La compresión falló',
|
||||
focus_label: 'Tema',
|
||||
token_usage_on: 'Uso de tokens activado',
|
||||
token_usage_off: 'Uso de tokens desactivado',
|
||||
theme_usage: 'Uso: /theme ',
|
||||
@@ -881,7 +897,8 @@ const LOCALES = {
|
||||
// commands.js
|
||||
cmd_help: 'Verfügbare Befehle auflisten',
|
||||
cmd_clear: 'Konversationsverlauf löschen',
|
||||
cmd_compact: 'Kontext komprimieren',
|
||||
cmd_compress: 'Kontext manuell komprimieren (Nutzung: /compress [Thema])',
|
||||
cmd_compact_alias: 'Alte Alias für /compress',
|
||||
cmd_model: 'Modell wechseln (z.B. /model gpt-4o)',
|
||||
cmd_workspace: 'Workspace nach Namen wechseln',
|
||||
cmd_new: 'Neue Chat-Sitzung starten',
|
||||
@@ -892,6 +909,9 @@ const LOCALES = {
|
||||
available_commands: 'Verfügbare Befehle:',
|
||||
type_slash: 'Tippe / für Befehle',
|
||||
conversation_cleared: 'Konversation gelöscht',
|
||||
command_label: 'Befehl',
|
||||
context_compaction_label: 'Kontextkomprimierung',
|
||||
reference_only_label: 'Nur Referenz',
|
||||
model_usage: 'Nutzung: /model <name>',
|
||||
no_model_match: 'Kein Modell gefunden für "',
|
||||
switched_to: 'Gewechselt zu ',
|
||||
@@ -901,6 +921,10 @@ const LOCALES = {
|
||||
workspace_switch_failed: 'Workspace-Wechsel fehlgeschlagen: ',
|
||||
new_session: 'Neue Sitzung erstellt',
|
||||
compressing: 'Kontext-Komprimierung wird angefordert...',
|
||||
compress_running_label: 'Komprimierung',
|
||||
compress_complete_label: 'Komprimierung abgeschlossen',
|
||||
compress_failed_label: 'Komprimierung fehlgeschlagen',
|
||||
focus_label: 'Thema',
|
||||
token_usage_on: 'Token-Verbrauch an',
|
||||
token_usage_off: 'Token-Verbrauch aus',
|
||||
theme_usage: 'Nutzung: /theme ',
|
||||
@@ -1094,7 +1118,8 @@ const LOCALES = {
|
||||
// commands.js
|
||||
cmd_help: '\u67e5\u770b\u53ef\u7528\u547d\u4ee4',
|
||||
cmd_clear: '\u6e05\u7a7a\u5f53\u524d\u5bf9\u8bdd\u6d88\u606f',
|
||||
cmd_compact: '\u538b\u7f29\u5bf9\u8bdd\u4e0a\u4e0b\u6587',
|
||||
cmd_compress: '\u624b\u52a8\u538b\u7f29\u5bf9\u8bdd\u4e0a\u4e0b\u6587\uff08\u7528\u6cd5\uff1a/compress [\u4e3b\u9898]\uff09',
|
||||
cmd_compact_alias: '\u65e7\u522b\u540d\uff1a/compress',
|
||||
cmd_model: '\u5207\u6362\u6a21\u578b\uff08\u4f8b\u5982 /model gpt-4o\uff09',
|
||||
cmd_workspace: '\u6309\u540d\u79f0\u5207\u6362\u5de5\u4f5c\u533a',
|
||||
cmd_new: '\u65b0\u5efa\u804a\u5929\u4f1a\u8bdd',
|
||||
@@ -1105,6 +1130,9 @@ const LOCALES = {
|
||||
available_commands: '\u53ef\u7528\u547d\u4ee4\uff1a',
|
||||
type_slash: '\u8f93\u5165 / \u53ef\u67e5\u770b\u547d\u4ee4',
|
||||
conversation_cleared: '\u5bf9\u8bdd\u5df2\u6e05\u7a7a',
|
||||
command_label: '\u547d\u4ee4',
|
||||
context_compaction_label: '\u4e0a\u4e0b\u6587\u538b\u7f29',
|
||||
reference_only_label: '\u4ec5\u4f9b\u53c2\u8003',
|
||||
model_usage: '\u7528\u6cd5\uff1a/model <name>',
|
||||
no_model_match: '\u6ca1\u6709\u5339\u914d\u201c',
|
||||
switched_to: '\u5df2\u5207\u6362\u5230 ',
|
||||
@@ -1114,6 +1142,10 @@ const LOCALES = {
|
||||
workspace_switch_failed: '\u5de5\u4f5c\u533a\u5207\u6362\u5931\u8d25\uff1a',
|
||||
new_session: '\u5df2\u65b0\u5efa\u4f1a\u8bdd',
|
||||
compressing: '\u6b63\u5728\u8bf7\u6c42\u538b\u7f29\u4e0a\u4e0b\u6587...',
|
||||
compress_running_label: '\u538b\u7f29\u4e2d',
|
||||
compress_complete_label: '\u538b\u7f29\u5b8c\u6210',
|
||||
compress_failed_label: '\u538b\u7f29\u5931\u8d25',
|
||||
focus_label: '\u4e3b\u9898',
|
||||
token_usage_on: 'Token \u7528\u91cf\u663e\u793a\u5df2\u5f00\u542f',
|
||||
token_usage_off: 'Token \u7528\u91cf\u663e\u793a\u5df2\u5173\u95ed',
|
||||
theme_usage: '\u7528\u6cd5\uff1a/theme ',
|
||||
@@ -1498,7 +1530,8 @@ const LOCALES = {
|
||||
// commands.js
|
||||
cmd_help: '\u67e5\u770b\u53ef\u7528\u547d\u4ee4',
|
||||
cmd_clear: '\u6e05\u7a7a\u7576\u524d\u5c0d\u8a71\u8a0a\u606f',
|
||||
cmd_compact: '\u58d3\u7e2e\u5c0d\u8a71\u4e0a\u4e0b\u6587',
|
||||
cmd_compress: '\u624b\u52d5\u58d3\u7e2e\u5c0d\u8a71\u4e0a\u4e0b\u6587\uff08\u7528\u6cd5\uff1a/compress [\u4e3b\u984c]\uff09',
|
||||
cmd_compact_alias: '\u820a\u5225\u540d\uff1a/compress',
|
||||
cmd_model: '\u5207\u63db\u6a21\u578b\uff08\u4f8b\u5982 /model gpt-4o\uff09',
|
||||
cmd_workspace: '\u6309\u540d\u7a31\u5207\u63db\u5de5\u4f5c\u5340',
|
||||
cmd_new: '\u65b0\u5efa\u804a\u5929\u6703\u8a71',
|
||||
@@ -1509,6 +1542,9 @@ const LOCALES = {
|
||||
available_commands: '\u53ef\u7528\u547d\u4ee4\uff1a',
|
||||
type_slash: '\u8f38\u5165 / \u53ef\u67e5\u770b\u547d\u4ee4',
|
||||
conversation_cleared: '\u5c0d\u8a71\u5df2\u6e05\u7a7a',
|
||||
command_label: '\u547d\u4ee4',
|
||||
context_compaction_label: '\u4e0a\u4e0b\u6587\u58d3\u7e2e',
|
||||
reference_only_label: '\u50c5\u4f9b\u53c3\u8003',
|
||||
model_usage: '\u7528\u6cd5\uff1a/model <name>',
|
||||
no_model_match: '\u6c92\u6709\u5339\u914d\u201c',
|
||||
switched_to: '\u5df2\u5207\u63db\u5230 ',
|
||||
@@ -1518,6 +1554,10 @@ const LOCALES = {
|
||||
workspace_switch_failed: '\u5de5\u4f5c\u5340\u5207\u63db\u5931\u6557\uff1a',
|
||||
new_session: '\u5df2\u65b0\u5efa\u6703\u8a71',
|
||||
compressing: '\u6b63\u5728\u8981\u6c42\u58d3\u7e2e\u4e0a\u4e0b\u6587...',
|
||||
compress_running_label: '\u58d3\u7e2e\u4e2d',
|
||||
compress_complete_label: '\u58d3\u7e2e\u5b8c\u6210',
|
||||
compress_failed_label: '\u58d3\u7e2e\u5931\u6557',
|
||||
focus_label: '\u4e3b\u984c',
|
||||
token_usage_on: 'Token \u7528\u91cf\u986f\u793a\u5df2\u958b\u555f',
|
||||
token_usage_off: 'Token \u7528\u91cf\u986f\u793a\u5df2\u95dc\u9589',
|
||||
theme_usage: '\u7528\u6cd5\uff1a/theme ',
|
||||
|
||||
Reference in New Issue
Block a user