Empty member/group Agent Preset now resolves to the bot workspace mapping (not Host global); settings label is Follow channel mapping, and /new createSession carries that mapping explicitly.
Co-authored-by: Cursor <cursoragent@cursor.com>
Classify gateway/internal, workspace/*, and agent-preset/* into actionable IM codes, enrich field diagnostics, realpath-match workspaces, and retry session.create once without a failing Agent Preset.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match workspace.list entries case-insensitively on Win32 so D: vs d: no longer misses an existing workspace and falls through to SESSION_CREATE.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map Host internal errors on session.create and workspace.create to actionable codes, and write last-message-failure.json so field hosts can triage without guessing from HARNESS_SERVICE.
Co-authored-by: Cursor <cursoragent@cursor.com>
The previous commit only updated src/; Host loads lib/index.js, so field installs never picked up the fix until the bundle was rebuilt.
Co-authored-by: Cursor <cursoragent@cursor.com>
Runtime install via dsh plugin add only needs public dependencies; cordis comes from the Host. Document that other machines do not need a plugin-local pnpm install when lib/ is present.
Surface chat/access-list contacts as selectable targets with clearer nicknames, and keep conversation peers usable for ops schedulers.
Co-authored-by: Cursor <cursoragent@cursor.com>
PowerShell rewrite corrupted an em dash into a non-UTF-8 sequence that Node rejects as ERR_INVALID_PACKAGE_CONFIG.
Co-authored-by: Cursor <cursoragent@cursor.com>
WhatsApp registers a peer resolver so cron_create can default IM delivery to the calling session's bot/target.
Co-authored-by: Cursor <cursoragent@cursor.com>
Plugins inject conversation.session.header.actions; resolve sessionId back to the bound chat and render nickname/phone or group title.
Co-authored-by: Cursor <cursoragent@cursor.com>
Access grants can pin an agentPreset on direct members and groups; new sessions resolve override over the bot-global preset.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a shared three-column grid for admin/member rows, and inherit DSH color-scheme so channel/command dropdowns stay readable.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use flex-wrap rows so phone, command, and delete stay tight and soft-wrap only when the panel is too narrow.
Co-authored-by: Cursor <cursoragent@cursor.com>
Refresh missing/forced group titles via groupMetadata and participating catalog so cards show real names instead of bare JIDs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fetch groupMetadata.subject on @mentions for group cards; render contact pushName under phone rows so admins are not staring at bare numbers.
Co-authored-by: Cursor <cursoragent@cursor.com>
Suggestions only open while focused and hide exact matches; nested group admins/members drop extra frames; pending and actions show group names.
Co-authored-by: Cursor <cursoragent@cursor.com>
Settings button only forwarded accessPolicy, so the graded ACL page always opened empty; also refresh grant from connection.status on mount.
Co-authored-by: Cursor <cursoragent@cursor.com>
Client normalizeBot dropped accessGrant/groupSessionScope, so pending, contacts, and group cards never appeared. Also record contacts only on DM/@, auto-create group buckets on @, and add one-click grant buttons.
Co-authored-by: Cursor <cursoragent@cursor.com>
Row keys included the phone value, so each character remounted the input; also sync draft from serialized grant content, not object identity.
Co-authored-by: Cursor <cursoragent@cursor.com>
Mention triggers leave opaque LID digits in the body; remove those only,
without injecting sender identity (use context enhancement when needed).
Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve LID to phone aliases before allowlist and @mention checks so
group prompts are not silently dropped after a working direct chat.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ops bots now isolate per-speaker Harness sessions in groups, with a
settings/RPC toggle to restore shared chat sessions when needed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep all IM channels; rename package/cordis id for local profile install without colliding with the community plugin. Document fork intent in FORK.md.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add chatId and threadId source fields across all nine IM channels, update UI/docs/tests, reconcile the latest main branch, and credit @Chan-0312 as a contributor.