-
Notifications
You must be signed in to change notification settings - Fork 321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Retrieve messages from AI block via wsh #2064
base: main
Are you sure you want to change the base?
Conversation
WalkthroughThe pull request introduces a new command-line interface command designed to retrieve messages from an AI block. The new command, which accepts an optional block identifier and a limit flag to cap the number of returned messages, is integrated into the CLI with its own execution function. Across multiple components, corresponding RPC methods and types have been added to support this functionality. On the client side, an API method was implemented to handle the remote procedure call while ensuring the retrieval of messages, which are then processed and returned in a structured format. Additionally, new type definitions were introduced to standardize the data for AI messages and the associated parameters, while the backend RPC packages were updated with a constant command identifier and methods for handling the new message retrieval command. Error handling and JSON marshalling are incorporated to manage communication and data formatting consistently. Tip ⚡🧪 Multi-step agentic review comment chat (experimental)
✨ Finishing Touches
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
cmd/wsh/cmd/wshcmd-ai.go (1)
211-215
: Consider pretty-printing JSON for better human readability.The JSON output is printed without formatting, which may be difficult to read if used directly by humans.
- jsonBytes, err := json.Marshal(response) - if err != nil { - return fmt.Errorf("marshalling response: %w", err) - } - fmt.Print(string(jsonBytes)) + jsonBytes, err := json.MarshalIndent(response, "", " ") + if err != nil { + return fmt.Errorf("marshalling response: %w", err) + } + fmt.Println(string(jsonBytes))
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
cmd/wsh/cmd/wshcmd-ai.go
(2 hunks)frontend/app/store/wshclientapi.ts
(1 hunks)frontend/app/view/waveai/waveai.tsx
(1 hunks)frontend/types/gotypes.d.ts
(1 hunks)pkg/wshrpc/wshclient/wshclient.go
(1 hunks)pkg/wshrpc/wshrpctypes.go
(3 hunks)
🔇 Additional comments (13)
pkg/wshrpc/wshclient/wshclient.go (1)
25-29
: Well-implemented RPC command function.The
AiGetMessagesCommand
function follows the established pattern of other command functions in this file, properly utilizing the genericsendRpcRequestCallHelper
with the appropriate command name and return type.frontend/app/store/wshclientapi.ts (1)
15-18
: Correctly implemented API method.This TypeScript implementation of the
AiGetMessagesCommand
properly mirrors the Go implementation, maintaining consistency across the frontend and backend. The function signature with appropriate types and return value matches the pattern used throughout the codebase.frontend/app/view/waveai/waveai.tsx (1)
63-71
: Properly implemented handler with appropriate message transformation.The
handle_aigetmessages
method correctly:
- Retrieves messages from the global store
- Handles the limit parameter with a default fallback to 10
- Maps the internal message format (
user
/text
) to the expected response format (role
/content
)- Returns the transformed messages via the response helper
This implementation ensures clients can retrieve a configurable number of the most recent AI messages.
frontend/types/gotypes.d.ts (2)
44-46
: Properly defined request type with optional parameter.The
AiGetMessagesData
type definition correctly includes the optionallimit
parameter, matching the structure used in the Go implementation and allowing for flexible API usage.
49-52
: Well-structured message type definition.The
AiMessage
type correctly defines the structure for AI messages withrole
andcontent
properties, providing a clear contract for the data returned by theaigetmessages
command.pkg/wshrpc/wshrpctypes.go (4)
140-140
: Command constant added correctly.The new command constant follows the existing naming convention and is placed in the appropriate section of the file.
259-259
: Interface method added correctly.The
AiGetMessagesCommand
method is properly added to theWshRpcInterface
with appropriate parameter and return types, following the established pattern for RPC methods.
686-689
: Type definition for AiMessage is well-structured.The
AiMessage
struct provides a clear data structure with appropriate JSON tags for AI message representation.
691-693
: Type definition for AiGetMessagesData is properly documented.The
AiGetMessagesData
struct includes a helpful comment explaining the default behavior when the limit is 0.cmd/wsh/cmd/wshcmd-ai.go (4)
17-17
: Import added correctly.The
encoding/json
import is appropriately added for JSON marshaling functionality.
165-172
: Command definition is well-structured.The
aigetCmd
follows the Cobra command pattern consistently, with clear usage instructions and descriptions.
176-179
: Command registration and flag setup is proper.The initialization correctly adds the command to the root command and sets up the limit flag with an appropriate default value that matches the struct's documented behavior.
181-210
: Command implementation follows best practices.The
aigetRun
function properly handles error reporting, default values, and communicates with the server using the appropriate RPC methods.
Related to #2063