ds-harness-remote 0.5.7 → 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.
Files changed (234) hide show
  1. package/dist/acp/adapter.d.ts +1 -1
  2. package/dist/acp/adapter.d.ts.map +1 -1
  3. package/dist/acp/adapters/antigravity/transcript-loader.d.ts.map +1 -1
  4. package/dist/acp/adapters/antigravity/transcript-loader.js +4 -1
  5. package/dist/acp/adapters/antigravity/transcript-loader.js.map +1 -1
  6. package/dist/acp/adapters/claude-history.d.ts +3 -0
  7. package/dist/acp/adapters/claude-history.d.ts.map +1 -0
  8. package/dist/acp/adapters/claude-history.js +118 -0
  9. package/dist/acp/adapters/claude-history.js.map +1 -0
  10. package/dist/acp/adapters/claude-process.d.ts +21 -0
  11. package/dist/acp/adapters/claude-process.d.ts.map +1 -0
  12. package/dist/acp/adapters/claude-process.js +147 -0
  13. package/dist/acp/adapters/claude-process.js.map +1 -0
  14. package/dist/acp/adapters/cursor-process.d.ts +9 -4
  15. package/dist/acp/adapters/cursor-process.d.ts.map +1 -1
  16. package/dist/acp/adapters/cursor-process.js +31 -3
  17. package/dist/acp/adapters/cursor-process.js.map +1 -1
  18. package/dist/acp/adapters/opencode-process.d.ts +67 -0
  19. package/dist/acp/adapters/opencode-process.d.ts.map +1 -0
  20. package/dist/acp/adapters/opencode-process.js +272 -0
  21. package/dist/acp/adapters/opencode-process.js.map +1 -0
  22. package/dist/acp/adapters/opencode.d.ts +8 -0
  23. package/dist/acp/adapters/opencode.d.ts.map +1 -0
  24. package/dist/acp/adapters/opencode.js +8 -0
  25. package/dist/acp/adapters/opencode.js.map +1 -0
  26. package/dist/acp/adapters/pi-process.d.ts +42 -0
  27. package/dist/acp/adapters/pi-process.d.ts.map +1 -0
  28. package/dist/acp/adapters/pi-process.js +410 -0
  29. package/dist/acp/adapters/pi-process.js.map +1 -0
  30. package/dist/acp/gateway.d.ts +10 -0
  31. package/dist/acp/gateway.d.ts.map +1 -1
  32. package/dist/acp/gateway.js +344 -103
  33. package/dist/acp/gateway.js.map +1 -1
  34. package/dist/acp/method-policy.d.ts +19 -19
  35. package/dist/acp/method-policy.js +5 -5
  36. package/dist/acp/method-policy.js.map +1 -1
  37. package/dist/acp/pi-tool-result.d.ts +9 -0
  38. package/dist/acp/pi-tool-result.d.ts.map +1 -0
  39. package/dist/acp/pi-tool-result.js +22 -0
  40. package/dist/acp/pi-tool-result.js.map +1 -0
  41. package/dist/acp/virtual-catalog.d.ts +50 -0
  42. package/dist/acp/virtual-catalog.d.ts.map +1 -0
  43. package/dist/acp/virtual-catalog.js +103 -0
  44. package/dist/acp/virtual-catalog.js.map +1 -0
  45. package/dist/acp/virtual-contract.d.ts +165 -0
  46. package/dist/acp/virtual-contract.d.ts.map +1 -0
  47. package/dist/acp/virtual-contract.js +216 -0
  48. package/dist/acp/virtual-contract.js.map +1 -0
  49. package/dist/acp/virtual-event-carrier.d.ts +50 -0
  50. package/dist/acp/virtual-event-carrier.d.ts.map +1 -0
  51. package/dist/acp/virtual-event-carrier.js +222 -0
  52. package/dist/acp/virtual-event-carrier.js.map +1 -0
  53. package/dist/acp/virtual-harness.d.ts +13 -112
  54. package/dist/acp/virtual-harness.d.ts.map +1 -1
  55. package/dist/acp/virtual-harness.js +129 -911
  56. package/dist/acp/virtual-harness.js.map +1 -1
  57. package/dist/acp/virtual-live.d.ts +78 -0
  58. package/dist/acp/virtual-live.d.ts.map +1 -0
  59. package/dist/acp/virtual-live.js +513 -0
  60. package/dist/acp/virtual-live.js.map +1 -0
  61. package/dist/acp/workspace-tools.js +2 -2
  62. package/dist/acp/workspace-tools.js.map +1 -1
  63. package/dist/acp.d.ts.map +1 -1
  64. package/dist/acp.js +1 -0
  65. package/dist/acp.js.map +1 -1
  66. package/dist/client/header.d.ts +10 -0
  67. package/dist/client/header.d.ts.map +1 -0
  68. package/dist/client/header.js +169 -0
  69. package/dist/client/header.js.map +1 -0
  70. package/dist/client/icons.d.ts +3 -0
  71. package/dist/client/icons.d.ts.map +1 -0
  72. package/dist/client/icons.js +3 -0
  73. package/dist/client/icons.js.map +1 -0
  74. package/dist/client/navigation.d.ts +5 -0
  75. package/dist/client/navigation.d.ts.map +1 -0
  76. package/dist/client/navigation.js +30 -0
  77. package/dist/client/navigation.js.map +1 -0
  78. package/dist/client/presentation.d.ts +17 -0
  79. package/dist/client/presentation.d.ts.map +1 -0
  80. package/dist/client/presentation.js +208 -0
  81. package/dist/client/presentation.js.map +1 -0
  82. package/dist/client/progress.d.ts +10 -0
  83. package/dist/client/progress.d.ts.map +1 -0
  84. package/dist/client/progress.js +82 -0
  85. package/dist/client/progress.js.map +1 -0
  86. package/dist/client/settings.d.ts +10 -0
  87. package/dist/client/settings.d.ts.map +1 -0
  88. package/dist/client/settings.js +335 -0
  89. package/dist/client/settings.js.map +1 -0
  90. package/dist/client/shell.d.ts +6 -0
  91. package/dist/client/shell.d.ts.map +1 -0
  92. package/dist/client/shell.js +128 -0
  93. package/dist/client/shell.js.map +1 -0
  94. package/dist/client/types.d.ts +264 -0
  95. package/dist/client/types.d.ts.map +1 -0
  96. package/dist/client/types.js +2 -0
  97. package/dist/client/types.js.map +1 -0
  98. package/dist/client/workspaces.d.ts +11 -0
  99. package/dist/client/workspaces.d.ts.map +1 -0
  100. package/dist/client/workspaces.js +1179 -0
  101. package/dist/client/workspaces.js.map +1 -0
  102. package/dist/client-capabilities.d.ts +6 -0
  103. package/dist/client-capabilities.d.ts.map +1 -0
  104. package/dist/client-capabilities.js +88 -0
  105. package/dist/client-capabilities.js.map +1 -0
  106. package/dist/client-codex-streams.d.ts +23 -0
  107. package/dist/client-codex-streams.d.ts.map +1 -0
  108. package/dist/client-codex-streams.js +156 -0
  109. package/dist/client-codex-streams.js.map +1 -0
  110. package/dist/client-connection.d.ts +38 -0
  111. package/dist/client-connection.d.ts.map +1 -0
  112. package/dist/client-connection.js +210 -0
  113. package/dist/client-connection.js.map +1 -0
  114. package/dist/client-control.d.ts +48 -0
  115. package/dist/client-control.d.ts.map +1 -0
  116. package/dist/client-control.js +273 -0
  117. package/dist/client-control.js.map +1 -0
  118. package/dist/client-locale.d.ts +8 -0
  119. package/dist/client-locale.d.ts.map +1 -1
  120. package/dist/client-locale.js +16 -0
  121. package/dist/client-locale.js.map +1 -1
  122. package/dist/client-runtime-contract.d.ts +161 -0
  123. package/dist/client-runtime-contract.d.ts.map +1 -0
  124. package/dist/client-runtime-contract.js +127 -0
  125. package/dist/client-runtime-contract.js.map +1 -0
  126. package/dist/client-runtime.d.ts +24 -126
  127. package/dist/client-runtime.d.ts.map +1 -1
  128. package/dist/client-runtime.js +171 -867
  129. package/dist/client-runtime.js.map +1 -1
  130. package/dist/client-secure-transport.d.ts +1 -0
  131. package/dist/client-secure-transport.d.ts.map +1 -1
  132. package/dist/client-secure-transport.js +35 -16
  133. package/dist/client-secure-transport.js.map +1 -1
  134. package/dist/client-workspace-queries.d.ts +12 -0
  135. package/dist/client-workspace-queries.d.ts.map +1 -0
  136. package/dist/client-workspace-queries.js +66 -0
  137. package/dist/client-workspace-queries.js.map +1 -0
  138. package/dist/client.d.ts.map +1 -1
  139. package/dist/client.github.js +2091 -1896
  140. package/dist/client.js +2091 -1896
  141. package/dist/client.js.map +1 -1
  142. package/dist/codex/domain.d.ts.map +1 -1
  143. package/dist/codex/domain.js +67 -46
  144. package/dist/codex/domain.js.map +1 -1
  145. package/dist/codex/method-policy.d.ts +9 -9
  146. package/dist/codex/virtual-catalog.d.ts +90 -0
  147. package/dist/codex/virtual-catalog.d.ts.map +1 -0
  148. package/dist/codex/virtual-catalog.js +317 -0
  149. package/dist/codex/virtual-catalog.js.map +1 -0
  150. package/dist/codex/virtual-contract.d.ts +96 -0
  151. package/dist/codex/virtual-contract.d.ts.map +1 -0
  152. package/dist/codex/virtual-contract.js +192 -0
  153. package/dist/codex/virtual-contract.js.map +1 -0
  154. package/dist/codex/virtual-event-carrier.d.ts +52 -0
  155. package/dist/codex/virtual-event-carrier.d.ts.map +1 -0
  156. package/dist/codex/virtual-event-carrier.js +212 -0
  157. package/dist/codex/virtual-event-carrier.js.map +1 -0
  158. package/dist/codex/virtual-harness.d.ts +16 -117
  159. package/dist/codex/virtual-harness.d.ts.map +1 -1
  160. package/dist/codex/virtual-harness.js +123 -1909
  161. package/dist/codex/virtual-harness.js.map +1 -1
  162. package/dist/codex/virtual-history.d.ts +74 -0
  163. package/dist/codex/virtual-history.d.ts.map +1 -0
  164. package/dist/codex/virtual-history.js +546 -0
  165. package/dist/codex/virtual-history.js.map +1 -0
  166. package/dist/codex/virtual-live.d.ts +75 -0
  167. package/dist/codex/virtual-live.d.ts.map +1 -0
  168. package/dist/codex/virtual-live.js +563 -0
  169. package/dist/codex/virtual-live.js.map +1 -0
  170. package/dist/codex/virtual-values.d.ts +29 -0
  171. package/dist/codex/virtual-values.d.ts.map +1 -0
  172. package/dist/codex/virtual-values.js +75 -0
  173. package/dist/codex/virtual-values.js.map +1 -0
  174. package/dist/config.js +4 -4
  175. package/dist/config.js.map +1 -1
  176. package/dist/control-runtime.js +2 -2
  177. package/dist/control-runtime.js.map +1 -1
  178. package/dist/harness-remote-bridge.d.ts +2 -1
  179. package/dist/harness-remote-bridge.d.ts.map +1 -1
  180. package/dist/harness-remote-bridge.js +13 -5
  181. package/dist/harness-remote-bridge.js.map +1 -1
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +23304 -15332
  184. package/dist/index.js.map +4 -4
  185. package/dist/plugin-route-dispatcher.d.ts +2 -2
  186. package/dist/plugin-route-dispatcher.d.ts.map +1 -1
  187. package/dist/plugin-route-dispatcher.js +2 -2
  188. package/dist/plugin-route-dispatcher.js.map +1 -1
  189. package/dist/remote-terminal-controller.d.ts +90 -0
  190. package/dist/remote-terminal-controller.d.ts.map +1 -0
  191. package/dist/remote-terminal-controller.js +494 -0
  192. package/dist/remote-terminal-controller.js.map +1 -0
  193. package/dist/remote-terminal-provider.d.ts +46 -0
  194. package/dist/remote-terminal-provider.d.ts.map +1 -0
  195. package/dist/remote-terminal-provider.js +147 -0
  196. package/dist/remote-terminal-provider.js.map +1 -0
  197. package/dist/remote-typert-gateway.js +7 -1
  198. package/dist/remote-typert-gateway.js.map +1 -1
  199. package/dist/server-api.d.ts +3 -0
  200. package/dist/server-api.d.ts.map +1 -1
  201. package/dist/server-api.js +24 -9
  202. package/dist/server-api.js.map +1 -1
  203. package/dist/server-connection.d.ts +1 -0
  204. package/dist/server-connection.d.ts.map +1 -1
  205. package/dist/server-connection.js +8 -1
  206. package/dist/server-connection.js.map +1 -1
  207. package/dist/service.d.ts +1 -1
  208. package/dist/service.d.ts.map +1 -1
  209. package/dist/service.js +15 -8
  210. package/dist/service.js.map +1 -1
  211. package/dist/terminal-carrier-compat.d.ts +14 -0
  212. package/dist/terminal-carrier-compat.d.ts.map +1 -0
  213. package/dist/terminal-carrier-compat.js +259 -0
  214. package/dist/terminal-carrier-compat.js.map +1 -0
  215. package/dist/terminal-policy.d.ts +6 -0
  216. package/dist/terminal-policy.d.ts.map +1 -1
  217. package/dist/terminal-policy.js +24 -6
  218. package/dist/terminal-policy.js.map +1 -1
  219. package/dist/typert-gateway-contract.d.ts +6 -1
  220. package/dist/typert-gateway-contract.d.ts.map +1 -1
  221. package/dist/typert-gateway-switch.d.ts +2 -1
  222. package/dist/typert-gateway-switch.d.ts.map +1 -1
  223. package/dist/typert-gateway-switch.js +39 -18
  224. package/dist/typert-gateway-switch.js.map +1 -1
  225. package/dist/version.d.ts +1 -1
  226. package/dist/version.d.ts.map +1 -1
  227. package/dist/version.js +1 -1
  228. package/dist/version.js.map +1 -1
  229. package/dist/workspace-bridge.d.ts +6 -89
  230. package/dist/workspace-bridge.d.ts.map +1 -1
  231. package/dist/workspace-bridge.js +37 -294
  232. package/dist/workspace-bridge.js.map +1 -1
  233. package/dsh-plugin.json +1 -1
  234. package/package.json +24 -20
@@ -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