@getpaseo/server 0.1.63 → 0.1.65

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 (265) hide show
  1. package/dist/server/client/daemon-client-transport-types.d.ts +2 -0
  2. package/dist/server/client/daemon-client-transport-types.d.ts.map +1 -1
  3. package/dist/server/client/daemon-client-websocket-transport.d.ts +2 -1
  4. package/dist/server/client/daemon-client-websocket-transport.d.ts.map +1 -1
  5. package/dist/server/client/daemon-client-websocket-transport.js +4 -4
  6. package/dist/server/client/daemon-client-websocket-transport.js.map +1 -1
  7. package/dist/server/client/daemon-client.d.ts +30 -20
  8. package/dist/server/client/daemon-client.d.ts.map +1 -1
  9. package/dist/server/client/daemon-client.js +206 -98
  10. package/dist/server/client/daemon-client.js.map +1 -1
  11. package/dist/server/client/terminal-stream-router.d.ts +24 -0
  12. package/dist/server/client/terminal-stream-router.d.ts.map +1 -0
  13. package/dist/server/client/terminal-stream-router.js +100 -0
  14. package/dist/server/client/terminal-stream-router.js.map +1 -0
  15. package/dist/server/server/agent/activity-curator.d.ts +6 -3
  16. package/dist/server/server/agent/activity-curator.d.ts.map +1 -1
  17. package/dist/server/server/agent/activity-curator.js +45 -138
  18. package/dist/server/server/agent/activity-curator.js.map +1 -1
  19. package/dist/server/server/agent/agent-manager.d.ts +3 -14
  20. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  21. package/dist/server/server/agent/agent-manager.js +75 -140
  22. package/dist/server/server/agent/agent-manager.js.map +1 -1
  23. package/dist/server/server/agent/agent-metadata-generator.d.ts +0 -5
  24. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  25. package/dist/server/server/agent/agent-metadata-generator.js +3 -93
  26. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  27. package/dist/server/server/agent/agent-sdk-types.d.ts +15 -1
  28. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  29. package/dist/server/server/agent/agent-stream-coalescer.d.ts +1 -1
  30. package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -1
  31. package/dist/server/server/agent/agent-stream-coalescer.js +1 -1
  32. package/dist/server/server/agent/agent-stream-coalescer.js.map +1 -1
  33. package/dist/server/server/agent/agent-timeline-store.d.ts.map +1 -1
  34. package/dist/server/server/agent/agent-timeline-store.js +29 -32
  35. package/dist/server/server/agent/agent-timeline-store.js.map +1 -1
  36. package/dist/server/server/agent/foreground-run-state.d.ts +50 -0
  37. package/dist/server/server/agent/foreground-run-state.d.ts.map +1 -0
  38. package/dist/server/server/agent/foreground-run-state.js +162 -0
  39. package/dist/server/server/agent/foreground-run-state.js.map +1 -0
  40. package/dist/server/server/agent/mcp-server.d.ts +5 -3
  41. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  42. package/dist/server/server/agent/mcp-server.js +110 -99
  43. package/dist/server/server/agent/mcp-server.js.map +1 -1
  44. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
  45. package/dist/server/server/agent/mcp-shared.js +7 -1
  46. package/dist/server/server/agent/mcp-shared.js.map +1 -1
  47. package/dist/server/server/agent/prompt-attachments.d.ts +4 -3
  48. package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -1
  49. package/dist/server/server/agent/prompt-attachments.js +43 -4
  50. package/dist/server/server/agent/prompt-attachments.js.map +1 -1
  51. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  52. package/dist/server/server/agent/provider-manifest.js +7 -0
  53. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  54. package/dist/server/server/agent/providers/acp-agent.d.ts +38 -1
  55. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  56. package/dist/server/server/agent/providers/acp-agent.js +257 -140
  57. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  58. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts.map +1 -1
  59. package/dist/server/server/agent/providers/claude/sidechain-tracker.js +1 -1
  60. package/dist/server/server/agent/providers/claude/sidechain-tracker.js.map +1 -1
  61. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts.map +1 -1
  62. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +68 -198
  63. package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -1
  64. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  65. package/dist/server/server/agent/providers/claude-agent.js +52 -102
  66. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  67. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
  68. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +125 -141
  69. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
  70. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +36 -6
  71. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  72. package/dist/server/server/agent/providers/codex-app-server-agent.js +374 -219
  73. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  74. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +6 -2
  75. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -1
  76. package/dist/server/server/agent/providers/mock-load-test-agent.js +294 -113
  77. package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -1
  78. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +1 -1
  79. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +1 -1
  80. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +94 -2
  81. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -1
  82. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts.map +1 -1
  83. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +24 -115
  84. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js.map +1 -1
  85. package/dist/server/server/agent/providers/opencode-agent.d.ts +102 -1
  86. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  87. package/dist/server/server/agent/providers/opencode-agent.js +416 -158
  88. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  89. package/dist/server/server/agent/providers/provider-runner.d.ts +27 -0
  90. package/dist/server/server/agent/providers/provider-runner.d.ts.map +1 -0
  91. package/dist/server/server/agent/providers/provider-runner.js +80 -0
  92. package/dist/server/server/agent/providers/provider-runner.js.map +1 -0
  93. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +6 -3
  94. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  95. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +2 -0
  96. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts.map +1 -1
  97. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +31 -0
  98. package/dist/server/server/agent/providers/tool-call-mapper-utils.js.map +1 -1
  99. package/dist/server/server/agent/timeline-projection.d.ts +21 -5
  100. package/dist/server/server/agent/timeline-projection.d.ts.map +1 -1
  101. package/dist/server/server/agent/timeline-projection.js +59 -9
  102. package/dist/server/server/agent/timeline-projection.js.map +1 -1
  103. package/dist/server/server/auth.d.ts +25 -0
  104. package/dist/server/server/auth.d.ts.map +1 -0
  105. package/dist/server/server/auth.js +93 -0
  106. package/dist/server/server/auth.js.map +1 -0
  107. package/dist/server/server/bootstrap.d.ts +3 -1
  108. package/dist/server/server/bootstrap.d.ts.map +1 -1
  109. package/dist/server/server/bootstrap.js +87 -30
  110. package/dist/server/server/bootstrap.js.map +1 -1
  111. package/dist/server/server/config.d.ts.map +1 -1
  112. package/dist/server/server/config.js +11 -0
  113. package/dist/server/server/config.js.map +1 -1
  114. package/dist/server/server/exports.d.ts +7 -1
  115. package/dist/server/server/exports.d.ts.map +1 -1
  116. package/dist/server/server/exports.js +6 -1
  117. package/dist/server/server/exports.js.map +1 -1
  118. package/dist/server/server/file-explorer/service.d.ts +10 -0
  119. package/dist/server/server/file-explorer/service.d.ts.map +1 -1
  120. package/dist/server/server/file-explorer/service.js +38 -4
  121. package/dist/server/server/file-explorer/service.js.map +1 -1
  122. package/dist/server/server/index.js +9 -6
  123. package/dist/server/server/index.js.map +1 -1
  124. package/dist/server/server/logger.d.ts.map +1 -1
  125. package/dist/server/server/logger.js +15 -1
  126. package/dist/server/server/logger.js.map +1 -1
  127. package/dist/server/server/pagination/cursor.d.ts +16 -0
  128. package/dist/server/server/pagination/cursor.d.ts.map +1 -0
  129. package/dist/server/server/pagination/cursor.js +62 -0
  130. package/dist/server/server/pagination/cursor.js.map +1 -0
  131. package/dist/server/server/pagination/sortable-pager.d.ts +24 -0
  132. package/dist/server/server/pagination/sortable-pager.d.ts.map +1 -0
  133. package/dist/server/server/pagination/sortable-pager.js +68 -0
  134. package/dist/server/server/pagination/sortable-pager.js.map +1 -0
  135. package/dist/server/server/paseo-worktree-archive-service.d.ts +3 -1
  136. package/dist/server/server/paseo-worktree-archive-service.d.ts.map +1 -1
  137. package/dist/server/server/paseo-worktree-archive-service.js +61 -53
  138. package/dist/server/server/paseo-worktree-archive-service.js.map +1 -1
  139. package/dist/server/server/paseo-worktree-service.d.ts +13 -0
  140. package/dist/server/server/paseo-worktree-service.d.ts.map +1 -1
  141. package/dist/server/server/paseo-worktree-service.js +72 -3
  142. package/dist/server/server/paseo-worktree-service.js.map +1 -1
  143. package/dist/server/server/persisted-config.d.ts +25 -0
  144. package/dist/server/server/persisted-config.d.ts.map +1 -1
  145. package/dist/server/server/persisted-config.js +9 -0
  146. package/dist/server/server/persisted-config.js.map +1 -1
  147. package/dist/server/server/relay-transport.d.ts.map +1 -1
  148. package/dist/server/server/relay-transport.js +16 -4
  149. package/dist/server/server/relay-transport.js.map +1 -1
  150. package/dist/server/server/resolve-worktree-creation-intent.d.ts +0 -10
  151. package/dist/server/server/resolve-worktree-creation-intent.d.ts.map +1 -1
  152. package/dist/server/server/resolve-worktree-creation-intent.js +1 -45
  153. package/dist/server/server/resolve-worktree-creation-intent.js.map +1 -1
  154. package/dist/server/server/script-status-projection.d.ts +6 -1
  155. package/dist/server/server/script-status-projection.d.ts.map +1 -1
  156. package/dist/server/server/script-status-projection.js +12 -3
  157. package/dist/server/server/script-status-projection.js.map +1 -1
  158. package/dist/server/server/session.d.ts +19 -51
  159. package/dist/server/server/session.d.ts.map +1 -1
  160. package/dist/server/server/session.js +354 -1069
  161. package/dist/server/server/session.js.map +1 -1
  162. package/dist/server/server/websocket-server.d.ts +4 -2
  163. package/dist/server/server/websocket-server.d.ts.map +1 -1
  164. package/dist/server/server/websocket-server.js +65 -12
  165. package/dist/server/server/websocket-server.js.map +1 -1
  166. package/dist/server/server/workspace-directory.d.ts +69 -0
  167. package/dist/server/server/workspace-directory.d.ts.map +1 -0
  168. package/dist/server/server/workspace-directory.js +229 -0
  169. package/dist/server/server/workspace-directory.js.map +1 -0
  170. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -1
  171. package/dist/server/server/worktree-bootstrap.js +6 -2
  172. package/dist/server/server/worktree-bootstrap.js.map +1 -1
  173. package/dist/server/server/worktree-core.d.ts +2 -0
  174. package/dist/server/server/worktree-core.d.ts.map +1 -1
  175. package/dist/server/server/worktree-core.js.map +1 -1
  176. package/dist/server/server/worktree-errors.d.ts +1 -1
  177. package/dist/server/server/worktree-errors.d.ts.map +1 -1
  178. package/dist/server/server/worktree-errors.js +1 -4
  179. package/dist/server/server/worktree-errors.js.map +1 -1
  180. package/dist/server/server/worktree-session.d.ts +47 -20
  181. package/dist/server/server/worktree-session.d.ts.map +1 -1
  182. package/dist/server/server/worktree-session.js +68 -25
  183. package/dist/server/server/worktree-session.js.map +1 -1
  184. package/dist/server/shared/binary-frames/file-transfer.d.ts +56 -0
  185. package/dist/server/shared/binary-frames/file-transfer.d.ts.map +1 -0
  186. package/dist/server/shared/binary-frames/file-transfer.js +108 -0
  187. package/dist/server/shared/binary-frames/file-transfer.js.map +1 -0
  188. package/dist/server/shared/binary-frames/index.d.ts +3 -0
  189. package/dist/server/shared/binary-frames/index.d.ts.map +1 -0
  190. package/dist/server/shared/binary-frames/index.js +3 -0
  191. package/dist/server/shared/binary-frames/index.js.map +1 -0
  192. package/dist/server/shared/{terminal-stream-protocol.d.ts → binary-frames/terminal.d.ts} +2 -2
  193. package/dist/server/shared/binary-frames/terminal.d.ts.map +1 -0
  194. package/dist/server/shared/{terminal-stream-protocol.js → binary-frames/terminal.js} +2 -2
  195. package/dist/server/shared/binary-frames/terminal.js.map +1 -0
  196. package/dist/server/shared/client-capabilities.d.ts +5 -0
  197. package/dist/server/shared/client-capabilities.d.ts.map +1 -0
  198. package/dist/server/shared/client-capabilities.js +4 -0
  199. package/dist/server/shared/client-capabilities.js.map +1 -0
  200. package/dist/server/shared/connection-offer.d.ts +8 -0
  201. package/dist/server/shared/connection-offer.d.ts.map +1 -1
  202. package/dist/server/shared/connection-offer.js +35 -0
  203. package/dist/server/shared/connection-offer.js.map +1 -1
  204. package/dist/server/shared/daemon-endpoints.d.ts +16 -1
  205. package/dist/server/shared/daemon-endpoints.d.ts.map +1 -1
  206. package/dist/server/shared/daemon-endpoints.js +65 -6
  207. package/dist/server/shared/daemon-endpoints.js.map +1 -1
  208. package/dist/server/shared/host-connection-schema.d.ts +23 -0
  209. package/dist/server/shared/host-connection-schema.d.ts.map +1 -0
  210. package/dist/server/shared/host-connection-schema.js +9 -0
  211. package/dist/server/shared/host-connection-schema.js.map +1 -0
  212. package/dist/server/shared/messages.d.ts +3242 -535
  213. package/dist/server/shared/messages.d.ts.map +1 -1
  214. package/dist/server/shared/messages.js +73 -34
  215. package/dist/server/shared/messages.js.map +1 -1
  216. package/dist/server/terminal/terminal-manager-factory.d.ts +7 -0
  217. package/dist/server/terminal/terminal-manager-factory.d.ts.map +1 -0
  218. package/dist/server/terminal/terminal-manager-factory.js +13 -0
  219. package/dist/server/terminal/terminal-manager-factory.js.map +1 -0
  220. package/dist/server/terminal/terminal-manager.d.ts +7 -1
  221. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  222. package/dist/server/terminal/terminal-manager.js +14 -1
  223. package/dist/server/terminal/terminal-manager.js.map +1 -1
  224. package/dist/server/terminal/terminal-session-controller.d.ts +63 -0
  225. package/dist/server/terminal/terminal-session-controller.d.ts.map +1 -0
  226. package/dist/server/terminal/terminal-session-controller.js +615 -0
  227. package/dist/server/terminal/terminal-session-controller.js.map +1 -0
  228. package/dist/server/terminal/terminal-ts-loader.mjs +20 -0
  229. package/dist/server/terminal/terminal-worker-process.d.ts +2 -0
  230. package/dist/server/terminal/terminal-worker-process.d.ts.map +1 -0
  231. package/dist/server/terminal/terminal-worker-process.js +221 -0
  232. package/dist/server/terminal/terminal-worker-process.js.map +1 -0
  233. package/dist/server/terminal/terminal-worker-protocol.d.ts +113 -0
  234. package/dist/server/terminal/terminal-worker-protocol.d.ts.map +1 -0
  235. package/dist/server/terminal/terminal-worker-protocol.js +2 -0
  236. package/dist/server/terminal/terminal-worker-protocol.js.map +1 -0
  237. package/dist/server/terminal/terminal.d.ts +7 -0
  238. package/dist/server/terminal/terminal.d.ts.map +1 -1
  239. package/dist/server/terminal/terminal.js +22 -9
  240. package/dist/server/terminal/terminal.js.map +1 -1
  241. package/dist/server/terminal/worker-terminal-manager.d.ts +19 -0
  242. package/dist/server/terminal/worker-terminal-manager.d.ts.map +1 -0
  243. package/dist/server/terminal/worker-terminal-manager.js +466 -0
  244. package/dist/server/terminal/worker-terminal-manager.js.map +1 -0
  245. package/dist/server/utils/directory-suggestions.d.ts.map +1 -1
  246. package/dist/server/utils/directory-suggestions.js +10 -1
  247. package/dist/server/utils/directory-suggestions.js.map +1 -1
  248. package/dist/server/utils/process-tree.d.ts +25 -0
  249. package/dist/server/utils/process-tree.d.ts.map +1 -0
  250. package/dist/server/utils/process-tree.js +96 -0
  251. package/dist/server/utils/process-tree.js.map +1 -0
  252. package/dist/server/utils/windows-command.d.ts.map +1 -1
  253. package/dist/server/utils/windows-command.js +5 -1
  254. package/dist/server/utils/windows-command.js.map +1 -1
  255. package/dist/server/utils/worktree-metadata.d.ts +44 -0
  256. package/dist/server/utils/worktree-metadata.d.ts.map +1 -1
  257. package/dist/server/utils/worktree-metadata.js +58 -0
  258. package/dist/server/utils/worktree-metadata.js.map +1 -1
  259. package/dist/server/utils/worktree.d.ts +14 -2
  260. package/dist/server/utils/worktree.d.ts.map +1 -1
  261. package/dist/server/utils/worktree.js +22 -13
  262. package/dist/server/utils/worktree.js.map +1 -1
  263. package/package.json +5 -4
  264. package/dist/server/shared/terminal-stream-protocol.d.ts.map +0 -1
  265. package/dist/server/shared/terminal-stream-protocol.js.map +0 -1
