qwen-code/docs/users/features/channels
OrbitZore 153d781a34
feat(gitlab-channel): add transient 👀 award emoji while agent is working (#8119)
* feat(gitlab-channel): add transient 👀 award emoji while agent is working

Adds a working-reaction feature to the GitLab channel adapter, mirroring
the GitHub adapter's eyes reaction (PR #8061). When the agent starts
processing a note mention, a 👀 award emoji is added to the note; it is
removed when the run completes, fails, or is cancelled. Both operations
are best-effort and never block the response.

Also replaces the custom Todo interface with gitbeaker's TodoSchema,
introduces GitlabTarget to consolidate target info, and simplifies
processTodo/buildMetadata signatures by passing the parsed target
directly instead of redundant targetType/threadId parameters.

Co-Authored-By: Qwen Code <noreply@alibaba.com>

* fix(gitlab-channel): guard null target and fix reactions leak

Restore null guard for todo.target (dropped in the TodoSchema refactor)
to prevent TypeError when GitLab returns a todo without target. Use
try/finally instead of try/catch for reactions cleanup so entries are
removed on all handleInbound return paths, not just throws.

Co-Authored-By: Qwen Code <noreply@alibaba.com>

* test(gitlab-channel): add poll-driven reaction tests, fix fragile sequencing

Add ReactingGitlabChannel that drives real pollOnce → handleInbound →
onPromptStart/onPromptEnd path, covering #note_ parse, key derivation,
and finally cleanup. Replace the tautological description-mention test
with one that exercises the real isNoteMention guard. Replace bare
Promise.resolve() microtask waits with vi.waitFor in the award-failure
test.

Co-Authored-By: Qwen Code <noreply@alibaba.com>

* test(gitlab-channel): pin double-award guard with dedup test

Add test that calls startPromptForTest twice on the same messageId and
asserts award is called exactly once, pinning the `|| entry.award`
guard in onPromptStart against surviving mutations.

Co-Authored-By: Qwen Code <noreply@alibaba.com>

---------

Co-authored-by: Qwen Code <noreply@alibaba.com>
2026-07-31 10:45:38 +00:00
..
_meta.ts feat(channels): add GitLab polling channel adapter (#7862) 2026-07-29 14:28:31 +00:00
dingtalk.md feat(channels): support DingTalk webhook delivery to direct messages (#6891) 2026-07-15 03:07:30 +00:00
feishu.md docs(channels): add screenshots to Feishu setup guide (#4983) 2026-06-16 04:34:03 +00:00
github.md fix(github-channel): retry definite no-write deliveries (#8087) 2026-07-31 08:06:28 +00:00
gitlab.md feat(gitlab-channel): add transient 👀 award emoji while agent is working (#8119) 2026-07-31 10:45:38 +00:00
overview.md docs(channels): Document loops and proactive delivery (#7628) 2026-07-26 07:32:18 +00:00
plugins.md feat(channels): add dmPolicy config to disable private/DM messages (#6521) 2026-07-08 12:01:10 +00:00
qqbot.md feat(channel): add QQ Bot (QQ机器人) channel adapter (#5202) 2026-06-19 06:32:52 +08:00
telegram.md feat(channels): add shared slash command system 2026-03-26 03:24:44 +00:00
wecom.md fix(wecom): prevent requireMention from disabling group chat (#6948) 2026-07-15 15:38:21 +00:00
weixin.md feat(channels): add crash recovery and gateway mode support 2026-03-26 02:55:18 +00:00