nothumanallowed 13.5.23 → 13.5.24

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nothumanallowed",
3
- "version": "13.5.23",
3
+ "version": "13.5.24",
4
4
  "description": "NotHumanAllowed — 38 AI agents, 80 tools, Studio (visual agentic workflows). Email, calendar, browser automation, screen capture, canvas, cron/heartbeat, Alexandria E2E messaging, GitHub, Notion, Slack, voice chat, free AI (Liara), 28 languages. Zero-dependency CLI.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -3929,31 +3929,59 @@ DELIBERATION ROUND 2 — REFINEMENT:
3929
3929
  sendTok2(`[Parlamento — Round 2 convergenza: ${(r2Convergence * 100).toFixed(0)}%] `);
3930
3930
  const converged = r2Convergence >= 0.30;
3931
3931
 
3932
- // Round 3: mediation only if still divergent
3932
+ // Round 3: HERALD always produces the final unified synthesis.
3933
+ // If converged: synthesize the consensus + surface any surviving divergences.
3934
+ // If divergent: actively mediate and make editorial choices.
3933
3935
  let mediationOutput = '';
3934
- if (!converged) {
3935
- sendTok2('[Parlamento — Round 3: Mediazione...] ');
3936
+ {
3936
3937
  const allR2Ctx = r2Results
3937
- .map(r => `## ${r.label || r.agent}:\n${r.output.slice(0, 1500)}`)
3938
+ .map(r => `## ${r.label || r.agent}:\n${r.output.slice(0, 2000)}`)
3938
3939
  .join('\n\n---\n\n');
3940
+
3941
+ // Extract [CONTRADICTION] tags from R2 outputs to surface them explicitly
3942
+ const contradictions = [];
3943
+ for (const r of r2Results) {
3944
+ const matches = r.output.match(/\[CONTRADICTION\][^\n]*/g) || [];
3945
+ matches.forEach(m => contradictions.push(`- ${r.label || r.agent}: ${m.replace('[CONTRADICTION]', '').trim()}`));
3946
+ }
3947
+ const contradictionBlock = contradictions.length > 0
3948
+ ? `\n\n## DIVERGENZE RILEVATE DAL ROUND 2:\n${contradictions.join('\n')}`
3949
+ : '';
3950
+
3951
+ if (!converged) {
3952
+ sendTok2('[Parlamento — Round 3: Mediazione HERALD...] ');
3953
+ } else {
3954
+ sendTok2('[Parlamento — Round 3: Sintesi finale HERALD...] ');
3955
+ }
3956
+
3957
+ const medTask = converged
3958
+ ? `SYNTHESIS TASK (convergenza ${(r2Convergence * 100).toFixed(0)}% — agenti sostanzialmente d'accordo):
3959
+ 1. Presenta il CONSENSO raggiunto — cosa tutti gli agenti concordano
3960
+ 2. Segnala esplicitamente ogni sfumatura o punto di divergenza residua, nominando l'agente che la ha sollevata e perché è stata inclusa o scartata
3961
+ 3. Produci un executive summary unificato con azioni concrete per: ${task}
3962
+ 4. Includi una sezione "Voci dissonanti" se esistono posizioni che meritano attenzione nonostante la convergenza`
3963
+ : `MEDIATION TASK (convergenza ${(r2Convergence * 100).toFixed(0)}% — divergenza significativa):
3964
+ 1. Identifica i punti di ACCORDO tra tutti gli agenti
3965
+ 2. Per ogni disaccordo: valuta quale posizione ha evidenze più solide, NOMINA l'agente che ha sollevato la posizione minoritaria e spiega perché è stata accolta o scartata
3966
+ 3. Produci una sintesi UNIFICATA preservando gli insight genuini di ogni agente
3967
+ 4. Fai scelte editoriali nette — NON miscelare ciecamente posizioni incompatibili
3968
+ 5. Output: executive summary completo con azioni concrete per: ${task}`;
3969
+
3939
3970
  const medSys = `You are HERALD, the Parliament Mediator in NHA Studio. Today is ${today}. Respond entirely in ${language}.
3940
3971
 
3941
3972
  ## WORKFLOW GOAL: ${task}
3942
3973
 
3943
3974
  ## ALL AGENTS' REFINED POSITIONS (Round 2):
3944
- ${allR2Ctx}
3945
-
3946
- MEDIATION TASK:
3947
- 1. Identify core points of AGREEMENT across all agents
3948
- 2. For each disagreement, evaluate which position has stronger evidence
3949
- 3. Produce a UNIFIED synthesis preserving genuine insights from each agent
3950
- 4. Make clear editorial choices — do NOT blend blindly
3951
- 5. Output a complete executive summary with concrete action items for: ${task}`;
3975
+ ${allR2Ctx}${contradictionBlock}
3976
+
3977
+ ${medTask}
3978
+
3979
+ CRITICAL: Every agent's contribution must be traceable in the final synthesis. If an agent raised a point that was NOT incorporated, explicitly state why. The reader must understand WHO said WHAT and WHETHER it was listened to.`;
3952
3980
  try {
3953
- await callLLMStream(config, medSys, 'Produce the mediated Parliament consensus.',
3981
+ await callLLMStream(config, medSys, 'Produce the Parliament final synthesis.',
3954
3982
  (tok) => { mediationOutput += tok; }, { max_tokens: 6144 });
3955
3983
  } catch (e) { mediationOutput = ''; }
3956
- sendEv2({ deliberation_r3: { output: mediationOutput } });
3984
+ sendEv2({ deliberation_r3: { output: mediationOutput, converged } });
3957
3985
  }
3958
3986
 
3959
3987
  clearInterval(keepaliveD);
package/src/constants.mjs CHANGED
@@ -5,7 +5,7 @@ import { fileURLToPath } from 'url';
5
5
  const __filename = fileURLToPath(import.meta.url);
6
6
  const __dirname = path.dirname(__filename);
7
7
 
8
- export const VERSION = '13.5.23';
8
+ export const VERSION = '13.5.24';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -3325,7 +3325,7 @@ var studioAbortController = null;
3325
3325
  var parlActiveAgent = null; // active agent label during parliament streaming
3326
3326
  var parlDoneAgents = {}; // set of completed agent labels during parliament
3327
3327
  var _parlPersistHtml = null; // persists parliament block HTML across tab navigations
3328
- var _PARL_STAMP = '<!--nha-parl-v13.5.23-->';
3328
+ var _PARL_STAMP = '<!--nha-parl-v13.5.24-->';
3329
3329
 
3330
3330
  function stopStudio() {
3331
3331
  if (!studioState.running) return;
@@ -5157,7 +5157,8 @@ async function runStudio() {
5157
5157
  context = r2d.output || context;
5158
5158
  } else if (dev.deliberation_r3) {
5159
5159
  renderParlBlock(\x27r3\x27, null, null);
5160
- studioLog(\x27HERALD\x27, \x27&#128295;\x27, \x27[Mediazione] \x27 + (dev.deliberation_r3.output || \x27\x27), \x27system\x27, true);
5160
+ var r3label = dev.deliberation_r3.converged ? \x27[Sintesi Consiglio] \x27 : \x27[Mediazione] \x27;
5161
+ studioLog(\x27HERALD\x27, \x27&#128295;\x27, r3label + (dev.deliberation_r3.output || \x27\x27), \x27system\x27, true);
5161
5162
  studioAddTokens(0, Math.ceil((dev.deliberation_r3.output||'').length / 4));
5162
5163
  context = dev.deliberation_r3.output || context;
5163
5164
  } else if (dev.deliberation_done) {