@getpaseo/server 0.1.77 → 0.1.79

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 (192) hide show
  1. package/dist/scripts/dev-runner.js +1 -13
  2. package/dist/scripts/dev-runner.js.map +1 -1
  3. package/dist/scripts/supervisor-entrypoint.js +17 -3
  4. package/dist/scripts/supervisor-entrypoint.js.map +1 -1
  5. package/dist/server/client/daemon-client.d.ts +34 -2
  6. package/dist/server/client/daemon-client.d.ts.map +1 -1
  7. package/dist/server/client/daemon-client.js +138 -1
  8. package/dist/server/client/daemon-client.js.map +1 -1
  9. package/dist/server/server/agent/agent-manager.d.ts +6 -0
  10. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  11. package/dist/server/server/agent/agent-manager.js +40 -5
  12. package/dist/server/server/agent/agent-manager.js.map +1 -1
  13. package/dist/server/server/agent/agent-metadata-generator.js +1 -1
  14. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  15. package/dist/server/server/agent/agent-sdk-types.d.ts +5 -0
  16. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  17. package/dist/server/server/agent/agent-storage.d.ts +3 -0
  18. package/dist/server/server/agent/agent-storage.d.ts.map +1 -1
  19. package/dist/server/server/agent/agent-storage.js +58 -22
  20. package/dist/server/server/agent/agent-storage.js.map +1 -1
  21. package/dist/server/server/agent/create-agent-lifecycle-dispatch.d.ts +51 -0
  22. package/dist/server/server/agent/create-agent-lifecycle-dispatch.d.ts.map +1 -0
  23. package/dist/server/server/agent/create-agent-lifecycle-dispatch.js +140 -0
  24. package/dist/server/server/agent/create-agent-lifecycle-dispatch.js.map +1 -0
  25. package/dist/server/server/agent/import-sessions.js +2 -2
  26. package/dist/server/server/agent/import-sessions.js.map +1 -1
  27. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  28. package/dist/server/server/agent/mcp-server.js +202 -99
  29. package/dist/server/server/agent/mcp-server.js.map +1 -1
  30. package/dist/server/server/agent/provider-registry.js +2 -2
  31. package/dist/server/server/agent/provider-registry.js.map +1 -1
  32. package/dist/server/server/agent/providers/acp-agent.d.ts +3 -0
  33. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  34. package/dist/server/server/agent/providers/acp-agent.js +44 -4
  35. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  36. package/dist/server/server/agent/providers/claude/agent.d.ts.map +1 -1
  37. package/dist/server/server/agent/providers/claude/agent.js +17 -9
  38. package/dist/server/server/agent/providers/claude/agent.js.map +1 -1
  39. package/dist/server/server/agent/providers/claude/project-dir.d.ts +5 -0
  40. package/dist/server/server/agent/providers/claude/project-dir.d.ts.map +1 -0
  41. package/dist/server/server/agent/providers/claude/project-dir.js +40 -0
  42. package/dist/server/server/agent/providers/claude/project-dir.js.map +1 -0
  43. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
  44. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +13 -2
  45. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
  46. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +4 -0
  47. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  48. package/dist/server/server/agent/providers/codex-app-server-agent.js +57 -19
  49. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  50. package/dist/server/server/agent/providers/cursor-acp-agent.d.ts.map +1 -1
  51. package/dist/server/server/agent/providers/cursor-acp-agent.js +11 -1
  52. package/dist/server/server/agent/providers/cursor-acp-agent.js.map +1 -1
  53. package/dist/server/server/agent/providers/generic-acp-agent.d.ts +2 -0
  54. package/dist/server/server/agent/providers/generic-acp-agent.d.ts.map +1 -1
  55. package/dist/server/server/agent/providers/generic-acp-agent.js +2 -0
  56. package/dist/server/server/agent/providers/generic-acp-agent.js.map +1 -1
  57. package/dist/server/server/agent/providers/opencode/runtime.d.ts +1 -0
  58. package/dist/server/server/agent/providers/opencode/runtime.d.ts.map +1 -1
  59. package/dist/server/server/agent/providers/opencode/runtime.js.map +1 -1
  60. package/dist/server/server/agent/providers/opencode/server-manager.d.ts +4 -0
  61. package/dist/server/server/agent/providers/opencode/server-manager.d.ts.map +1 -1
  62. package/dist/server/server/agent/providers/opencode/server-manager.js +18 -2
  63. package/dist/server/server/agent/providers/opencode/server-manager.js.map +1 -1
  64. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +2 -0
  65. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts.map +1 -1
  66. package/dist/server/server/agent/providers/opencode/test-server-manager.js +1 -0
  67. package/dist/server/server/agent/providers/opencode/test-server-manager.js.map +1 -1
  68. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts +2 -0
  69. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts.map +1 -1
  70. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js +1 -1
  71. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js.map +1 -1
  72. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  73. package/dist/server/server/agent/providers/opencode-agent.js +7 -2
  74. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  75. package/dist/server/server/agent/providers/{pi-direct-agent.d.ts → pi/agent.d.ts} +38 -29
  76. package/dist/server/server/agent/providers/pi/agent.d.ts.map +1 -0
  77. package/dist/server/server/agent/providers/pi/agent.js +829 -0
  78. package/dist/server/server/agent/providers/pi/agent.js.map +1 -0
  79. package/dist/server/server/agent/providers/pi/cli-runtime.d.ts +18 -0
  80. package/dist/server/server/agent/providers/pi/cli-runtime.d.ts.map +1 -0
  81. package/dist/server/server/agent/providers/pi/cli-runtime.js +218 -0
  82. package/dist/server/server/agent/providers/pi/cli-runtime.js.map +1 -0
  83. package/dist/server/server/agent/providers/pi/history-mapper.d.ts +5 -0
  84. package/dist/server/server/agent/providers/pi/history-mapper.d.ts.map +1 -0
  85. package/dist/server/server/agent/providers/pi/history-mapper.js +139 -0
  86. package/dist/server/server/agent/providers/pi/history-mapper.js.map +1 -0
  87. package/dist/server/server/agent/providers/pi/rpc-types.d.ts +185 -0
  88. package/dist/server/server/agent/providers/pi/rpc-types.d.ts.map +1 -0
  89. package/dist/server/server/agent/providers/pi/rpc-types.js +2 -0
  90. package/dist/server/server/agent/providers/pi/rpc-types.js.map +1 -0
  91. package/dist/server/server/agent/providers/pi/runtime.d.ts +48 -0
  92. package/dist/server/server/agent/providers/pi/runtime.d.ts.map +1 -0
  93. package/dist/server/server/agent/providers/pi/runtime.js +52 -0
  94. package/dist/server/server/agent/providers/pi/runtime.js.map +1 -0
  95. package/dist/server/server/agent/providers/pi/session-descriptor.d.ts +10 -0
  96. package/dist/server/server/agent/providers/pi/session-descriptor.d.ts.map +1 -0
  97. package/dist/server/server/agent/providers/pi/session-descriptor.js +300 -0
  98. package/dist/server/server/agent/providers/pi/session-descriptor.js.map +1 -0
  99. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +52 -0
  100. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts.map +1 -0
  101. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +109 -0
  102. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js.map +1 -0
  103. package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts +112 -0
  104. package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts.map +1 -0
  105. package/dist/server/server/agent/providers/pi/tool-call-mapper.js +284 -0
  106. package/dist/server/server/agent/providers/pi/tool-call-mapper.js.map +1 -0
  107. package/dist/server/server/agent/system-prompt.d.ts +2 -0
  108. package/dist/server/server/agent/system-prompt.d.ts.map +1 -0
  109. package/dist/server/server/agent/system-prompt.js +8 -0
  110. package/dist/server/server/agent/system-prompt.js.map +1 -0
  111. package/dist/server/server/bootstrap.d.ts +1 -0
  112. package/dist/server/server/bootstrap.d.ts.map +1 -1
  113. package/dist/server/server/bootstrap.js +15 -1
  114. package/dist/server/server/bootstrap.js.map +1 -1
  115. package/dist/server/server/config.d.ts.map +1 -1
  116. package/dist/server/server/config.js +6 -1
  117. package/dist/server/server/config.js.map +1 -1
  118. package/dist/server/server/daemon-config-store.js +1 -0
  119. package/dist/server/server/daemon-config-store.js.map +1 -1
  120. package/dist/server/server/persisted-config.d.ts +51 -44
  121. package/dist/server/server/persisted-config.d.ts.map +1 -1
  122. package/dist/server/server/persisted-config.js +1 -0
  123. package/dist/server/server/persisted-config.js.map +1 -1
  124. package/dist/server/server/pid-lock.d.ts +2 -2
  125. package/dist/server/server/session.d.ts +21 -0
  126. package/dist/server/server/session.d.ts.map +1 -1
  127. package/dist/server/server/session.js +232 -10
  128. package/dist/server/server/session.js.map +1 -1
  129. package/dist/server/server/websocket-server.d.ts +11 -1
  130. package/dist/server/server/websocket-server.d.ts.map +1 -1
  131. package/dist/server/server/websocket-server.js +10 -2
  132. package/dist/server/server/websocket-server.js.map +1 -1
  133. package/dist/server/server/workspace-git-service.d.ts +5 -1
  134. package/dist/server/server/workspace-git-service.d.ts.map +1 -1
  135. package/dist/server/server/workspace-git-service.js +122 -62
  136. package/dist/server/server/workspace-git-service.js.map +1 -1
  137. package/dist/server/shared/importable-providers.d.ts +1 -1
  138. package/dist/server/shared/importable-providers.d.ts.map +1 -1
  139. package/dist/server/shared/importable-providers.js +1 -1
  140. package/dist/server/shared/importable-providers.js.map +1 -1
  141. package/dist/server/shared/messages.d.ts +2187 -24
  142. package/dist/server/shared/messages.d.ts.map +1 -1
  143. package/dist/server/shared/messages.js +108 -0
  144. package/dist/server/shared/messages.js.map +1 -1
  145. package/dist/server/terminal/terminal-manager.d.ts +1 -0
  146. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  147. package/dist/server/terminal/terminal-manager.js +8 -0
  148. package/dist/server/terminal/terminal-manager.js.map +1 -1
  149. package/dist/server/terminal/terminal-session-controller.d.ts +1 -0
  150. package/dist/server/terminal/terminal-session-controller.d.ts.map +1 -1
  151. package/dist/server/terminal/terminal-session-controller.js +26 -0
  152. package/dist/server/terminal/terminal-session-controller.js.map +1 -1
  153. package/dist/server/terminal/terminal.d.ts +1 -0
  154. package/dist/server/terminal/terminal.d.ts.map +1 -1
  155. package/dist/server/terminal/terminal.js +32 -10
  156. package/dist/server/terminal/terminal.js.map +1 -1
  157. package/dist/server/terminal/worker-terminal-manager.d.ts.map +1 -1
  158. package/dist/server/terminal/worker-terminal-manager.js +18 -0
  159. package/dist/server/terminal/worker-terminal-manager.js.map +1 -1
  160. package/dist/server/utils/branch-slug.d.ts +14 -0
  161. package/dist/server/utils/branch-slug.d.ts.map +1 -0
  162. package/dist/server/utils/branch-slug.js +49 -0
  163. package/dist/server/utils/branch-slug.js.map +1 -0
  164. package/dist/server/utils/directory-suggestions.js +2 -2
  165. package/dist/server/utils/directory-suggestions.js.map +1 -1
  166. package/dist/server/utils/path.d.ts +1 -0
  167. package/dist/server/utils/path.d.ts.map +1 -1
  168. package/dist/server/utils/path.js +31 -0
  169. package/dist/server/utils/path.js.map +1 -1
  170. package/dist/server/utils/run-git-command.d.ts.map +1 -1
  171. package/dist/server/utils/run-git-command.js +3 -1
  172. package/dist/server/utils/run-git-command.js.map +1 -1
  173. package/dist/server/utils/worktree.d.ts +1 -12
  174. package/dist/server/utils/worktree.d.ts.map +1 -1
  175. package/dist/server/utils/worktree.js +2 -52
  176. package/dist/server/utils/worktree.js.map +1 -1
  177. package/dist/src/server/persisted-config.js +1 -0
  178. package/dist/src/server/persisted-config.js.map +1 -1
  179. package/dist/src/shared/messages.js +108 -0
  180. package/dist/src/shared/messages.js.map +1 -1
  181. package/package.json +13 -11
  182. package/dist/server/server/agent/orchestrator-instructions.d.ts +0 -7
  183. package/dist/server/server/agent/orchestrator-instructions.d.ts.map +0 -1
  184. package/dist/server/server/agent/orchestrator-instructions.js +0 -51
  185. package/dist/server/server/agent/orchestrator-instructions.js.map +0 -1
  186. package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +0 -1
  187. package/dist/server/server/agent/providers/pi-direct-agent.js +0 -1151
  188. package/dist/server/server/agent/providers/pi-direct-agent.js.map +0 -1
  189. package/dist/server/server/agent/providers/pi-session-recovery-policy.d.ts +0 -22
  190. package/dist/server/server/agent/providers/pi-session-recovery-policy.d.ts.map +0 -1
  191. package/dist/server/server/agent/providers/pi-session-recovery-policy.js +0 -51
  192. package/dist/server/server/agent/providers/pi-session-recovery-policy.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-types.d.ts","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/pi/rpc-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rpc-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-types.js","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/pi/rpc-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import type { PiAgentMessage, PiModel, PiRpcSlashCommand, PiRuntimeEvent, PiSessionState, PiSessionStats } from "./rpc-types.js";
