Skip to content

v0.5.81: traces fix, additional confluence tools, azure anthropic support, opus 4.6#3146

Merged
waleedlatif1 merged 5 commits intomainfrom
staging
Feb 5, 2026
Merged

v0.5.81: traces fix, additional confluence tools, azure anthropic support, opus 4.6#3146
waleedlatif1 merged 5 commits intomainfrom
staging

Conversation

@waleedlatif1
Copy link
Collaborator

waleedlatif1 and others added 4 commits February 4, 2026 19:32
* feat(confluence): added more confluence endpoints

* update license

* updated

* updated docs
…n cleanups (#3141)

* fix(onedrive): canonical param required validation

* fix onedrive

* cleanup canonical tool param resolution code

* fix type

* fix jira type checks

* remove manual validations
@vercel
Copy link

vercel bot commented Feb 5, 2026

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

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Skipped Skipped Feb 5, 2026 6:52pm

Request Review

…r chat completions API, added opus 4.6 (#3145)

* feat(azure): added azure anthropic, added backwards compat support for chat completions API, added opus 4.6

* added max thinking level

* update tests

* ack comments

* update cql validation
@waleedlatif1 waleedlatif1 marked this pull request as ready for review February 5, 2026 18:56
@waleedlatif1
Copy link
Collaborator Author

@greptile

@waleedlatif1
Copy link
Collaborator Author

@cursor review

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 5, 2026

Greptile Overview

Greptile Summary

This release bundles multiple feature additions and important bug fixes across the platform.

Major Features:

  • Added Azure Anthropic provider support for accessing Claude models via Azure AI Foundry, with proper endpoint configuration and authentication
  • Added support for Claude Opus 4.6 with adaptive thinking capability (effort-based instead of token-budget-based)
  • Expanded Confluence integration with 15+ new tools including blog posts, comments, attachments, labels, page properties, and advanced search

Critical Bug Fixes:

  • Fixed trace spans tool call matching for successive identical tool calls - previously only the first tool call's inputs were displayed for repeated tools
  • Fixed input validation to properly check canonical parameter IDs when params have been deduplicated
  • Fixed client workflow execution to always send complete workflow state (blocks, edges, loops, parallels) to the executor

Refactoring:

  • Extracted shared Anthropic provider logic into anthropic/core.ts for reuse between standard and Azure providers
  • Moved branding/whitelabeling logic from lib/branding to ee/whitelabeling for better enterprise feature separation
  • Created shared branding types in lib/branding/types.ts for cross-module compatibility

Confidence Score: 5/5

  • This PR is safe to merge with no critical issues found
  • All changes are well-structured bug fixes and feature additions with proper error handling, type safety, and backwards compatibility maintained throughout
  • No files require special attention

Important Files Changed

Filename Overview
apps/sim/lib/logs/execution/trace-spans/trace-spans.ts Fixed tool call matching for successive identical tool calls using index tracking
apps/sim/providers/azure-anthropic/index.ts Added new Azure Anthropic provider with proper endpoint configuration
apps/sim/providers/anthropic/core.ts Extracted shared Anthropic provider logic, added Opus 4.6 adaptive thinking support
apps/sim/providers/models.ts Added claude-opus-4-6 and azure-anthropic models with pricing and capabilities
apps/sim/serializer/index.ts Fixed validation to check canonical param IDs for missing field detection
apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts Fixed workflow state override to always send complete state to executor
apps/sim/ee/whitelabeling/branding.ts Moved branding logic to EE module for better separation of concerns
apps/sim/tools/confluence/index.ts Added 15+ new Confluence tools including blog posts, comments, attachments, labels

Sequence Diagram

sequenceDiagram
    participant Client
    participant Executor
    participant Provider
    participant AnthropicCore
    participant AzureAI
    participant TraceSpans

    Note over Client,TraceSpans: Azure Anthropic Integration Flow
    
    Client->>Executor: Execute workflow with azure-anthropic model
    Executor->>Provider: Route to azure-anthropic provider
    Provider->>Provider: Strip azure-anthropic/ prefix
    Provider->>Provider: Construct Azure endpoint URL
    Provider->>AnthropicCore: executeAnthropicProviderRequest()
    AnthropicCore->>AnthropicCore: Check for Opus 4.6 adaptive thinking
    AnthropicCore->>AzureAI: Create Anthropic client with custom baseURL
    AzureAI-->>AnthropicCore: Client with api-key header
    AnthropicCore->>AzureAI: Send request with thinking config
    AzureAI-->>AnthropicCore: Response with tool calls
    
    Note over AnthropicCore: Tool Call Loop
    loop For each tool iteration
        AnthropicCore->>AnthropicCore: Track tool call timing
        AnthropicCore->>Executor: Execute tool
        Executor-->>AnthropicCore: Tool result
    end
    
    AnthropicCore-->>Provider: Complete response with timeSegments
    Provider-->>Executor: Response with timing data
    
    Note over Executor,TraceSpans: Trace Span Generation
    Executor->>TraceSpans: buildTraceSpans(executionResult)
    TraceSpans->>TraceSpans: Group tool calls by name
    TraceSpans->>TraceSpans: Match segments to calls by index
    TraceSpans-->>Executor: Trace spans with correct tool inputs
    
    Note over Client,Executor: Workflow State Override Fix
    Client->>Client: Prepare execution state
    Client->>Client: Ensure complete state (blocks, edges, loops, parallels)
    Client->>Executor: Send with workflowStateOverride
    Executor->>Executor: Use client state for execution
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

8 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 3 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

const body = await request.json()

// Check if this is a create or get request
if (body.title && body.content && body.spaceId) {
Copy link

Choose a reason for hiding this comment

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

Ambiguous request handling may create unintended blog posts

Medium Severity

The POST endpoint uses body.title && body.content && body.spaceId to decide between creating a blog post versus retrieving one by blogPostId. If a request contains both a blogPostId AND the creation fields (title, content, spaceId), the create path takes precedence and the blogPostId is silently ignored. This could cause users to accidentally create duplicate blog posts when intending to retrieve or reference an existing one.

Fix in Cursor Fix in Web


const searchParams = new URLSearchParams({
cql: `text ~ "${query}"`,
cql: `text ~ "${escapeCqlValue(query)}"`,
Copy link

Choose a reason for hiding this comment

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

Missing string type check causes crash on non-string input

Medium Severity

The new escapeCqlValue function calls .replace() on its input, which requires a string. However, query is only validated for truthiness (if (!query)), not type. If a client sends query: 123 (number) or query: {} (object), the code throws a TypeError since these types don't have a .replace() method. Previously, query was interpolated directly into a template literal which auto-converts to string. The same issue affects query and contentType in the search-in-space route.

Additional Locations (1)

Fix in Cursor Fix in Web

pageId,
nextCursor: data._links?.next
? new URL(data._links.next, 'https://placeholder').searchParams.get('cursor')
: null,
Copy link

Choose a reason for hiding this comment

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

Duplicated cursor extraction logic across Confluence routes

Medium Severity

The cursor extraction pattern new URL(data._links.next, 'https://placeholder').searchParams.get('cursor') is duplicated across 10+ Confluence route files. Extract this to a utility function like extractNextCursor(data) in the existing @/tools/confluence/utils.ts file.

Fix in Cursor Fix in Web

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

return NextResponse.json({ error: cloudIdValidation.error }, { status: 400 })
}

const escapeCqlValue = (value: string) => value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')
Copy link

Choose a reason for hiding this comment

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

Duplicated escapeCqlValue function across search routes

Medium Severity

The escapeCqlValue function is defined identically in both search/route.ts (line 45) and search-in-space/route.ts (line 56). This utility function should be extracted to @/tools/confluence/utils.ts where other shared Confluence utilities already exist.

Fix in Cursor Fix in Web

@waleedlatif1 waleedlatif1 merged commit 1a66d48 into main Feb 5, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants