palabre 0.7.0 → 0.8.1

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,6 +3,7 @@ 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
+ syncRefreshed: (path) => `Agents détectés rafraîchis dans ${path}.`,
6
7
  ollamaModelNoChange: (path, model) => `Modèle Ollama inchangé dans ${path}: ${model ?? "aucun"}.`,
7
8
  ollamaModelUpdated: (path, previousModel, nextModel) => `Modèle Ollama mis à jour dans ${path}: ${previousModel} -> ${nextModel}.`,
8
9
  ollamaModelUnavailable: (model) => `Modèle Ollama non installé: ${model}. Action: choisis un modèle installé ou lance \`ollama pull ${model}\`.`,
@@ -10,10 +11,14 @@ export const configMessages = {
10
11
  ollamaModelNoInstalledModels: "Aucun modèle Ollama installé détecté. Action: lance `ollama pull <modèle>`.",
11
12
  updated: (path, defaults, language) => `Configuration mise à jour dans ${path}: ${defaults}, langue: ${language}.`,
12
13
  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.`,
13
- defaultsSummary: (agentA, agentB, turns, summaryAgent) => {
14
+ defaultsSummary: (agentA, agentB, turns, summaryAgent, askSummaryAgent, mode, askAgents, interfaceName) => {
15
+ const modeLabel = `mode: ${mode ?? "debate"}`;
16
+ const interfaceLabel = `interface: ${interfaceName ?? "tui"}`;
14
17
  const pair = agentA && agentB ? `agents: ${agentA} <-> ${agentB}` : "agents: non définis";
15
- const summary = summaryAgent ? `synthèse: ${summaryAgent}` : "synthèse: agent B";
16
- return `${pair}, réponses: ${turns}, ${summary}`;
18
+ const askAgentsLabel = askAgents && askAgents.length > 0 ? `agents ask: ${askAgents.join(", ")}` : "agents ask: défaut";
19
+ const summary = summaryAgent ? `synthèse débat: ${summaryAgent}` : "synthèse débat: agent B";
20
+ const askSummary = askSummaryAgent ? `synthèse ask: ${askSummaryAgent}` : "synthèse ask: synthèse par défaut";
21
+ return `${modeLabel}, ${interfaceLabel}, ${pair}, réponses: ${turns}, ${askAgentsLabel}, ${summary}, ${askSummary}`;
17
22
  },
18
23
  wizardNeedsTwoAgents: "La config doit contenir au moins deux agents pour définir des paramètres par défaut.",
19
24
  wizardTitle: "PALABRE - Configuration",
@@ -46,12 +51,13 @@ export const configMessages = {
46
51
  wizardTurnsLabel: "Nombre de réponses par défaut",
47
52
  wizardTurnsPrompt: (defaultValue) => `Tape le nombre total de réponses du débat (Entrée = ${defaultValue}) : `,
48
53
  wizardTurnsInvalid: (maxTurns) => `Entre un nombre entier entre 1 et ${maxTurns}, Entrée ou q.`,
49
- wizardDefaults: (defaults) => `${defaults.agentA ?? "?"} <-> ${defaults.agentB ?? "?"}, réponses: ${defaults.turns}${defaults.summaryAgent ? `, synthèse: ${defaults.summaryAgent}` : ""}`
54
+ 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}` : ""}`
50
55
  },
51
56
  en: {
52
57
  createdForConfig: (path) => `${path} created. Edit the config, then run palabre config again.`,
53
58
  syncNoMissing: (path) => `No missing detected agent in ${path}.`,
54
59
  syncAdded: (path, agents) => `Agents added to ${path}: ${agents}.`,
60
+ syncRefreshed: (path) => `Detected agents refreshed in ${path}.`,
55
61
  ollamaModelNoChange: (path, model) => `Ollama model unchanged in ${path}: ${model ?? "none"}.`,
56
62
  ollamaModelUpdated: (path, previousModel, nextModel) => `Ollama model updated in ${path}: ${previousModel} -> ${nextModel}.`,
57
63
  ollamaModelUnavailable: (model) => `Ollama model is not installed: ${model}. Action: choose an installed model or run \`ollama pull ${model}\`.`,