@@ -1,14 +1,13 @@
1
- import type { AgentProvider, AgentTimelineItem } from "./agent-sdk-types.js";
1
+ import type { AgentTimelineItem } from "./agent-sdk-types.js";
2
2
  import type { AgentTimelineRow } from "./agent-manager.js";
3
3
  export type TimelineProjectionMode = "canonical" | "projected";
4
4
  export interface TimelineSeqRange {
5
5
  startSeq: number;
6
6
  endSeq: number;
7
7
  }
8
- export type TimelineProjectionKind = "assistant_merge" | "tool_lifecycle";
8
+ export type TimelineProjectionKind = "assistant_merge" | "reasoning_merge" | "tool_lifecycle";
9
9
  export type TimelineLimitDirection = "tail" | "before" | "after";
10
10
  export interface TimelineProjectionEntry {
11
- provider: AgentProvider;
12
11
  item: AgentTimelineItem;
13
12
  timestamp: string;
14
13
  seqStart: number;
@@ -22,7 +21,10 @@ interface ProjectedWindowSelection {
22
21
  minSeq: number | null;
23
22
  maxSeq: number | null;
24
23
  }
25
- export declare function projectTimelineRows(rows: readonly AgentTimelineRow[], provider: AgentProvider, mode: TimelineProjectionMode): TimelineProjectionEntry[];
24
+ export declare function projectTimelineRows(input: {
25
+ rows: readonly AgentTimelineRow[];
26
+ mode: TimelineProjectionMode;
27
+ }): TimelineProjectionEntry[];
26
28
  /**
27
29
  * Select a timeline window based on projected-entry count, then map it back to
28
30
  * contiguous canonical rows. This avoids cutting through merged assistant
@@ -30,10 +32,24 @@ export declare function projectTimelineRows(rows: readonly AgentTimelineRow[], p
30
32
  */
31
33
  export declare function selectTimelineWindowByProjectedLimit(input: {
32
34
  rows: readonly AgentTimelineRow[];
33
- provider: AgentProvider;
34
35
  direction: TimelineLimitDirection;
35
36
  limit: number;
36
37
  collapseToolLifecycle?: boolean;
37
38
  }): ProjectedWindowSelection;
39
+ /**
40
+ * Apply a projected-count limit to a flat AgentTimelineItem[] without seq metadata.
41
+ * Used by callers that only have items in hand (e.g. MCP tools reading
42
+ * `agentManager.getTimeline`). Index position is treated as canonical seq.
43
+ */
44
+ export interface ProjectedItemSelection {
45
+ items: AgentTimelineItem[];
46
+ totalProjected: number;
47
+ shownProjected: number;
48
+ }
49
+ export declare function selectItemsByProjectedLimit(input: {
50
+ items: readonly AgentTimelineItem[];
51
+ direction: TimelineLimitDirection;
52
+ limit: number;
53
+ }): ProjectedItemSelection;
38
54
  export {};
39
55
  //# sourceMappingURL=timeline-projection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeline-projection.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/timeline-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC,SAAS,EAAE,sBAAsB,EAAE,CAAC;CACrC;AAGD,UAAU,wBAAwB;IAChC,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AA2KD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,gBAAgB,EAAE,EACjC,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,sBAAsB,GAC3B,uBAAuB,EAAE,CAQ3B;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClC,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,sBAAsB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,wBAAwB,CAoF3B"}
1
+ {"version":3,"file":"timeline-projection.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/timeline-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAC9F,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC,SAAS,EAAE,sBAAsB,EAAE,CAAC;CACrC;AAGD,UAAU,wBAAwB;IAChC,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AA8MD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClC,IAAI,EAAE,sBAAsB,CAAC;CAC9B,GAAG,uBAAuB,EAAE,CAS5B;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClC,SAAS,EAAE,sBAAsB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,wBAAwB,CAoF3B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,SAAS,EAAE,sBAAsB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,sBAAsB,CAiBzB"}
@@ -54,9 +54,8 @@ function mergeToolCallItems(existing, incoming) {
54
54
  }
55
55
  return merged;
56
56
  }
