@getpaseo/server 0.1.74 → 0.1.76

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 (233) hide show
  1. package/dist/scripts/supervisor-entrypoint.js +2 -21
  2. package/dist/scripts/supervisor-entrypoint.js.map +1 -1
  3. package/dist/scripts/supervisor-log-config.js +31 -0
  4. package/dist/scripts/supervisor-log-config.js.map +1 -0
  5. package/dist/server/client/daemon-client.d.ts +13 -2
  6. package/dist/server/client/daemon-client.d.ts.map +1 -1
  7. package/dist/server/client/daemon-client.js +36 -0
  8. package/dist/server/client/daemon-client.js.map +1 -1
  9. package/dist/server/server/agent/agent-manager.d.ts +5 -1
  10. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  11. package/dist/server/server/agent/agent-manager.js +152 -22
  12. package/dist/server/server/agent/agent-manager.js.map +1 -1
  13. package/dist/server/server/agent/agent-prompt.d.ts.map +1 -1
  14. package/dist/server/server/agent/agent-prompt.js +27 -0
  15. package/dist/server/server/agent/agent-prompt.js.map +1 -1
  16. package/dist/server/server/agent/agent-sdk-types.d.ts +5 -0
  17. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  18. package/dist/server/server/agent/agent-sdk-types.js +10 -0
  19. package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
  20. package/dist/server/server/agent/foreground-run-state.d.ts +1 -1
  21. package/dist/server/server/agent/foreground-run-state.d.ts.map +1 -1
  22. package/dist/server/server/agent/foreground-run-state.js +2 -4
  23. package/dist/server/server/agent/foreground-run-state.js.map +1 -1
  24. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  25. package/dist/server/server/agent/mcp-server.js +74 -3
  26. package/dist/server/server/agent/mcp-server.js.map +1 -1
  27. package/dist/server/server/agent/provider-history-timestamps.d.ts +2 -0
  28. package/dist/server/server/agent/provider-history-timestamps.d.ts.map +1 -0
  29. package/dist/server/server/agent/provider-history-timestamps.js +16 -0
  30. package/dist/server/server/agent/provider-history-timestamps.js.map +1 -0
  31. package/dist/server/server/agent/provider-manifest.d.ts +1 -1
  32. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  33. package/dist/server/server/agent/provider-manifest.js +17 -3
  34. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  35. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  36. package/dist/server/server/agent/provider-registry.js +66 -32
  37. package/dist/server/server/agent/provider-registry.js.map +1 -1
  38. package/dist/server/server/agent/provider-snapshot-manager.d.ts +2 -6
  39. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
  40. package/dist/server/server/agent/provider-snapshot-manager.js +43 -32
  41. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
  42. package/dist/server/server/agent/providers/acp-agent.d.ts +42 -2
  43. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  44. package/dist/server/server/agent/providers/acp-agent.js +182 -28
  45. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  46. package/dist/server/server/agent/providers/claude/agent.d.ts +1 -1
  47. package/dist/server/server/agent/providers/claude/agent.d.ts.map +1 -1
  48. package/dist/server/server/agent/providers/claude/agent.js +191 -62
  49. package/dist/server/server/agent/providers/claude/agent.js.map +1 -1
  50. package/dist/server/server/agent/providers/claude/models.d.ts +2 -0
  51. package/dist/server/server/agent/providers/claude/models.d.ts.map +1 -1
  52. package/dist/server/server/agent/providers/claude/models.js +78 -0
  53. package/dist/server/server/agent/providers/claude/models.js.map +1 -1
  54. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +8 -1
  55. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts.map +1 -1
  56. package/dist/server/server/agent/providers/codex/app-server-transport.js +32 -1
  57. package/dist/server/server/agent/providers/codex/app-server-transport.js.map +1 -1
  58. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
  59. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +36 -7
  60. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
  61. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +28 -4
  62. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  63. package/dist/server/server/agent/providers/codex-app-server-agent.js +487 -80
  64. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  65. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +10 -1
  66. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -1
  67. package/dist/server/server/agent/providers/copilot-acp-agent.js +114 -7
  68. package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -1
  69. package/dist/server/server/agent/providers/cursor-acp-agent.d.ts +21 -0
  70. package/dist/server/server/agent/providers/cursor-acp-agent.d.ts.map +1 -0
  71. package/dist/server/server/agent/providers/cursor-acp-agent.js +85 -0
  72. package/dist/server/server/agent/providers/cursor-acp-agent.js.map +1 -0
  73. package/dist/server/server/agent/providers/generic-acp-agent.d.ts +13 -0
  74. package/dist/server/server/agent/providers/generic-acp-agent.d.ts.map +1 -1
  75. package/dist/server/server/agent/providers/generic-acp-agent.js +209 -2
  76. package/dist/server/server/agent/providers/generic-acp-agent.js.map +1 -1
  77. package/dist/server/server/agent/providers/opencode-agent.d.ts +7 -7
  78. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  79. package/dist/server/server/agent/providers/opencode-agent.js +121 -109
  80. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  81. package/dist/server/server/agent/providers/pi-direct-agent.d.ts +2 -2
  82. package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -1
  83. package/dist/server/server/agent/providers/pi-direct-agent.js +16 -15
  84. package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -1
  85. package/dist/server/server/agent/providers/pi-session-recovery-policy.d.ts +22 -0
  86. package/dist/server/server/agent/providers/pi-session-recovery-policy.d.ts.map +1 -0
  87. package/dist/server/server/agent/providers/pi-session-recovery-policy.js +51 -0
  88. package/dist/server/server/agent/providers/pi-session-recovery-policy.js.map +1 -0
  89. package/dist/server/server/agent/providers/provider-runner.d.ts +1 -1
  90. package/dist/server/server/agent/providers/provider-runner.d.ts.map +1 -1
  91. package/dist/server/server/agent/providers/provider-runner.js +2 -1
  92. package/dist/server/server/agent/providers/provider-runner.js.map +1 -1
  93. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts +1 -1
  94. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts.map +1 -1
  95. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js +2 -1
  96. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js.map +1 -1
  97. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  98. package/dist/server/server/agent/stt-manager.d.ts +5 -1
  99. package/dist/server/server/agent/stt-manager.d.ts.map +1 -1
  100. package/dist/server/server/agent/stt-manager.js +3 -2
  101. package/dist/server/server/agent/stt-manager.js.map +1 -1
  102. package/dist/server/server/agent/timeline-projection.d.ts.map +1 -1
  103. package/dist/server/server/agent/timeline-projection.js +9 -0
  104. package/dist/server/server/agent/timeline-projection.js.map +1 -1
  105. package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts +40 -0
  106. package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts.map +1 -0
  107. package/dist/server/server/auto-archive-on-merge/archive-if-safe.js +80 -0
  108. package/dist/server/server/auto-archive-on-merge/archive-if-safe.js.map +1 -0
  109. package/dist/server/server/auto-archive-on-merge/index.d.ts +8 -0
  110. package/dist/server/server/auto-archive-on-merge/index.d.ts.map +1 -0
  111. package/dist/server/server/auto-archive-on-merge/index.js +15 -0
  112. package/dist/server/server/auto-archive-on-merge/index.js.map +1 -0
  113. package/dist/server/server/bootstrap.d.ts +6 -0
  114. package/dist/server/server/bootstrap.d.ts.map +1 -1
  115. package/dist/server/server/bootstrap.js +74 -38
  116. package/dist/server/server/bootstrap.js.map +1 -1
  117. package/dist/server/server/checkout/status-projection.d.ts.map +1 -1
  118. package/dist/server/server/checkout/status-projection.js +5 -1
  119. package/dist/server/server/checkout/status-projection.js.map +1 -1
  120. package/dist/server/server/config.d.ts.map +1 -1
  121. package/dist/server/server/config.js +3 -1
  122. package/dist/server/server/config.js.map +1 -1
  123. package/dist/server/server/daemon-config-store.js +1 -0
  124. package/dist/server/server/daemon-config-store.js.map +1 -1
  125. package/dist/server/server/dictation/dictation-stream-manager.d.ts +2 -0
  126. package/dist/server/server/dictation/dictation-stream-manager.d.ts.map +1 -1
  127. package/dist/server/server/dictation/dictation-stream-manager.js +2 -1
  128. package/dist/server/server/dictation/dictation-stream-manager.js.map +1 -1
  129. package/dist/server/server/logger.js +1 -1
  130. package/dist/server/server/logger.js.map +1 -1
  131. package/dist/server/server/loop/rpc-schemas.d.ts +96 -96
  132. package/dist/server/server/loop-service.d.ts +18 -18
  133. package/dist/server/server/paseo-worktree-service.d.ts +3 -1
  134. package/dist/server/server/paseo-worktree-service.d.ts.map +1 -1
  135. package/dist/server/server/paseo-worktree-service.js +55 -18
  136. package/dist/server/server/paseo-worktree-service.js.map +1 -1
  137. package/dist/server/server/persisted-config.d.ts +25 -0
  138. package/dist/server/server/persisted-config.d.ts.map +1 -1
  139. package/dist/server/server/persisted-config.js +3 -0
  140. package/dist/server/server/persisted-config.js.map +1 -1
  141. package/dist/server/server/relay-transport.d.ts +2 -1
  142. package/dist/server/server/relay-transport.d.ts.map +1 -1
  143. package/dist/server/server/relay-transport.js +26 -4
  144. package/dist/server/server/relay-transport.js.map +1 -1
  145. package/dist/server/server/schedule/service.d.ts.map +1 -1
  146. package/dist/server/server/schedule/service.js +14 -1
  147. package/dist/server/server/schedule/service.js.map +1 -1
  148. package/dist/server/server/session.d.ts +9 -0
  149. package/dist/server/server/session.d.ts.map +1 -1
  150. package/dist/server/server/session.js +281 -50
  151. package/dist/server/server/session.js.map +1 -1
  152. package/dist/server/server/speech/providers/local/config.d.ts +5 -0
  153. package/dist/server/server/speech/providers/local/config.d.ts.map +1 -1
  154. package/dist/server/server/speech/providers/local/config.js +35 -0
  155. package/dist/server/server/speech/providers/local/config.js.map +1 -1
  156. package/dist/server/server/speech/speech-config-resolver.d.ts.map +1 -1
  157. package/dist/server/server/speech/speech-config-resolver.js +1 -0
  158. package/dist/server/server/speech/speech-config-resolver.js.map +1 -1
  159. package/dist/server/server/speech/speech-runtime.d.ts +2 -0
  160. package/dist/server/server/speech/speech-runtime.d.ts.map +1 -1
  161. package/dist/server/server/speech/speech-runtime.js +2 -0
  162. package/dist/server/server/speech/speech-runtime.js.map +1 -1
  163. package/dist/server/server/voice/voice-turn-controller.d.ts +1 -0
  164. package/dist/server/server/voice/voice-turn-controller.d.ts.map +1 -1
  165. package/dist/server/server/voice/voice-turn-controller.js +1 -1
  166. package/dist/server/server/voice/voice-turn-controller.js.map +1 -1
  167. package/dist/server/server/websocket-server.d.ts.map +1 -1
  168. package/dist/server/server/websocket-server.js +7 -0
  169. package/dist/server/server/websocket-server.js.map +1 -1
  170. package/dist/server/server/workspace-git-service.d.ts +6 -1
  171. package/dist/server/server/workspace-git-service.d.ts.map +1 -1
  172. package/dist/server/server/workspace-git-service.js +27 -4
  173. package/dist/server/server/workspace-git-service.js.map +1 -1
  174. package/dist/server/server/workspace-reconciliation-service.d.ts +4 -2
  175. package/dist/server/server/workspace-reconciliation-service.d.ts.map +1 -1
  176. package/dist/server/server/workspace-reconciliation-service.js +112 -14
  177. package/dist/server/server/workspace-reconciliation-service.js.map +1 -1
  178. package/dist/server/server/workspace-registry.d.ts +6 -1
  179. package/dist/server/server/workspace-registry.d.ts.map +1 -1
  180. package/dist/server/server/workspace-registry.js +11 -0
  181. package/dist/server/server/workspace-registry.js.map +1 -1
  182. package/dist/server/server/worktree-session.d.ts.map +1 -1
  183. package/dist/server/server/worktree-session.js +1 -0
  184. package/dist/server/server/worktree-session.js.map +1 -1
  185. package/dist/server/services/github-service.d.ts +46 -0
  186. package/dist/server/services/github-service.d.ts.map +1 -1
  187. package/dist/server/services/github-service.js +274 -5
  188. package/dist/server/services/github-service.js.map +1 -1
  189. package/dist/server/shared/messages.d.ts +3427 -290
  190. package/dist/server/shared/messages.d.ts.map +1 -1
  191. package/dist/server/shared/messages.js +93 -3
  192. package/dist/server/shared/messages.js.map +1 -1
  193. package/dist/server/shared/terminal-input-mode.d.ts +26 -0
  194. package/dist/server/shared/terminal-input-mode.d.ts.map +1 -0
  195. package/dist/server/shared/terminal-input-mode.js +151 -0
  196. package/dist/server/shared/terminal-input-mode.js.map +1 -0
  197. package/dist/server/terminal/terminal-session-controller.d.ts.map +1 -1
  198. package/dist/server/terminal/terminal-session-controller.js +12 -2
  199. package/dist/server/terminal/terminal-session-controller.js.map +1 -1
  200. package/dist/server/terminal/terminal.d.ts +1 -0
  201. package/dist/server/terminal/terminal.d.ts.map +1 -1
  202. package/dist/server/terminal/terminal.js +16 -3
  203. package/dist/server/terminal/terminal.js.map +1 -1
  204. package/dist/server/terminal/worker-terminal-manager.d.ts.map +1 -1
  205. package/dist/server/terminal/worker-terminal-manager.js +8 -0
  206. package/dist/server/terminal/worker-terminal-manager.js.map +1 -1
  207. package/dist/server/utils/checkout-git.d.ts +4 -1
  208. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  209. package/dist/server/utils/checkout-git.js +85 -29
  210. package/dist/server/utils/checkout-git.js.map +1 -1
  211. package/dist/server/utils/directory-suggestions.d.ts.map +1 -1
  212. package/dist/server/utils/directory-suggestions.js +51 -14
  213. package/dist/server/utils/directory-suggestions.js.map +1 -1
  214. package/dist/server/utils/executable.d.ts.map +1 -1
  215. package/dist/server/utils/executable.js +6 -3
  216. package/dist/server/utils/executable.js.map +1 -1
  217. package/dist/server/utils/run-git-command.d.ts +2 -0
  218. package/dist/server/utils/run-git-command.d.ts.map +1 -1
  219. package/dist/server/utils/run-git-command.js +41 -1
  220. package/dist/server/utils/run-git-command.js.map +1 -1
  221. package/dist/server/utils/worktree.js +1 -1
  222. package/dist/server/utils/worktree.js.map +1 -1
  223. package/dist/src/server/agent/agent-sdk-types.js +10 -0
  224. package/dist/src/server/agent/agent-sdk-types.js.map +1 -1
  225. package/dist/src/server/agent/provider-manifest.js +17 -3
  226. package/dist/src/server/agent/provider-manifest.js.map +1 -1
  227. package/dist/src/server/persisted-config.js +3 -0
  228. package/dist/src/server/persisted-config.js.map +1 -1
  229. package/dist/src/shared/messages.js +93 -3
  230. package/dist/src/shared/messages.js.map +1 -1
  231. package/dist/src/utils/executable.js +6 -3
  232. package/dist/src/utils/executable.js.map +1 -1
  233. package/package.json +3 -3