@@ -59,10 +65,14 @@ export const configMessages = {
59
65
  ollamaModelNoInstalledModels: "No installed Ollama model detected. Action: run `ollama pull <model>`.",
60
66
  updated: (path, defaults, language) => `Configuration updated in ${path}: ${defaults}, language: ${language}.`,
61
67
  cleared: (path) => `Default settings cleared in ${path}. Use a preset or --agent-a/--agent-b to start a debate now.`,
62
- defaultsSummary: (agentA, agentB, turns, summaryAgent) => {
68
+ defaultsSummary: (agentA, agentB, turns, summaryAgent, askSummaryAgent, mode, askAgents, interfaceName) => {
69
+ const modeLabel = `mode: ${mode ?? "debate"}`;
70
+ const interfaceLabel = `interface: ${interfaceName ?? "tui"}`;
63
71
  const pair = agentA && agentB ? `agents: ${agentA} <-> ${agentB}` : "agents: not set";
64
- const summary = summaryAgent ? `summary: ${summaryAgent}` : "summary: agent B";
65
- return `${pair}, responses: ${turns}, ${summary}`;
72
+ const askAgentsLabel = askAgents && askAgents.length > 0 ? `ask agents: ${askAgents.join(", ")}` : "ask agents: default";
73
+ const summary = summaryAgent ? `debate summary: ${summaryAgent}` : "debate summary: agent B";
74
+ const askSummary = askSummaryAgent ? `ask summary: ${askSummaryAgent}` : "ask summary: default summary";
75
+ return `${modeLabel}, ${interfaceLabel}, ${pair}, responses: ${turns}, ${askAgentsLabel}, ${summary}, ${askSummary}`;
66
76
  },
67
77
  wizardNeedsTwoAgents: "The config must contain at least two agents to set default settings.",
68
78
  wizardTitle: "PALABRE - Configuration",
@@ -95,6 +105,6 @@ export const configMessages = {
95
105
  wizardTurnsLabel: "Default number of responses",
96
106
  wizardTurnsPrompt: (defaultValue) => `Type the total number of debate responses (Enter = ${defaultValue}): `,
97
107
  wizardTurnsInvalid: (maxTurns) => `Enter an integer between 1 and ${maxTurns}, Enter, or q.`,
98
- wizardDefaults: (defaults) => `${defaults.agentA ?? "?"} <-> ${defaults.agentB ?? "?"}, responses: ${defaults.turns}${defaults.summaryAgent ? `, summary: ${defaults.summaryAgent}` : ""}`
108
+ 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}` : ""}`
99
109
  }
100
110
  };
