From 80e253e0578511453bb172e3442c6de905402625 Mon Sep 17 00:00:00 2001 From: Sergio Eliot Rodriguez Wong Date: Sun, 17 May 2026 17:31:38 -0700 Subject: [PATCH 01/11] feat(hedy): add 20 AI-optimized MCP actions Adds a complete set of AI-optimized actions for the Hedy meeting intelligence platform covering sessions, highlights, todos, topics, and session contexts. New actions: - get-current-user: identity / account details - get-many-sessions, get-session: browse and fetch meeting sessions - get-many-highlights, get-highlights-by-session, get-highlight: AI-generated meeting highlights - get-many-todos, get-todos-by-session, get-todo: action items from meetings - get-many-topics, get-topic, get-topic-sessions: topic management (read) - create-topic, update-topic, delete-topic: topic management (write) - get-many-session-contexts, get-session-context: reusable AI instruction contexts (read) - create-session-context, update-session-context, delete-session-context: contexts (write) App file changes: - Added _baseUrl(), _headers(), _makeRequest() HTTP helpers - Added 19 resource methods covering all API endpoints - Added shared propDefinitions for sessionId, topicId, highlightId, todoId, contextId, limit, and after (pagination cursor) Co-Authored-By: Claude Sonnet 4.6 --- .../create-session-context.mjs | 54 ++++ .../actions/create-topic/create-topic.mjs | 66 +++++ .../delete-session-context.mjs | 34 +++ .../actions/delete-topic/delete-topic.mjs | 33 +++ .../get-current-user/get-current-user.mjs | 27 ++ .../actions/get-highlight/get-highlight.mjs | 34 +++ .../get-highlights-by-session.mjs | 55 ++++ .../get-many-highlights.mjs | 48 ++++ .../get-many-session-contexts.mjs | 30 +++ .../get-many-sessions/get-many-sessions.mjs | 49 ++++ .../actions/get-many-todos/get-many-todos.mjs | 48 ++++ .../get-many-topics/get-many-topics.mjs | 29 +++ .../get-session-context.mjs | 35 +++ .../hedy/actions/get-session/get-session.mjs | 34 +++ components/hedy/actions/get-todo/get-todo.mjs | 44 ++++ .../get-todos-by-session.mjs | 55 ++++ .../get-topic-sessions/get-topic-sessions.mjs | 54 ++++ .../hedy/actions/get-topic/get-topic.mjs | 35 +++ .../update-session-context.mjs | 59 +++++ .../actions/update-topic/update-topic.mjs | 73 ++++++ components/hedy/hedy.app.mjs | 237 +++++++++++++++++- components/hedy/package.json | 2 +- 22 files changed, 1130 insertions(+), 5 deletions(-) create mode 100644 components/hedy/actions/create-session-context/create-session-context.mjs create mode 100644 components/hedy/actions/create-topic/create-topic.mjs create mode 100644 components/hedy/actions/delete-session-context/delete-session-context.mjs create mode 100644 components/hedy/actions/delete-topic/delete-topic.mjs create mode 100644 components/hedy/actions/get-current-user/get-current-user.mjs create mode 100644 components/hedy/actions/get-highlight/get-highlight.mjs create mode 100644 components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs create mode 100644 components/hedy/actions/get-many-highlights/get-many-highlights.mjs create mode 100644 components/hedy/actions/get-many-session-contexts/get-many-session-contexts.mjs create mode 100644 components/hedy/actions/get-many-sessions/get-many-sessions.mjs create mode 100644 components/hedy/actions/get-many-todos/get-many-todos.mjs create mode 100644 components/hedy/actions/get-many-topics/get-many-topics.mjs create mode 100644 components/hedy/actions/get-session-context/get-session-context.mjs create mode 100644 components/hedy/actions/get-session/get-session.mjs create mode 100644 components/hedy/actions/get-todo/get-todo.mjs create mode 100644 components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs create mode 100644 components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs create mode 100644 components/hedy/actions/get-topic/get-topic.mjs create mode 100644 components/hedy/actions/update-session-context/update-session-context.mjs create mode 100644 components/hedy/actions/update-topic/update-topic.mjs diff --git a/components/hedy/actions/create-session-context/create-session-context.mjs b/components/hedy/actions/create-session-context/create-session-context.mjs new file mode 100644 index 0000000000000..71eed45f853b0 --- /dev/null +++ b/components/hedy/actions/create-session-context/create-session-context.mjs @@ -0,0 +1,54 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-create-session-context", + name: "Create Session Context", + description: "Creates a new reusable Hedy session context — a named set of custom AI instructions that can be applied to meeting recordings to guide analysis." + + " Free accounts are limited to 1 context; Pro accounts can create multiple." + + " Set `isDefault` to `true` to make this context automatically applied to new sessions." + + " Use **Update Session Context** to modify an existing context, or **Delete Session Context** to remove one." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + app, + title: { + type: "string", + label: "Title", + description: "The context name (maximum 200 characters).", + }, + content: { + type: "string", + label: "Content", + description: "The custom AI instruction text for this context (maximum 20,000 characters). Describe how Hedy should analyze meetings — e.g., focus areas, summary style, or specific data to extract.", + optional: true, + }, + isDefault: { + type: "boolean", + label: "Set as Default", + description: "Set to `true` to make this the default context automatically applied to new sessions.", + optional: true, + default: false, + }, + }, + async run({ $ }) { + const data = { + title: this.title, + }; + if (this.content) data.content = this.content; + if (this.isDefault !== undefined) data.isDefault = this.isDefault; + + const response = await this.app.createContext({ + $, + data, + }); + const context = response?.data || response; + $.export("$summary", `Created session context: ${context?.title || this.title}`); + return response; + }, +}; diff --git a/components/hedy/actions/create-topic/create-topic.mjs b/components/hedy/actions/create-topic/create-topic.mjs new file mode 100644 index 0000000000000..8c1406d4b11be --- /dev/null +++ b/components/hedy/actions/create-topic/create-topic.mjs @@ -0,0 +1,66 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-create-topic", + name: "Create Topic", + description: "Creates a new Hedy meeting topic for organizing sessions." + + " Topics can include a custom AI analysis context (`topicContext`) — up to 20,000 characters of instructions that guide Hedy's AI when analyzing meetings in this topic." + + " Use **Update Topic** to modify an existing topic, or **Delete Topic** to remove one." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + app, + name: { + type: "string", + label: "Name", + description: "The topic name (maximum 100 characters).", + }, + description: { + type: "string", + label: "Description", + description: "An optional description of the topic (maximum 500 characters).", + optional: true, + }, + color: { + type: "string", + label: "Color", + description: "Optional hex color code for the topic (e.g. `#4CAF50`).", + optional: true, + }, + iconName: { + type: "string", + label: "Icon Name", + description: "Optional icon identifier for the topic.", + optional: true, + }, + topicContext: { + type: "string", + label: "Topic Context", + description: "Optional custom AI instructions for analyzing sessions in this topic (maximum 20,000 characters). Use this to focus Hedy's analysis on specific themes, extract particular insights, or follow custom frameworks.", + optional: true, + }, + }, + async run({ $ }) { + const data = { + name: this.name, + }; + if (this.description) data.description = this.description; + if (this.color) data.color = this.color; + if (this.iconName) data.iconName = this.iconName; + if (this.topicContext) data.topicContext = this.topicContext; + + const response = await this.app.createTopic({ + $, + data, + }); + const topic = response?.data || response; + $.export("$summary", `Created topic: ${topic?.name || this.name}`); + return response; + }, +}; diff --git a/components/hedy/actions/delete-session-context/delete-session-context.mjs b/components/hedy/actions/delete-session-context/delete-session-context.mjs new file mode 100644 index 0000000000000..d8c6299fa0507 --- /dev/null +++ b/components/hedy/actions/delete-session-context/delete-session-context.mjs @@ -0,0 +1,34 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-delete-session-context", + name: "Delete Session Context", + description: "Deletes a Hedy session context. This action is irreversible." + + " If you delete the current default context, the most recently created remaining context is automatically promoted to default." + + " Use **Get Many Session Contexts** to find the context ID before deleting." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: true, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + app, + contextId: { + propDefinition: [ + app, + "contextId", + ], + }, + }, + async run({ $ }) { + const response = await this.app.deleteContext({ + $, + contextId: this.contextId, + }); + $.export("$summary", `Deleted session context ${this.contextId}`); + return response; + }, +}; diff --git a/components/hedy/actions/delete-topic/delete-topic.mjs b/components/hedy/actions/delete-topic/delete-topic.mjs new file mode 100644 index 0000000000000..8ae3327d7c17e --- /dev/null +++ b/components/hedy/actions/delete-topic/delete-topic.mjs @@ -0,0 +1,33 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-delete-topic", + name: "Delete Topic", + description: "Deletes a Hedy topic. Sessions that were linked to the topic are NOT deleted — they are unlinked and remain in your account." + + " This action is irreversible. Use **Get Many Topics** to find the topic ID before deleting." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: true, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + app, + topicId: { + propDefinition: [ + app, + "topicId", + ], + }, + }, + async run({ $ }) { + const response = await this.app.deleteTopic({ + $, + topicId: this.topicId, + }); + $.export("$summary", `Deleted topic ${this.topicId}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-current-user/get-current-user.mjs b/components/hedy/actions/get-current-user/get-current-user.mjs new file mode 100644 index 0000000000000..f007361b5138d --- /dev/null +++ b/components/hedy/actions/get-current-user/get-current-user.mjs @@ -0,0 +1,27 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-current-user", + name: "Get Current User", + description: "Retrieves the account details for the authenticated Hedy user, including email, display name, and plan information." + + " Use this tool first to establish identity — the returned user ID anchors queries like 'my sessions' or 'my topics'." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + }, + async run({ $ }) { + const response = await this.app.getCurrentUser({ + $, + }); + const user = response?.data || response; + $.export("$summary", `Retrieved account details for ${user?.email || user?.name || "user"}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-highlight/get-highlight.mjs b/components/hedy/actions/get-highlight/get-highlight.mjs new file mode 100644 index 0000000000000..73ab69ac7470f --- /dev/null +++ b/components/hedy/actions/get-highlight/get-highlight.mjs @@ -0,0 +1,34 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-highlight", + name: "Get Highlight", + description: "Retrieves full details for a single AI-generated highlight by ID, including the raw quote, cleaned quote, main idea, and AI insight." + + " Use **Get Many Highlights** or **Get Highlights By Session** first to find a highlight ID." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + highlightId: { + propDefinition: [ + app, + "highlightId", + ], + }, + }, + async run({ $ }) { + const response = await this.app.getHighlight({ + $, + highlightId: this.highlightId, + }); + const highlight = response?.data || response; + $.export("$summary", `Retrieved highlight: ${highlight?.title || this.highlightId}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs b/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs new file mode 100644 index 0000000000000..a6e3ee17d3f6e --- /dev/null +++ b/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs @@ -0,0 +1,55 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-highlights-by-session", + name: "Get Highlights By Session", + description: "Retrieves all AI-generated highlights for a specific Hedy session." + + " Use **Get Many Sessions** first to find the session ID." + + " Each result includes a highlight ID, title, and timestamp within the session." + + " Use **Get Highlight** with the highlight ID to fetch the full detail including raw quote, cleaned quote, main idea, and AI insight." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + sessionId: { + propDefinition: [ + app, + "sessionId", + ], + }, + limit: { + propDefinition: [ + app, + "limit", + ], + }, + after: { + propDefinition: [ + app, + "after", + ], + }, + }, + async run({ $ }) { + const params = {}; + if (this.limit) params.limit = this.limit; + if (this.after) params.after = this.after; + + const response = await this.app.getHighlightsBySession({ + $, + sessionId: this.sessionId, + params, + }); + const highlights = response?.data || []; + $.export("$summary", `Retrieved ${highlights.length} highlight${highlights.length === 1 + ? "" + : "s"} for session ${this.sessionId}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-many-highlights/get-many-highlights.mjs b/components/hedy/actions/get-many-highlights/get-many-highlights.mjs new file mode 100644 index 0000000000000..861e105b56cc0 --- /dev/null +++ b/components/hedy/actions/get-many-highlights/get-many-highlights.mjs @@ -0,0 +1,48 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-many-highlights", + name: "Get Many Highlights", + description: "Retrieves a paginated list of AI-generated highlights across all Hedy sessions." + + " Each highlight includes a title, timestamp, and the session it came from." + + " Use **Get Highlight** with a specific highlight ID to fetch the full detail including raw quote, cleaned quote, main idea, and AI insight." + + " To list highlights for a specific session only, use **Get Highlights By Session**." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + limit: { + propDefinition: [ + app, + "limit", + ], + }, + after: { + propDefinition: [ + app, + "after", + ], + }, + }, + async run({ $ }) { + const params = {}; + if (this.limit) params.limit = this.limit; + if (this.after) params.after = this.after; + + const response = await this.app.listHighlights({ + $, + params, + }); + const highlights = response?.data || []; + $.export("$summary", `Retrieved ${highlights.length} highlight${highlights.length === 1 + ? "" + : "s"}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-many-session-contexts/get-many-session-contexts.mjs b/components/hedy/actions/get-many-session-contexts/get-many-session-contexts.mjs new file mode 100644 index 0000000000000..26bcd7cf0418d --- /dev/null +++ b/components/hedy/actions/get-many-session-contexts/get-many-session-contexts.mjs @@ -0,0 +1,30 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-many-session-contexts", + name: "Get Many Session Contexts", + description: "Retrieves all reusable Hedy session contexts, including title, content, and which one is set as the default." + + " Session contexts are custom AI instruction sets that guide Hedy's analysis of meeting recordings." + + " Use this tool to browse available contexts or to find a context ID to pass to **Get Session Context**, **Update Session Context**, or **Delete Session Context**." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + }, + async run({ $ }) { + const response = await this.app.listContexts({ + $, + }); + const contexts = response?.data || []; + $.export("$summary", `Retrieved ${contexts.length} session context${contexts.length === 1 + ? "" + : "s"}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-many-sessions/get-many-sessions.mjs b/components/hedy/actions/get-many-sessions/get-many-sessions.mjs new file mode 100644 index 0000000000000..02f8f765dcd82 --- /dev/null +++ b/components/hedy/actions/get-many-sessions/get-many-sessions.mjs @@ -0,0 +1,49 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-many-sessions", + name: "Get Many Sessions", + description: "Retrieves a paginated list of Hedy meeting sessions ordered from most recent." + + " Each session includes its title, start/end times, duration, and session type." + + " Use this tool to browse recent meetings or to find a session ID to pass to **Get Session** for full transcript and summary details." + + " To list sessions within a specific topic, use **Get Topic Sessions** instead." + + " Paginate using the `after` cursor from the response's `pagination` field." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + limit: { + propDefinition: [ + app, + "limit", + ], + }, + after: { + propDefinition: [ + app, + "after", + ], + }, + }, + async run({ $ }) { + const params = {}; + if (this.limit) params.limit = this.limit; + if (this.after) params.after = this.after; + + const response = await this.app.listSessions({ + $, + params, + }); + const sessions = response?.data || []; + $.export("$summary", `Retrieved ${sessions.length} session${sessions.length === 1 + ? "" + : "s"}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-many-todos/get-many-todos.mjs b/components/hedy/actions/get-many-todos/get-many-todos.mjs new file mode 100644 index 0000000000000..6c5d4cbf60afa --- /dev/null +++ b/components/hedy/actions/get-many-todos/get-many-todos.mjs @@ -0,0 +1,48 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-many-todos", + name: "Get Many Todos", + description: "Retrieves a paginated list of action items (todos) across all Hedy sessions." + + " Each item includes the todo text, completion status, optional due date, and the session it came from." + + " To get todos for a specific session only, use **Get Todos By Session**." + + " Use **Get Todo** with a specific todo ID to fetch a single item's full detail." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + limit: { + propDefinition: [ + app, + "limit", + ], + }, + after: { + propDefinition: [ + app, + "after", + ], + }, + }, + async run({ $ }) { + const params = {}; + if (this.limit) params.limit = this.limit; + if (this.after) params.after = this.after; + + const response = await this.app.listTodos({ + $, + params, + }); + const todos = response?.data || []; + $.export("$summary", `Retrieved ${todos.length} todo${todos.length === 1 + ? "" + : "s"}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-many-topics/get-many-topics.mjs b/components/hedy/actions/get-many-topics/get-many-topics.mjs new file mode 100644 index 0000000000000..a62b9d2723d54 --- /dev/null +++ b/components/hedy/actions/get-many-topics/get-many-topics.mjs @@ -0,0 +1,29 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-many-topics", + name: "Get Many Topics", + description: "Retrieves all Hedy meeting topics with their session counts, last session date, dominant session type, and cached AI overview." + + " Use this tool to browse available topics or to find a topic ID to pass to **Get Topic**, **Get Topic Sessions**, **Update Topic**, or **Delete Topic**." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + }, + async run({ $ }) { + const response = await this.app.listTopics({ + $, + }); + const topics = response?.data || []; + $.export("$summary", `Retrieved ${topics.length} topic${topics.length === 1 + ? "" + : "s"}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-session-context/get-session-context.mjs b/components/hedy/actions/get-session-context/get-session-context.mjs new file mode 100644 index 0000000000000..d0c68b6f82b3d --- /dev/null +++ b/components/hedy/actions/get-session-context/get-session-context.mjs @@ -0,0 +1,35 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-session-context", + name: "Get Session Context", + description: "Retrieves full details for a single reusable Hedy session context by ID, including the title, content, and whether it is the default context." + + " Session contexts are reusable custom AI instruction sets that guide Hedy's analysis across multiple meetings." + + " Use **Get Many Session Contexts** first to list available contexts and obtain a context ID." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + contextId: { + propDefinition: [ + app, + "contextId", + ], + }, + }, + async run({ $ }) { + const response = await this.app.getContext({ + $, + contextId: this.contextId, + }); + const context = response?.data || response; + $.export("$summary", `Retrieved session context: ${context?.title || this.contextId}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-session/get-session.mjs b/components/hedy/actions/get-session/get-session.mjs new file mode 100644 index 0000000000000..aced1d0fb2972 --- /dev/null +++ b/components/hedy/actions/get-session/get-session.mjs @@ -0,0 +1,34 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-session", + name: "Get Session", + description: "Retrieves full details for a single Hedy meeting session by ID, including the complete transcript, meeting minutes, recap, session notes, highlights array, and action items (todos)." + + " Use **Get Many Sessions** first to list sessions and obtain a session ID." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + sessionId: { + propDefinition: [ + app, + "sessionId", + ], + }, + }, + async run({ $ }) { + const response = await this.app.getSession({ + $, + sessionId: this.sessionId, + }); + const session = response?.data || response; + $.export("$summary", `Retrieved session: ${session?.title || this.sessionId}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-todo/get-todo.mjs b/components/hedy/actions/get-todo/get-todo.mjs new file mode 100644 index 0000000000000..4210825b7b3e7 --- /dev/null +++ b/components/hedy/actions/get-todo/get-todo.mjs @@ -0,0 +1,44 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-todo", + name: "Get Todo", + description: "Retrieves a single action item (todo) by its ID within a session, returning text, completion status, due date, and associated topic." + + " Both the session ID and todo ID are required." + + " Use **Get Todos By Session** first to list todos for a session and obtain todo IDs." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + sessionId: { + propDefinition: [ + app, + "sessionId", + ], + }, + todoId: { + propDefinition: [ + app, + "todoId", + ], + }, + }, + async run({ $ }) { + const response = await this.app.getTodo({ + $, + sessionId: this.sessionId, + todoId: this.todoId, + }); + const todo = response?.data || response; + $.export("$summary", `Retrieved todo: ${todo?.text + ? todo.text.slice(0, 60) + : this.todoId}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs b/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs new file mode 100644 index 0000000000000..84f8fd422c1b0 --- /dev/null +++ b/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs @@ -0,0 +1,55 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-todos-by-session", + name: "Get Todos By Session", + description: "Retrieves all action items (todos) for a specific Hedy session." + + " Use **Get Many Sessions** first to find the session ID." + + " Each result includes the todo text, completion status, and optional due date." + + " Use **Get Todo** with the session ID and todo ID for single-item detail." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + sessionId: { + propDefinition: [ + app, + "sessionId", + ], + }, + limit: { + propDefinition: [ + app, + "limit", + ], + }, + after: { + propDefinition: [ + app, + "after", + ], + }, + }, + async run({ $ }) { + const params = {}; + if (this.limit) params.limit = this.limit; + if (this.after) params.after = this.after; + + const response = await this.app.getTodosBySession({ + $, + sessionId: this.sessionId, + params, + }); + const todos = response?.data || []; + $.export("$summary", `Retrieved ${todos.length} todo${todos.length === 1 + ? "" + : "s"} for session ${this.sessionId}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs b/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs new file mode 100644 index 0000000000000..9ccc5dc1b85f9 --- /dev/null +++ b/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs @@ -0,0 +1,54 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-topic-sessions", + name: "Get Topic Sessions", + description: "Retrieves a paginated list of Hedy sessions belonging to a specific topic." + + " Use **Get Many Topics** first to find the topic ID." + + " Paginate using the `startAfter` cursor (a session ID from the last item in the previous page)." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + topicId: { + propDefinition: [ + app, + "topicId", + ], + }, + limit: { + propDefinition: [ + app, + "limit", + ], + }, + startAfter: { + type: "string", + label: "Start After (Session ID)", + description: "Pagination cursor — pass the session ID of the last item from the previous page to retrieve the next page.", + optional: true, + }, + }, + async run({ $ }) { + const params = {}; + if (this.limit) params.limit = this.limit; + if (this.startAfter) params.startAfter = this.startAfter; + + const response = await this.app.getTopicSessions({ + $, + topicId: this.topicId, + params, + }); + const sessions = response?.data || []; + $.export("$summary", `Retrieved ${sessions.length} session${sessions.length === 1 + ? "" + : "s"} for topic ${this.topicId}`); + return response; + }, +}; diff --git a/components/hedy/actions/get-topic/get-topic.mjs b/components/hedy/actions/get-topic/get-topic.mjs new file mode 100644 index 0000000000000..c428d92a5a2ca --- /dev/null +++ b/components/hedy/actions/get-topic/get-topic.mjs @@ -0,0 +1,35 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-get-topic", + name: "Get Topic", + description: "Retrieves full details for a single Hedy topic by ID, including the complete custom AI analysis context (`topicContext`), cached overview, and session statistics." + + " The `topicContext` field (up to 20,000 characters) contains custom instructions that guide Hedy's AI analysis for sessions in this topic." + + " Use **Get Many Topics** first to list topics and obtain a topic ID." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + topicId: { + propDefinition: [ + app, + "topicId", + ], + }, + }, + async run({ $ }) { + const response = await this.app.getTopic({ + $, + topicId: this.topicId, + }); + const topic = response?.data || response; + $.export("$summary", `Retrieved topic: ${topic?.name || this.topicId}`); + return response; + }, +}; diff --git a/components/hedy/actions/update-session-context/update-session-context.mjs b/components/hedy/actions/update-session-context/update-session-context.mjs new file mode 100644 index 0000000000000..4e330d45871cc --- /dev/null +++ b/components/hedy/actions/update-session-context/update-session-context.mjs @@ -0,0 +1,59 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-update-session-context", + name: "Update Session Context", + description: "Updates an existing Hedy session context. All fields are optional — only the fields you provide will be changed." + + " If you set `isDefault` to `true`, this context becomes the default and the previous default is demoted." + + " Use **Get Many Session Contexts** to find the context ID." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + app, + contextId: { + propDefinition: [ + app, + "contextId", + ], + }, + title: { + type: "string", + label: "Title", + description: "New context title (maximum 200 characters).", + optional: true, + }, + content: { + type: "string", + label: "Content", + description: "New custom AI instruction text (maximum 20,000 characters).", + optional: true, + }, + isDefault: { + type: "boolean", + label: "Set as Default", + description: "Set to `true` to make this the default context for new sessions.", + optional: true, + }, + }, + async run({ $ }) { + const data = {}; + if (this.title !== undefined) data.title = this.title; + if (this.content !== undefined) data.content = this.content; + if (this.isDefault !== undefined) data.isDefault = this.isDefault; + + const response = await this.app.updateContext({ + $, + contextId: this.contextId, + data, + }); + const context = response?.data || response; + $.export("$summary", `Updated session context: ${context?.title || this.contextId}`); + return response; + }, +}; diff --git a/components/hedy/actions/update-topic/update-topic.mjs b/components/hedy/actions/update-topic/update-topic.mjs new file mode 100644 index 0000000000000..357c648a6801d --- /dev/null +++ b/components/hedy/actions/update-topic/update-topic.mjs @@ -0,0 +1,73 @@ +import app from "../../hedy.app.mjs"; + +export default { + key: "hedy-update-topic", + name: "Update Topic", + description: "Updates properties of an existing Hedy topic. All fields are optional — only the fields you provide will be changed." + + " To clear the custom AI context, pass an empty string or `null` for `topicContext`." + + " Use **Get Many Topics** to find the topic ID." + + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + app, + topicId: { + propDefinition: [ + app, + "topicId", + ], + }, + name: { + type: "string", + label: "Name", + description: "New topic name (maximum 100 characters).", + optional: true, + }, + description: { + type: "string", + label: "Description", + description: "New topic description (maximum 500 characters).", + optional: true, + }, + color: { + type: "string", + label: "Color", + description: "New hex color code (e.g. `#FF5722`).", + optional: true, + }, + iconName: { + type: "string", + label: "Icon Name", + description: "New icon identifier.", + optional: true, + }, + topicContext: { + type: "string", + label: "Topic Context", + description: "New custom AI analysis instructions (maximum 20,000 characters). Pass an empty string to clear the existing context.", + optional: true, + }, + }, + async run({ $ }) { + const data = {}; + if (this.name !== undefined) data.name = this.name; + if (this.description !== undefined) data.description = this.description; + if (this.color !== undefined) data.color = this.color; + if (this.iconName !== undefined) data.iconName = this.iconName; + if (this.topicContext !== undefined) data.topicContext = this.topicContext || null; + + const response = await this.app.updateTopic({ + $, + topicId: this.topicId, + data, + }); + const topic = response?.data || response; + $.export("$summary", `Updated topic: ${topic?.name || this.topicId}`); + return response; + }, +}; diff --git a/components/hedy/hedy.app.mjs b/components/hedy/hedy.app.mjs index a513c60b5de7f..5f21fc26d5bfe 100644 --- a/components/hedy/hedy.app.mjs +++ b/components/hedy/hedy.app.mjs @@ -1,11 +1,240 @@ +import { axios } from "@pipedream/platform"; + export default { type: "app", app: "hedy", - propDefinitions: {}, + propDefinitions: { + sessionId: { + type: "string", + label: "Session ID", + description: "The unique identifier of the meeting session.", + }, + topicId: { + type: "string", + label: "Topic ID", + description: "The unique identifier of the topic.", + }, + highlightId: { + type: "string", + label: "Highlight ID", + description: "The unique identifier of the highlight.", + }, + todoId: { + type: "string", + label: "Todo ID", + description: "The unique identifier of the action item (todo).", + }, + contextId: { + type: "string", + label: "Context ID", + description: "The unique identifier of the session context.", + }, + limit: { + type: "integer", + label: "Limit", + description: "Maximum number of items to return (1–100). Defaults to 20.", + min: 1, + max: 100, + optional: true, + default: 20, + }, + after: { + type: "string", + label: "After Cursor", + description: "Pagination cursor from a previous response's `pagination.after` field. Pass this value to retrieve the next page of results.", + optional: true, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _baseUrl() { + return this.$auth.base_url || "https://api.hedy.bot"; + }, + _headers() { + return { + Authorization: `Bearer ${this.$auth.api_key}`, + "Content-Type": "application/json", + }; + }, + _makeRequest({ + $ = this, method = "GET", path, params, data, + }) { + return axios($, { + method, + url: `${this._baseUrl()}${path}`, + headers: this._headers(), + params, + data, + }); + }, + getCurrentUser({ $ = this }) { + return this._makeRequest({ + $, + path: "/me", + }); + }, + listSessions({ + $ = this, params, + }) { + return this._makeRequest({ + $, + path: "/sessions", + params, + }); + }, + getSession({ + $ = this, sessionId, + }) { + return this._makeRequest({ + $, + path: `/sessions/${sessionId}`, + }); + }, + listHighlights({ + $ = this, params, + }) { + return this._makeRequest({ + $, + path: "/highlights", + params, + }); + }, + getHighlightsBySession({ + $ = this, sessionId, params, + }) { + return this._makeRequest({ + $, + path: `/sessions/${sessionId}/highlights`, + params, + }); + }, + getHighlight({ + $ = this, highlightId, + }) { + return this._makeRequest({ + $, + path: `/highlights/${highlightId}`, + }); + }, + listTodos({ + $ = this, params, + }) { + return this._makeRequest({ + $, + path: "/todos", + params, + }); + }, + getTodosBySession({ + $ = this, sessionId, params, + }) { + return this._makeRequest({ + $, + path: `/sessions/${sessionId}/todos`, + params, + }); + }, + getTodo({ + $ = this, sessionId, todoId, + }) { + return this._makeRequest({ + $, + path: `/sessions/${sessionId}/todos/${todoId}`, + }); + }, + listTopics({ $ = this }) { + return this._makeRequest({ + $, + path: "/topics", + }); + }, + getTopic({ + $ = this, topicId, + }) { + return this._makeRequest({ + $, + path: `/topics/${topicId}`, + }); + }, + getTopicSessions({ + $ = this, topicId, params, + }) { + return this._makeRequest({ + $, + path: `/topics/${topicId}/sessions`, + params, + }); + }, + createTopic({ + $ = this, data, + }) { + return this._makeRequest({ + $, + method: "POST", + path: "/topics", + data, + }); + }, + updateTopic({ + $ = this, topicId, data, + }) { + return this._makeRequest({ + $, + method: "PATCH", + path: `/topics/${topicId}`, + data, + }); + }, + deleteTopic({ + $ = this, topicId, + }) { + return this._makeRequest({ + $, + method: "DELETE", + path: `/topics/${topicId}`, + }); + }, + listContexts({ $ = this }) { + return this._makeRequest({ + $, + path: "/contexts", + }); + }, + getContext({ + $ = this, contextId, + }) { + return this._makeRequest({ + $, + path: `/contexts/${contextId}`, + }); + }, + createContext({ + $ = this, data, + }) { + return this._makeRequest({ + $, + method: "POST", + path: "/contexts", + data, + }); + }, + updateContext({ + $ = this, contextId, data, + }) { + return this._makeRequest({ + $, + method: "PATCH", + path: `/contexts/${contextId}`, + data, + }); + }, + deleteContext({ + $ = this, contextId, + }) { + return this._makeRequest({ + $, + method: "DELETE", + path: `/contexts/${contextId}`, + }); }, }, }; diff --git a/components/hedy/package.json b/components/hedy/package.json index 84fa39769148a..b01233593ad45 100644 --- a/components/hedy/package.json +++ b/components/hedy/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/hedy", - "version": "0.0.1", + "version": "0.0.2", "description": "Pipedream Hedy Components", "main": "hedy.app.mjs", "keywords": [ From 2a0f95a76dc527e330f857eee93c7888de29d69d Mon Sep 17 00:00:00 2001 From: Sergio Eliot Rodriguez Wong Date: Sun, 17 May 2026 17:35:55 -0700 Subject: [PATCH 02/11] =?UTF-8?q?fix(hedy):=20fix=20lint=20errors=20?= =?UTF-8?q?=E2=80=94=20quote-props=20and=20eol-last?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- components/hedy/hedy.app.mjs | 2 +- components/hedy/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/hedy/hedy.app.mjs b/components/hedy/hedy.app.mjs index 5f21fc26d5bfe..c88592a3a27b0 100644 --- a/components/hedy/hedy.app.mjs +++ b/components/hedy/hedy.app.mjs @@ -51,7 +51,7 @@ export default { }, _headers() { return { - Authorization: `Bearer ${this.$auth.api_key}`, + "Authorization": `Bearer ${this.$auth.api_key}`, "Content-Type": "application/json", }; }, diff --git a/components/hedy/package.json b/components/hedy/package.json index b01233593ad45..582108212456b 100644 --- a/components/hedy/package.json +++ b/components/hedy/package.json @@ -12,4 +12,4 @@ "publishConfig": { "access": "public" } -} \ No newline at end of file +} From 1eac6ba235cacd08339c6e9e1e75fbe37bdaa74e Mon Sep 17 00:00:00 2001 From: Sergio Eliot Rodriguez Wong Date: Sun, 17 May 2026 17:57:55 -0700 Subject: [PATCH 03/11] Deduplicate title/content/isDefault props into app-level propDefinitions Co-Authored-By: Claude Sonnet 4.6 --- .../create-session-context.mjs | 23 ++++++++++--------- .../update-session-context.mjs | 23 ++++++++++--------- components/hedy/hedy.app.mjs | 17 ++++++++++++++ 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/components/hedy/actions/create-session-context/create-session-context.mjs b/components/hedy/actions/create-session-context/create-session-context.mjs index 71eed45f853b0..ae7b5797b4420 100644 --- a/components/hedy/actions/create-session-context/create-session-context.mjs +++ b/components/hedy/actions/create-session-context/create-session-context.mjs @@ -18,21 +18,22 @@ export default { props: { app, title: { - type: "string", - label: "Title", - description: "The context name (maximum 200 characters).", + propDefinition: [ + app, + "title", + ], }, content: { - type: "string", - label: "Content", - description: "The custom AI instruction text for this context (maximum 20,000 characters). Describe how Hedy should analyze meetings — e.g., focus areas, summary style, or specific data to extract.", - optional: true, + propDefinition: [ + app, + "content", + ], }, isDefault: { - type: "boolean", - label: "Set as Default", - description: "Set to `true` to make this the default context automatically applied to new sessions.", - optional: true, + propDefinition: [ + app, + "isDefault", + ], default: false, }, }, diff --git a/components/hedy/actions/update-session-context/update-session-context.mjs b/components/hedy/actions/update-session-context/update-session-context.mjs index 4e330d45871cc..452514a7bc051 100644 --- a/components/hedy/actions/update-session-context/update-session-context.mjs +++ b/components/hedy/actions/update-session-context/update-session-context.mjs @@ -23,22 +23,23 @@ export default { ], }, title: { - type: "string", - label: "Title", - description: "New context title (maximum 200 characters).", + propDefinition: [ + app, + "title", + ], optional: true, }, content: { - type: "string", - label: "Content", - description: "New custom AI instruction text (maximum 20,000 characters).", - optional: true, + propDefinition: [ + app, + "content", + ], }, isDefault: { - type: "boolean", - label: "Set as Default", - description: "Set to `true` to make this the default context for new sessions.", - optional: true, + propDefinition: [ + app, + "isDefault", + ], }, }, async run({ $ }) { diff --git a/components/hedy/hedy.app.mjs b/components/hedy/hedy.app.mjs index c88592a3a27b0..6da51d233adda 100644 --- a/components/hedy/hedy.app.mjs +++ b/components/hedy/hedy.app.mjs @@ -44,6 +44,23 @@ export default { description: "Pagination cursor from a previous response's `pagination.after` field. Pass this value to retrieve the next page of results.", optional: true, }, + title: { + type: "string", + label: "Title", + description: "The context name (maximum 200 characters).", + }, + content: { + type: "string", + label: "Content", + description: "Custom AI instruction text for this context (maximum 20,000 characters). Describe how Hedy should analyze meetings — e.g., focus areas, summary style, or specific data to extract.", + optional: true, + }, + isDefault: { + type: "boolean", + label: "Set as Default", + description: "Set to `true` to make this the default context automatically applied to new sessions.", + optional: true, + }, }, methods: { _baseUrl() { From 5ce89fe549ad89faffe81061294341fae1d3c548 Mon Sep 17 00:00:00 2001 From: Sergio Eliot Rodriguez Wong Date: Sun, 17 May 2026 17:59:32 -0700 Subject: [PATCH 04/11] Fix truthy check dropping empty string content in create-session-context Co-Authored-By: Claude Sonnet 4.6 --- .../actions/create-session-context/create-session-context.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/hedy/actions/create-session-context/create-session-context.mjs b/components/hedy/actions/create-session-context/create-session-context.mjs index ae7b5797b4420..364a642074734 100644 --- a/components/hedy/actions/create-session-context/create-session-context.mjs +++ b/components/hedy/actions/create-session-context/create-session-context.mjs @@ -41,7 +41,7 @@ export default { const data = { title: this.title, }; - if (this.content) data.content = this.content; + if (this.content !== undefined) data.content = this.content; if (this.isDefault !== undefined) data.isDefault = this.isDefault; const response = await this.app.createContext({ From 0576396aa9d991e51d56674fcc3fd901d61638bf Mon Sep 17 00:00:00 2001 From: Sergio Eliot Rodriguez Wong Date: Sun, 17 May 2026 18:03:23 -0700 Subject: [PATCH 05/11] Add inline format examples to ID and pagination prop descriptions Co-Authored-By: Claude Sonnet 4.6 --- components/hedy/hedy.app.mjs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/components/hedy/hedy.app.mjs b/components/hedy/hedy.app.mjs index 6da51d233adda..66d62cb183637 100644 --- a/components/hedy/hedy.app.mjs +++ b/components/hedy/hedy.app.mjs @@ -7,32 +7,32 @@ export default { sessionId: { type: "string", label: "Session ID", - description: "The unique identifier of the meeting session.", + description: "The unique identifier of the meeting session (e.g., `ses_0123abcd`). Use **Get Many Sessions** to list available session IDs.", }, topicId: { type: "string", label: "Topic ID", - description: "The unique identifier of the topic.", + description: "The unique identifier of the topic (e.g., `topic_5f8e9a`). Use **Get Many Topics** to list available topic IDs.", }, highlightId: { type: "string", label: "Highlight ID", - description: "The unique identifier of the highlight.", + description: "The unique identifier of the highlight (e.g., `hl_20240501_abc123`). Use **Get Many Highlights** to list available highlight IDs.", }, todoId: { type: "string", label: "Todo ID", - description: "The unique identifier of the action item (todo).", + description: "The unique identifier of the action item (todo) (e.g., `todo_987xyz`). Use **Get Many Action Items** to list available todo IDs.", }, contextId: { type: "string", label: "Context ID", - description: "The unique identifier of the session context.", + description: "The unique identifier of the session context (e.g., `ctx_456def`). Use **Get Many Session Contexts** to list available context IDs.", }, limit: { type: "integer", label: "Limit", - description: "Maximum number of items to return (1–100). Defaults to 20.", + description: "Maximum number of items to return (1–100). Defaults to 20. Example: `50`.", min: 1, max: 100, optional: true, @@ -41,7 +41,7 @@ export default { after: { type: "string", label: "After Cursor", - description: "Pagination cursor from a previous response's `pagination.after` field. Pass this value to retrieve the next page of results.", + description: "Pagination cursor from a previous response's `pagination.after` field. Pass this value to retrieve the next page of results (e.g., `eyJpZCI6IjEyMyJ9`).", optional: true, }, title: { From 9f1cf7bf733a563d0818c8b460b03fa8a4c8d584 Mon Sep 17 00:00:00 2001 From: Sergio Eliot Rodriguez Wong Date: Sun, 17 May 2026 18:03:55 -0700 Subject: [PATCH 06/11] Bump hedy package version to 0.1.0 (minor: 20 new actions added) Co-Authored-By: Claude Sonnet 4.6 --- components/hedy/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/hedy/package.json b/components/hedy/package.json index 582108212456b..6f751d676db05 100644 --- a/components/hedy/package.json +++ b/components/hedy/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/hedy", - "version": "0.0.2", + "version": "0.1.0", "description": "Pipedream Hedy Components", "main": "hedy.app.mjs", "keywords": [ From 6331a99805ca264e6f1cbc0e79138f3b7f163987 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Fri, 29 May 2026 13:32:25 -0400 Subject: [PATCH 07/11] fix package.json --- components/hedy/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/hedy/package.json b/components/hedy/package.json index 6f751d676db05..fa371fff550e2 100644 --- a/components/hedy/package.json +++ b/components/hedy/package.json @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.4.0" } } From 9b6d44455b676d55d082c88fccc783faf8e70095 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Fri, 29 May 2026 13:40:31 -0400 Subject: [PATCH 08/11] fix doc links --- .../actions/create-session-context/create-session-context.mjs | 2 +- components/hedy/actions/create-topic/create-topic.mjs | 2 +- .../actions/delete-session-context/delete-session-context.mjs | 2 +- components/hedy/actions/delete-topic/delete-topic.mjs | 2 +- components/hedy/actions/get-current-user/get-current-user.mjs | 2 +- components/hedy/actions/get-highlight/get-highlight.mjs | 2 +- .../get-highlights-by-session/get-highlights-by-session.mjs | 2 +- .../hedy/actions/get-many-highlights/get-many-highlights.mjs | 2 +- .../get-many-session-contexts/get-many-session-contexts.mjs | 2 +- components/hedy/actions/get-many-sessions/get-many-sessions.mjs | 2 +- components/hedy/actions/get-many-todos/get-many-todos.mjs | 2 +- components/hedy/actions/get-many-topics/get-many-topics.mjs | 2 +- .../hedy/actions/get-session-context/get-session-context.mjs | 2 +- components/hedy/actions/get-session/get-session.mjs | 2 +- components/hedy/actions/get-todo/get-todo.mjs | 2 +- .../hedy/actions/get-todos-by-session/get-todos-by-session.mjs | 2 +- .../hedy/actions/get-topic-sessions/get-topic-sessions.mjs | 2 +- components/hedy/actions/get-topic/get-topic.mjs | 2 +- .../actions/update-session-context/update-session-context.mjs | 2 +- components/hedy/actions/update-topic/update-topic.mjs | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/components/hedy/actions/create-session-context/create-session-context.mjs b/components/hedy/actions/create-session-context/create-session-context.mjs index 364a642074734..1aa0f4e3d70a6 100644 --- a/components/hedy/actions/create-session-context/create-session-context.mjs +++ b/components/hedy/actions/create-session-context/create-session-context.mjs @@ -7,7 +7,7 @@ export default { + " Free accounts are limited to 1 context; Pro accounts can create multiple." + " Set `isDefault` to `true` to make this context automatically applied to new sessions." + " Use **Update Session Context** to modify an existing context, or **Delete Session Context** to remove one." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Session%20Contexts/post_contexts)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/create-topic/create-topic.mjs b/components/hedy/actions/create-topic/create-topic.mjs index 8c1406d4b11be..d0fc67ae9a94f 100644 --- a/components/hedy/actions/create-topic/create-topic.mjs +++ b/components/hedy/actions/create-topic/create-topic.mjs @@ -6,7 +6,7 @@ export default { description: "Creates a new Hedy meeting topic for organizing sessions." + " Topics can include a custom AI analysis context (`topicContext`) — up to 20,000 characters of instructions that guide Hedy's AI when analyzing meetings in this topic." + " Use **Update Topic** to modify an existing topic, or **Delete Topic** to remove one." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Topics/post_topics)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/delete-session-context/delete-session-context.mjs b/components/hedy/actions/delete-session-context/delete-session-context.mjs index d8c6299fa0507..7d9378e7bb80c 100644 --- a/components/hedy/actions/delete-session-context/delete-session-context.mjs +++ b/components/hedy/actions/delete-session-context/delete-session-context.mjs @@ -6,7 +6,7 @@ export default { description: "Deletes a Hedy session context. This action is irreversible." + " If you delete the current default context, the most recently created remaining context is automatically promoted to default." + " Use **Get Many Session Contexts** to find the context ID before deleting." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Session%20Contexts/delete_contexts__contextId_)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/delete-topic/delete-topic.mjs b/components/hedy/actions/delete-topic/delete-topic.mjs index 8ae3327d7c17e..0d04bce88bab3 100644 --- a/components/hedy/actions/delete-topic/delete-topic.mjs +++ b/components/hedy/actions/delete-topic/delete-topic.mjs @@ -5,7 +5,7 @@ export default { name: "Delete Topic", description: "Deletes a Hedy topic. Sessions that were linked to the topic are NOT deleted — they are unlinked and remain in your account." + " This action is irreversible. Use **Get Many Topics** to find the topic ID before deleting." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Topics/delete_topics__topicId_)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-current-user/get-current-user.mjs b/components/hedy/actions/get-current-user/get-current-user.mjs index f007361b5138d..873eb67ff634c 100644 --- a/components/hedy/actions/get-current-user/get-current-user.mjs +++ b/components/hedy/actions/get-current-user/get-current-user.mjs @@ -5,7 +5,7 @@ export default { name: "Get Current User", description: "Retrieves the account details for the authenticated Hedy user, including email, display name, and plan information." + " Use this tool first to establish identity — the returned user ID anchors queries like 'my sessions' or 'my topics'." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-highlight/get-highlight.mjs b/components/hedy/actions/get-highlight/get-highlight.mjs index 73ab69ac7470f..0df927b376e45 100644 --- a/components/hedy/actions/get-highlight/get-highlight.mjs +++ b/components/hedy/actions/get-highlight/get-highlight.mjs @@ -5,7 +5,7 @@ export default { name: "Get Highlight", description: "Retrieves full details for a single AI-generated highlight by ID, including the raw quote, cleaned quote, main idea, and AI insight." + " Use **Get Many Highlights** or **Get Highlights By Session** first to find a highlight ID." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Highlights/get_highlights__highlightId_)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs b/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs index a6e3ee17d3f6e..5099d7ed3f9f6 100644 --- a/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs +++ b/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs @@ -7,7 +7,7 @@ export default { + " Use **Get Many Sessions** first to find the session ID." + " Each result includes a highlight ID, title, and timestamp within the session." + " Use **Get Highlight** with the highlight ID to fetch the full detail including raw quote, cleaned quote, main idea, and AI insight." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Highlights/get_sessions__sessionId__highlights)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-many-highlights/get-many-highlights.mjs b/components/hedy/actions/get-many-highlights/get-many-highlights.mjs index 861e105b56cc0..7c77a9c7570f6 100644 --- a/components/hedy/actions/get-many-highlights/get-many-highlights.mjs +++ b/components/hedy/actions/get-many-highlights/get-many-highlights.mjs @@ -7,7 +7,7 @@ export default { + " Each highlight includes a title, timestamp, and the session it came from." + " Use **Get Highlight** with a specific highlight ID to fetch the full detail including raw quote, cleaned quote, main idea, and AI insight." + " To list highlights for a specific session only, use **Get Highlights By Session**." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Highlights/get_highlights)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-many-session-contexts/get-many-session-contexts.mjs b/components/hedy/actions/get-many-session-contexts/get-many-session-contexts.mjs index 26bcd7cf0418d..96c2606427a6e 100644 --- a/components/hedy/actions/get-many-session-contexts/get-many-session-contexts.mjs +++ b/components/hedy/actions/get-many-session-contexts/get-many-session-contexts.mjs @@ -6,7 +6,7 @@ export default { description: "Retrieves all reusable Hedy session contexts, including title, content, and which one is set as the default." + " Session contexts are custom AI instruction sets that guide Hedy's analysis of meeting recordings." + " Use this tool to browse available contexts or to find a context ID to pass to **Get Session Context**, **Update Session Context**, or **Delete Session Context**." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Session%20Contexts/get_contexts)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-many-sessions/get-many-sessions.mjs b/components/hedy/actions/get-many-sessions/get-many-sessions.mjs index 02f8f765dcd82..64efeefb9253a 100644 --- a/components/hedy/actions/get-many-sessions/get-many-sessions.mjs +++ b/components/hedy/actions/get-many-sessions/get-many-sessions.mjs @@ -8,7 +8,7 @@ export default { + " Use this tool to browse recent meetings or to find a session ID to pass to **Get Session** for full transcript and summary details." + " To list sessions within a specific topic, use **Get Topic Sessions** instead." + " Paginate using the `after` cursor from the response's `pagination` field." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Sessions/get_sessions)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-many-todos/get-many-todos.mjs b/components/hedy/actions/get-many-todos/get-many-todos.mjs index 6c5d4cbf60afa..e188e5b1dd987 100644 --- a/components/hedy/actions/get-many-todos/get-many-todos.mjs +++ b/components/hedy/actions/get-many-todos/get-many-todos.mjs @@ -7,7 +7,7 @@ export default { + " Each item includes the todo text, completion status, optional due date, and the session it came from." + " To get todos for a specific session only, use **Get Todos By Session**." + " Use **Get Todo** with a specific todo ID to fetch a single item's full detail." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Todos/get_todos)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-many-topics/get-many-topics.mjs b/components/hedy/actions/get-many-topics/get-many-topics.mjs index a62b9d2723d54..45e175fd0f6e4 100644 --- a/components/hedy/actions/get-many-topics/get-many-topics.mjs +++ b/components/hedy/actions/get-many-topics/get-many-topics.mjs @@ -5,7 +5,7 @@ export default { name: "Get Many Topics", description: "Retrieves all Hedy meeting topics with their session counts, last session date, dominant session type, and cached AI overview." + " Use this tool to browse available topics or to find a topic ID to pass to **Get Topic**, **Get Topic Sessions**, **Update Topic**, or **Delete Topic**." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Topics/get_topics)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-session-context/get-session-context.mjs b/components/hedy/actions/get-session-context/get-session-context.mjs index d0c68b6f82b3d..46a5e6cf46c6b 100644 --- a/components/hedy/actions/get-session-context/get-session-context.mjs +++ b/components/hedy/actions/get-session-context/get-session-context.mjs @@ -6,7 +6,7 @@ export default { description: "Retrieves full details for a single reusable Hedy session context by ID, including the title, content, and whether it is the default context." + " Session contexts are reusable custom AI instruction sets that guide Hedy's analysis across multiple meetings." + " Use **Get Many Session Contexts** first to list available contexts and obtain a context ID." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Session%20Contexts/get_contexts__contextId_)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-session/get-session.mjs b/components/hedy/actions/get-session/get-session.mjs index aced1d0fb2972..8ad8a67f3bd6f 100644 --- a/components/hedy/actions/get-session/get-session.mjs +++ b/components/hedy/actions/get-session/get-session.mjs @@ -5,7 +5,7 @@ export default { name: "Get Session", description: "Retrieves full details for a single Hedy meeting session by ID, including the complete transcript, meeting minutes, recap, session notes, highlights array, and action items (todos)." + " Use **Get Many Sessions** first to list sessions and obtain a session ID." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Sessions/get_sessions__sessionId_)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-todo/get-todo.mjs b/components/hedy/actions/get-todo/get-todo.mjs index 4210825b7b3e7..76ef08b4ce473 100644 --- a/components/hedy/actions/get-todo/get-todo.mjs +++ b/components/hedy/actions/get-todo/get-todo.mjs @@ -6,7 +6,7 @@ export default { description: "Retrieves a single action item (todo) by its ID within a session, returning text, completion status, due date, and associated topic." + " Both the session ID and todo ID are required." + " Use **Get Todos By Session** first to list todos for a session and obtain todo IDs." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Todos/get_sessions__sessionId__todos__todoId_)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs b/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs index 84f8fd422c1b0..3a24af7fee82c 100644 --- a/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs +++ b/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs @@ -7,7 +7,7 @@ export default { + " Use **Get Many Sessions** first to find the session ID." + " Each result includes the todo text, completion status, and optional due date." + " Use **Get Todo** with the session ID and todo ID for single-item detail." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Todos/get_sessions__sessionId__todos)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs b/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs index 9ccc5dc1b85f9..1d373eb00b8a8 100644 --- a/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs +++ b/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs @@ -6,7 +6,7 @@ export default { description: "Retrieves a paginated list of Hedy sessions belonging to a specific topic." + " Use **Get Many Topics** first to find the topic ID." + " Paginate using the `startAfter` cursor (a session ID from the last item in the previous page)." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Topics/get_topics__topicId__sessions)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/get-topic/get-topic.mjs b/components/hedy/actions/get-topic/get-topic.mjs index c428d92a5a2ca..d553a7e688dbb 100644 --- a/components/hedy/actions/get-topic/get-topic.mjs +++ b/components/hedy/actions/get-topic/get-topic.mjs @@ -6,7 +6,7 @@ export default { description: "Retrieves full details for a single Hedy topic by ID, including the complete custom AI analysis context (`topicContext`), cached overview, and session statistics." + " The `topicContext` field (up to 20,000 characters) contains custom instructions that guide Hedy's AI analysis for sessions in this topic." + " Use **Get Many Topics** first to list topics and obtain a topic ID." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Topics/get_topics__topicId_)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/update-session-context/update-session-context.mjs b/components/hedy/actions/update-session-context/update-session-context.mjs index 452514a7bc051..91f777cddb6c0 100644 --- a/components/hedy/actions/update-session-context/update-session-context.mjs +++ b/components/hedy/actions/update-session-context/update-session-context.mjs @@ -6,7 +6,7 @@ export default { description: "Updates an existing Hedy session context. All fields are optional — only the fields you provide will be changed." + " If you set `isDefault` to `true`, this context becomes the default and the previous default is demoted." + " Use **Get Many Session Contexts** to find the context ID." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Session%20Contexts/patch_contexts__contextId_)", version: "0.0.1", type: "action", annotations: { diff --git a/components/hedy/actions/update-topic/update-topic.mjs b/components/hedy/actions/update-topic/update-topic.mjs index 357c648a6801d..3369a841e2a06 100644 --- a/components/hedy/actions/update-topic/update-topic.mjs +++ b/components/hedy/actions/update-topic/update-topic.mjs @@ -6,7 +6,7 @@ export default { description: "Updates properties of an existing Hedy topic. All fields are optional — only the fields you provide will be changed." + " To clear the custom AI context, pass an empty string or `null` for `topicContext`." + " Use **Get Many Topics** to find the topic ID." - + " [See the documentation](https://www.hedy.ai/help/hedy-api/)", + + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Topics/patch_topics__topicId_)", version: "0.0.1", type: "action", annotations: { From f039814749fb46f990a3c51e6fabbb4e6035d1e2 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Fri, 29 May 2026 13:41:31 -0400 Subject: [PATCH 09/11] pnpm-lock.yaml --- pnpm-lock.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a39f4571e52fd..014675aa352ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7170,7 +7170,11 @@ importers: specifier: ^3.1.1 version: 3.1.1 - components/hedy: {} + components/hedy: + dependencies: + '@pipedream/platform': + specifier: ^3.4.0 + version: 3.4.0 components/heedjy: dependencies: @@ -41763,7 +41767,6 @@ snapshots: transitivePeerDependencies: - rolldown - rollup - - supports-color '@putout/operator-parens@2.0.0(rolldown@1.0.0-beta.60(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(rollup@4.53.2)': dependencies: From 2f8c1d4767e3df652a64c3be488213f3ac377f4c Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Fri, 29 May 2026 13:46:53 -0400 Subject: [PATCH 10/11] remove unecessary undefined checks --- .../create-session-context.mjs | 12 +++++------- .../hedy/actions/create-topic/create-topic.mjs | 16 +++++++--------- .../get-highlights-by-session.mjs | 9 ++++----- .../get-many-highlights/get-many-highlights.mjs | 9 ++++----- .../get-many-sessions/get-many-sessions.mjs | 9 ++++----- .../actions/get-many-todos/get-many-todos.mjs | 9 ++++----- .../get-todos-by-session.mjs | 9 ++++----- .../get-topic-sessions/get-topic-sessions.mjs | 9 ++++----- .../update-session-context.mjs | 11 +++++------ .../hedy/actions/update-topic/update-topic.mjs | 17 +++++++++-------- 10 files changed, 50 insertions(+), 60 deletions(-) diff --git a/components/hedy/actions/create-session-context/create-session-context.mjs b/components/hedy/actions/create-session-context/create-session-context.mjs index 1aa0f4e3d70a6..c7088ef6928f4 100644 --- a/components/hedy/actions/create-session-context/create-session-context.mjs +++ b/components/hedy/actions/create-session-context/create-session-context.mjs @@ -38,15 +38,13 @@ export default { }, }, async run({ $ }) { - const data = { - title: this.title, - }; - if (this.content !== undefined) data.content = this.content; - if (this.isDefault !== undefined) data.isDefault = this.isDefault; - const response = await this.app.createContext({ $, - data, + data: { + title: this.title, + content: this.content, + isDefault: this.isDefault, + }, }); const context = response?.data || response; $.export("$summary", `Created session context: ${context?.title || this.title}`); diff --git a/components/hedy/actions/create-topic/create-topic.mjs b/components/hedy/actions/create-topic/create-topic.mjs index d0fc67ae9a94f..7f7fb2c0efb2d 100644 --- a/components/hedy/actions/create-topic/create-topic.mjs +++ b/components/hedy/actions/create-topic/create-topic.mjs @@ -47,17 +47,15 @@ export default { }, }, async run({ $ }) { - const data = { - name: this.name, - }; - if (this.description) data.description = this.description; - if (this.color) data.color = this.color; - if (this.iconName) data.iconName = this.iconName; - if (this.topicContext) data.topicContext = this.topicContext; - const response = await this.app.createTopic({ $, - data, + data: { + name: this.name, + description: this.description, + color: this.color, + iconName: this.iconName, + topicContext: this.topicContext, + }, }); const topic = response?.data || response; $.export("$summary", `Created topic: ${topic?.name || this.name}`); diff --git a/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs b/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs index 5099d7ed3f9f6..046306e01a051 100644 --- a/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs +++ b/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs @@ -37,14 +37,13 @@ export default { }, }, async run({ $ }) { - const params = {}; - if (this.limit) params.limit = this.limit; - if (this.after) params.after = this.after; - const response = await this.app.getHighlightsBySession({ $, sessionId: this.sessionId, - params, + params: { + limit: this.limit, + after: this.after, + }, }); const highlights = response?.data || []; $.export("$summary", `Retrieved ${highlights.length} highlight${highlights.length === 1 diff --git a/components/hedy/actions/get-many-highlights/get-many-highlights.mjs b/components/hedy/actions/get-many-highlights/get-many-highlights.mjs index 7c77a9c7570f6..4d33f666420e0 100644 --- a/components/hedy/actions/get-many-highlights/get-many-highlights.mjs +++ b/components/hedy/actions/get-many-highlights/get-many-highlights.mjs @@ -31,13 +31,12 @@ export default { }, }, async run({ $ }) { - const params = {}; - if (this.limit) params.limit = this.limit; - if (this.after) params.after = this.after; - const response = await this.app.listHighlights({ $, - params, + params: { + limit: this.limit, + after: this.after, + }, }); const highlights = response?.data || []; $.export("$summary", `Retrieved ${highlights.length} highlight${highlights.length === 1 diff --git a/components/hedy/actions/get-many-sessions/get-many-sessions.mjs b/components/hedy/actions/get-many-sessions/get-many-sessions.mjs index 64efeefb9253a..8f5dd1c06b700 100644 --- a/components/hedy/actions/get-many-sessions/get-many-sessions.mjs +++ b/components/hedy/actions/get-many-sessions/get-many-sessions.mjs @@ -32,13 +32,12 @@ export default { }, }, async run({ $ }) { - const params = {}; - if (this.limit) params.limit = this.limit; - if (this.after) params.after = this.after; - const response = await this.app.listSessions({ $, - params, + params: { + limit: this.limit, + after: this.after, + }, }); const sessions = response?.data || []; $.export("$summary", `Retrieved ${sessions.length} session${sessions.length === 1 diff --git a/components/hedy/actions/get-many-todos/get-many-todos.mjs b/components/hedy/actions/get-many-todos/get-many-todos.mjs index e188e5b1dd987..7e3638690c4a0 100644 --- a/components/hedy/actions/get-many-todos/get-many-todos.mjs +++ b/components/hedy/actions/get-many-todos/get-many-todos.mjs @@ -31,13 +31,12 @@ export default { }, }, async run({ $ }) { - const params = {}; - if (this.limit) params.limit = this.limit; - if (this.after) params.after = this.after; - const response = await this.app.listTodos({ $, - params, + params: { + limit: this.limit, + after: this.after, + }, }); const todos = response?.data || []; $.export("$summary", `Retrieved ${todos.length} todo${todos.length === 1 diff --git a/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs b/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs index 3a24af7fee82c..c17eb0a802905 100644 --- a/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs +++ b/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs @@ -37,14 +37,13 @@ export default { }, }, async run({ $ }) { - const params = {}; - if (this.limit) params.limit = this.limit; - if (this.after) params.after = this.after; - const response = await this.app.getTodosBySession({ $, sessionId: this.sessionId, - params, + params: { + limit: this.limit, + after: this.after, + }, }); const todos = response?.data || []; $.export("$summary", `Retrieved ${todos.length} todo${todos.length === 1 diff --git a/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs b/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs index 1d373eb00b8a8..96484207118fe 100644 --- a/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs +++ b/components/hedy/actions/get-topic-sessions/get-topic-sessions.mjs @@ -36,14 +36,13 @@ export default { }, }, async run({ $ }) { - const params = {}; - if (this.limit) params.limit = this.limit; - if (this.startAfter) params.startAfter = this.startAfter; - const response = await this.app.getTopicSessions({ $, topicId: this.topicId, - params, + params: { + limit: this.limit, + startAfter: this.startAfter, + }, }); const sessions = response?.data || []; $.export("$summary", `Retrieved ${sessions.length} session${sessions.length === 1 diff --git a/components/hedy/actions/update-session-context/update-session-context.mjs b/components/hedy/actions/update-session-context/update-session-context.mjs index 91f777cddb6c0..e297ec22b7d61 100644 --- a/components/hedy/actions/update-session-context/update-session-context.mjs +++ b/components/hedy/actions/update-session-context/update-session-context.mjs @@ -43,15 +43,14 @@ export default { }, }, async run({ $ }) { - const data = {}; - if (this.title !== undefined) data.title = this.title; - if (this.content !== undefined) data.content = this.content; - if (this.isDefault !== undefined) data.isDefault = this.isDefault; - const response = await this.app.updateContext({ $, contextId: this.contextId, - data, + data: { + title: this.title, + content: this.content, + isDefault: this.isDefault, + }, }); const context = response?.data || response; $.export("$summary", `Updated session context: ${context?.title || this.contextId}`); diff --git a/components/hedy/actions/update-topic/update-topic.mjs b/components/hedy/actions/update-topic/update-topic.mjs index 3369a841e2a06..32669dd677741 100644 --- a/components/hedy/actions/update-topic/update-topic.mjs +++ b/components/hedy/actions/update-topic/update-topic.mjs @@ -54,17 +54,18 @@ export default { }, }, async run({ $ }) { - const data = {}; - if (this.name !== undefined) data.name = this.name; - if (this.description !== undefined) data.description = this.description; - if (this.color !== undefined) data.color = this.color; - if (this.iconName !== undefined) data.iconName = this.iconName; - if (this.topicContext !== undefined) data.topicContext = this.topicContext || null; - const response = await this.app.updateTopic({ $, topicId: this.topicId, - data, + data: { + name: this.name, + description: this.description, + color: this.color, + iconName: this.iconName, + topicContext: this.topicContext === "" + ? null + : this.topicContext, + }, }); const topic = response?.data || response; $.export("$summary", `Updated topic: ${topic?.name || this.topicId}`); From 85202e39c4472c12c32dfa8980c9abc4bb401214 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Fri, 5 Jun 2026 12:10:12 -0400 Subject: [PATCH 11/11] remove unsupported endpoint and unsupported props --- .../get-current-user/get-current-user.mjs | 27 ------------------- .../get-highlights-by-session.mjs | 16 ----------- .../actions/get-many-todos/get-many-todos.mjs | 16 ----------- .../get-todos-by-session.mjs | 16 ----------- components/hedy/hedy.app.mjs | 6 ----- 5 files changed, 81 deletions(-) delete mode 100644 components/hedy/actions/get-current-user/get-current-user.mjs diff --git a/components/hedy/actions/get-current-user/get-current-user.mjs b/components/hedy/actions/get-current-user/get-current-user.mjs deleted file mode 100644 index 873eb67ff634c..0000000000000 --- a/components/hedy/actions/get-current-user/get-current-user.mjs +++ /dev/null @@ -1,27 +0,0 @@ -import app from "../../hedy.app.mjs"; - -export default { - key: "hedy-get-current-user", - name: "Get Current User", - description: "Retrieves the account details for the authenticated Hedy user, including email, display name, and plan information." - + " Use this tool first to establish identity — the returned user ID anchors queries like 'my sessions' or 'my topics'." - + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/)", - version: "0.0.1", - type: "action", - annotations: { - destructiveHint: false, - openWorldHint: true, - readOnlyHint: true, - }, - props: { - app, - }, - async run({ $ }) { - const response = await this.app.getCurrentUser({ - $, - }); - const user = response?.data || response; - $.export("$summary", `Retrieved account details for ${user?.email || user?.name || "user"}`); - return response; - }, -}; diff --git a/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs b/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs index 046306e01a051..0008e9ab6adc6 100644 --- a/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs +++ b/components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs @@ -23,27 +23,11 @@ export default { "sessionId", ], }, - limit: { - propDefinition: [ - app, - "limit", - ], - }, - after: { - propDefinition: [ - app, - "after", - ], - }, }, async run({ $ }) { const response = await this.app.getHighlightsBySession({ $, sessionId: this.sessionId, - params: { - limit: this.limit, - after: this.after, - }, }); const highlights = response?.data || []; $.export("$summary", `Retrieved ${highlights.length} highlight${highlights.length === 1 diff --git a/components/hedy/actions/get-many-todos/get-many-todos.mjs b/components/hedy/actions/get-many-todos/get-many-todos.mjs index 7e3638690c4a0..dd573be731f1b 100644 --- a/components/hedy/actions/get-many-todos/get-many-todos.mjs +++ b/components/hedy/actions/get-many-todos/get-many-todos.mjs @@ -17,26 +17,10 @@ export default { }, props: { app, - limit: { - propDefinition: [ - app, - "limit", - ], - }, - after: { - propDefinition: [ - app, - "after", - ], - }, }, async run({ $ }) { const response = await this.app.listTodos({ $, - params: { - limit: this.limit, - after: this.after, - }, }); const todos = response?.data || []; $.export("$summary", `Retrieved ${todos.length} todo${todos.length === 1 diff --git a/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs b/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs index c17eb0a802905..ec01df52e53e3 100644 --- a/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs +++ b/components/hedy/actions/get-todos-by-session/get-todos-by-session.mjs @@ -23,27 +23,11 @@ export default { "sessionId", ], }, - limit: { - propDefinition: [ - app, - "limit", - ], - }, - after: { - propDefinition: [ - app, - "after", - ], - }, }, async run({ $ }) { const response = await this.app.getTodosBySession({ $, sessionId: this.sessionId, - params: { - limit: this.limit, - after: this.after, - }, }); const todos = response?.data || []; $.export("$summary", `Retrieved ${todos.length} todo${todos.length === 1 diff --git a/components/hedy/hedy.app.mjs b/components/hedy/hedy.app.mjs index 66d62cb183637..de7e93a5fc027 100644 --- a/components/hedy/hedy.app.mjs +++ b/components/hedy/hedy.app.mjs @@ -83,12 +83,6 @@ export default { data, }); }, - getCurrentUser({ $ = this }) { - return this._makeRequest({ - $, - path: "/me", - }); - }, listSessions({ $ = this, params, }) {