@molecule/api-agent-transcript-cline
v1.0.1
Published
Reads Cline and Roo Code task history (ui_messages.json) into a normalized agent session
Maintainers
Readme
@molecule/api-agent-transcript-cline
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
Cline and Roo Code transcript reader for @molecule/api-agent-transcript.
Reads a task's ui_messages.json — the chat history Cline and Roo Code
keep per task in the extension's storage — into a normalized
AgentSession: the task and your replies, the agent's messages, questions
and plans, and the files it created or edited.
Quick Start
import { readFileSync } from 'node:fs'
import { readTranscript, setProvider } from '@molecule/api-agent-transcript'
import { provider } from '@molecule/api-agent-transcript-cline'
setProvider(provider)
// e.g. ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/tasks/<taskId>/ui_messages.json
const file = 'ui_messages.json'
const session = readTranscript({ text: readFileSync(file, 'utf8'), fileName: file })
console.log(session.harness, session.turns.length) // 'Cline' or 'Roo Code'Type
provider
Installation
npm install @molecule/api-agent-transcript-cline @molecule/api-agent-transcriptAPI
Functions
looksLikeUiMessages(text)
Whether a text is a Cline / Roo Code ui_messages.json.
function looksLikeUiMessages(text: string): booleantext— The file's text.
Returns: True on a positive match.
readUiMessages(text)
Read a Cline / Roo Code ui_messages.json.
function readUiMessages(text: string): AgentSessiontext— The file's text.
Returns: The normalized session.
replacementsOf(diff)
The text each SEARCH/REPLACE block replaces with, in any of the three
marker styles (Cline's ------- SEARCH / +++++++ REPLACE, Roo Code's and
older Cline's <<<<<<< SEARCH / >>>>>>> REPLACE, and Cline's
*** Begin Patch files).
function replacementsOf(diff: string): { text: string; create: boolean }[]diff— The diff text.
Returns: The replacement texts, and whether the whole file was written.
Constants
provider
Reads a Cline or Roo Code task's ui_messages.json.
const provider: AgentTranscriptReaderCore Interface
Implements @molecule/api-agent-transcript interface.
Bond Wiring
Setup function to register this provider with the core interface:
import { setProvider } from '@molecule/api-agent-transcript'
import { provider } from '@molecule/api-agent-transcript-cline'
export function setupAgentTranscriptCline(): void {
setProvider(provider)
}Injection Notes
Requirements
Peer dependencies:
@molecule/api-agent-transcript^1.0.0
Runtime Dependencies
@molecule/api-agent-transcriptRead
ui_messages.json, notapi_conversation_history.json. The second is the raw provider history, with injected environment details and tool results inside the user messages; it is not recognized here.harnessisClinewhen the file has Cline'staskmessage, otherwiseRoo Code(Roo records the task as its firsttextmessage).The UI messages name no model, so
modelis unset.Files:
newFileCreatedis the whole file;editedExistingFileand Roo'sappliedDiffcontribute each SEARCH/REPLACE block's replacement (Cline's------- SEARCH/+++++++ REPLACEand*** Begin Patchforms, and the<<<<<<< SEARCH/>>>>>>> REPLACEform Roo uses). An edit whose diff cannot be read is listed withcomplete: false. The approval (ask) and the result (say) of one edit count once.Streaming fragments (
partial: true) are skipped.Format verified 2026-09-29 against the Cline and Roo Code sources (
ExtensionMessage.ts,packages/types/src/message.ts).
