@jingyi0605/codingns 0.5.1 → 0.6.0

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 (196) hide show
  1. package/dist/public/assets/{AdaptiveButlerPage-SffCV4Vb.js → AdaptiveButlerPage-uFwDdN-F.js} +3 -3
  2. package/dist/public/assets/App-BZvapsi8.js +30 -0
  3. package/dist/public/assets/App-CcDXqFl1.css +1 -0
  4. package/dist/public/assets/{BootstrapPage--zExdgfM.js → BootstrapPage-gHSoa4JN.js} +1 -1
  5. package/dist/public/assets/ConversationPage-z3sXtKZ7.js +4 -0
  6. package/dist/public/assets/{DesktopDetachPreviewPage-DvI9CIKi.js → DesktopDetachPreviewPage-4eMRxiBW.js} +1 -1
  7. package/dist/public/assets/DesktopWindowPage-CZcoGApB.js +2 -0
  8. package/dist/public/assets/FileContextPanel-C3qex8bb.js +1 -0
  9. package/dist/public/assets/GitSidebar-BK6H16XU.js +6 -0
  10. package/dist/public/assets/{MobileCreateSessionSheet-CXSKMnYn.js → MobileCreateSessionSheet-BYfbvK8o.js} +1 -1
  11. package/dist/public/assets/MobileSheet-Ckug8hTb.js +1 -0
  12. package/dist/public/assets/{MobileTopHeaderFrame-BWorAJ1C.js → MobileTopHeaderFrame-Bwv8Ovm_.js} +1 -1
  13. package/dist/public/assets/MobileWorkspaceSwitcherHeader-RqWrBdn2.js +1 -0
  14. package/dist/public/assets/RelayConnectEntryPage-D_4YL-YH.js +1 -0
  15. package/dist/public/assets/ServerSettingsModal-CMSm3BZU.js +1 -0
  16. package/dist/public/assets/SessionIndexPage-DuK10DL5.js +1 -0
  17. package/dist/public/assets/SettingsPage-fyD-xaHL.js +1 -0
  18. package/dist/public/assets/TerminalManagerPanel-CCLr1Ypk.js +1 -0
  19. package/dist/public/assets/{TerminalPage-CvnHXBhw.js → TerminalPage-DaooFaJ4.js} +19 -19
  20. package/dist/public/assets/{TerminalRuntimeFallbackModal-D7Aq186N.js → TerminalRuntimeFallbackModal-aUzjEBwP.js} +1 -1
  21. package/dist/public/assets/ToolFilesPage-CGxBvYG0.js +1 -0
  22. package/dist/public/assets/ToolGitPage-C264yjS9.js +1 -0
  23. package/dist/public/assets/ToolProcessesPage-BOP4A1cb.js +1 -0
  24. package/dist/public/assets/ToolsHomePage-CQxGiKQA.js +1 -0
  25. package/dist/public/assets/WorkbenchLandingPage-CvAY68ca.js +1 -0
  26. package/dist/public/assets/WorkbenchLayout-DGm8Tc5M.js +3 -0
  27. package/dist/public/assets/{WorkbenchModal-B09hC9b5.js → WorkbenchModal-0tPIIhca.js} +1 -1
  28. package/dist/public/assets/{WorkbenchShellRoute-DsW4mBTX.css → WorkbenchShellRoute-BF0nHWOk.css} +1 -1
  29. package/dist/public/assets/WorkbenchShellRoute-DBBOsJo9.js +1 -0
  30. package/dist/public/assets/WorkspaceDebugDetailPage-CDerFYd2.js +1 -0
  31. package/dist/public/assets/WorkspaceDetailPage-BlJc1CHE.js +1 -0
  32. package/dist/public/assets/WorkspaceHomePage-BUsKJ3lv.js +1 -0
  33. package/dist/public/assets/client-runtime-manager-BZpL17fc.js +1 -0
  34. package/dist/public/assets/{default-session-permission-mode-D0wZ9Jek.js → default-session-permission-mode-DT4SGiwp.js} +1 -1
  35. package/dist/public/assets/file-tree-icon-Db5LXC8h.js +31 -0
  36. package/dist/public/assets/index-BZLcEHW3.js +42 -0
  37. package/dist/public/assets/index-BbspQPC2.css +1 -0
  38. package/dist/public/assets/login-direct-candidate-resolver-1mxe_Oh8.js +1 -0
  39. package/dist/public/assets/{preferences-service-gOt2ZjKZ.js → preferences-service-DWnzl5a0.js} +1 -1
  40. package/dist/public/assets/relay-entry-C5_Iay0I.js +1 -0
  41. package/dist/public/assets/session-runtime-machine-DdLeDqQr.js +17 -0
  42. package/dist/public/assets/{styles-BWPBZvze.css → styles-CsEMfdaS.css} +1 -1
  43. package/dist/public/assets/{terminal-runtime-meta-BMT-rSEe.js → terminal-runtime-meta-cdtWVfCm.js} +1 -1
  44. package/dist/public/assets/{useRegisteredDebugTemplates-zMcEOGca.js → useRegisteredDebugTemplates-oFAQNIqh.js} +1 -1
  45. package/dist/public/assets/window-BVUB8gMK.js +1 -0
  46. package/dist/public/index.html +2 -2
  47. package/dist/server/config/env.d.ts +2 -0
  48. package/dist/server/config/env.js +39 -0
  49. package/dist/server/config/env.js.map +1 -1
  50. package/dist/server/modules/client/npm-global-package-service.d.ts +7 -1
  51. package/dist/server/modules/client/npm-global-package-service.js +149 -43
  52. package/dist/server/modules/client/npm-global-package-service.js.map +1 -1
  53. package/dist/server/modules/client/service-update-task-service.js +6 -2
  54. package/dist/server/modules/client/service-update-task-service.js.map +1 -1
  55. package/dist/server/modules/client/service-update-types.d.ts +2 -0
  56. package/dist/server/modules/git/git-controller.d.ts +3 -0
  57. package/dist/server/modules/git/git-controller.js +3 -0
  58. package/dist/server/modules/git/git-controller.js.map +1 -1
  59. package/dist/server/modules/git/git-read-service.js +47 -1
  60. package/dist/server/modules/git/git-read-service.js.map +1 -1
  61. package/dist/server/modules/git/git-write-service.d.ts +4 -0
  62. package/dist/server/modules/git/git-write-service.js +24 -0
  63. package/dist/server/modules/git/git-write-service.js.map +1 -1
  64. package/dist/server/modules/git/types.d.ts +1 -0
  65. package/dist/server/modules/git/workspace-repo-guard.d.ts +2 -0
  66. package/dist/server/modules/git/workspace-repo-guard.js +24 -10
  67. package/dist/server/modules/git/workspace-repo-guard.js.map +1 -1
  68. package/dist/server/modules/parallel-sessions/parallel-session-controller.d.ts +53 -0
  69. package/dist/server/modules/parallel-sessions/parallel-session-controller.js +70 -0
  70. package/dist/server/modules/parallel-sessions/parallel-session-controller.js.map +1 -0
  71. package/dist/server/modules/parallel-sessions/parallel-session-group-service.d.ts +83 -0
  72. package/dist/server/modules/parallel-sessions/parallel-session-group-service.js +591 -0
  73. package/dist/server/modules/parallel-sessions/parallel-session-group-service.js.map +1 -0
  74. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.d.ts +56 -0
  75. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js +483 -0
  76. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js.map +1 -0
  77. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.d.ts +16 -1
  78. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.js.map +1 -1
  79. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.d.ts +2 -1
  80. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js +18 -0
  81. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js.map +1 -1
  82. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.d.ts +2 -0
  83. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js +129 -0
  84. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js.map +1 -0
  85. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.d.ts +13 -0
  86. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.js +2 -0
  87. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.js.map +1 -0
  88. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.d.ts +6 -0
  89. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +110 -10
  90. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -1
  91. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.d.ts +16 -4
  92. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js +220 -102
  93. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js.map +1 -1
  94. package/dist/server/modules/relay-tunnel/relay-tunnel-service.d.ts +4 -1
  95. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +257 -162
  96. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
  97. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +3 -0
  98. package/dist/server/modules/sessions/codex-app-server-helper-client.js +56 -45
  99. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  100. package/dist/server/modules/sessions/codex-app-server-helper-process.js +21 -2
  101. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  102. package/dist/server/modules/sessions/session-activity-inspector.js +6 -8
  103. package/dist/server/modules/sessions/session-activity-inspector.js.map +1 -1
  104. package/dist/server/modules/sessions/session-history-service.d.ts +11 -1
  105. package/dist/server/modules/sessions/session-history-service.js +204 -21
  106. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  107. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +8 -0
  108. package/dist/server/modules/sessions/session-live-runtime-service.js +208 -25
  109. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  110. package/dist/server/modules/workbench/codex-archive-watcher.d.ts +16 -0
  111. package/dist/server/modules/workbench/codex-archive-watcher.js +50 -0
  112. package/dist/server/modules/workbench/codex-archive-watcher.js.map +1 -0
  113. package/dist/server/modules/workbench/workbench-service.d.ts +43 -4
  114. package/dist/server/modules/workbench/workbench-service.js +72 -9
  115. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  116. package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +1 -1
  117. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +26 -3
  118. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  119. package/dist/server/modules/workspace/workspace-service.d.ts +3 -1
  120. package/dist/server/modules/workspace/workspace-service.js +10 -2
  121. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  122. package/dist/server/modules/worktree/worktree-base-ref-resolver.d.ts +20 -0
  123. package/dist/server/modules/worktree/worktree-base-ref-resolver.js +111 -0
  124. package/dist/server/modules/worktree/worktree-base-ref-resolver.js.map +1 -0
  125. package/dist/server/modules/worktree/worktree-cleanup-service.js +9 -3
  126. package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -1
  127. package/dist/server/modules/worktree/worktree-manager.d.ts +0 -1
  128. package/dist/server/modules/worktree/worktree-manager.js +14 -20
  129. package/dist/server/modules/worktree/worktree-manager.js.map +1 -1
  130. package/dist/server/routes/git.js +1 -0
  131. package/dist/server/routes/git.js.map +1 -1
  132. package/dist/server/routes/parallel-groups.d.ts +3 -0
  133. package/dist/server/routes/parallel-groups.js +9 -0
  134. package/dist/server/routes/parallel-groups.js.map +1 -0
  135. package/dist/server/server/create-server.d.ts +8 -0
  136. package/dist/server/server/create-server.js +48 -9
  137. package/dist/server/server/create-server.js.map +1 -1
  138. package/dist/server/server/workbench-runtime-terminal-sync.d.ts +14 -0
  139. package/dist/server/server/workbench-runtime-terminal-sync.js +17 -0
  140. package/dist/server/server/workbench-runtime-terminal-sync.js.map +1 -0
  141. package/dist/server/storage/repositories/parallel-session-group-repository.d.ts +11 -0
  142. package/dist/server/storage/repositories/parallel-session-group-repository.js +131 -0
  143. package/dist/server/storage/repositories/parallel-session-group-repository.js.map +1 -0
  144. package/dist/server/storage/repositories/parallel-session-member-repository.d.ts +12 -0
  145. package/dist/server/storage/repositories/parallel-session-member-repository.js +150 -0
  146. package/dist/server/storage/repositories/parallel-session-member-repository.js.map +1 -0
  147. package/dist/server/storage/repositories/session-isolated-workspace-repository.d.ts +15 -0
  148. package/dist/server/storage/repositories/session-isolated-workspace-repository.js +230 -0
  149. package/dist/server/storage/repositories/session-isolated-workspace-repository.js.map +1 -0
  150. package/dist/server/storage/sqlite/schema.sql +73 -0
  151. package/dist/server/types/domain.d.ts +72 -0
  152. package/dist/server/ws/workbench-ws-hub.d.ts +3 -1
  153. package/dist/server/ws/workbench-ws-hub.js +189 -20
  154. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  155. package/dist/server/ws/ws-server.js +141 -8
  156. package/dist/server/ws/ws-server.js.map +1 -1
  157. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +1 -0
  158. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +67 -6
  159. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  160. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +3 -0
  161. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +46 -22
  162. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
  163. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +558 -309
  164. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  165. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +29 -5
  166. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
  167. package/package.json +1 -1
  168. package/dist/public/assets/App-DUAg5urj.css +0 -1
  169. package/dist/public/assets/App-WOLwMld_.js +0 -30
  170. package/dist/public/assets/ConversationPage-D9pzRmOg.js +0 -2
  171. package/dist/public/assets/DesktopWindowPage-D8FpOSLE.js +0 -2
  172. package/dist/public/assets/FileContextPanel-C8T7oqRN.js +0 -1
  173. package/dist/public/assets/GitSidebar-Bze7DNnc.js +0 -6
  174. package/dist/public/assets/MobileSheet-Gzc14EpR.js +0 -1
  175. package/dist/public/assets/MobileWorkspaceSwitcherHeader-DOr4pTUq.js +0 -1
  176. package/dist/public/assets/ServerSettingsModal-BYB0GvTl.js +0 -1
  177. package/dist/public/assets/SessionIndexPage-CR3IARXX.js +0 -1
  178. package/dist/public/assets/SettingsPage-B_BQtnwE.js +0 -1
  179. package/dist/public/assets/TerminalManagerPanel-PQ-EM64j.js +0 -1
  180. package/dist/public/assets/ToolFilesPage-Qzkc6K2I.js +0 -1
  181. package/dist/public/assets/ToolGitPage-BdNDN-cV.js +0 -1
  182. package/dist/public/assets/ToolProcessesPage-EXJ9DHWI.js +0 -1
  183. package/dist/public/assets/ToolsHomePage-CjF3CWzR.js +0 -1
  184. package/dist/public/assets/WorkbenchLandingPage-DZPk4SmX.js +0 -1
  185. package/dist/public/assets/WorkbenchLayout-rwQib5In.js +0 -3
  186. package/dist/public/assets/WorkbenchShellRoute-Cerk5uK7.js +0 -1
  187. package/dist/public/assets/WorkspaceDebugDetailPage-Bcq8s-Ma.js +0 -1
  188. package/dist/public/assets/WorkspaceDetailPage-DNAa8pKr.js +0 -1
  189. package/dist/public/assets/WorkspaceHomePage-BoiLuACV.js +0 -1
  190. package/dist/public/assets/client-runtime-manager-CRQ-F5d2.js +0 -1
  191. package/dist/public/assets/file-tree-icon-Dp_xhVfD.js +0 -31
  192. package/dist/public/assets/index-C2G8Gmf1.js +0 -42
  193. package/dist/public/assets/index-CpPTUeA3.css +0 -1
  194. package/dist/public/assets/session-runtime-machine-Dq3pW-UF.js +0 -17
  195. package/dist/public/assets/window-BWqRixxq.js +0 -1
  196. /package/dist/public/assets/{styles-CSUx5LGe.js → styles-DRVvx_kv.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  import { WebSocketServer } from "ws";
2
2
  import { AppError } from "../shared/errors/app-error.js";
3
3
  import { hashContent } from "../shared/utils/hash.js";
4
+ import { logPerformance } from "../shared/utils/perf-log.js";
4
5
  const MAX_TRACKED_MESSAGES_PER_SUBSCRIPTION = 2_048;
5
6
  const MAX_STORED_MESSAGE_PREVIEW_CHARS = 2_048;
6
7
  export function createWsServer(server, wsAuthGuard, sessionHistoryService, sessionLiveRuntimeService, terminalWsHub, workbenchWsHub, butlerActionContextService) {
@@ -65,14 +66,33 @@ export function createWsServer(server, wsAuthGuard, sessionHistoryService, sessi
65
66
  return;
66
67
  }
67
68
  try {
69
+ const startedAt = Date.now();
70
+ const readStartedAt = Date.now();
68
71
  const page = await sessionHistoryService.readSessionHistory(payload.sessionId, payload.cursor ?? null, typeof payload.limit === "number" ? payload.limit : 50, "backward", authContext.user.userId);
69
- await subscription.forwardEnvelope({
72
+ const readMs = Date.now() - readStartedAt;
73
+ const forwardMetric = await subscription.forwardEnvelopeWithMetric({
70
74
  type: "session.history_older",
71
75
  sessionId: payload.sessionId,
72
76
  cursor: null,
73
77
  olderCursor: page.nextCursor,
74
78
  messages: page.messages
75
79
  });
80
+ logPerformance("ws.session.load_older", Date.now() - startedAt, {
81
+ sessionId: payload.sessionId,
82
+ limit: typeof payload.limit === "number" ? payload.limit : 50,
83
+ hasCursor: payload.cursor !== null && payload.cursor !== undefined,
84
+ readMs,
85
+ forwardMs: forwardMetric?.totalMs ?? 0,
86
+ messageCount: page.messages.length,
87
+ olderCursor: page.nextCursor,
88
+ payloadBytes: forwardMetric?.payloadBytes ?? 0,
89
+ stringifyMs: forwardMetric?.stringifyMs ?? 0,
90
+ sendMs: forwardMetric?.sendMs ?? 0,
91
+ bufferedAmount: forwardMetric?.bufferedAmount ?? 0
92
+ }, {
93
+ thresholdMs: 0,
94
+ force: true
95
+ });
76
96
  }
77
97
  catch (error) {
78
98
  const appError = error instanceof AppError
@@ -93,12 +113,19 @@ export function createWsServer(server, wsAuthGuard, sessionHistoryService, sessi
93
113
  subscriptions.get(payload.sessionId)?.close();
94
114
  butlerActionContextService?.preloadSessionActionContext(payload.sessionId, authContext.user.userId);
95
115
  const seenMessages = new Map();
96
- const forwardEnvelope = async (envelope) => {
116
+ const forwardEnvelopeWithMetric = async (envelope) => {
117
+ const forwardStartedAt = Date.now();
118
+ const dedupeStartedAt = Date.now();
97
119
  const deduped = dedupeEnvelopeMessages(envelope, seenMessages);
120
+ const dedupeMs = Date.now() - dedupeStartedAt;
98
121
  if (!deduped) {
99
- return;
122
+ return null;
100
123
  }
101
- client.send(JSON.stringify(deduped));
124
+ const serializeStartedAt = Date.now();
125
+ const payload = JSON.stringify(deduped);
126
+ const stringifyMs = Date.now() - serializeStartedAt;
127
+ const sendMetric = sendSerializedPayload(client, payload);
128
+ let workbenchBroadcastMs = 0;
102
129
  if (deduped.type === "session.backfill" ||
103
130
  deduped.type === "session.delta" ||
104
131
  deduped.type === "session.activity" ||
@@ -106,37 +133,105 @@ export function createWsServer(server, wsAuthGuard, sessionHistoryService, sessi
106
133
  deduped.type === "session.runtime_status" ||
107
134
  deduped.type === "session.runtime_error" ||
108
135
  deduped.type === "session.interrupted") {
136
+ const workbenchBroadcastStartedAt = Date.now();
109
137
  await workbenchWsHub.broadcastSnapshot(authContext.user.userId);
138
+ workbenchBroadcastMs = Date.now() - workbenchBroadcastStartedAt;
110
139
  }
140
+ const metric = {
141
+ messageType: deduped.type,
142
+ messageCount: getEnvelopeMessageCount(deduped),
143
+ payloadBytes: sendMetric.payloadBytes,
144
+ dedupeMs,
145
+ stringifyMs,
146
+ sendMs: sendMetric.sendMs,
147
+ bufferedAmount: sendMetric.bufferedAmount,
148
+ workbenchBroadcastMs,
149
+ totalMs: Date.now() - forwardStartedAt
150
+ };
151
+ if (deduped.type === "session.backfill" ||
152
+ deduped.type === "session.history_older") {
153
+ logPerformance("ws.session.forward_envelope", metric.totalMs, {
154
+ sessionId: deduped.sessionId,
155
+ messageType: deduped.type,
156
+ messageCount: metric.messageCount,
157
+ payloadBytes: metric.payloadBytes,
158
+ dedupeMs: metric.dedupeMs,
159
+ stringifyMs: metric.stringifyMs,
160
+ sendMs: metric.sendMs,
161
+ bufferedAmount: metric.bufferedAmount,
162
+ workbenchBroadcastMs: metric.workbenchBroadcastMs
163
+ }, {
164
+ thresholdMs: 0,
165
+ force: true
166
+ });
167
+ }
168
+ return metric;
169
+ };
170
+ const forwardEnvelope = async (envelope) => {
171
+ await forwardEnvelopeWithMetric(envelope);
111
172
  };
112
173
  const runtimeSubscription = sessionLiveRuntimeService.subscribeRuntime(payload.sessionId, forwardEnvelope);
113
174
  try {
175
+ const startedAt = Date.now();
114
176
  let currentCursor = payload.cursor ?? null;
115
177
  const safeLimit = typeof payload.limit === "number" ? payload.limit : 50;
178
+ let backfillReadMs = 0;
179
+ let backfillForwardMs = 0;
180
+ let backfillPayloadBytes = 0;
181
+ let backfillSendMs = 0;
182
+ let backfillBufferedAmount = 0;
116
183
  if (currentCursor === null) {
184
+ const readStartedAt = Date.now();
117
185
  const page = await sessionHistoryService.readSessionHistory(payload.sessionId, null, safeLimit, "backward", authContext.user.userId);
186
+ backfillReadMs = Date.now() - readStartedAt;
118
187
  currentCursor = page.cursor;
119
- await forwardEnvelope({
188
+ const backfillMetric = await forwardEnvelopeWithMetric({
120
189
  type: "session.backfill",
121
190
  sessionId: payload.sessionId,
122
191
  cursor: page.cursor,
123
192
  olderCursor: page.nextCursor,
124
193
  messages: page.messages
125
194
  });
195
+ backfillForwardMs = backfillMetric?.totalMs ?? 0;
196
+ backfillPayloadBytes = backfillMetric?.payloadBytes ?? 0;
197
+ backfillSendMs = backfillMetric?.sendMs ?? 0;
198
+ backfillBufferedAmount = backfillMetric?.bufferedAmount ?? 0;
126
199
  }
200
+ const subscribeAttachStartedAt = Date.now();
127
201
  const historySubscription = await sessionHistoryService.subscribeSession(payload.sessionId, currentCursor, safeLimit, forwardEnvelope);
202
+ const subscribeAttachMs = Date.now() - subscribeAttachStartedAt;
128
203
  subscriptions.set(payload.sessionId, {
129
204
  sessionId: payload.sessionId,
130
- forwardEnvelope,
205
+ forwardEnvelopeWithMetric,
131
206
  close() {
132
207
  historySubscription.close();
133
208
  runtimeSubscription.close();
134
209
  }
135
210
  });
136
- client.send(JSON.stringify({
211
+ const subscribedMetric = sendJsonPayload(client, {
137
212
  type: "session.subscribed",
138
213
  sessionId: payload.sessionId
139
- }));
214
+ });
215
+ logPerformance("ws.session.subscribe", Date.now() - startedAt, {
216
+ sessionId: payload.sessionId,
217
+ limit: safeLimit,
218
+ hasCursor: payload.cursor !== null && payload.cursor !== undefined,
219
+ currentCursor,
220
+ backfillReadMs,
221
+ backfillForwardMs,
222
+ backfillPayloadBytes,
223
+ backfillSendMs,
224
+ backfillBufferedAmount,
225
+ subscribeAttachMs,
226
+ ackPayloadBytes: subscribedMetric.payloadBytes,
227
+ ackStringifyMs: subscribedMetric.stringifyMs,
228
+ ackSendMs: subscribedMetric.sendMs,
229
+ ackBufferedAmount: subscribedMetric.bufferedAmount,
230
+ subscribed: true
231
+ }, {
232
+ thresholdMs: 0,
233
+ force: true
234
+ });
140
235
  }
141
236
  catch (error) {
142
237
  runtimeSubscription.close();
@@ -147,6 +242,15 @@ export function createWsServer(server, wsAuthGuard, sessionHistoryService, sessi
147
242
  errorCode: "INTERNAL_ERROR",
148
243
  detail: "订阅会话失败"
149
244
  });
245
+ logPerformance("ws.session.subscribe.failed", 0, {
246
+ sessionId: payload.sessionId,
247
+ limit: typeof payload.limit === "number" ? payload.limit : 50,
248
+ hasCursor: payload.cursor !== null && payload.cursor !== undefined,
249
+ error: error instanceof Error ? error.message : "unknown"
250
+ }, {
251
+ thresholdMs: 0,
252
+ force: true
253
+ });
150
254
  sendWsError(client, payload.sessionId, appError.errorCode, appError.message);
151
255
  }
152
256
  });
@@ -298,6 +402,35 @@ function sendWsError(client, sessionId, errorCode, detail) {
298
402
  timestamp: new Date().toISOString()
299
403
  }));
300
404
  }
405
+ function getEnvelopeMessageCount(envelope) {
406
+ if (envelope.type === "session.backfill" ||
407
+ envelope.type === "session.delta" ||
408
+ envelope.type === "session.history_older") {
409
+ return envelope.messages.length;
410
+ }
411
+ return envelope.type === "session.runtime_message" ? 1 : 0;
412
+ }
413
+ function sendJsonPayload(client, payload) {
414
+ const stringifyStartedAt = Date.now();
415
+ const serialized = JSON.stringify(payload);
416
+ const stringifyMs = Date.now() - stringifyStartedAt;
417
+ const sendMetric = sendSerializedPayload(client, serialized);
418
+ return {
419
+ payloadBytes: sendMetric.payloadBytes,
420
+ stringifyMs,
421
+ sendMs: sendMetric.sendMs,
422
+ bufferedAmount: sendMetric.bufferedAmount
423
+ };
424
+ }
425
+ function sendSerializedPayload(client, payload) {
426
+ const sendStartedAt = Date.now();
427
+ client.send(payload);
428
+ return {
429
+ payloadBytes: Buffer.byteLength(payload),
430
+ sendMs: Date.now() - sendStartedAt,
431
+ bufferedAmount: client.bufferedAmount
432
+ };
433
+ }
301
434
  export const __internal__ = {
302
435
  MAX_TRACKED_MESSAGES_PER_SUBSCRIPTION,
303
436
  MAX_STORED_MESSAGE_PREVIEW_CHARS,
@@ -1 +1 @@
1
- {"version":3,"file":"ws-server.js","sourceRoot":"","sources":["../../../src/ws/ws-server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAkB,MAAM,IAAI,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA4CtD,MAAM,qCAAqC,GAAG,KAAK,CAAC;AACpD,MAAM,gCAAgC,GAAG,KAAK,CAAC;AAE/C,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,WAAwB,EACxB,qBAA4C,EAC5C,yBAA8E,EAC9E,aAA4B,EAC5B,cAA8B,EAC9B,0BAA4F;IAE5F,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC;QAC9B,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC;QAE1E,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACrD,OAA0C,CAAC,WAAW,GAAG,WAAW,CAAC;YAEtE,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;gBAClD,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE,kBAAkB;oBACxB,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM;oBAC/B,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ;iBACpC,CAAC,CACH,CAAC;gBAEF,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QACvC,MAAM,WAAW,GAAI,OAA0C,CAAC,WAAW,CAAC;QAC5E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAgC,CAAC;QAE9D,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,KAAK,MAAM,YAAY,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClD,YAAY,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YAED,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACpC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,IAAI,OAAgB,CAAC;YAErB,IAAI,CAAC;gBACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,wBAAwB,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;YAED,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,IAAI,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAE1D,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,wBAAwB,EAAE,iBAAiB,CAAC,CAAC;oBACpF,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,kBAAkB,CACzD,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,MAAM,IAAI,IAAI,EACtB,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EACtD,UAAU,EACV,WAAW,CAAC,IAAI,CAAC,MAAM,CACxB,CAAC;oBAEF,MAAM,YAAY,CAAC,eAAe,CAAC;wBACjC,IAAI,EAAE,uBAAuB;wBAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,MAAM,EAAE,IAAI;wBACZ,WAAW,EAAE,IAAI,CAAC,UAAU;wBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,QAAQ,GACZ,KAAK,YAAY,QAAQ;wBACvB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,IAAI,QAAQ,CAAC;4BACX,UAAU,EAAE,GAAG;4BACf,SAAS,EAAE,gBAAgB;4BAC3B,MAAM,EAAE,UAAU;yBACnB,CAAC,CAAC;oBAET,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC/E,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;YAE9C,0BAA0B,EAAE,2BAA2B,CACrD,OAAO,CAAC,SAAS,EACjB,WAAW,CAAC,IAAI,CAAC,MAAM,CACxB,CAAC;YAEF,MAAM,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;YACzD,MAAM,eAAe,GAAG,KAAK,EAAE,QAAyD,EAAE,EAAE;gBAC1F,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAErC,IACE,OAAO,CAAC,IAAI,KAAK,kBAAkB;oBACnC,OAAO,CAAC,IAAI,KAAK,eAAe;oBAChC,OAAO,CAAC,IAAI,KAAK,kBAAkB;oBACnC,OAAO,CAAC,IAAI,KAAK,yBAAyB;oBAC1C,OAAO,CAAC,IAAI,KAAK,wBAAwB;oBACzC,OAAO,CAAC,IAAI,KAAK,uBAAuB;oBACxC,OAAO,CAAC,IAAI,KAAK,qBAAqB,EACtC,CAAC;oBACD,MAAM,cAAc,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,gBAAgB,CACpE,OAAO,CAAC,SAAS,EACjB,eAAe,CAChB,CAAC;YAEF,IAAI,CAAC;gBACH,IAAI,aAAa,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;gBAC3C,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEzE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,kBAAkB,CACzD,OAAO,CAAC,SAAS,EACjB,IAAI,EACJ,SAAS,EACT,UAAU,EACV,WAAW,CAAC,IAAI,CAAC,MAAM,CACxB,CAAC;oBAEF,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;oBAE5B,MAAM,eAAe,CAAC;wBACpB,IAAI,EAAE,kBAAkB;wBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,WAAW,EAAE,IAAI,CAAC,UAAU;wBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,mBAAmB,GAAG,MAAM,qBAAqB,CAAC,gBAAgB,CACtE,OAAO,CAAC,SAAS,EACjB,aAAa,EACb,SAAS,EACT,eAAe,CAChB,CAAC;gBAEF,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;oBACnC,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,eAAe;oBACf,KAAK;wBACH,mBAAmB,CAAC,KAAK,EAAE,CAAC;wBAC5B,mBAAmB,CAAC,KAAK,EAAE,CAAC;oBAC9B,CAAC;iBACF,CAAC,CAAC;gBAEH,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE,oBAAoB;oBAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC7B,CAAC,CACH,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBAE5B,MAAM,QAAQ,GACZ,KAAK,YAAY,QAAQ;oBACvB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,IAAI,QAAQ,CAAC;wBACX,UAAU,EAAE,GAAG;wBACf,SAAS,EAAE,gBAAgB;wBAC3B,MAAM,EAAE,QAAQ;qBACjB,CAAC,CAAC;gBAET,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG;QACH,KAAK,EAAE,KAAK,IAAmB,EAAE;YAC/B,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC;YAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,CAAC,KAAK,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBAED,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAMD,SAAS,yBAAyB,CAAC,OAAgB;IACjD,MAAM,SAAS,GAAG,OAAyC,CAAC;IAE5D,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,SAAS,EAAE,IAAI,KAAK,mBAAmB;QACvC,OAAO,SAAS,EAAE,SAAS,KAAK,QAAQ,CACzC,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgB;IACjD,MAAM,SAAS,GAAG,OAAyC,CAAC;IAE5D,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,SAAS,EAAE,IAAI,KAAK,oBAAoB;QACxC,OAAO,SAAS,EAAE,SAAS,KAAK,QAAQ,CACzC,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAyD,EACzD,YAA2C;IAE3C,IAAI,QAAQ,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAChD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,CAAC;IAED,IACE,QAAQ,CAAC,IAAI,KAAK,kBAAkB;WACjC,QAAQ,CAAC,IAAI,KAAK,eAAe;WACjC,QAAQ,CAAC,IAAI,KAAK,uBAAuB,EAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACpD,OAAO,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAmD,EACnD,MAA6B,EAC7B,YAA2C;IAE3C,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAErD,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,QAAQ;QACR,QAAQ,CAAC,MAAM,KAAK,SAAS;QAC7B,MAAM,KAAK,SAAS;QACpB,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,EACxC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAmD;IAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,OAAO,WAAW,CAChB;QACE,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,iBAAiB;QACzB,OAAO,CAAC,IAAI;QACZ,OAAO,CAAC,IAAI,IAAI,EAAE;QAClB,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,MAAM;QACd,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,IAAI,EAAE;QACtB,QAAQ,EAAE,IAAI,IAAI,EAAE;QACpB,QAAQ,EAAE,MAAM,IAAI,EAAE;QACtB,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAC3C,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;QAC9C,QAAQ,EAAE,MAAM,KAAK,IAAI,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/F,QAAQ,EAAE,MAAM,KAAK,IAAI,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAClG,QAAQ,EAAE,KAAK,KAAK,IAAI,IAAI,QAAQ,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5F,QAAQ,EAAE,KAAK,KAAK,IAAI,IAAI,QAAQ,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;KAChG,CAAC,IAAI,CAAC,QAAQ,CAAC,CACjB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAmD,EACnD,MAA6B;IAE7B,OAAO;QACL,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC;QACzC,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;QACrC,cAAc,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC;QACpD,cAAc,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAmD,EACnD,QAA0B;IAE1B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAEpC,IACE,QAAQ,CAAC,aAAa,GAAG,WAAW,CAAC,MAAM;QAC3C,WAAW,CAAC,MAAM,GAAG,CAAC;QACtB,WAAW,CAAC,MAAM,IAAI,gCAAgC;QACtD,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC;IAEpD,OAAO,CACL,CAAC,QAAQ,CAAC,cAAc,KAAK,WAAW,IAAI,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC;QACjF,UAAU,KAAK,SAAS,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,KAAK,CAAC,MAAM,IAAI,gCAAgC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAA2C,EAC3C,SAAiB,EACjB,KAAuB;IAEvB,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEnC,OAAO,YAAY,CAAC,IAAI,GAAG,qCAAqC,EAAE,CAAC;QACjE,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAEzD,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM;QACR,CAAC;QAED,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,MAAiB,EACjB,SAAwB,EACxB,SAAiB,EACjB,MAAc;IAEd,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,SAAS,CAAC;QACb,IAAI,EAAE,eAAe;QACrB,SAAS;QACT,UAAU,EAAE,SAAS;QACrB,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,qCAAqC;IACrC,gCAAgC;IAChC,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;CACrB,CAAC"}
1
+ {"version":3,"file":"ws-server.js","sourceRoot":"","sources":["../../../src/ws/ws-server.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,7 @@ export declare class CodexAdapter implements ProviderAdapter {
61
61
  private readThreadMetadataIndex;
62
62
  private listSessionFiles;
63
63
  private listArchivedSessionFiles;
64
+ private resolveArchivedSessionCandidate;
64
65
  private resolveSessionFilePath;
65
66
  private findSessionFileByThreadId;
66
67
  private readThreadIdFromRawStore;
@@ -893,6 +893,20 @@ export class CodexAdapter {
893
893
  }
894
894
  archivedFiles.add(metadata.rolloutPath);
895
895
  }
896
+ for (const metadata of threadMetadataIndex.values()) {
897
+ if (metadata.isArchived === true
898
+ || !metadata.rolloutPath) {
899
+ continue;
900
+ }
901
+ if (targetPath.length > 0
902
+ && normalizeWorkspacePath(metadata.cwd ?? "") !== targetPath) {
903
+ continue;
904
+ }
905
+ const archivedCandidate = this.resolveArchivedSessionCandidate(metadata.rolloutPath);
906
+ if (archivedCandidate) {
907
+ archivedFiles.add(archivedCandidate);
908
+ }
909
+ }
896
910
  for (const session of knownSessions) {
897
911
  if (session.isArchived !== true
898
912
  || normalizeWorkspacePath(session.workspacePath) !== targetPath
@@ -901,6 +915,16 @@ export class CodexAdapter {
901
915
  }
902
916
  archivedFiles.add(session.rawStoreRef);
903
917
  }
918
+ for (const session of knownSessions) {
919
+ if (session.isArchived === true
920
+ || normalizeWorkspacePath(session.workspacePath) !== targetPath) {
921
+ continue;
922
+ }
923
+ const archivedCandidate = this.resolveArchivedSessionCandidate(session.rawStoreRef);
924
+ if (archivedCandidate) {
925
+ archivedFiles.add(archivedCandidate);
926
+ }
927
+ }
904
928
  if (archivedFiles.size > 0) {
905
929
  return [...archivedFiles].filter((filePath) => existsSync(filePath));
906
930
  }
@@ -909,6 +933,16 @@ export class CodexAdapter {
909
933
  }
910
934
  return [];
911
935
  }
936
+ resolveArchivedSessionCandidate(filePath) {
937
+ if (!filePath || existsSync(filePath)) {
938
+ return null;
939
+ }
940
+ const archivedCandidate = join(this.options.homeDir, "archived_sessions", basename(filePath));
941
+ if (!existsSync(archivedCandidate)) {
942
+ return null;
943
+ }
944
+ return archivedCandidate;
945
+ }
912
946
  resolveSessionFilePath(rawStoreRef, providerSessionId) {
913
947
  const matchedByThreadId = this.findSessionFileByThreadId(providerSessionId);
914
948
  if (existsSync(rawStoreRef)) {
@@ -1325,14 +1359,17 @@ export class CodexAdapter {
1325
1359
  if (!isEquivalentCodexMessage(existing.message, message)) {
1326
1360
  continue;
1327
1361
  }
1328
- // 同一条逻辑消息如果被 event_msg response_item 同时记录,
1329
- // 优先保留结构更稳定的 response_item,避免时间线重复。
1330
- if (codexMessageSourcePriority(source) > codexMessageSourcePriority(existing.source)) {
1362
+ const mergedEquivalent = mergeEquivalentCodexMessages(existing.message, existing.source, message, source);
1363
+ if (mergedEquivalent.source !== existing.source
1364
+ || mergedEquivalent.message.messageId !== existing.message.messageId
1365
+ || mergedEquivalent.message.rawRef !== existing.message.rawRef
1366
+ || mergedEquivalent.message.timestamp !== existing.message.timestamp
1367
+ || JSON.stringify(mergedEquivalent.message.toolCall) !== JSON.stringify(existing.message.toolCall)) {
1331
1368
  messages[existingIndex] = {
1332
- source,
1333
- dedupeKey,
1369
+ source: mergedEquivalent.source,
1370
+ dedupeKey: buildCodexMessageDedupeKey(mergedEquivalent.message),
1334
1371
  message: {
1335
- ...message,
1372
+ ...mergedEquivalent.message,
1336
1373
  sequence: existing.message.sequence
1337
1374
  }
1338
1375
  };
@@ -1651,6 +1688,30 @@ function buildCodexMessageDedupeKey(message) {
1651
1688
  : null
1652
1689
  });
1653
1690
  }
1691
+ function mergeEquivalentCodexMessages(current, currentSource, incoming, incomingSource) {
1692
+ const preferredBySource = codexMessageSourcePriority(incomingSource) > codexMessageSourcePriority(currentSource)
1693
+ ? incoming
1694
+ : current;
1695
+ const preferredSource = codexMessageSourcePriority(incomingSource) > codexMessageSourcePriority(currentSource)
1696
+ ? incomingSource
1697
+ : currentSource;
1698
+ const preferredStableMessageId = pickPreferredCodexEquivalentMessageId(current, incoming);
1699
+ return {
1700
+ source: preferredSource,
1701
+ message: {
1702
+ ...preferredBySource,
1703
+ messageId: preferredStableMessageId
1704
+ }
1705
+ };
1706
+ }
1707
+ function pickPreferredCodexEquivalentMessageId(current, incoming) {
1708
+ const currentUsesStableIdentity = current.messageId !== messageIdFromRawRef(current.rawRef);
1709
+ const incomingUsesStableIdentity = incoming.messageId !== messageIdFromRawRef(incoming.rawRef);
1710
+ if (currentUsesStableIdentity !== incomingUsesStableIdentity) {
1711
+ return currentUsesStableIdentity ? current.messageId : incoming.messageId;
1712
+ }
1713
+ return incoming.messageId;
1714
+ }
1654
1715
  function resolveCodexFallbackTitle(messages) {
1655
1716
  const preferredMessage = messages.find((message) => message.role === "user" && !looksLikeCodexRulesMessage(message.content));
1656
1717
  if (preferredMessage) {