Commit graph

389 commits

Author SHA1 Message Date
e5e1e6573a Strip WhatsApp @bot LID tokens from inbound group text.
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>
2026-09-05 16:04:55 +08:00
d9edca4d5f Fix WhatsApp group access when senders are opaque LIDs.
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>
2026-09-05 15:56:24 +08:00
7f1b9bd480 Add configurable group session scope (default user_in_chat).
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>
2026-09-05 15:39:28 +08:00
d10a941fc8 Fix client ModuleLoader id to dsh-im-ops after package rename.
GitHub installs still shipped the upstream @xmanrui/dsh-im client id, so the web shell loaded the bundle without registering the plugin.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 15:21:26 +08:00
d53daf7d26 Rebrand as dsh-im-ops fork of xmanrui/dsh-im@4.9.1.
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>
2026-09-05 15:02:54 +08:00
xmanrui
965e839457 chore: release v4.9.1 2026-09-04 03:26:39 +08:00
xmanrui
6a6e3c96b8 fix: restore IM question and approval routing
Support current DSH Session.snapshotEvents while retaining the legacy session.events and apiProxy paths. Add regression coverage and record the nine-channel rollout and live verification for issue #70.
2026-09-04 03:24:35 +08:00
xmanrui
1b05fa8d32 fix: add actionable DingTalk connection diagnostics 2026-09-04 02:18:18 +08:00
xmanrui
3010535409 chore: release v4.9.0 2026-09-03 10:19:06 +08:00
xmanrui
149f435216 fix: trim redundant quoted message metadata 2026-09-03 03:11:14 +08:00
xmanrui
559ea2c5a5 update docs 2026-09-03 03:03:43 +08:00
xmanrui
129e9468a9 update docs 2026-09-03 03:03:05 +08:00
xmanrui
34f217cafc Merge pull request #122 and harden reply stall detection
Resolve the current main conflict, treat reply timeouts as inactivity windows, and confirm liveness through Harness instead of sticky interaction ownership.
2026-09-03 02:14:01 +08:00
xiemanR
287289e0f4
Merge pull request #135 from xmanrui/codex/fix-feishu-interaction-card-regressions
fix(feishu): preserve interaction card reply semantics
2026-09-03 01:14:03 +08:00
xmanrui
2b6f4bdfb0 fix(feishu): preserve interaction card reply semantics 2026-09-03 01:12:51 +08:00
xiemanR
3d25137824
Merge pull request #111 from C3H3-AI/feat/feishu-interaction-cards
feat(feishu): interactive approval and question cards with buttons
2026-09-03 01:01:14 +08:00
xmanrui
d4e1bd3cab Merge main into feat/feishu-interaction-cards
# Conflicts:
#	lib/index.js
2026-09-03 01:00:04 +08:00
xiemanR
0589e2c81d
Merge pull request #126 from yhay81/agent/issue-88
fix: 为工作区命令增加 /ws、/wsl 和 /workspaces 别名
2026-09-03 00:48:54 +08:00
xmanrui
3240632bef Merge main into agent/issue-88 and resolve workspace aliases 2026-09-03 00:47:38 +08:00
xmanrui
537fca8a14 fix context tooltip clipping 2026-09-03 00:30:18 +08:00
xmanrui
9b0880caa3 update docs 2026-09-03 00:25:23 +08:00
xmanrui
0b9767dd39 update docs 2026-09-03 00:17:16 +08:00
xmanrui
056bcf95ac docs: split detailed guides from readmes 2026-09-03 00:11:52 +08:00
xmanrui
275dafbf19 chore: release v4.8.0 2026-09-02 23:48:02 +08:00
Chan
3562b9244e
feat(context-enhancement): 新增 chatId 与 threadId 来源字段 (#128)
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.
2026-09-02 23:28:53 +08:00
xmanrui
3c71712962 fix: support current directory picker errors 2026-09-02 23:18:28 +08:00
xmanrui
88ef12ecc8 chore: release v4.7.0 2026-09-02 03:03:00 +08:00
xmanrui
37ec6abb06 feat: support limiting session list results 2026-09-02 03:01:44 +08:00
xmanrui
52deb872aa chore: release v4.6.0 2026-09-02 01:39:29 +08:00
xmanrui
9d2e9c800b fix(im): preserve cancellation during image fallback 2026-09-02 01:35:48 +08:00
xmanrui
c7679d86a1 Merge pull request #118 from GoldJohnKing/fix/non-vision-model-image-file-fallback 2026-09-02 01:33:28 +08:00
xmanrui
94e114b9b3 fix: preserve quoted message context across channels 2026-09-02 01:27:35 +08:00
C3H3-AI
b5378500ca fix(feishu): bind card decisions to the actor and reject stale cards
Address review feedback on the interaction cards:

1. Bind card decisions to the initiating actor. The card-action operator
   (operatorOpenId) is now passed into the approval and question handlers:
   - submitByApprovalId receives { actor } so another allowed group member
     cannot approve/reject someone else's approval;
   - the answer branch requires pending.actor === operator.

2. Include the question index in the answer button action and validate it
   against the current pending question, so a stale card from an earlier
   question in a multi-question interaction cannot be applied to the next one.

3. When both the card send and the plain-text fallback fail, the error is no
   longer swallowed: it propagates so the interaction is not marked as
   presented and the existing retry/reconnect behaviour can run.

Adds regression tests for all three cases.
2026-09-02 00:18:50 +08:00
C3H3-AI
0b42ea9889 feat(feishu): interactive approval and question cards with buttons
Render Harness approval and single-choice question interactions as
interactive Feishu cards with approve/reject and answer buttons,
matching the already-available interactionCards behaviour. Cards are now
the default; set DSH_IM_INTERACTION_CARDS=0 (or interactionCards=false)
to keep the plain-text reply flow.

- bridge.mjs: approve:/reject:/answer: card actions, interactionCards
  option, gated approval render hook, interactive question presentation,
  and operationArguments/printableText helpers; refactor the inline
  question answer into #submitQuestionAnswer so both text replies and
  card buttons share one path.
- feishu-cards.mjs: approvalCard (approve/reject) and questionCard
  (option buttons) templates.
- feishu-runtime.mjs: default interactionCards from env (on).
- harness-approval.mjs: optional channel render hook + submitByApprovalId.
- i18n-en: add the new card t() keys.
- Tests: pin the plain-text reply flow in state-machine suites that
  drive it, and add dedicated card tests for the default approve/reject,
  answer buttons, and the text fallback. Full suite shows no new
  failures versus upstream.
2026-09-02 00:18:37 +08:00
C3H3-AI
955c2217fd fix(feishu): renew the reply wait window while the turn is active
A long-running Harness task was falsely reported as MODEL_REPLY_TIMEOUT
after the fixed 10-minute deadline even though the backend was still
working. Replace the hard wall-clock deadline with an activity-based
stall window: the wait renews whenever the turn produces new events, the
control ownership is active, or (mid-turn with no new events) Harness
still reports the session as running. Only a genuine stall with no
progress for the whole timeoutMs window fails fast.

This is the shared harness-client layer, exercised end-to-end by the
Feishu channel (which already exposes HARNESS_REPLY_TIMEOUT_MS); other
channels inherit the same fix.

Adds two regression tests: a long-running turn with periodic activity
completes instead of timing out, and a genuinely stalled turn still
fails with harness-reply-timeout.
2026-09-02 00:17:18 +08:00
GoldJohnKing
994df6e1e3 Merge upstream v4.5.0 (xmanrui/main) into fix/non-vision-model-image-file-fallback
- CHANGELOG: keep the image-fallback entry under Unreleased alongside the new 4.5.0 section
- harness-client: upstream renameSession coexists with the image-rejection fallback retry path
- lib/index.js rebuilt from merged sources
2026-09-01 23:18:12 +08:00
xmanrui
c2be2389b0 chore: release v4.5.0 2026-09-01 22:39:47 +08:00
xmanrui
d044f1b0aa fix: preserve session titles without context enhancement 2026-09-01 22:30:35 +08:00
GoldJohnKing
36d10dc499 chore: rebuild lib for non-vision image fallback 2026-09-01 21:29:43 +08:00
GoldJohnKing
0851e8cf30 fix(im): fall back to workspace-file delivery when non-vision models reject images 2026-09-01 21:29:43 +08:00
Evan Fang
e8c9817598
Merge pull request #108 from xmanrui/fix/issue-86-feishu-stream-order
fix(feishu): rotate the streaming card before in-turn interactions (issue #86)
2026-09-01 17:56:04 +08:00
evanfang0054
c7cb678bd2 chore: rebuild lib for feishu issue-86 card rotation 2026-09-01 17:53:44 +08:00
evanfang0054
1a165822ac fix(feishu): rotate the streaming card before presenting in-turn interactions 2026-09-01 17:53:42 +08:00
evanfang0054
bf03b7e696 feat(feishu): add stream card rotation to keep answers below mid-turn interactions 2026-09-01 17:53:42 +08:00
xiemanR
24f4a1e05b
Merge pull request #109 from yzxxy010/feat/conversation-title
上下文增强增加 conversationTitle 字段
2026-09-01 17:24:47 +08:00
xmanrui
fd303b6c78 Merge main into feat/conversation-title 2026-09-01 17:22:49 +08:00
曜 星
7a68e94f54 feat: add conversationTitle to context enhancement
Pass inbound group titles into <dsh_im_source> without extra platform API lookups.
DingTalk uses conversationTitle; Telegram groups use chat.title.
2026-09-01 17:15:17 +08:00
xmanrui
9c4628a821 build: refresh host bundle after workspace updates 2026-09-01 16:29:20 +08:00
yusuke8h
65c1c55f1a fix: [Feature] 为工作区命令增加 /ws、/wsl 和 /workspaces 别名 (#88) 2026-09-01 17:03:48 +09:00
xmanrui
959e5b9ad2 fix(feishu): document numbered workspace switching 2026-09-01 15:47:27 +08:00