Skip to content

Conversation

@luancazarine
Copy link
Collaborator

@luancazarine luancazarine commented Oct 22, 2025

Resolves #18770

Summary by CodeRabbit

  • New Features

    • Create, edit, delete, and list data connections with advanced configuration.
    • Create, update, and delete groups; manage group membership.
    • Run projects, retrieve run status, and list project runs.
    • List projects and data connections with filtering, sorting, and pagination.
    • Deactivate users.
    • Improved dynamic selection and pagination for choosing projects, runs, users, groups, and connections.
  • Chores

    • Package version bumped.

- Added prop definitions for project, run, user, group, and connection IDs in hex.app.mjs.
- Introduced new actions: create, edit, delete groups; create, update, list data connections; run projects; and get project runs and run status.
- Added utility functions for parsing objects and constants for sharing options and run statuses.
- Updated package version to 0.1.0 and added dependencies.
- Enhanced documentation links for actions and methods.
@luancazarine luancazarine linked an issue Oct 22, 2025 that may be closed by this pull request
@vercel
Copy link

vercel bot commented Oct 22, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
pipedream-docs Ignored Ignored Oct 24, 2025 1:38pm
pipedream-docs-redirect-do-not-edit Ignored Ignored Oct 24, 2025 1:38pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 22, 2025

Walkthrough

Adds a full Hex integration: an API client with request helpers and paginators, propDefinitions for dynamic options, 11 new action modules for projects/users/groups/data connections, shared constants and a parseObject utility, and a package.json version/dependency update.

Changes

Cohort / File(s) Summary
Action Modules
components/hex/actions/create-data-connection/create-data-connection.mjs, components/hex/actions/create-group/create-group.mjs, components/hex/actions/deactivate-user/deactivate-user.mjs, components/hex/actions/delete-group/delete-group.mjs, components/hex/actions/edit-data-connection/edit-data-connection.mjs, components/hex/actions/get-project-runs/get-project-runs.mjs, components/hex/actions/get-run-status/get-run-status.mjs, components/hex/actions/list-data-connections/list-data-connections.mjs, components/hex/actions/list-projects/list-projects.mjs, components/hex/actions/run-project/run-project.mjs, components/hex/actions/update-group/update-group.mjs
Eleven new action modules. Each exports a default action object (metadata, props including propDefinitions) and a run() that calls corresponding methods on the hex app client, builds request payloads (parsing nested JSON when applicable), exports summaries, and returns API responses.
Core Integration / App Client
components/hex/hex.app.mjs
Replaces placeholder with a full API client: propDefinitions for dynamic option loading, auth/header helpers (_apiUrl, _getHeaders, _makeRequest), endpoint wrappers (listProjects, listRuns, listUsers, deactivateUser, runProject, createGroup, listGroups, listDataConnections, updateGroup, deleteGroup, createDataConnection, updateDataConnection, getProjectRuns, getRunStatus), and generator-based paginators (paginate, paginateProjectRuns).
Shared Utilities
components/hex/common/constants.mjs, components/hex/common/utils.mjs
New constants exported (LIMIT, SHARING_WORKSPACE_PUBLIC_OPTIONS, SHARING_WORKSPACE_GUESTS_OPTIONS, SCHEMA_REFRESH_ACCESS_OPTIONS, TYPE_OPTIONS, RUN_STATUS_OPTIONS). New utility parseObject that safely parses JSON strings/arrays with fallbacks.
Package Metadata
components/hex/package.json
Version bumped 0.0.1 → 0.1.0 and adds dependency "@pipedream/platform": "^3.1.0".

Sequence Diagram(s)

sequenceDiagram
    participant User as User/Workflow
    participant Action as Action Module
    participant App as hex.app.mjs
    participant API as Hex API

    rect rgb(245,250,255)
    note right of Action: Build payload\n(parseObject for nested JSON)
    User->>Action: Invoke action with props
    Action->>App: this.hex.<endpoint>({ ..., $ })
    App->>App: Build URL & headers\napply pagination if needed
    App->>API: HTTP request
    API-->>App: Response
    App-->>Action: Return data
    Action->>User: Export summary + return response
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐇 I hopped through files to stitch a Hex tie,