@@ -4,6 +4,7 @@ import { stat } from "node:fs/promises";
4
4
  import { AGENT_LIFECYCLE_STATUSES, } from "../../shared/agent-lifecycle.js";
5
5
  import { PARENT_AGENT_ID_LABEL } from "../../shared/agent-labels.js";
6
6
  import { z } from "zod";
7
+ import { getAgentStreamEventTurnId, } from "./agent-sdk-types.js";
7
8
  import { buildArchivedAgentRecord } from "./agent-archive.js";
8
9
  import { InMemoryAgentTimelineStore, } from "./agent-timeline-store.js";
9
10
  import { AGENT_STREAM_COALESCE_DEFAULT_WINDOW_MS, AgentStreamCoalescer, } from "./agent-stream-coalescer.js";
@@ -589,16 +590,23 @@ export class AgentManager {
589
590
  const agent = this.requireAgent(agentId);
590
591
  this.logger.trace({
591
592
  agentId,
593
+ provider: agent.provider,
594
+ sessionId: agent.persistence?.sessionId ?? undefined,
595
+ turnId: agent.activeForegroundTurnId ?? undefined,
592
596
  lifecycle: agent.lifecycle,
593
597
  activeForegroundTurnId: agent.activeForegroundTurnId,
594
598
  pendingPermissions: agent.pendingPermissions.size,
595
- }, "closeAgent: start");
599
+ }, "agent.manager.close.start");
596
600
  const closedAgent = this.prepareAgentForClosure(agent, "agent closed");