@@ -1,6 +1,9 @@
1
1
  const frCommandHelp = {
2
2
  init: `
3
- Initialise une configuration Palabre.
3
+ Initialise explicitement une configuration Palabre.
4
+
5
+ Note:
6
+ palabre sans argument cree deja la configuration globale au premier lancement TUI.
4
7
 
5
8
  Usage:
6
9
  palabre init [flags]
@@ -26,6 +29,28 @@ Liste les presets de paires d'agents.
26
29
  Usage:
27
30
  palabre presets [flags]
28
31
 
32
+ Flags:
33
+ --json sortie structuree pour integrations
34
+ --config <path> chemin de config explicite
35
+ `,
36
+ history: `
37
+ Liste les derniers exports Palabre.
38
+
39
+ Usage:
40
+ palabre history [flags]
41
+ palabre historique [flags]
42
+
43
+ Flags:
44
+ --json sortie structuree pour integrations
45
+ --config <path> chemin de config explicite
46
+ `,
47
+ historique: `
48
+ Liste les derniers exports Palabre.
49
+
50
+ Usage:
51
+ palabre history [flags]
52
+ palabre historique [flags]
53
+
29
54
  Flags:
30
55
  --json sortie structuree pour integrations
31
56
  --config <path> chemin de config explicite
@@ -48,11 +73,15 @@ Usage:
48
73
  palabre config --set-defaults <agentA> <agentB>
49
74
  palabre config -t <number>
50
75
  palabre config --summary-agent <name|none>
76
+ palabre config --ask-summary-agent <name|none>
77
+ palabre config --mode <debate|ask>
78
+ palabre config --ask-agents <names...>
79
+ palabre config --interface <tui|terminal>
51
80
  palabre config --language <fr|en>
52
81
 
53
82
  Flags:
54
83
  --clear-defaults supprime les parametres par defaut
55
- --sync-agents ajoute les agents detectes manquants
84
+ --sync-agents ajoute les agents detectes manquants et rafraichit les commandes connues
56
85
  --config <path> chemin de config explicite
57
86
  `,
58
87
  new: `
@@ -72,7 +101,7 @@ Usage:
72
101
  palabre doctor [flags]
73
102
 
74
103
  Flags:
75
- --plain sortie simple pour logs
104
+ --terminal sortie simple pour logs
76
105
  --config <path> chemin de config explicite
77
106
  --language <fr|en> force la langue
78
107
  `,
@@ -100,12 +129,33 @@ Flags:
100
129
  --preset <name> preset d'agents
101
130
  --agent-a <name> premier agent
102
131
  --agent-b <name> second agent
132
+ --tui force l'interface TUI
133
+ --terminal force le rendu terminal brut
134
+ --renderer <kind> auto, pretty, plain, tui ou ndjson
135
+ --show-prompt affiche le prompt sans appeler d'agent
136
+ `,
137
+ ask: `
138
+ Lance une demande avec plusieurs reponses independantes.
139
+
140
+ Usage:
141
+ palabre ask "Sujet" --agents codex claude
142
+ palabre run --mode ask --agents codex claude -s "Sujet"
143
+
144
+ Flags:
145
+ --agents <names...> agents qui repondent, 4 maximum
146
+ --summary-agent <n> agent de synthese pour ce lancement
147
+ --tui force l'interface TUI
148
+ --terminal force le rendu terminal brut
149
+ --renderer <kind> auto, pretty, plain, tui ou ndjson
103
150
  --show-prompt affiche le prompt sans appeler d'agent
104
151
  `
105
152
  };
106
153
  const enCommandHelp = {
107
154
  init: `
108
- Initializes a Palabre configuration.
155
+ Explicitly initializes a Palabre configuration.
156
+
157
+ Note:
158
+ palabre without arguments already creates the global configuration on first TUI launch.
109
159
 
110
160
  Usage:
111
161
  palabre init [flags]
@@ -131,6 +181,28 @@ Lists agent-pair presets.
131
181
  Usage:
132
182
  palabre presets [flags]
133
183
 
184
+ Flags:
185
+ --json structured output for integrations
186
+ --config <path> explicit config path
187
+ `,
188
+ history: `
189
+ Lists recent Palabre exports.
190
+
191
+ Usage:
192
+ palabre history [flags]
193
+ palabre historique [flags]
194
+
195
+ Flags:
196
+ --json structured output for integrations
197
+ --config <path> explicit config path
198
+ `,
199
+ historique: `
200
+ Lists recent Palabre exports.
201
+
202
+ Usage:
203
+ palabre history [flags]
204
+ palabre historique [flags]
205
+
134
206
  Flags:
135
207
  --json structured output for integrations
136
208
  --config <path> explicit config path
@@ -153,11 +225,15 @@ Usage:
153
225
  palabre config --set-defaults <agentA> <agentB>
154
226
  palabre config -t <number>
155
227
  palabre config --summary-agent <name|none>
228
+ palabre config --ask-summary-agent <name|none>
229
+ palabre config --mode <debate|ask>
230
+ palabre config --ask-agents <names...>
231
+ palabre config --interface <tui|terminal>
156
232
  palabre config --language <fr|en>
157
233
 
158
234
  Flags:
159
235
  --clear-defaults clears default settings
160
- --sync-agents adds missing detected agents
236
+ --sync-agents adds missing detected agents and refreshes known commands
161
237
  --config <path> explicit config path
162
238
  `,
163
239
  new: `
@@ -177,7 +253,7 @@ Usage:
177
253
  palabre doctor [flags]
178
254
 
179
255
  Flags:
180
- --plain simple output for logs
256
+ --terminal simple output for logs
181
257
  --config <path> explicit config path
182
258
  --language <fr|en> forces the language
183
259
  `,
@@ -205,6 +281,24 @@ Flags:
205
281
  --preset <name> agent preset
206
282
  --agent-a <name> first agent
207
283
  --agent-b <name> second agent
284
+ --tui forces the TUI interface
285
+ --terminal forces raw terminal rendering
286
+ --renderer <kind> auto, pretty, plain, tui, or ndjson
287
+ --show-prompt shows the prompt without calling an agent
288
+ `,
289
+ ask: `
290
+ Runs a request with several independent responses.
291
+
292
+ Usage:
293
+ palabre ask "Subject" --agents codex claude
294
+ palabre run --mode ask --agents codex claude -s "Subject"
295
+
296
+ Flags:
297
+ --agents <names...> responding agents, 4 maximum
298
+ --summary-agent <n> summary agent for this run
299
+ --tui forces the TUI interface
300
+ --terminal forces raw terminal rendering
301
+ --renderer <kind> auto, pretty, plain, tui, or ndjson
208
302
  --show-prompt shows the prompt without calling an agent
209
303
  `
210
304
  };
