Skip to content

Conversation

alaa-eddine-k
Copy link
Contributor

@alaa-eddine-k alaa-eddine-k commented Sep 5, 2025

Add status_message support for tool calls + Fix missing Usage event in the SDK

Summary by CodeRabbit

  • New Features
    • Status messages are now surfaced during workflows and tool calls, improving progress visibility.
    • Streaming sessions emit Usage events for real-time usage tracking in Chat and Agent streams.
  • Examples
    • Added descriptive status messages to crypto price and market data examples to indicate ongoing actions.
  • Refactor
    • Simplified OAuth detection in API calls with no expected behavior change.
  • Chores
    • Bumped versions for core and SDK packages.

Copy link

coderabbitai bot commented Sep 5, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

The PR adds status_message support across skills and API endpoints, maps these into Conversation tool-call events, and propagates Usage events in SDK streaming. It also adjusts OAuth checks in APICall, updates example configs, removes an unused import, and bumps core and SDK package versions.

Changes

Cohort / File(s) Summary
Conversation tool status mapping
packages/core/src/helpers/Conversation.helper.ts
Adds private _toolStatusMap, populates it from agent components (APIEndpoint.status_message), and includes status in TLLMEvent.ToolCall payloads.
Skill status_message support
packages/sdk/src/Components/Skill.ts, examples/03-agent-workflow-components/01-workflow.ts, examples/agents-data/crypto-info-agent.smyth
Extends TSkillSettings with optional status_message, stores it in Skill settings, and adds status_message fields to example skills/endpoints.
Usage event propagation (SDK streaming)
packages/sdk/src/Agent/Agent.class.ts, packages/sdk/src/LLM/Chat.class.ts
Registers TLLMEvent.Usage listeners in stream flows, forwarding usage to emitters/handlers; cleanup already handled.
APICall OAuth condition tweak
packages/core/src/Components/APICall/APICall.class.ts
Simplifies OAuth presence checks to truthy-and-not-'None' conditions; behavior otherwise unchanged.
Version bumps
packages/core/package.json, packages/sdk/package.json
Bumps versions: core 1.5.63 → 1.5.64; sdk 1.1.4 → 1.1.6.
Example import cleanup
examples/01-agent-code-skill/04.1-chat-planner-coder.ts
Removes PluginAPI from imports.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant AgentData as Agent Data
  participant Conversation
  participant LLM as LLM
  participant Tool as Tool (APIEndpoint)
  Note over AgentData,Conversation: Load spec and build tool status map
  AgentData->>Conversation: loadSpecFromAgent()
  activate Conversation
  Conversation->>Conversation: _toolStatusMap[toolName] = status_message | default
  deactivate Conversation

  Note over Conversation,Tool: Tool call with status propagation
  LLM->>Conversation: Request ToolCall(tool)
  Conversation->>Tool: Invoke tool
  Conversation->>LLM: Emit ToolCall { tool, status, _llmRequest }
Loading
sequenceDiagram
  autonumber
  participant Conversation
  participant SDKChat as SDK ChatCommand.stream
  participant SDKAgent as SDK AgentCommand.stream
  participant Evt as EventEmitter
  participant App as Application

  Note over Conversation,SDKChat: Streaming session bindings
  Conversation-->>SDKChat: on(TLLMEvent.Usage, usageHandler)
  Conversation-->>SDKAgent: on(TLLMEvent.Usage, usageHandler)

  Conversation-)SDKChat: TLLMEvent.Usage(data)
  SDKChat->>Evt: emit('Usage', data)
  SDKChat->>App: chat.usageHandler(data)

  Conversation-)SDKAgent: TLLMEvent.Usage(data)
  SDKAgent->>Evt: emit('Usage', data)
  SDKAgent->>App: agent.usageHandler(data)

  Note over SDKChat,SDKAgent: Handlers removed on stream cleanup
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

I thump my paws: “Status set!”
Tools now whisper where they’re at.
Usage pings along the stream,
Counting tokens, light and clean.
OAuth checks are crisp and lean—
Versions hop a notch between.
Carrot commits: ship serene. 🥕🐇


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge Base: Disabled due to data retention organization setting

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 28cded3 and fdec406.

📒 Files selected for processing (10)
  • examples/01-agent-code-skill/04.1-chat-planner-coder.ts (1 hunks)
  • examples/03-agent-workflow-components/01-workflow.ts (1 hunks)
  • examples/agents-data/crypto-info-agent.smyth (1 hunks)
  • packages/core/package.json (1 hunks)
  • packages/core/src/Components/APICall/APICall.class.ts (1 hunks)
  • packages/core/src/helpers/Conversation.helper.ts (3 hunks)
  • packages/sdk/package.json (1 hunks)
  • packages/sdk/src/Agent/Agent.class.ts (1 hunks)
  • packages/sdk/src/Components/Skill.ts (2 hunks)
  • packages/sdk/src/LLM/Chat.class.ts (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@alaa-eddine-k alaa-eddine-k merged commit a60550a into main Sep 5, 2025
1 check was pending
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