597
601
  await agent.session.close();
598
602
  this.timelineStore.delete(agentId);
599
603
  await this.persistSnapshot(closedAgent);
600
604
  this.emitClosedAgent(closedAgent, { persist: false });
601
- this.logger.trace({ agentId }, "closeAgent: completed");
605
+ this.logger.trace({
606
+ agentId,
607
+ provider: closedAgent.provider,
608
+ sessionId: closedAgent.persistence?.sessionId ?? undefined,
609
+ }, "agent.manager.close.complete");
602
610
  }
603
611
  async archiveAgent(agentId) {
604
612
  const agent = this.requireAgent(agentId);
@@ -906,10 +914,11 @@ export class AgentManager {
906
914
  this.dispatchStream(agent.id, event, {
907
915
  seq: row.seq,
908
916
  epoch: this.timelineStore.getEpoch(agent.id),
917
+ timestamp: row.timestamp,
909
918
  });
910
919
  return;
911
920
  }
912
- this.dispatchStream(agent.id, event);
921
+ this.dispatchStream(agent.id, event, { timestamp: new Date().toISOString() });
913
922
  };
914
923
  void (async () => {
915
924
  try {
@@ -944,6 +953,7 @@ export class AgentManager {
944
953
  }, {
945
954
  seq: row.seq,
946
955
  epoch: this.timelineStore.getEpoch(agentId),
956
+ timestamp: row.timestamp,
947
957
  });
948
958
  if (options?.emitState !== false) {
949
959
  this.emitState(agent);
@@ -960,6 +970,7 @@ export class AgentManager {
960
970
  }, {
961
971
  seq: row.seq,
962
972
  epoch: this.timelineStore.getEpoch(agentId),
973
+ timestamp: row.timestamp,
963
974
  });
964
975
  await this.persistSnapshot(agent);
965
976
  }
@@ -976,18 +987,24 @@ export class AgentManager {
976
987
  const existingAgent = this.requireSessionAgent(agentId);
977
988
  this.logger.trace({
978
989
  agentId,
990
+ provider: existingAgent.provider,
991
+ sessionId: existingAgent.persistence?.sessionId ?? undefined,
992
+ turnId: existingAgent.activeForegroundTurnId ?? undefined,
979
993
  lifecycle: existingAgent.lifecycle,
980
994
  activeForegroundTurnId: existingAgent.activeForegroundTurnId,
981
995
  hasPendingForegroundRun: this.foregroundRuns.hasPendingRun(agentId),
982
996
  promptType: typeof prompt === "string" ? "string" : "structured",
983
997
  hasRunOptions: Boolean(options),
984
- }, "streamAgent: requested");
998
+ }, "agent.manager.stream.request");
985
999
  if (existingAgent.activeForegroundTurnId || this.foregroundRuns.hasPendingRun(agentId)) {
986
1000
  this.logger.trace({
987
1001
  agentId,
1002
+ provider: existingAgent.provider,
1003
+ sessionId: existingAgent.persistence?.sessionId ?? undefined,
1004
+ turnId: existingAgent.activeForegroundTurnId ?? undefined,
988
1005
  lifecycle: existingAgent.lifecycle,
989
1006
  hasPendingForegroundRun: this.foregroundRuns.hasPendingRun(agentId),
990
- }, "streamAgent: rejected because a foreground run is already in flight");
1007
+ }, "agent.manager.stream.reject");
991
1008
  throw new Error(`Agent ${agentId} already has an active run`);
