nothumanallowed 13.5.18 → 13.5.20

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.18",
3
+ "version": "13.5.20",
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": {
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.18';
8
+ export const VERSION = '13.5.20';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -3311,6 +3311,7 @@ var studioAbortController = null;
3311
3311
  var parlActiveAgent = null; // active agent label during parliament streaming
3312
3312
  var parlDoneAgents = {}; // set of completed agent labels during parliament
3313
3313
  var _parlPersistHtml = null; // persists parliament block HTML across tab navigations
3314
+ var _PARL_STAMP = '<!--nha-parl-v13.5.20-->';
3314
3315
 
3315
3316
  function stopStudio() {
3316
3317
  if (!studioState.running) return;
@@ -3839,6 +3840,58 @@ function agentPalette(lbl) {
3839
3840
  return {skin: skins[i], shirt: shirts[i], hair: hairs[i]};
3840
3841
  }
3841
3842
 
3843
+ var TOOL_EMOJI_MAP = {
3844
+ websearch: String.fromCodePoint(0x1F50D),
3845
+ search: String.fromCodePoint(0x1F50D),
3846
+ browser: String.fromCodePoint(0x1F310),
3847
+ email: String.fromCodePoint(0x1F4E7),
3848
+ gmail: String.fromCodePoint(0x1F4E7),
3849
+ calendar: String.fromCodePoint(0x1F4C5),
3850
+ github: String.fromCodePoint(0x1F431),
3851
+ notion: String.fromCodePoint(0x1F4D3),
3852
+ slack: String.fromCodePoint(0x1F4AC),
3853
+ data: String.fromCodePoint(0x1F4CA),
3854
+ analyst: String.fromCodePoint(0x1F4CA),
3855
+ writer: String.fromCodePoint(0x270F,0xFE0F),
3856
+ summary: String.fromCodePoint(0x1F4CB),
3857
+ research: String.fromCodePoint(0x1F52C),
3858
+ canvas: String.fromCodePoint(0x1F3A8),
3859
+ security: String.fromCodePoint(0x1F6E1,0xFE0F),
3860
+ devops: String.fromCodePoint(0x2699,0xFE0F),
3861
+ code: String.fromCodePoint(0x1F4BB),
3862
+ file: String.fromCodePoint(0x1F4C2),
3863
+ drive: String.fromCodePoint(0x1F4BE),
3864
+ maps: String.fromCodePoint(0x1F5FA,0xFE0F),
3865
+ voice: String.fromCodePoint(0x1F3A4),
3866
+ pdf: String.fromCodePoint(0x1F4DC),
3867
+ document: String.fromCodePoint(0x1F4DC),
3868
+ task: String.fromCodePoint(0x2705),
3869
+ contacts: String.fromCodePoint(0x1F4F1),
3870
+ reminder: String.fromCodePoint(0x23F0),
3871
+ news: String.fromCodePoint(0x1F4F0),
3872
+ image: String.fromCodePoint(0x1F5BC,0xFE0F),
3873
+ video: String.fromCodePoint(0x1F3AC),
3874
+ music: String.fromCodePoint(0x1F3B5),
3875
+ translate: String.fromCodePoint(0x1F30D),
3876
+ math: String.fromCodePoint(0x1F9EE),
3877
+ sql: String.fromCodePoint(0x1F5C4,0xFE0F),
3878
+ api: String.fromCodePoint(0x1F517),
3879
+ test: String.fromCodePoint(0x1F9EA),
3880
+ monitor: String.fromCodePoint(0x1F4F6),
3881
+ _default: String.fromCodePoint(0x1F527)
3882
+ };
3883
+
3884
+ function getNodeEmoji(n) {
3885
+ var lbl = (n.label || n.agent || '').toLowerCase();
3886
+ var icon = n.icon || '';
3887
+ var keys = Object.keys(TOOL_EMOJI_MAP);
3888
+ for (var ki = 0; ki < keys.length; ki++) {
3889
+ if (keys[ki] !== '_default' && lbl.indexOf(keys[ki]) >= 0) return TOOL_EMOJI_MAP[keys[ki]];
3890
+ }
3891
+ if (icon && icon.length > 0 && icon.charCodeAt(0) > 127) return icon;
3892
+ return TOOL_EMOJI_MAP._default;
3893
+ }
3894
+
3842
3895
  function renderStudioNodes() {
3843
3896
  var el = document.getElementById('studioNodes');
3844
3897
  if (!el) return;
@@ -4840,7 +4893,7 @@ async function runStudio() {
4840
4893
  });
4841
4894
 
4842
4895
  // Persist across tab navigations
4843
- if (pb.innerHTML && pb.innerHTML.length < 60000) { _parlPersistHtml = pb.innerHTML; }
4896
+ if (pb.innerHTML && pb.innerHTML.length < 60000) { _parlPersistHtml = _PARL_STAMP + pb.innerHTML; }
4844
4897
 
4845
4898
  }
4846
4899
 
@@ -5008,7 +5061,7 @@ async function runStudio() {
5008
5061
  }
5009
5062
  }
5010
5063
  if (parlFinal && parlFinal.style.display !== 'none' && parlFinal.innerHTML) {
5011
- _parlPersistHtml = parlFinal.innerHTML; // persist so tab nav doesn't lose it
5064
+ _parlPersistHtml = _PARL_STAMP + parlFinal.innerHTML; // persist so tab nav doesn't lose it
5012
5065
  doScroll(parlFinal);
5013
5066
  setTimeout(function(){ doScroll(resEl); }, 2200);
5014
5067
  } else if (resEl) {
@@ -5383,7 +5436,7 @@ function renderStudio(el) {
5383
5436
  // Persist parliament block across tab navigations
5384
5437
  var existingParl = document.getElementById('studioParliamentBlock');
5385
5438
  if (existingParl && existingParl.innerHTML.trim()) {
5386
- _parlPersistHtml = existingParl.innerHTML;
5439
+ _parlPersistHtml = _PARL_STAMP + existingParl.innerHTML;
5387
5440
  }
5388
5441
 
5389
5442
  var examplesHtml = STUDIO_EXAMPLES.map(function(ex) {
@@ -5555,12 +5608,15 @@ function renderStudio(el) {
5555
5608
  // Restore pipeline from state
5556
5609
  renderBuilderPipeline();
5557
5610
  // Restore parliament block if it was visible before tab navigation
5558
- if (_parlPersistHtml) {
5611
+ // Version stamp check: discard stale HTML from older versions
5612
+ if (_parlPersistHtml && _parlPersistHtml.indexOf(_PARL_STAMP) === 0) {
5559
5613
  var parlRestoreEl = document.getElementById('studioParliamentBlock');
5560
5614
  if (parlRestoreEl) {
5561
- parlRestoreEl.innerHTML = _parlPersistHtml;
5615
+ parlRestoreEl.innerHTML = _parlPersistHtml.slice(_PARL_STAMP.length);
5562
5616
  parlRestoreEl.style.display = 'block';
5563
5617
  }
5618
+ } else {
5619
+ _parlPersistHtml = null;
5564
5620
  }
5565
5621
  }
5566
5622