@@ -216,22 +310,26 @@ PALABRE
216
310
  Debats entre agents IA dans votre terminal.
217
311
 
218
312
  Usage:
313
+ palabre
219
314
  palabre [flags]
220
315
  palabre [command]
221
316
  palabre "Sujet"
222
317
  palabre <preset> "Sujet"
318
+ palabre ask "Sujet" --agents codex claude
223
319
 
224
320
  Demarrage rapide:
225
- palabre init
321
+ palabre
226
322
  palabre new
227
323
  palabre "Faut-il ajouter une TUI a Palabre ?"
228
324
  palabre codex-claude "Comparer deux solutions" -t 4
229
325
 
230
326
  Commandes:
231
- init Creer une configuration
327
+ init Creer explicitement une configuration
232
328
  new Assistant interactif de debat
329
+ ask Demande multi-agents independante
233
330
  agents Lister les agents configures
234
331
  presets Lister les presets disponibles
332
+ history Lister les derniers exports
235
333
  context Scanner le contexte projet
236
334
  config Modifier les parametres par defaut
237
335
  doctor Verifier la config et les outils locaux
@@ -244,6 +342,8 @@ Flags:
244
342
  -v, --version affiche la version
245
343
  -s, --subject <text> sujet du debat
246
344
  -t, --turns <number> nombre total de reponses
345
+ --tui force l'interface TUI
346
+ --terminal force le rendu terminal brut
247
347
  --language <fr|en> force la langue
248
348
  --config <path> chemin de config explicite
249
349
 
@@ -261,22 +361,26 @@ PALABRE
261
361
  Debates between AI agents in your terminal.
262
362
 
263
363
  Usage:
364
+ palabre
264
365
  palabre [flags]
265
366
  palabre [command]
266
367
  palabre "Subject"
267
368
  palabre <preset> "Subject"
369
+ palabre ask "Subject" --agents codex claude
268
370
 
269
371
  Quick start:
270
- palabre init
372
+ palabre
271
373
  palabre new
272
374
  palabre "Should Palabre add a TUI?"
273
375
  palabre codex-claude "Compare two solutions" -t 4
274
376
 
275
377
  Commands:
276
- init Create a configuration
378
+ init Explicitly create a configuration
277
379
  new Interactive debate assistant
380
+ ask Independent multi-agent request
278
381
  agents List configured agents
279
382
  presets List available presets
383
+ history List recent exports
280
384
  context Scan project context
281
385
  config Edit default settings
282
386
  doctor Check config and local tools
@@ -289,6 +393,8 @@ Flags:
289
393
  -v, --version show version
290
394
  -s, --subject <text> debate subject
291
395
  -t, --turns <number> total number of responses
396
+ --tui forces the TUI interface
397
+ --terminal forces raw terminal rendering
292
398
  --language <fr|en> force language
293
399
  --config <path> explicit config path
294
400
 
@@ -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, 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, 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.",
@@ -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
  }