mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-20 04:11:10 -05:00
Refactor ClineMessage
This commit is contained in:
@@ -25,7 +25,7 @@ import {
|
||||
ClaudeApiReqCancelReason,
|
||||
ClaudeApiReqInfo,
|
||||
ClaudeAsk,
|
||||
ClaudeMessage,
|
||||
ClineMessage,
|
||||
ClaudeSay,
|
||||
ClaudeSayTool,
|
||||
} from "../shared/ExtensionMessage"
|
||||
@@ -60,7 +60,7 @@ export class Cline {
|
||||
customInstructions?: string
|
||||
alwaysAllowReadOnly: boolean
|
||||
apiConversationHistory: Anthropic.MessageParam[] = []
|
||||
claudeMessages: ClaudeMessage[] = []
|
||||
claudeMessages: ClineMessage[] = []
|
||||
private askResponse?: ClaudeAskResponse
|
||||
private askResponseText?: string
|
||||
private askResponseImages?: string[]
|
||||
@@ -150,7 +150,7 @@ export class Cline {
|
||||
}
|
||||
}
|
||||
|
||||
private async getSavedClaudeMessages(): Promise<ClaudeMessage[]> {
|
||||
private async getSavedClaudeMessages(): Promise<ClineMessage[]> {
|
||||
const filePath = path.join(await this.ensureTaskDirectoryExists(), GlobalFileNames.claudeMessages)
|
||||
const fileExists = await fileExistsAtPath(filePath)
|
||||
if (fileExists) {
|
||||
@@ -159,12 +159,12 @@ export class Cline {
|
||||
return []
|
||||
}
|
||||
|
||||
private async addToClaudeMessages(message: ClaudeMessage) {
|
||||
private async addToClaudeMessages(message: ClineMessage) {
|
||||
this.claudeMessages.push(message)
|
||||
await this.saveClaudeMessages()
|
||||
}
|
||||
|
||||
private async overwriteClaudeMessages(newMessages: ClaudeMessage[]) {
|
||||
private async overwriteClaudeMessages(newMessages: ClineMessage[]) {
|
||||
this.claudeMessages = newMessages
|
||||
await this.saveClaudeMessages()
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ export interface ExtensionMessage {
|
||||
images?: string[]
|
||||
ollamaModels?: string[]
|
||||
filePaths?: string[]
|
||||
partialMessage?: ClaudeMessage
|
||||
partialMessage?: ClineMessage
|
||||
openRouterModels?: Record<string, ModelInfo>
|
||||
}
|
||||
|
||||
@@ -32,12 +32,12 @@ export interface ExtensionState {
|
||||
customInstructions?: string
|
||||
alwaysAllowReadOnly?: boolean
|
||||
uriScheme?: string
|
||||
claudeMessages: ClaudeMessage[]
|
||||
claudeMessages: ClineMessage[]
|
||||
taskHistory: HistoryItem[]
|
||||
shouldShowAnnouncement: boolean
|
||||
}
|
||||
|
||||
export interface ClaudeMessage {
|
||||
export interface ClineMessage {
|
||||
ts: number
|
||||
type: "ask" | "say"
|
||||
ask?: ClaudeAsk
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ClaudeMessage } from "./ExtensionMessage"
|
||||
import { ClineMessage } from "./ExtensionMessage"
|
||||
|
||||
/**
|
||||
* Combines API request start and finish messages in an array of ClaudeMessages.
|
||||
@@ -18,8 +18,8 @@ import { ClaudeMessage } from "./ExtensionMessage"
|
||||
* const result = combineApiRequests(messages);
|
||||
* // Result: [{ type: "say", say: "api_req_started", text: '{"request":"GET /api/data","cost":0.005}', ts: 1000 }]
|
||||
*/
|
||||
export function combineApiRequests(messages: ClaudeMessage[]): ClaudeMessage[] {
|
||||
const combinedApiRequests: ClaudeMessage[] = []
|
||||
export function combineApiRequests(messages: ClineMessage[]): ClineMessage[] {
|
||||
const combinedApiRequests: ClineMessage[] = []
|
||||
|
||||
for (let i = 0; i < messages.length; i++) {
|
||||
if (messages[i].type === "say" && messages[i].say === "api_req_started") {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ClaudeMessage } from "./ExtensionMessage"
|
||||
import { ClineMessage } from "./ExtensionMessage"
|
||||
|
||||
/**
|
||||
* Combines sequences of command and command_output messages in an array of ClaudeMessages.
|
||||
@@ -20,8 +20,8 @@ import { ClaudeMessage } from "./ExtensionMessage"
|
||||
* const result = simpleCombineCommandSequences(messages);
|
||||
* // Result: [{ type: 'ask', ask: 'command', text: 'ls\nfile1.txt\nfile2.txt', ts: 1625097600000 }]
|
||||
*/
|
||||
export function combineCommandSequences(messages: ClaudeMessage[]): ClaudeMessage[] {
|
||||
const combinedCommands: ClaudeMessage[] = []
|
||||
export function combineCommandSequences(messages: ClineMessage[]): ClineMessage[] {
|
||||
const combinedCommands: ClineMessage[] = []
|
||||
|
||||
// First pass: combine commands with their outputs
|
||||
for (let i = 0; i < messages.length; i++) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ClaudeMessage } from "./ExtensionMessage"
|
||||
import { ClineMessage } from "./ExtensionMessage"
|
||||
|
||||
interface ApiMetrics {
|
||||
totalTokensIn: number
|
||||
@@ -9,13 +9,13 @@ interface ApiMetrics {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates API metrics from an array of ClaudeMessages.
|
||||
* Calculates API metrics from an array of ClineMessages.
|
||||
*
|
||||
* This function processes 'api_req_started' messages that have been combined with their
|
||||
* corresponding 'api_req_finished' messages by the combineApiRequests function.
|
||||
* It extracts and sums up the tokensIn, tokensOut, cacheWrites, cacheReads, and cost from these messages.
|
||||
*
|
||||
* @param messages - An array of ClaudeMessage objects to process.
|
||||
* @param messages - An array of ClineMessage objects to process.
|
||||
* @returns An ApiMetrics object containing totalTokensIn, totalTokensOut, totalCacheWrites, totalCacheReads, and totalCost.
|
||||
*
|
||||
* @example
|
||||
@@ -25,7 +25,7 @@ interface ApiMetrics {
|
||||
* const { totalTokensIn, totalTokensOut, totalCost } = getApiMetrics(messages);
|
||||
* // Result: { totalTokensIn: 10, totalTokensOut: 20, totalCost: 0.005 }
|
||||
*/
|
||||
export function getApiMetrics(messages: ClaudeMessage[]): ApiMetrics {
|
||||
export function getApiMetrics(messages: ClineMessage[]): ApiMetrics {
|
||||
const result: ApiMetrics = {
|
||||
totalTokensIn: 0,
|
||||
totalTokensOut: 0,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { VSCodeBadge, VSCodeProgressRing } from "@vscode/webview-ui-toolkit/react"
|
||||
import deepEqual from "fast-deep-equal"
|
||||
import React, { memo, useEffect, useMemo, useRef } from "react"
|
||||
import { ClaudeApiReqInfo, ClaudeMessage, ClaudeSayTool } from "../../../../src/shared/ExtensionMessage"
|
||||
import { ClaudeApiReqInfo, ClineMessage, ClaudeSayTool } from "../../../../src/shared/ExtensionMessage"
|
||||
import { COMMAND_OUTPUT_STRING } from "../../../../src/shared/combineCommandSequences"
|
||||
import { vscode } from "../../utils/vscode"
|
||||
import CodeAccordian, { removeLeadingNonAlphanumeric } from "../common/CodeAccordian"
|
||||
@@ -12,10 +12,10 @@ import { highlightMentions } from "./TaskHeader"
|
||||
import { useSize } from "react-use"
|
||||
|
||||
interface ChatRowProps {
|
||||
message: ClaudeMessage
|
||||
message: ClineMessage
|
||||
isExpanded: boolean
|
||||
onToggleExpand: () => void
|
||||
lastModifiedMessage?: ClaudeMessage
|
||||
lastModifiedMessage?: ClineMessage
|
||||
isLast: boolean
|
||||
onHeightChange: (isTaller: boolean) => void
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { VSCodeButton } from "@vscode/webview-ui-toolkit/react"
|
||||
import React, { memo, useEffect, useMemo, useRef, useState } from "react"
|
||||
import { useWindowSize } from "react-use"
|
||||
import { ClaudeMessage } from "../../../../src/shared/ExtensionMessage"
|
||||
import { ClineMessage } from "../../../../src/shared/ExtensionMessage"
|
||||
import { useExtensionState } from "../../context/ExtensionStateContext"
|
||||
import { vscode } from "../../utils/vscode"
|
||||
import Thumbnails from "../common/Thumbnails"
|
||||
@@ -9,7 +9,7 @@ import { mentionRegexGlobal } from "../../../../src/shared/context-mentions"
|
||||
import { formatLargeNumber } from "../../utils/format"
|
||||
|
||||
interface TaskHeaderProps {
|
||||
task: ClaudeMessage
|
||||
task: ClineMessage
|
||||
tokensIn: number
|
||||
tokensOut: number
|
||||
doesModelSupportPromptCache: boolean
|
||||
|
||||
Reference in New Issue
Block a user