v0.5.108: workflow input params in agent tools, bun upgrade, dropdown selectors for 14 blocks #3445
v0.5.108: workflow input params in agent tools, bun upgrade, dropdown selectors for 14 blocks #3445icecrasher321 merged 9 commits intomainfrom
Conversation
* feat(selectors): add dropdown selectors for 14 integrations * fix(selectors): secure OAuth tokens in JSM and Confluence selector routes Convert JSM selector-servicedesks, selector-requesttypes, and Confluence selector-spaces routes from GET (with access token in URL query params) to POST with authorizeCredentialUse + refreshAccessTokenIfNeeded pattern. Also adds missing ensureCredential guard to microsoft.planner.plans registry entry. * fix(selectors): use sanitized serviceDeskId and encode SharePoint siteId Use serviceDeskIdValidation.sanitized instead of raw serviceDeskId in JSM request types URL. Add encodeURIComponent to SharePoint siteId to prevent URL path injection. * lint * fix(selectors): revert encodeURIComponent on SharePoint siteId SharePoint site IDs use the format "hostname,guid,guid" with commas that must remain unencoded for the Microsoft Graph API. The encodeURIComponent call would convert commas to %2C and break the API call. * fix(selectors): use sanitized cloudId in Confluence and JSM route URLs Use cloudIdValidation.sanitized instead of raw cloudId in URL construction for consistency with the validation pattern, even though the current validator returns the input unchanged. * fix(selectors): add missing context fields to resolution, ensureCredential to sharepoint.lists, and siteId validation - Add baseId, datasetId, serviceDeskId to SelectorResolutionArgs, ExtendedSelectorContext, extractExtendedContext, useSelectorDisplayName, and resolveSelectorForSubBlock so cascading selectors resolve correctly through the resolution path. - Add ensureCredential guard to sharepoint.lists registry entry. - Add regex validation for SharePoint siteId format (hostname,GUID,GUID). * fix(selectors): rename advanced subBlock IDs to avoid canonicalParamId clashes Rename all advanced-mode subBlock IDs that matched their canonicalParamId to use a `manual*` prefix, following the established convention (e.g., manualSiteId, manualCredential). This prevents ambiguity between subBlock IDs and canonical parameter names in the serialization layer. 25 renames across 14 blocks: baseId→manualBaseId, tableId→manualTableId, workspace→manualWorkspace, objectType→manualObjectType, etc. * Revert "fix(selectors): rename advanced subBlock IDs to avoid canonicalParamId clashes" This reverts commit 4e30161. * fix(selectors): rename canonicalParamIds to avoid subBlock ID clashes Prefix all clashing canonicalParamId values with `selected_` so they don't match any subBlock ID. Update each block's `inputs` section and `tools.config.params` function to destructure the new canonical names and remap them to the original tool param names. SubBlock IDs and tool definitions remain unchanged for backwards compatibility. Affected: 25 canonical params across 14 blocks (airtable, asana, attio, calcom, confluence, google_bigquery, google_tasks, jsm, microsoft_planner, notion, pipedrive, sharepoint, trello, zoom). * fix(selectors): rename pre-existing driveId and files canonicalParamIds in SharePoint Apply the same selected_ prefix convention to the pre-existing SharePoint driveId and files canonical params that clashed with their subBlock IDs. * style: format long lines in calcom, pipedrive, and sharepoint blocks Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): resolve cascading context for selected_ canonical params and normalize Asana response Strip `selected_` prefix from canonical param IDs when mapping to SelectorContext fields so cascading selectors (Airtable base→table, BigQuery dataset→table, JSM serviceDesk→requestType) correctly propagate parent values. Normalize Asana workspaces route to return `{ id, name }` instead of `{ gid, name }` for consistency with all other selector routes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): replace hacky prefix stripping with explicit CANONICAL_TO_CONTEXT mapping Replace CONTEXT_FIELD_SET (Record<string, true>) with CANONICAL_TO_CONTEXT (Record<string, keyof SelectorContext>) that explicitly maps canonical param IDs to their SelectorContext field names. This properly handles the selected_ prefix aliases (e.g. selected_baseId → baseId) without string manipulation, and removes the unsafe Record<string, unknown> cast. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(selectors): remove unnecessary selected_ prefix from canonicalParamIds The selected_ prefix was added to avoid a perceived clash between canonicalParamId and subBlock id values, but this clash does not actually cause any issues — pre-existing blocks on main (Google Sheets, Webflow, SharePoint) already use matching values successfully. Remove the prefix from all 14 blocks, revert use-selector-setup.ts to the simple CONTEXT_FIELD_SET pattern, and simplify tools.config.params functions that were only remapping the prefix back. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): add spaceId selector pair to Confluence V2 block The V2 block was missing the spaceSelector basic-mode selector that the V1 (Legacy) block already had. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(selectors): revert V1 block changes, add selectors to Notion V1 for V2 inheritance Confluence V1: reverted to main state (V2 has its own subBlocks). Notion V1: added selector pairs per-operation since V2 inherits subBlocks, inputs, and params from V1. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): audit fixes for auth patterns, registry gaps, and display name resolution - Convert Microsoft Planner plans/tasks routes from GET+getSession to POST+authorizeCredentialUse - Add fetchById to microsoft.planner (tasks) and sharepoint.sites registry entries - Add ensureCredential to sharepoint.sites and microsoft.planner registry fetchList - Update microsoft.planner.plans registry to use POST method - Add siteId, collectionId, spreadsheetId, fileId to SelectorDisplayNameArgs and caller - Add fileId to SelectorResolutionArgs and resolution context - Fix Zoom topicUpdate visibility in basic mode (remove mode:'advanced') - Change Zoom meetings selector to fetch upcoming_meetings instead of only scheduled Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style: lint formatting fixes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): consolidate Notion canonical param pairs into array conditions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): add missing selectorKey to Confluence V1 page selector Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): use sanitized IDs in URLs, convert SharePoint routes to POST+authorizeCredentialUse - Use planIdValidation.sanitized in MS Planner tasks fetch URL - Convert sharepoint/lists and sharepoint/sites from GET+getSession to POST+authorizeCredentialUse - Update registry entries to match POST pattern Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): revert Zoom meetings type to scheduled for broader compatibility Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): add SharePoint site ID validator, fix cascading selector display name fallbacks - Add validateSharePointSiteId to input-validation.ts - Use validation util in SharePoint lists route instead of inline regex - Add || fallback to selector IDs in workflow-block.tsx so cascading display names resolve in basic mode (baseSelector, planSelector, etc.) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): hoist requestId before try block in all selector routes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): hoist requestId before try block in Trello boards route Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): guard selector queries against unresolved variable references Skip fetchById and context population when values are design-time placeholders (<Block.output> or {{ENV_VAR}}) rather than real IDs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(selectors): replace hardcoded display name fallbacks with canonical-aware resolution Use resolveDependencyValue to resolve context values for useSelectorDisplayName, eliminating manual || getStringValue('*Selector') fallbacks that required updating for each new selector pair. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): tighten SharePoint site ID validation to exclude underscores SharePoint composite site IDs use hostname,guid,guid format where only alphanumerics, periods, hyphens, and commas are valid characters. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): ensure string IDs in Pipedrive/Cal.com routes, fix Trello closed board filter Pipedrive pipelines and Cal.com event-types/schedules routes now consistently return string IDs via String() conversion. Trello boards route no longer filters out closed boards, preserving them for fetchById lookups. The closed filter is applied only in the registry's fetchList so archived boards don't appear in dropdowns but can still be resolved by ID for display names. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): convert Zoom meeting IDs to strings for consistency Zoom API returns numeric meeting IDs. Convert with String() to match the string ID convention used by all other selector routes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): align registry types with route string ID returns Routes already convert numeric IDs to strings via String(), so update the registry types (CalcomEventType, CalcomSchedule, PipedrivePipeline, ZoomMeeting) from id: number to id: string and remove the now-redundant String() coercions in fetchList/fetchById. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…r context (#3446) * fix(selectors): resolve env var references at design time for selector context Selectors now resolve {{ENV_VAR}} references before building context and returning dependency values to consumers, enabling env-var-based credentials (e.g. {{SLACK_BOT_TOKEN}}) to work with selector dropdowns. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): prevent unresolved env var templates from leaking into context - Fall back to undefined instead of raw template string when env var is missing from store, so the null-check in the context loop discards it - Use resolvedDetailId in query cache key so React Query refetches when the underlying env var value changes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(selectors): use || for consistent empty-string env var handling Align use-selector-setup.ts with use-selector-query.ts by using || instead of ?? so empty-string env var values are treated as unset. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
#3447) * improvement(canonical): backfill for canonical modes on config changes * persist data changes to db
…n code (#3449) * improvement(oauth): centralize scopes and remove dead scope evaluation code Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(oauth): fix stale scope-descriptions.ts references and add test coverage Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* improvement(selectors): simplify selectorContext + add tests * fix resolve values fallback * another workflowid pass through
* improvement(selectors): simplify selectorContext + add tests * fix resolve values fallback * another workflowid pass through * remove dead code * make workspace id required
* feat(jira): add search_users tool for user lookup by email * improvement(jira): reuse shared transformUser utility in search_users * improvement(jira): add pagination fields to search_users response * update * fix(jira): filter falsy entries before transforming search_users results * fix(jira): add defensive fallback for nullable transformUser in search_users * fix(jira): align search_users response type with transformUser return type
PR SummaryMedium Risk Overview Adds/extends integration dropdown selectors by introducing multiple new Improves selector and editor behavior: selector context now uses a defined Also bumps Bun to Written by Cursor Bugbot for commit 0a52b09. Configure here. |
Uh oh!
There was an error while loading. Please reload this page.