refactor(plugins): add lane-oriented channel interface#59986
Conversation
|
Codex review: found issues before merge. Reviewed July 3, 2026, 2:07 AM ET / 06:07 UTC. Summary PR surface: Source +1435, Tests +669, Docs +938, Generated +90. Total +3132 across 52 files. Reproducibility: yes. for the review blockers: source inspection shows the PR head delays callback dedupe until after handler completion and renders Teams submit payloads that current main routes as agent text. I did not run live transport proof for this read-only review. Review metrics: 2 noteworthy metrics.
Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Refresh or rebuild the branch on current main, preserve in-flight callback dedupe, use Do we have a high-confidence way to reproduce the issue? Yes for the review blockers: source inspection shows the PR head delays callback dedupe until after handler completion and renders Teams submit payloads that current main routes as agent text. I did not run live transport proof for this read-only review. Is this the best way to solve the issue? No. The lane-oriented direction may be right for the plugin boundary, but this patch is not the best merge shape until it uses current Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against c5afa92c1f8a. Label changesLabel justifications:
Evidence reviewedPR surface: Source +1435, Tests +669, Docs +938, Generated +90. Total +3132 across 52 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
ClawSweeper PR egg 🥚 Incubating: this PR egg is tucked into the review nest. Hatch commandComment Hatchability rules:
What is this egg doing here?
|
Summary
Describe the problem and fix in 2–5 bullets:
PluginLaneRef,PluginActorRef, generic outbound helpers, andregisterInteractionHandler), extended semantic interactive payloads with action and fallback metadata, and taught bundled channels to project those payloads into native UX when available.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
Root Cause / Regression History (if applicable)
For bug fixes or regressions, explain why this happened, not just what changed. Otherwise write
N/A. If the cause is unclear, writeUnknown.git blame, prior PR, issue, or refactor if known): this work follows the lane-oriented interface plan and the discussion around removing Telegram Bot API / Discord API ownership from plugins.Regression Test Plan (if applicable)
For bug fixes or regressions, name the smallest reliable test coverage that should have caught this. Otherwise write
N/A.src/plugins/runtime.channel-outbound-delivery.test.ts,src/plugins/interactive.test.ts,extensions/msteams/src/outbound.test.ts,extensions/feishu/src/outbound.test.tssrc/plugins/commands.test.tsandsrc/interactive/payload.test.tsnow cover normalized lane refs and interactive fallback normalization.User-visible / Behavior Changes
List user-visible changes (including defaults/config).
If none, write
None.Diagram (if applicable)
For UI changes or non-trivial logic flows, include a small ASCII diagram reviewers can scan quickly. Otherwise write
N/A.Security Impact (required)
Yes/No) NoYes/No) NoYes/No) NoYes/No) NoYes/No) NoYes, explain risk + mitigation:Repro + Verification
Environment
Steps
pnpm lint.pnpm test -- src/interactive/payload.test.ts src/plugins/commands.test.ts src/plugins/interactive.test.ts src/plugins/runtime.channel-outbound-delivery.test.ts extensions/msteams/src/outbound.test.ts extensions/feishu/src/outbound.test.ts.pnpm build.Expected
Actual
pnpm lintpassed.pnpm buildpassed.pnpm checkis still blocked by a pre-existing unresolved merge-conflict marker inCHANGELOG.md:94, which is unrelated to this PR.Evidence
Attach at least one:
Human Verification (required)
What you personally verified (not just CI), and how:
Review Conversations
If a bot review conversation is addressed by this PR, resolve that conversation yourself. Do not leave bot review conversation cleanup for maintainers.
Compatibility / Migration
Yes/No) NoYes/No) NoYes/No) YesPluginLaneRef/PluginActorRef.api.runtime.channel.outbound.sendToLane(...)andsendToActorDm(...)instead of channel-branded outbound helpers where possible.api.registerInteractionHandler(...)plus semanticInteractiveReplypayloads with fallbacks.api.runtime.channel.<id>namespaces as escape hatches for host-owned runtime work, not the default plugin contract.Risks and Mitigations
List only real risks for this PR. Add/remove entries as needed. If none, write
None.