nothumanallowed 13.5.108 → 13.5.109

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.108",
3
+ "version": "13.5.109",
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": {
@@ -3215,11 +3215,13 @@ ${rawText.slice(0, 18000)}`;
3215
3215
  const _cp2 = travelTask.match(/\b(?:a|in)\s+([A-Z][a-zA-Z\u00C0-\u017E]{2,}(?:\s+[A-Z][a-zA-Z\u00C0-\u017E]+)?)/);
3216
3216
  // P3: "a/in <lowercase city>" (case insensitive)
3217
3217
  const _cp3 = travelTask.match(/\b(?:a|in|at|near)\s+([a-zA-Z\u00C0-\u017E]{3,}(?:\s+[a-zA-Z\u00C0-\u017E]+)?)/i);
3218
- // P4: standalone known Italian cities (capitalized, no preposition needed)
3219
- // Known cities worldwide (no preposition needed) — covers IT, EU, global
3220
- const _knownCities = 'Milano|Roma|Napoli|Torino|Firenze|Bologna|Venezia|Genova|Palermo|Bari|Catania|Verona|Padova|Trieste|Brescia|Bergamo|Modena|Parma|Reggio|Mantova|Ferrara|Vicenza|Treviso|Udine|Trento|Bolzano|Perugia|Ancona|Pescara|Foggia|Salerno|Taranto|Cagliari|Sassari|Siena|Pisa|Lucca|Arezzo|Rimini|Ravenna|Prato|Livorno|Messina|Paris|Lyon|Marseille|Nice|Bordeaux|Toulouse|Strasbourg|Nantes|Madrid|Barcelona|Sevilla|Valencia|Bilbao|Malaga|Lisbon|Porto|Berlin|Munich|Hamburg|Frankfurt|Stuttgart|Cologne|Amsterdam|Rotterdam|Brussels|Vienna|Zurich|Geneva|Prague|Warsaw|Budapest|Bucharest|Athens|Istanbul|London|Manchester|Edinburgh|Dublin|Copenhagen|Stockholm|Oslo|Helsinki|New York|Los Angeles|Chicago|San Francisco|Miami|Boston|Seattle|Tokyo|Osaka|Seoul|Beijing|Shanghai|Singapore|Sydney|Melbourne|Toronto|Montreal|Vancouver|Dubai|Bangkok|Mumbai|Delhi|Cairo|Nairobi';
3221
- const _cp4 = travelTask.match(new RegExp('\\b(' + _knownCities + ')\\b', 'i'));
3222
- const _cityRaw = (_cp1 && _cp1[1]) || (_cp2 && _cp2[1]) || (_cp3 && _cp3[1]) || (_cp4 && _cp4[1]) || null;
3218
+ // P4: known cities via word-split (avoids new RegExp \s escape issues)
3219
+ const _knownCitiesArr = ['Milano','Roma','Napoli','Torino','Firenze','Bologna','Venezia','Genova','Palermo','Bari','Catania','Verona','Padova','Trieste','Brescia','Bergamo','Modena','Parma','Reggio','Mantova','Ferrara','Vicenza','Treviso','Udine','Trento','Bolzano','Perugia','Ancona','Pescara','Foggia','Salerno','Taranto','Cagliari','Sassari','Siena','Pisa','Lucca','Arezzo','Rimini','Ravenna','Prato','Livorno','Messina','Paris','Lyon','Marseille','Nice','Bordeaux','Toulouse','Strasbourg','Nantes','Madrid','Barcelona','Sevilla','Valencia','Bilbao','Malaga','Lisbon','Porto','Berlin','Munich','Hamburg','Frankfurt','Stuttgart','Cologne','Amsterdam','Rotterdam','Brussels','Vienna','Zurich','Geneva','Prague','Warsaw','Budapest','Bucharest','Athens','Istanbul','London','Manchester','Edinburgh','Dublin','Copenhagen','Stockholm','Oslo','Helsinki','Tokyo','Osaka','Seoul','Beijing','Shanghai','Singapore','Sydney','Melbourne','Toronto','Montreal','Vancouver','Dubai','Bangkok','Mumbai','Delhi','Cairo','Nairobi'];
3220
+ const _taskWords = travelTask.toLowerCase().split(/[\s,;:.!?]+/);
3221
+ const _cp4found = _knownCitiesArr.find(c => _taskWords.includes(c.toLowerCase()));
3222
+ // P5: "zona <city>" or "zona di <city>" Italian "in the area of <city>"
3223
+ const _cp5 = travelTask.match(/zona\s+(?:di\s+)?([a-zA-Z\u00C0-\u017E]{3,})/i);
3224
+ const _cityRaw = (_cp1 && _cp1[1]) || (_cp2 && _cp2[1]) || (_cp3 && _cp3[1]) || _cp4found || (_cp5 && _cp5[1]) || null;
3223
3225
  if (_cityRaw) {
3224
3226
  city = _cityRaw.replace(_stopRx, '').trim();
3225
3227
  if (city.length < 2) city = null;
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.108';
8
+ export const VERSION = '13.5.109';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11