MCPcopy Create free account
hub / github.com/IgorWarzocha/howcode / persistHostThreadUpdate

Function persistHostThreadUpdate

desktop/pi-desktop-runtime.ts:77–120  ·  view source on GitHub ↗
(event: Extract<DesktopEvent, { type: 'thread-update' }>)

Source from the content-addressed store, hash-verified

75}
76
77async function persistHostThreadUpdate(event: Extract<DesktopEvent, { type: 'thread-update' }>) {
78 try {
79 await stat(event.sessionPath)
80 } catch {
81 return
82 }
83 const timestamp = Date.now()
84 const threadId = upsertThreadSummary({
85 id: event.threadId,
86 cwd: event.projectId,
87 sessionPath: event.sessionPath,
88 title: event.thread.title,
89 lastModifiedMs: timestamp,
90 })
91
92 event.threadId = threadId
93 if (isChatSessionPath(event.sessionPath)) {
94 upsertChatThread({ sessionPath: event.sessionPath, groupId: event.chatGroupId ?? null })
95 }
96 setThreadRunningState(
97 event.sessionPath,
98 event.reason === 'update' ||
99 event.reason === 'compaction-start' ||
100 (event.reason === 'start' && event.thread.messages.length > 0),
101 )
102
103 const latestUserPrompt = getLatestUserPrompt(event.thread)
104 if (event.reason === 'start' && (latestUserPrompt || hasInboxItem(event.sessionPath))) {
105 beginInboxThreadTurn(event.sessionPath, latestUserPrompt)
106 }
107
108 if (event.reason === 'end') {
109 const latestAssistantMessage = getLatestInboxAssistantMessage(event.thread.messages)
110 if (latestAssistantMessage) {
111 upsertInboxThreadMessage({
112 sessionPath: event.sessionPath,
113 userPrompt: latestUserPrompt,
114 content: latestAssistantMessage.content,
115 preview: latestAssistantMessage.preview,
116 lastAssistantAtMs: timestamp,
117 })
118 }
119 }
120}
121
122const threadUpdateForwardingBySession = new Map<string, Promise<void>>()
123

Callers 1

enqueueHostThreadUpdateFunction · 0.85

Calls 9

upsertThreadSummaryFunction · 0.90
isChatSessionPathFunction · 0.90
upsertChatThreadFunction · 0.90
setThreadRunningStateFunction · 0.90
hasInboxItemFunction · 0.90
beginInboxThreadTurnFunction · 0.90
upsertInboxThreadMessageFunction · 0.90
getLatestUserPromptFunction · 0.70

Tested by

no test coverage detected