parsed tiny JSON clouds in the sky.
Projects run, groups tidy and neat,
connections humming, responses sweet.
A carrot nibble — code ready to try!

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The pull request description is minimal and incomplete. It contains only "Resolves #18770" without any additional context or explanation. The repository's description template specifies a required "WHY" section that should explain the rationale for the changes, but this section is entirely absent from the provided description. While linking to the issue is helpful, the description fails to follow the established template structure or provide substantive information about the implementation. Update the pull request description to follow the template by adding a "WHY" section that explains the rationale for implementing Hex support. Include details such as addressing user requests for Hex integration, enabling specific workflows, or other motivations. This will help reviewers and future maintainers understand the context and purpose of these changes.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title Check ❓ Inconclusive The pull request title "18770 hex" is vague and generic, providing minimal meaningful information about the changes. While it references the issue number and service name, it does not describe what the changeset actually accomplishes. The title does not clarify that this PR implements a full Hex integration with multiple actions and API client support, making it difficult for someone scanning commit history to understand the primary change without additional context.
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues Check ✅ Passed The pull request implements all the functionality requested in issue #18770. Running projects is covered by run-project action, listing projects is addressed by list-projects and get-project-runs actions, user and group management is provided through create-group, update-group, delete-group, and deactivate-user actions, data connection configuration is supported via create-data-connection, edit-data-connection, and list-data-connections actions, and run status retrieval is handled by get-run-status. The supporting infrastructure including hex.app.mjs with full API client, constants, and utilities are all properly implemented to enable these actions to function correctly.
Out of Scope Changes Check ✅ Passed All changes in this pull request are directly related to implementing the Hex integration as specified in issue #18770. The action files implement the requested functionality, hex.app.mjs provides the necessary API client infrastructure, constants.mjs supplies configuration values used across actions, utils.mjs exports the parseObject utility required by multiple actions, and the package.json update adds the required @pipedream/platform dependency for error handling. No unrelated refactoring, debugging code, or extraneous modifications are present.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 18770-hex

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4f5abec and 9bfe7a7.

📒 Files selected for processing (3)
  • components/hex/actions/create-data-connection/create-data-connection.mjs (1 hunks)
  • components/hex/actions/list-data-connections/list-data-connections.mjs (1 hunks)
  • components/hex/actions/list-projects/list-projects.mjs (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • components/hex/actions/create-data-connection/create-data-connection.mjs
  • components/hex/actions/list-data-connections/list-data-connections.mjs
🧰 Additional context used
🧬 Code graph analysis (1)
components/hex/actions/list-projects/list-projects.mjs (2)
components/hex/actions/list-data-connections/list-data-connections.mjs (1)
  • response (44-52)
components/hex/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
⏰ 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). (4)
  • GitHub Check: Lint Code Base
  • GitHub Check: pnpm publish
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (3)
components/hex/actions/list-projects/list-projects.mjs (3)

1-15: Clean imports and metadata.

The action setup is correct with appropriate annotations for a read operation.


100-135: Implementation looks solid—previous issues resolved.

The run function correctly handles pagination, result accumulation, and error cases. Both issues flagged in previous reviews have been addressed:

  • The limit: 1 performance problem is gone
  • Error handling now defensively accesses error.response?.data?.reason with proper fallbacks

The use of parseObject on lines 111-112 appropriately normalizes the string[] inputs that may arrive as JSON strings from the Pipedream UI.


42-53: ****

The review comment's suggestion is based on a misunderstanding of the Hex API design. Admins can add new statuses and categories, or edit existing ones, in Settings → Organization, meaning these are custom and workspace-specific, not predefined values. Additionally, there is no direct method to retrieve metadata for Collections, Status, or Categories—this information is only available indirectly through references within Projects and Components.

