cline
Identity
-
Names:
cline/bot.cline. -
Native format:
cline-task: whole task arraysapi_conversation_history.json(legacy fallbackclaude_messages.json),ui_messages.json, and task metadata documents. New Cline SDK persistence is a separate unqualified format. -
Session ID: Native task-directory basename, checked against
history_item.idwhen present. Require a stable installation/profile namespace, including for Roo UUIDv7 tasks that share the legacy format. Relocation preserves both values. -
Notes: Preserve content block order, reasoning signatures and media. UI-only rows use
displayContentwith explicit absent model content/role.api_req_startedreports a request and supports a derived inference keyed by the UI row; retain recorded tokens and cost without fabricating a model. Approval and follow-up asks record requests, not inferred decisions.lastCheckpointHashsupplies a shadow-Git checkpoint ref.history_item.tasksupplies title; native token totals are cumulative session usage. Context-history and condensation annotations do not establish exact active-context replacement ranges.
Position basis
- Entity keys and order: Unique API
idand UItsidentify rows. The pinned UI writer looks up and updates byts, preserving it on partial completion. This is a native key contract, not a timestamp join. Duplicate keys remain distinct capture-scoped rows. Read API array, UI array, then metadata in fixed order. Every current snapshot projection uses snapshot assembly.
Use only positions established by the stated format and mapping evidence. Current-state rows without transcript positions go at the end, as the snapshot tail. A protocol commit boundary takes precedence over physical EOF; uncommitted bytes are not a gap.
Destinations
cline: native facts without a standard field
Links
- Links and lineage:
tool_use.idjoinstool_result.tool_use_idonly for a unique invocation. UI and API rows have no qualified identity join. Do not infer SDK parents, delegation, forks, copies, root or checkpoint cause from this task format.
Usage
Select one report per native accounting identity only when this entry establishes that identity. Keep unjoinable or overlapping reports as native evidence. Declare incomplete semantic coverage. Schema defaults and placeholder zeros are not reported usage. Backend inclusion rules require evidence; do not infer them from a model name.Lane and unassigned facts
Facts without established session ownership use manifest_meta["bot.cline/unassigned"] with the common shape. Selection may retain these facts with any session subset, including an empty subset, but must not imply session ownership. State the selection policy in the export report.
Losses
Declare every applicable loss under ASR-157. Missing model rendering, accounting joins, lineage or exact context boundaries remain losses when this entry does not qualify them. Unknown ownership is not itself lost data. Omitted unassigned facts use a documented vendor loss or report, not a new core category.Evidence
Basis: source-verified at version4.1.10, commit eed78103a4643711c311f05ee24ba57c3c3445ac, apps/vscode/src/core/storage/disk.ts and apps/vscode/src/sdk/message-translator.ts. Existing task fixtures and authored semantic tests do not qualify a new extension runtime release.
Evidence applies only to the named formats and explicit mappings above. A real capture covers only exercised behavior. A no-model writer probe covers persistence, not model or tool execution. Authored tests do not qualify an agent version. Unlisted formats and link mappings remain unqualified.
Observations from 2026-10-27
observed, version 3.0.74: Two headless CLI runs at 3.0.74 stored SDK session/message JSON. This is separate from the extension task arrays above. The converter discovered no streams; the SDK format has no qualified ASR mapping.
The ctx conversion produced 0 streams and 0 records, with 0 errors, 0 notices, 0 gaps and 0 unidentified inputs under validator-v0.1.2. These counts describe the selected output; an empty bundle qualifies no source format. No sanitized native fixture was retained for this observation.
Whole native records use native.record or native.blob, with JSON text columns preserved as strings. The exporter’s own bookkeeping for serialization, partitioning and message keys belongs in the exporter namespace (rs.ctx for ctx), not in a provider metadata destination. These runs add no evidence for unexercised approvals, lineage links, compaction boundaries or exact request context.