@getpaseo/server 0.1.58 → 0.1.60

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 (276) hide show
  1. package/dist/scripts/dev-runner.js +26 -7
  2. package/dist/scripts/dev-runner.js.map +1 -1
  3. package/dist/server/client/daemon-client-runtime-metrics.d.ts +39 -0
  4. package/dist/server/client/daemon-client-runtime-metrics.d.ts.map +1 -0
  5. package/dist/server/client/daemon-client-runtime-metrics.js +173 -0
  6. package/dist/server/client/daemon-client-runtime-metrics.js.map +1 -0
  7. package/dist/server/client/daemon-client.d.ts +58 -9
  8. package/dist/server/client/daemon-client.d.ts.map +1 -1
  9. package/dist/server/client/daemon-client.js +151 -10
  10. package/dist/server/client/daemon-client.js.map +1 -1
  11. package/dist/server/server/agent/agent-manager.d.ts +55 -48
  12. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  13. package/dist/server/server/agent/agent-manager.js +541 -331
  14. package/dist/server/server/agent/agent-manager.js.map +1 -1
  15. package/dist/server/server/agent/agent-metadata-generator.d.ts +3 -2
  16. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  17. package/dist/server/server/agent/agent-metadata-generator.js +31 -16
  18. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  19. package/dist/server/server/agent/agent-projections.d.ts +2 -1
  20. package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
  21. package/dist/server/server/agent/agent-projections.js +29 -1
  22. package/dist/server/server/agent/agent-projections.js.map +1 -1
  23. package/dist/server/server/agent/agent-sdk-types.d.ts +9 -5
  24. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  25. package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
  26. package/dist/server/server/agent/agent-storage.d.ts +76 -69
  27. package/dist/server/server/agent/agent-storage.d.ts.map +1 -1
  28. package/dist/server/server/agent/agent-storage.js +13 -6
  29. package/dist/server/server/agent/agent-storage.js.map +1 -1
  30. package/dist/server/server/agent/agent-stream-coalescer.d.ts +41 -0
  31. package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -0
  32. package/dist/server/server/agent/agent-stream-coalescer.js +166 -0
  33. package/dist/server/server/agent/agent-stream-coalescer.js.map +1 -0
  34. package/dist/server/server/agent/agent-timeline-store-types.d.ts +54 -0
  35. package/dist/server/server/agent/agent-timeline-store-types.d.ts.map +1 -0
  36. package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
  37. package/dist/server/server/agent/agent-timeline-store-types.js.map +1 -0
  38. package/dist/server/server/agent/agent-timeline-store.d.ts +32 -0
  39. package/dist/server/server/agent/agent-timeline-store.d.ts.map +1 -0
  40. package/dist/server/server/agent/agent-timeline-store.js +245 -0
  41. package/dist/server/server/agent/agent-timeline-store.js.map +1 -0
  42. package/dist/server/server/agent/mcp-server.d.ts +12 -1
  43. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  44. package/dist/server/server/agent/mcp-server.js +276 -65
  45. package/dist/server/server/agent/mcp-server.js.map +1 -1
  46. package/dist/server/server/agent/mcp-shared.d.ts +196 -152
  47. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
  48. package/dist/server/server/agent/mcp-shared.js +40 -42
  49. package/dist/server/server/agent/mcp-shared.js.map +1 -1
  50. package/dist/server/server/agent/model-resolver.d.ts.map +1 -1
  51. package/dist/server/server/agent/model-resolver.js +3 -1
  52. package/dist/server/server/agent/model-resolver.js.map +1 -1
  53. package/dist/server/server/agent/prompt-attachments.d.ts +6 -0
  54. package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -0
  55. package/dist/server/server/agent/prompt-attachments.js +31 -0
  56. package/dist/server/server/agent/prompt-attachments.js.map +1 -0
  57. package/dist/server/server/agent/provider-launch-config.d.ts +12 -10
  58. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  59. package/dist/server/server/agent/provider-launch-config.js +34 -0
  60. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  61. package/dist/server/server/agent/provider-manifest.d.ts +1 -0
  62. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  63. package/dist/server/server/agent/provider-manifest.js +22 -1
  64. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  65. package/dist/server/server/agent/provider-registry.d.ts +5 -2
  66. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  67. package/dist/server/server/agent/provider-registry.js +20 -9
  68. package/dist/server/server/agent/provider-registry.js.map +1 -1
  69. package/dist/server/server/agent/provider-snapshot-manager.d.ts +17 -5
  70. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
  71. package/dist/server/server/agent/provider-snapshot-manager.js +150 -61
  72. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
  73. package/dist/server/server/agent/providers/acp-agent.d.ts +8 -4
  74. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  75. package/dist/server/server/agent/providers/acp-agent.js +73 -8
  76. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  77. package/dist/server/server/agent/providers/claude/claude-models.d.ts.map +1 -1
  78. package/dist/server/server/agent/providers/claude/claude-models.js +21 -0
  79. package/dist/server/server/agent/providers/claude/claude-models.js.map +1 -1
  80. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +2 -2
  81. package/dist/server/server/agent/providers/claude-agent.d.ts +1 -1
  82. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  83. package/dist/server/server/agent/providers/claude-agent.js +15 -8
  84. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  85. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +37 -4
  86. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  87. package/dist/server/server/agent/providers/codex-app-server-agent.js +61 -31
  88. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  89. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -1
  90. package/dist/server/server/agent/providers/copilot-acp-agent.js +3 -2
  91. package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -1
  92. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +64 -0
  93. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -0
  94. package/dist/server/server/agent/providers/mock-load-test-agent.js +585 -0
  95. package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -0
  96. package/dist/server/server/agent/providers/opencode-agent.d.ts +19 -4
  97. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  98. package/dist/server/server/agent/providers/opencode-agent.js +227 -118
  99. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  100. package/dist/server/server/agent/providers/pi-direct-agent.d.ts +69 -0
  101. package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -0
  102. package/dist/server/server/agent/providers/pi-direct-agent.js +1177 -0
  103. package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -0
  104. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +7 -4
  105. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  106. package/dist/server/server/agent-attention-policy.d.ts +13 -13
  107. package/dist/server/server/agent-attention-policy.d.ts.map +1 -1
  108. package/dist/server/server/agent-attention-policy.js +20 -36
  109. package/dist/server/server/agent-attention-policy.js.map +1 -1
  110. package/dist/server/server/bootstrap.d.ts +6 -0
  111. package/dist/server/server/bootstrap.d.ts.map +1 -1
  112. package/dist/server/server/bootstrap.js +113 -11
  113. package/dist/server/server/bootstrap.js.map +1 -1
  114. package/dist/server/server/chat/chat-rpc-schemas.d.ts +44 -44
  115. package/dist/server/server/chat/chat-types.d.ts +6 -6
  116. package/dist/server/server/checkout-diff-manager.d.ts +0 -1
  117. package/dist/server/server/checkout-diff-manager.d.ts.map +1 -1
  118. package/dist/server/server/checkout-diff-manager.js +6 -4
  119. package/dist/server/server/checkout-diff-manager.js.map +1 -1
  120. package/dist/server/server/config.d.ts.map +1 -1
  121. package/dist/server/server/config.js +1 -0
  122. package/dist/server/server/config.js.map +1 -1
  123. package/dist/server/server/file-explorer/service.d.ts.map +1 -1
  124. package/dist/server/server/file-explorer/service.js +2 -1
  125. package/dist/server/server/file-explorer/service.js.map +1 -1
  126. package/dist/server/server/loop/rpc-schemas.d.ts +392 -392
  127. package/dist/server/server/loop-service.d.ts +52 -52
  128. package/dist/server/server/paseo-worktree-archive-service.d.ts +41 -0
  129. package/dist/server/server/paseo-worktree-archive-service.d.ts.map +1 -0
  130. package/dist/server/server/paseo-worktree-archive-service.js +137 -0
  131. package/dist/server/server/paseo-worktree-archive-service.js.map +1 -0
  132. package/dist/server/server/paseo-worktree-service.d.ts +24 -0
  133. package/dist/server/server/paseo-worktree-service.d.ts.map +1 -0
  134. package/dist/server/server/paseo-worktree-service.js +94 -0
  135. package/dist/server/server/paseo-worktree-service.js.map +1 -0
  136. package/dist/server/server/path-utils.d.ts +1 -0
  137. package/dist/server/server/path-utils.d.ts.map +1 -1
  138. package/dist/server/server/path-utils.js +9 -0
  139. package/dist/server/server/path-utils.js.map +1 -1
  140. package/dist/server/server/persisted-config.d.ts +73 -73
  141. package/dist/server/server/persistence-hooks.d.ts.map +1 -1
  142. package/dist/server/server/persistence-hooks.js +3 -0
  143. package/dist/server/server/persistence-hooks.js.map +1 -1
  144. package/dist/server/server/resolve-worktree-creation-intent.d.ts +30 -0
  145. package/dist/server/server/resolve-worktree-creation-intent.d.ts.map +1 -0
  146. package/dist/server/server/resolve-worktree-creation-intent.js +163 -0
  147. package/dist/server/server/resolve-worktree-creation-intent.js.map +1 -0
  148. package/dist/server/server/schedule/rpc-schemas.d.ts +192 -192
  149. package/dist/server/server/schedule/service.d.ts +1 -1
  150. package/dist/server/server/schedule/service.d.ts.map +1 -1
  151. package/dist/server/server/schedule/types.d.ts +44 -44
  152. package/dist/server/server/script-health-monitor.d.ts +39 -0
  153. package/dist/server/server/script-health-monitor.d.ts.map +1 -0
  154. package/dist/server/server/script-health-monitor.js +158 -0
  155. package/dist/server/server/script-health-monitor.js.map +1 -0
  156. package/dist/server/server/script-proxy.d.ts +40 -0
  157. package/dist/server/server/script-proxy.d.ts.map +1 -0
  158. package/dist/server/server/script-proxy.js +245 -0
  159. package/dist/server/server/script-proxy.js.map +1 -0
  160. package/dist/server/server/script-route-branch-handler.d.ts +10 -0
  161. package/dist/server/server/script-route-branch-handler.d.ts.map +1 -0
  162. package/dist/server/server/script-route-branch-handler.js +45 -0
  163. package/dist/server/server/script-route-branch-handler.js.map +1 -0
  164. package/dist/server/server/script-status-projection.d.ts +29 -0
  165. package/dist/server/server/script-status-projection.d.ts.map +1 -0
  166. package/dist/server/server/script-status-projection.js +133 -0
  167. package/dist/server/server/script-status-projection.js.map +1 -0
  168. package/dist/server/server/session.d.ts +77 -13
  169. package/dist/server/server/session.d.ts.map +1 -1
  170. package/dist/server/server/session.js +1290 -548
  171. package/dist/server/server/session.js.map +1 -1
  172. package/dist/server/server/websocket-server.d.ts +27 -3
  173. package/dist/server/server/websocket-server.d.ts.map +1 -1
  174. package/dist/server/server/websocket-server.js +112 -29
  175. package/dist/server/server/websocket-server.js.map +1 -1
  176. package/dist/server/server/workspace-archive-service.d.ts +8 -0
  177. package/dist/server/server/workspace-archive-service.d.ts.map +1 -0
  178. package/dist/server/server/workspace-archive-service.js +17 -0
  179. package/dist/server/server/workspace-archive-service.js.map +1 -0
  180. package/dist/server/server/workspace-git-metadata.d.ts +24 -0
  181. package/dist/server/server/workspace-git-metadata.d.ts.map +1 -0
  182. package/dist/server/server/workspace-git-metadata.js +78 -0
  183. package/dist/server/server/workspace-git-metadata.js.map +1 -0
  184. package/dist/server/server/workspace-git-service.d.ts +104 -5
  185. package/dist/server/server/workspace-git-service.d.ts.map +1 -1
  186. package/dist/server/server/workspace-git-service.js +442 -56
  187. package/dist/server/server/workspace-git-service.js.map +1 -1
  188. package/dist/server/server/workspace-reconciliation-service.d.ts +54 -0
  189. package/dist/server/server/workspace-reconciliation-service.d.ts.map +1 -0
  190. package/dist/server/server/workspace-reconciliation-service.js +176 -0
  191. package/dist/server/server/workspace-reconciliation-service.js.map +1 -0
  192. package/dist/server/server/workspace-registry-bootstrap.d.ts.map +1 -1
  193. package/dist/server/server/workspace-registry-bootstrap.js +4 -3
  194. package/dist/server/server/workspace-registry-bootstrap.js.map +1 -1
  195. package/dist/server/server/workspace-registry.d.ts +8 -8
  196. package/dist/server/server/workspace-registry.test-helpers.d.ts +37 -0
  197. package/dist/server/server/workspace-registry.test-helpers.d.ts.map +1 -0
  198. package/dist/server/server/workspace-registry.test-helpers.js +121 -0
  199. package/dist/server/server/workspace-registry.test-helpers.js.map +1 -0
  200. package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
  201. package/dist/server/server/workspace-script-runtime-store.d.ts.map +1 -0
  202. package/dist/server/server/workspace-script-runtime-store.js +78 -0
  203. package/dist/server/server/workspace-script-runtime-store.js.map +1 -0
  204. package/dist/server/server/workspace-service-env.d.ts +17 -0
  205. package/dist/server/server/workspace-service-env.d.ts.map +1 -0
  206. package/dist/server/server/workspace-service-env.js +80 -0
  207. package/dist/server/server/workspace-service-env.js.map +1 -0
  208. package/dist/server/server/workspace-service-port-registry.d.ts +19 -0
  209. package/dist/server/server/workspace-service-port-registry.d.ts.map +1 -0
  210. package/dist/server/server/workspace-service-port-registry.js +59 -0
  211. package/dist/server/server/workspace-service-port-registry.js.map +1 -0
  212. package/dist/server/server/worktree-bootstrap.d.ts +55 -10
  213. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -1
  214. package/dist/server/server/worktree-bootstrap.js +290 -112
  215. package/dist/server/server/worktree-bootstrap.js.map +1 -1
  216. package/dist/server/server/worktree-core.d.ts +25 -0
  217. package/dist/server/server/worktree-core.d.ts.map +1 -0
  218. package/dist/server/server/worktree-core.js +75 -0
  219. package/dist/server/server/worktree-core.js.map +1 -0
  220. package/dist/server/server/worktree-errors.d.ts +12 -0
  221. package/dist/server/server/worktree-errors.d.ts.map +1 -0
  222. package/dist/server/server/worktree-errors.js +31 -0
  223. package/dist/server/server/worktree-errors.js.map +1 -0
  224. package/dist/server/server/worktree-session.d.ts +56 -70
  225. package/dist/server/server/worktree-session.d.ts.map +1 -1
  226. package/dist/server/server/worktree-session.js +176 -251
  227. package/dist/server/server/worktree-session.js.map +1 -1
  228. package/dist/server/services/github-service.d.ts +225 -0
  229. package/dist/server/services/github-service.d.ts.map +1 -0
  230. package/dist/server/services/github-service.js +1381 -0
  231. package/dist/server/services/github-service.js.map +1 -0
  232. package/dist/server/shared/messages.d.ts +29408 -12268
  233. package/dist/server/shared/messages.d.ts.map +1 -1
  234. package/dist/server/shared/messages.js +391 -65
  235. package/dist/server/shared/messages.js.map +1 -1
  236. package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
  237. package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  238. package/dist/server/terminal/terminal-manager.d.ts +9 -0
  239. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  240. package/dist/server/terminal/terminal-manager.js +27 -0
  241. package/dist/server/terminal/terminal-manager.js.map +1 -1
  242. package/dist/server/terminal/terminal-output-coalescer.d.ts +30 -0
  243. package/dist/server/terminal/terminal-output-coalescer.d.ts.map +1 -0
  244. package/dist/server/terminal/terminal-output-coalescer.js +55 -0
  245. package/dist/server/terminal/terminal-output-coalescer.js.map +1 -0
  246. package/dist/server/terminal/terminal.d.ts +32 -1
  247. package/dist/server/terminal/terminal.d.ts.map +1 -1
  248. package/dist/server/terminal/terminal.js +397 -17
  249. package/dist/server/terminal/terminal.js.map +1 -1
  250. package/dist/server/utils/checkout-git.d.ts +63 -10
  251. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  252. package/dist/server/utils/checkout-git.js +321 -229
  253. package/dist/server/utils/checkout-git.js.map +1 -1
  254. package/dist/server/utils/promise-timeout.d.ts +9 -0
  255. package/dist/server/utils/promise-timeout.d.ts.map +1 -0
  256. package/dist/server/utils/promise-timeout.js +25 -0
  257. package/dist/server/utils/promise-timeout.js.map +1 -0
  258. package/dist/server/utils/script-hostname.d.ts +8 -0
  259. package/dist/server/utils/script-hostname.d.ts.map +1 -0
  260. package/dist/server/utils/script-hostname.js +14 -0
  261. package/dist/server/utils/script-hostname.js.map +1 -0
  262. package/dist/server/utils/string-command-shell.d.ts +10 -0
  263. package/dist/server/utils/string-command-shell.d.ts.map +1 -0
  264. package/dist/server/utils/string-command-shell.js +21 -0
  265. package/dist/server/utils/string-command-shell.js.map +1 -0
  266. package/dist/server/utils/worktree.d.ts +54 -7
  267. package/dist/server/utils/worktree.d.ts.map +1 -1
  268. package/dist/server/utils/worktree.js +434 -129
  269. package/dist/server/utils/worktree.js.map +1 -1
  270. package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
  271. package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  272. package/package.json +11 -14
  273. package/dist/server/server/agent/providers/pi-acp-agent.d.ts +0 -28
  274. package/dist/server/server/agent/providers/pi-acp-agent.d.ts.map +0 -1
  275. package/dist/server/server/agent/providers/pi-acp-agent.js +0 -302
  276. package/dist/server/server/agent/providers/pi-acp-agent.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"copilot-acp-agent.js","sourceRoot":"","sources":["../../../../../src/server/agent/providers/copilot-acp-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copilot-acp-agent.js","sourceRoot":"","sources":["../../../../../src/server/agent/providers/copilot-acp-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { Logger } from "pino";
2
+ import type { AgentCapabilityFlags, AgentClient, AgentFeature, AgentLaunchContext, AgentMode, AgentModelDefinition, AgentPersistenceHandle, AgentPermissionRequest, AgentPermissionResponse, AgentPermissionResult, AgentPromptInput, AgentProvider, AgentRunOptions, AgentRunResult, AgentRuntimeInfo, AgentSession, AgentSessionConfig, AgentStreamEvent, ListModesOptions, ListModelsOptions, ListPersistedAgentsOptions, PersistedAgentDescriptor } from "../agent-sdk-types.js";
3
+ export declare const MOCK_LOAD_TEST_PROVIDER_ID = "mock";
4
+ export declare const MOCK_LOAD_TEST_DEFAULT_MODEL_ID = "five-minute-stream";
5
+ export declare class MockLoadTestAgentClient implements AgentClient {
6
+ private readonly logger?;
7
+ readonly provider: AgentProvider;
8
+ readonly capabilities: AgentCapabilityFlags;
9
+ constructor(logger?: Logger | undefined);
10
+ createSession(config: AgentSessionConfig, _launchContext?: AgentLaunchContext): Promise<AgentSession>;
11
+ resumeSession(handle: AgentPersistenceHandle, overrides?: Partial<AgentSessionConfig>, _launchContext?: AgentLaunchContext): Promise<AgentSession>;
12
+ listModels(_options: ListModelsOptions): Promise<AgentModelDefinition[]>;
13
+ listModes(_options: ListModesOptions): Promise<AgentMode[]>;
14
+ listPersistedAgents(_options?: ListPersistedAgentsOptions): Promise<PersistedAgentDescriptor[]>;
15
+ isAvailable(): Promise<boolean>;
16
+ getDiagnostic(): Promise<{
17
+ diagnostic: string;
18
+ }>;
19
+ }
20
+ export declare class MockLoadTestAgentSession implements AgentSession {
21
+ readonly provider: AgentProvider;
22
+ readonly capabilities: AgentCapabilityFlags;
23
+ readonly features: AgentFeature[];
24
+ readonly id: string;
25
+ private readonly listeners;
26
+ private readonly history;
27
+ private readonly logger?;
28
+ private activeTurn;
29
+ private modeId;
30
+ private modelId;
31
+ constructor(options: {
32
+ config: AgentSessionConfig;
33
+ sessionId: string;
34
+ logger?: Logger;
35
+ });
36
+ run(prompt: AgentPromptInput, options?: AgentRunOptions): Promise<AgentRunResult>;
37
+ startTurn(prompt: AgentPromptInput, _options?: AgentRunOptions): Promise<{
38
+ turnId: string;
39
+ }>;
40
+ subscribe(callback: (event: AgentStreamEvent) => void): () => void;
41
+ streamHistory(): AsyncGenerator<AgentStreamEvent>;
42
+ getRuntimeInfo(): Promise<AgentRuntimeInfo>;
43
+ getAvailableModes(): Promise<AgentMode[]>;
44
+ getCurrentMode(): Promise<string | null>;
45
+ setMode(modeId: string): Promise<void>;
46
+ getPendingPermissions(): AgentPermissionRequest[];
47
+ respondToPermission(_requestId: string, _response: AgentPermissionResponse): Promise<AgentPermissionResult | void>;
48
+ describePersistence(): AgentPersistenceHandle | null;
49
+ interrupt(): Promise<void>;
50
+ close(): Promise<void>;
51
+ setModel(modelId: string | null): Promise<void>;
52
+ private schedule;
53
+ private scheduleLargePayloadTurn;
54
+ private scheduleStressTurn;
55
+ private emitStressTurn;
56
+ private emitLargePayloadTurn;
57
+ private tick;
58
+ private emitIteration;
59
+ private finishTurn;
60
+ private emitTimeline;
61
+ private emit;
62
+ private clearTurnTimer;
63
+ }
64
+ //# sourceMappingURL=mock-load-test-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-load-test-agent.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/providers/mock-load-test-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,585 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { getAgentProviderDefinition } from "../provider-manifest.js";
3
+ export const MOCK_LOAD_TEST_PROVIDER_ID = "mock";
4
+ export const MOCK_LOAD_TEST_DEFAULT_MODEL_ID = "five-minute-stream";
5
+ const MOCK_LOAD_TEST_MODE_ID = "load-test";
6
+ const MOCK_LOAD_TEST_DURATION_MS = 5 * 60 * 1000;
7
+ const MOCK_LOAD_TEST_INTERVAL_MS = 1000;
8
+ const CAPABILITIES = {
9
+ supportsStreaming: true,
10
+ supportsSessionPersistence: true,
11
+ supportsDynamicModes: false,
12
+ supportsMcpServers: false,
13
+ supportsReasoningStream: true,
14
+ supportsToolInvocations: true,
15
+ };
16
+ const MODELS = [
17
+ {
18
+ provider: MOCK_LOAD_TEST_PROVIDER_ID,
19
+ id: MOCK_LOAD_TEST_DEFAULT_MODEL_ID,
20
+ label: "Five minute stream",
21
+ description: "Repeats synthetic markdown and tool-call timeline traffic for five minutes.",
22
+ isDefault: true,
23
+ metadata: {
24
+ durationMs: MOCK_LOAD_TEST_DURATION_MS,
25
+ intervalMs: MOCK_LOAD_TEST_INTERVAL_MS,
26
+ },
27
+ },
28
+ {
29
+ provider: MOCK_LOAD_TEST_PROVIDER_ID,
30
+ id: "one-minute-stream",
31
+ label: "One minute stream",
32
+ description: "Shorter synthetic load stream for quick manual checks.",
33
+ metadata: {
34
+ durationMs: 60000,
35
+ intervalMs: 500,
36
+ },
37
+ },
38
+ {
39
+ provider: MOCK_LOAD_TEST_PROVIDER_ID,
40
+ id: "ten-second-stream",
41
+ label: "Ten second stream",
42
+ description: "Fast synthetic load stream for tests and smoke checks.",
43
+ metadata: {
44
+ durationMs: 10000,
45
+ intervalMs: 250,
46
+ },
47
+ },
48
+ ];
49
+ function resolveModelProfile(modelId) {
50
+ const model = MODELS.find((entry) => entry.id === modelId) ?? MODELS[0];
51
+ const metadata = model.metadata ?? {};
52
+ return {
53
+ modelId: model.id,
54
+ durationMs: typeof metadata.durationMs === "number" ? metadata.durationMs : MOCK_LOAD_TEST_DURATION_MS,
55
+ intervalMs: typeof metadata.intervalMs === "number" ? metadata.intervalMs : MOCK_LOAD_TEST_INTERVAL_MS,
56
+ };
57
+ }
58
+ function promptToText(prompt) {
59
+ if (typeof prompt === "string") {
60
+ return prompt;
61
+ }
62
+ return prompt
63
+ .flatMap((block) => (block.type === "text" ? [block.text] : []))
64
+ .join("\n")
65
+ .trim();
66
+ }
67
+ function parseLargeAgentStreamPayloadPrompt(prompt) {
68
+ const text = promptToText(prompt);
69
+ const match = /emit\s+(\d+)\s+(?:byte\s+)?(?:large\s+)?(diff|file|image)\s+agent stream (?:update|payload)/i.exec(text);
70
+ if (!match) {
71
+ return null;
72
+ }
73
+ const bytes = Number(match[1]);
74
+ if (!Number.isFinite(bytes) || bytes <= 0) {
75
+ return null;
76
+ }
77
+ return {
78
+ bytes: Math.min(bytes, 1000000),
79
+ kind: match[2]?.toLowerCase(),
80
+ };
81
+ }
82
+ function parseAgentStreamStressPrompt(prompt) {
83
+ const text = promptToText(prompt);
84
+ const match = /emit\s+(\d+)\s+(coalesced\s+)?agent stream updates/i.exec(text);
85
+ if (!match) {
86
+ return null;
87
+ }
88
+ const count = Number(match[1]);
89
+ if (!Number.isFinite(count) || count <= 0) {
90
+ return null;
91
+ }
92
+ return {
93
+ count: Math.min(count, 5000),
94
+ coalesced: Boolean(match[2]),
95
+ };
96
+ }
97
+ function buildRepeatedPayload(bytes, prefix) {
98
+ const line = `${prefix} ${"x".repeat(96)}\n`;
99
+ let output = "";
100
+ while (output.length < bytes) {
101
+ output += line;
102
+ }
103
+ return output.slice(0, bytes);
104
+ }
105
+ function buildMarkdownDocument(iteration, prompt) {
106
+ const promptPreview = promptToText(prompt).slice(0, 160) || "No prompt text supplied.";
107
+ return [
108
+ `## Synthetic Load Cycle ${iteration}`,
109
+ "",
110
+ `Prompt preview: ${promptPreview}`,
111
+ "",
112
+ "| Signal | Value |",
113
+ "| --- | --- |",
114
+ `| cycle | ${iteration} |`,
115
+ "| stream | markdown + reasoning + tools |",
116
+ "",
117
+ "```ts",
118
+ `const cycle = ${iteration};`,
119
+ 'const purpose = "exercise app parsing and terminal rendering under load";',
120
+ "```",
121
+ "",
122
+ "This paragraph is intentionally stable so repeated cycles produce predictable UI pressure.",
123
+ "",
124
+ ].join("\n");
125
+ }
126
+ function splitText(text, chunks) {
127
+ const size = Math.ceil(text.length / chunks);
128
+ const parts = [];
129
+ for (let index = 0; index < text.length; index += size) {
130
+ parts.push(text.slice(index, index + size));
131
+ }
132
+ return parts;
133
+ }
134
+ function createToolCall(input) {
135
+ return {
136
+ type: "tool_call",
137
+ callId: `${input.turnId}:${input.name}:${input.iteration}`,
138
+ name: input.name,
139
+ status: input.status,
140
+ error: null,
141
+ detail: input.detail,
142
+ };
143
+ }
144
+ export class MockLoadTestAgentClient {
145
+ constructor(logger) {
146
+ this.logger = logger;
147
+ this.provider = MOCK_LOAD_TEST_PROVIDER_ID;
148
+ this.capabilities = CAPABILITIES;
149
+ }
150
+ async createSession(config, _launchContext) {
151
+ return new MockLoadTestAgentSession({
152
+ config,
153
+ sessionId: randomUUID(),
154
+ logger: this.logger,
155
+ });
156
+ }
157
+ async resumeSession(handle, overrides, _launchContext) {
158
+ const metadata = (handle.metadata ?? {});
159
+ return new MockLoadTestAgentSession({
160
+ config: {
161
+ cwd: String(metadata.cwd ?? overrides?.cwd ?? process.cwd()),
162
+ ...metadata,
163
+ ...overrides,
164
+ provider: MOCK_LOAD_TEST_PROVIDER_ID,
165
+ },
166
+ sessionId: handle.sessionId,
167
+ logger: this.logger,
168
+ });
169
+ }
170
+ async listModels(_options) {
171
+ return MODELS;
172
+ }
173
+ async listModes(_options) {
174
+ return getAgentProviderDefinition(MOCK_LOAD_TEST_PROVIDER_ID).modes;
175
+ }
176
+ async listPersistedAgents(_options) {
177
+ return [];
178
+ }
179
+ async isAvailable() {
180
+ return true;
181
+ }
182
+ async getDiagnostic() {
183
+ return {
184
+ diagnostic: "Mock load-test provider is available in development builds.",
185
+ };
186
+ }
187
+ }
188
+ export class MockLoadTestAgentSession {
189
+ constructor(options) {
190
+ this.provider = MOCK_LOAD_TEST_PROVIDER_ID;
191
+ this.capabilities = CAPABILITIES;
192
+ this.features = [];
193
+ this.listeners = new Set();
194
+ this.history = [];
195
+ this.activeTurn = null;
196
+ this.id = options.sessionId;
197
+ this.logger = options.logger;
198
+ this.modeId = options.config.modeId ?? MOCK_LOAD_TEST_MODE_ID;
199
+ this.modelId = options.config.model ?? MOCK_LOAD_TEST_DEFAULT_MODEL_ID;
200
+ }
201
+ async run(prompt, options) {
202
+ const { turnId } = await this.startTurn(prompt, options);
203
+ const turn = this.activeTurn;
204
+ if (!turn || turn.turnId !== turnId) {
205
+ throw new Error("Mock load-test turn did not start");
206
+ }
207
+ return turn.completed;
208
+ }
209
+ async startTurn(prompt, _options) {
210
+ if (this.activeTurn) {
211
+ throw new Error("Mock load-test provider already has an active turn");
212
+ }
213
+ const profile = resolveModelProfile(this.modelId);
214
+ const turnId = randomUUID();
215
+ let resolve;
216
+ const completed = new Promise((promiseResolve) => {
217
+ resolve = promiseResolve;
218
+ });
219
+ const turn = {
220
+ turnId,
221
+ prompt,
222
+ startedAt: Date.now(),
223
+ iteration: 0,
224
+ durationMs: profile.durationMs,
225
+ intervalMs: profile.intervalMs,
226
+ timer: null,
227
+ resolve,
228
+ completed,
229
+ };
230
+ this.activeTurn = turn;
231
+ const largePayload = parseLargeAgentStreamPayloadPrompt(prompt);
232
+ const stress = parseAgentStreamStressPrompt(prompt);
233
+ if (largePayload) {
234
+ this.scheduleLargePayloadTurn(turn, largePayload);
235
+ }
236
+ else if (stress) {
237
+ this.scheduleStressTurn(turn, stress);
238
+ }
239
+ else {
240
+ this.schedule(turn, 0);
241
+ }
242
+ return { turnId };
243
+ }
244
+ subscribe(callback) {
245
+ this.listeners.add(callback);
246
+ return () => {
247
+ this.listeners.delete(callback);
248
+ };
249
+ }
250
+ async *streamHistory() {
251
+ for (const event of this.history) {
252
+ yield event;
253
+ }
254
+ }
255
+ async getRuntimeInfo() {
256
+ return {
257
+ provider: this.provider,
258
+ sessionId: this.id,
259
+ model: this.modelId,
260
+ modeId: this.modeId,
261
+ };
262
+ }
263
+ async getAvailableModes() {
264
+ return getAgentProviderDefinition(MOCK_LOAD_TEST_PROVIDER_ID).modes;
265
+ }
266
+ async getCurrentMode() {
267
+ return this.modeId;
268
+ }
269
+ async setMode(modeId) {
270
+ this.modeId = modeId;
271
+ }
272
+ getPendingPermissions() {
273
+ return [];
274
+ }
275
+ async respondToPermission(_requestId, _response) {
276
+ return undefined;
277
+ }
278
+ describePersistence() {
279
+ return {
280
+ provider: this.provider,
281
+ sessionId: this.id,
282
+ metadata: {
283
+ model: this.modelId,
284
+ modeId: this.modeId,
285
+ },
286
+ };
287
+ }
288
+ async interrupt() {
289
+ const turn = this.activeTurn;
290
+ if (!turn) {
291
+ return;
292
+ }
293
+ this.clearTurnTimer(turn);
294
+ this.activeTurn = null;
295
+ const event = {
296
+ type: "turn_canceled",
297
+ provider: this.provider,
298
+ reason: "Interrupted",
299
+ turnId: turn.turnId,
300
+ };
301
+ this.emit(event);
302
+ turn.resolve({
303
+ sessionId: this.id,
304
+ finalText: "",
305
+ timeline: [],
306
+ canceled: true,
307
+ });
308
+ }
309
+ async close() {
310
+ await this.interrupt();
311
+ this.listeners.clear();
312
+ }
313
+ async setModel(modelId) {
314
+ this.modelId = modelId ?? MOCK_LOAD_TEST_DEFAULT_MODEL_ID;
315
+ }
316
+ schedule(turn, delayMs) {
317
+ turn.timer = setTimeout(() => {
318
+ this.tick(turn);
319
+ }, delayMs);
320
+ turn.timer.unref?.();
321
+ }
322
+ scheduleLargePayloadTurn(turn, largePayload) {
323
+ turn.timer = setTimeout(() => {
324
+ this.emitLargePayloadTurn(turn, largePayload);
325
+ }, 0);
326
+ turn.timer.unref?.();
327
+ }
328
+ scheduleStressTurn(turn, stress) {
329
+ turn.timer = setTimeout(() => {
330
+ this.emitStressTurn(turn, stress);
331
+ }, 0);
332
+ turn.timer.unref?.();
333
+ }
334
+ emitStressTurn(turn, stress) {
335
+ if (this.activeTurn !== turn) {
336
+ return;
337
+ }
338
+ this.clearTurnTimer(turn);
339
+ this.emit({
340
+ type: "turn_started",
341
+ provider: this.provider,
342
+ turnId: turn.turnId,
343
+ });
344
+ for (let index = 0; index < stress.count; index += 1) {
345
+ this.emitTimeline(turn.turnId, stress.coalesced
346
+ ? {
347
+ type: "assistant_message",
348
+ text: `stress-update-${index}`,
349
+ }
350
+ : {
351
+ type: "todo",
352
+ items: [{ text: `stress-update-${index}`, completed: index % 2 === 0 }],
353
+ });
354
+ }
355
+ this.activeTurn = null;
356
+ const usage = {
357
+ inputTokens: 1,
358
+ outputTokens: stress.count,
359
+ contextWindowUsedTokens: stress.count,
360
+ contextWindowMaxTokens: 128000,
361
+ };
362
+ this.emit({
363
+ type: "turn_completed",
364
+ provider: this.provider,
365
+ turnId: turn.turnId,
366
+ usage,
367
+ });
368
+ turn.resolve({
369
+ sessionId: this.id,
370
+ finalText: "Synthetic agent stream stress complete",
371
+ usage,
372
+ timeline: [],
373
+ canceled: false,
374
+ });
375
+ }
376
+ emitLargePayloadTurn(turn, largePayload) {
377
+ if (this.activeTurn !== turn) {
378
+ return;
379
+ }
380
+ this.clearTurnTimer(turn);
381
+ this.emit({
382
+ type: "turn_started",
383
+ provider: this.provider,
384
+ turnId: turn.turnId,
385
+ });
386
+ const payload = buildRepeatedPayload(largePayload.bytes, largePayload.kind);
387
+ if (largePayload.kind === "diff") {
388
+ this.emitTimeline(turn.turnId, createToolCall({
389
+ turnId: turn.turnId,
390
+ iteration: 0,
391
+ name: "edit",
392
+ status: "completed",
393
+ detail: {
394
+ type: "edit",
395
+ filePath: "src/large-diff.ts",
396
+ unifiedDiff: `diff --git a/src/large-diff.ts b/src/large-diff.ts\n${payload}`,
397
+ },
398
+ }));
399
+ }
400
+ else if (largePayload.kind === "file") {
401
+ this.emitTimeline(turn.turnId, createToolCall({
402
+ turnId: turn.turnId,
403
+ iteration: 0,
404
+ name: "read",
405
+ status: "completed",
406
+ detail: {
407
+ type: "read",
408
+ filePath: "src/large-file.txt",
409
+ content: payload,
410
+ },
411
+ }));
412
+ }
413
+ else {
414
+ this.emitTimeline(turn.turnId, {
415
+ type: "assistant_message",
416
+ text: `data:image/png;base64,${payload}`,
417
+ });
418
+ }
419
+ this.activeTurn = null;
420
+ const usage = {
421
+ inputTokens: 1,
422
+ outputTokens: largePayload.bytes,
423
+ contextWindowUsedTokens: largePayload.bytes,
424
+ contextWindowMaxTokens: 128000,
425
+ };
426
+ this.emit({
427
+ type: "turn_completed",
428
+ provider: this.provider,
429
+ turnId: turn.turnId,
430
+ usage,
431
+ });
432
+ turn.resolve({
433
+ sessionId: this.id,
434
+ finalText: "Synthetic large payload complete",
435
+ usage,
436
+ timeline: [],
437
+ canceled: false,
438
+ });
439
+ }
440
+ tick(turn) {
441
+ if (this.activeTurn !== turn) {
442
+ return;
443
+ }
444
+ this.clearTurnTimer(turn);
445
+ if (turn.iteration === 0) {
446
+ this.emit({
447
+ type: "turn_started",
448
+ provider: this.provider,
449
+ turnId: turn.turnId,
450
+ });
451
+ }
452
+ const elapsedMs = Date.now() - turn.startedAt;
453
+ if (elapsedMs >= turn.durationMs) {
454
+ this.finishTurn(turn);
455
+ return;
456
+ }
457
+ turn.iteration += 1;
458
+ this.emitIteration(turn);
459
+ this.schedule(turn, turn.intervalMs);
460
+ }
461
+ emitIteration(turn) {
462
+ const { turnId, iteration, prompt } = turn;
463
+ this.emitTimeline(turnId, {
464
+ type: "reasoning",
465
+ text: `Thinking chunk ${iteration}: simulate planning pressure before rendering markdown.\n`,
466
+ });
467
+ for (const chunk of splitText(buildMarkdownDocument(iteration, prompt), 4)) {
468
+ this.emitTimeline(turnId, {
469
+ type: "assistant_message",
470
+ text: chunk,
471
+ });
472
+ }
473
+ const editDetail = {
474
+ type: "edit",
475
+ filePath: `src/load-test-${iteration}.ts`,
476
+ oldString: "before",
477
+ newString: "after",
478
+ unifiedDiff: [
479
+ `diff --git a/src/load-test-${iteration}.ts b/src/load-test-${iteration}.ts`,
480
+ "@@",
481
+ "-before",
482
+ "+after",
483
+ ].join("\n"),
484
+ };
485
+ this.emitTimeline(turnId, createToolCall({
486
+ turnId,
487
+ iteration,
488
+ name: "edit",
489
+ status: "running",
490
+ detail: editDetail,
491
+ }));
492
+ this.emitTimeline(turnId, createToolCall({
493
+ turnId,
494
+ iteration,
495
+ name: "edit",
496
+ status: "completed",
497
+ detail: editDetail,
498
+ }));
499
+ const shellDetail = {
500
+ type: "shell",
501
+ command: `printf 'mock load cycle ${iteration}\\n'`,
502
+ cwd: "/tmp/paseo-mock-load",
503
+ output: `mock load cycle ${iteration}\n`,
504
+ exitCode: 0,
505
+ };
506
+ this.emitTimeline(turnId, createToolCall({
507
+ turnId,
508
+ iteration,
509
+ name: "bash",
510
+ status: "running",
511
+ detail: shellDetail,
512
+ }));
513
+ this.emitTimeline(turnId, createToolCall({
514
+ turnId,
515
+ iteration,
516
+ name: "bash",
517
+ status: "completed",
518
+ detail: shellDetail,
519
+ }));
520
+ this.emit({
521
+ type: "usage_updated",
522
+ provider: this.provider,
523
+ turnId,
524
+ usage: {
525
+ inputTokens: iteration * 32,
526
+ outputTokens: iteration * 128,
527
+ contextWindowUsedTokens: iteration * 160,
528
+ contextWindowMaxTokens: 128000,
529
+ },
530
+ });
531
+ }
532
+ finishTurn(turn) {
533
+ this.activeTurn = null;
534
+ this.emitTimeline(turn.turnId, {
535
+ type: "assistant_message",
536
+ text: "## Synthetic load test complete\n\nThe mock provider finished its foreground turn.\n",
537
+ });
538
+ const usage = {
539
+ inputTokens: turn.iteration * 32,
540
+ outputTokens: turn.iteration * 128,
541
+ contextWindowUsedTokens: turn.iteration * 160,
542
+ contextWindowMaxTokens: 128000,
543
+ };
544
+ this.emit({
545
+ type: "turn_completed",
546
+ provider: this.provider,
547
+ turnId: turn.turnId,
548
+ usage,
549
+ });
550
+ turn.resolve({
551
+ sessionId: this.id,
552
+ finalText: "Synthetic load test complete",
553
+ usage,
554
+ timeline: [],
555
+ canceled: false,
556
+ });
557
+ }
558
+ emitTimeline(turnId, item) {
559
+ this.emit({
560
+ type: "timeline",
561
+ provider: this.provider,
562
+ turnId,
563
+ item,
564
+ });
565
+ }
566
+ emit(event) {
567
+ this.history.push(event);
568
+ for (const listener of this.listeners) {
569
+ try {
570
+ listener(event);
571
+ }
572
+ catch (error) {
573
+ this.logger?.warn({ err: error }, "Mock load-test listener failed");
574
+ }
575
+ }
576
+ }
577
+ clearTurnTimer(turn) {
578
+ if (!turn.timer) {
579
+ return;
580
+ }
581
+ clearTimeout(turn.timer);
582
+ turn.timer = null;
583
+ }
584
+ }
585
+ //# sourceMappingURL=mock-load-test-agent.js.map