The RUN_STATUS_OPTIONS constant in common/constants.mjs refers to project run statuses (e.g., "PENDING", "RUNNING"), not project statuses, so it's not applicable here. The current implementation—accepting statuses and categories as freeform string arrays—is correct because users pass custom, workspace-specific values that cannot be constrained to fixed options.

Likely an incorrect or invalid review comment.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

🧹 Nitpick comments (9)
components/hex/hex.app.mjs (1)

356-381: Consider refining pagination termination condition.

Line 378 sets hasMore = runs.length, which continues pagination as long as any runs are returned. While this works correctly (pagination stops when an empty array is returned), it may result in one extra API call when the total results are an exact multiple of LIMIT.

Consider this more explicit termination condition:

-        hasMore = runs.length;
+        hasMore = runs.length === LIMIT;

This stops pagination when fewer than LIMIT results are returned, avoiding the extra API call.

components/hex/actions/get-run-status/get-run-status.mjs (1)

9-12: Mark this action as read‑only

This performs a GET; set readOnlyHint to true for accurate metadata.

   annotations: {
     destructiveHint: false,
     openWorldHint: true,
-    readOnlyHint: false,
+    readOnlyHint: true,
   },
components/hex/actions/list-projects/list-projects.mjs (3)

10-14: Mark as read‑only

This lists data only; set readOnlyHint to true.

   annotations: {
     destructiveHint: false,
     openWorldHint: true,
-    readOnlyHint: false,
+    readOnlyHint: true,
   },

93-99: Add a sensible default for maxResults

Align with other list actions; default to 100 results unless overridden.

     maxResults: {
       type: "integer",
       label: "Max Results",
       description: "The maximum number of results to return.",
+      default: 100,
       optional: true,
     },

132-134: Harden error handling

response or response.data.reason may be undefined; guard and surface a useful message.

-    } catch ({ response }) {
-      throw new ConfigurationError(response.data.reason);
-    }
+    } catch (err) {
+      const reason =
+        err?.response?.data?.reason
+        || err?.response?.data?.message
+        || err?.response?.statusText
+        || err?.message
+        || "Unknown error";
+      throw new ConfigurationError(reason);
+    }
components/hex/actions/create-group/create-group.mjs (1)

39-41: Make users mapping resilient to both string IDs and objects

Support either "abc123" or { id: "abc123" } inputs.

-          users: this.users && parseObject(this.users)?.map((user) => ({
-            id: user,
-          })),
+          users: this.users && parseObject(this.users)?.map((u) => ({
+            id: typeof u === "string" ? u : (u?.id ?? u),
+          })),
components/hex/actions/create-data-connection/create-data-connection.mjs (1)

35-40: Fix incomplete suggested payload structure — add access field to match API schema

