Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4400db1
refactor(harness): shrink stream input contract
tlgimenes Jun 25, 2026
1a20fab
fix(harness): tighten v3 stream input contract
tlgimenes Jun 25, 2026
d4f0f0e
refactor(sandbox): narrow workspace cwd contract
tlgimenes Jun 25, 2026
c1912ae
fix(sandbox): carry dispatch run id outside harness input
tlgimenes Jun 25, 2026
16f1881
fix(sandbox): type dispatch envelope rebasing
tlgimenes Jun 25, 2026
30cc021
fix(sandbox): make rebased cwd explicit
tlgimenes Jun 25, 2026
d4f2efd
refactor(harness): feed cli harnesses one user message
tlgimenes Jun 25, 2026
b970328
fix(harness): keep cli tests isolated
tlgimenes Jun 25, 2026
6a08966
refactor(dispatch): send one wire-ready user message
tlgimenes Jun 26, 2026
22a21a3
fix(dispatch): keep decopilot context off wire
tlgimenes Jun 26, 2026
6e5675e
fix(dispatch): settle link prep failures
tlgimenes Jun 26, 2026
ba61c3e
fix(e2e): assert v3 harness work items
tlgimenes Jun 26, 2026
443ed36
refactor(decopilot): own history context loading
tlgimenes Jun 26, 2026
a7357be
refactor(decopilot): remove desktop runtime path
tlgimenes Jun 26, 2026
7b7417b
refactor(harness): move shared helpers out of decopilot
tlgimenes Jun 26, 2026
ba69ac7
refactor(harness): simplify decopilot exports
tlgimenes Jun 26, 2026
01ea59b
refactor(link): bump harness wire protocol
tlgimenes Jun 26, 2026
5b62bae
test(harness): cover desktop cli image work items
tlgimenes Jun 26, 2026
7bfd3bc
test(sandbox): align cwd rebase test with v3 contract
tlgimenes Jun 26, 2026
2a27f7f
fix(ci): clean decopilot contract follow-ups
tlgimenes Jun 26, 2026
05187ce
fix(decopilot): use run context branch for dev tools
tlgimenes Jun 26, 2026
1666d85
fix(e2e): mark cli image test model vision-capable
tlgimenes Jun 26, 2026
b74a0fd
fix(decopilot): mark desktop cli models vision-capable
tlgimenes Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 0 additions & 44 deletions apps/mesh/src/api/routes/decopilot/conversation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
*/

import type { ChatMessage } from "./types";
import type { Memory } from "./memory";
import type { ThreadMessage } from "@/storage/types";
export {
denyPendingApprovals,
processConversation,
Expand All @@ -25,45 +23,3 @@ export function splitRequestMessages(messages: ChatMessage[]): {
const requestMessage = messages.find((m) => m.role !== "system")!;
return { systemMessages, requestMessage };
}

async function loadMemory(memory: Memory, windowSize: number) {
const threadMessages = await memory.loadHistory(windowSize);
return threadMessages;
}

function mergeMessages(
threadMessages: ThreadMessage[],
requestMessage?: ChatMessage,
): ChatMessage[] {
// Filter out messages with empty parts to prevent bricked threads
// (e.g. assistant messages saved after an LLM error before any content was generated)
const validMessages = threadMessages.filter(
(m) => m.parts && m.parts.length > 0,
);
if (!requestMessage) {
return validMessages as ChatMessage[];
}
const matchIndex = validMessages.findIndex((m) => m.id === requestMessage.id);
const conversation =
matchIndex >= 0
? [...validMessages.slice(0, matchIndex), requestMessage]
: [...validMessages, requestMessage];
return conversation;
}

export async function loadAndMergeMessages(
memory: Memory,
requestMessage: ChatMessage | undefined,
systemMessages: ChatMessage[],
windowSize: number,
/** Subagent runs start FRESH: skip the thread's history and send only the
* system prompt + the request (the subtask prompt). */
skipHistory = false,
): Promise<ChatMessage[]> {
const threadMessages = skipHistory
? []
: await loadMemory(memory, windowSize);
const conversation = mergeMessages(threadMessages, requestMessage);
const allMessages: ChatMessage[] = [...systemMessages, ...conversation];
return allMessages;
}
Loading
Loading