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.
- package/README.md +102 -68
- package/dist/adapters/cli-pty.js +1 -1
- package/dist/adapters/cli.js +33 -3
- package/dist/adapters/ollama.js +1 -1
- package/dist/agentRegistry.js +3 -3
- package/dist/args.js +21 -1
- package/dist/config.js +58 -24
- package/dist/configWizard.js +12 -2
- package/dist/context.js +5 -1
- package/dist/discovery.js +3 -3
- package/dist/doctor.js +4 -1
- package/dist/history.js +85 -0
- package/dist/index.js +742 -94
- package/dist/messages/agents.js +4 -2
- package/dist/messages/common.js +4 -0
- package/dist/messages/config.js +18 -8
- package/dist/messages/help.js +116 -10
- package/dist/messages/index.js +2 -0
- package/dist/messages/init.js +2 -2
- package/dist/messages/new.js +14 -0
- package/dist/messages/output.js +10 -0
- package/dist/messages/preview.js +4 -2
- package/dist/messages/prompt.js +46 -2
- package/dist/messages/renderers.js +2 -2
- package/dist/messages/tui.js +228 -0
- package/dist/messages/update.js +16 -2
- package/dist/new.js +158 -4
- package/dist/orchestrator.js +168 -9
- package/dist/output.js +31 -8
- package/dist/presets.js +39 -39
- package/dist/prompt.js +61 -10
- package/dist/renderers/console.js +39 -3
- package/dist/renderers/ndjson.js +30 -1
- package/dist/renderers/tui.js +1055 -0
- package/dist/tuiState.js +31 -0
- package/dist/update.js +2 -0
- package/package.json +2 -1
- package/palabre.config.example.json +0 -17
package/dist/messages/agents.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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}`,
|
package/dist/messages/common.js
CHANGED
|
@@ -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.`,
|
package/dist/messages/config.js
CHANGED
|
@@ -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
|
|
16
|
-
|
|
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) =>
|
|
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
|
|
65
|
-
|
|
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) =>
|
|
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
|
};
|
package/dist/messages/help.js
CHANGED
|
@@ -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
|
-
--
|
|
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
|
-
|
|
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
|
-
--
|
|
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
|
|
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
|
|
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
|
|
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
|
|
package/dist/messages/index.js
CHANGED
|
@@ -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
|
}
|
package/dist/messages/init.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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
|
};
|
package/dist/messages/new.js
CHANGED
|
@@ -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.",
|
package/dist/messages/output.js
CHANGED
|
@@ -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",
|
package/dist/messages/preview.js
CHANGED
|
@@ -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
|
};
|
package/dist/messages/prompt.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
}
|