992
1009
  }
993
1010
  const agent = existingAgent;
@@ -1019,9 +1036,12 @@ export class AgentManager {
1019
1036
  this.emitState(agent);
1020
1037
  this.logger.trace({
1021
1038
  agentId,
1039
+ provider: agent.provider,
1040
+ sessionId: agent.persistence?.sessionId ?? undefined,
1041
+ turnId,
1022
1042
  lifecycle: agent.lifecycle,
1023
1043
  activeForegroundTurnId: agent.activeForegroundTurnId,
1024
- }, "streamAgent: started");
1044
+ }, "agent.manager.stream.start");
1025
1045
  turnStream = this.foregroundRuns.createTurnStream(turnId);
1026
1046
  this.foregroundRuns.addWaiter(agent, turnStream.waiter);
1027
1047
  try {
@@ -1069,10 +1089,13 @@ export class AgentManager {
1069
1089
  }
1070
1090
  this.logger.trace({
1071
1091
  agentId: agent.id,
1092
+ provider: agent.provider,
1093
+ sessionId: mutableAgent.persistence?.sessionId ?? undefined,
1094
+ turnId,
1072
1095
  lifecycle: mutableAgent.lifecycle,
1073
1096
  terminalError,
1074
1097
  pendingReplacement: mutableAgent.pendingReplacement,
1075
- }, "finalizeForegroundTurn: applying terminal state");
1098
+ }, "agent.manager.finalize");
1076
1099
  if (!shouldHoldBusyForReplacement) {
1077
1100
  this.touchUpdatedAt(mutableAgent);
1078
1101
  this.emitState(mutableAgent);
@@ -1216,7 +1239,7 @@ export class AgentManager {
1216
1239
  const bufferedResolution = agent.bufferedPermissionResolutions.get(requestId);
1217
1240
  if (bufferedResolution) {
1218
1241
  agent.bufferedPermissionResolutions.delete(requestId);
1219
- this.dispatchStream(agent.id, bufferedResolution);
1242
+ this.dispatchStream(agent.id, bufferedResolution, { timestamp: new Date().toISOString() });
1220
1243
  }
1221
1244
  return result;
1222
1245
  }
@@ -1297,7 +1320,7 @@ export class AgentManager {
1297
1320
  provider: agent.provider,
1298
1321
  requestId,
1299
1322
  resolution: { behavior: "deny", message: "Interrupted" },
1300
- });
1323
+ }, { timestamp: new Date().toISOString() });
1301
1324
  }