The groups prop is correctly identified as unused. The Hex API accepts sharing.groups, but the suggested Option A is incomplete. The API requires objects with both id and access fields, not just id. Update the suggestion to:

       data: {
         sharing: {
           workspace: {
             public: this.sharingWorkspacePublic,
             guests: this.sharingWorkspaceGuests,
             members: this.sharingWorkspaceMembers,
           },
+          groups: this.groups && parseObject(this.groups)?.map((item) => ({ id: item.id, access: "MEMBER" })),
         },

(Adjust the access value as needed per your use case; valid values: "NONE", "MEMBER", etc.)

Alternatively, remove the groups prop if this feature is not currently supported.

components/hex/actions/update-group/update-group.mjs (1)

44-51: Consider conditionally including optional fields.

Both name and users are optional, but they're always included in the data payload (even as undefined). Consider only including them when provided to avoid sending unnecessary fields to the API.

Apply this diff to conditionally include fields:

     data: {
-      name: this.name,
-      members: {
-        users: this.users && parseObject(this.users)?.map((user) => ({
-          id: user,
-        })),
-      },
+      ...(this.name && { name: this.name }),
+      ...(this.users && {
+        members: {
+          users: parseObject(this.users)?.map((user) => ({
+            id: user,
+          })),
+        },
+      }),
     },
components/hex/actions/edit-data-connection/edit-data-connection.mjs (1)

108-126: Consider making more fields optional and conditionally include them.

For an edit operation, users typically want to update specific fields without affecting others. Currently, all fields are included in the payload (even as undefined), which may cause unintended side effects depending on API behavior. Consider marking more props as optional and conditionally including them only when provided.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 88e141a and c39dee9.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (15)
  • components/hex/actions/create-data-connection/create-data-connection.mjs (1 hunks)
  • components/hex/actions/create-group/create-group.mjs (1 hunks)
  • components/hex/actions/deactivate-user/deactivate-user.mjs (1 hunks)
  • components/hex/actions/delete-group/delete-group.mjs (1 hunks)
  • components/hex/actions/edit-data-connection/edit-data-connection.mjs (1 hunks)
  • components/hex/actions/get-project-runs/get-project-runs.mjs (1 hunks)
  • components/hex/actions/get-run-status/get-run-status.mjs (1 hunks)
  • components/hex/actions/list-data-connections/list-data-connections.mjs (1 hunks)
  • components/hex/actions/list-projects/list-projects.mjs (1 hunks)
  • components/hex/actions/run-project/run-project.mjs (1 hunks)
  • components/hex/actions/update-group/update-group.mjs (1 hunks)
  • components/hex/common/constants.mjs (1 hunks)
  • components/hex/common/utils.mjs (1 hunks)
  • components/hex/hex.app.mjs (1 hunks)
  • components/hex/package.json (2 hunks)
🧰 Additional context used
🧬 Code graph analysis (12)
components/hex/actions/get-project-runs/get-project-runs.mjs (1)
components/hex/common/constants.mjs (2)
  • RUN_STATUS_OPTIONS (28-34)
  • RUN_STATUS_OPTIONS (28-34)
components/hex/common/constants.mjs (1)
components/hex/hex.app.mjs (1)
  • LIMIT (38-44)
components/hex/actions/delete-group/delete-group.mjs (3)
components/hex/actions/create-group/create-group.mjs (1)
  • response (34-44)
components/hex/actions/deactivate-user/deactivate-user.mjs (1)
  • response (26-29)
components/hex/actions/update-group/update-group.mjs (1)
  • response (41-52)
components/hex/actions/list-data-connections/list-data-connections.mjs (2)
components/hex/actions/get-project-runs/get-project-runs.mjs (1)
  • response (39-47)
components/hex/actions/list-projects/list-projects.mjs (2)
  • response (102-120)
  • results (122-122)
components/hex/actions/deactivate-user/deactivate-user.mjs (1)
components/hex/actions/delete-group/delete-group.mjs (1)
  • response (24-27)
components/hex/actions/create-data-connection/create-data-connection.mjs (2)
components/hex/actions/edit-data-connection/edit-data-connection.mjs (1)
  • response (105-127)
components/hex/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
components/hex/actions/list-projects/list-projects.mjs (3)
components/hex/actions/get-project-runs/get-project-runs.mjs (1)
  • response (39-47)
components/hex/actions/list-data-connections/list-data-connections.mjs (1)
  • response (44-52)
components/hex/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
components/hex/actions/edit-data-connection/edit-data-connection.mjs (2)
components/hex/actions/create-data-connection/create-data-connection.mjs (1)
  • response (103-125)
components/hex/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
components/hex/hex.app.mjs (2)
components/hex/common/constants.mjs (10)
  • LIMIT (1-1)
  • LIMIT (1-1)
  • SHARING_WORKSPACE_PUBLIC_OPTIONS (3-6)
  • SHARING_WORKSPACE_PUBLIC_OPTIONS (3-6)
  • SHARING_WORKSPACE_GUESTS_OPTIONS (8-12)
  • SHARING_WORKSPACE_GUESTS_OPTIONS (8-12)
  • SCHEMA_REFRESH_ACCESS_OPTIONS (14-17)
  • SCHEMA_REFRESH_ACCESS_OPTIONS (14-17)
  • TYPE_OPTIONS (19-26)
  • TYPE_OPTIONS (19-26)
components/hex/actions/get-project-runs/get-project-runs.mjs (1)
  • runs (49-49)
components/hex/actions/create-group/create-group.mjs (2)
components/hex/actions/update-group/update-group.mjs (1)
  • response (41-52)
components/hex/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
components/hex/actions/get-run-status/get-run-status.mjs (3)
components/hex/actions/deactivate-user/deactivate-user.mjs (1)
  • response (26-29)
components/hex/actions/delete-group/delete-group.mjs (1)
  • response (24-27)
components/hex/actions/run-project/run-project.mjs (1)
  • response (64-75)
components/hex/actions/update-group/update-group.mjs (2)
components/hex/actions/create-group/create-group.mjs (1)
  • response (34-44)
components/hex/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
🔇 Additional comments (10)
components/hex/package.json (1)

3-3: LGTM! Appropriate version bump and dependency addition.

The version bump to 0.1.0 correctly reflects the addition of new features, and the @pipedream/platform dependency aligns with the platform imports used across the action modules.

Also applies to: 15-17

components/hex/common/constants.mjs (1)

1-34: LGTM! Well-organized constants.

The constants are properly defined and provide consistent option sets for the Hex integration actions.

components/hex/hex.app.mjs (2)

1-9: LGTM! Well-structured API client implementation.

The API client methods, propDefinitions, and cursor-based pagination implementation follow best practices and provide a comprehensive interface to the Hex API.

Also applies to: 13-30, 48-219, 234-310, 327-355


31-47: Offset-based pagination for runId is correct.

Hex's runs endpoints support offset/limit pagination with query parameters limit (integer 1–100) and offset (integer ≥0). The implementation at lines 40–43 correctly uses this approach, which differs from other props only because they target different API endpoints with different pagination requirements. No changes needed.

components/hex/actions/deactivate-user/deactivate-user.mjs (1)

1-37: LGTM! Proper error handling implemented.

The action correctly implements error handling with try/catch and ConfigurationError, providing clear feedback to users.

components/hex/actions/run-project/run-project.mjs (1)

1-84: LGTM! Comprehensive project run configuration.

The action provides thorough configuration options for running Hex projects with proper error handling.

components/hex/common/utils.mjs (1)

1-24: LGTM! Robust parseObject utility.

The function correctly handles various input types with appropriate error handling for JSON parsing failures.

components/hex/actions/get-run-status/get-run-status.mjs (1)

32-41: LGTM on core logic

Prop wiring and API call pattern match existing actions; summary is clear.

components/hex/actions/get-project-runs/get-project-runs.mjs (1)

38-59: LGTM on pagination loop

Use of paginateProjectRuns + async iteration and summary pluralization looks good.

components/hex/actions/create-group/create-group.mjs (1)

34-47: LGTM

API call wiring and summary look correct.

luancazarine and others added 7 commits October 22, 2025 13:02
…ection.mjs

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…on.mjs

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…ions.mjs

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
- Removed the 'groups' prop definition from edit-data-connection.mjs.
- Updated the name of the action in get-project-runs.mjs from "Run Project Runs" to "Get Project Runs".
jcortes
jcortes previously approved these changes Oct 22, 2025
Copy link
Collaborator

@jcortes jcortes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @luancazarine lgtm! Ready for QA!

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

♻️ Duplicate comments (1)
components/hex/actions/get-project-runs/get-project-runs.mjs (1)

9-13: Fix readOnlyHint annotation.

The readOnlyHint is still set to false but this action performs a read-only GET operation. It should be marked as true.

Apply this diff:

   annotations: {
     destructiveHint: false,
     openWorldHint: true,
-    readOnlyHint: false,
+    readOnlyHint: true,
   },
🧹 Nitpick comments (1)
components/hex/actions/list-projects/list-projects.mjs (1)

77-91: Consider extracting sort options to constants.

The hardcoded options for sortBy and sortDirection could be extracted to a shared constants file for better maintainability, especially if used in other actions.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c39dee9 and 4f5abec.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (5)
  • components/hex/actions/create-data-connection/create-data-connection.mjs (1 hunks)
  • components/hex/actions/edit-data-connection/edit-data-connection.mjs (1 hunks)
  • components/hex/actions/get-project-runs/get-project-runs.mjs (1 hunks)
  • components/hex/actions/list-data-connections/list-data-connections.mjs (1 hunks)
  • components/hex/actions/list-projects/list-projects.mjs (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (5)
components/hex/actions/list-projects/list-projects.mjs (3)
components/hex/actions/get-project-runs/get-project-runs.mjs (1)
  • response (39-47)
components/hex/actions/list-data-connections/list-data-connections.mjs (1)
  • response (44-52)
components/hex/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
components/hex/actions/list-data-connections/list-data-connections.mjs (1)
components/hex/actions/list-projects/list-projects.mjs (2)
  • response (102-119)
  • results (121-121)
components/hex/actions/get-project-runs/get-project-runs.mjs (1)
components/hex/common/constants.mjs (2)
  • RUN_STATUS_OPTIONS (28-34)
  • RUN_STATUS_OPTIONS (28-34)
components/hex/actions/edit-data-connection/edit-data-connection.mjs (2)
components/hex/actions/create-data-connection/create-data-connection.mjs (1)
  • response (103-125)
components/hex/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
components/hex/actions/create-data-connection/create-data-connection.mjs (2)
components/hex/actions/edit-data-connection/edit-data-connection.mjs (1)
  • response (99-121)
components/hex/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
⏰ 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). (4)
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: pnpm publish
  • GitHub Check: Lint Code Base
🔇 Additional comments (9)
components/hex/actions/get-project-runs/get-project-runs.mjs (2)

15-37: LGTM!

The props are well-structured with appropriate types, descriptions, and defaults. The use of propDefinition for projectId and constants for status options follows best practices.


38-60: LGTM!

The run function correctly implements the pagination pattern, accumulates results, and provides clear feedback. The pluralization in the summary message is a nice touch.

components/hex/actions/list-data-connections/list-data-connections.mjs (1)

43-63: LGTM! The run method correctly returns the collected results.

The pagination logic properly collects items into an array and returns that array. The summary message accurately reports the count.

components/hex/actions/edit-data-connection/edit-data-connection.mjs (4)

1-3: LGTM!

Imports are clean and necessary for the action implementation.


4-14: LGTM!

Metadata and annotations are appropriate for an edit data connection action.


15-97: LGTM!

Props are well-structured and follow the propDefinition pattern consistently. The previously flagged unused groups prop has been removed.


98-126: LGTM!

The run method correctly builds the update payload and the previously incorrect summary message has been fixed. The implementation follows the established pattern from similar actions.

components/hex/actions/create-data-connection/create-data-connection.mjs (2)

1-2: LGTM!

Imports are correct and both are utilized in the action.


102-129: LGTM overall!

The run method correctly constructs the payload and calls the Hex API. The use of parseObject for nested structures is appropriate, and the summary export accurately reflects the created resource. However, ensure the groups prop concern (if applicable) is addressed.

- Removed unused 'groups' prop definition from create-data-connection action.
- Updated 'readOnlyHint' to true in list-data-connections action.
- Improved error handling in list-projects action to provide more informative error messages.
@luancazarine
Copy link
Collaborator Author

/approve

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Hex

2 participants