57
- function makeCanonicalEntries(rows, provider) {
57
+ function makeCanonicalEntries(rows) {
58
58
  return rows.map((row) => ({
59
- provider,
60
59
  item: row.item,
61
60
  timestamp: row.timestamp,
62
61
  seqStart: row.seq,
@@ -99,6 +98,38 @@ function collapseToolLifecycle(entries) {
99
98
  }
100
99
  return output;
101
100
  }
101
+ function mergeReasoningChunks(entries) {
102
+ const output = [];
103
+ for (const entry of entries) {
104
+ const previous = output[output.length - 1];
105
+ const shouldMerge = previous &&
106
+ previous.item.type === "reasoning" &&
107
+ entry.item.type === "reasoning" &&
108
+ previous.seqEnd + 1 === entry.seqStart;
109
+ if (!shouldMerge || !previous) {
110
+ output.push(entry);
111
+ continue;
112
+ }
113
+ const previousReasoning = previous.item;
114
+ const entryReasoning = entry.item;
115
+ const collapsedKinds = new Set([
116
+ ...previous.collapsed,
117
+ ...entry.collapsed,
118
+ "reasoning_merge",
119
+ ]);
120
+ output[output.length - 1] = {
121
+ ...previous,
122
+ item: {
123
+ type: "reasoning",
124
+ text: `${previousReasoning.text}${entryReasoning.text}`,
125
+ },
126
+ seqEnd: entry.seqEnd,
127
+ sourceSeqRanges: mergeSeqRanges(previous.sourceSeqRanges, entry.sourceSeqRanges),
128
+ collapsed: Array.from(collapsedKinds),
129
+ };
130
+ }
131
+ return output;
132
+ }
102
133
  function mergeAssistantChunks(entries) {
103
134
  const output = [];
104
135
  for (const entry of entries) {
@@ -131,13 +162,14 @@ function mergeAssistantChunks(entries) {
131
162
  }
132
163
  return output;
133
164
  }
134
- export function projectTimelineRows(rows, provider, mode) {
135
- const canonical = makeCanonicalEntries(rows, provider);
136
- if (mode === "canonical") {
165
+ export function projectTimelineRows(input) {
166
+ const canonical = makeCanonicalEntries(input.rows);
167
+ if (input.mode === "canonical") {
137
168
  return canonical;
138
169
  }
139
170
  const toolCollapsed = collapseToolLifecycle(canonical);
140
- return mergeAssistantChunks(toolCollapsed);
171
+ const assistantMerged = mergeAssistantChunks(toolCollapsed);
172
+ return mergeReasoningChunks(assistantMerged);
141
173
  }
142
174
  /**
143
175
  * Select a timeline window based on projected-entry count, then map it back to
@@ -145,11 +177,11 @@ export function projectTimelineRows(rows, provider, mode) {
145
177
  * chunks when callers request canonical rows with a bounded limit.
146
178
  */
147
179
  export function selectTimelineWindowByProjectedLimit(input) {
148
- const { rows, provider, direction } = input;
180
+ const { rows, direction } = input;
149
181
  const limit = Math.max(0, Math.floor(input.limit));
150
182
  const collapseTools = input.collapseToolLifecycle ?? true;
151
- const canonical = makeCanonicalEntries(rows, provider);
152
- const projectedAll = mergeAssistantChunks(collapseTools ? collapseToolLifecycle(canonical) : canonical);
183
+ const canonical = makeCanonicalEntries(rows);
184
+ const projectedAll = mergeReasoningChunks(mergeAssistantChunks(collapseTools ? collapseToolLifecycle(canonical) : canonical));
153
185
  if (projectedAll.length === 0) {
154
186
  return {
155
187
  projectedEntries: [],
@@ -217,4 +249,22 @@ export function selectTimelineWindowByProjectedLimit(input) {
217
249
  maxSeq: Number.isFinite(maxSeq) ? maxSeq : null,
218
250
  };
219
251
  }
252
+ export function selectItemsByProjectedLimit(input) {
253
+ const rows = input.items.map((item, index) => ({
254
+ seq: index + 1,
255
+ timestamp: "",
256
+ item,
257
+ }));
258
+ const projectedAll = projectTimelineRows({ rows, mode: "projected" });
259
+ const window = selectTimelineWindowByProjectedLimit({
260
+ rows,
261
+ direction: input.direction,
262
+ limit: input.limit,
263
+ });
264
+ return {
265
+ items: window.selectedRows.map((row) => row.item),
266
+ totalProjected: projectedAll.length,
267
+ shownProjected: window.projectedEntries.length,
268
+ };
269
+ }
220
270
  //# sourceMappingURL=timeline-projection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeline-projection.js","sourceRoot":"","sources":["../../../../src/server/agent/timeline-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timeline-projection.js","sourceRoot":"","sources":["../../../../src/server/agent/timeline-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { RequestHandler } from "express";
2
+ export declare const DAEMON_PASSWORD_BCRYPT_COST = 12;
3
+ export interface DaemonAuthConfig {
4
+ password?: string;
5
+ }
6
+ export interface BearerAuthRejectContext {
7
+ path: string;
8
+ method: string;
9
+ hasToken: boolean;
10
+ }
11
+ interface BearerValidationInput {
12
+ password: string | undefined;
13
+ token: string | null;
14
+ }
15
+ export declare function isBearerTokenValid(input: BearerValidationInput): boolean;
16
+ export declare function isBearerTokenValidAsync(input: BearerValidationInput): Promise<boolean>;
17
+ export declare function isBearerTokenValidSync(input: BearerValidationInput): boolean;
18
+ export declare function hashDaemonPassword(password: string): string;
19
+ export declare function extractHttpBearerToken(value: string | undefined): string | null;
20
+ export declare function extractWsBearerProtocol(value: string | undefined): string | null;
21
+ export declare function extractWsBearerToken(protocol: string | null): string | null;
22
+ export declare function createRequireBearerMiddleware(auth: DaemonAuthConfig | undefined, onReject?: (context: BearerAuthRejectContext) => void): RequestHandler;
23
+ export declare function shouldBypassBearerAuth(method: string, path: string): boolean;
24
+ export {};
25
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/server/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAExE;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAS5F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAS5E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAS/E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAchF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAS3E;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,GACpD,cAAc,CA2BhB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAK5E"}
@@ -0,0 +1,93 @@
1
+ import { compare, compareSync, hashSync } from "bcryptjs";
2
+ export const DAEMON_PASSWORD_BCRYPT_COST = 12;
3
+ export function isBearerTokenValid(input) {
4
+ return isBearerTokenValidSync(input);
5
+ }
6
+ export async function isBearerTokenValidAsync(input) {
7
+ if (!input.password) {
8
+ return true;
9
+ }
10
+ if (input.token === null) {
11
+ return false;
12
+ }
13
+ return compare(input.token, input.password);
14
+ }
15
+ export function isBearerTokenValidSync(input) {
16
+ if (!input.password) {
17
+ return true;
18
+ }
19
+ if (input.token === null) {
20
+ return false;
21
+ }
22
+ return compareSync(input.token, input.password);
23
+ }
24
+ export function hashDaemonPassword(password) {
25
+ return hashSync(password, DAEMON_PASSWORD_BCRYPT_COST);
26
+ }
27
+ export function extractHttpBearerToken(value) {
28
+ if (!value) {
29
+ return null;
30
+ }
31
+ const [scheme, ...tokenParts] = value.trim().split(/\s+/);
32
+ if (scheme !== "Bearer" || tokenParts.length !== 1) {
33
+ return null;
34
+ }
35
+ return tokenParts[0] ?? null;
36
+ }
37
+ export function extractWsBearerProtocol(value) {
38
+ if (!value) {
39
+ return null;
40
+ }
41
+ for (const protocol of value.split(",")) {
42
+ const trimmed = protocol.trim();
43
+ const segments = trimmed.split(".");
44
+ if (segments[0] === "paseo" && segments[1] === "bearer" && segments.length >= 3) {
45
+ return trimmed;
46
+ }
47
+ }
48
+ return null;
49
+ }
50
+ export function extractWsBearerToken(protocol) {
51
+ if (!protocol) {
52
+ return null;
53
+ }
54
+ const segments = protocol.split(".");
55
+ if (segments[0] !== "paseo" || segments[1] !== "bearer" || segments.length < 3) {
56
+ return null;
57
+ }
58
+ return segments.slice(2).join(".");
59
+ }
60
+ export function createRequireBearerMiddleware(auth, onReject) {
61
+ const password = auth?.password;
62
+ return (req, res, next) => {
63
+ if (!password || shouldBypassBearerAuth(req.method, req.path)) {
64
+ next();
65
+ return;
66
+ }
67
+ void (async () => {
68
+ try {
69
+ const token = extractHttpBearerToken(req.header("authorization"));
70
+ if (!(await isBearerTokenValidAsync({ password, token }))) {
71
+ onReject?.({
72
+ path: req.path,
73
+ method: req.method,
74
+ hasToken: token !== null,
75
+ });
76
+ res.status(401).json({ error: "Unauthorized" });
77
+ return;
78
+ }
79
+ next();
80
+ }
81
+ catch (error) {
82
+ next(error);
83
+ }
84
+ })();
85
+ };
86
+ }
87
+ export function shouldBypassBearerAuth(method, path) {
88
+ if (method === "OPTIONS") {
89
+ return true;
90
+ }
91
+ return path === "/api/health";
92
+ }
93
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/server/auth.ts"],"names":[],"mappings":"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"}
@@ -16,12 +16,13 @@ import type { LocalSpeechProviderConfig } from "./speech/providers/local/config.
16
16
  import type { RequestedSpeechProviders } from "./speech/speech-types.js";
17
17
  import { AgentManager } from "./agent/agent-manager.js";
18
18
  import { AgentStorage } from "./agent/agent-storage.js";
19
- import { type TerminalManager } from "../terminal/terminal-manager.js";
19
+ import type { TerminalManager } from "../terminal/terminal-manager.js";
20
20
  import type { AgentClient, AgentProvider } from "./agent/agent-sdk-types.js";
21
21
  import type { AgentProviderRuntimeSettingsMap, ProviderOverride } from "./agent/provider-launch-config.js";
22
22
  import { ScriptRouteStore } from "./script-proxy.js";
23
23
  import { WorkspaceScriptRuntimeStore } from "./workspace-script-runtime-store.js";
24
24
  import { type HostnamesConfig } from "./hostnames.js";
25
+ import { type DaemonAuthConfig } from "./auth.js";
25
26
  export type PaseoOpenAIConfig = OpenAiSpeechProviderConfig;
26
27
  export type PaseoLocalSpeechConfig = LocalSpeechProviderConfig;
27
28
  export interface PaseoSpeechConfig {
@@ -55,6 +56,7 @@ export interface PaseoDaemonConfig {
55
56
  relayEndpoint?: string;
56
57
  relayPublicEndpoint?: string;
57
58
  appBaseUrl?: string;
59
+ auth?: DaemonAuthConfig;
58
60
  openai?: PaseoOpenAIConfig;
59
61
  speech?: PaseoSpeechConfig;
60
62
  voiceLlmProvider?: AgentProvider | null;
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/server/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/server/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -72,7 +72,8 @@ function formatListenTarget(listenTarget) {
72
72
  }
73
73
  import { VoiceAssistantWebSocketServer } from "./websocket-server.js";
74
74
  import { createGitHubService } from "../services/github-service.js";
75
- import { createPaseoWorktree } from "./paseo-worktree-service.js";
75
+ import { createPaseoWorktree as createRegisteredPaseoWorktree } from "./paseo-worktree-service.js";
76
+ import { createPaseoWorktreeWorkflow } from "./worktree-session.js";
76
77
  import { createWorktreeCoreDeps } from "./worktree-core.js";
77
78
  import { DownloadTokenStore } from "./file-download/token-store.js";
78
79
  import { createSpeechService } from "./speech/speech-runtime.js";
@@ -91,7 +92,7 @@ import { DaemonConfigStore } from "./daemon-config-store.js";
91
92
  import { WorkspaceGitServiceImpl } from "./workspace-git-service.js";
92
93
  import { archivePersistedWorkspaceRecord } from "./workspace-archive-service.js";
93
94
  import { wrapSessionMessage } from "./messages.js";
94
- import { createTerminalManager } from "../terminal/terminal-manager.js";
95
+ import { createConfiguredTerminalManager } from "../terminal/terminal-manager-factory.js";
95
96
  import { createConnectionOfferV2, encodeOfferToFragmentUrl } from "./connection-offer.js";
96
97
  import { loadOrCreateDaemonKeyPair } from "./daemon-keypair.js";
97
98
  import { startRelayTransport } from "./relay-transport.js";
@@ -102,6 +103,7 @@ import { ScriptHealthMonitor } from "./script-health-monitor.js";
102
103
  import { createScriptStatusEmitter } from "./script-status-projection.js";
103
104
  import { WorkspaceScriptRuntimeStore } from "./workspace-script-runtime-store.js";
104
105
  import { isHostnameAllowed } from "./hostnames.js";
106
+ import { createRequireBearerMiddleware } from "./auth.js";
105
107
  function formatHostForHttpUrl(host) {
106
108
  return host.includes(":") && !host.startsWith("[") ? `[${host}]` : host;
107
109
  }
@@ -150,6 +152,7 @@ export async function createPaseoDaemon(config, rootLogger) {
150
152
  runtimeStore: scriptRuntimeStore,
151
153
  daemonPort: () => (boundListenTarget?.type === "tcp" ? boundListenTarget.port : null),
152
154
  resolveWorkspaceDirectory: async (workspaceId) => (await workspaceRegistry?.get(workspaceId))?.cwd ?? null,
155
+ logger,
153
156
  }),
154
157
  });
155
158
  const handleBranchChange = createBranchChangeRouteHandler({
@@ -171,11 +174,6 @@ export async function createPaseoDaemon(config, rootLogger) {
171
174
  next();
172
175
  });
173
176
  }
174
- // Script proxy — intercepts requests for registered *.localhost hostnames
175
- // and forwards them to the corresponding local script port. Placed after
176
- // the host allowlist (*.localhost is already allowed) but before CORS and
177
- // the rest of the routes so proxied requests skip unnecessary middleware.
178
- app.use(createScriptProxyMiddleware({ routeStore: scriptRouteStore, logger }));
179
177
  // CORS - allow same-origin + configured origins
180
178
  const allowedOrigins = new Set([
181
179
  ...config.corsAllowedOrigins,
@@ -204,6 +202,13 @@ export async function createPaseoDaemon(config, rootLogger) {
204
202
  }
205
203
  next();
206
204
  });
205
+ app.use(createRequireBearerMiddleware(config.auth, (context) => {
206
+ logger.warn(context, "Rejected HTTP request with invalid daemon password");
207
+ }));
208
+ // Script proxy — intercepts requests for registered *.localhost hostnames
209
+ // and forwards them to the corresponding local script port. Placed after
210
+ // host/CORS/auth checks but before the rest of the routes.
211
+ app.use(createScriptProxyMiddleware({ routeStore: scriptRouteStore, logger }));
207
212
  // Serve static files from public directory
208
213
  app.use("/public", express.static(staticDir));
209
214
  // Middleware
@@ -283,7 +288,7 @@ export async function createPaseoDaemon(config, rootLogger) {
283
288
  paseoHome: config.paseoHome,
284
289
  logger,
285
290
  });
286
- const terminalManager = createTerminalManager();
291
+ const terminalManager = createConfiguredTerminalManager();
287
292
  const github = createGitHubService();
288
293
  const workspaceGitService = new WorkspaceGitServiceImpl({
289
294
  logger,
@@ -363,9 +368,21 @@ export async function createPaseoDaemon(config, rootLogger) {
363
368
  projectRegistry,
364
369
  });
365
370
  };
366
- const emitWorkspaceUpdatesForMcpArchive = async (cwds) => {
367
- const cwdList = Array.from(cwds);
368
- await Promise.all((wsServer?.listActiveSessions() ?? []).map((session) => session.emitWorkspaceUpdatesForExternalCwds(cwdList)));
371
+ const markWorkspaceArchivingForMcpArchive = (workspaceIds, archivingAt) => {
372
+ const workspaceIdList = Array.from(workspaceIds);
373
+ for (const session of wsServer?.listActiveSessions() ?? []) {
374
+ session.markWorkspaceArchivingForExternalMutation(workspaceIdList, archivingAt);
375
+ }
376
+ };
377
+ const clearWorkspaceArchivingForMcpArchive = (workspaceIds) => {
378
+ const workspaceIdList = Array.from(workspaceIds);
379
+ for (const session of wsServer?.listActiveSessions() ?? []) {
380
+ session.clearWorkspaceArchivingForExternalMutation(workspaceIdList);
381
+ }
382
+ };
383
+ const emitWorkspaceUpdatesForMcpArchive = async (workspaceIds) => {
384
+ const workspaceIdList = Array.from(workspaceIds);
385
+ await Promise.all((wsServer?.listActiveSessions() ?? []).map((session) => session.emitWorkspaceUpdatesForExternalWorkspaceIds(workspaceIdList)));
369
386
  };
370
387
  const emitMcpArchiveSessionMessage = (message) => {
371
388
  wsServer?.broadcast(wrapSessionMessage(message));
@@ -381,25 +398,49 @@ export async function createPaseoDaemon(config, rootLogger) {
381
398
  github,
382
399
  workspaceGitService,
383
400
  archiveWorkspaceRecord: archiveWorkspaceRecordForMcp,
384
- emitWorkspaceUpdatesForCwds: emitWorkspaceUpdatesForMcpArchive,
401
+ emitWorkspaceUpdatesForWorkspaceIds: emitWorkspaceUpdatesForMcpArchive,
402
+ markWorkspaceArchiving: markWorkspaceArchivingForMcpArchive,
403
+ clearWorkspaceArchiving: clearWorkspaceArchivingForMcpArchive,
385
404
  emitSessionMessage: emitMcpArchiveSessionMessage,
386
405
  createPaseoWorktree: async (input, serviceOptions) => {
387
- const coreDeps = createWorktreeCoreDeps(github);
388
- const result = await createPaseoWorktree(input, {
389
- ...coreDeps,
390
- ...(serviceOptions?.resolveDefaultBranch
391
- ? {
392
- resolveDefaultBranch: serviceOptions.resolveDefaultBranch,
393
- }
394
- : {}),
395
- projectRegistry,
396
- workspaceRegistry,
397
- workspaceGitService,
398
- });
399
- await Promise.all(wsServer
400
- ?.listActiveSessions()
401
- .map((session) => session.warmWorkspaceGitDataForWorkspace(result.workspace)) ?? []);
402
- return result;
406
+ return createPaseoWorktreeWorkflow({
407
+ paseoHome: config.paseoHome,
408
+ createPaseoWorktree: async (workflowInput, workflowOptions) => {
409
+ const coreDeps = createWorktreeCoreDeps(github);
410
+ return createRegisteredPaseoWorktree(workflowInput, {
411
+ ...coreDeps,
412
+ ...(workflowOptions?.resolveDefaultBranch
413
+ ? {
414
+ resolveDefaultBranch: workflowOptions.resolveDefaultBranch,
415
+ }
416
+ : {}),
417
+ projectRegistry,
418
+ workspaceRegistry,
419
+ workspaceGitService,
420
+ });
421
+ },
422
+ warmWorkspaceGitData: async (workspace) => {
423
+ await Promise.all(wsServer
424
+ ?.listActiveSessions()
425
+ .map((session) => session.warmWorkspaceGitDataForWorkspace(workspace)) ?? []);
426
+ },
427
+ emitWorkspaceUpdateForCwd: async (cwd, emitOptions) => {
428
+ await Promise.all(wsServer
429
+ ?.listActiveSessions()
430
+ .map((session) => session.emitWorkspaceUpdatesForExternalCwds([cwd])) ?? []);
431
+ void emitOptions;
432
+ },
433
+ cacheWorkspaceSetupSnapshot: () => { },
434
+ emit: emitMcpArchiveSessionMessage,
435
+ sessionLogger: logger,
436
+ terminalManager,
437
+ archiveWorkspaceRecord: archiveWorkspaceRecordForMcp,
438
+ scriptRouteStore,
439
+ scriptRuntimeStore,
440
+ getDaemonTcpPort: () => boundListenTarget?.type === "tcp" ? boundListenTarget.port : null,
441
+ getDaemonTcpHost: () => boundListenTarget?.type === "tcp" ? boundListenTarget.host : null,
442
+ onScriptsChanged: null,
443
+ }, input, serviceOptions);
403
444
  },
404
445
  paseoHome: config.paseoHome,
405
446
  callerAgentId,
@@ -540,13 +581,21 @@ export async function createPaseoDaemon(config, rootLogger) {
540
581
  logger.info({
541
582
  host: boundListenTarget.host,
542
583
  port: boundListenTarget.port,
584
+ authRequired: !!config.auth?.password,
543
585
  elapsed: elapsed(),
544
586
  }, `Server listening on http://${boundListenTarget.host}:${boundListenTarget.port}`);
545
587
  }
546
588
  else {
547
- logger.info({ path: boundListenTarget.path, elapsed: elapsed() }, `Server listening on ${boundListenTarget.path}`);
589
+ logger.info({
590
+ path: boundListenTarget.path,
591
+ authRequired: !!config.auth?.password,
592
+ elapsed: elapsed(),
593
+ }, `Server listening on ${boundListenTarget.path}`);
594
+ }
595
+ if (config.auth?.password) {
596
+ logger.info("Daemon password authentication enabled");
548
597
  }
549
- wsServer = new VoiceAssistantWebSocketServer(httpServer, logger, serverId, agentManager, agentStorage, downloadTokenStore, config.paseoHome, daemonConfigStore, mcpBaseUrl, { allowedOrigins, hostnames: configuredHostnames }, speechService, terminalManager, {
598
+ wsServer = new VoiceAssistantWebSocketServer(httpServer, logger, serverId, agentManager, agentStorage, downloadTokenStore, config.paseoHome, daemonConfigStore, mcpBaseUrl, { allowedOrigins, hostnames: configuredHostnames }, config.auth, speechService, terminalManager, {
550
599
  finalTimeoutMs: config.dictationFinalTimeoutMs,
551
600
  }, config.agentProviderSettings, config.providerOverrides, config.isDev === true, daemonVersion, (intent) => {
552
601
  try {
@@ -622,6 +671,14 @@ export async function createPaseoDaemon(config, rootLogger) {
622
671
  if (wsServer) {
623
672
  await wsServer.close();
624
673
  }
674
+ // Force-drop remaining sockets so httpServer.close() resolves promptly.
675
+ // We've already closed wsServer (which sent ws-layer close frames) and
676
+ // stopped every other service, so anything still attached is a TCP
677
+ // socket whose higher-level shutdown hasn't fully released it (e.g.
678
+ // upgraded WS sockets in the closing handshake, or HTTP keep-alive
679
+ // sockets in CLOSE_WAIT). closeIdleConnections() does not catch
680
+ // upgraded sockets, so we use closeAllConnections() here.
681
+ httpServer.closeAllConnections();
625
682
  await new Promise((resolve) => {
626
683
  httpServer.close(() => resolve());
627
684
  });