fix(line): synthesize media/auth/routing webhook regressions#32546
fix(line): synthesize media/auth/routing webhook regressions#32546Takhoffman merged 14 commits intomainfrom
Conversation
|
🤖 We're reviewing this PR with Aisle We're running a security check on the changes in this PR now. This usually takes a few minutes. ⌛ Progress:
Latest run failed. Keeping previous successful results. Trace ID: Last updated on: 2026-03-03T04:41:05Z Latest run failed. Keeping previous successful results. Trace ID: Last updated on: 2026-03-03T04:54:41Z Latest run failed. Keeping previous successful results. Trace ID: Last updated on: 2026-03-03T05:12:51Z Latest run failed. Keeping previous successful results. Trace ID: Last updated on: 2026-03-03T05:23:36Z Latest run failed. Keeping previous successful results. Trace ID: Last updated on: 2026-03-03T05:38:15Z Latest run failed. Keeping previous successful results. Trace ID: Last updated on: 2026-03-03T05:42:33Z |
|
🤖 We're reviewing this PR with Aisle We're running a security check on the changes in this PR now. This usually takes a few minutes. ⌛ Progress:
Latest run failed. Keeping previous successful results. Trace ID: Last updated on: 2026-03-03T04:48:59Z |
Greptile SummaryThis PR synthesizes five targeted regressions/fixes for the LINE integration: adding
Confidence Score: 4/5
Last reviewed commit: e5b2524 |
Additional Comments (1)
The Prompt To Fix With AIThis is a comment left during a code review.
Path: src/line/bot-message-context.ts
Line: 51-62
Comment:
**`buildPeerId` format change may silently orphan in-progress group/room sessions**
`buildPeerId` now returns the raw `groupId` / `roomId` instead of the previously prefixed `"group:<id>"` / `"room:<id>"` form. This value feeds `resolveAgentRoute` which derives `route.sessionKey`. Any existing group/room session whose key was computed against the old prefixed format will no longer resolve to the same session key, silently starting a fresh session.
The `From`/`OriginatingTo` addresses in `resolveLineAddresses` still use the `line:group:<id>` format, so routing and display are diverging in a way that could surprise operators. It may be worth logging a one-time migration warning if a session keyed on the old format exists, or documenting the session-key break explicitly in the migration notes.
How can I resolve this? If you propose a fix, please make it concise. |
|
Addressed review comments in commit e65bc32:
For the session-key continuity concern from the peer-id prefix change:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e65bc320c4
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
Addressed the P1 retry/ack concern in cdf1184. What changed:
Tests added/updated:
This makes handler failures observable to LINE so retries can occur instead of silently dropping failed events. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fbefe8cb0a
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
The LINE plugin was not downloading file attachments (PDF, Word, Excel, JSON, etc.) because the media download condition only checked for image, video, and audio types. Added `message.type === "file"` to the condition so files are downloaded and made available to the agent, consistent with other media types. Fixes #26330
LINE voice messages use ISO BMFF ftyp containers and were misclassified as video/mp4, which skipped audio transcription. Detect major audio brands (e.g. M4A) so voice attachments are treated as audio/mp4 and saved as .m4a.
fbefe8c to
0bbd398
Compare
…w#32546) thanks @Takhoffman Verified: - pnpm build - pnpm check - pnpm test:macmini Co-authored-by: Takhoffman <[email protected]> Co-authored-by: Tak Hoffman <[email protected]>
…w#32546) thanks @Takhoffman Verified: - pnpm build - pnpm check - pnpm test:macmini Co-authored-by: Takhoffman <[email protected]> Co-authored-by: Tak Hoffman <[email protected]>
* main: (134 commits) fix(telegram): warn when accounts.default is missing in multi-account setup (openclaw#32544) agents: propagate config for embedded skill loading Gateway: fix stale self version in status output (openclaw#32655) feat(mattermost): add native slash command support (refresh) (openclaw#32467) Diffs: Migrate tool usage guidance from before_prompt_build to a plugin skill (openclaw#32630) bug: Workaround for QMD upstream bug (openclaw#27028) fix: improve compaction summary instructions to preserve active work (openclaw#8903) chore: Updated Brave documentation (openclaw#26860) security(line): synthesize strict LINE auth boundary hardening test(e2e): isolate module mocks across harnesses fix(telegram): debounce forwarded media-only bursts test(live): harden gateway model profile probes fix(ci): handle disabled systemd units in docker doctor flow fix(test): stabilize appcast version assertion fix(line): synthesize media/auth/routing webhook regressions (openclaw#32546) thanks @Takhoffman fix(gateway+acp): thread stopReason through final event to ACP bridge (openclaw#24867) docs(changelog): reattribute duplicated PR credits fix: scope extension runtime deps to plugin manifests ci: enable stale workflow chore(release): bump to 2026.3.3 and seed changelog ...
Summary
Describe the problem and fix in 2–5 bullets:
Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
User-visible / Behavior Changes
filemessages are now included in the media download path.audio/mp4(preserving.m4ahandling and transcription routing expectations).CommandAuthorizedfrom authorization decisions for message and postback flows.HEADprobes and returns204.Security Impact (required)
No)No)No)No)No)Yes, explain risk + mitigation:Repro + Verification
Environment
Steps
Expected
audio/mp4and.m4aextension path.CommandAuthorizedand raw peer id routing matches bindings.204forHEADand preserves existingGET/POSTbehavior.Actual
Evidence
Attach at least one:
Human Verification (required)
What you personally verified (not just CI), and how:
bot-handlers,download,bot-message-context, andwebhook-nodeunder the synthesized branch.pnpm checkend-to-end (blocked by pre-existing formatting in unrelated Feishu files in this branch base).Compatibility / Migration
Yes)No)No)Failure Recovery (if this breaks)
download.ts) and auth/routing context (bot-message-context.ts,bot-handlers.ts).src/line/bot-handlers.ts,src/line/download.ts,src/line/bot-message-context.ts,src/line/webhook-node.tsand corresponding tests.video/mp4, missing slash command execution on LINE, group/room bindings not matching expected peer ids, webhook health probes receiving 405.Risks and Mitigations
List only real risks for this PR. Add/remove entries as needed. If none, write
None.download.tsclassifier path and excludes the saveMediaBuffer migration variant.