1302
1325
  agent.pendingPermissions.clear();
1303
1326
  this.touchUpdatedAt(agent);
@@ -1690,6 +1713,13 @@ export class AgentManager {
1690
1713
  agent.unsubscribeSession = unsubscribe;
1691
1714
  }
1692
1715
  enqueueSessionEvent(agentId, event) {
1716
+ this.logger.trace({
1717
+ agentId,
1718
+ provider: event.provider,
1719
+ sessionId: this.agents.get(agentId)?.persistence?.sessionId ?? undefined,
1720
+ turnId: getAgentStreamEventTurnId(event),
1721
+ event,
1722
+ }, "agent.manager.enqueue");
1693
1723
  const previous = this.sessionEventTails.get(agentId) ?? Promise.resolve();
1694
1724
  const next = previous
1695
1725
  .catch(() => undefined)
@@ -1701,6 +1731,13 @@ export class AgentManager {
1701
1731
  if (current.session == null) {
1702
1732
  return;
1703
1733
  }
1734
+ this.logger.trace({
1735
+ agentId,
1736
+ provider: event.provider,
1737
+ sessionId: current.persistence?.sessionId ?? undefined,
1738
+ turnId: getAgentStreamEventTurnId(event),
1739
+ event,
1740
+ }, "agent.manager.dequeue");
1704
1741
  await this.dispatchSessionEvent(current, event);
1705
1742
  return;
1706
1743
  })
