Expose getBizMonitor* / getBizCollect* on the Ops preset with skill netx-biz-monitor; keep tooling in netxops instead of netx-mcp.
Co-authored-by: Cursor <cursoragent@cursor.com>
connection.rpc.handle no longer registers custom channels when webServer is not on the connection ctx, which left the KB settings badge stuck on unconfigured.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reload Host kbRoot after browse/save so the status badge tracks the live package instead of a stale snapshot.
Co-authored-by: Cursor <cursoragent@cursor.com>
Site writes device profiles/inventory via kbWriteRef; persona and kb-context require read-then-write refs plus memories for reusable experience.
Co-authored-by: Cursor <cursoragent@cursor.com>
Run session and WhatsApp/IM sinks in parallel so a failing or slow sticky session no longer skips proactive IM delivery (0.1.34).
Co-authored-by: Cursor <cursoragent@cursor.com>
Host-side netx__kb* tools jail create/update/delete under paths.local memories/drafts/suggestions; Netx Ops agent.cordis.yml now includes full standard capability rows plus ops tools.
Co-authored-by: Cursor <cursoragent@cursor.com>
Strengthen Host prompt injection with a per-step reply reminder, read live settings, and stop persona from forcing follow-user language.
Co-authored-by: Cursor <cursoragent@cursor.com>
Inject systemPrompt sections from Netx Ops settings so every preset can switch CoT and final-reply language without changing API/alarm lang.
Co-authored-by: Cursor <cursoragent@cursor.com>
Parse packaging-generated paths and load each local_skills/*/SKILL.md with the same hasSkills toggles and provider as shared packs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Browse no longer fails silently, falls back to Host directoryPicker RPC, and resolve treats a MANIFEST.json file path as its parent package root.
Co-authored-by: Cursor <cursoragent@cursor.com>
Locate and validate MANIFEST under kbRoot, show anti-mixup status in settings, and inject KB_* env plus kb-context so sessions degrade to pure netx when unset.
Co-authored-by: Cursor <cursoragent@cursor.com>
Localize alarm prompts and UI reason codes for zh/en, and restyle the settings page like uds-auth as its own settings.section.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ignore hub alarms before auth-ok, stop reconnecting after auth-fail, serialize sticky delivery with dispose on reset, and sanitize ZIP entry names against path traversal.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ops can download every Host session as a ZIP for HQ analysis, fan key alarms to multiple WhatsApp targets, and the Plugins card copy stays short.
Co-authored-by: Cursor <cursoragent@cursor.com>
One capability group now ships netx-ops (alarms + managed CLI + paths); keep tools-nms/common as aliases.
Co-authored-by: Cursor <cursoragent@cursor.com>
Settings choose DSH session and/or WhatsApp via botId+targetId; onAlarm soft-calls ctx.dshIm.send when im is installed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Host publishes connection phases over Connection RPC; the card polls and badges Connected / Reconnecting / Auth failed so operators need not curl logs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Plugins card gains an alarm-push toggle; when enabled, netxops subscribes outbound and followups a Netx Ops session without requiring im/WhatsApp.
Co-authored-by: Cursor <cursoragent@cursor.com>
Inject credentials before publish, read the live token per HTTP request, and surface netx_token_missing instead of a silent 401.
Co-authored-by: Cursor <cursoragent@cursor.com>
Register tools from the preset standing mount so standard and other agents no longer see them without Ops skills.
Co-authored-by: Cursor <cursoragent@cursor.com>
0.1.1-rc.2 uses installSettingsSection; 0.1.2+ uses settings.installSection — detect at runtime so global and source dsh both boot.
Co-authored-by: Cursor <cursoragent@cursor.com>
SettingsProvider.installSection is not on 0.1.1-rc.2; without the standalone helper the netxops namespace never appears on the Plugins tab.
Co-authored-by: Cursor <cursoragent@cursor.com>
Node refuses TypeScript stripping inside node_modules; point package main at the host bundle and document GitHub as the default install.
Co-authored-by: Cursor <cursoragent@cursor.com>