ds-harness-remote 0.5.8 → 0.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp/adapter.d.ts +1 -1
- package/dist/acp/adapter.d.ts.map +1 -1
- package/dist/acp/adapters/claude-history.d.ts +3 -0
- package/dist/acp/adapters/claude-history.d.ts.map +1 -0
- package/dist/acp/adapters/claude-history.js +118 -0
- package/dist/acp/adapters/claude-history.js.map +1 -0
- package/dist/acp/adapters/claude-process.d.ts +21 -0
- package/dist/acp/adapters/claude-process.d.ts.map +1 -0
- package/dist/acp/adapters/claude-process.js +147 -0
- package/dist/acp/adapters/claude-process.js.map +1 -0
- package/dist/acp/adapters/cursor-process.d.ts +9 -4
- package/dist/acp/adapters/cursor-process.d.ts.map +1 -1
- package/dist/acp/adapters/cursor-process.js +31 -3
- package/dist/acp/adapters/cursor-process.js.map +1 -1
- package/dist/acp/adapters/opencode-process.d.ts +67 -0
- package/dist/acp/adapters/opencode-process.d.ts.map +1 -0
- package/dist/acp/adapters/opencode-process.js +272 -0
- package/dist/acp/adapters/opencode-process.js.map +1 -0
- package/dist/acp/adapters/opencode.d.ts +8 -0
- package/dist/acp/adapters/opencode.d.ts.map +1 -0
- package/dist/acp/adapters/opencode.js +8 -0
- package/dist/acp/adapters/opencode.js.map +1 -0
- package/dist/acp/adapters/pi-process.d.ts +42 -0
- package/dist/acp/adapters/pi-process.d.ts.map +1 -0
- package/dist/acp/adapters/pi-process.js +410 -0
- package/dist/acp/adapters/pi-process.js.map +1 -0
- package/dist/acp/gateway.d.ts +8 -0
- package/dist/acp/gateway.d.ts.map +1 -1
- package/dist/acp/gateway.js +299 -67
- package/dist/acp/gateway.js.map +1 -1
- package/dist/acp/method-policy.d.ts +19 -19
- package/dist/acp/method-policy.js +5 -5
- package/dist/acp/method-policy.js.map +1 -1
- package/dist/acp/pi-tool-result.d.ts +9 -0
- package/dist/acp/pi-tool-result.d.ts.map +1 -0
- package/dist/acp/pi-tool-result.js +22 -0
- package/dist/acp/pi-tool-result.js.map +1 -0
- package/dist/acp/virtual-catalog.d.ts +50 -0
- package/dist/acp/virtual-catalog.d.ts.map +1 -0
- package/dist/acp/virtual-catalog.js +103 -0
- package/dist/acp/virtual-catalog.js.map +1 -0
- package/dist/acp/virtual-contract.d.ts +165 -0
- package/dist/acp/virtual-contract.d.ts.map +1 -0
- package/dist/acp/virtual-contract.js +216 -0
- package/dist/acp/virtual-contract.js.map +1 -0
- package/dist/acp/virtual-event-carrier.d.ts +50 -0
- package/dist/acp/virtual-event-carrier.d.ts.map +1 -0
- package/dist/acp/virtual-event-carrier.js +222 -0
- package/dist/acp/virtual-event-carrier.js.map +1 -0
- package/dist/acp/virtual-harness.d.ts +13 -112
- package/dist/acp/virtual-harness.d.ts.map +1 -1
- package/dist/acp/virtual-harness.js +129 -911
- package/dist/acp/virtual-harness.js.map +1 -1
- package/dist/acp/virtual-live.d.ts +78 -0
- package/dist/acp/virtual-live.d.ts.map +1 -0
- package/dist/acp/virtual-live.js +513 -0
- package/dist/acp/virtual-live.js.map +1 -0
- package/dist/acp/workspace-tools.js +1 -1
- package/dist/acp/workspace-tools.js.map +1 -1
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +1 -0
- package/dist/acp.js.map +1 -1
- package/dist/client/header.d.ts +10 -0
- package/dist/client/header.d.ts.map +1 -0
- package/dist/client/header.js +169 -0
- package/dist/client/header.js.map +1 -0
- package/dist/client/icons.d.ts +3 -0
- package/dist/client/icons.d.ts.map +1 -0
- package/dist/client/icons.js +3 -0
- package/dist/client/icons.js.map +1 -0
- package/dist/client/navigation.d.ts +5 -0
- package/dist/client/navigation.d.ts.map +1 -0
- package/dist/client/navigation.js +30 -0
- package/dist/client/navigation.js.map +1 -0
- package/dist/client/presentation.d.ts +17 -0
- package/dist/client/presentation.d.ts.map +1 -0
- package/dist/client/presentation.js +208 -0
- package/dist/client/presentation.js.map +1 -0
- package/dist/client/progress.d.ts +10 -0
- package/dist/client/progress.d.ts.map +1 -0
- package/dist/client/progress.js +82 -0
- package/dist/client/progress.js.map +1 -0
- package/dist/client/settings.d.ts +10 -0
- package/dist/client/settings.d.ts.map +1 -0
- package/dist/client/settings.js +335 -0
- package/dist/client/settings.js.map +1 -0
- package/dist/client/shell.d.ts +6 -0
- package/dist/client/shell.d.ts.map +1 -0
- package/dist/client/shell.js +128 -0
- package/dist/client/shell.js.map +1 -0
- package/dist/client/types.d.ts +264 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/workspaces.d.ts +11 -0
- package/dist/client/workspaces.d.ts.map +1 -0
- package/dist/client/workspaces.js +1179 -0
- package/dist/client/workspaces.js.map +1 -0
- package/dist/client-capabilities.d.ts +6 -0
- package/dist/client-capabilities.d.ts.map +1 -0
- package/dist/client-capabilities.js +88 -0
- package/dist/client-capabilities.js.map +1 -0
- package/dist/client-codex-streams.d.ts +23 -0
- package/dist/client-codex-streams.d.ts.map +1 -0
- package/dist/client-codex-streams.js +156 -0
- package/dist/client-codex-streams.js.map +1 -0
- package/dist/client-connection.d.ts +38 -0
- package/dist/client-connection.d.ts.map +1 -0
- package/dist/client-connection.js +210 -0
- package/dist/client-connection.js.map +1 -0
- package/dist/client-control.d.ts +48 -0
- package/dist/client-control.d.ts.map +1 -0
- package/dist/client-control.js +273 -0
- package/dist/client-control.js.map +1 -0
- package/dist/client-locale.d.ts +8 -0
- package/dist/client-locale.d.ts.map +1 -1
- package/dist/client-locale.js +16 -0
- package/dist/client-locale.js.map +1 -1
- package/dist/client-runtime-contract.d.ts +161 -0
- package/dist/client-runtime-contract.d.ts.map +1 -0
- package/dist/client-runtime-contract.js +127 -0
- package/dist/client-runtime-contract.js.map +1 -0
- package/dist/client-runtime.d.ts +24 -126
- package/dist/client-runtime.d.ts.map +1 -1
- package/dist/client-runtime.js +171 -867
- package/dist/client-runtime.js.map +1 -1
- package/dist/client-secure-transport.d.ts +1 -0
- package/dist/client-secure-transport.d.ts.map +1 -1
- package/dist/client-secure-transport.js +35 -16
- package/dist/client-secure-transport.js.map +1 -1
- package/dist/client-workspace-queries.d.ts +12 -0
- package/dist/client-workspace-queries.d.ts.map +1 -0
- package/dist/client-workspace-queries.js +66 -0
- package/dist/client-workspace-queries.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.github.js +2091 -1896
- package/dist/client.js +2091 -1896
- package/dist/client.js.map +1 -1
- package/dist/codex/domain.d.ts.map +1 -1
- package/dist/codex/domain.js +67 -46
- package/dist/codex/domain.js.map +1 -1
- package/dist/codex/method-policy.d.ts +9 -9
- package/dist/codex/virtual-catalog.d.ts +90 -0
- package/dist/codex/virtual-catalog.d.ts.map +1 -0
- package/dist/codex/virtual-catalog.js +317 -0
- package/dist/codex/virtual-catalog.js.map +1 -0
- package/dist/codex/virtual-contract.d.ts +96 -0
- package/dist/codex/virtual-contract.d.ts.map +1 -0
- package/dist/codex/virtual-contract.js +192 -0
- package/dist/codex/virtual-contract.js.map +1 -0
- package/dist/codex/virtual-event-carrier.d.ts +52 -0
- package/dist/codex/virtual-event-carrier.d.ts.map +1 -0
- package/dist/codex/virtual-event-carrier.js +212 -0
- package/dist/codex/virtual-event-carrier.js.map +1 -0
- package/dist/codex/virtual-harness.d.ts +16 -117
- package/dist/codex/virtual-harness.d.ts.map +1 -1
- package/dist/codex/virtual-harness.js +123 -1909
- package/dist/codex/virtual-harness.js.map +1 -1
- package/dist/codex/virtual-history.d.ts +74 -0
- package/dist/codex/virtual-history.d.ts.map +1 -0
- package/dist/codex/virtual-history.js +546 -0
- package/dist/codex/virtual-history.js.map +1 -0
- package/dist/codex/virtual-live.d.ts +75 -0
- package/dist/codex/virtual-live.d.ts.map +1 -0
- package/dist/codex/virtual-live.js +563 -0
- package/dist/codex/virtual-live.js.map +1 -0
- package/dist/codex/virtual-values.d.ts +29 -0
- package/dist/codex/virtual-values.d.ts.map +1 -0
- package/dist/codex/virtual-values.js +75 -0
- package/dist/codex/virtual-values.js.map +1 -0
- package/dist/config.js +4 -4
- package/dist/config.js.map +1 -1
- package/dist/control-runtime.js +2 -2
- package/dist/control-runtime.js.map +1 -1
- package/dist/harness-remote-bridge.d.ts +2 -1
- package/dist/harness-remote-bridge.d.ts.map +1 -1
- package/dist/harness-remote-bridge.js +11 -3
- package/dist/harness-remote-bridge.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16044 -13878
- package/dist/index.js.map +4 -4
- package/dist/plugin-route-dispatcher.d.ts +2 -2
- package/dist/plugin-route-dispatcher.d.ts.map +1 -1
- package/dist/plugin-route-dispatcher.js +2 -2
- package/dist/plugin-route-dispatcher.js.map +1 -1
- package/dist/remote-typert-gateway.js +7 -1
- package/dist/remote-typert-gateway.js.map +1 -1
- package/dist/server-connection.d.ts +1 -0
- package/dist/server-connection.d.ts.map +1 -1
- package/dist/server-connection.js +6 -1
- package/dist/server-connection.js.map +1 -1
- package/dist/service.d.ts +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +6 -5
- package/dist/service.js.map +1 -1
- package/dist/terminal-carrier-compat.d.ts +14 -0
- package/dist/terminal-carrier-compat.d.ts.map +1 -0
- package/dist/terminal-carrier-compat.js +259 -0
- package/dist/terminal-carrier-compat.js.map +1 -0
- package/dist/typert-gateway-contract.d.ts +6 -1
- package/dist/typert-gateway-contract.d.ts.map +1 -1
- package/dist/typert-gateway-switch.d.ts +2 -1
- package/dist/typert-gateway-switch.d.ts.map +1 -1
- package/dist/typert-gateway-switch.js +31 -15
- package/dist/typert-gateway-switch.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dsh-plugin.json +1 -1
- package/package.json +21 -19
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
import { projectCodexThread } from '@dsh-remote/client-core';
|
|
2
|
+
import { contentBlocks, toolOutputImageBlocks } from './codex-image-codec.js';
|
|
3
|
+
import { modelSelection } from './virtual-catalog.js';
|
|
4
|
+
import { array, CODEX_SESSION_PREFIX, hashString, integer, normalizeTime, record, string } from './virtual-values.js';
|
|
5
|
+
const MAX_LIVE_TOOL_OUTPUT = 128 * 1024;
|
|
6
|
+
const DEFAULT_HISTORY_MESSAGES = 50;
|
|
7
|
+
export function projectCodexNativeHistory(thread, sessionId, sessionGeneration = 'legacy') {
|
|
8
|
+
const entries = [];
|
|
9
|
+
let seq = 0;
|
|
10
|
+
let turnNumber = 0;
|
|
11
|
+
const active = activeTurnId(thread.turns);
|
|
12
|
+
const append = (type, data, time = Date.now(), view, sourceEventSeqs) => {
|
|
13
|
+
const eventSeq = seq++;
|
|
14
|
+
entries.push({
|
|
15
|
+
type: 'event',
|
|
16
|
+
event: {
|
|
17
|
+
type,
|
|
18
|
+
seq: eventSeq,
|
|
19
|
+
time,
|
|
20
|
+
data: adaptEventData(type, data, sessionGeneration),
|
|
21
|
+
...(sourceEventSeqs === undefined ? {} : { sourceEventSeqs }),
|
|
22
|
+
...(isSurfaceEvent(type) ? { surfaceOp: 'append' } : {}),
|
|
23
|
+
},
|
|
24
|
+
...(view === undefined ? {} : { view }),
|
|
25
|
+
});
|
|
26
|
+
return eventSeq;
|
|
27
|
+
};
|
|
28
|
+
for (const rawTurn of array(thread.turns)) {
|
|
29
|
+
const turn = record(rawTurn);
|
|
30
|
+
const turnItems = array(turn.items).map(record);
|
|
31
|
+
const toolImages = turnItems.flatMap(toolOutputImageBlocks);
|
|
32
|
+
let imageOwner = -1;
|
|
33
|
+
for (let index = 0; index < turnItems.length; index += 1) {
|
|
34
|
+
if (turnItems[index].type === 'agentMessage')
|
|
35
|
+
imageOwner = index;
|
|
36
|
+
}
|
|
37
|
+
turnNumber += 1;
|
|
38
|
+
const turnActive = isActiveCodexTurn(turn);
|
|
39
|
+
const time = normalizeTime(turn.createdAt) || normalizeTime(turn.startedAt) || normalizeTime(thread.createdAt) || Date.now();
|
|
40
|
+
append('turn/start', { turn: turnNumber }, time);
|
|
41
|
+
append('step/start', { turn: turnNumber, step: 1 }, time);
|
|
42
|
+
for (let itemIndex = 0; itemIndex < turnItems.length; itemIndex += 1) {
|
|
43
|
+
const item = turnItems[itemIndex];
|
|
44
|
+
let toolCallSeq;
|
|
45
|
+
for (const event of itemEvents(item, turnNumber, 1, undefined, modelSelection(), sessionId, itemIndex === imageOwner ? toolImages : [])) {
|
|
46
|
+
const eventSeq = append(event.type, event.data, normalizeTime(item.createdAt) || time, event.view, event.type === 'tool/result' && toolCallSeq !== undefined ? [toolCallSeq] : undefined);
|
|
47
|
+
if (event.type === 'tool/call')
|
|
48
|
+
toolCallSeq = eventSeq;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (turnActive)
|
|
52
|
+
continue;
|
|
53
|
+
append('step/end', { turn: turnNumber, step: 1 }, normalizeTime(turn.updatedAt) || normalizeTime(turn.completedAt) || time);
|
|
54
|
+
append('turn/end', {
|
|
55
|
+
turn: turnNumber,
|
|
56
|
+
reason: turn.status === 'failed' || turn.error !== undefined && turn.error !== null
|
|
57
|
+
? { kind: 'error', error: { message: 'CodeX turn failed.', code: 'codex-turn-failed' } }
|
|
58
|
+
: { kind: 'completed' },
|
|
59
|
+
}, normalizeTime(turn.updatedAt) || normalizeTime(turn.completedAt) || time);
|
|
60
|
+
}
|
|
61
|
+
const projected = projectCodexThread(thread);
|
|
62
|
+
return {
|
|
63
|
+
header: {
|
|
64
|
+
version: sessionGeneration === 'v3' ? 3 : 1,
|
|
65
|
+
id: sessionId,
|
|
66
|
+
createdAt: projected?.createdAt ?? Date.now(),
|
|
67
|
+
...(projected?.cwd === undefined ? {} : { cwd: projected.cwd }),
|
|
68
|
+
...(sessionGeneration === 'v3' ? { isSeeded: false } : {}),
|
|
69
|
+
},
|
|
70
|
+
entries,
|
|
71
|
+
lastSeq: seq - 1,
|
|
72
|
+
nextTurn: turnNumber,
|
|
73
|
+
...(active === undefined ? {} : { activeTurnId: active }),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export function paginateCodexNativeHistory(history, request) {
|
|
77
|
+
const throughSeq = Math.min(request.throughSeq ?? history.lastSeq, history.lastSeq);
|
|
78
|
+
const endSeq = Math.min(throughSeq, request.beforeSeq === undefined ? throughSeq : request.beforeSeq - 1);
|
|
79
|
+
const window = endSeq < 0 ? [] : history.entries.filter(entry => entry.event.seq <= endSeq);
|
|
80
|
+
const maxMessages = request.maxMessages ?? DEFAULT_HISTORY_MESSAGES;
|
|
81
|
+
let messages = 0;
|
|
82
|
+
let cut = 0;
|
|
83
|
+
for (let index = window.length - 1; index >= 0; index -= 1) {
|
|
84
|
+
const event = window[index].event;
|
|
85
|
+
if (!isSurfaceEvent(event.type) || event.surfaceOp !== 'append')
|
|
86
|
+
continue;
|
|
87
|
+
messages += 1;
|
|
88
|
+
if (messages >= maxMessages) {
|
|
89
|
+
cut = Math.min(event.seq, ...(event.sourceEventSeqs ?? []));
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
header: history.header,
|
|
95
|
+
cursor: history.lastSeq,
|
|
96
|
+
nextTurn: history.nextTurn,
|
|
97
|
+
records: window.filter(entry => entry.event.seq >= cut),
|
|
98
|
+
hasMore: window.some(entry => entry.event.seq < cut),
|
|
99
|
+
...(history.activeTurnId === undefined ? {} : { activeTurnId: history.activeTurnId }),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export function adaptEventData(type, data, sessionGeneration) {
|
|
103
|
+
if (sessionGeneration !== 'v3' || type !== 'assistant/message')
|
|
104
|
+
return data;
|
|
105
|
+
const value = record(data);
|
|
106
|
+
return Array.isArray(value.stream) ? value : { ...value, stream: [] };
|
|
107
|
+
}
|
|
108
|
+
export function adaptCodexHistoryPage(value, sessionGeneration) {
|
|
109
|
+
if (sessionGeneration !== 'v3')
|
|
110
|
+
return value;
|
|
111
|
+
const page = record(value);
|
|
112
|
+
const sourceHeader = record(page.header);
|
|
113
|
+
const { seedLength: _seedLength, ...header } = sourceHeader;
|
|
114
|
+
const records = Array.isArray(page.records)
|
|
115
|
+
? page.records.map(raw => {
|
|
116
|
+
const entry = record(raw);
|
|
117
|
+
const sourceEvent = record(entry.event);
|
|
118
|
+
const sourceSurfaceOp = record(sourceEvent.surfaceOp);
|
|
119
|
+
const surfaceOp = sourceEvent.surfaceOp === 'append'
|
|
120
|
+
? 'append'
|
|
121
|
+
: sourceSurfaceOp.op === 'replace'
|
|
122
|
+
&& integer(sourceSurfaceOp.startSeq) !== undefined
|
|
123
|
+
&& integer(sourceSurfaceOp.endSeq) !== undefined
|
|
124
|
+
? sourceSurfaceOp
|
|
125
|
+
: sourceSurfaceOp.op === 'replace'
|
|
126
|
+
&& integer(sourceSurfaceOp.start) !== undefined
|
|
127
|
+
&& integer(sourceSurfaceOp.end) !== undefined
|
|
128
|
+
? {
|
|
129
|
+
op: 'replace',
|
|
130
|
+
startSeq: sourceSurfaceOp.start,
|
|
131
|
+
endSeq: sourceSurfaceOp.end,
|
|
132
|
+
}
|
|
133
|
+
: sourceEvent.surfaceOp;
|
|
134
|
+
return {
|
|
135
|
+
...entry,
|
|
136
|
+
event: {
|
|
137
|
+
...sourceEvent,
|
|
138
|
+
data: adaptEventData(string(sourceEvent.type) ?? '', sourceEvent.data, sessionGeneration),
|
|
139
|
+
...(surfaceOp === undefined ? {} : { surfaceOp }),
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
})
|
|
143
|
+
: page.records;
|
|
144
|
+
return {
|
|
145
|
+
...page,
|
|
146
|
+
header: { ...header, version: 3, isSeeded: sourceHeader.isSeeded === true },
|
|
147
|
+
records,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
export function itemEvents(item, turn, step, requestId, selection = modelSelection(), sessionId = CODEX_SESSION_PREFIX, supplementalImages = []) {
|
|
151
|
+
const type = string(item.type);
|
|
152
|
+
const id = string(item.id) ?? `${turn}:${step}:${hashString(JSON.stringify(item))}`;
|
|
153
|
+
const text = itemText(item);
|
|
154
|
+
if (type === 'userMessage')
|
|
155
|
+
return [{
|
|
156
|
+
type: 'user/message',
|
|
157
|
+
data: {
|
|
158
|
+
id,
|
|
159
|
+
role: 'user',
|
|
160
|
+
content: messageContent(item, `${sessionId}:${id}`, 'text', text),
|
|
161
|
+
source: requestId === undefined || requestId === '' ? { kind: 'user' } : { kind: 'user', rpcId: requestId },
|
|
162
|
+
},
|
|
163
|
+
}];
|
|
164
|
+
if (type === 'agentMessage' || type === 'reasoning' || type === 'plan')
|
|
165
|
+
return [{
|
|
166
|
+
type: 'assistant/message',
|
|
167
|
+
data: {
|
|
168
|
+
turn,
|
|
169
|
+
step,
|
|
170
|
+
message: {
|
|
171
|
+
id,
|
|
172
|
+
role: 'assistant',
|
|
173
|
+
content: messageContent(item, `${sessionId}:${id}`, type === 'reasoning' ? 'reasoning' : 'text', text, type === 'agentMessage' ? supplementalImages : []),
|
|
174
|
+
source: { kind: 'model', provider: selection.provider, model: selection.model },
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
}];
|
|
178
|
+
if (type !== undefined && isToolItemType(type)) {
|
|
179
|
+
const name = toolEventName(type);
|
|
180
|
+
const args = toolArguments(item);
|
|
181
|
+
return [
|
|
182
|
+
{
|
|
183
|
+
type: 'tool/call',
|
|
184
|
+
data: { turn, step, callId: id, name, arguments: JSON.stringify(args) },
|
|
185
|
+
view: { for: 'call', view: toolCallView(item, type, args) },
|
|
186
|
+
},
|
|
187
|
+
toolResultEvent(item, turn, step, id, toolResultText(item, type, text)),
|
|
188
|
+
];
|
|
189
|
+
}
|
|
190
|
+
if (type === 'error')
|
|
191
|
+
return [{
|
|
192
|
+
type: 'assistant/message',
|
|
193
|
+
data: {
|
|
194
|
+
turn,
|
|
195
|
+
step,
|
|
196
|
+
message: {
|
|
197
|
+
id,
|
|
198
|
+
role: 'assistant',
|
|
199
|
+
content: [{ type: 'text', text: text ?? 'CodeX reported an error.' }],
|
|
200
|
+
source: { kind: 'model', provider: selection.provider, model: selection.model },
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
}];
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
function messageContent(item, attachmentSeed, fallbackType, fallbackText, supplementalImages = []) {
|
|
207
|
+
const source = item.content ?? item.input;
|
|
208
|
+
const blocks = contentBlocks(source, attachmentSeed);
|
|
209
|
+
const images = contentBlocks(supplementalImages, `${attachmentSeed}:tool-output`);
|
|
210
|
+
if (blocks.length > 0 || images.length > 0) {
|
|
211
|
+
return [...(blocks.length > 0 ? blocks : [{ type: fallbackType, text: fallbackText ?? '' }]), ...images];
|
|
212
|
+
}
|
|
213
|
+
return [{ type: fallbackType, text: fallbackText ?? '' }];
|
|
214
|
+
}
|
|
215
|
+
export function toolResultEvent(item, turn, step, id, resultText) {
|
|
216
|
+
const type = string(item.type) ?? 'unknown';
|
|
217
|
+
return {
|
|
218
|
+
type: 'tool/result',
|
|
219
|
+
data: {
|
|
220
|
+
turn,
|
|
221
|
+
step,
|
|
222
|
+
message: {
|
|
223
|
+
id: `${id}:result`,
|
|
224
|
+
role: 'user',
|
|
225
|
+
content: [{
|
|
226
|
+
type: 'tool-result',
|
|
227
|
+
toolCallId: id,
|
|
228
|
+
content: [{ type: 'text', text: resultText }],
|
|
229
|
+
...(item.status === 'failed' || item.success === false ? { isError: true } : {}),
|
|
230
|
+
}],
|
|
231
|
+
source: { kind: 'tool', callId: id },
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
view: { for: 'result', view: toolResultView(item, type, resultText) },
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
export function toolResultContentReplacement(event) {
|
|
238
|
+
const data = record(event.data);
|
|
239
|
+
const message = record(data.message);
|
|
240
|
+
const content = array(message.content);
|
|
241
|
+
const result = record(content[0]);
|
|
242
|
+
if (result.isError === undefined)
|
|
243
|
+
return event;
|
|
244
|
+
const { isError: _isError, ...stableResult } = result;
|
|
245
|
+
return {
|
|
246
|
+
...event,
|
|
247
|
+
data: {
|
|
248
|
+
...data,
|
|
249
|
+
message: { ...message, content: [stableResult] },
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
export function isToolItemType(type) {
|
|
254
|
+
return type === 'commandExecution'
|
|
255
|
+
|| type === 'mcpToolCall'
|
|
256
|
+
|| type === 'dynamicToolCall'
|
|
257
|
+
|| type === 'fileChange'
|
|
258
|
+
|| type === 'functionCallOutput'
|
|
259
|
+
|| type === 'hookPrompt'
|
|
260
|
+
|| type === 'collabAgentToolCall'
|
|
261
|
+
|| type === 'subAgentActivity'
|
|
262
|
+
|| type === 'webSearch'
|
|
263
|
+
|| type === 'imageView'
|
|
264
|
+
|| type === 'imageGeneration'
|
|
265
|
+
|| type === 'sleep'
|
|
266
|
+
|| type === 'enteredReviewMode'
|
|
267
|
+
|| type === 'exitedReviewMode'
|
|
268
|
+
|| type === 'contextCompaction';
|
|
269
|
+
}
|
|
270
|
+
function toolEventName(type) {
|
|
271
|
+
if (type === 'fileChange')
|
|
272
|
+
return 'codex.fileChange';
|
|
273
|
+
if (type === 'commandExecution')
|
|
274
|
+
return 'codex.command';
|
|
275
|
+
if (type === 'webSearch')
|
|
276
|
+
return 'codex.webSearch';
|
|
277
|
+
if (type === 'collabAgentToolCall' || type === 'subAgentActivity')
|
|
278
|
+
return 'codex.subagent';
|
|
279
|
+
if (type === 'imageView' || type === 'imageGeneration')
|
|
280
|
+
return 'codex.image';
|
|
281
|
+
if (type === 'enteredReviewMode' || type === 'exitedReviewMode')
|
|
282
|
+
return 'codex.reviewMode';
|
|
283
|
+
if (type === 'contextCompaction')
|
|
284
|
+
return 'codex.compaction';
|
|
285
|
+
return `codex.${type}`;
|
|
286
|
+
}
|
|
287
|
+
function toolResultText(item, type, text) {
|
|
288
|
+
if (type === 'fileChange')
|
|
289
|
+
return fileChangeSummary(item);
|
|
290
|
+
if (type === 'webSearch') {
|
|
291
|
+
const count = array(item.results).length;
|
|
292
|
+
return count === 0 ? 'Web search completed.' : `Web search returned ${count} result${count === 1 ? '' : 's'}.`;
|
|
293
|
+
}
|
|
294
|
+
if (type === 'imageView')
|
|
295
|
+
return `Viewed image: ${string(item.path) ?? 'image'}`;
|
|
296
|
+
if (type === 'imageGeneration') {
|
|
297
|
+
const savedPath = string(item.savedPath);
|
|
298
|
+
return savedPath === undefined ? `Image generation ${string(item.status) ?? 'completed'}.` : `Generated image: ${savedPath}`;
|
|
299
|
+
}
|
|
300
|
+
if (type === 'contextCompaction')
|
|
301
|
+
return 'CodeX compacted the conversation context.';
|
|
302
|
+
if (type === 'enteredReviewMode')
|
|
303
|
+
return `Entered review mode${string(item.review) ? `: ${string(item.review)}` : '.'}`;
|
|
304
|
+
if (type === 'exitedReviewMode')
|
|
305
|
+
return `Exited review mode${string(item.review) ? `: ${string(item.review)}` : '.'}`;
|
|
306
|
+
if (type === 'sleep')
|
|
307
|
+
return `Waited ${integer(item.durationMs) ?? 0} ms.`;
|
|
308
|
+
if (type === 'subAgentActivity') {
|
|
309
|
+
return [string(record(item.kind).type) ?? string(item.kind) ?? 'Subagent activity', string(item.agentPath)]
|
|
310
|
+
.filter((value) => value !== undefined).join(': ');
|
|
311
|
+
}
|
|
312
|
+
return text ?? itemText(record(item.result)) ?? itemText(record(item.output)) ?? string(item.status) ?? type;
|
|
313
|
+
}
|
|
314
|
+
export function isSurfaceEvent(type) {
|
|
315
|
+
return type === 'user/message' || type === 'assistant/message' || type === 'tool/result';
|
|
316
|
+
}
|
|
317
|
+
function toolCallView(item, type, args) {
|
|
318
|
+
if (type === 'commandExecution') {
|
|
319
|
+
return {
|
|
320
|
+
card: 'terminal',
|
|
321
|
+
title: commandText(item.command) ?? 'CodeX command',
|
|
322
|
+
...(typeof item.cwd === 'string' ? { cwd: item.cwd } : {}),
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
const locations = fileLocations(item);
|
|
326
|
+
if (type === 'fileChange') {
|
|
327
|
+
return {
|
|
328
|
+
card: 'generic',
|
|
329
|
+
title: locations.length === 0 ? 'CodeX file changes' : `Modify ${locations.length} file${locations.length === 1 ? '' : 's'}`,
|
|
330
|
+
kind: 'edit',
|
|
331
|
+
rawInput: args,
|
|
332
|
+
...(locations.length === 0 ? {} : { locations }),
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
if (type === 'webSearch') {
|
|
336
|
+
return {
|
|
337
|
+
card: 'generic',
|
|
338
|
+
title: string(item.query) ?? 'CodeX web search',
|
|
339
|
+
kind: 'search',
|
|
340
|
+
rawInput: args,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
if (type === 'imageView' || type === 'imageGeneration') {
|
|
344
|
+
const path = string(item.path) ?? string(item.savedPath);
|
|
345
|
+
return {
|
|
346
|
+
card: 'generic',
|
|
347
|
+
title: type === 'imageView' ? 'View image' : 'Generate image',
|
|
348
|
+
kind: type === 'imageView' ? 'read' : 'other',
|
|
349
|
+
...(path === undefined ? {} : { locations: [{ path }] }),
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
if (type === 'collabAgentToolCall' || type === 'subAgentActivity') {
|
|
353
|
+
return {
|
|
354
|
+
card: 'generic',
|
|
355
|
+
title: type === 'collabAgentToolCall'
|
|
356
|
+
? `Subagent: ${string(item.tool) ?? 'collaboration'}`
|
|
357
|
+
: `Subagent activity: ${string(item.agentPath) ?? string(item.agentThreadId) ?? 'agent'}`,
|
|
358
|
+
kind: 'other',
|
|
359
|
+
rawInput: args,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
if (type === 'contextCompaction')
|
|
363
|
+
return { card: 'generic', title: 'Compact conversation context', kind: 'other' };
|
|
364
|
+
if (type === 'enteredReviewMode')
|
|
365
|
+
return { card: 'generic', title: 'Enter review mode', kind: 'other' };
|
|
366
|
+
if (type === 'exitedReviewMode')
|
|
367
|
+
return { card: 'generic', title: 'Exit review mode', kind: 'other' };
|
|
368
|
+
return {
|
|
369
|
+
card: 'generic',
|
|
370
|
+
title: toolDisplayName(item, type),
|
|
371
|
+
kind: 'other',
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
function toolResultView(item, type, resultText) {
|
|
375
|
+
if (type === 'commandExecution') {
|
|
376
|
+
return {
|
|
377
|
+
card: 'terminal',
|
|
378
|
+
output: resultText,
|
|
379
|
+
...(typeof item.exitCode === 'number' && Number.isSafeInteger(item.exitCode) ? { exitCode: item.exitCode } : {}),
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
return {
|
|
383
|
+
card: 'generic',
|
|
384
|
+
...(type === 'fileChange' ? { title: item.status === 'inProgress' ? 'CodeX file changes' : 'CodeX file changes completed' } : {}),
|
|
385
|
+
...(type === 'mcpToolCall' && item.status === 'inProgress'
|
|
386
|
+
? { title: 'CodeX MCP tool in progress', content: [{ type: 'text', text: resultText }] }
|
|
387
|
+
: {}),
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
function toolDisplayName(item, type) {
|
|
391
|
+
return string(item.name)
|
|
392
|
+
?? string(item.tool)
|
|
393
|
+
?? string(record(item.tool).name)
|
|
394
|
+
?? (type === 'mcpToolCall' ? 'CodeX MCP tool' : humanizeItemType(type));
|
|
395
|
+
}
|
|
396
|
+
function fileLocations(item) {
|
|
397
|
+
return array(item.changes)
|
|
398
|
+
.map(value => string(record(value).path))
|
|
399
|
+
.filter((path) => path !== undefined && path.length > 0)
|
|
400
|
+
.map(path => ({ path }));
|
|
401
|
+
}
|
|
402
|
+
export function itemText(value) {
|
|
403
|
+
if (typeof value.text === 'string')
|
|
404
|
+
return value.text;
|
|
405
|
+
if (typeof value.content === 'string')
|
|
406
|
+
return value.content;
|
|
407
|
+
const content = Array.isArray(value.content)
|
|
408
|
+
? value.content
|
|
409
|
+
: Array.isArray(value.input) ? value.input : undefined;
|
|
410
|
+
if (content !== undefined) {
|
|
411
|
+
const text = content.map(part => {
|
|
412
|
+
if (typeof part === 'string')
|
|
413
|
+
return part;
|
|
414
|
+
const block = record(part);
|
|
415
|
+
return string(block.text) ?? string(block.content) ?? '';
|
|
416
|
+
}).filter(Boolean).join('\n');
|
|
417
|
+
if (text !== '')
|
|
418
|
+
return text;
|
|
419
|
+
}
|
|
420
|
+
if (Array.isArray(value.summary))
|
|
421
|
+
return value.summary.filter(item => typeof item === 'string').join('\n');
|
|
422
|
+
if (typeof value.output === 'string')
|
|
423
|
+
return value.output;
|
|
424
|
+
if (typeof value.aggregatedOutput === 'string')
|
|
425
|
+
return value.aggregatedOutput;
|
|
426
|
+
return undefined;
|
|
427
|
+
}
|
|
428
|
+
function toolArguments(item) {
|
|
429
|
+
if (item.type === 'commandExecution')
|
|
430
|
+
return { command: commandText(item.command) ?? item.command ?? '' };
|
|
431
|
+
if (item.type === 'fileChange')
|
|
432
|
+
return {
|
|
433
|
+
changes: array(item.changes).map(value => {
|
|
434
|
+
const change = record(value);
|
|
435
|
+
const kind = typeof change.kind === 'string' ? change.kind : string(record(change.kind).type);
|
|
436
|
+
return {
|
|
437
|
+
...(typeof change.path === 'string' ? { path: change.path } : {}),
|
|
438
|
+
...(kind === undefined ? {} : { kind }),
|
|
439
|
+
};
|
|
440
|
+
}),
|
|
441
|
+
};
|
|
442
|
+
if (item.type === 'webSearch')
|
|
443
|
+
return { query: string(item.query) ?? '' };
|
|
444
|
+
if (item.type === 'imageView')
|
|
445
|
+
return { path: string(item.path) ?? '' };
|
|
446
|
+
if (item.type === 'imageGeneration')
|
|
447
|
+
return {
|
|
448
|
+
...(string(item.revisedPrompt) === undefined ? {} : { prompt: string(item.revisedPrompt) }),
|
|
449
|
+
transparentBackground: item.transparentBackground === true,
|
|
450
|
+
};
|
|
451
|
+
if (item.type === 'collabAgentToolCall')
|
|
452
|
+
return {
|
|
453
|
+
tool: string(item.tool) ?? 'collaboration',
|
|
454
|
+
receiverThreadIds: array(item.receiverThreadIds).filter(value => typeof value === 'string'),
|
|
455
|
+
...(string(item.model) === undefined ? {} : { model: string(item.model) }),
|
|
456
|
+
};
|
|
457
|
+
if (item.type === 'subAgentActivity')
|
|
458
|
+
return {
|
|
459
|
+
agentThreadId: string(item.agentThreadId) ?? '',
|
|
460
|
+
agentPath: string(item.agentPath) ?? '',
|
|
461
|
+
kind: string(record(item.kind).type) ?? string(item.kind) ?? 'activity',
|
|
462
|
+
};
|
|
463
|
+
if (item.type === 'sleep')
|
|
464
|
+
return { durationMs: integer(item.durationMs) ?? 0 };
|
|
465
|
+
if (item.type === 'enteredReviewMode' || item.type === 'exitedReviewMode')
|
|
466
|
+
return {
|
|
467
|
+
review: string(item.review) ?? '',
|
|
468
|
+
};
|
|
469
|
+
if (item.type === 'contextCompaction')
|
|
470
|
+
return {};
|
|
471
|
+
return { name: item.name ?? item.tool ?? item.type ?? 'tool', arguments: item.arguments ?? item.input ?? {} };
|
|
472
|
+
}
|
|
473
|
+
export function fileChangeSummary(item) {
|
|
474
|
+
const changes = array(item.changes).map(value => {
|
|
475
|
+
const change = record(value);
|
|
476
|
+
const path = string(change.path);
|
|
477
|
+
const kind = typeof change.kind === 'string' ? change.kind : string(record(change.kind).type);
|
|
478
|
+
return [kind, path].filter((part) => part !== undefined && part.length > 0).join(' ');
|
|
479
|
+
}).filter(Boolean);
|
|
480
|
+
return changes.length === 0 ? 'File changes completed.' : changes.join('\n');
|
|
481
|
+
}
|
|
482
|
+
export function sanitizedFileChanges(value) {
|
|
483
|
+
return array(value).flatMap(raw => {
|
|
484
|
+
const change = record(raw);
|
|
485
|
+
const path = string(change.path);
|
|
486
|
+
if (path === undefined)
|
|
487
|
+
return [];
|
|
488
|
+
const kind = typeof change.kind === 'string' ? change.kind : string(record(change.kind).type);
|
|
489
|
+
return [{ path, ...(kind === undefined ? {} : { kind }) }];
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
export function appendBoundedText(current, delta) {
|
|
493
|
+
const value = `${current}${delta}`;
|
|
494
|
+
if (value.length <= MAX_LIVE_TOOL_OUTPUT)
|
|
495
|
+
return value;
|
|
496
|
+
return `… earlier output omitted …\n${value.slice(value.length - MAX_LIVE_TOOL_OUTPUT)}`;
|
|
497
|
+
}
|
|
498
|
+
function humanizeItemType(type) {
|
|
499
|
+
const names = {
|
|
500
|
+
functionCallOutput: 'CodeX function output',
|
|
501
|
+
hookPrompt: 'CodeX hook prompt',
|
|
502
|
+
dynamicToolCall: 'CodeX tool',
|
|
503
|
+
collabAgentToolCall: 'CodeX subagent',
|
|
504
|
+
subAgentActivity: 'CodeX subagent activity',
|
|
505
|
+
webSearch: 'CodeX web search',
|
|
506
|
+
imageView: 'CodeX image view',
|
|
507
|
+
imageGeneration: 'CodeX image generation',
|
|
508
|
+
sleep: 'CodeX wait',
|
|
509
|
+
enteredReviewMode: 'CodeX review mode',
|
|
510
|
+
exitedReviewMode: 'CodeX review mode',
|
|
511
|
+
contextCompaction: 'CodeX context compaction',
|
|
512
|
+
};
|
|
513
|
+
return names[type] ?? 'CodeX tool';
|
|
514
|
+
}
|
|
515
|
+
export function commandText(value) {
|
|
516
|
+
if (typeof value === 'string')
|
|
517
|
+
return value;
|
|
518
|
+
if (Array.isArray(value))
|
|
519
|
+
return value.filter(item => typeof item === 'string').join(' ');
|
|
520
|
+
const source = record(value);
|
|
521
|
+
return string(source.command) ?? string(source.text);
|
|
522
|
+
}
|
|
523
|
+
function activeTurnId(value) {
|
|
524
|
+
if (!Array.isArray(value))
|
|
525
|
+
return undefined;
|
|
526
|
+
for (let index = value.length - 1; index >= 0; index -= 1) {
|
|
527
|
+
const turn = record(value[index]);
|
|
528
|
+
if (isActiveCodexTurn(turn) && typeof turn.id === 'string' && turn.id.length > 0)
|
|
529
|
+
return turn.id;
|
|
530
|
+
}
|
|
531
|
+
return undefined;
|
|
532
|
+
}
|
|
533
|
+
function isActiveCodexTurn(turn) {
|
|
534
|
+
return turn.status === 'inProgress' || turn.status === 'running';
|
|
535
|
+
}
|
|
536
|
+
export function isCodexNativeHistoryPage(value, sessionId) {
|
|
537
|
+
const page = record(value);
|
|
538
|
+
const header = record(page.header);
|
|
539
|
+
return header.id === sessionId
|
|
540
|
+
&& integer(page.cursor) !== undefined
|
|
541
|
+
&& integer(page.nextTurn) !== undefined
|
|
542
|
+
&& Array.isArray(page.records)
|
|
543
|
+
&& typeof page.hasMore === 'boolean'
|
|
544
|
+
&& (page.activeTurnId === undefined || typeof page.activeTurnId === 'string');
|
|
545
|
+
}
|
|
546
|
+
//# sourceMappingURL=virtual-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-history.js","sourceRoot":"","sources":["../../src/codex/virtual-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { CodexPermissionPreset } from '@dsh-remote/protocol';
|
|
2
|
+
import type { HarnessSessionGeneration } from '../harness-version.js';
|
|
3
|
+
import type { CodexModelDirectory, CodexModelSelection } from './virtual-catalog.js';
|
|
4
|
+
import type { CodexImageAttachmentEntry, FollowState, PendingApproval, StreamedBlock } from './virtual-contract.js';
|
|
5
|
+
import type { CodexNativeHistoryPage, ProjectedNativeEvent, ToolEventView } from './virtual-history.js';
|
|
6
|
+
import type { CodexClientLike, JsonRecord } from './virtual-values.js';
|
|
7
|
+
/** Collaborates with one CodexVirtualHarness; never creates a second session or connection state. */
|
|
8
|
+
export interface CodexLiveProjectionContext {
|
|
9
|
+
readonly readHistoryPage: (threadId: string, page: {
|
|
10
|
+
beforeSeq?: number;
|
|
11
|
+
throughSeq?: number;
|
|
12
|
+
maxMessages?: number;
|
|
13
|
+
}, signal?: AbortSignal) => Promise<CodexNativeHistoryPage>;
|
|
14
|
+
readonly models: (signal?: AbortSignal) => Promise<CodexModelDirectory>;
|
|
15
|
+
readonly pendingRequestIds: Map<string, string>;
|
|
16
|
+
readonly follows: Set<FollowState>;
|
|
17
|
+
readonly sessionTitle: (sessionId: string) => string | null;
|
|
18
|
+
readonly modelSelection: (sessionId: string, directory?: CodexModelDirectory) => CodexModelSelection;
|
|
19
|
+
readonly permissionSelection: (sessionId: string) => CodexPermissionPreset | undefined;
|
|
20
|
+
readonly sessionGeneration: HarnessSessionGeneration;
|
|
21
|
+
readonly client: CodexClientLike;
|
|
22
|
+
readonly closed: boolean;
|
|
23
|
+
readonly rememberOpenedSession: (sessionId: string) => void;
|
|
24
|
+
readonly nextProjectionSeq: () => number;
|
|
25
|
+
readonly updateThreadName: (threadId: string, name: string) => void;
|
|
26
|
+
readonly publishProjection: (sessionId: string, key: string, value: unknown, seq: number) => void;
|
|
27
|
+
readonly setPermissionSelection: (sessionId: string, preset: CodexPermissionPreset | undefined) => void;
|
|
28
|
+
readonly emitRemoteEvent: (event: string, args: unknown[]) => void;
|
|
29
|
+
readonly broadcastRcHost: (payload: unknown) => void;
|
|
30
|
+
readonly selectedModels: Map<string, CodexModelSelection>;
|
|
31
|
+
readonly refreshAndPublishWorkspaces: () => Promise<void>;
|
|
32
|
+
readonly pendingApprovals: Map<string, PendingApproval>;
|
|
33
|
+
readonly emitApproval: (input: {
|
|
34
|
+
eventId: string;
|
|
35
|
+
agentId: string;
|
|
36
|
+
request: JsonRecord;
|
|
37
|
+
}) => void;
|
|
38
|
+
readonly broadcastRcMux: (payload: unknown, rpcId?: string) => void;
|
|
39
|
+
readonly imageAttachments: Map<string, CodexImageAttachmentEntry>;
|
|
40
|
+
}
|
|
41
|
+
export declare class CodexLiveProjection {
|
|
42
|
+
private readonly context;
|
|
43
|
+
constructor(context: CodexLiveProjectionContext);
|
|
44
|
+
sessionFollow(request: JsonRecord, signal: AbortSignal): Promise<AsyncIterable<unknown>>;
|
|
45
|
+
acceptCodexFrame(follow: FollowState, frame: {
|
|
46
|
+
method: string;
|
|
47
|
+
params: unknown;
|
|
48
|
+
}): void;
|
|
49
|
+
acceptCompletedItem(follow: FollowState, item: JsonRecord, settleAssistant: boolean): void;
|
|
50
|
+
pushEvent(follow: FollowState, type: string, data: unknown, view?: ToolEventView, placement?: {
|
|
51
|
+
replaceSeq: number;
|
|
52
|
+
}): number;
|
|
53
|
+
cacheImageBlocks(sessionId: string, value: unknown): void;
|
|
54
|
+
ensureStreamBlock(follow: FollowState, key: string, itemId: string, kind: 'text' | 'reasoning'): StreamedBlock;
|
|
55
|
+
appendStreamDelta(follow: FollowState, key: string, itemId: string, kind: 'text' | 'reasoning', delta: string): void;
|
|
56
|
+
closeItemStreamBlocks(follow: FollowState, itemId: string, fallback?: string): void;
|
|
57
|
+
closeAllStreamBlocks(follow: FollowState): void;
|
|
58
|
+
finishStream(follow: FollowState): void;
|
|
59
|
+
pushAssistantChunk(follow: FollowState, chunk: JsonRecord): void;
|
|
60
|
+
endAssistantAttempt(follow: FollowState, outcome: {
|
|
61
|
+
kind: 'abandoned';
|
|
62
|
+
} | {
|
|
63
|
+
kind: 'committed';
|
|
64
|
+
eventType: 'assistant/message';
|
|
65
|
+
seq: number;
|
|
66
|
+
}): void;
|
|
67
|
+
ensureToolStarted(follow: FollowState, item: JsonRecord): void;
|
|
68
|
+
emitToolResult(follow: FollowState, item: JsonRecord, resultText: string): void;
|
|
69
|
+
pushToolResult(follow: FollowState, itemId: string, event: ProjectedNativeEvent): void;
|
|
70
|
+
resetLiveTurn(follow: FollowState): void;
|
|
71
|
+
ensureRcFollow(sessionId: string, seedHistory?: CodexNativeHistoryPage): Promise<void>;
|
|
72
|
+
followsHas(sessionId: string): boolean;
|
|
73
|
+
closeFollowAfterRemoteStreamClosed(follow: FollowState): void;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=virtual-live.d.ts.map
|