feat(imessage): add native imsg message actions#79234
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
imsg, but the sharedmessagetool had no native action surface for private-API bridge capabilities.imsgRPC methods; actions are advertised from cachedimsg status --jsonbridge capability/selector status and probed lazily at execution.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
Real behavior proof (required for external PRs)
pnpm tsgo:extensions.asVoice/as_voice, target aliases, inbound GUID handling, and reaction watch parsing.Root Cause (if applicable)
imsg status --jsonbridge capability surface.origin/mainalready had a newer private-API implementation, so this PR rebases onto that and preserves its status/selector model.Regression Test Plan (if applicable)
extensions/imessage/src/actions.test.ts,extensions/imessage/src/message-tool-api.test.ts,src/infra/outbound/message-action-spec.test.ts,src/plugins/contracts/plugin-sdk-runtime-api-guardrails.test.ts.messagetool, not full live bridge behavior.User-visible / Behavior Changes
The iMessage plugin can advertise and execute private-API message actions for reactions, edits, unsends, replies, rich sends, attachments, and group management when the configured
imsgbridge reports support.Diagram (if applicable)
Security Impact (required)
Yes, explain risk + mitigation: exposes iMessage private-API actions only through the existing channel action surface, with config gates enforced at discovery and execution and attachment input still flowing through shared media normalization.Repro + Verification
Environment
channels.imessage.cliPath="imsg"Steps
Expected
Actual
Evidence
Human Verification (required)
sendAttachmentmapped toupload-filewithout exposing the internal action name.Review Conversations
Compatibility / Migration
channels.imessage.actions.*gates can disable individual private-API actions.Risks and Mitigations
imsgbridge.handleActionrejects disabled actions before dispatch.