2
+ import type { ProviderRuntimeSettings } from "../../provider-launch-config.js";
3
+ export interface PiRuntimeLaunch {
4
+ cwd: string;
5
+ argv: string[];
6
+ env?: Record<string, string>;
7
+ model?: string;
8
+ thinkingOptionId?: string;
9
+ session?: string;
10
+ systemPrompt?: string;
11
+ mcpConfigPath?: string;
12
+ }
13
+ export interface PiStartSessionInput {
14
+ cwd: string;
15
+ env?: Record<string, string>;
16
+ model?: string;
17
+ thinkingOptionId?: string;
18
+ session?: string;
19
+ systemPrompt?: string;
20
+ mcpConfigPath?: string;
21
+ }
22
+ export interface PiRuntimeSession {
23
+ onEvent(callback: (event: PiRuntimeEvent) => void): () => void;
24
+ prompt(message: string, images?: Array<{
25
+ type: "image";
26
+ data: string;
27
+ mimeType: string;
28
+ }>): Promise<void>;
29
+ abort(): Promise<void>;
30
+ getState(): Promise<PiSessionState>;
31
+ getMessages(): Promise<PiAgentMessage[]>;
32
+ getAvailableModels(): Promise<PiModel[]>;
33
+ setModel(provider: string, modelId: string): Promise<PiModel>;
34
+ setThinkingLevel(level: string): Promise<void>;
35
+ getSessionStats(): Promise<PiSessionStats>;
36
+ getCommands(): Promise<PiRpcSlashCommand[]>;
37
+ cancelExtensionUiRequest(id: string): void;
38
+ close(): Promise<void>;
39
+ }
40
+ export interface PiRuntime {
41
+ startSession(input: PiStartSessionInput): Promise<PiRuntimeSession>;
42
+ }
43
+ export declare function buildPiLaunch(input: {
44
+ command: [string, ...string[]];
45
+ runtimeSettings?: ProviderRuntimeSettings;
46
+ session: PiStartSessionInput;
47
+ }): PiRuntimeLaunch;
48
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/pi/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/D,MAAM,CACJ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAChE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IACpC,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,kBAAkB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,WAAW,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC5C,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACrE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC/B,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,OAAO,EAAE,mBAAmB,CAAC;CAC9B,GAAG,eAAe,CA2ClB"}
@@ -0,0 +1,52 @@
1
+ export function buildPiLaunch(input) {
2
+ const command = input.runtimeSettings?.command?.mode === "replace" && input.runtimeSettings.command.argv[0]
3
+ ? input.runtimeSettings.command.argv
4
+ : input.command;
5
+ const argv = [...command];
6
+ if (!hasModeRpc(argv)) {
7
+ argv.push("--mode", "rpc");
8
+ }
9
+ if (input.session.model) {
10
+ argv.push("--model", input.session.model);
11
+ }
12
+ if (input.session.thinkingOptionId) {
13
+ argv.push("--thinking", input.session.thinkingOptionId);
14
+ }
15
+ if (input.session.session) {
16
+ argv.push("--session", input.session.session);
17
+ }
18
+ const systemPrompt = input.session.systemPrompt?.trim();
19
+ if (systemPrompt) {
20
+ argv.push("--append-system-prompt", systemPrompt);
21
+ }
22
+ if (input.session.mcpConfigPath) {
23
+ argv.push("--mcp-config", input.session.mcpConfigPath);
24
+ }
25
+ return {
26
+ cwd: input.session.cwd,
27
+ argv,
28
+ env: input.runtimeSettings?.env || input.session.env
29
+ ? {
30
+ ...input.runtimeSettings?.env,
31
+ ...input.session.env,
32
+ }
33
+ : undefined,
34
+ model: input.session.model,
35
+ thinkingOptionId: input.session.thinkingOptionId,
36
+ session: input.session.session,
37
+ systemPrompt,
38
+ mcpConfigPath: input.session.mcpConfigPath,
39
+ };
40
+ }
41
+ function hasModeRpc(argv) {
42
+ for (let i = 0; i < argv.length; i += 1) {
43
+ if (argv[i] === "--mode" && argv[i + 1] === "rpc") {
44
+ return true;
45
+ }
46
+ if (argv[i] === "--mode=rpc") {
47
+ return true;
48
+ }
49
+ }
50
+ return false;
51
+ }
52
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/pi/runtime.ts"],"names":[],"mappings":"AAqDA,MAAM,UAAU,aAAa,CAAC,KAI7B;IACC,MAAM,OAAO,GACX,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI;QACpC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAE1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG;QACtB,IAAI;QACJ,GAAG,EACD,KAAK,CAAC,eAAe,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG;YAC7C,CAAC,CAAC;gBACE,GAAG,KAAK,CAAC,eAAe,EAAE,GAAG;gBAC7B,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG;aACrB;YACH,CAAC,CAAC,SAAS;QACf,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;QAC1B,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB;QAChD,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;QAC9B,YAAY;QACZ,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ListPersistedAgentsOptions, PersistedAgentDescriptor } from "../../agent-sdk-types.js";
2
+ import type { ProviderRuntimeSettings } from "../../provider-launch-config.js";
3
+ interface PiSessionDescriptorOptions extends ListPersistedAgentsOptions {
4
+ runtimeSettings?: ProviderRuntimeSettings;
5
+ env?: NodeJS.ProcessEnv;
6
+ homeDir?: string;
7
+ }
8
+ export declare function listPiPersistedAgents(options?: PiSessionDescriptorOptions): Promise<PersistedAgentDescriptor[]>;
9
+ export {};
10
+ //# sourceMappingURL=session-descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-descriptor.d.ts","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/pi/session-descriptor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAW/E,UAAU,0BAA2B,SAAQ,0BAA0B;IACrE,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAiBrC"}
@@ -0,0 +1,300 @@
1
+ import { open, readdir, readFile, stat } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import path from "node:path";
4
+ import { createRealpathAwarePathMatcher } from "../../../../utils/path.js";
5
+ const PI_PROVIDER = "pi";
6
+ const PI_CONFIG_DIR_NAME = ".pi";
7
+ const PI_AGENT_DIR_ENV = "PI_CODING_AGENT_DIR";
8
+ const PI_SESSION_DIR_ENV = "PI_CODING_AGENT_SESSION_DIR";
9
+ const HEAD_BYTES = 64 * 1024;
10
+ const TAIL_BYTES = 256 * 1024;
11
+ const FULL_SCAN_LINE_LIMIT = 2000;
12
+ export async function listPiPersistedAgents(options = {}) {
13
+ const sessionsDir = await resolvePiSessionsDir(options);
14
+ const files = await walkJsonlFiles(sessionsDir);
15
+ const matchesCwd = options.cwd ? createRealpathAwarePathMatcher(options.cwd) : null;
16
+ const limit = options.limit ?? 20;
17
+ const descriptors = [];
18
+ for (const file of files) {
19
+ const descriptor = await readPiSessionDescriptor(file);
20
+ if (!descriptor)
21
+ continue;
22
+ if (matchesCwd && !matchesCwd(descriptor.cwd))
23
+ continue;
24
+ descriptors.push(descriptor);
25
+ }
26
+ return descriptors
27
+ .sort((left, right) => right.lastActivityAt.getTime() - left.lastActivityAt.getTime())
28
+ .slice(0, limit);
29
+ }
30
+ async function resolvePiSessionsDir(options) {
31
+ const env = options.env ?? process.env;
32
+ const homeDir = options.homeDir ?? homedir();
33
+ const baseDir = options.cwd ?? process.cwd();
34
+ const agentDir = resolvePiAgentDir({ runtimeSettings: options.runtimeSettings, env, homeDir });
35
+ const envSessionDir = options.runtimeSettings?.env?.[PI_SESSION_DIR_ENV] ?? env[PI_SESSION_DIR_ENV];
36
+ if (envSessionDir?.trim()) {
37
+ return resolveConfigPath(envSessionDir, { baseDir, homeDir });
38
+ }
39
+ const settingsSessionDir = await readConfiguredSessionDir({
40
+ agentDir,
41
+ cwd: options.cwd,
42
+ });
43
+ if (settingsSessionDir?.trim()) {
44
+ return resolveConfigPath(settingsSessionDir, { baseDir, homeDir });
45
+ }
46
+ return path.join(agentDir, "sessions");
47
+ }
48
+ function resolvePiAgentDir(input) {
49
+ const configured = input.runtimeSettings?.env?.[PI_AGENT_DIR_ENV] ?? input.env[PI_AGENT_DIR_ENV];
50
+ if (configured?.trim()) {
51
+ return resolveConfigPath(configured, { baseDir: process.cwd(), homeDir: input.homeDir });
52
+ }
53
+ return path.join(input.homeDir, PI_CONFIG_DIR_NAME, "agent");
54
+ }
55
+ async function readConfiguredSessionDir(input) {
56
+ const values = await Promise.all([
57
+ readSessionDirFromSettings(path.join(input.agentDir, "settings.json")),
58
+ input.cwd
59
+ ? readSessionDirFromSettings(path.join(input.cwd, PI_CONFIG_DIR_NAME, "settings.json"))
60
+ : null,
61
+ ]);
62
+ return values[1] ?? values[0] ?? null;
63
+ }
64
+ async function readSessionDirFromSettings(settingsPath) {
65
+ try {
66
+ const parsed = JSON.parse(await readFile(settingsPath, "utf8"));
67
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
68
+ return null;
69
+ }
70
+ const sessionDir = Reflect.get(parsed, "sessionDir");
71
+ return typeof sessionDir === "string" && sessionDir.trim() ? sessionDir : null;
72
+ }
73
+ catch {
74
+ return null;
75
+ }
76
+ }
77
+ function resolveConfigPath(value, options) {
78
+ if (value === "~") {
79
+ return options.homeDir;
80
+ }
81
+ if (value.startsWith("~/")) {
82
+ return path.join(options.homeDir, value.slice(2));
83
+ }
84
+ return path.isAbsolute(value) ? value : path.resolve(options.baseDir, value);
85
+ }
86
+ async function walkJsonlFiles(root) {
87
+ let entries;
88
+ try {
89
+ entries = await readdir(root, { withFileTypes: true });
90
+ }
91
+ catch {
92
+ return [];
93
+ }
94
+ const files = await Promise.all(entries.map(async (entry) => {
95
+ const entryPath = path.join(root, entry.name);
96
+ if (entry.isDirectory()) {
97
+ return await walkJsonlFiles(entryPath);
98
+ }
99
+ return entry.isFile() && entry.name.endsWith(".jsonl") ? [entryPath] : [];
100
+ }));
101
+ return files.flat();
102
+ }
103
+ async function readPiSessionDescriptor(filePath) {
104
+ const firstLine = await readFirstLine(filePath);
105
+ if (!firstLine)
106
+ return null;
107
+ const header = parseSessionHeader(firstLine);
108
+ if (!header)
109
+ return null;
110
+ const tail = await readTail(filePath).catch(() => "");
111
+ const tailInfo = parseSessionTail(tail);
112
+ const headInfo = await scanSessionHead(filePath);
113
+ const title = tailInfo.title ?? headInfo.title ?? headInfo.firstUserMessage;
114
+ const lastActivityAt = tailInfo.lastActivityAt ?? (await readFileMtime(filePath)) ?? header.createdAt ?? new Date(0);
115
+ const timeline = buildPreviewTimeline({
116
+ firstUserMessage: headInfo.firstUserMessage,
117
+ lastUserMessage: tailInfo.lastUserMessage,
118
+ });
119
+ const persistence = {
120
+ provider: PI_PROVIDER,
121
+ sessionId: header.sessionId,
122
+ nativeHandle: filePath,
123
+ metadata: {
124
+ provider: PI_PROVIDER,
125
+ cwd: header.cwd,
126
+ },
127
+ };
128
+ return {
129
+ provider: PI_PROVIDER,
130
+ sessionId: header.sessionId,
131
+ cwd: header.cwd,
132
+ title,
133
+ lastActivityAt,
134
+ persistence,
135
+ timeline,
136
+ };
137
+ }
138
+ async function readFirstLine(filePath) {
139
+ const handle = await open(filePath, "r").catch(() => null);
140
+ if (!handle)
141
+ return null;
142
+ try {
143
+ const buffer = Buffer.alloc(HEAD_BYTES);
144
+ const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
145
+ if (bytesRead <= 0)
146
+ return null;
147
+ const chunk = buffer.subarray(0, bytesRead).toString("utf8");
148
+ const newlineIndex = chunk.indexOf("\n");
149
+ return (newlineIndex === -1 ? chunk : chunk.slice(0, newlineIndex)).trim();
150
+ }
151
+ finally {
152
+ await handle.close().catch(() => undefined);
153
+ }
154
+ }
155
+ async function readTail(filePath) {
156
+ const fileStats = await stat(filePath);
157
+ const start = Math.max(0, fileStats.size - TAIL_BYTES);
158
+ const length = fileStats.size - start;
159
+ const handle = await open(filePath, "r");
160
+ try {
161
+ const buffer = Buffer.alloc(length);
162
+ const { bytesRead } = await handle.read(buffer, 0, buffer.length, start);
163
+ return buffer.subarray(0, bytesRead).toString("utf8");
164
+ }
165
+ finally {
166
+ await handle.close().catch(() => undefined);
167
+ }
168
+ }
169
+ async function readFileMtime(filePath) {
170
+ try {
171
+ return (await stat(filePath)).mtime;
172
+ }
173
+ catch {
174
+ return null;
175
+ }
176
+ }
177
+ function parseSessionHeader(firstLine) {
178
+ const entry = parseJsonRecord(firstLine);
179
+ if (!entry || entry.type !== "session")
180
+ return null;
181
+ const sessionId = typeof entry.id === "string" ? entry.id : null;
182
+ const cwd = typeof entry.cwd === "string" ? entry.cwd : null;
183
+ if (!sessionId || !cwd)
184
+ return null;
185
+ const createdAt = parseDate(entry.timestamp);
186
+ return { sessionId, cwd, createdAt };
187
+ }
188
+ function parseSessionTail(tail) {
189
+ const lines = tail.split(/\r?\n/);
190
+ let title = null;
191
+ let lastActivityAt = null;
192
+ let fallbackTimestamp = null;
193
+ let lastUserMessage = null;
194
+ for (let index = lines.length - 1; index >= 0; index -= 1) {
195
+ const entry = parseJsonRecord(lines[index].trim());
196
+ if (!entry)
197
+ continue;
198
+ if (!title && entry.type === "session_info") {
199
+ title = readNonEmptyString(entry.name);
200
+ }
201
+ const entryTimestamp = parseDate(entry.timestamp);
202
+ if (!fallbackTimestamp && entryTimestamp) {
203
+ fallbackTimestamp = entryTimestamp;
204
+ }
205
+ if (entry.type !== "message") {
206
+ continue;
207
+ }
208
+ if (!lastActivityAt && entryTimestamp) {
209
+ lastActivityAt = entryTimestamp;
210
+ }
211
+ if (!lastUserMessage && isRecord(entry.message) && entry.message.role === "user") {
212
+ lastUserMessage = extractMessageText(entry.message.content);
213
+ }
214
+ if (title && lastActivityAt && lastUserMessage) {
215
+ break;
216
+ }
217
+ }
218
+ return { title, lastActivityAt: lastActivityAt ?? fallbackTimestamp, lastUserMessage };
219
+ }
220
+ async function scanSessionHead(filePath) {
221
+ let content;
222
+ try {
223
+ content = await readFile(filePath, "utf8");
224
+ }
225
+ catch {
226
+ return { title: null, firstUserMessage: null };
227
+ }
228
+ let title = null;
229
+ let firstUserMessage = null;
230
+ let lineCount = 0;
231
+ for (const rawLine of content.split(/\r?\n/)) {
232
+ lineCount += 1;
233
+ const entry = parseJsonRecord(rawLine.trim());
234
+ if (!entry)
235
+ continue;
236
+ if (entry.type === "session_info") {
237
+ title = readNonEmptyString(entry.name) ?? title;
238
+ }
239
+ if (!firstUserMessage && entry.type === "message" && isRecord(entry.message)) {
240
+ if (entry.message.role === "user") {
241
+ firstUserMessage = extractMessageText(entry.message.content);
242
+ }
243
+ }
244
+ if (title && firstUserMessage) {
245
+ break;
246
+ }
247
+ if (lineCount >= FULL_SCAN_LINE_LIMIT && firstUserMessage) {
248
+ break;
249
+ }
250
+ }
251
+ return { title, firstUserMessage };
252
+ }
253
+ function buildPreviewTimeline(input) {
254
+ const items = [];
255
+ if (input.firstUserMessage) {
256
+ items.push({ type: "user_message", text: input.firstUserMessage });
257
+ }
258
+ if (input.lastUserMessage && input.lastUserMessage !== input.firstUserMessage) {
259
+ items.push({ type: "user_message", text: input.lastUserMessage });
260
+ }
261
+ return items;
262
+ }
263
+ function parseJsonRecord(line) {
264
+ if (!line)
265
+ return null;
266
+ try {
267
+ const parsed = JSON.parse(line);
268
+ return isRecord(parsed) ? parsed : null;
269
+ }
270
+ catch {
271
+ return null;
272
+ }
273
+ }
274
+ function isRecord(value) {
275
+ return typeof value === "object" && value !== null && !Array.isArray(value);
276
+ }
277
+ function readNonEmptyString(value) {
278
+ return typeof value === "string" && value.trim() ? value.trim() : null;
279
+ }
280
+ function parseDate(value) {
281
+ if (typeof value !== "string" && typeof value !== "number") {
282
+ return null;
283
+ }
284
+ const date = new Date(value);
285
+ return Number.isNaN(date.getTime()) ? null : date;
286
+ }
287
+ function extractMessageText(content) {
288
+ if (typeof content === "string") {
289
+ return content.trim() || null;
290
+ }
291
+ if (!Array.isArray(content)) {
292
+ return null;
293
+ }
294
+ const text = content
295
+ .flatMap((part) => isRecord(part) && part.type === "text" && typeof part.text === "string" ? [part.text] : [])
296
+ .join("\n\n")
297
+ .trim();
298
+ return text || null;
299
+ }
300
+ //# sourceMappingURL=session-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-descriptor.js","sourceRoot":"","sources":["../../../../../../src/server/agent/providers/pi/session-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAE3E,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAC/C,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AACzD,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7B,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC;AAC9B,MAAM,oBAAoB,GAAG,IAAK,CAAC;AAoBnC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,UAAsC,EAAE;IAExC,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,WAAW,GAA+B,EAAE,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACxD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,WAAW;SACf,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;SACrF,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,OAAmC;IACrE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IAE/F,MAAM,aAAa,GACjB,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChF,IAAI,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1B,OAAO,iBAAiB,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,wBAAwB,CAAC;QACxD,QAAQ;QACR,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,IAAI,kBAAkB,EAAE,IAAI,EAAE,EAAE,CAAC;QAC/B,OAAO,iBAAiB,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,iBAAiB,CAAC,KAI1B;IACC,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjG,IAAI,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,iBAAiB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,KAGvC;IACC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/B,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACtE,KAAK,CAAC,GAAG;YACP,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;YACvF,CAAC,CAAC,IAAI;KACT,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,YAAoB;IAC5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAY,CAAC;QAC3E,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACrD,OAAO,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,OAA6C;IACrF,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY;IACxC,IAAI,OAAmC,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,CAAC,CAAC,CACH,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,QAAgB;IACrD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,gBAAgB,CAAC;IAC5E,MAAM,cAAc,GAClB,QAAQ,CAAC,cAAc,IAAI,CAAC,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAG,oBAAoB,CAAC;QACpC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,eAAe,EAAE,QAAQ,CAAC,eAAe;KAC1C,CAAC,CAAC;IAEH,MAAM,WAAW,GAA2B;QAC1C,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,QAAQ;QACtB,QAAQ,EAAE;YACR,QAAQ,EAAE,WAAW;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB;KACF,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,KAAK;QACL,cAAc;QACd,WAAW;QACX,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7E,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,cAAc,GAAgB,IAAI,CAAC;IACvC,IAAI,iBAAiB,GAAgB,IAAI,CAAC;IAC1C,IAAI,eAAe,GAAkB,IAAI,CAAC;IAE1C,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5C,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,IAAI,cAAc,EAAE,CAAC;YACzC,iBAAiB,GAAG,cAAc,CAAC;QACrC,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,IAAI,CAAC,cAAc,IAAI,cAAc,EAAE,CAAC;YACtC,cAAc,GAAG,cAAc,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACjF,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,KAAK,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;YAC/C,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,IAAI,iBAAiB,EAAE,eAAe,EAAE,CAAC;AACzF,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB;IAI7C,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,SAAS,IAAI,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClC,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,KAAK,IAAI,gBAAgB,EAAE,CAAC;YAC9B,MAAM;QACR,CAAC;QACD,IAAI,SAAS,IAAI,oBAAoB,IAAI,gBAAgB,EAAE,CAAC;YAC1D,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,oBAAoB,CAAC,KAG7B;IACC,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,eAAe,KAAK,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAChB,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAC3F;SACA,IAAI,CAAC,MAAM,CAAC;SACZ,IAAI,EAAE,CAAC;IACV,OAAO,IAAI,IAAI,IAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { PiRuntime, PiRuntimeLaunch, PiRuntimeSession, PiStartSessionInput } from "../runtime.js";
2
+ import type { PiAgentMessage, PiModel, PiRpcSlashCommand, PiRuntimeEvent, PiSessionState, PiSessionStats } from "../rpc-types.js";
3
+ export declare class FakePi implements PiRuntime {
4
+ readonly recordedLaunches: PiRuntimeLaunch[];
5
+ private readonly sessions;
6
+ private readonly command;
7
+ private readonly queuedCommands;
8
+ constructor(command?: [string, ...string[]]);
9
+ startSession(input: PiStartSessionInput): Promise<FakePiSession>;
10
+ queueCommands(commands: PiRpcSlashCommand[]): void;
11
+ latestSession(): FakePiSession;
12
+ }
13
+ export declare class FakePiSession implements PiRuntimeSession {
14
+ readonly prompts: Array<{
15
+ message: string;
16
+ imageCount: number;
17
+ }>;
18
+ readonly setModelRequests: Array<{
19
+ provider: string;
20
+ modelId: string;
21
+ }>;
22
+ readonly setThinkingLevelRequests: string[];
23
+ abortRequested: boolean;
24
+ readonly canceledExtensionUiRequests: string[];
25
+ setModelResult: PiModel | null;
26
+ models: PiModel[];
27
+ messages: PiAgentMessage[];
28
+ stats: PiSessionStats;
29
+ commands: PiRpcSlashCommand[];
30
+ state: PiSessionState;
31
+ private readonly subscribers;
32
+ constructor(launch: PiRuntimeLaunch);
33
+ onEvent(callback: (event: PiRuntimeEvent) => void): () => void;
34
+ prompt(message: string, images?: Array<{
35
+ type: "image";
36
+ data: string;
37
+ mimeType: string;
38
+ }>): Promise<void>;
39
+ abort(): Promise<void>;
40
+ getState(): Promise<PiSessionState>;
41
+ getMessages(): Promise<PiAgentMessage[]>;
42
+ getAvailableModels(): Promise<PiModel[]>;
43
+ setModel(provider: string, modelId: string): Promise<PiModel>;
44
+ setThinkingLevel(level: string): Promise<void>;
45
+ getSessionStats(): Promise<PiSessionStats>;
46
+ getCommands(): Promise<PiRpcSlashCommand[]>;
47
+ cancelExtensionUiRequest(id: string): void;
48
+ close(): Promise<void>;
49
+ emit(event: PiRuntimeEvent): void;
50
+ finishTurn(message?: PiAgentMessage): void;
51
+ }
52
+ //# sourceMappingURL=fake-pi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-pi.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/agent/providers/pi/test-utils/fake-pi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,iBAAiB,CAAC;AAGzB,qBAAa,MAAO,YAAW,SAAS;IACtC,QAAQ,CAAC,gBAAgB,EAAE,eAAe,EAAE,CAAM;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;gBAEhD,OAAO,GAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAU;IAI7C,YAAY,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAYtE,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAIlD,aAAa,IAAI,aAAa;CAO/B;AAED,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IACtE,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IAC7E,QAAQ,CAAC,wBAAwB,EAAE,MAAM,EAAE,CAAM;IACjD,cAAc,UAAS;IACvB,QAAQ,CAAC,2BAA2B,EAAE,MAAM,EAAE,CAAM;IACpD,cAAc,EAAE,OAAO,GAAG,IAAI,CAAQ;IACtC,MAAM,EAAE,OAAO,EAAE,CAAM;IACvB,QAAQ,EAAE,cAAc,EAAE,CAAM;IAChC,KAAK,EAAE,cAAc,CAGnB;IACF,QAAQ,EAAE,iBAAiB,EAAE,CAAM;IACnC,KAAK,EAAE,cAAc,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;gBAE9D,MAAM,EAAE,eAAe;IAanC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IAOxD,MAAM,CACV,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAChE,OAAO,CAAC,IAAI,CAAC;IAIV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAInC,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIxC,kBAAkB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ7D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC;IAI1C,WAAW,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIjD,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAE5B,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAMjC,UAAU,CAAC,OAAO,GAAE,cAAmD,GAAG,IAAI;CAI/E"}
@@ -0,0 +1,109 @@
1
+ import { buildPiLaunch } from "../runtime.js";
2
+ export class FakePi {
3
+ constructor(command = ["pi"]) {
4
+ this.recordedLaunches = [];
5
+ this.sessions = [];
6
+ this.queuedCommands = [];
7
+ this.command = command;
8
+ }
9
+ async startSession(input) {
10
+ const launch = buildPiLaunch({
11
+ command: this.command,
12
+ session: input,
13
+ });
14
+ this.recordedLaunches.push(launch);
15
+ const session = new FakePiSession(launch);
16
+ session.commands = this.queuedCommands.shift() ?? [];
17
+ this.sessions.push(session);
18
+ return session;
19
+ }
20
+ queueCommands(commands) {
21
+ this.queuedCommands.push(commands);
22
+ }
23
+ latestSession() {
24
+ const session = this.sessions.at(-1);
25
+ if (!session) {
26
+ throw new Error("FakePi has no sessions");
27
+ }
28
+ return session;
29
+ }
30
+ }
31
+ export class FakePiSession {
32
+ constructor(launch) {
33
+ this.prompts = [];
34
+ this.setModelRequests = [];
35
+ this.setThinkingLevelRequests = [];
36
+ this.abortRequested = false;
37
+ this.canceledExtensionUiRequests = [];
38
+ this.setModelResult = null;
39
+ this.models = [];
40
+ this.messages = [];
41
+ this.stats = {
42
+ tokens: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
43
+ cost: 0,
44
+ };
45
+ this.commands = [];
46
+ this.subscribers = new Set();
47
+ this.state = {
48
+ model: null,
49
+ thinkingLevel: "medium",
50
+ isStreaming: false,
51
+ isCompacting: false,
52
+ sessionFile: launch.session ?? "/tmp/pi-session.jsonl",
53
+ sessionId: "pi-session-1",
54
+ messageCount: 0,
55
+ pendingMessageCount: 0,
56
+ };
57
+ }
58
+ onEvent(callback) {
59
+ this.subscribers.add(callback);
60
+ return () => {
61
+ this.subscribers.delete(callback);
62
+ };
63
+ }
64
+ async prompt(message, images) {
65
+ this.prompts.push({ message, imageCount: images?.length ?? 0 });
66
+ }
67
+ async abort() {
68
+ this.abortRequested = true;
69
+ }
70
+ async getState() {
71
+ return this.state;
72
+ }
73
+ async getMessages() {
74
+ return this.messages;
75
+ }
76
+ async getAvailableModels() {
77
+ return this.models;
78
+ }
79
+ async setModel(provider, modelId) {
80
+ this.setModelRequests.push({ provider, modelId });
81
+ if (!this.setModelResult) {
82
+ throw new Error("FakePi setModel requires setModelResult to be scripted");
83
+ }
84
+ return this.setModelResult;
85
+ }
86
+ async setThinkingLevel(level) {
87
+ this.setThinkingLevelRequests.push(level);
88
+ }
89
+ async getSessionStats() {
90
+ return this.stats;
91
+ }
92
+ async getCommands() {
93
+ return this.commands;
94
+ }
95
+ cancelExtensionUiRequest(id) {
96
+ this.canceledExtensionUiRequests.push(id);
97
+ }
98
+ async close() { }
99
+ emit(event) {
100
+ for (const subscriber of this.subscribers) {
101
+ subscriber(event);
102
+ }
103
+ }
104
+ finishTurn(message = { role: "assistant", content: [] }) {
105
+ this.messages = [...this.messages, message];
106
+ this.emit({ type: "agent_end", messages: this.messages });
107
+ }
108
+ }
109
+ //# sourceMappingURL=fake-pi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-pi.js","sourceRoot":"","sources":["../../../../../../../src/server/agent/providers/pi/test-utils/fake-pi.ts"],"names":[],"mappings":"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"}