qwen-code/packages/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
..
base fix(github-channel): retry definite no-write deliveries (#8087) 2026-07-31 08:06:28 +00:00
dingtalk chore(release): v0.21.2 (#8200) 2026-07-31 05:22:46 +00:00
feishu chore(release): v0.21.2 (#8200) 2026-07-31 05:22:46 +00:00
github fix(github-channel): retry definite no-write deliveries (#8087) 2026-07-31 08:06:28 +00:00
gitlab feat(gitlab-channel): add transient 👀 award emoji while agent is working (#8119) 2026-07-31 10:45:38 +00:00
plugin-example chore(release): v0.21.2 (#8200) 2026-07-31 05:22:46 +00:00
qqbot chore(release): v0.21.2 (#8200) 2026-07-31 05:22:46 +00:00
telegram chore(release): v0.21.2 (#8200) 2026-07-31 05:22:46 +00:00
wecom chore(release): v0.21.2 (#8200) 2026-07-31 05:22:46 +00:00
weixin chore(release): v0.21.2 (#8200) 2026-07-31 05:22:46 +00:00