Add Kadenzo app + Schedule a Post action#21256
Conversation
New app `kadenzo` (https://kadenzo.app), a social media scheduler. API-key auth; "Schedule a Post" action posts to the Kadenzo public API with a dynamic account picker. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
|
Thank you so much for submitting this! We've added it to our backlog to review, and our team has been notified. |
|
Thanks for submitting this PR! When we review PRs, we follow the Pipedream component guidelines. If you're not familiar, here's a quick checklist:
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughAdds a new Kadenzo package with app helpers, a Schedule a Post action, and documentation for setup and troubleshooting. ChangesKadenzo integration
Sequence Diagram(s)Schedule Post execution sequenceDiagram
participant SchedulePostAction
participant kadenzo.app.mjs
participant KadenzoAPI
SchedulePostAction->>kadenzo.app.mjs: schedulePost({ $, data })
kadenzo.app.mjs->>KadenzoAPI: POST /posts with account_ids, content, scheduled_for, media_urls
KadenzoAPI-->>kadenzo.app.mjs: response.id and response.scheduled_for
kadenzo.app.mjs-->>SchedulePostAction: API response
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@components/kadenzo/actions/schedule-post/schedule-post.mjs`:
- Around line 15-19: The schedule-post action currently allows an empty payload
when both content and mediaUrls are missing, which should be rejected before the
API call. Update run() in schedule-post.mjs to validate the inputs up front
using ConfigurationError and fail fast when neither content nor mediaUrls is
provided, keeping the existing content/mediaUrls contract enforced by the action
definition. Use the run() logic and the content prop metadata to locate the
validation point and ensure the invalid state is surfaced as a local
configuration error rather than a downstream 422.
- Around line 6-7: The top-level component description in schedule-post.mjs uses
the wrong documentation-link text; update the description string in the action
metadata so it ends with “[See the documentation](https://...)” instead of “[See
the docs](https://...)”. Make this change in the description field associated
with the schedule-post action, keeping the rest of the copy unchanged.
- Around line 3-10: The kadenzo-schedule-post action is missing the required
annotations metadata block, so add an annotations object to the exported action
definition in schedule-post.mjs alongside the existing key/name/type fields.
Make sure it includes readOnlyHint, destructiveHint, and openWorldHint, with
openWorldHint set to true for this external API action and the other two set
appropriately for a non-destructive scheduling operation. Use the default export
object as the location to update so the action contract is complete.
In `@components/kadenzo/kadenzo.app.mjs`:
- Around line 32-36: The `_makeRequest()` helper in `kadenzo.app.mjs` currently
builds a full `url` and replaces `headers`, which prevents per-request headers
from merging with the auth headers. Update `_makeRequest()` to follow the shared
request pattern: pass `baseURL` from `_baseUrl()` and keep `path` as the request
target, and merge `this._headers()` with any caller-provided `headers` inside
`opts` instead of overwriting them. Keep the fix localized to `_makeRequest()`
so future calls can add custom headers without clobbering defaults.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: d583be2d-d514-43cf-9ff8-7e3f4489de0e
📒 Files selected for processing (4)
components/kadenzo/README.mdcomponents/kadenzo/actions/schedule-post/schedule-post.mjscomponents/kadenzo/kadenzo.app.mjscomponents/kadenzo/package.json
… header merge - Add action annotations block (destructive/openWorld/readOnly hints) - Throw ConfigurationError when neither content nor media is provided - Use the [See the documentation](...) description format - Merge per-request headers in _makeRequest so they don't clobber auth Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a new app: Kadenzo (https://kadenzo.app), a social media scheduler.
kadenzo— needs API-key authentication (a single API key field). Users generate the key atstudio.kadenzo.app/dashboard/settings?section=api. The component reads it asthis.$auth.api_key— happy to match whatever field key you assign when the app is created.POST https://studio.kadenzo.app/api/v1/posts, with a dynamic account picker viaGET /accounts.First contribution — please let me know if the new-app auth needs to be set up on your side first.
Summary by CodeRabbit