diff options
Diffstat (limited to 'course')
| -rw-r--r-- | course/atlas.json | 3768 | ||||
| -rw-r--r-- | course/changelog.jsonl | 0 | ||||
| -rw-r--r-- | course/chapters/01-orientation.json | 132 | ||||
| -rw-r--r-- | course/chapters/02-architecture.json | 131 | ||||
| -rw-r--r-- | course/chapters/03-commands.json | 119 | ||||
| -rw-r--r-- | course/chapters/04-ai.json | 128 | ||||
| -rw-r--r-- | course/chapters/05-modules.json | 115 | ||||
| -rw-r--r-- | course/chapters/06-files-cloud.json | 132 | ||||
| -rw-r--r-- | course/chapters/07-automation.json | 134 | ||||
| -rw-r--r-- | course/chapters/08-build.json | 117 | ||||
| -rw-r--r-- | course/course.json | 156 | ||||
| -rw-r--r-- | course/faq.json | 3 | ||||
| -rw-r--r-- | course/feed.json | 4 | ||||
| -rw-r--r-- | course/projects/daily-digest.json | 38 | ||||
| -rw-r--r-- | course/projects/notes-bot.json | 39 | ||||
| -rw-r--r-- | course/projects/sync-backup.json | 38 |
16 files changed, 5054 insertions, 0 deletions
diff --git a/course/atlas.json b/course/atlas.json new file mode 100644 index 0000000..e1c6a4e --- /dev/null +++ b/course/atlas.json @@ -0,0 +1,3768 @@ +{ + "version": "2026-10-18T12:01:30Z", + "source_hash": "3295c562f4c4dd30", + "commands": { + "a2a-ack": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "a2a-ack <msgId> <result...> — Acknowledge a message with result", + "builtin": false, + "example": "a2a-ack" + }, + "a2a-list": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "a2a-list — Show pending A2A messages across all agents", + "builtin": false, + "example": "a2a-list" + }, + "a2a-poll": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "a2a-poll [agentId] — Poll for messages addressed to an agent (default: current or \"user\")", + "builtin": false, + "example": "a2a-poll" + }, + "a2a-post": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "a2a-post <to> <type> <capability> <payload...> — Post an A2A message", + "builtin": false, + "example": "a2a-post" + }, + "a2a-prune": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "a2a-prune — Clean up expired and old completed messages", + "builtin": false, + "example": "a2a-prune" + }, + "a2a-reject": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "a2a-reject <msgId> <error...> — Reject a message with error", + "builtin": false, + "example": "a2a-reject" + }, + "a2a-send": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "a2a-send <agent-id> <json-message> — Send an A2A message to an agent's inbox", + "builtin": false, + "example": "a2a-send" + }, + "a2a-status": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "a2a-status — Show scratchpad stats per agent", + "builtin": false, + "example": "a2a-status" + }, + "agent-list": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "module-agent-registry.js — VFS-backed agent directory with A2A contracts", + "builtin": false, + "example": "agent-list" + }, + "agent-loops": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "agent-loops [name|new|edit|delete|clone|export|reset] — Manage agent loop profiles", + "builtin": false, + "example": "agent-loops" + }, + "agent-register": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "module-agent-registry.js — VFS-backed agent directory with A2A contracts", + "builtin": false, + "example": "agent-register" + }, + "agent-status": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "module-agent-registry.js — VFS-backed agent directory with A2A contracts", + "builtin": false, + "example": "agent-status" + }, + "agent-unregister": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "module-agent-registry.js — VFS-backed agent directory with A2A contracts", + "builtin": false, + "example": "agent-unregister" + }, + "ai": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", + "builtin": false, + "example": "ai" + }, + "ai-allow": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-allow — Confirm pending AI action", + "builtin": false, + "example": "ai-allow" + }, + "ai-clear": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-clear — Clear conversation context", + "builtin": false, + "example": "ai-clear" + }, + "ai-compress": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-compress — command from module-aiassist", + "builtin": false, + "example": "ai-compress" + }, + "ai-config": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-config [key] [value] — View or set AI loop config (max-turns, max-context, confirm-timeout(0=disabled))", + "builtin": false, + "example": "ai-config" + }, + "ai-context": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-context — Show current conversation context", + "builtin": false, + "example": "ai-context" + }, + "ai-deny": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-deny — Deny pending AI action", + "builtin": false, + "example": "ai-deny" + }, + "ai-ignore": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-ignore — Suppress validator warnings for this session", + "builtin": false, + "example": "ai-ignore" + }, + "ai-model": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-model [model] — Show or set AI model", + "builtin": false, + "example": "ai-model" + }, + "ai-stop": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-stop — Cancel current AI operation", + "builtin": false, + "example": "ai-stop" + }, + "ai-system": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ai-system <prompt> — Set system prompt", + "builtin": false, + "example": "ai-system" + }, + "alias": { + "module": "alias", + "file": "modules/ext/alias.js", + "tier": "critical-ext-bundle", + "category": "general", + "desc": "List, set, or show aliases (usage: alias [name=value])", + "builtin": false, + "example": "alias" + }, + "analyze": { + "module": "media", + "file": "modules/ext/media.js", + "tier": "ext-auto", + "category": "general", + "desc": "analyze <file> — Analyze image/audio/video. Flags: --frames N, --spectrogram, --beats, --scene", + "builtin": false, + "example": "analyze" + }, + "archive-list": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "archive-list — command from module-aiassist", + "builtin": false, + "example": "archive-list" + }, + "archive-read": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "archive-read — command from module-aiassist", + "builtin": false, + "example": "archive-read" + }, + "ask": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", + "builtin": false, + "example": "ask" + }, + "base64": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "base64 [-d] <string> — Base64 encode/decode", + "builtin": false, + "example": "base64" + }, + "basename": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "basename <path> — Strip directory from path", + "builtin": false, + "example": "basename" + }, + "bench": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "bench [profile] [--tasks=ids] [--repeat=N] — Run benchmark suite on a profile", + "builtin": false, + "example": "bench" + }, + "bench-compare": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "bench-compare <p1> <p2> — Compare benchmark results of two profiles", + "builtin": false, + "example": "bench-compare" + }, + "bug-report": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "bug-report — Generate a markdown bug report to /tmp/ for debugging", + "builtin": false, + "example": "bug-report" + }, + "cal": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "cal [month] [year] — Display an ASCII calendar", + "builtin": false, + "example": "cal" + }, + "calc": { + "module": "calc", + "file": "modules/ext/calc.js", + "tier": "ext-auto", + "category": "general", + "desc": "calc <expression> or calc <value> <from-unit> to <to-unit> — Evaluate expressions or convert between units", + "builtin": false, + "example": "calc" + }, + "cat": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "cat <file> — Display file contents", + "builtin": false, + "example": "cat" + }, + "cd": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "cd <path> — Change current directory; cd / to go to root", + "builtin": false, + "example": "cd" + }, + "chat": { + "module": "module-chatstudio", + "file": "modules/core/module-chatstudio.js", + "tier": "core-bundle", + "category": "ai", + "desc": "Toggle the ChatStudio overlay (inside: /setapi, /setmodel, /ask, /help)", + "builtin": false, + "example": "chat" + }, + "checkpoint": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "checkpoint [name] — Create a VFS snapshot (name defaults to ISO timestamp)", + "builtin": false, + "example": "checkpoint" + }, + "checkpoint-del": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "checkpoint-del <name> — Delete a VFS checkpoint", + "builtin": false, + "example": "checkpoint-del" + }, + "checkpoint-list": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "checkpoint-list — List all VFS checkpoints", + "builtin": false, + "example": "checkpoint-list" + }, + "clear": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "Extracted from newOS4 index.html — WebX11Terminal", + "builtin": true, + "example": "clear" + }, + "cmd-allow": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "Extracted from newOS4 index.html — WebX11Terminal", + "builtin": true, + "example": "cmd-allow" + }, + "cmd-deny": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "Extracted from newOS4 index.html — WebX11Terminal", + "builtin": true, + "example": "cmd-deny" + }, + "commit-approve": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "commit-approve — command from module-aiassist", + "builtin": false, + "example": "commit-approve" + }, + "commit-deny": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "commit-deny — command from module-aiassist", + "builtin": false, + "example": "commit-deny" + }, + "commit-status": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "commit-status — command from module-aiassist", + "builtin": false, + "example": "commit-status" + }, + "config": { + "module": "module-config", + "file": "modules/core/module-config.js", + "tier": "core-bundle", + "category": "system", + "desc": "config [key] — Show all config or a specific key", + "builtin": false, + "example": "config" + }, + "config-delete": { + "module": "module-config", + "file": "modules/core/module-config.js", + "tier": "core-bundle", + "category": "system", + "desc": "config-delete <key> — Delete a configuration key", + "builtin": false, + "example": "config-delete" + }, + "config-export": { + "module": "module-config", + "file": "modules/core/module-config.js", + "tier": "core-bundle", + "category": "system", + "desc": "config-export — Export all config as JSON", + "builtin": false, + "example": "config-export" + }, + "config-list": { + "module": "module-config", + "file": "modules/core/module-config.js", + "tier": "core-bundle", + "category": "system", + "desc": "config-list — List all configuration keys", + "builtin": false, + "example": "config-list" + }, + "config-reset": { + "module": "module-config", + "file": "modules/core/module-config.js", + "tier": "core-bundle", + "category": "system", + "desc": "config-reset — Reset all configuration to defaults", + "builtin": false, + "example": "config-reset" + }, + "config-set": { + "module": "module-config", + "file": "modules/core/module-config.js", + "tier": "core-bundle", + "category": "system", + "desc": "config-set <key> <value> — Set a configuration value", + "builtin": false, + "example": "config-set" + }, + "consensus": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "consensus <question> — Start a consensus round: spawn 3 agents, debate the question, resolve by majority", + "builtin": false, + "example": "consensus" + }, + "consensus-history": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "consensus-history — Show past consensus rounds and their resolutions", + "builtin": false, + "example": "consensus-history" + }, + "consensus-status": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "consensus-status — Show current/active consensus round status", + "builtin": false, + "example": "consensus-status" + }, + "context": { + "module": "module-smartctx", + "file": "modules/core/module-smartctx.js", + "tier": "core-bundle", + "category": "ai", + "desc": "context [name] — Set or view current context profile", + "builtin": false, + "example": "context" + }, + "context-auto": { + "module": "module-smartctx", + "file": "modules/core/module-smartctx.js", + "tier": "core-bundle", + "category": "ai", + "desc": "context-auto [on|off] — Toggle auto-routing (detects intent from user input)", + "builtin": false, + "example": "context-auto" + }, + "context-delete": { + "module": "module-smartctx", + "file": "modules/core/module-smartctx.js", + "tier": "core-bundle", + "category": "ai", + "desc": "context-delete <name> — Delete a context profile", + "builtin": false, + "example": "context-delete" + }, + "context-new": { + "module": "module-smartctx", + "file": "modules/core/module-smartctx.js", + "tier": "core-bundle", + "category": "ai", + "desc": "context-new <name> <displayName> <systemPrompt> — Create a new context profile", + "builtin": false, + "example": "context-new" + }, + "contexts": { + "module": "module-smartctx", + "file": "modules/core/module-smartctx.js", + "tier": "core-bundle", + "category": "ai", + "desc": "contexts — List all available context profiles", + "builtin": false, + "example": "contexts" + }, + "contract-list": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "module-agent-registry.js — VFS-backed agent directory with A2A contracts", + "builtin": false, + "example": "contract-list" + }, + "contract-register": { + "module": "module-agent-registry", + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "category": "agents", + "desc": "module-agent-registry.js — VFS-backed agent directory with A2A contracts", + "builtin": false, + "example": "contract-register" + }, + "cp": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "cp <source> <dest> — Copy file or directory", + "builtin": false, + "example": "cp" + }, + "cron-clear": { + "module": "cron", + "file": "modules/ext/cron.js", + "tier": "ext-auto", + "category": "automation", + "desc": "cron-clear — Stop all cron jobs", + "builtin": false, + "example": "cron-clear" + }, + "cron-every": { + "module": "cron", + "file": "modules/ext/cron.js", + "tier": "ext-auto", + "category": "automation", + "desc": "cron-every <seconds> <command> — Schedule a command to run every N seconds", + "builtin": false, + "example": "cron-every" + }, + "cron-list": { + "module": "cron", + "file": "modules/ext/cron.js", + "tier": "ext-auto", + "category": "automation", + "desc": "cron-list — List all active cron jobs", + "builtin": false, + "example": "cron-list" + }, + "cron-stop": { + "module": "cron", + "file": "modules/ext/cron.js", + "tier": "ext-auto", + "category": "automation", + "desc": "cron-stop <id> — Stop a specific cron job", + "builtin": false, + "example": "cron-stop" + }, + "cut": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "cut -f<N> [-d<delim>] <file> — Extract column from file", + "builtin": false, + "example": "cut" + }, + "dashboard": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "dashboard — command from terminal", + "builtin": true, + "example": "dashboard" + }, + "date": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "date — Show current date/time (ISO, local, UTC, timestamp)", + "builtin": false, + "example": "date" + }, + "debug": { + "module": "debug-panel", + "file": "modules/ext/debug-panel.js", + "tier": "ext-auto", + "category": "dev", + "desc": "debug — Toggle the debug console panel", + "builtin": false, + "example": "debug" + }, + "debug-ai": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "debug-ai — Toggle AI tool-call debug panel", + "builtin": false, + "example": "debug-ai" + }, + "debug-ai-last": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "debug-ai-last — command from module-aiassist", + "builtin": false, + "example": "debug-ai-last" + }, + "debug-ai-log": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "debug-ai-log — command from module-aiassist", + "builtin": false, + "example": "debug-ai-log" + }, + "debug-ai-send": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "debug-ai-send — command from module-aiassist", + "builtin": false, + "example": "debug-ai-send" + }, + "debug-analyze": { + "module": "module-debug-supervisor", + "file": "modules/core/module-debug-supervisor.js", + "tier": "core-bundle", + "category": "general", + "desc": "debug-analyze <hash> — Deep analysis of a specific error", + "builtin": false, + "example": "debug-analyze" + }, + "debug-fix": { + "module": "module-debug-supervisor", + "file": "modules/core/module-debug-supervisor.js", + "tier": "core-bundle", + "category": "general", + "desc": "debug-fix <hash> — Suggest and optionally apply fix for an error", + "builtin": false, + "example": "debug-fix" + }, + "debug-health": { + "module": "module-debug-supervisor", + "file": "modules/core/module-debug-supervisor.js", + "tier": "core-bundle", + "category": "general", + "desc": "debug-health — Check supervisor module health status", + "builtin": false, + "example": "debug-health" + }, + "debug-history": { + "module": "module-debug-supervisor", + "file": "modules/core/module-debug-supervisor.js", + "tier": "core-bundle", + "category": "general", + "desc": "debug-history [n] — Show last N errors (default: 20)", + "builtin": false, + "example": "debug-history" + }, + "debug-stats": { + "module": "module-debug-supervisor", + "file": "modules/core/module-debug-supervisor.js", + "tier": "core-bundle", + "category": "general", + "desc": "debug-stats — Show error summary (total, unique, clusters, top issues)", + "builtin": false, + "example": "debug-stats" + }, + "debug-sync": { + "module": "module-debug-supervisor", + "file": "modules/core/module-debug-supervisor.js", + "tier": "core-bundle", + "category": "general", + "desc": "debug-sync [url] — Sync errors to backend API (or set sync URL)", + "builtin": false, + "example": "debug-sync" + }, + "debug-sync-url": { + "module": "module-debug-supervisor", + "file": "modules/core/module-debug-supervisor.js", + "tier": "core-bundle", + "category": "general", + "desc": "debug-sync-url [url] — View or set the backend sync endpoint", + "builtin": false, + "example": "debug-sync-url" + }, + "debug-trends": { + "module": "module-debug-supervisor", + "file": "modules/core/module-debug-supervisor.js", + "tier": "core-bundle", + "category": "general", + "desc": "debug-trends [days] — Error frequency over time (default: 7)", + "builtin": false, + "example": "debug-trends" + }, + "decrypt": { + "module": "cryptogzip", + "file": "modules/ext/cryptogzip.js", + "tier": "ext-auto", + "category": "system", + "desc": "decrypt <path.enc> <passphrase> — Decrypt a .enc file", + "builtin": false, + "example": "decrypt" + }, + "diff": { + "module": "diff", + "file": "modules/ext/diff.js", + "tier": "critical-ext-bundle", + "category": "editor", + "desc": "Show differences between two VFS files or compare module source (usage: diff <file1> <file2> or diff --module <name>)", + "builtin": false, + "example": "diff" + }, + "dirname": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "dirname <path> — Strip filename from path", + "builtin": false, + "example": "dirname" + }, + "doctor": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "doctor — Run all health checks, rank issues, show top 3 warnings", + "builtin": false, + "example": "doctor" + }, + "download": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "download <file> — Download a file to your device", + "builtin": false, + "example": "download" + }, + "du": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "du [path] — Estimate file/directory size", + "builtin": false, + "example": "du" + }, + "echo": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "echo <text...> — Print text to the terminal", + "builtin": false, + "example": "echo" + }, + "edit": { + "module": "editor", + "file": "modules/ext/editor.js", + "tier": "critical-ext-bundle", + "category": "editor", + "desc": "Open the code editor for a VFS file (usage: edit <path>)", + "builtin": false, + "example": "edit" + }, + "empty-trash": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "empty-trash — Permanently delete all trash items", + "builtin": false, + "example": "empty-trash" + }, + "encrypt": { + "module": "cryptogzip", + "file": "modules/ext/cryptogzip.js", + "tier": "ext-auto", + "category": "system", + "desc": "encrypt <path> <passphrase> — AES-256-GCM encrypt a file", + "builtin": false, + "example": "encrypt" + }, + "env": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "env — List environment variables (webx11_ keys + user profile)", + "builtin": false, + "example": "env" + }, + "errors": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "errors [n] — Show last n ERROR log entries (default: 20)", + "builtin": false, + "example": "errors" + }, + "expand": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "expand <file> — Convert tabs to spaces (default 4) in file", + "builtin": false, + "example": "expand" + }, + "export": { + "module": "shell", + "file": "modules/ext/shell.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "export <var>=<value> — Set a shell variable", + "builtin": false, + "example": "export" + }, + "extract": { + "module": "module-fetcher", + "file": "modules/core/module-fetcher.js", + "tier": "core-bundle", + "category": "web", + "desc": "extract <url> — Extract readable article content (title + body text) from a URL", + "builtin": false, + "example": "extract" + }, + "factory-reset": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "factory-reset — Alias for reset all", + "builtin": false, + "example": "factory-reset" + }, + "factory-reset-old": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "factory-reset-old — command from module-system", + "builtin": false, + "example": "factory-reset-old" + }, + "fetch": { + "module": "module-fetcher", + "file": "modules/core/module-fetcher.js", + "tier": "core-bundle", + "category": "web", + "desc": "fetch <url> [--post=BODY] [--type=CT] [--raw] — Fetch URL (raw HTML/text); --post enables POST with body, --type sets Content-Type, --raw shows untruncated content", + "builtin": false, + "example": "fetch" + }, + "files": { + "module": "filemgr", + "file": "modules/ext/filemgr.js", + "tier": "critical-ext-bundle", + "category": "filesystem", + "desc": "files — Open the file manager overlay with VFS directory listing, preview, encrypt, zip", + "builtin": false, + "example": "files" + }, + "find": { + "module": "finder", + "file": "modules/ext/finder.js", + "tier": "critical-ext-bundle", + "category": "filesystem", + "desc": "Recursively search VFS files/directories by name (usage: find <query>)", + "builtin": false, + "example": "find" + }, + "floating-add": { + "module": "floating", + "file": "modules/ext/floating.js", + "tier": "ext-auto", + "category": "ui", + "desc": "floating-add btn|menu|panel <id> <label> [cmd|btn:Label:cmd...] — Add a floating UI element", + "builtin": false, + "example": "floating-add" + }, + "floating-clear": { + "module": "floating", + "file": "modules/ext/floating.js", + "tier": "ext-auto", + "category": "ui", + "desc": "floating-clear — Remove all floating elements", + "builtin": false, + "example": "floating-clear" + }, + "floating-list": { + "module": "floating", + "file": "modules/ext/floating.js", + "tier": "ext-auto", + "category": "ui", + "desc": "floating-list — Show all floating elements", + "builtin": false, + "example": "floating-list" + }, + "floating-pos": { + "module": "floating", + "file": "modules/ext/floating.js", + "tier": "ext-auto", + "category": "ui", + "desc": "floating-pos <id> <x|auto> <y|auto> — Reposition a floating element", + "builtin": false, + "example": "floating-pos" + }, + "floating-remove": { + "module": "floating", + "file": "modules/ext/floating.js", + "tier": "ext-auto", + "category": "ui", + "desc": "floating-remove <id> — Remove a floating element", + "builtin": false, + "example": "floating-remove" + }, + "floating-toggle": { + "module": "floating", + "file": "modules/ext/floating.js", + "tier": "ext-auto", + "category": "ui", + "desc": "floating-toggle <id> — Show/hide a floating element", + "builtin": false, + "example": "floating-toggle" + }, + "font-size": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "font-size <8-32> — Set terminal font size (persists across sessions)", + "builtin": false, + "example": "font-size" + }, + "grep": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "grep <pattern> [file] — Search file content for pattern", + "builtin": false, + "example": "grep" + }, + "guardrail": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "guardrail — command from module-aiassist", + "builtin": false, + "example": "guardrail" + }, + "guardrail-add": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "guardrail-add — command from module-aiassist", + "builtin": false, + "example": "guardrail-add" + }, + "guardrail-remove": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "guardrail-remove — command from module-aiassist", + "builtin": false, + "example": "guardrail-remove" + }, + "gui": { + "module": "module-simplegui", + "file": "modules/core/module-simplegui.js", + "tier": "core-bundle", + "category": "general", + "desc": "gui — Show the GUI builder overview", + "builtin": false, + "example": "gui" + }, + "gui-button": { + "module": "module-simplegui", + "file": "modules/core/module-simplegui.js", + "tier": "core-bundle", + "category": "general", + "desc": "gui-button <label> <command> — Add a clickable button", + "builtin": false, + "example": "gui-button" + }, + "gui-clear": { + "module": "module-simplegui", + "file": "modules/core/module-simplegui.js", + "tier": "core-bundle", + "category": "general", + "desc": "gui-clear — Clear all GUI elements", + "builtin": false, + "example": "gui-clear" + }, + "gui-input": { + "module": "module-simplegui", + "file": "modules/core/module-simplegui.js", + "tier": "core-bundle", + "category": "general", + "desc": "gui-input <placeholder> <varName> — Add a text input field", + "builtin": false, + "example": "gui-input" + }, + "gui-run": { + "module": "module-simplegui", + "file": "modules/core/module-simplegui.js", + "tier": "core-bundle", + "category": "general", + "desc": "gui-run <command> — Run a terminal command from the GUI", + "builtin": false, + "example": "gui-run" + }, + "gui-text": { + "module": "module-simplegui", + "file": "modules/core/module-simplegui.js", + "tier": "core-bundle", + "category": "general", + "desc": "gui-text <content> — Add a text element", + "builtin": false, + "example": "gui-text" + }, + "gunzip": { + "module": "cryptogzip", + "file": "modules/ext/cryptogzip.js", + "tier": "ext-auto", + "category": "system", + "desc": "gunzip <path.gz> — Decompress a .gz file (binary-safe)", + "builtin": false, + "example": "gunzip" + }, + "gzip": { + "module": "cryptogzip", + "file": "modules/ext/cryptogzip.js", + "tier": "ext-auto", + "category": "system", + "desc": "gzip <path> — Compress a VFS file to .gz", + "builtin": false, + "example": "gzip" + }, + "head": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "head <file> [lines] — Show first N lines (default: 10)", + "builtin": false, + "example": "head" + }, + "health-check": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "health-check — Audit VFS size, modules, logs, trash, skills, tool failures", + "builtin": false, + "example": "health-check" + }, + "help": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "help [command] — Show all commands or usage for a specific command", + "builtin": false, + "example": "help" + }, + "history": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "history — command from terminal", + "builtin": true, + "example": "history" + }, + "hostname": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "hostname — Show host/user-agent info", + "builtin": false, + "example": "hostname" + }, + "images": { + "module": "module-searxng", + "file": "modules/core/module-searxng.js", + "tier": "core-bundle", + "category": "web", + "desc": "images <query> — Search for images", + "builtin": false, + "example": "images" + }, + "js": { + "module": "console", + "file": "modules/ext/console.js", + "tier": "ext-auto", + "category": "dev", + "desc": "js <expression> — Evaluate JavaScript in page context", + "builtin": false, + "example": "js" + }, + "js-run": { + "module": "console", + "file": "modules/ext/console.js", + "tier": "ext-auto", + "category": "dev", + "desc": "js-run <path> — Load and execute a JS file from VFS", + "builtin": false, + "example": "js-run" + }, + "kanban": { + "module": "kanban", + "file": "modules/ext/kanban.js", + "tier": "ext-auto", + "category": "automation", + "desc": "kanban <command> [args] — Manage tasks on a kanban board (todo, doing, done columns)", + "builtin": false, + "example": "kanban" + }, + "learn-skill": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "learn-skill <topic> — Reflect on topic, draft a skill from experience", + "builtin": false, + "example": "learn-skill" + }, + "lease-create": { + "module": "module-leases", + "file": "modules/core/module-leases.js", + "tier": "core-bundle", + "category": "agents", + "desc": "module-leases.js — Lease system for agent task delegation", + "builtin": false, + "example": "lease-create" + }, + "lease-list": { + "module": "module-leases", + "file": "modules/core/module-leases.js", + "tier": "core-bundle", + "category": "agents", + "desc": "module-leases.js — Lease system for agent task delegation", + "builtin": false, + "example": "lease-list" + }, + "lease-renew": { + "module": "module-leases", + "file": "modules/core/module-leases.js", + "tier": "core-bundle", + "category": "agents", + "desc": "lease-renew — command from module-leases", + "builtin": false, + "example": "lease-renew" + }, + "lease-revoke": { + "module": "module-leases", + "file": "modules/core/module-leases.js", + "tier": "core-bundle", + "category": "agents", + "desc": "module-leases.js — Lease system for agent task delegation", + "builtin": false, + "example": "lease-revoke" + }, + "listmods": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "listmods — List all loaded modules with status", + "builtin": false, + "example": "listmods" + }, + "load-local": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "Extracted from newOS4 index.html — ModuleManager", + "builtin": true, + "example": "load-local" + }, + "loadlocal": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "Extracted from newOS4 index.html — ModuleManager", + "builtin": true, + "example": "loadlocal" + }, + "loadmod": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "loadmod <url> — Load a module from a URL", + "builtin": false, + "example": "loadmod" + }, + "logrotate": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "logrotate — Rotate current.log to a dated archive (auto-cleans old)", + "builtin": false, + "example": "logrotate" + }, + "logs": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "logs [n] [LEVEL] — Show last n log entries (optionally filtered by level: INFO/WARN/ERROR)", + "builtin": false, + "example": "logs" + }, + "ls": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "ls [path] [-la] — List files and directories", + "builtin": false, + "example": "ls" + }, + "ls-trash": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "ls-trash — List items in trash", + "builtin": false, + "example": "ls-trash" + }, + "mem": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "mem — Show memory usage (heap + localStorage + VFS)", + "builtin": false, + "example": "mem" + }, + "mem-debug": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "mem-debug — Show memory breakdown by component", + "builtin": false, + "example": "mem-debug" + }, + "memgraph-agent": { + "module": "module-memory-graph", + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "category": "ai", + "desc": "memgraph-agent <agentId> — Show namespaced nodes for an agent", + "builtin": false, + "example": "memgraph-agent" + }, + "memgraph-decay-config": { + "module": "module-memory-graph", + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "category": "ai", + "desc": "memgraph-decay-config <days> <min_uses> — Configure decay policy (default: 30d, 3 uses)", + "builtin": false, + "example": "memgraph-decay-config" + }, + "memgraph-export": { + "module": "module-memory-graph", + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "category": "ai", + "desc": "memgraph-export — Export graph as JSON", + "builtin": false, + "example": "memgraph-export" + }, + "memgraph-learn": { + "module": "module-memory-graph", + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "category": "ai", + "desc": "memgraph-learn <entity> <fact> — Add a fact to the memory graph", + "builtin": false, + "example": "memgraph-learn" + }, + "memgraph-prune": { + "module": "module-memory-graph", + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "category": "ai", + "desc": "memgraph-prune — Remove stale low-weight edges (>30d, <3 accesses)", + "builtin": false, + "example": "memgraph-prune" + }, + "memgraph-search": { + "module": "module-memory-graph", + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "category": "ai", + "desc": "memgraph-search <query> — Find nodes by label or type", + "builtin": false, + "example": "memgraph-search" + }, + "memgraph-session": { + "module": "module-memory-graph", + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "category": "ai", + "desc": "memgraph-session [date] — Show graph nodes for a session (default: today)", + "builtin": false, + "example": "memgraph-session" + }, + "memgraph-stats": { + "module": "module-memory-graph", + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "category": "ai", + "desc": "memgraph-stats — Most connected nodes, strongest edges, cluster info", + "builtin": false, + "example": "memgraph-stats" + }, + "memgraph-status": { + "module": "module-memory-graph", + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "category": "ai", + "desc": "memgraph-status — Show node/edge counts, last access", + "builtin": false, + "example": "memgraph-status" + }, + "memory-map-export": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "memory-map-export — Export memory index to /memory/reference.md (overwrites file)", + "builtin": false, + "example": "memory-map-export" + }, + "mindmap": { + "module": "mindmap", + "file": "modules/ext/mindmap.js", + "tier": "ext-auto", + "category": "general", + "desc": "mindmap <subcommand> [...] — Create, edit, visualize mindmaps. v4.5.44: multi-mindmap, find, move, undo, import, merge, diff, stats, mermaid, refresh-html. Run `mindmap help` for full list.", + "builtin": false, + "example": "mindmap" + }, + "mkdir": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "mkdir <dir> [-p] — Create a directory; -p creates parent paths", + "builtin": false, + "example": "mkdir" + }, + "model-delete": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "model-delete <model-name> — Delete a model from local storage", + "builtin": false, + "example": "model-delete" + }, + "model-info": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "model-info <model-name> — Show details about a specific model", + "builtin": false, + "example": "model-info" + }, + "model-pull": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "model-pull <model-name> — Pull a model from Ollama registry", + "builtin": false, + "example": "model-pull" + }, + "model-run": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "model-run <model-name> [prompt] — Run inference with a model", + "builtin": false, + "example": "model-run" + }, + "models": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "models — List all available Ollama models (table format)", + "builtin": false, + "example": "models" + }, + "module-disable": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "module-disable <name> — Disable a module from auto-loading on refresh (persists)", + "builtin": false, + "example": "module-disable" + }, + "module-enable": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "module-enable <name> — Re-enable a previously disabled module", + "builtin": false, + "example": "module-enable" + }, + "module-info": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "module-info <name> — Show module details: path, status, size, type, source, commands list", + "builtin": false, + "example": "module-info" + }, + "module-list": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "module-list [flags] — List loaded modules grouped by category. Flags: --flat, --core, --ext, --foundation, --lazy, --eager, --loaded, --unloaded, --search=<pat>, --failed, --disabled", + "builtin": false, + "example": "module-list" + }, + "module-load": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "module-load <name> — Mark a lazy module as loaded", + "builtin": false, + "example": "module-load" + }, + "module-reload": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "module-reload <name> — Unload then reload a module (shows diff)", + "builtin": false, + "example": "module-reload" + }, + "module-reset": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "module-reset <name> — Reset a module to a clean state (clears its state, keeps commands)", + "builtin": false, + "example": "module-reset" + }, + "module-stats": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "module-stats — Show aggregate module statistics (loaded/unloaded/lazy/failed/disabled + total size)", + "builtin": false, + "example": "module-stats" + }, + "module-unload": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "module-unload <name> — Mark a module as unloaded", + "builtin": false, + "example": "module-unload" + }, + "modules": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "modules — Open the module manager GUI", + "builtin": false, + "example": "modules" + }, + "modules-list": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "modules-list [core|ext] — List all available modules from the module index", + "builtin": false, + "example": "modules-list" + }, + "monitor": { + "module": "module-servermon", + "file": "modules/core/module-servermon.js", + "tier": "core-bundle", + "category": "system", + "desc": "monitor — Toggle auto-monitoring (checks every 60s)", + "builtin": false, + "example": "monitor" + }, + "mv": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "mv <source> <dest> — Move file or directory", + "builtin": false, + "example": "mv" + }, + "node": { + "module": "console", + "file": "modules/ext/console.js", + "tier": "ext-auto", + "category": "dev", + "desc": "node <path> — Alias for js-run (executes a JS file from VFS)", + "builtin": false, + "example": "node" + }, + "nvfs-alias": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-alias list|add|remove|clear — Manage concept aliases", + "builtin": false, + "example": "nvfs-alias" + }, + "nvfs-cancel": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-cancel — Cancel running index operation", + "builtin": false, + "example": "nvfs-cancel" + }, + "nvfs-config": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-config [key] [value] — View or set Neural VFS config (fuzzy-limit, tree-files, tree-concepts, resolve-files, deep-index, deep-model, exclude-patterns, exclude-dirs, exclude-files, include-only)", + "builtin": false, + "example": "nvfs-config" + }, + "nvfs-index": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-index [--deep] — Scan VFS and build semantic concept index", + "builtin": false, + "example": "nvfs-index" + }, + "nvfs-index-graph": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-index-graph — command from module-neural-vfs", + "builtin": false, + "example": "nvfs-index-graph" + }, + "nvfs-resolve": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-resolve <concept> — Find files related to a concept", + "builtin": false, + "example": "nvfs-resolve" + }, + "nvfs-save": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-save — Force-save current in-memory index to VFS (survives refresh)", + "builtin": false, + "example": "nvfs-save" + }, + "nvfs-status": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-status — Show semantic index stats and last scan time", + "builtin": false, + "example": "nvfs-status" + }, + "nvfs-sync": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-sync [--deep] — Incremental background sync (auto-sync dirty files)", + "builtin": false, + "example": "nvfs-sync" + }, + "nvfs-tree": { + "module": "module-neural-vfs", + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "category": "ai", + "desc": "nvfs-tree [concept] — Show concept-to-file mapping as a tree", + "builtin": false, + "example": "nvfs-tree" + }, + "ollama": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ollama — Open the Ollama model manager UI", + "builtin": false, + "example": "ollama" + }, + "ollamaconnect": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ollamaconnect — Connect to the Ollama server", + "builtin": false, + "example": "ollamaconnect" + }, + "ollamadisconnect": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ollamadisconnect — Disconnect from the Ollama server", + "builtin": false, + "example": "ollamadisconnect" + }, + "ollamamodels": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ollamamodels — List all available models from Ollama", + "builtin": false, + "example": "ollamamodels" + }, + "ollamasetmodel": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ollamasetmodel <name> — Set the active Ollama model", + "builtin": false, + "example": "ollamasetmodel" + }, + "ollamasetproxy": { + "module": "module-ollama", + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "category": "ai", + "desc": "ollamasetproxy [endpoint] — View or change the Ollama endpoint URL", + "builtin": false, + "example": "ollamasetproxy" + }, + "orchestrate": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrate <task> — Delegate a task to an available agent (auto-spawns if needed)", + "builtin": false, + "example": "orchestrate" + }, + "orchestrate-decompose": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrate-decompose <task> — Preview how a task would be decomposed into sub-tasks", + "builtin": false, + "example": "orchestrate-decompose" + }, + "orchestrate-parallel": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrate-parallel <task> — Decompose and delegate sub-tasks in parallel (auto-splits on \"and\"/\"then\")", + "builtin": false, + "example": "orchestrate-parallel" + }, + "orchestrate-result": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrate-result — Show the last parallel batch results (stored in VFS)", + "builtin": false, + "example": "orchestrate-result" + }, + "orchestrator-config": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-config <key> <value> — Tune: spawn-limit, spawn-strategy, heartbeat-timeout, idle-timeout, restart-policy, a2a-polling, a2a-poll-interval, heartbeat-check, idle-sweep-interval, dead-purge-timeout", + "builtin": false, + "example": "orchestrator-config" + }, + "orchestrator-kill": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-kill <agent-id> — Terminate an agent and revoke leases", + "builtin": false, + "example": "orchestrator-kill" + }, + "orchestrator-list": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-list — List all spawned agents with full details", + "builtin": false, + "example": "orchestrator-list" + }, + "orchestrator-purge": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-purge — Remove dead agents (>60s since heartbeat)", + "builtin": false, + "example": "orchestrator-purge" + }, + "orchestrator-restart-policy": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-restart-policy <agent-id> <on-failure|always|never> — Set per-agent restart policy", + "builtin": false, + "example": "orchestrator-restart-policy" + }, + "orchestrator-schedule": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-schedule <role> <interval_seconds> <task...> — Schedule a recurring task delegation", + "builtin": false, + "example": "orchestrator-schedule" + }, + "orchestrator-schedules": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-schedules — List all active recurring schedules", + "builtin": false, + "example": "orchestrator-schedules" + }, + "orchestrator-sleep": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-sleep <agent-id> — Suspend agent to VFS", + "builtin": false, + "example": "orchestrator-sleep" + }, + "orchestrator-spawn": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-spawn [role] [capabilities...] — Manually spawn a new agent", + "builtin": false, + "example": "orchestrator-spawn" + }, + "orchestrator-status": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-status — Show agent pool status and config", + "builtin": false, + "example": "orchestrator-status" + }, + "orchestrator-unschedule": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-unschedule <id> — Remove a recurring schedule", + "builtin": false, + "example": "orchestrator-unschedule" + }, + "orchestrator-wake": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "orchestrator-wake <agent-id> — Restore agent from VFS sleep", + "builtin": false, + "example": "orchestrator-wake" + }, + "pipeline": { + "module": "module-orchestrator", + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "category": "agents", + "desc": "pipeline <test|deploy|verify|history|config> — Autonomous CI/CD: test agents/queue/modules, deploy (test→auto-fix→verify), history (show runs), config (show config)", + "builtin": false, + "example": "pipeline" + }, + "predict": { + "module": "module-predictor", + "file": "modules/core/module-predictor.js", + "tier": "core-bundle", + "category": "general", + "desc": "predict <task description> — Predict task duration, tool turns, and confidence", + "builtin": false, + "example": "predict" + }, + "predictor-config": { + "module": "module-predictor", + "file": "modules/core/module-predictor.js", + "tier": "core-bundle", + "category": "general", + "desc": "predictor-config <key> <value> — Tune: confidence-threshold, min-data-points", + "builtin": false, + "example": "predictor-config" + }, + "predictor-status": { + "module": "module-predictor", + "file": "modules/core/module-predictor.js", + "tier": "core-bundle", + "category": "general", + "desc": "predictor-status — Model accuracy, data points, prediction count", + "builtin": false, + "example": "predictor-status" + }, + "preview": { + "module": "filemgr", + "file": "modules/ext/filemgr.js", + "tier": "critical-ext-bundle", + "category": "filesystem", + "desc": "preview <path> — Preview a specific file", + "builtin": false, + "example": "preview" + }, + "printf": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "printf <format> [args...] — Formatted print (%s, %d, %f, \\\\n, \\\\t)", + "builtin": false, + "example": "printf" + }, + "put": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "put <file> <content> — Create or overwrite a file", + "builtin": false, + "example": "put" + }, + "pwd": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "pwd — Print current working directory", + "builtin": false, + "example": "pwd" + }, + "removemod": { + "module": "module-modmgr", + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "category": "general", + "desc": "removemod <name> — Remove a loaded module by name", + "builtin": false, + "example": "removemod" + }, + "reset": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "reset [mem|vfs|config|all] — Global reset command (default: mem)", + "builtin": false, + "example": "reset" + }, + "reset-mem": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "reset-mem — Reset AI memory (logs, context, profile, guardrails) without losing VFS or config", + "builtin": false, + "example": "reset-mem" + }, + "reset-vfs": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "reset-vfs — Alias for reset vfs", + "builtin": false, + "example": "reset-vfs" + }, + "rm": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "rm <file> — Remove a file (moved to trash); use -r/-rf for directories", + "builtin": false, + "example": "rm" + }, + "rmdir": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "rmdir <dir> — Remove a directory", + "builtin": false, + "example": "rmdir" + }, + "rollback": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "rollback <name> — Restore VFS from a checkpoint", + "builtin": false, + "example": "rollback" + }, + "s": { + "module": "module-searxng", + "file": "modules/core/module-searxng.js", + "tier": "core-bundle", + "category": "web", + "desc": "s — command from module-searxng", + "builtin": false, + "example": "s" + }, + "sandbox-config": { + "module": "module-sandbox", + "file": "modules/core/module-sandbox.js", + "tier": "core-bundle", + "category": "ai", + "desc": "sandbox-config <key> <value> — Tune: max-workers, min-workers, pool-timeout", + "builtin": false, + "example": "sandbox-config" + }, + "sandbox-run": { + "module": "module-sandbox", + "file": "modules/core/module-sandbox.js", + "tier": "core-bundle", + "category": "ai", + "desc": "sandbox-run <task> — Run a task in the sandbox (automatic routing)", + "builtin": false, + "example": "sandbox-run" + }, + "sandbox-status": { + "module": "module-sandbox", + "file": "modules/core/module-sandbox.js", + "tier": "core-bundle", + "category": "ai", + "desc": "sandbox-status — Show sandbox pool health and task metrics", + "builtin": false, + "example": "sandbox-status" + }, + "script": { + "module": "shell", + "file": "modules/ext/shell.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "script <path.sh> — Run a shell script from VFS", + "builtin": false, + "example": "script" + }, + "search": { + "module": "module-searxng", + "file": "modules/core/module-searxng.js", + "tier": "core-bundle", + "category": "web", + "desc": "search <query> [--summarize/-s] [--fetch/-f] [--images/-i] [--videos/-v] — Search using SearXNG; --summarize/-s adds AI overview, --fetch/-f fetches page content, --images/-i searches for images, --videos/-v searches for videos", + "builtin": false, + "example": "search" + }, + "secret-del": { + "module": "secret-vault", + "file": "modules/core/secret-vault.js", + "tier": "core-bundle", + "category": "general", + "desc": "secret-del <name> — Remove a stored secret", + "builtin": false, + "example": "secret-del" + }, + "secret-get": { + "module": "secret-vault", + "file": "modules/core/secret-vault.js", + "tier": "core-bundle", + "category": "general", + "desc": "secret-get <name> — Decrypt and display a secret value", + "builtin": false, + "example": "secret-get" + }, + "secret-list": { + "module": "secret-vault", + "file": "modules/core/secret-vault.js", + "tier": "core-bundle", + "category": "general", + "desc": "secret-list — List all stored secret names", + "builtin": false, + "example": "secret-list" + }, + "secret-lock": { + "module": "secret-vault", + "file": "modules/core/secret-vault.js", + "tier": "core-bundle", + "category": "general", + "desc": "secret-lock — Lock the vault (clear derived key from memory)", + "builtin": false, + "example": "secret-lock" + }, + "secret-set": { + "module": "secret-vault", + "file": "modules/core/secret-vault.js", + "tier": "core-bundle", + "category": "general", + "desc": "secret-set <name> <value> — Encrypt and store a secret", + "builtin": false, + "example": "secret-set" + }, + "secret-setpin": { + "module": "secret-vault", + "file": "modules/core/secret-vault.js", + "tier": "core-bundle", + "category": "general", + "desc": "secret-setpin <pin> — Set or change the vault PIN code", + "builtin": false, + "example": "secret-setpin" + }, + "secret-status": { + "module": "secret-vault", + "file": "modules/core/secret-vault.js", + "tier": "core-bundle", + "category": "general", + "desc": "secret-status — Show vault status (locked/unlocked/pin set/open mode)", + "builtin": false, + "example": "secret-status" + }, + "secret-unlock": { + "module": "secret-vault", + "file": "modules/core/secret-vault.js", + "tier": "core-bundle", + "category": "general", + "desc": "secret-unlock <pin> — Unlock the vault with a PIN code", + "builtin": false, + "example": "secret-unlock" + }, + "security": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "Extracted from newOS4 index.html — WebX11Terminal", + "builtin": true, + "example": "security" + }, + "security-destructive": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "security-destructive — command from terminal", + "builtin": true, + "example": "security-destructive" + }, + "security-flag": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "security-flag — command from terminal", + "builtin": true, + "example": "security-flag" + }, + "security-level": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "Extracted from newOS4 index.html — WebX11Terminal", + "builtin": true, + "example": "security-level" + }, + "security-system": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "security-system — command from terminal", + "builtin": true, + "example": "security-system" + }, + "security-whitelist": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "security-whitelist — command from terminal", + "builtin": true, + "example": "security-whitelist" + }, + "sed": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "sed <expr> [file] — Stream editor; s/pat/rep/[g][i][p], /pat/d, Nd, $d; -i write in place; -n quiet mode", + "builtin": false, + "example": "sed" + }, + "seq": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "seq <last> or seq <first> <last> — Generate sequence of numbers", + "builtin": false, + "example": "seq" + }, + "server": { + "module": "module-servermon", + "file": "modules/core/module-servermon.js", + "tier": "core-bundle", + "category": "system", + "desc": "server <name> <url> — Add a server to monitor", + "builtin": false, + "example": "server" + }, + "server-check": { + "module": "module-servermon", + "file": "modules/core/module-servermon.js", + "tier": "core-bundle", + "category": "system", + "desc": "server-check <name-or-index> — Check a server status", + "builtin": false, + "example": "server-check" + }, + "server-remove": { + "module": "module-servermon", + "file": "modules/core/module-servermon.js", + "tier": "core-bundle", + "category": "system", + "desc": "server-remove <name-or-index> — Remove a server", + "builtin": false, + "example": "server-remove" + }, + "servers": { + "module": "module-servermon", + "file": "modules/core/module-servermon.js", + "tier": "core-bundle", + "category": "system", + "desc": "servers — List all monitored servers", + "builtin": false, + "example": "servers" + }, + "session-delete": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "session-delete <name> — Delete a saved session", + "builtin": false, + "example": "session-delete" + }, + "session-export": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "session-export — command from module-fs", + "builtin": false, + "example": "session-export" + }, + "session-import": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "session-import — command from module-fs", + "builtin": false, + "example": "session-import" + }, + "session-list": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "session-list — List all saved sessions", + "builtin": false, + "example": "session-list" + }, + "session-load": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "session-load <name> — Load a saved session", + "builtin": false, + "example": "session-load" + }, + "session-new": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "session-new — Start a fresh session (auto-saves current, clears AI context)", + "builtin": false, + "example": "session-new" + }, + "session-save": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "session-save <name> — Save current session (path + terminal history)", + "builtin": false, + "example": "session-save" + }, + "set": { + "module": "shell", + "file": "modules/ext/shell.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "set — List all shell variables", + "builtin": false, + "example": "set" + }, + "setfont": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "setfont <8-32> — Alias for font-size", + "builtin": false, + "example": "setfont" + }, + "sh": { + "module": "shell", + "file": "modules/ext/shell.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "sh <path.sh> — Run a shell script from VFS (alias for script)", + "builtin": false, + "example": "sh" + }, + "shadow": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "shadow — command from module-aiassist", + "builtin": false, + "example": "shadow" + }, + "shadow-commit": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "shadow-commit — command from module-aiassist", + "builtin": false, + "example": "shadow-commit" + }, + "shadow-rollback": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "shadow-rollback — command from module-aiassist", + "builtin": false, + "example": "shadow-rollback" + }, + "skill-audit": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-audit — Audit skills for stale, duplicate, and broken references", + "builtin": false, + "example": "skill-audit" + }, + "skill-create": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-create <name> <desc> \"<steps>\" [tags] — Create a new skill", + "builtin": false, + "example": "skill-create" + }, + "skill-delete": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-delete <name> — Delete a skill", + "builtin": false, + "example": "skill-delete" + }, + "skill-export": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-export <name> — Export a skill as JSON", + "builtin": false, + "example": "skill-export" + }, + "skill-import": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-import <json> — Import a skill from JSON string", + "builtin": false, + "example": "skill-import" + }, + "skill-list": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-list [category] — List all skills, optionally filtered by category", + "builtin": false, + "example": "skill-list" + }, + "skill-pack-core": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "Seed and manage built-in core skills (navigation, memory, search, modules, backup, agents, webdav, security, etc.)", + "builtin": false, + "example": "skill-pack-core" + }, + "skill-patch": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-patch <name> \"<content>\" — Replace a skill's full content", + "builtin": false, + "example": "skill-patch" + }, + "skill-restore": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-restore <name> — Restore an archived skill", + "builtin": false, + "example": "skill-restore" + }, + "skill-sync": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-sync — Rebuild skills index from /skills/ directory", + "builtin": false, + "example": "skill-sync" + }, + "skill-validate": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-validate <name> — Validate skill structure and get confidence score", + "builtin": false, + "example": "skill-validate" + }, + "skill-view": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-view <name> — View a skill's full content", + "builtin": false, + "example": "skill-view" + }, + "skill-webdav-sync": { + "module": "skill-pack-core", + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "category": "ai", + "desc": "skill-webdav-sync — Push all skills to WebDAV as JSON files", + "builtin": false, + "example": "skill-webdav-sync" + }, + "sleep": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "sleep <seconds> — Delay execution with countdown", + "builtin": false, + "example": "sleep" + }, + "smart-ask": { + "module": "module-smartctx", + "file": "modules/core/module-smartctx.js", + "tier": "core-bundle", + "category": "ai", + "desc": "smart-ask <question> — Ask a question using the active context", + "builtin": false, + "example": "smart-ask" + }, + "smart-prompt": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "Extracted from newOS4 index.html — SystemModule", + "builtin": true, + "example": "smart-prompt" + }, + "sort": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "sort <file> — Sort lines of a file alphabetically", + "builtin": false, + "example": "sort" + }, + "speak": { + "module": "voice", + "file": "modules/ext/voice.js", + "tier": "ext-auto", + "category": "ui", + "desc": "speak [text] — Text-to-speech. No args = toggle auto-speak for AI responses", + "builtin": false, + "example": "speak" + }, + "startup-modules": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "Extracted from newOS4 index.html — ModuleManager", + "builtin": true, + "example": "startup-modules" + }, + "status": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "status — Display system status (network, files, modules, Ollama)", + "builtin": false, + "example": "status" + }, + "sysmsg": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "sysmsg — command from terminal", + "builtin": true, + "example": "sysmsg" + }, + "system-health": { + "module": "module-servermon", + "file": "modules/core/module-servermon.js", + "tier": "core-bundle", + "category": "system", + "desc": "system-health — Show tool latency, module load times, VFS size, and error rates", + "builtin": false, + "example": "system-health" + }, + "tail": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "tail [-f] [-n N] <file> — Show last N lines; -f follows live changes (Ctrl+C/Esc to stop)", + "builtin": false, + "example": "tail" + }, + "tar": { + "module": "cryptogzip", + "file": "modules/ext/cryptogzip.js", + "tier": "ext-auto", + "category": "system", + "desc": "tar <src-dir> <out.tar[.gz]> — Bundle a VFS directory into a tar archive (gzip if .gz)", + "builtin": false, + "example": "tar" + }, + "test-net": { + "module": "module-servermon", + "file": "modules/core/module-servermon.js", + "tier": "core-bundle", + "category": "system", + "desc": "test-net — Check proxy API, Ollama, and internet connectivity", + "builtin": false, + "example": "test-net" + }, + "theme": { + "module": "theme", + "file": "modules/ext/theme.js", + "tier": "ext-auto", + "category": "ui", + "desc": "theme <set|list|new|delete|export|preview|keep> [...] — Manage and preview visual themes", + "builtin": false, + "example": "theme" + }, + "three": { + "module": "three", + "file": "modules/ext/three.js", + "tier": "ext-auto", + "category": "ui", + "desc": "three <subcommand> [...] — 3D scene builder (Three.js). Run `three help` for full list.", + "builtin": false, + "example": "three" + }, + "touch": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "touch <file> — Create empty file or update timestamp", + "builtin": false, + "example": "touch" + }, + "trash": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "trash <file> — Move a file to trash", + "builtin": false, + "example": "trash" + }, + "trash-dir": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "trash-dir <dir> — Move a directory to trash", + "builtin": false, + "example": "trash-dir" + }, + "tree": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "tree — Display directory structure as a tree", + "builtin": false, + "example": "tree" + }, + "tutorial": { + "module": "tutorial", + "file": "modules/ext/tutorial.js", + "tier": "ext-auto", + "category": "learning", + "desc": "tutorial [start|skip|status] — Interactive guided tour of newOS4 (6 quests)", + "builtin": false, + "example": "tutorial" + }, + "unalias": { + "module": "alias", + "file": "modules/ext/alias.js", + "tier": "critical-ext-bundle", + "category": "general", + "desc": "Remove a user-defined alias (usage: unalias <name>)", + "builtin": false, + "example": "unalias" + }, + "uniq": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "uniq <file> — Filter adjacent duplicate lines from a file", + "builtin": false, + "example": "uniq" + }, + "unset": { + "module": "shell", + "file": "modules/ext/shell.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "unset <var> — Remove a shell variable", + "builtin": false, + "example": "unset" + }, + "untar": { + "module": "cryptogzip", + "file": "modules/ext/cryptogzip.js", + "tier": "ext-auto", + "category": "system", + "desc": "untar <path.tar[.gz]> [dest-dir] — Extract a tar archive into VFS (auto-detects gzip)", + "builtin": false, + "example": "untar" + }, + "upload": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "upload — Upload a file from your device", + "builtin": false, + "example": "upload" + }, + "uptime": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "uptime — Show time since page load + last save time", + "builtin": false, + "example": "uptime" + }, + "usage": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "usage — command from terminal", + "builtin": true, + "example": "usage" + }, + "vaultmind-connect": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "vaultmind-connect [testnet|mainnet] — Connect VaultMind wallet using hyperliquid_key from SecretVault", + "builtin": false, + "example": "vaultmind-connect" + }, + "vaultmind-query": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "vaultmind-query <prices|portfolio|transactions|copy-trade|chat> [message] — Query VaultMind API", + "builtin": false, + "example": "vaultmind-query" + }, + "vaultmind-status": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "vaultmind-status — Check VaultMind session status", + "builtin": false, + "example": "vaultmind-status" + }, + "version": { + "module": "module-system", + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "category": "system", + "desc": "version — Show version, build date, and cache key", + "builtin": false, + "example": "version" + }, + "vfs": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "vfs — command from terminal", + "builtin": true, + "example": "vfs" + }, + "vfs-clean": { + "module": "terminal", + "file": "modules/core/terminal.js", + "tier": "core-bundle", + "category": "system", + "desc": "vfs-clean — command from terminal", + "builtin": true, + "example": "vfs-clean" + }, + "vfs-export": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "vfs-export — Export the entire virtual filesystem as JSON", + "builtin": false, + "example": "vfs-export" + }, + "vfs-import": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "vfs-import — Import a previously exported VFS JSON file", + "builtin": false, + "example": "vfs-import" + }, + "vfs-size": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "vfs-size — command from module-fs", + "builtin": false, + "example": "vfs-size" + }, + "videos": { + "module": "module-searxng", + "file": "modules/core/module-searxng.js", + "tier": "core-bundle", + "category": "web", + "desc": "videos <query> — Search for videos", + "builtin": false, + "example": "videos" + }, + "voice": { + "module": "voice", + "file": "modules/ext/voice.js", + "tier": "ext-auto", + "category": "ui", + "desc": "voice [stop] — Start voice recording (Whisper STT), or type \"voice stop\" to cancel", + "builtin": false, + "example": "voice" + }, + "wallet-lookup": { + "module": "module-aiassist", + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "category": "ai", + "desc": "wallet-lookup <address> — Look up Hyperliquid wallet summary", + "builtin": false, + "example": "wallet-lookup" + }, + "wc": { + "module": "module-fs", + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "category": "filesystem", + "desc": "wc <file> — Count lines, words, and bytes", + "builtin": false, + "example": "wc" + }, + "webdav-backup": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "Backup entire VFS to WebDAV as a dated JSON snapshot", + "builtin": false, + "example": "webdav-backup" + }, + "webdav-backup-list": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "List available backup files on WebDAV", + "builtin": false, + "example": "webdav-backup-list" + }, + "webdav-browser": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "webdav-browser [path] — Modern WebDAV file-tree browser with bulk operations", + "builtin": false, + "example": "webdav-browser" + }, + "webdav-config": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "webdav-config [url user pass] — Configure WebDAV. No args = auto-detect from current page URL", + "builtin": false, + "example": "webdav-config" + }, + "webdav-login": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "webdav-login [username] [password] — Open the login panel (Telegram or password) in THIS browser and configure WebDAV", + "builtin": false, + "example": "webdav-login" + }, + "webdav-ls": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "List files/directories on the WebDAV remote", + "builtin": false, + "example": "webdav-ls" + }, + "webdav-mkdir": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "webdav-mkdir <path> — Create a remote directory", + "builtin": false, + "example": "webdav-mkdir" + }, + "webdav-move": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "webdav-move <old> <new> — Alias for webdav-rename", + "builtin": false, + "example": "webdav-move" + }, + "webdav-pull": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "Download a WebDAV file to VFS", + "builtin": false, + "example": "webdav-pull" + }, + "webdav-push": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "Upload a VFS file to WebDAV", + "builtin": false, + "example": "webdav-push" + }, + "webdav-rename": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "webdav-rename <old> <new> — Rename or move a remote file/dir", + "builtin": false, + "example": "webdav-rename" + }, + "webdav-restore": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "Restore VFS from a WebDAV backup file", + "builtin": false, + "example": "webdav-restore" + }, + "webdav-rm": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "webdav-rm <path> — Delete a remote file or directory", + "builtin": false, + "example": "webdav-rm" + }, + "webdav-status": { + "module": "webdav", + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "category": "cloud", + "desc": "Show current WebDAV configuration status", + "builtin": false, + "example": "webdav-status" + }, + "webx": { + "module": "module-aiasm", + "file": "modules/core/module-aiasm.js", + "tier": "core-bundle", + "category": "general", + "desc": "webx <question> — Alias for webxai", + "builtin": false, + "example": "webx" + }, + "webxai": { + "module": "module-aiasm", + "file": "modules/core/module-aiasm.js", + "tier": "core-bundle", + "category": "general", + "desc": "webxai <question> — Send a question to the AI assistant", + "builtin": false, + "example": "webxai" + }, + "wget": { + "module": "cryptogzip", + "file": "modules/ext/cryptogzip.js", + "tier": "ext-auto", + "category": "system", + "desc": "wget <url> [filename] — Download a URL and save to VFS", + "builtin": false, + "example": "wget" + }, + "which": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "which <name> — Locate a command in the module registry", + "builtin": false, + "example": "which" + }, + "whoami": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "whoami — Show current user name", + "builtin": false, + "example": "whoami" + }, + "world-model": { + "module": "module-world-model", + "file": "modules/core/module-world-model.js", + "tier": "core-bundle", + "category": "ai", + "desc": "world-model — Show full world model as structured output", + "builtin": false, + "example": "world-model" + }, + "world-model-ask": { + "module": "module-world-model", + "file": "modules/core/module-world-model.js", + "tier": "core-bundle", + "category": "ai", + "desc": "world-model-ask <question> — Query the model (e.g. \"what changed since yesterday\")", + "builtin": false, + "example": "world-model-ask" + }, + "world-model-config": { + "module": "module-world-model", + "file": "modules/core/module-world-model.js", + "tier": "core-bundle", + "category": "ai", + "desc": "world-model-config <key> <value> — Tune: refresh-interval, max-projects", + "builtin": false, + "example": "world-model-config" + }, + "world-model-refresh": { + "module": "module-world-model", + "file": "modules/core/module-world-model.js", + "tier": "core-bundle", + "category": "ai", + "desc": "world-model-refresh — Force re-synthesis from all subsystems", + "builtin": false, + "example": "world-model-refresh" + }, + "world-model-summary": { + "module": "module-world-model", + "file": "modules/core/module-world-model.js", + "tier": "core-bundle", + "category": "ai", + "desc": "world-model-summary — One-line system self-awareness statement", + "builtin": false, + "example": "world-model-summary" + }, + "wpm": { + "module": "wpm", + "file": "modules/ext/wpm.js", + "tier": "ext-auto", + "category": "system", + "desc": "wpm <install|list|search|update|remove|info> [...] — Web Package Manager for installing and managing modules", + "builtin": false, + "example": "wpm" + }, + "wx": { + "module": "module-aiasm", + "file": "modules/core/module-aiasm.js", + "tier": "core-bundle", + "category": "general", + "desc": "wx <question> — Alias for webxai", + "builtin": false, + "example": "wx" + }, + "yes": { + "module": "busybox", + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "category": "shell", + "desc": "yes [string] — Output repeated string (default \"y\", capped at 50)", + "builtin": false, + "example": "yes" + } + }, + "modules": { + "alias": { + "file": "modules/ext/alias.js", + "tier": "critical-ext-bundle", + "commands": [ + "alias", + "unalias" + ], + "lines": 119 + }, + "busybox": { + "file": "modules/ext/busybox.js", + "tier": "critical-ext-bundle", + "commands": [ + "base64", + "basename", + "cal", + "cut", + "date", + "dirname", + "env", + "expand", + "hostname", + "printf", + "seq", + "sleep", + "uniq", + "which", + "whoami", + "yes" + ], + "lines": 415 + }, + "calc": { + "file": "modules/ext/calc.js", + "tier": "ext-auto", + "commands": [ + "calc" + ], + "lines": 107 + }, + "console": { + "file": "modules/ext/console.js", + "tier": "ext-auto", + "commands": [ + "js", + "js-run", + "node" + ], + "lines": 96 + }, + "cron": { + "file": "modules/ext/cron.js", + "tier": "ext-auto", + "commands": [ + "cron-clear", + "cron-every", + "cron-list", + "cron-stop" + ], + "lines": 111 + }, + "cryptogzip": { + "file": "modules/ext/cryptogzip.js", + "tier": "ext-auto", + "commands": [ + "decrypt", + "encrypt", + "gunzip", + "gzip", + "tar", + "untar", + "wget" + ], + "lines": 599 + }, + "debug-panel": { + "file": "modules/ext/debug-panel.js", + "tier": "ext-auto", + "commands": [ + "debug" + ], + "lines": 167 + }, + "diff": { + "file": "modules/ext/diff.js", + "tier": "critical-ext-bundle", + "commands": [ + "diff" + ], + "lines": 288 + }, + "editor": { + "file": "modules/ext/editor.js", + "tier": "critical-ext-bundle", + "commands": [ + "edit" + ], + "lines": 133 + }, + "filemgr": { + "file": "modules/ext/filemgr.js", + "tier": "critical-ext-bundle", + "commands": [ + "files", + "preview" + ], + "lines": 987 + }, + "finder": { + "file": "modules/ext/finder.js", + "tier": "critical-ext-bundle", + "commands": [ + "find" + ], + "lines": 48 + }, + "floating": { + "file": "modules/ext/floating.js", + "tier": "ext-auto", + "commands": [ + "floating-add", + "floating-clear", + "floating-list", + "floating-pos", + "floating-remove", + "floating-toggle" + ], + "lines": 444 + }, + "kanban": { + "file": "modules/ext/kanban.js", + "tier": "ext-auto", + "commands": [ + "kanban" + ], + "lines": 191 + }, + "media": { + "file": "modules/ext/media.js", + "tier": "ext-auto", + "commands": [ + "analyze" + ], + "lines": 508 + }, + "mindmap": { + "file": "modules/ext/mindmap.js", + "tier": "ext-auto", + "commands": [ + "mindmap" + ], + "lines": 1191 + }, + "module-agent-registry": { + "file": "modules/core/module-agent-registry.js", + "tier": "core-bundle", + "commands": [ + "a2a-ack", + "a2a-poll", + "a2a-post", + "a2a-prune", + "a2a-reject", + "a2a-status", + "agent-list", + "agent-register", + "agent-status", + "agent-unregister", + "contract-list", + "contract-register" + ], + "lines": 474 + }, + "module-aiasm": { + "file": "modules/core/module-aiasm.js", + "tier": "core-bundle", + "commands": [ + "webx", + "webxai", + "wx" + ], + "lines": 27 + }, + "module-aiassist": { + "file": "modules/core/module-aiassist.js", + "tier": "core-bundle", + "commands": [ + "agent-loops", + "ai", + "ai-allow", + "ai-clear", + "ai-compress", + "ai-config", + "ai-context", + "ai-deny", + "ai-ignore", + "ai-model", + "ai-stop", + "ai-system", + "archive-list", + "archive-read", + "ask", + "bench", + "bench-compare", + "commit-approve", + "commit-deny", + "commit-status", + "debug", + "debug-ai", + "debug-ai-last", + "debug-ai-log", + "debug-ai-send", + "guardrail", + "guardrail-add", + "guardrail-remove", + "mem-debug", + "reset-mem", + "shadow", + "shadow-commit", + "shadow-rollback", + "vaultmind-connect", + "vaultmind-query", + "vaultmind-status", + "wallet-lookup" + ], + "lines": 4376 + }, + "module-chatstudio": { + "file": "modules/core/module-chatstudio.js", + "tier": "core-bundle", + "commands": [ + "chat" + ], + "lines": 1138 + }, + "module-config": { + "file": "modules/core/module-config.js", + "tier": "core-bundle", + "commands": [ + "config", + "config-delete", + "config-export", + "config-list", + "config-reset", + "config-set" + ], + "lines": 93 + }, + "module-debug-supervisor": { + "file": "modules/core/module-debug-supervisor.js", + "tier": "core-bundle", + "commands": [ + "debug-analyze", + "debug-fix", + "debug-health", + "debug-history", + "debug-stats", + "debug-sync", + "debug-sync-url", + "debug-trends" + ], + "lines": 835 + }, + "module-fetcher": { + "file": "modules/core/module-fetcher.js", + "tier": "core-bundle", + "commands": [ + "extract", + "fetch" + ], + "lines": 116 + }, + "module-fs": { + "file": "modules/core/module-fs.js", + "tier": "core-bundle", + "commands": [ + "cat", + "cd", + "cp", + "download", + "du", + "echo", + "empty-trash", + "find", + "grep", + "head", + "ls", + "ls-trash", + "mkdir", + "mv", + "put", + "pwd", + "rm", + "rmdir", + "sed", + "session-delete", + "session-export", + "session-import", + "session-list", + "session-load", + "session-new", + "session-save", + "sort", + "tail", + "touch", + "trash", + "trash-dir", + "tree", + "upload", + "vfs-export", + "vfs-import", + "vfs-size", + "wc" + ], + "lines": 750 + }, + "module-leases": { + "file": "modules/core/module-leases.js", + "tier": "core-bundle", + "commands": [ + "lease-create", + "lease-list", + "lease-renew", + "lease-revoke" + ], + "lines": 138 + }, + "module-memory-graph": { + "file": "modules/core/module-memory-graph.js", + "tier": "core-bundle", + "commands": [ + "memgraph-agent", + "memgraph-decay-config", + "memgraph-export", + "memgraph-learn", + "memgraph-prune", + "memgraph-search", + "memgraph-session", + "memgraph-stats", + "memgraph-status" + ], + "lines": 663 + }, + "module-modmgr": { + "file": "modules/core/module-modmgr.js", + "tier": "core-bundle", + "commands": [ + "listmods", + "loadmod", + "module-disable", + "module-enable", + "module-info", + "module-list", + "module-load", + "module-reload", + "module-reset", + "module-stats", + "module-unload", + "modules", + "modules-list", + "removemod" + ], + "lines": 393 + }, + "module-neural-vfs": { + "file": "modules/core/module-neural-vfs.js", + "tier": "core-bundle", + "commands": [ + "nvfs-alias", + "nvfs-cancel", + "nvfs-config", + "nvfs-index", + "nvfs-index-graph", + "nvfs-resolve", + "nvfs-save", + "nvfs-status", + "nvfs-sync", + "nvfs-tree" + ], + "lines": 1108 + }, + "module-ollama": { + "file": "modules/core/module-ollama.js", + "tier": "core-bundle", + "commands": [ + "ai", + "ask", + "model-delete", + "model-info", + "model-pull", + "model-run", + "models", + "ollama", + "ollamaconnect", + "ollamadisconnect", + "ollamamodels", + "ollamasetmodel", + "ollamasetproxy" + ], + "lines": 130 + }, + "module-orchestrator": { + "file": "modules/core/module-orchestrator.js", + "tier": "core-bundle", + "commands": [ + "a2a-list", + "a2a-send", + "consensus", + "consensus-history", + "consensus-status", + "orchestrate", + "orchestrate-decompose", + "orchestrate-parallel", + "orchestrate-result", + "orchestrator-config", + "orchestrator-kill", + "orchestrator-list", + "orchestrator-purge", + "orchestrator-restart-policy", + "orchestrator-schedule", + "orchestrator-schedules", + "orchestrator-sleep", + "orchestrator-spawn", + "orchestrator-status", + "orchestrator-unschedule", + "orchestrator-wake", + "pipeline" + ], + "lines": 1380 + }, + "module-predictor": { + "file": "modules/core/module-predictor.js", + "tier": "core-bundle", + "commands": [ + "predict", + "predictor-config", + "predictor-status" + ], + "lines": 282 + }, + "module-sandbox": { + "file": "modules/core/module-sandbox.js", + "tier": "core-bundle", + "commands": [ + "sandbox-config", + "sandbox-run", + "sandbox-status" + ], + "lines": 372 + }, + "module-searxng": { + "file": "modules/core/module-searxng.js", + "tier": "core-bundle", + "commands": [ + "images", + "s", + "search", + "videos" + ], + "lines": 116 + }, + "module-servermon": { + "file": "modules/core/module-servermon.js", + "tier": "core-bundle", + "commands": [ + "monitor", + "server", + "server-check", + "server-remove", + "servers", + "system-health", + "test-net" + ], + "lines": 252 + }, + "module-simplegui": { + "file": "modules/core/module-simplegui.js", + "tier": "core-bundle", + "commands": [ + "gui", + "gui-button", + "gui-clear", + "gui-input", + "gui-run", + "gui-text" + ], + "lines": 78 + }, + "module-smartctx": { + "file": "modules/core/module-smartctx.js", + "tier": "core-bundle", + "commands": [ + "context", + "context-auto", + "context-delete", + "context-new", + "contexts", + "smart-ask" + ], + "lines": 285 + }, + "module-system": { + "file": "modules/core/module-system.js", + "tier": "core-bundle", + "commands": [ + "bug-report", + "checkpoint", + "checkpoint-del", + "checkpoint-list", + "doctor", + "echo", + "errors", + "factory-reset", + "factory-reset-old", + "font-size", + "health-check", + "help", + "logrotate", + "logs", + "mem", + "memory-map-export", + "preview", + "reset", + "reset-vfs", + "rollback", + "setfont", + "status", + "uptime", + "version" + ], + "lines": 762 + }, + "module-world-model": { + "file": "modules/core/module-world-model.js", + "tier": "core-bundle", + "commands": [ + "world-model", + "world-model-ask", + "world-model-config", + "world-model-refresh", + "world-model-summary" + ], + "lines": 502 + }, + "secret-vault": { + "file": "modules/core/secret-vault.js", + "tier": "core-bundle", + "commands": [ + "secret-del", + "secret-get", + "secret-list", + "secret-lock", + "secret-set", + "secret-setpin", + "secret-status", + "secret-unlock" + ], + "lines": 442 + }, + "shell": { + "file": "modules/ext/shell.js", + "tier": "critical-ext-bundle", + "commands": [ + "export", + "script", + "set", + "sh", + "unset" + ], + "lines": 627 + }, + "skill-pack-core": { + "file": "modules/ext/skill-pack-core.js", + "tier": "ext-auto", + "commands": [ + "learn-skill", + "skill-audit", + "skill-create", + "skill-delete", + "skill-export", + "skill-import", + "skill-list", + "skill-pack-core", + "skill-patch", + "skill-restore", + "skill-sync", + "skill-validate", + "skill-view", + "skill-webdav-sync" + ], + "lines": 1150 + }, + "theme": { + "file": "modules/ext/theme.js", + "tier": "ext-auto", + "commands": [ + "theme" + ], + "lines": 173 + }, + "three": { + "file": "modules/ext/three.js", + "tier": "ext-auto", + "commands": [ + "three" + ], + "lines": 2426 + }, + "tutorial": { + "file": "modules/ext/tutorial.js", + "tier": "ext-auto", + "commands": [ + "tutorial" + ], + "lines": 283 + }, + "voice": { + "file": "modules/ext/voice.js", + "tier": "ext-auto", + "commands": [ + "speak", + "voice" + ], + "lines": 306 + }, + "webdav": { + "file": "modules/ext/webdav.js", + "tier": "ext-auto", + "commands": [ + "webdav-backup", + "webdav-backup-list", + "webdav-browser", + "webdav-config", + "webdav-login", + "webdav-ls", + "webdav-mkdir", + "webdav-move", + "webdav-pull", + "webdav-push", + "webdav-rename", + "webdav-restore", + "webdav-rm", + "webdav-status" + ], + "lines": 2346 + }, + "wpm": { + "file": "modules/ext/wpm.js", + "tier": "ext-auto", + "commands": [ + "wpm" + ], + "lines": 190 + } + }, + "coverage": { + "commands": 344, + "described": 344, + "modules": 46, + "tiers": { + "core-bundle": 257, + "critical-ext-bundle": 28, + "ext-auto": 59, + "ext-manual": 0 + } + } +}
\ No newline at end of file diff --git a/course/changelog.jsonl b/course/changelog.jsonl new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/course/changelog.jsonl diff --git a/course/chapters/01-orientation.json b/course/chapters/01-orientation.json new file mode 100644 index 0000000..165e140 --- /dev/null +++ b/course/chapters/01-orientation.json @@ -0,0 +1,132 @@ +{ + "id": "01-orientation", + "title": "Orientation — what newOS4 is", + "icon": "🚀", + "level": "beginner", + "lessons": [ + { + "id": "1.1", + "title": "A terminal in your browser", + "objective": "Understand what newOS4 is and run your first three commands.", + "minutes": 6, + "commands": [ + "help", + "status", + "ls" + ], + "blocks": [ + { + "type": "text", + "text": "newOS4 is a terminal-centric browser OS. Every command runs in your tab, files live in a virtual filesystem (VFS), and modules add commands at runtime." + }, + { + "type": "cmd", + "text": "help" + }, + { + "type": "text", + "text": "`help` lists every registered command grouped by the module that owns it." + }, + { + "type": "cmd", + "text": "status" + }, + { + "type": "cmd", + "text": "ls" + }, + { + "type": "tip", + "text": "The VFS survives reloads. Create a file with `touch notes.txt`, then run `ls`." + } + ], + "exercise": { + "instruction": "Run `status` and read the loaded-modules line.", + "accept": [ + "status" + ], + "check": { + "type": "command" + }, + "hint": "Type: status" + }, + "quiz": { + "q": "Where do files live in newOS4?", + "options": [ + "On the web server", + "In the browser VFS", + "In a SQL database" + ], + "answer": 1 + }, + "sources": [ + "modules/core/terminal.js", + "modules/core/virtual-fs.js" + ] + }, + { + "id": "1.2", + "title": "Finding your way around", + "objective": "Navigate the virtual filesystem and create your first file.", + "minutes": 8, + "commands": [ + "pwd", + "cd", + "tree", + "cat", + "touch" + ], + "blocks": [ + { + "type": "text", + "text": "The VFS is a tree rooted at `/`. `pwd` prints where you are, `cd` moves, `tree` shows the branch, `cat` prints a file." + }, + { + "type": "cmd", + "text": "pwd" + }, + { + "type": "cmd", + "text": "tree" + }, + { + "type": "warn", + "text": "`echo \"text\" > file` is NOT supported by the VFS. Use `touch`, the editor (`edit <file>`), or `webx11.fs.writeFile()` in the console." + }, + { + "type": "cmd", + "text": "touch hello.txt" + }, + { + "type": "cmd", + "text": "ls" + } + ], + "exercise": { + "instruction": "From the root, create `hello.txt` and list it.", + "accept": [ + "touch hello.txt", + "ls" + ], + "check": { + "type": "file", + "path": "/hello.txt" + }, + "hint": "Type: touch hello.txt — then ls" + }, + "quiz": { + "q": "Which command prints the current directory?", + "options": [ + "ls", + "pwd", + "cd" + ], + "answer": 1 + }, + "sources": [ + "modules/core/module-fs.js", + "modules/core/virtual-fs.js" + ] + } + ] +}
\ No newline at end of file diff --git a/course/chapters/02-architecture.json b/course/chapters/02-architecture.json new file mode 100644 index 0000000..7dee513 --- /dev/null +++ b/course/chapters/02-architecture.json @@ -0,0 +1,131 @@ +{ + "id": "02-architecture", + "title": "Architecture without the mystery", + "icon": "🏗", + "level": "beginner", + "lessons": [ + { + "id": "2.1", + "title": "Terminal, modules, commands", + "objective": "See how the terminal, module manager and command registry fit together.", + "minutes": 9, + "commands": [ + "modules", + "status", + "help" + ], + "blocks": [ + { + "type": "text", + "text": "`terminal.js` parses input and dispatches a command to the module that registered it. Each module owns a `commands` map and contributes help strings." + }, + { + "type": "cmd", + "text": "modules" + }, + { + "type": "text", + "text": "The module manager lists every loaded module and its command count." + }, + { + "type": "cmd", + "text": "status" + }, + { + "type": "text", + "text": "`status` shows files, modules and network state in one place." + }, + { + "type": "cmd", + "text": "check" + }, + { + "type": "tip", + "text": "A command that exists in `help` but fails at runtime usually has an unmet module requirement that `check` reports." + } + ], + "exercise": { + "instruction": "List the loaded modules.", + "accept": [ + "modules", + "status" + ], + "check": { + "type": "command" + }, + "hint": "Type: modules" + }, + "quiz": { + "q": "Who executes a command after you press Enter?", + "options": [ + "nginx", + "the module that registered it", + "the browser cache" + ], + "answer": 1 + }, + "sources": [ + "modules/core/terminal.js", + "modules/core/module-manager.js", + "modules/core/module-system.js" + ] + }, + { + "id": "2.2", + "title": "VFS and the three loading tiers", + "objective": "Understand where files live and why a module edit sometimes needs a rebuild and sometimes does not.", + "minutes": 10, + "commands": [ + "status", + "help", + "load-local" + ], + "blocks": [ + { + "type": "text", + "text": "Files live in `virtual-fs.js` (in-memory + localStorage persistence). Directories are nodes; `readFile()` returns `null` for a missing path." + }, + { + "type": "text", + "text": "Modules ship in three tiers:" + }, + { + "type": "table", + "text": "core-bundle.js — core modules (requires rebuild) | critical-ext-bundle.js — editor, shell, alias, finder, filemgr, diff, busybox (requires rebuild) | individually loaded ext modules — cache-busted by LATEST_VER (no rebuild)" + }, + { + "type": "cmd", + "text": "status" + }, + { + "type": "warn", + "text": "Individually loaded modules are cached with `?v=<webx11_cache_ver>`. Without bumping `LATEST_VER`, users keep the old file." + } + ], + "exercise": { + "instruction": "Run `status` and find the VFS size line.", + "accept": [ + "status" + ], + "check": { + "type": "command" + }, + "hint": "Type: status" + }, + "quiz": { + "q": "Which tier needs `rebuild-bundles.py` after an edit?", + "options": [ + "core-bundle.js", + "webdav.js", + "course.js" + ], + "answer": 0 + }, + "sources": [ + "modules/core/virtual-fs.js", + "modules/core/module-loader.js", + "scripts/rebuild-bundles.py" + ] + } + ] +}
\ No newline at end of file diff --git a/course/chapters/03-commands.json b/course/chapters/03-commands.json new file mode 100644 index 0000000..10807cb --- /dev/null +++ b/course/chapters/03-commands.json @@ -0,0 +1,119 @@ +{ + "id": "03-commands", + "title": "Command mastery", + "icon": "⌨", + "level": "beginner", + "lessons": [ + { + "id": "3.1", + "title": "Find any command fast", + "objective": "Use help, commands and check to discover what exists before guessing.", + "minutes": 7, + "commands": [ + "help", + "status" + ], + "blocks": [ + { + "type": "text", + "text": "`help` groups all 344 commands by the module that owns them." + }, + { + "type": "cmd", + "text": "help" + }, + { + "type": "cmd", + "text": "help webdav-push" + }, + { + "type": "tip", + "text": "`check` shows module requirements — the fastest way to explain a command that is listed but not working." + } + ], + "exercise": { + "instruction": "Open the help for `webdav-push`.", + "accept": [ + "help webdav-push" + ], + "check": { + "type": "command" + }, + "hint": "Type: help webdav-push" + }, + "quiz": { + "q": "Which command shows usage for one command?", + "options": [ + "help <cmd>", + "status", + "ls" + ], + "answer": 0 + }, + "sources": [ + "modules/core/module-system.js", + "modules/core/module-manager.js" + ] + }, + { + "id": "3.2", + "title": "Pipes, grep, sed, tail", + "objective": "Combine commands and understand the two semantics that bite: per-line sed and tail -f deltas.", + "minutes": 12, + "commands": [ + "grep", + "sed", + "tail", + "sort", + "head" + ], + "blocks": [ + { + "type": "text", + "text": "Pipes feed one command into the next. `grep` filters lines, `sed` substitutes text, `tail` prints the end of a file." + }, + { + "type": "cmd", + "text": "ls | grep txt" + }, + { + "type": "warn", + "text": "`sed s/x/y/` substitutes the first match per LINE, not per file. `sed -i` is flagged destructive and needs confirmation." + }, + { + "type": "text", + "text": "`tail -f` is interactive and stops with Ctrl+C. AI-initiated commands get a bounded read instead." + }, + { + "type": "cmd", + "text": "tail hello.txt" + } + ], + "exercise": { + "instruction": "Search the current listing for `txt`.", + "accept": [ + "ls | grep txt", + "grep txt" + ], + "check": { + "type": "command" + }, + "hint": "Type: ls | grep txt" + }, + "quiz": { + "q": "`sed s/a/b/` replaces…", + "options": [ + "every match in the file", + "the first match on each line", + "only the last line" + ], + "answer": 1 + }, + "sources": [ + "modules/core/module-fs.js", + "modules/ext/shell.js", + "modules/core/terminal.js" + ] + } + ] +}
\ No newline at end of file diff --git a/course/chapters/04-ai.json b/course/chapters/04-ai.json new file mode 100644 index 0000000..3552c53 --- /dev/null +++ b/course/chapters/04-ai.json @@ -0,0 +1,128 @@ +{ + "id": "04-ai", + "title": "The AI assistant", + "icon": "🤖", + "level": "intermediate", + "lessons": [ + { + "id": "4.1", + "title": "Ask, and let it use tools", + "objective": "Use the AI assistant and understand the confirmation boundary.", + "minutes": 9, + "commands": [ + "ai", + "ask", + "ai-config", + "ai-model" + ], + "blocks": [ + { + "type": "text", + "text": "`ai` and `ask` open the tool-calling assistant. It can read files, run safe commands and search the web." + }, + { + "type": "cmd", + "text": "ai what can you do?" + }, + { + "type": "text", + "text": "Destructive actions (writes, `sed -i`, deletes) require confirmation. AI-initiated commands run with a loop guard so they cannot recurse." + }, + { + "type": "cmd", + "text": "ai-model" + }, + { + "type": "cmd", + "text": "ai-config" + } + ], + "exercise": { + "instruction": "Ask the AI a short question.", + "accept": [ + "ai *", + "ask *" + ], + "check": { + "type": "command" + }, + "hint": "Type: ai \"hello\"" + }, + "quiz": { + "q": "What happens when the AI wants a destructive command?", + "options": [ + "runs silently", + "asks for confirmation", + "restarts the terminal" + ], + "answer": 1 + }, + "sources": [ + "modules/core/module-aiassist.js", + "modules/core/ollama-manager.js" + ] + }, + { + "id": "4.2", + "title": "Context, memory and skills", + "objective": "Inspect and clear context, then browse the skill library the AI retrieves from.", + "minutes": 8, + "commands": [ + "ai-context", + "ai-clear", + "skill-list", + "skill-validate", + "learn-skill" + ], + "blocks": [ + { + "type": "text", + "text": "The assistant keeps recent context. `ai-context` shows it; `ai-clear` resets it without touching your files." + }, + { + "type": "cmd", + "text": "ai-context" + }, + { + "type": "cmd", + "text": "skill-list" + }, + { + "type": "text", + "text": "Skills are markdown entries in `/skills/` indexed by `/skills/index.json`; `load_skills` retrieves them by query." + }, + { + "type": "cmd", + "text": "skill-validate course-01-orientation" + }, + { + "type": "tip", + "text": "This course installs its chapters as `course-*` skills, so the AI can teach what you are reading." + } + ], + "exercise": { + "instruction": "List the installed skills.", + "accept": [ + "skill-list" + ], + "check": { + "type": "command" + }, + "hint": "Type: skill-list" + }, + "quiz": { + "q": "Where does the skill index live?", + "options": [ + "/skills/index.json", + "/etc/skills", + "localStorage only" + ], + "answer": 0 + }, + "sources": [ + "modules/ext/skill-pack-core.js", + "modules/core/module-aiassist.js" + ] + } + ] +}
\ No newline at end of file diff --git a/course/chapters/05-modules.json b/course/chapters/05-modules.json new file mode 100644 index 0000000..4b68f42 --- /dev/null +++ b/course/chapters/05-modules.json @@ -0,0 +1,115 @@ +{ + "id": "05-modules", + "title": "Modules & packages", + "icon": "🧩", + "level": "intermediate", + "lessons": [ + { + "id": "5.1", + "title": "Browse and install modules", + "objective": "See what is loaded and install from the WebX11 package index.", + "minutes": 8, + "commands": [ + "modules", + "wpm", + "load-local" + ], + "blocks": [ + { + "type": "text", + "text": "`wpm` is the package manager for terminal modules: list the index, install a module from `packages.json` or a URL." + }, + { + "type": "cmd", + "text": "wpm list" + }, + { + "type": "cmd", + "text": "modules" + }, + { + "type": "text", + "text": "Every ext module in the default build auto-loads. There is no separate “needs loadmod” tier." + }, + { + "type": "cmd", + "text": "load-local modules/ext/calc.js" + } + ], + "exercise": { + "instruction": "List available packages.", + "accept": [ + "wpm list" + ], + "check": { + "type": "command" + }, + "hint": "Type: wpm list" + }, + "quiz": { + "q": "What does wpm install?", + "options": [ + "terminal modules", + "system packages", + "browser extensions" + ], + "answer": 0 + }, + "sources": [ + "modules/ext/wpm.js", + "packages.json", + "modules/core/module-loader.js" + ] + }, + { + "id": "5.2", + "title": "Module anatomy (a complete mini module)", + "objective": "Read the contract every module follows: class, commands map, help info, registration.", + "minutes": 12, + "commands": [ + "load-local" + ], + "blocks": [ + { + "type": "text", + "text": "A module is a class with `commands`, `registerCommands()`, `getHelpInfo()` and optionally `init(terminal)`. The module manager injects `terminal` before calling `registerCommands()`." + }, + { + "type": "code", + "text": "class HelloModule {\n constructor(){ this.commands = {}; }\n getHelpInfo(){ return { hello: 'hello — print a greeting' }; }\n registerCommands(){ this.commands['hello'] = () => this.terminal.print('hello newOS4'); }\n}" + }, + { + "type": "tip", + "text": "Tier-3 modules register at the end with `webx11.moduleManager.registerModule(new HelloModule(), url)`." + }, + { + "type": "cmd", + "text": "modules" + } + ], + "exercise": { + "instruction": "Open the module list and find a module you have not used.", + "accept": [ + "modules" + ], + "check": { + "type": "command" + }, + "hint": "Type: modules" + }, + "quiz": { + "q": "What does the module manager inject before registerCommands()?", + "options": [ + "the terminal", + "the database", + "nothing" + ], + "answer": 0 + }, + "sources": [ + "modules/core/module-manager.js", + "modules/ext/kanban.js" + ] + } + ] +}
\ No newline at end of file diff --git a/course/chapters/06-files-cloud.json b/course/chapters/06-files-cloud.json new file mode 100644 index 0000000..697a5f5 --- /dev/null +++ b/course/chapters/06-files-cloud.json @@ -0,0 +1,132 @@ +{ + "id": "06-files-cloud", + "title": "Files, editor, WebDAV", + "icon": "☁", + "level": "intermediate", + "lessons": [ + { + "id": "6.1", + "title": "Edit and compare files", + "objective": "Use the editor and diff tools on the VFS.", + "minutes": 9, + "commands": [ + "edit", + "diff", + "find", + "files" + ], + "blocks": [ + { + "type": "text", + "text": "`edit` opens the VFS editor. `diff` compares two files. `find` searches names; `filemgr` opens the visual browser." + }, + { + "type": "cmd", + "text": "edit hello.txt" + }, + { + "type": "cmd", + "text": "find hello" + }, + { + "type": "cmd", + "text": "diff hello.txt hello.txt" + }, + { + "type": "tip", + "text": "The editor calls the tutorial/file-saved hook, so exercise progress can be detected from a save." + }, + { + "type": "cmd", + "text": "files" + } + ], + "exercise": { + "instruction": "Search for your file by name.", + "accept": [ + "find hello", + "find hello.txt" + ], + "check": { + "type": "command" + }, + "hint": "Type: find hello" + }, + "quiz": { + "q": "Which command opens the visual file manager?", + "options": [ + "filemgr", + "ls", + "cat" + ], + "answer": 0 + }, + "sources": [ + "modules/ext/editor.js", + "modules/ext/diff.js", + "modules/ext/filemgr.js" + ] + }, + { + "id": "6.2", + "title": "Cloud sync and login", + "objective": "Understand WebDAV auth, the space token, and the 401 self-heal path.", + "minutes": 14, + "commands": [ + "webdav-login", + "webdav-config", + "webdav-status", + "webdav-push", + "webdav-backup" + ], + "blocks": [ + { + "type": "text", + "text": "WebDAV syncs your VFS to your space. The module holds a SPACE token, not your personal token; it refreshes on 401." + }, + { + "type": "cmd", + "text": "webdav-status" + }, + { + "type": "cmd", + "text": "webdav-login" + }, + { + "type": "warn", + "text": "Sessions do not cross browser contexts. If a push 401s, run `webdav-login` in THIS browser, then retry." + }, + { + "type": "cmd", + "text": "webdav-push" + }, + { + "type": "cmd", + "text": "webdav-backup" + } + ], + "exercise": { + "instruction": "Check the WebDAV status.", + "accept": [ + "webdav-status" + ], + "check": { + "type": "command" + }, + "hint": "Type: webdav-status" + }, + "quiz": { + "q": "A 401 push usually means…", + "options": [ + "the file is too big", + "no session/token in this browser context", + "WebDAV is disabled" + ], + "answer": 1 + }, + "sources": [ + "modules/ext/webdav.js" + ] + } + ] +}
\ No newline at end of file diff --git a/course/chapters/07-automation.json b/course/chapters/07-automation.json new file mode 100644 index 0000000..3345fc2 --- /dev/null +++ b/course/chapters/07-automation.json @@ -0,0 +1,134 @@ +{ + "id": "07-automation", + "title": "Automation", + "icon": "⚙", + "level": "advanced", + "lessons": [ + { + "id": "7.1", + "title": "Schedule commands with cron", + "objective": "Run a command on an interval and manage the schedule.", + "minutes": 8, + "commands": [ + "cron-every", + "cron-list", + "cron-stop", + "cron-clear" + ], + "blocks": [ + { + "type": "text", + "text": "`cron-every` schedules a command inside the terminal (minimum 5 seconds). Jobs live only while the tab is open." + }, + { + "type": "cmd", + "text": "cron-every 60 echo hello" + }, + { + "type": "cmd", + "text": "cron-list" + }, + { + "type": "cmd", + "text": "cron-stop 1" + }, + { + "type": "cmd", + "text": "cron-clear" + }, + { + "type": "tip", + "text": "For server-side schedules use Hermes cron; the terminal scheduler is per-tab." + } + ], + "exercise": { + "instruction": "List active cron jobs.", + "accept": [ + "cron-list" + ], + "check": { + "type": "command" + }, + "hint": "Type: cron-list" + }, + "quiz": { + "q": "How long does a terminal cron job live?", + "options": [ + "forever on the server", + "while the tab is open", + "until reboot" + ], + "answer": 1 + }, + "sources": [ + "modules/ext/cron.js" + ] + }, + { + "id": "7.2", + "title": "Kanban and checkpoints", + "objective": "Track work on a board and snapshot the VFS before risky changes.", + "minutes": 8, + "commands": [ + "kanban", + "checkpoint", + "checkpoint-list", + "rollback" + ], + "blocks": [ + { + "type": "text", + "text": "`kanban` is a local board with todo/doing/done columns. `checkpoint` snapshots the VFS; `rollback` restores it." + }, + { + "type": "cmd", + "text": "kanban add \"Try the course\"" + }, + { + "type": "cmd", + "text": "kanban list" + }, + { + "type": "cmd", + "text": "checkpoint before-project" + }, + { + "type": "cmd", + "text": "checkpoint-list" + }, + { + "type": "cmd", + "text": "rollback before-project" + }, + { + "type": "warn", + "text": "`rollback` replaces current VFS state — checkpoint before experiments." + } + ], + "exercise": { + "instruction": "Create a checkpoint.", + "accept": [ + "checkpoint *", + "checkpoint" + ], + "check": { + "type": "command" + }, + "hint": "Type: checkpoint my-test" + }, + "quiz": { + "q": "What does checkpoint do?", + "options": [ + "snapshots the VFS", + "deletes files", + "pushes to WebDAV" + ], + "answer": 0 + }, + "sources": [ + "modules/ext/kanban.js", + "modules/core/module-fs.js" + ] + } + ] +}
\ No newline at end of file diff --git a/course/chapters/08-build.json b/course/chapters/08-build.json new file mode 100644 index 0000000..48a60bd --- /dev/null +++ b/course/chapters/08-build.json @@ -0,0 +1,117 @@ +{ + "id": "08-build", + "title": "Build & extend", + "icon": "🔧", + "level": "advanced", + "lessons": [ + { + "id": "8.1", + "title": "Add a command safely", + "objective": "Follow the edit → syntax → test → rebuild → version-bump loop.", + "minutes": 12, + "commands": [ + "load-local", + "status", + "help" + ], + "blocks": [ + { + "type": "text", + "text": "Edit the source, run `node --check`, run the relevant test harness, rebuild bundles for tiers 1–2, then bump BOTH `main.html` and `LATEST_VER`." + }, + { + "type": "cmd", + "text": "status" + }, + { + "type": "cmd", + "text": "help load-local" + }, + { + "type": "warn", + "text": "Editing a tier-3 module without bumping `LATEST_VER` means users keep the stale cached file indefinitely." + } + ], + "exercise": { + "instruction": "Run the built-in test suite.", + "accept": [ + "status" + ], + "check": { + "type": "command" + }, + "hint": "Type: test auto" + }, + "quiz": { + "q": "Which two places carry the version?", + "options": [ + "main.html and LATEST_VER", + "package.json only", + "localStorage" + ], + "answer": 0 + }, + "sources": [ + "scripts/rebuild-bundles.py", + "modules/core/module-loader.js" + ] + }, + { + "id": "8.2", + "title": "Debug and observe", + "objective": "Use the debug panel, console and health checks when something breaks.", + "minutes": 8, + "commands": [ + "debug", + "health-check", + "js" + ], + "blocks": [ + { + "type": "text", + "text": "`debug` toggles the runtime debug panel; `console` opens a JS console in the terminal; `health-check` audits VFS, modules, logs and skills." + }, + { + "type": "cmd", + "text": "health-check" + }, + { + "type": "cmd", + "text": "debug" + }, + { + "type": "tip", + "text": "Errors are posted to `/spaces/newos4/api/debug/ingest.php` and clustered in the debug dashboard." + }, + { + "type": "cmd", + "text": "js 1+1" + } + ], + "exercise": { + "instruction": "Run a health check.", + "accept": [ + "health-check" + ], + "check": { + "type": "command" + }, + "hint": "Type: health-check" + }, + "quiz": { + "q": "Where do runtime errors get ingested?", + "options": [ + "/api/debug/ingest.php", + "/dev/null", + "localStorage" + ], + "answer": 0 + }, + "sources": [ + "modules/ext/debug-panel.js", + "modules/core/module-debug-supervisor.js", + "api/debug/ingest.php" + ] + } + ] +}
\ No newline at end of file diff --git a/course/course.json b/course/course.json new file mode 100644 index 0000000..a355156 --- /dev/null +++ b/course/course.json @@ -0,0 +1,156 @@ +{ + "version": "2026.10.18.1", + "updated": "2026-10-18", + "chapters": [ + { + "id": "01-orientation", + "title": "Orientation — what newOS4 is", + "icon": "🚀", + "level": "beginner", + "lessons": [ + { + "id": "1.1", + "title": "A terminal in your browser", + "minutes": 6 + }, + { + "id": "1.2", + "title": "Finding your way around", + "minutes": 8 + } + ] + }, + { + "id": "02-architecture", + "title": "Architecture without the mystery", + "icon": "🏗", + "level": "beginner", + "lessons": [ + { + "id": "2.1", + "title": "Terminal, modules, commands", + "minutes": 9 + }, + { + "id": "2.2", + "title": "VFS and the three loading tiers", + "minutes": 10 + } + ] + }, + { + "id": "03-commands", + "title": "Command mastery", + "icon": "⌨", + "level": "beginner", + "lessons": [ + { + "id": "3.1", + "title": "Find any command fast", + "minutes": 7 + }, + { + "id": "3.2", + "title": "Pipes, grep, sed, tail", + "minutes": 12 + } + ] + }, + { + "id": "04-ai", + "title": "The AI assistant", + "icon": "🤖", + "level": "intermediate", + "lessons": [ + { + "id": "4.1", + "title": "Ask, and let it use tools", + "minutes": 9 + }, + { + "id": "4.2", + "title": "Context, memory and skills", + "minutes": 8 + } + ] + }, + { + "id": "05-modules", + "title": "Modules & packages", + "icon": "🧩", + "level": "intermediate", + "lessons": [ + { + "id": "5.1", + "title": "Browse and install modules", + "minutes": 8 + }, + { + "id": "5.2", + "title": "Module anatomy (a complete mini module)", + "minutes": 12 + } + ] + }, + { + "id": "06-files-cloud", + "title": "Files, editor, WebDAV", + "icon": "☁", + "level": "intermediate", + "lessons": [ + { + "id": "6.1", + "title": "Edit and compare files", + "minutes": 9 + }, + { + "id": "6.2", + "title": "Cloud sync and login", + "minutes": 14 + } + ] + }, + { + "id": "07-automation", + "title": "Automation", + "icon": "⚙", + "level": "advanced", + "lessons": [ + { + "id": "7.1", + "title": "Schedule commands with cron", + "minutes": 8 + }, + { + "id": "7.2", + "title": "Kanban and checkpoints", + "minutes": 8 + } + ] + }, + { + "id": "08-build", + "title": "Build & extend", + "icon": "🔧", + "level": "advanced", + "lessons": [ + { + "id": "8.1", + "title": "Add a command safely", + "minutes": 12 + }, + { + "id": "8.2", + "title": "Debug and observe", + "minutes": 8 + } + ] + } + ], + "projects": [ + "notes-bot", + "daily-digest", + "sync-backup" + ], + "feed": [] +}
\ No newline at end of file diff --git a/course/faq.json b/course/faq.json new file mode 100644 index 0000000..fc69ce2 --- /dev/null +++ b/course/faq.json @@ -0,0 +1,3 @@ +{ + "items": [] +}
\ No newline at end of file diff --git a/course/feed.json b/course/feed.json new file mode 100644 index 0000000..81aac99 --- /dev/null +++ b/course/feed.json @@ -0,0 +1,4 @@ +{ + "version": "2026-10-18", + "items": [] +}
\ No newline at end of file diff --git a/course/projects/daily-digest.json b/course/projects/daily-digest.json new file mode 100644 index 0000000..e78ad46 --- /dev/null +++ b/course/projects/daily-digest.json @@ -0,0 +1,38 @@ +{ + "id": "daily-digest", + "title": "Automated daily digest", + "level": "intermediate", + "minutes": 25, + "goal": "Schedule a repeating web fetch, save the result to a file, and inspect it.", + "lesson": "7.1", + "steps": [ + { + "instruction": "Fetch a page and confirm output", + "command": "fetch https://example.com", + "check": { + "type": "command" + } + }, + { + "instruction": "Schedule a 60s echo so you can see cron work", + "command": "cron-every 60 echo digest", + "check": { + "type": "command" + } + }, + { + "instruction": "List the schedule", + "command": "cron-list", + "check": { + "type": "command" + } + }, + { + "instruction": "Stop the job after one run", + "command": "cron-stop 1", + "check": { + "type": "command" + } + } + ] +}
\ No newline at end of file diff --git a/course/projects/notes-bot.json b/course/projects/notes-bot.json new file mode 100644 index 0000000..53f8230 --- /dev/null +++ b/course/projects/notes-bot.json @@ -0,0 +1,39 @@ +{ + "id": "notes-bot", + "title": "Personal notes with AI summaries", + "level": "beginner", + "minutes": 20, + "goal": "Create a notes folder, write a note, ask the AI to summarize it, and export it.", + "lesson": "1.2", + "steps": [ + { + "instruction": "Create the notes folder", + "command": "mkdir notes", + "check": { + "type": "command" + } + }, + { + "instruction": "Create a note file", + "command": "touch notes/today.txt", + "check": { + "type": "file", + "path": "/notes/today.txt" + } + }, + { + "instruction": "Open it in the editor and write 3 lines", + "command": "edit notes/today.txt", + "check": { + "type": "manual" + } + }, + { + "instruction": "Ask the AI to summarize the note", + "command": "ai summarize /notes/today.txt", + "check": { + "type": "manual" + } + } + ] +}
\ No newline at end of file diff --git a/course/projects/sync-backup.json b/course/projects/sync-backup.json new file mode 100644 index 0000000..20c950d --- /dev/null +++ b/course/projects/sync-backup.json @@ -0,0 +1,38 @@ +{ + "id": "sync-backup", + "title": "Cloud backup with WebDAV", + "level": "intermediate", + "minutes": 30, + "goal": "Log in, check the space, push the VFS, and create a restorable backup.", + "lesson": "6.2", + "steps": [ + { + "instruction": "Check the WebDAV state", + "command": "webdav-status", + "check": { + "type": "command" + } + }, + { + "instruction": "Log in inside THIS browser if a push 401s", + "command": "webdav-login", + "check": { + "type": "manual" + } + }, + { + "instruction": "Push the VFS", + "command": "webdav-push", + "check": { + "type": "manual" + } + }, + { + "instruction": "Create a backup", + "command": "webdav-backup", + "check": { + "type": "command" + } + } + ] +}
\ No newline at end of file |