-
Notifications
You must be signed in to change notification settings - Fork 5.5k
[Components] Ashby - new components #18968
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
|
WalkthroughAdds a new Ashby component: multiple action modules for create/list operations, an app module implementing HTTP, auth, pagination and API wrappers, a parseJson utility, and package version/dependency updates. Changes
Sequence Diagram(s)sequenceDiagram
participant User as Workflow/User
participant Action as Action Module
participant App as App Module
participant API as Ashby API
User->>Action: run({ $ })
Action->>Action: read props from this
Action->>App: call app.createCandidate/createApplication/createOffer/createInterviewSchedule(...)
App->>App: getAuth() / getHeaders()
App->>App: makeRequest / post (build request)
App->>API: HTTP request
API-->>App: response
App-->>Action: return response
Action->>Action: $.export("$summary", "...")
Action-->>User: return response
sequenceDiagram
participant User as Workflow/User
participant ListAction as List Applications Action
participant App as App Module
participant Paginate as Paginate Utility
participant API as Ashby API
User->>ListAction: run({ $ })
ListAction->>App: app.paginate({ fn: app.listApplications, fnArgs, max, keyField })
loop pages
Paginate->>App: app.listApplications(fnArgs)
App->>API: HTTP POST with syncToken
API-->>App: { results: [...], nextCursor? }
App-->>Paginate: page
Paginate->>Paginate: accumulate results
alt nextCursor exists and under max
Paginate->>Paginate: update fnArgs.syncToken
else
Paginate->>Paginate: stop
end
end
Paginate-->>ListAction: aggregated items
ListAction->>ListAction: $.export("$summary", count)
ListAction-->>User: return aggregated items
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: ASSERTIVE Plan: Pro ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (8)
🧰 Additional context used🧠 Learnings (6)📚 Learning: 2024-12-12T19:23:09.039ZApplied to files:
📚 Learning: 2024-10-30T15:24:39.294ZApplied to files:
📚 Learning: 2025-07-09T18:07:12.426ZApplied to files:
📚 Learning: 2025-06-04T17:52:05.780ZApplied to files:
📚 Learning: 2024-09-25T16:13:11.505ZApplied to files:
📚 Learning: 2025-09-15T22:01:11.472ZApplied to files:
🧬 Code graph analysis (7)components/ashby/common/utils.mjs (1)
components/ashby/actions/create-interview-schedule/create-interview-schedule.mjs (2)
components/ashby/actions/list-applications/list-applications.mjs (2)
components/ashby/actions/create-application/create-application.mjs (2)
components/ashby/actions/create-candidate/create-candidate.mjs (1)
components/ashby/actions/create-offer/create-offer.mjs (3)
components/ashby/ashby.app.mjs (5)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
Comment |
260b59e to
1ef0fae
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (8)
components/ashby/actions/create-application/create-application.mjs(1 hunks)components/ashby/actions/create-candidate/create-candidate.mjs(1 hunks)components/ashby/actions/create-interview-schedule/create-interview-schedule.mjs(1 hunks)components/ashby/actions/create-offer/create-offer.mjs(1 hunks)components/ashby/actions/list-applications/list-applications.mjs(1 hunks)components/ashby/ashby.app.mjs(1 hunks)components/ashby/common/utils.mjs(1 hunks)components/ashby/package.json(2 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.
Applied to files:
components/ashby/package.json
📚 Learning: 2024-10-30T15:24:39.294Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".
Applied to files:
components/ashby/actions/create-offer/create-offer.mjscomponents/ashby/actions/create-candidate/create-candidate.mjscomponents/ashby/actions/create-application/create-application.mjs
📚 Learning: 2025-06-04T17:52:05.780Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: In the Salesloft API integration (components/salesloft/salesloft.app.mjs), the _makeRequest method returns response.data which directly contains arrays for list endpoints like listPeople, listCadences, listUsers, and listAccounts. The propDefinitions correctly call .map() directly on these responses without needing to destructure a nested data property.
Applied to files:
components/ashby/ashby.app.mjs
📚 Learning: 2025-09-15T22:01:11.472Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 18362
File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105
Timestamp: 2025-09-15T22:01:11.472Z
Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.
Applied to files:
components/ashby/ashby.app.mjs
🧬 Code graph analysis (6)
components/ashby/actions/create-offer/create-offer.mjs (2)
components/ashby/actions/create-interview-schedule/create-interview-schedule.mjs (1)
response(59-65)components/ashby/ashby.app.mjs (2)
response(247-252)response(345-352)
components/ashby/ashby.app.mjs (5)
components/ashby/actions/create-application/create-application.mjs (1)
response(82-93)components/ashby/actions/create-candidate/create-candidate.mjs (1)
response(112-135)components/ashby/actions/create-interview-schedule/create-interview-schedule.mjs (1)
response(59-65)components/ashby/actions/create-offer/create-offer.mjs (1)
response(53-62)components/ashby/actions/list-applications/list-applications.mjs (1)
response(75-91)
components/ashby/actions/create-candidate/create-candidate.mjs (2)
components/ashby/actions/create-application/create-application.mjs (1)
response(82-93)components/ashby/ashby.app.mjs (2)
response(247-252)response(345-352)
components/ashby/actions/list-applications/list-applications.mjs (1)
components/ashby/ashby.app.mjs (2)
response(247-252)response(345-352)
components/ashby/actions/create-application/create-application.mjs (5)
components/ashby/actions/create-candidate/create-candidate.mjs (1)
response(112-135)components/ashby/actions/create-interview-schedule/create-interview-schedule.mjs (1)
response(59-65)components/ashby/actions/create-offer/create-offer.mjs (1)
response(53-62)components/ashby/actions/list-applications/list-applications.mjs (1)
response(75-91)components/ashby/ashby.app.mjs (2)
response(247-252)response(345-352)
components/ashby/actions/create-interview-schedule/create-interview-schedule.mjs (2)
components/ashby/actions/create-offer/create-offer.mjs (1)
response(53-62)components/ashby/ashby.app.mjs (2)
response(247-252)response(345-352)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Publish TypeScript components
- GitHub Check: Verify TypeScript components
- GitHub Check: Lint Code Base
🔇 Additional comments (1)
components/ashby/actions/create-candidate/create-candidate.mjs (1)
124-133: Consider filtering undefined location fields.The current logic includes all location fields (city, region, country) if any one is truthy, resulting in
undefinedvalues for unset fields. While the API may ignore these, it's cleaner to only include defined fields.Apply this diff for cleaner object construction:
- ...(city || region || country - ? { - location: { - city, - region, - country, - }, - } - : undefined - ), + ...(city || region || country + ? { + location: Object.fromEntries( + Object.entries({ city, region, country }) + .filter(([_, v]) => v !== undefined) + ), + } + : {} + ),⛔ Skipped due to learnings
Learnt from: GTFalcao Repo: PipedreamHQ/pipedream PR: 18362 File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105 Timestamp: 2025-09-15T22:01:11.472Z Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.
1ef0fae to
a540a35
Compare
WHY
Resolves #18724
Summary by CodeRabbit