palabre 0.6.4 → 0.8.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.
@@ -6,7 +6,8 @@ export const agentsMessages = {
6
6
  defaultAgentA: "agent A par défaut",
7
7
  defaultAgentB: "agent B par défaut",
8
8
  defaultSummary: "synthèse par défaut",
9
- defaults: (agentA, agentB, turns, summaryAgent) => `Défauts: ${agentA} <-> ${agentB}, réponses: ${turns}, synthèse: ${summaryAgent}`,
9
+ defaultAskSummary: "synthèse ask par défaut",
10
+ defaults: (agentA, agentB, turns, summaryAgent, askSummaryAgent) => `Défauts: ${agentA} <-> ${agentB}, réponses: ${turns}, synthèse débat: ${summaryAgent}${askSummaryAgent ? `, synthèse ask: ${askSummaryAgent}` : ""}`,
10
11
  none: "aucun",
11
12
  summaryAgentB: "agent B",
12
13
  model: (model) => `modèle: ${model}`,
@@ -24,7 +25,8 @@ export const agentsMessages = {
24
25
  defaultAgentA: "default agent A",
25
26
  defaultAgentB: "default agent B",
26
27
  defaultSummary: "default summary",
27
- defaults: (agentA, agentB, turns, summaryAgent) => `Defaults: ${agentA} <-> ${agentB}, responses: ${turns}, summary: ${summaryAgent}`,
28
+ defaultAskSummary: "default ask summary",
29
+ defaults: (agentA, agentB, turns, summaryAgent, askSummaryAgent) => `Defaults: ${agentA} <-> ${agentB}, responses: ${turns}, debate summary: ${summaryAgent}${askSummaryAgent ? `, ask summary: ${askSummaryAgent}` : ""}`,
28
30
  none: "none",
29
31
  summaryAgentB: "agent B",
30
32
  model: (model) => `model: ${model}`,
@@ -10,6 +10,8 @@ export const commonMessages = {
10
10
  unknownAgentForField: (field, agent, available) => `Agent inconnu pour ${field}: ${agent}. Agents disponibles: ${available}.`,
11
11
  unknownAgent: (agent) => `Agent inconnu: ${agent}`,
12
12
  unknownRenderer: (value, supported) => `Renderer inconnu: ${value}. Valeurs supportées: ${supported}.`,
13
+ unknownMode: (value, supported) => `Mode inconnu: ${value}. Valeurs supportées: ${supported}.`,
14
+ tooManyAskAgents: (max) => `Le mode ask accepte au maximum ${max} agents.`,
13
15
  configInvalidShape: (configPath) => `Config invalide: ${configPath} ne contient pas un objet JSON. Relance palabre init ou corrige le fichier.`,
14
16
  configMissingAgents: (configPath) => `Config invalide: ${configPath} ne déclare pas de bloc "agents". Relance palabre init ou ajoute au moins un agent.`,
15
17
  configEmptyAgents: (configPath) => `Config invalide: ${configPath} ne déclare aucun agent. Ajoute au moins un agent ou relance palabre init.`,
@@ -26,6 +28,8 @@ export const commonMessages = {
26
28
  unknownAgentForField: (field, agent, available) => `Unknown agent for ${field}: ${agent}. Available agents: ${available}.`,
27
29
  unknownAgent: (agent) => `Unknown agent: ${agent}`,
28
30
  unknownRenderer: (value, supported) => `Unknown renderer: ${value}. Supported values: ${supported}.`,
31
+ unknownMode: (value, supported) => `Unknown mode: ${value}. Supported values: ${supported}.`,
32
+ tooManyAskAgents: (max) => `Ask mode supports at most ${max} agents.`,
29
33
  configInvalidShape: (configPath) => `Invalid config: ${configPath} does not contain a JSON object. Run palabre init or fix the file.`,
30
34
  configMissingAgents: (configPath) => `Invalid config: ${configPath} has no "agents" block. Run palabre init or add at least one agent.`,
31
35
  configEmptyAgents: (configPath) => `Invalid config: ${configPath} declares no agent. Add at least one agent or run palabre init.`,
@@ -3,12 +3,21 @@ export const configMessages = {
3
3
  createdForConfig: (path) => `${path} créé. Édite la config puis relance palabre config.`,
4
4
  syncNoMissing: (path) => `Aucun agent détecté manquant dans ${path}.`,
5
5
  syncAdded: (path, agents) => `Agents ajoutés dans ${path}: ${agents}.`,
6
+ ollamaModelNoChange: (path, model) => `Modèle Ollama inchangé dans ${path}: ${model ?? "aucun"}.`,
7
+ ollamaModelUpdated: (path, previousModel, nextModel) => `Modèle Ollama mis à jour dans ${path}: ${previousModel} -> ${nextModel}.`,
8
+ ollamaModelUnavailable: (model) => `Modèle Ollama non installé: ${model}. Action: choisis un modèle installé ou lance \`ollama pull ${model}\`.`,
9
+ ollamaModelNoAgent: "Agent ollama-local absent ou invalide dans la config.",
10
+ ollamaModelNoInstalledModels: "Aucun modèle Ollama installé détecté. Action: lance `ollama pull <modèle>`.",
6
11
  updated: (path, defaults, language) => `Configuration mise à jour dans ${path}: ${defaults}, langue: ${language}.`,
7
12
  cleared: (path) => `Paramètres par défaut supprimés dans ${path}. Utilise maintenant un preset ou --agent-a/--agent-b pour lancer un débat.`,
8
- defaultsSummary: (agentA, agentB, turns, summaryAgent) => {
13
+ defaultsSummary: (agentA, agentB, turns, summaryAgent, askSummaryAgent, mode, askAgents, interfaceName) => {
14
+ const modeLabel = `mode: ${mode ?? "debate"}`;
15
+ const interfaceLabel = `interface: ${interfaceName ?? "tui"}`;
9
16
  const pair = agentA && agentB ? `agents: ${agentA} <-> ${agentB}` : "agents: non définis";
10
- const summary = summaryAgent ? `synthèse: ${summaryAgent}` : "synthèse: agent B";
11
- return `${pair}, réponses: ${turns}, ${summary}`;
17
+ const askAgentsLabel = askAgents && askAgents.length > 0 ? `agents ask: ${askAgents.join(", ")}` : "agents ask: défaut";
18
+ const summary = summaryAgent ? `synthèse débat: ${summaryAgent}` : "synthèse débat: agent B";
19
+ const askSummary = askSummaryAgent ? `synthèse ask: ${askSummaryAgent}` : "synthèse ask: synthèse par défaut";
20
+ return `${modeLabel}, ${interfaceLabel}, ${pair}, réponses: ${turns}, ${askAgentsLabel}, ${summary}, ${askSummary}`;
12
21
  },
13
22
  wizardNeedsTwoAgents: "La config doit contenir au moins deux agents pour définir des paramètres par défaut.",
14
23
  wizardTitle: "PALABRE - Configuration",
@@ -19,6 +28,7 @@ export const configMessages = {
19
28
  wizardActionQuestion: "Que veux-tu faire ?",
20
29
  wizardActionSetDefaults: "Définir des paramètres par défaut",
21
30
  wizardActionClearDefaults: "Supprimer les paramètres par défaut",
31
+ wizardActionSyncAgents: "Synchroniser les agents détectés",
22
32
  wizardActionExit: "Quitter sans modifier",
23
33
  wizardChoicePrompt: "Tape le numéro de ton choix",
24
34
  wizardChoiceQuestion: (label, defaultValue) => `${label} (Entrée = ${defaultValue}) : `,
@@ -40,18 +50,27 @@ export const configMessages = {
40
50
  wizardTurnsLabel: "Nombre de réponses par défaut",
41
51
  wizardTurnsPrompt: (defaultValue) => `Tape le nombre total de réponses du débat (Entrée = ${defaultValue}) : `,
42
52
  wizardTurnsInvalid: (maxTurns) => `Entre un nombre entier entre 1 et ${maxTurns}, Entrée ou q.`,
43
- wizardDefaults: (defaults) => `${defaults.agentA ?? "?"} <-> ${defaults.agentB ?? "?"}, réponses: ${defaults.turns}${defaults.summaryAgent ? `, synthèse: ${defaults.summaryAgent}` : ""}`
53
+ wizardDefaults: (defaults) => `mode: ${defaults.mode ?? "debate"}, interface: ${defaults.interfaceName ?? "tui"}, ${defaults.agentA ?? "?"} <-> ${defaults.agentB ?? "?"}, réponses: ${defaults.turns}, agents ask: ${defaults.askAgents && defaults.askAgents.length > 0 ? defaults.askAgents.join(", ") : "défaut"}${defaults.summaryAgent ? `, synthèse débat: ${defaults.summaryAgent}` : ""}${defaults.askSummaryAgent ? `, synthèse ask: ${defaults.askSummaryAgent}` : ""}`
44
54
  },
45
55
  en: {
46
56
  createdForConfig: (path) => `${path} created. Edit the config, then run palabre config again.`,
47
57
  syncNoMissing: (path) => `No missing detected agent in ${path}.`,
48
58
  syncAdded: (path, agents) => `Agents added to ${path}: ${agents}.`,
59
+ ollamaModelNoChange: (path, model) => `Ollama model unchanged in ${path}: ${model ?? "none"}.`,
60
+ ollamaModelUpdated: (path, previousModel, nextModel) => `Ollama model updated in ${path}: ${previousModel} -> ${nextModel}.`,
61
+ ollamaModelUnavailable: (model) => `Ollama model is not installed: ${model}. Action: choose an installed model or run \`ollama pull ${model}\`.`,
62
+ ollamaModelNoAgent: "ollama-local agent is missing or invalid in the config.",
63
+ ollamaModelNoInstalledModels: "No installed Ollama model detected. Action: run `ollama pull <model>`.",
49
64
  updated: (path, defaults, language) => `Configuration updated in ${path}: ${defaults}, language: ${language}.`,
50
65
  cleared: (path) => `Default settings cleared in ${path}. Use a preset or --agent-a/--agent-b to start a debate now.`,
51
- defaultsSummary: (agentA, agentB, turns, summaryAgent) => {
66
+ defaultsSummary: (agentA, agentB, turns, summaryAgent, askSummaryAgent, mode, askAgents, interfaceName) => {
67
+ const modeLabel = `mode: ${mode ?? "debate"}`;
68
+ const interfaceLabel = `interface: ${interfaceName ?? "tui"}`;
52
69
  const pair = agentA && agentB ? `agents: ${agentA} <-> ${agentB}` : "agents: not set";
53
- const summary = summaryAgent ? `summary: ${summaryAgent}` : "summary: agent B";
54
- return `${pair}, responses: ${turns}, ${summary}`;
70
+ const askAgentsLabel = askAgents && askAgents.length > 0 ? `ask agents: ${askAgents.join(", ")}` : "ask agents: default";
71
+ const summary = summaryAgent ? `debate summary: ${summaryAgent}` : "debate summary: agent B";
72
+ const askSummary = askSummaryAgent ? `ask summary: ${askSummaryAgent}` : "ask summary: default summary";
73
+ return `${modeLabel}, ${interfaceLabel}, ${pair}, responses: ${turns}, ${askAgentsLabel}, ${summary}, ${askSummary}`;
55
74
  },
56
75
  wizardNeedsTwoAgents: "The config must contain at least two agents to set default settings.",
57
76
  wizardTitle: "PALABRE - Configuration",
@@ -62,6 +81,7 @@ export const configMessages = {
62
81
  wizardActionQuestion: "What do you want to do?",
63
82
  wizardActionSetDefaults: "Set default settings",
64
83
  wizardActionClearDefaults: "Clear default settings",
84
+ wizardActionSyncAgents: "Sync detected agents",
65
85
  wizardActionExit: "Exit without changes",
66
86
  wizardChoicePrompt: "Type the number of your choice",
67
87
  wizardChoiceQuestion: (label, defaultValue) => `${label} (Enter = ${defaultValue}): `,
@@ -83,6 +103,6 @@ export const configMessages = {
83
103
  wizardTurnsLabel: "Default number of responses",
84
104
  wizardTurnsPrompt: (defaultValue) => `Type the total number of debate responses (Enter = ${defaultValue}): `,
85
105
  wizardTurnsInvalid: (maxTurns) => `Enter an integer between 1 and ${maxTurns}, Enter, or q.`,
86
- wizardDefaults: (defaults) => `${defaults.agentA ?? "?"} <-> ${defaults.agentB ?? "?"}, responses: ${defaults.turns}${defaults.summaryAgent ? `, summary: ${defaults.summaryAgent}` : ""}`
106
+ wizardDefaults: (defaults) => `mode: ${defaults.mode ?? "debate"}, interface: ${defaults.interfaceName ?? "tui"}, ${defaults.agentA ?? "?"} <-> ${defaults.agentB ?? "?"}, responses: ${defaults.turns}, ask agents: ${defaults.askAgents && defaults.askAgents.length > 0 ? defaults.askAgents.join(", ") : "default"}${defaults.summaryAgent ? `, debate summary: ${defaults.summaryAgent}` : ""}${defaults.askSummaryAgent ? `, ask summary: ${defaults.askSummaryAgent}` : ""}`
87
107
  }
88
108
  };
@@ -1,6 +1,10 @@
1
1
  export const doctorMessages = {
2
2
  fr: {
3
3
  title: "PALABRE doctor",
4
+ cliVersion: (version) => `Version CLI: ${version}`,
5
+ updateCurrent: (version) => `Mise à jour: CLI à jour (${version}).`,
6
+ updateAvailable: (current, latest) => `Mise à jour disponible: ${current} -> ${latest}. Action: lance ` + "`palabre update`.",
7
+ updateUnknown: "Mise à jour: vérification npm indisponible. Action: lance `palabre update` pour les instructions.",
4
8
  currentDirectory: (cwd) => `Dossier courant: ${cwd}`,
5
9
  configFound: (path) => `Config trouvée: ${path}`,
6
10
  configMissing: (path) => `Config absente: ${path}`,
@@ -63,6 +67,10 @@ export const doctorMessages = {
63
67
  },
64
68
  en: {
65
69
  title: "PALABRE doctor",
70
+ cliVersion: (version) => `CLI version: ${version}`,
71
+ updateCurrent: (version) => `Update: CLI is up to date (${version}).`,
72
+ updateAvailable: (current, latest) => `Update available: ${current} -> ${latest}. Action: run ` + "`palabre update`.",
73
+ updateUnknown: "Update: npm check unavailable. Action: run `palabre update` for instructions.",
66
74
  currentDirectory: (cwd) => `Current directory: ${cwd}`,
67
75
  configFound: (path) => `Config found: ${path}`,
68
76
  configMissing: (path) => `Config missing: ${path}`,
@@ -48,6 +48,10 @@ Usage:
48
48
  palabre config --set-defaults <agentA> <agentB>
49
49
  palabre config -t <number>
50
50
  palabre config --summary-agent <name|none>
51
+ palabre config --ask-summary-agent <name|none>
52
+ palabre config --mode <debate|ask>
53
+ palabre config --ask-agents <names...>
54
+ palabre config --interface <tui|terminal>
51
55
  palabre config --language <fr|en>
52
56
 
53
57
  Flags:
@@ -72,7 +76,7 @@ Usage:
72
76
  palabre doctor [flags]
73
77
 
74
78
  Flags:
75
- --plain sortie simple pour logs
79
+ --terminal sortie simple pour logs
76
80
  --config <path> chemin de config explicite
77
81
  --language <fr|en> force la langue
78
82
  `,
@@ -100,6 +104,24 @@ Flags:
100
104
  --preset <name> preset d'agents
101
105
  --agent-a <name> premier agent
102
106
  --agent-b <name> second agent
107
+ --tui force l'interface TUI
108
+ --terminal force le rendu terminal brut
109
+ --renderer <kind> auto, pretty, plain, tui ou ndjson
110
+ --show-prompt affiche le prompt sans appeler d'agent
111
+ `,
112
+ ask: `
113
+ Lance une demande avec plusieurs reponses independantes.
114
+
115
+ Usage:
116
+ palabre ask "Sujet" --agents codex claude
117
+ palabre run --mode ask --agents codex claude -s "Sujet"
118
+
119
+ Flags:
120
+ --agents <names...> agents qui repondent, 4 maximum
121
+ --summary-agent <n> agent de synthese pour ce lancement
122
+ --tui force l'interface TUI
123
+ --terminal force le rendu terminal brut
124
+ --renderer <kind> auto, pretty, plain, tui ou ndjson
103
125
  --show-prompt affiche le prompt sans appeler d'agent
104
126
  `
105
127
  };
@@ -153,6 +175,10 @@ Usage:
153
175
  palabre config --set-defaults <agentA> <agentB>
154
176
  palabre config -t <number>
155
177
  palabre config --summary-agent <name|none>
178
+ palabre config --ask-summary-agent <name|none>
179
+ palabre config --mode <debate|ask>
180
+ palabre config --ask-agents <names...>
181
+ palabre config --interface <tui|terminal>
156
182
  palabre config --language <fr|en>
157
183
 
158
184
  Flags:
@@ -177,7 +203,7 @@ Usage:
177
203
  palabre doctor [flags]
178
204
 
179
205
  Flags:
180
- --plain simple output for logs
206
+ --terminal simple output for logs
181
207
  --config <path> explicit config path
182
208
  --language <fr|en> forces the language
183
209
  `,
@@ -205,6 +231,24 @@ Flags:
205
231
  --preset <name> agent preset
206
232
  --agent-a <name> first agent
207
233
  --agent-b <name> second agent
234
+ --tui forces the TUI interface
235
+ --terminal forces raw terminal rendering
236
+ --renderer <kind> auto, pretty, plain, tui, or ndjson
237
+ --show-prompt shows the prompt without calling an agent
238
+ `,
239
+ ask: `
240
+ Runs a request with several independent responses.
241
+
242
+ Usage:
243
+ palabre ask "Subject" --agents codex claude
244
+ palabre run --mode ask --agents codex claude -s "Subject"
245
+
246
+ Flags:
247
+ --agents <names...> responding agents, 4 maximum
248
+ --summary-agent <n> summary agent for this run
249
+ --tui forces the TUI interface
250
+ --terminal forces raw terminal rendering
251
+ --renderer <kind> auto, pretty, plain, tui, or ndjson
208
252
  --show-prompt shows the prompt without calling an agent
209
253
  `
210
254
  };
@@ -216,13 +260,16 @@ PALABRE
216
260
  Debats entre agents IA dans votre terminal.
217
261
 
218
262
  Usage:
263
+ palabre
219
264
  palabre [flags]
220
265
  palabre [command]
221
266
  palabre "Sujet"
222
267
  palabre <preset> "Sujet"
268
+ palabre ask "Sujet" --agents codex claude
223
269
 
224
270
  Demarrage rapide:
225
271
  palabre init
272
+ palabre
226
273
  palabre new
227
274
  palabre "Faut-il ajouter une TUI a Palabre ?"
228
275
  palabre codex-claude "Comparer deux solutions" -t 4
@@ -230,6 +277,7 @@ Demarrage rapide:
230
277
  Commandes:
231
278
  init Creer une configuration
232
279
  new Assistant interactif de debat
280
+ ask Demande multi-agents independante
233
281
  agents Lister les agents configures
234
282
  presets Lister les presets disponibles
235
283
  context Scanner le contexte projet
@@ -244,6 +292,8 @@ Flags:
244
292
  -v, --version affiche la version
245
293
  -s, --subject <text> sujet du debat
246
294
  -t, --turns <number> nombre total de reponses
295
+ --tui force l'interface TUI
296
+ --terminal force le rendu terminal brut
247
297
  --language <fr|en> force la langue
248
298
  --config <path> chemin de config explicite
249
299
 
@@ -261,13 +311,16 @@ PALABRE
261
311
  Debates between AI agents in your terminal.
262
312
 
263
313
  Usage:
314
+ palabre
264
315
  palabre [flags]
265
316
  palabre [command]
266
317
  palabre "Subject"
267
318
  palabre <preset> "Subject"
319
+ palabre ask "Subject" --agents codex claude
268
320
 
269
321
  Quick start:
270
322
  palabre init
323
+ palabre
271
324
  palabre new
272
325
  palabre "Should Palabre add a TUI?"
273
326
  palabre codex-claude "Compare two solutions" -t 4
@@ -275,6 +328,7 @@ Quick start:
275
328
  Commands:
276
329
  init Create a configuration
277
330
  new Interactive debate assistant
331
+ ask Independent multi-agent request
278
332
  agents List configured agents
279
333
  presets List available presets
280
334
  context Scan project context
@@ -289,6 +343,8 @@ Flags:
289
343
  -v, --version show version
290
344
  -s, --subject <text> debate subject
291
345
  -t, --turns <number> total number of responses
346
+ --tui forces the TUI interface
347
+ --terminal forces raw terminal rendering
292
348
  --language <fr|en> force language
293
349
  --config <path> explicit config path
294
350
 
@@ -14,6 +14,7 @@ import { promptMessages } from "./prompt.js";
14
14
  import { presetsMessages } from "./presets.js";
15
15
  import { previewMessages } from "./preview.js";
16
16
  import { rendererMessages } from "./renderers.js";
17
+ import { tuiMessages } from "./tui.js";
17
18
  import { updateMessages } from "./update.js";
18
19
  export function createTranslator(language) {
19
20
  return {
@@ -33,6 +34,7 @@ export function createTranslator(language) {
33
34
  presets: presetsMessages[language],
34
35
  preview: previewMessages[language],
35
36
  renderers: rendererMessages[language],
37
+ tui: tuiMessages[language],
36
38
  update: updateMessages[language]
37
39
  };
38
40
  }
@@ -10,7 +10,7 @@ export const initMessages = {
10
10
  ollamaMissing: "non détecté",
11
11
  ollamaDetected: (modelCount) => `détectée (${modelCount} modèle${modelCount > 1 ? "s" : ""})`,
12
12
  defaults: (agentA, agentB) => `Défauts: ${agentA} <-> ${agentB}`,
13
- noDefaultPair: (detectedAgents) => `Défauts: ${detectedAgents}. Palabre a besoin d'au moins deux agents.\nAgents compatibles: Codex CLI, Claude CLI, Gemini CLI, Antigravity CLI, OpenCode CLI, Ollama local.\nGuide: https://palab.re/fr/agents/overview`,
13
+ noDefaultPair: (detectedAgents) => `Défauts: ${detectedAgents}. Palabre a besoin d'au moins deux agents.\nAgents compatibles: Codex CLI, Claude CLI, Gemini CLI, Antigravity CLI, OpenCode CLI, Mistral Vibe CLI, Ollama local.\nGuide: https://palab.re/fr/agents/overview`,
14
14
  languageHint: (language) => `Langue: ${language}\nEnglish > palabre config --language en`
15
15
  },
16
16
  en: {
@@ -24,7 +24,7 @@ export const initMessages = {
24
24
  ollamaMissing: "not detected",
25
25
  ollamaDetected: (modelCount) => `detected (${modelCount} model${modelCount > 1 ? "s" : ""})`,
26
26
  defaults: (agentA, agentB) => `Defaults: ${agentA} <-> ${agentB}`,
27
- noDefaultPair: (detectedAgents) => `Defaults: ${detectedAgents}. Palabre needs at least two agents.\nCompatible agents: Codex CLI, Claude CLI, Gemini CLI, Antigravity CLI, OpenCode CLI, local Ollama.\nGuide: https://palab.re/en/agents/overview`,
27
+ noDefaultPair: (detectedAgents) => `Defaults: ${detectedAgents}. Palabre needs at least two agents.\nCompatible agents: Codex CLI, Claude CLI, Gemini CLI, Antigravity CLI, OpenCode CLI, Mistral Vibe CLI, local Ollama.\nGuide: https://palab.re/en/agents/overview`,
28
28
  languageHint: (language) => `Language: ${language}\nFrançais > palabre config --language fr`
29
29
  }
30
30
  };
@@ -5,8 +5,13 @@ export const newMessages = {
5
5
  title: "PALABRE - ASSISTANT DE CONFIGURATION",
6
6
  quitHint: "À tout moment: Ctrl+C pour interrompre, ou tape q, quit ou exit dans un prompt pour quitter.",
7
7
  defaultHint: "Appuie sur Entrée pour accepter un choix par défaut (*).",
8
+ mode: "Mode",
9
+ modeDebate: "Débat entre deux agents",
10
+ modeAsk: "Demande avec réponses indépendantes",
8
11
  agentA: "Agent A",
9
12
  agentB: "Agent B",
13
+ askAgents: "Agents qui répondront indépendamment",
14
+ askAgentsPrompt: (defaultValue) => `Agents ask, noms ou numéros séparés par des espaces (Entrée = ${defaultValue})`,
10
15
  topic: "Sujet",
11
16
  advancedHint: "Réponds non pour choisir le nombre de réponses, les modèles, la synthèse et le contexte.",
12
17
  launchMinimal: "Lancer maintenant avec les options par défaut ?",
@@ -23,7 +28,9 @@ export const newMessages = {
23
28
  ollamaUnreachable: (role) => `ollama/${role} non joignable`,
24
29
  detectedCli: (role) => `cli/${role} détecté`,
25
30
  missingCli: (role) => `cli/${role} non détecté`,
31
+ invalidModeChoice: "Choix invalide. Tape 1, 2, débat, ask, Entrée ou q.",
26
32
  invalidAgentChoice: "Choix invalide. Tape un numéro, un nom d'agent, Entrée ou q.",
33
+ invalidAskAgentsChoice: "Choix invalide. Tape un à quatre numéros ou noms d'agents, séparés par des espaces, Entrée ou q.",
27
34
  requiredField: "Ce champ est requis pour lancer un débat.",
28
35
  invalidTurns: (maxTurns) => `Entre un nombre entier entre 1 et ${maxTurns}, Entrée ou q.`,
29
36
  invalidYesNo: "Réponds par oui, non, Entrée ou q.",
@@ -37,8 +44,13 @@ export const newMessages = {
37
44
  title: "PALABRE - SETUP ASSISTANT",
38
45
  quitHint: "At any time: Ctrl+C to interrupt, or type q, quit, or exit in a prompt to leave.",
39
46
  defaultHint: "Press Enter to accept a default choice (*).",
47
+ mode: "Mode",
48
+ modeDebate: "Debate between two agents",
49
+ modeAsk: "Request with independent responses",
40
50
  agentA: "Agent A",
41
51
  agentB: "Agent B",
52
+ askAgents: "Agents that will answer independently",
53
+ askAgentsPrompt: (defaultValue) => `Ask agents, names or numbers separated by spaces (Enter = ${defaultValue})`,
42
54
  topic: "Subject",
43
55
  advancedHint: "Answer no to choose the number of responses, models, summary, and context.",
44
56
  launchMinimal: "Launch now with default options?",
@@ -55,7 +67,9 @@ export const newMessages = {
55
67
  ollamaUnreachable: (role) => `ollama/${role} unreachable`,
56
68
  detectedCli: (role) => `cli/${role} detected`,
57
69
  missingCli: (role) => `cli/${role} not detected`,
70
+ invalidModeChoice: "Invalid choice. Type 1, 2, debate, ask, Enter, or q.",
58
71
  invalidAgentChoice: "Invalid choice. Type a number, an agent name, Enter, or q.",
72
+ invalidAskAgentsChoice: "Invalid choice. Type one to four agent numbers or names separated by spaces, Enter, or q.",
59
73
  requiredField: "This field is required to start a debate.",
60
74
  invalidTurns: (maxTurns) => `Enter an integer between 1 and ${maxTurns}, Enter, or q.`,
61
75
  invalidYesNo: "Answer yes, no, Enter, or q.",
@@ -11,6 +11,7 @@ export const orchestratorMessages = {
11
11
  "rien a ajouter",
12
12
  "question factuelle resolue"
13
13
  ],
14
+ cancelled: "Débat annulé par l'utilisateur.",
14
15
  ollamaNoContext: (agentNames) => `${agentNames} ne lit pas le filesystem. Ajoute --files ou --context pour fournir un contexte projet.`,
15
16
  unknownSummaryAgent: (agentName) => `Agent de synthese inconnu: ${agentName}`
16
17
  },
@@ -27,6 +28,7 @@ export const orchestratorMessages = {
27
28
  "nothing to add",
28
29
  "factual question resolved"
29
30
  ],
31
+ cancelled: "Debate cancelled by the user.",
30
32
  ollamaNoContext: (agentNames) => `${agentNames} cannot read the filesystem. Add --files or --context to provide project context.`,
31
33
  unknownSummaryAgent: (agentName) => `Unknown summary agent: ${agentName}`
32
34
  }
@@ -1,8 +1,10 @@
1
1
  export const outputMessages = {
2
2
  fr: {
3
3
  title: "# PALABRE Debate",
4
+ askTitle: "# PALABRE Ask",
4
5
  contextTitle: "## Contexte",
5
6
  exchangesTitle: "## Echanges",
7
+ askResponsesTitle: "## Reponses des agents",
6
8
  failureTitle: "## Interruption",
7
9
  finalSummaryTitle: "## Synthese finale",
8
10
  tableField: "Champ",
@@ -16,11 +18,14 @@ export const outputMessages = {
16
18
  disabled: "desactivee",
17
19
  fields: {
18
20
  subject: "Sujet",
21
+ mode: "Mode",
19
22
  agents: "Agents",
20
23
  autoPullOllama: "Auto-pull Ollama",
21
24
  summary: "Synthese",
22
25
  requestedTurns: "Tours demandes",
23
26
  playedTurns: "Tours joues",
27
+ requestedResponses: "Reponses attendues",
28
+ receivedResponses: "Reponses recues",
24
29
  earlyStop: "Arret anticipe",
25
30
  localDate: "Date locale",
26
31
  timeZone: "Fuseau horaire",
@@ -38,8 +43,10 @@ export const outputMessages = {
38
43
  },
39
44
  en: {
40
45
  title: "# PALABRE Debate",
46
+ askTitle: "# PALABRE Ask",
41
47
  contextTitle: "## Context",
42
48
  exchangesTitle: "## Exchanges",
49
+ askResponsesTitle: "## Agent responses",
43
50
  failureTitle: "## Interruption",
44
51
  finalSummaryTitle: "## Final summary",
45
52
  tableField: "Field",
@@ -53,11 +60,14 @@ export const outputMessages = {
53
60
  disabled: "disabled",
54
61
  fields: {
55
62
  subject: "Subject",
63
+ mode: "Mode",
56
64
  agents: "Agents",
57
65
  autoPullOllama: "Ollama auto-pull",
58
66
  summary: "Summary",
59
67
  requestedTurns: "Requested turns",
60
68
  playedTurns: "Played turns",
69
+ requestedResponses: "Expected responses",
70
+ receivedResponses: "Received responses",
61
71
  earlyStop: "Early stop",
62
72
  localDate: "Local date",
63
73
  timeZone: "Time zone",
@@ -7,7 +7,8 @@ export const previewMessages = {
7
7
  summary: (value) => `Synthèse: ${value}`,
8
8
  disabled: "désactivée",
9
9
  interfaceLanguage: (language) => `Langue: ${language}`,
10
- note: "Note: seuls les prompts du premier tour sont exacts sans exécuter les agents. Les tours suivants incluent le transcript réel."
10
+ note: "Note: seuls les prompts du premier tour sont exacts sans exécuter les agents. Les tours suivants incluent le transcript réel.",
11
+ askNote: "Note: en mode ask, chaque agent reçoit un prompt indépendant. La synthèse reçoit ensuite toutes les réponses réelles."
11
12
  },
12
13
  en: {
13
14
  title: "# Prompt preview",
@@ -17,6 +18,7 @@ export const previewMessages = {
17
18
  summary: (value) => `Summary: ${value}`,
18
19
  disabled: "disabled",
19
20
  interfaceLanguage: (language) => `Language: ${language}`,
20
- note: "Note: only first-turn prompts are exact without running agents. Later turns include the real transcript."
21
+ note: "Note: only first-turn prompts are exact without running agents. Later turns include the real transcript.",
22
+ askNote: "Note: in ask mode, each agent receives an independent prompt. The summary later receives all real responses."
21
23
  }
22
24
  };
@@ -18,12 +18,14 @@ export const promptMessages = {
18
18
  fr: {
19
19
  subject: (topic) => `Sujet: ${topic}`,
20
20
  debateIntro: (selfName, turn) => `Tu es ${selfName}. Tu reponds au tour ${turn}.`,
21
+ askIntro: (selfName) => `Tu es ${selfName}. Tu reponds independamment a cette demande.`,
21
22
  summaryIntro: (selfName) => `Tu es ${selfName}. Tu produis la synthese finale du debat.`,
23
+ askSummaryIntro: (selfName) => `Tu es ${selfName}. Tu produis la fiche de synthese finale d'une demande multi-agents.`,
22
24
  peer: (peerName) => `Ton interlocuteur est ${peerName}.`,
23
25
  role: (selfName, role) => `Role de ${selfName}: ${role}.`,
24
26
  roleInstruction: (role) => frRoleInstructions[role],
25
27
  sessionTitle: "Contexte de session PALABRE:",
26
- sessionSource: "- Source: fourni par PALABRE et visible par tous les agents de ce debat.",
28
+ sessionSource: "- Source: fourni par PALABRE et visible par tous les agents de cette session.",
27
29
  localDate: (value) => `- Date locale: ${value}`,
28
30
  timeZone: (value) => `- Fuseau horaire: ${value}`,
29
31
  cwd: (value) => `- Dossier courant: ${value}`,
@@ -37,6 +39,14 @@ export const promptMessages = {
37
39
  "- Signale les incertitudes ou les points a trancher.",
38
40
  "- Respecte ton role sans ignorer les faits du transcript."
39
41
  ],
42
+ askObjectives: [
43
+ "- Reponds directement a la demande, sans t'appuyer sur les reponses des autres agents.",
44
+ "- Si la demande est factuelle ou simple, donne une reponse factuelle et simple.",
45
+ "- N'ajoute pas une revue de risques, des tests ou des actions techniques si la demande ne les appelle pas explicitement.",
46
+ "- Apporte une reponse utile, concrete et exploitable.",
47
+ "- Signale les incertitudes, hypotheses et points a verifier.",
48
+ "- Utilise ton role comme une perspective secondaire, sans transformer la nature de la demande."
49
+ ],
40
50
  summaryObjectives: [
41
51
  "- Resume le consensus en points concrets.",
42
52
  "- Liste les desaccords ou incertitudes qui restent.",
@@ -44,30 +54,44 @@ export const promptMessages = {
44
54
  "- Termine par une conclusion courte en prose, bien ecrite, qui explique rapidement ce qu'il faut retenir.",
45
55
  "- Reste concis et exploitable."
46
56
  ],
57
+ askSummaryObjectives: [
58
+ "- Resume fidelement ce que chaque agent a dit, agent par agent.",
59
+ "- Compare ensuite les convergences, divergences et angles morts.",
60
+ "- Signale les incertitudes ou points a verifier.",
61
+ "- Propose les prochaines actions techniques.",
62
+ "- Termine par une conclusion courte en prose qui explique ce qu'il faut retenir."
63
+ ],
47
64
  fileContextTitle: "Contexte fichiers:",
48
65
  historyTitle: "Historique:",
49
66
  emptyHistory: "Historique: aucun message pour le moment.",
50
67
  answerTitle: "Ta reponse:",
51
68
  transcriptTitle: "Transcript du debat:",
69
+ askResponsesTitle: "Reponses des agents:",
52
70
  noMessage: "Aucun message.",
53
71
  expectedFormatTitle: "Format attendu:",
54
72
  consensusHeading: "### Consensus",
55
73
  disagreementsHeading: "### Desaccords / incertitudes",
56
74
  actionsHeading: "### Actions proposees",
57
75
  conclusionHeading: "### Conclusion",
76
+ askAgentSummariesHeading: "### Resume fidele par agent",
77
+ askComparisonHeading: "### Comparaison",
78
+ askWatchpointsHeading: "### Points de vigilance / incertitudes",
58
79
  finalProseInstruction: "Un court paragraphe de synthese en prose, sans liste, qui resume le sens general du debat et la decision ou direction la plus raisonnable.",
80
+ askFinalProseInstruction: "Un court paragraphe de synthese en prose, sans liste, qui explique ce qu'il faut retenir des reponses, sans transformer la demande en debat.",
59
81
  summaryAnswerTitle: "Synthese:",
60
82
  ollamaSystemPrompt: "Tu participes a un debat technique orchestre. Reste precis, utile et honnete sur tes limites."
61
83
  },
62
84
  en: {
63
85
  subject: (topic) => `Subject: ${topic}`,
64
86
  debateIntro: (selfName, turn) => `You are ${selfName}. You are answering turn ${turn}.`,
87
+ askIntro: (selfName) => `You are ${selfName}. You are answering this request independently.`,
65
88
  summaryIntro: (selfName) => `You are ${selfName}. You are producing the final debate summary.`,
89
+ askSummaryIntro: (selfName) => `You are ${selfName}. You are producing the final synthesis sheet for a multi-agent request.`,
66
90
  peer: (peerName) => `Your counterpart is ${peerName}.`,
67
91
  role: (selfName, role) => `${selfName}'s role: ${role}.`,
68
92
  roleInstruction: (role) => enRoleInstructions[role],
69
93
  sessionTitle: "PALABRE session context:",
70
- sessionSource: "- Source: provided by PALABRE and visible to all agents in this debate.",
94
+ sessionSource: "- Source: provided by PALABRE and visible to all agents in this session.",
71
95
  localDate: (value) => `- Local date: ${value}`,
72
96
  timeZone: (value) => `- Time zone: ${value}`,
73
97
  cwd: (value) => `- Current directory: ${value}`,
@@ -81,6 +105,14 @@ export const promptMessages = {
81
105
  "- Call out uncertainties or points that still need a decision.",
82
106
  "- Respect your role without ignoring facts from the transcript."
83
107
  ],
108
+ askObjectives: [
109
+ "- Answer the request directly, without relying on other agents' answers.",
110
+ "- If the request is factual or simple, give a factual and simple answer.",
111
+ "- Do not add a risk review, tests, or technical actions unless the request explicitly calls for them.",
112
+ "- Provide a useful, concrete, and actionable response.",
113
+ "- Call out uncertainties, assumptions, and points to verify.",
114
+ "- Use your role as a secondary perspective without changing the nature of the request."
115
+ ],
84
116
  summaryObjectives: [
85
117
  "- Summarize the consensus into concrete points.",
86
118
  "- List remaining disagreements or uncertainties.",
@@ -88,18 +120,30 @@ export const promptMessages = {
88
120
  "- End with a short, well-written prose conclusion that explains what to retain.",
89
121
  "- Stay concise and actionable."
90
122
  ],
123
+ askSummaryObjectives: [
124
+ "- Faithfully summarize what each agent said, agent by agent.",
125
+ "- Then compare convergences, divergences, and blind spots.",
126
+ "- Call out uncertainties or points to verify.",
127
+ "- Propose the next technical actions.",
128
+ "- End with a short prose conclusion that explains what to retain."
129
+ ],
91
130
  fileContextTitle: "File context:",
92
131
  historyTitle: "History:",
93
132
  emptyHistory: "History: no message yet.",
94
133
  answerTitle: "Your answer:",
95
134
  transcriptTitle: "Debate transcript:",
135
+ askResponsesTitle: "Agent responses:",
96
136
  noMessage: "No message.",
97
137
  expectedFormatTitle: "Expected format:",
98
138
  consensusHeading: "### Consensus",
99
139
  disagreementsHeading: "### Disagreements / uncertainties",
100
140
  actionsHeading: "### Proposed actions",
101
141
  conclusionHeading: "### Conclusion",
142
+ askAgentSummariesHeading: "### Faithful summary by agent",
143
+ askComparisonHeading: "### Comparison",
144
+ askWatchpointsHeading: "### Watchpoints / uncertainties",
102
145
  finalProseInstruction: "A short prose summary paragraph, without a list, that captures the general meaning of the debate and the most reasonable decision or direction.",
146
+ askFinalProseInstruction: "A short prose summary paragraph, without a list, that explains what to retain from the responses without turning the request into a debate.",
103
147
  summaryAnswerTitle: "Summary:",
104
148
  ollamaSystemPrompt: "You are taking part in an orchestrated technical debate. Stay precise, useful, and honest about your limits."
105
149
  }
@@ -13,7 +13,7 @@ export const rendererMessages = {
13
13
  turn: (turn, totalTurns) => `tour ${turn}/${totalTurns}`,
14
14
  thinking: (agent, role) => `${agent} (${role}) reflechit`,
15
15
  summaryTitle: "Synthese",
16
- exported: (path) => `Debat exporte: ${path}`,
16
+ exported: (path) => `Palabre exporte: ${path}`,
17
17
  noInjectedFiles: "aucun fichier injecté",
18
18
  injectedFiles: (count) => `${count} fichier${count > 1 ? "s" : ""} injecté${count > 1 ? "s" : ""}`
19
19
  },
@@ -31,7 +31,7 @@ export const rendererMessages = {
31
31
  turn: (turn, totalTurns) => `turn ${turn}/${totalTurns}`,
32
32
  thinking: (agent, role) => `${agent} (${role}) is thinking`,
33
33
  summaryTitle: "Summary",
34
- exported: (path) => `Debate exported: ${path}`,
34
+ exported: (path) => `Palabre exported: ${path}`,
35
35
  noInjectedFiles: "no injected files",
36
36
  injectedFiles: (count) => `${count} injected file${count > 1 ? "s" : ""}`
37
37
  }