nothumanallowed 14.2.6 → 14.2.7

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": "14.2.6",
3
+ "version": "14.2.7",
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/cli.mjs CHANGED
@@ -200,14 +200,34 @@ export async function main(argv) {
200
200
  return cmdHelp();
201
201
 
202
202
  default: {
203
- // Check if a plugin handles this command before falling through to Legion
203
+ // Check if a plugin handles this command before falling through
204
204
  const pluginMatch = await findPluginForCommand(cmd);
205
205
  if (pluginMatch && pluginMatch.plugin.run) {
206
206
  const { cmdPlugin: runPlugin } = await import('./commands/plugin.mjs');
207
207
  return runPlugin(['run', cmd, ...args]);
208
208
  }
209
- // Try as Legion command passthrough
210
- return spawnCore('legion', [cmd, ...args]);
209
+ // Try as Legion command passthrough (only if legion is installed)
210
+ try {
211
+ const { LEGION_FILE } = await import('./constants.mjs');
212
+ const { existsSync } = await import('fs');
213
+ if (existsSync(LEGION_FILE)) {
214
+ return spawnCore('legion', [cmd, ...args]);
215
+ }
216
+ } catch {}
217
+ // Unknown command — show helpful error
218
+ fail(`Unknown command: ${cmd}`);
219
+ console.log('');
220
+ info('Common commands:');
221
+ console.log(' nha chat Chat with AI');
222
+ console.log(' nha ui Open web UI');
223
+ console.log(' nha start Start ops daemon (Telegram/Discord)');
224
+ console.log(' nha stop Stop ops daemon');
225
+ console.log(' nha restart Restart ops daemon');
226
+ console.log(' nha status Check daemon status');
227
+ console.log(' nha update Update agents + npm package');
228
+ console.log(' nha config set <k> <v> Set configuration');
229
+ console.log(' nha help Full command list');
230
+ return;
211
231
  }
212
232
  }
213
233
  }
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 = '14.2.6';
8
+ export const VERSION = '14.2.7';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -161,8 +161,10 @@ TOOLS:
161
161
  NEVER use calendar_find with month names — use calendar_month instead.
162
162
 
163
163
  14. calendar_create(summary: string, start: string, end: string, attendees?: string[], description?: string)
164
- Create a calendar event. start/end are ISO 8601 datetime strings.
165
- ALWAYS confirm with the user before creating.
164
+ Create a NEW calendar event. start/end are ISO 8601 datetime strings.
165
+ Use this when the user says: "inserisci", "aggiungi", "crea", "metti", "fissa", "prenota", "add", "create", "schedule", "book".
166
+ IMPORTANT: When user says "inserisci appuntamento" or "crea evento" → use calendar_create, NOT calendar_find.
167
+ Extract the summary, date, and time from the user message. If end time is not specified, default to 1 hour after start.
166
168
 
167
169
  15. calendar_move(eventId: string, newStart: string, newEnd: string)
168
170
  Reschedule an event. ALWAYS confirm before moving.
@@ -625,7 +627,8 @@ RULES:
625
627
  - For write/send/delete operations (gmail_send, gmail_reply, gmail_delete, calendar_create, calendar_move, calendar_update, contact_delete, task_done, notify_remind, file_write), DESCRIBE what you're about to do and include the JSON block so the system can ask the user for confirmation.
626
628
  - For schedule_meeting and schedule_draft_email, execute immediately — these are read operations that suggest slots.
627
629
  - When presenting email results, show From, Subject, Date, and a brief snippet. Never dump raw JSON.
628
- - When presenting calendar events, show Time, Title, Location/Link. Format times in a human-readable way.
630
+ - When presenting calendar events, show Time, Title, Location/Link. Format times in a human-readable way. NEVER show raw eventId to the user — it's internal.
631
+ - When confirming a created event, say something like "Ho creato l'appuntamento 'X' per il giorno Y alle ore Z." — natural, human, no IDs.
629
632
  - When presenting tasks, show ID, Description, Priority, Status.
630
633
  - When presenting slot proposals, show day, date, time range, and travel info clearly.
631
634
  - If you need multiple actions in sequence (e.g., read an email then reply), do them ONE AT A TIME — wait for the result of each before proceeding.