diff options
| -rw-r--r-- | course/atlas.json | 73 | ||||
| -rw-r--r-- | course/changelog.jsonl | 2 | ||||
| -rw-r--r-- | course/faq.json | 2 | ||||
| -rw-r--r-- | course/feed.json | 50 | ||||
| -rw-r--r-- | modules-index.json | 12 | ||||
| -rw-r--r-- | scripts/course-daily-update.py | 19 |
6 files changed, 120 insertions, 38 deletions
diff --git a/course/atlas.json b/course/atlas.json index e1c6a4e..6d9aa53 100644 --- a/course/atlas.json +++ b/course/atlas.json @@ -1,6 +1,6 @@ { - "version": "2026-10-18T12:01:30Z", - "source_hash": "3295c562f4c4dd30", + "version": "2026-10-18T12:05:43Z", + "source_hash": "fbab8c7227cc4a6c", "commands": { "a2a-ack": { "module": "module-agent-registry", @@ -151,7 +151,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "ai-compress — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "ai-compress" }, @@ -241,7 +241,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "archive-list — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "archive-list" }, @@ -250,7 +250,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "archive-read — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "archive-read" }, @@ -412,7 +412,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "commit-approve — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "commit-approve" }, @@ -421,7 +421,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "commit-deny — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "commit-deny" }, @@ -430,7 +430,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "commit-status — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "commit-status" }, @@ -578,6 +578,15 @@ "builtin": false, "example": "contract-register" }, + "course": { + "module": "course", + "file": "modules/ext/course.js", + "tier": "ext-auto", + "category": "learning", + "desc": "course [start|list|next|open <id>|check|hint|progress|reset|ask <q>|project [id]|cmds [q]] — Interactive newOS4 course", + "builtin": false, + "example": "course" + }, "cp": { "module": "module-fs", "file": "modules/core/module-fs.js", @@ -673,7 +682,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "debug-ai-last — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "debug-ai-last" }, @@ -682,7 +691,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "debug-ai-log — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "debug-ai-log" }, @@ -691,7 +700,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "debug-ai-send — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "debug-ai-send" }, @@ -916,7 +925,7 @@ "file": "modules/core/module-system.js", "tier": "core-bundle", "category": "system", - "desc": "factory-reset-old — command from module-system", + "desc": "Extracted from newOS4 index.html — SystemModule", "builtin": false, "example": "factory-reset-old" }, @@ -1024,7 +1033,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "guardrail — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "guardrail" }, @@ -1033,7 +1042,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "guardrail-add — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "guardrail-add" }, @@ -1042,7 +1051,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "guardrail-remove — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "guardrail-remove" }, @@ -1231,7 +1240,7 @@ "file": "modules/core/module-leases.js", "tier": "core-bundle", "category": "agents", - "desc": "lease-renew — command from module-leases", + "desc": "module-leases.js — Lease system for agent task delegation", "builtin": false, "example": "lease-renew" }, @@ -1654,7 +1663,7 @@ "file": "modules/core/module-neural-vfs.js", "tier": "core-bundle", "category": "ai", - "desc": "nvfs-index-graph — command from module-neural-vfs", + "desc": "── Core Index Builder ──", "builtin": false, "example": "nvfs-index-graph" }, @@ -2284,7 +2293,7 @@ "file": "modules/core/module-fs.js", "tier": "core-bundle", "category": "filesystem", - "desc": "session-export — command from module-fs", + "desc": "Use trash for recursive dir removal too", "builtin": false, "example": "session-export" }, @@ -2293,7 +2302,7 @@ "file": "modules/core/module-fs.js", "tier": "core-bundle", "category": "filesystem", - "desc": "session-import — command from module-fs", + "desc": "Use trash for recursive dir removal too", "builtin": false, "example": "session-import" }, @@ -2365,7 +2374,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "shadow — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "shadow" }, @@ -2374,7 +2383,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "shadow-commit — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "shadow-commit" }, @@ -2383,7 +2392,7 @@ "file": "modules/core/module-aiassist.js", "tier": "core-bundle", "category": "ai", - "desc": "shadow-rollback — command from module-aiassist", + "desc": "Extracted from newOS4 index.html — WebX11AIAssistantModule (Full Agent Loop)", "builtin": false, "example": "shadow-rollback" }, @@ -2527,7 +2536,7 @@ "file": "modules/core/terminal.js", "tier": "core-bundle", "category": "system", - "desc": "Extracted from newOS4 index.html — SystemModule", + "desc": "smart-prompt — command from terminal", "builtin": true, "example": "smart-prompt" }, @@ -2815,7 +2824,7 @@ "file": "modules/core/module-fs.js", "tier": "core-bundle", "category": "filesystem", - "desc": "vfs-size — command from module-fs", + "desc": "Use trash for recursive dir removal too", "builtin": false, "example": "vfs-size" }, @@ -3150,6 +3159,14 @@ ], "lines": 96 }, + "course": { + "file": "modules/ext/course.js", + "tier": "ext-auto", + "commands": [ + "course" + ], + "lines": 324 + }, "cron": { "file": "modules/ext/cron.js", "tier": "ext-auto", @@ -3755,13 +3772,13 @@ } }, "coverage": { - "commands": 344, - "described": 344, - "modules": 46, + "commands": 345, + "described": 345, + "modules": 47, "tiers": { "core-bundle": 257, "critical-ext-bundle": 28, - "ext-auto": 59, + "ext-auto": 60, "ext-manual": 0 } } diff --git a/course/changelog.jsonl b/course/changelog.jsonl index e69de29..bfebf95 100644 --- a/course/changelog.jsonl +++ b/course/changelog.jsonl @@ -0,0 +1,2 @@ +{"date": "2026-10-18", "added": ["daily-2026-10-18"], "faq": 0, "rejected": [], "atlas": "345 commands"} +{"date": "2026-10-18", "added": [], "faq": 0, "rejected": [], "atlas": "345 commands"} diff --git a/course/faq.json b/course/faq.json index fc69ce2..346fb18 100644 --- a/course/faq.json +++ b/course/faq.json @@ -1,3 +1,3 @@ { - "items": [] + "items": [] }
\ No newline at end of file diff --git a/course/feed.json b/course/feed.json index 81aac99..7a74ac7 100644 --- a/course/feed.json +++ b/course/feed.json @@ -1,4 +1,50 @@ { - "version": "2026-10-18", - "items": [] + "version": "2026-10-18", + "items": [ + { + "title": "Designing humane terminal commands", + "minutes": 4, + "blocks": [ + { + "type": "text", + "text": "CLI design guides such as Better CLI and the Command Line Interface Guidelines exist to help developers, product managers, technical writers, UX designers, and maintainers build better command-line interfaces. Inclusive CLI practices are also part of improving command-line user experience." + }, + { + "type": "cmd", + "text": "help" + }, + { + "type": "tip", + "text": "The Command Line Interface Guidelines is an open-source guide that updates traditional UNIX principles for modern command-line programs." + }, + { + "type": "text", + "text": "For CLI UX, colors can help users read commands and outputs faster. Recommended font colors include magenta, cyan, blue, green, and gray; background colors can also help." + }, + { + "type": "warn", + "text": "Do not rely on color alone. The inclusive CLI best-practices article focuses on improving CLI user experience, and this course uses the help command as a simple example of terminal command design." + } + ], + "exercise": { + "instruction": "Run the help command to inspect the terminal command interface.", + "accept": [ + "help" + ], + "check": { + "type": "manual" + }, + "hint": "Type help exactly as shown in the cmd block." + }, + "sources": [ + "https://bettercli.org/", + "https://clig.dev/?trk=public_post-text", + "https://seirdy.one/posts/2022/06/10/cli-best-practices/", + "https://opensource.com/article/22/7/awesome-ux-cli-application" + ], + "id": "daily-2026-10-18", + "date": "2026-10-18", + "generated": true + } + ] }
\ No newline at end of file diff --git a/modules-index.json b/modules-index.json index 6d562f2..395a788 100644 --- a/modules-index.json +++ b/modules-index.json @@ -1087,6 +1087,18 @@ "three" ], "tier": "ext-auto" + }, + "course": { + "name": "course", + "file": "modules/ext/course.js", + "type": "ext", + "class": "", + "auto_load": true, + "description": "", + "commands": [ + "course" + ], + "tier": "ext-auto" } }, "total": 45 diff --git a/scripts/course-daily-update.py b/scripts/course-daily-update.py index 4f509d6..4845402 100644 --- a/scripts/course-daily-update.py +++ b/scripts/course-daily-update.py @@ -45,13 +45,18 @@ def parse_json(txt): except Exception: return None def llm(system, user, n=900): - try: - r = requests.post(OLLAMA, json={'model': MODEL, 'stream': False, 'temperature': 0.4, 'max_tokens': n, - 'messages': [{'role': 'system', 'content': system}, {'role': 'user', 'content': user}]}, timeout=180) - if not r.ok: return None - return (r.json().get('choices') or [{}])[0].get('message', {}).get('content') - except Exception: - return None + for model in (MODEL, 'gemma4:31b-cloud'): + try: + r = requests.post(OLLAMA, json={'model': model, 'stream': False, 'temperature': 0.4, 'max_tokens': max(n, 1400), + 'think': False, + 'messages': [{'role': 'system', 'content': system}, {'role': 'user', 'content': user}]}, timeout=180) + if not r.ok: continue + msg = (r.json().get('choices') or [{}])[0].get('message', {}) + content = (msg.get('content') or '').strip() + if content: return content + except Exception: + continue + return None def research(q): try: |