diff options
| author | Agando <roduccomm@gmail.com> | 2026-10-18 14:05:18 +0200 |
|---|---|---|
| committer | Agando <roduccomm@gmail.com> | 2026-10-18 14:05:18 +0200 |
| commit | 0d0d936e7b5cd41a31773069540b1ddb8836ef44 (patch) | |
| tree | 273e7ee9a72453655119bf0f63efb9b61e193d7f /modules/core/core-bundle.js | |
| parent | 526c420f4591f0a58f805b473fa76d3da2981eae (diff) | |
newOS4: interactive AI course (terminal module, portal, atlas, telemetry, daily maintenance+cron) + free store card
Diffstat (limited to 'modules/core/core-bundle.js')
| -rw-r--r-- | modules/core/core-bundle.js | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/modules/core/core-bundle.js b/modules/core/core-bundle.js index dd86773..2714dd3 100644 --- a/modules/core/core-bundle.js +++ b/modules/core/core-bundle.js @@ -4283,9 +4283,17 @@ Only output XML function calls for tool tasks. If no tool is needed, answer norm for (const modName in this.moduleManager.modules) { const mod = this.moduleManager.modules[modName]; if (mod.commands && mod.commands[cmd]) { + if (cmd !== 'course') { + for (const _m of Object.values(this.moduleManager.modules)) { + if (typeof _m.onCommandStart === 'function') { try { _m.onCommandStart(cmd, args); } catch (_e) {} } + } + } try { await mod.commands[cmd](args); - // Notify tutorial module for quest tracking - if (this.tutorialModule && cmd !== 'tutorial') this.tutorialModule.onCommandExecuted(cmd, args); + if (cmd !== 'tutorial' && cmd !== 'course') { + for (const _m of Object.values(this.moduleManager.modules)) { + if (typeof _m.onCommandExecuted === 'function') { try { _m.onCommandExecuted(cmd, args); } catch (_e) {} } + } + } // Memory graph: record file access for read/file commands if (cmd === 'cat' || cmd === 'view_module' || cmd === 'edit_module') { try { |