chieflab_execute_approved_action
P71 — closed-loop executor wrapper. USE WHEN chiefmo_approve_action just succeeded on an action whose executionMatrix.mode is oauth_connector or api_key_connector AND connectorReady is true. Routes to the right native executor (chiefmo_publish_approved_post for social / chiefmo_send_approved_email for email), runs the execute-time sanity gate (re-classifies the action's stored body to catch DEGRADED MODE / clarification / refusal text that slipped through draft-time classification), captures the executor's result, writes a standardized metadata.proof shape ({executedAt, artifactUrl, artifactId, executionStatus, failureReason, measurementDueAt}) on the action, and schedules the 24h followup via launchFollowupStore so chiefmo_post_launch_review fires automatically. Returns a uniform shape regardless of channel so the agent / Launch Room doesn't have to branch on connector type. For manual_handoff actions, returns guidance to call chieflab_record_manual_publish with the live URL instead. For blocked actions, returns the connector-wiring instruction.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| subject | No | For email sends: subject line override. Defaults to the action's stored subject when present. | |
| actionId | Yes | The publishAction.id whose executionMatrix you want to execute. The action must be in status='approved' (call chiefmo_approve_action first). | |
| mediaUrls | No | Optional media URLs (image / video) for social posts. Zernio uploads them to its CDN before posting. | |
| platforms | No | For oauth_connector (social): Zernio platform descriptors, e.g. [{platform: 'linkedin', accountId: '<id>'}]. Required for social posts unless the workspace has a default mapping; the tool refuses with reason='platforms_required' otherwise. | |
| recipients | No | For api_key_connector (email): recipient email addresses. Required for email sends unless the action carries a stored recipient list. | |
| workspaceId | No | Optional workspace id. |