@@ -1716,8 +1753,16 @@ export class AgentManager {
1716
1753
  });
1717
1754
  }
1718
1755
  async dispatchSessionEvent(agent, event) {
1719
- const turnId = event.turnId;
1756
+ const turnId = getAgentStreamEventTurnId(event);
1720
1757
  const matchingWaiters = this.foregroundRuns.getMatchingWaiters(agent, turnId);
1758
+ this.logger.trace({
1759
+ agentId: agent.id,
1760
+ provider: event.provider,
1761
+ sessionId: agent.persistence?.sessionId ?? undefined,
1762
+ turnId,
1763
+ matchingWaiterCount: matchingWaiters.length,
1764
+ event,
1765
+ }, "agent.manager.dispatch_session_event");
1721
1766
  const shouldNotifyWaiters = await this.handleStreamEvent(agent, event);
1722
1767
  if (!shouldNotifyWaiters) {
1723
1768
  return;
@@ -1725,6 +1770,15 @@ export class AgentManager {
1725
1770
  this.foregroundRuns.notifyWaiters(matchingWaiters, event, {
1726
1771
  terminal: isTurnTerminalEvent(event),
1727
1772
  });
1773
+ this.logger.trace({
1774
+ agentId: agent.id,
1775
+ provider: event.provider,
1776
+ sessionId: agent.persistence?.sessionId ?? undefined,
1777
+ turnId,
1778
+ notifiedWaiterCount: matchingWaiters.length,
1779
+ terminal: isTurnTerminalEvent(event),
1780
+ event,
1781
+ }, "agent.manager.notify_waiters");
1728
1782
  }
1729
1783
  async resolveInitialPersistedTitle(agentId, config) {
1730
1784
  const existing = await this.registry?.get(agentId);
@@ -1814,7 +1868,7 @@ export class AgentManager {
1814
1868
  if (isDuplicateLegacyUserMessage(event.item, canonicalUserMessagesById)) {
1815
1869
  continue;
1816
1870
  }
1817
- this.recordTimeline(agent.id, event.item);
1871
+ this.recordTimeline(agent.id, event.item, event.timestamp ? { timestamp: event.timestamp } : undefined);
1818
1872
  }
1819
1873
  }
1820
1874
  catch {
@@ -1822,7 +1876,7 @@ export class AgentManager {
1822
1876
  }
1823
1877
  }
1824
1878
  notifyForegroundTurnWaiters(agentId, event) {
1825
- const turnId = event.turnId;
1879
+ const turnId = getAgentStreamEventTurnId(event);
1826
1880
  if (turnId == null) {
1827
1881
  return;
1828
1882
  }
@@ -1831,10 +1885,18 @@ export class AgentManager {
1831
1885
  return;
1832
1886
  }
1833
1887
  this.foregroundRuns.notifyAgentWaiters(agent, event);
1888
+ this.logger.trace({
1889
+ agentId,
1890
+ provider: event.provider,
1891
+ sessionId: agent.persistence?.sessionId ?? undefined,
1892
+ turnId,
1893
+ event,
1894
+ }, "agent.manager.notify_waiters.coalesced");
1834
1895
  }
1835
1896
  async handleStreamEvent(agent, event, options) {
1836
- const eventTurnId = event.turnId;
1897
+ const eventTurnId = getAgentStreamEventTurnId(event);
1837
1898
  const isForegroundEvent = Boolean(eventTurnId && agent.activeForegroundTurnId === eventTurnId);
1899
+ this.traceHandleStreamEventStart(agent, event, eventTurnId, isForegroundEvent);
1838
1900
  if (eventTurnId &&
1839
1901
  isTurnTerminalEvent(event) &&
1840
1902
  this.foregroundRuns.hasFinalizedTurn(agent, eventTurnId)) {
@@ -1844,6 +1906,7 @@ export class AgentManager {
1844
1906
  if (!options?.fromHistory) {
1845
1907
  this.touchUpdatedAt(agent);
1846
1908
  if (this.agentStreamCoalescer.handle(agent.id, event)) {
1909
+ this.traceCoalescerBuffered(agent, event, eventTurnId);
1847
1910
  return false;
1848
1911
  }
1849
1912
  this.agentStreamCoalescer.flushFor(agent.id);
@@ -1864,10 +1927,45 @@ export class AgentManager {
1864
1927
  this.finalizeForegroundTurn(agent, eventTurnId);
1865
1928
  }
1866
1929
  if (!options?.fromHistory && flags.shouldDispatchEvent) {
1867
- this.dispatchStream(agent.id, event);
1930
+ this.dispatchStream(agent.id, event, { timestamp: new Date().toISOString() });
1868
1931
  }
1932
+ this.traceHandleStreamEventEnd(agent, event, eventTurnId, flags);
1869
1933
  return flags.shouldNotifyWaiters;
1870
1934
  }
1935
+ traceHandleStreamEventStart(agent, event, turnId, isForegroundEvent) {
1936
+ this.logger.trace({
1937
+ agentId: agent.id,
1938
+ provider: event.provider,
1939
+ sessionId: agent.persistence?.sessionId ?? undefined,
1940
+ turnId,
1941
+ lifecycle: agent.lifecycle,
1942
+ activeForegroundTurnId: agent.activeForegroundTurnId,
1943
+ isForegroundEvent,
1944
+ event,
1945
+ }, "agent.manager.handle_stream_event.start");
1946
+ }
1947
+ traceCoalescerBuffered(agent, event, turnId) {
1948
+ this.logger.trace({
1949
+ agentId: agent.id,
1950
+ provider: event.provider,
1951
+ sessionId: agent.persistence?.sessionId ?? undefined,
1952
+ turnId,
1953
+ event,
1954
+ }, "agent.manager.coalescer.buffer");
1955
+ }
1956
+ traceHandleStreamEventEnd(agent, event, turnId, flags) {
1957
+ this.logger.trace({
1958
+ agentId: agent.id,
1959
+ provider: event.provider,
1960
+ sessionId: agent.persistence?.sessionId ?? undefined,
1961
+ turnId,
1962
+ lifecycle: agent.lifecycle,
1963
+ activeForegroundTurnId: agent.activeForegroundTurnId,
1964
+ shouldDispatchEvent: flags.shouldDispatchEvent,
1965
+ shouldNotifyWaiters: flags.shouldNotifyWaiters,
1966
+ event,
1967
+ }, "agent.manager.handle_stream_event.end");
1968
+ }
1871
1969
  dispatchStreamEventByType(params) {
1872
1970
  const { agent, event, options, isForegroundEvent, eventTurnId, flags } = params;
1873
1971
  switch (event.type) {
@@ -1972,7 +2070,7 @@ export class AgentManager {
1972
2070
  }
1973
2071
  }
1974
2072
  if (options?.fromHistory) {
1975
- this.recordTimeline(agent.id, event.item);
2073
+ this.recordTimeline(agent.id, event.item, event.timestamp ? { timestamp: event.timestamp } : undefined);
1976
2074
  flags.shouldDispatchEvent = false;
1977
2075
  flags.shouldNotifyWaiters = false;
1978
2076
  return;
@@ -1989,10 +2087,12 @@ export class AgentManager {
1989
2087
  const { agent, event, eventTurnId, isForegroundEvent } = params;
1990
2088
  this.logger.trace({
1991
2089
  agentId: agent.id,
2090
+ provider: agent.provider,
2091
+ sessionId: agent.persistence?.sessionId ?? undefined,
2092
+ turnId: eventTurnId,
1992
2093
  lifecycle: agent.lifecycle,
1993
2094
  activeForegroundTurnId: agent.activeForegroundTurnId,
1994
- eventTurnId,
1995
- }, "handleStreamEvent: turn_completed");
2095
+ }, "agent.manager.turn.completed");
1996
2096
  agent.lastUsage = event.usage;
1997
2097
  agent.lastError = undefined;
1998
2098
  if (!isForegroundEvent && agent.lifecycle !== "idle" && !agent.pendingReplacement) {
@@ -2005,6 +2105,9 @@ export class AgentManager {
2005
2105
  const { agent, event, eventTurnId, isForegroundEvent, options } = params;
2006
2106
  this.logger.warn({
2007
2107
  agentId: agent.id,
2108
+ provider: agent.provider,
2109
+ sessionId: agent.persistence?.sessionId ?? undefined,
2110
+ turnId: eventTurnId,
2008
2111
  lifecycle: agent.lifecycle,
2009
2112
  activeForegroundTurnId: agent.activeForegroundTurnId,
2010
2113
  eventTurnId,
@@ -2026,10 +2129,13 @@ export class AgentManager {
2026
2129
  const { agent, event, eventTurnId, isForegroundEvent, options } = params;
2027
2130
  this.logger.trace({
2028
2131
  agentId: agent.id,
2132
+ provider: agent.provider,
2133
+ sessionId: agent.persistence?.sessionId ?? undefined,
2134
+ turnId: eventTurnId,
2029
2135
  lifecycle: agent.lifecycle,
2030
2136
  activeForegroundTurnId: agent.activeForegroundTurnId,
2031
2137
  eventTurnId,
2032
- }, "handleStreamEvent: turn_canceled");
2138
+ }, "agent.manager.turn.canceled");
2033
2139
  if (!isForegroundEvent && !agent.pendingReplacement) {
2034
2140
  agent.lifecycle = "idle";
2035
2141
  }
@@ -2043,10 +2149,12 @@ export class AgentManager {
2043
2149
  const { agent, eventTurnId, isForegroundEvent } = params;
2044
2150
  this.logger.trace({
2045
2151
  agentId: agent.id,
2152
+ provider: agent.provider,
2153
+ sessionId: agent.persistence?.sessionId ?? undefined,
2154
+ turnId: eventTurnId,
2046
2155
  lifecycle: agent.lifecycle,
2047
2156
  activeForegroundTurnId: agent.activeForegroundTurnId,
2048
- eventTurnId,
2049
- }, "handleStreamEvent: turn_started");
2157
+ }, "agent.manager.turn.started");
2050
2158
  if (!isForegroundEvent) {
2051
2159
  agent.lifecycle = "running";
2052
2160
  this.emitState(agent);
@@ -2094,6 +2202,7 @@ export class AgentManager {
2094
2202
  this.dispatchStream(agentId, event, {
2095
2203
  seq: row.seq,
2096
2204
  epoch: this.timelineStore.getEpoch(agentId),
2205
+ timestamp: row.timestamp,
2097
2206
  });
2098
2207
  return event;
2099
2208
  }
@@ -2119,6 +2228,7 @@ export class AgentManager {
2119
2228
  }, {
2120
2229
  seq: row.seq,
2121
2230
  epoch: this.timelineStore.getEpoch(agent.id),
2231
+ timestamp: row.timestamp,
2122
2232
  });
2123
2233
  }
2124
2234
  formatTurnFailedMessage(event) {
@@ -2134,8 +2244,8 @@ export class AgentManager {
2134
2244
  }
2135
2245
  return parts.join("\n\n");
2136
2246
  }
2137
- recordTimeline(agentId, item) {
2138
- const row = this.timelineStore.append(agentId, item);
2247
+ recordTimeline(agentId, item, options) {
2248
+ const row = this.timelineStore.append(agentId, item, options);
2139
2249
  this.enqueueDurableTimelineAppend(agentId, row);
2140
2250
  return row;
2141
2251
  }
@@ -2146,6 +2256,16 @@ export class AgentManager {
2146
2256
  this.enqueueBackgroundPersist(agent);
2147
2257
  }
2148
2258
  this.syncFeaturesFromSession(agent);
2259
+ this.logger.trace({
2260
+ agentId: agent.id,
2261
+ provider: agent.provider,
2262
+ sessionId: agent.persistence?.sessionId ?? undefined,
2263
+ turnId: agent.activeForegroundTurnId ?? undefined,
2264
+ lifecycle: agent.lifecycle,
2265
+ activeForegroundTurnId: agent.activeForegroundTurnId,
2266
+ pendingPermissions: agent.pendingPermissions.size,
2267
+ persist: options?.persist !== false,
2268
+ }, "agent.manager.emit_state");
2149
2269
  this.dispatch({
2150
2270
  type: "agent_state",
2151
2271
  agent: { ...agent },
@@ -2243,6 +2363,15 @@ export class AgentManager {
2243
2363
  });
2244
2364
  }
2245
2365
  dispatchStream(agentId, event, metadata) {
2366
+ const agent = this.agents.get(agentId);
2367
+ this.logger.trace({
2368
+ agentId,
2369
+ provider: event.provider,
2370
+ sessionId: agent?.persistence?.sessionId ?? undefined,
2371
+ turnId: getAgentStreamEventTurnId(event),
2372
+ metadata,
2373
+ event,
2374
+ }, "agent.manager.dispatch_stream");
2246
2375
  this.dispatch({ type: "agent_stream", agentId, event, ...metadata });
2247
2376
  }
2248
2377
  dispatch(event) {
@@ -2327,6 +2456,7 @@ export class AgentManager {
2327
2456
  }
2328
2457
  buildLaunchContext(agentId) {
2329
2458
  return {
2459
+ agentId,
2330
2460
  env: {
2331
2461
  PASEO_AGENT_ID: agentId,
2332
2462
  },