@nodetool-ai/websocket 0.7.0-rc.11

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 (261) hide show
  1. package/dist/agent/agent-runtime.d.ts +47 -0
  2. package/dist/agent/agent-runtime.d.ts.map +1 -0
  3. package/dist/agent/agent-runtime.js +577 -0
  4. package/dist/agent/agent-runtime.js.map +1 -0
  5. package/dist/agent/codex-agent.d.ts +41 -0
  6. package/dist/agent/codex-agent.d.ts.map +1 -0
  7. package/dist/agent/codex-agent.js +334 -0
  8. package/dist/agent/codex-agent.js.map +1 -0
  9. package/dist/agent/index.d.ts +6 -0
  10. package/dist/agent/index.d.ts.map +1 -0
  11. package/dist/agent/index.js +4 -0
  12. package/dist/agent/index.js.map +1 -0
  13. package/dist/agent/llm-agent.d.ts +51 -0
  14. package/dist/agent/llm-agent.d.ts.map +1 -0
  15. package/dist/agent/llm-agent.js +526 -0
  16. package/dist/agent/llm-agent.js.map +1 -0
  17. package/dist/agent/mcp-tool-server.d.ts +33 -0
  18. package/dist/agent/mcp-tool-server.d.ts.map +1 -0
  19. package/dist/agent/mcp-tool-server.js +292 -0
  20. package/dist/agent/mcp-tool-server.js.map +1 -0
  21. package/dist/agent/opencode-agent.d.ts +32 -0
  22. package/dist/agent/opencode-agent.d.ts.map +1 -0
  23. package/dist/agent/opencode-agent.js +332 -0
  24. package/dist/agent/opencode-agent.js.map +1 -0
  25. package/dist/agent/pi-agent.d.ts +42 -0
  26. package/dist/agent/pi-agent.d.ts.map +1 -0
  27. package/dist/agent/pi-agent.js +429 -0
  28. package/dist/agent/pi-agent.js.map +1 -0
  29. package/dist/agent/sdk-provider.d.ts +46 -0
  30. package/dist/agent/sdk-provider.d.ts.map +1 -0
  31. package/dist/agent/sdk-provider.js +50 -0
  32. package/dist/agent/sdk-provider.js.map +1 -0
  33. package/dist/agent/socket-route.d.ts +11 -0
  34. package/dist/agent/socket-route.d.ts.map +1 -0
  35. package/dist/agent/socket-route.js +262 -0
  36. package/dist/agent/socket-route.js.map +1 -0
  37. package/dist/agent/transport.d.ts +39 -0
  38. package/dist/agent/transport.d.ts.map +1 -0
  39. package/dist/agent/transport.js +17 -0
  40. package/dist/agent/transport.js.map +1 -0
  41. package/dist/agent/types.d.ts +11 -0
  42. package/dist/agent/types.d.ts.map +1 -0
  43. package/dist/agent/types.js +10 -0
  44. package/dist/agent/types.js.map +1 -0
  45. package/dist/collection-api.d.ts +14 -0
  46. package/dist/collection-api.d.ts.map +1 -0
  47. package/dist/collection-api.js +75 -0
  48. package/dist/collection-api.js.map +1 -0
  49. package/dist/error-codes.d.ts +3 -0
  50. package/dist/error-codes.d.ts.map +1 -0
  51. package/dist/error-codes.js +2 -0
  52. package/dist/error-codes.js.map +1 -0
  53. package/dist/file-api.d.ts +12 -0
  54. package/dist/file-api.d.ts.map +1 -0
  55. package/dist/file-api.js +76 -0
  56. package/dist/file-api.js.map +1 -0
  57. package/dist/http-api.d.ts +94 -0
  58. package/dist/http-api.d.ts.map +1 -0
  59. package/dist/http-api.js +1472 -0
  60. package/dist/http-api.js.map +1 -0
  61. package/dist/index.d.ts +6 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +6 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/lib/asset-paths.d.ts +10 -0
  66. package/dist/lib/asset-paths.d.ts.map +1 -0
  67. package/dist/lib/asset-paths.js +45 -0
  68. package/dist/lib/asset-paths.js.map +1 -0
  69. package/dist/lib/bridge.d.ts +8 -0
  70. package/dist/lib/bridge.d.ts.map +1 -0
  71. package/dist/lib/bridge.js +70 -0
  72. package/dist/lib/bridge.js.map +1 -0
  73. package/dist/mcp-server.d.ts +32 -0
  74. package/dist/mcp-server.d.ts.map +1 -0
  75. package/dist/mcp-server.js +842 -0
  76. package/dist/mcp-server.js.map +1 -0
  77. package/dist/models-api.d.ts +12 -0
  78. package/dist/models-api.d.ts.map +1 -0
  79. package/dist/models-api.js +730 -0
  80. package/dist/models-api.js.map +1 -0
  81. package/dist/oauth-api.d.ts +28 -0
  82. package/dist/oauth-api.d.ts.map +1 -0
  83. package/dist/oauth-api.js +681 -0
  84. package/dist/oauth-api.js.map +1 -0
  85. package/dist/openai-api.d.ts +63 -0
  86. package/dist/openai-api.d.ts.map +1 -0
  87. package/dist/openai-api.js +359 -0
  88. package/dist/openai-api.js.map +1 -0
  89. package/dist/plugins/websocket.d.ts +14 -0
  90. package/dist/plugins/websocket.d.ts.map +1 -0
  91. package/dist/plugins/websocket.js +431 -0
  92. package/dist/plugins/websocket.js.map +1 -0
  93. package/dist/resolve-media-urls.d.ts +19 -0
  94. package/dist/resolve-media-urls.d.ts.map +1 -0
  95. package/dist/resolve-media-urls.js +109 -0
  96. package/dist/resolve-media-urls.js.map +1 -0
  97. package/dist/routes/assets.d.ts +22 -0
  98. package/dist/routes/assets.d.ts.map +1 -0
  99. package/dist/routes/assets.js +168 -0
  100. package/dist/routes/assets.js.map +1 -0
  101. package/dist/routes/collections.d.ts +16 -0
  102. package/dist/routes/collections.d.ts.map +1 -0
  103. package/dist/routes/collections.js +32 -0
  104. package/dist/routes/collections.js.map +1 -0
  105. package/dist/routes/files.d.ts +12 -0
  106. package/dist/routes/files.d.ts.map +1 -0
  107. package/dist/routes/files.js +11 -0
  108. package/dist/routes/files.js.map +1 -0
  109. package/dist/routes/health.d.ts +4 -0
  110. package/dist/routes/health.d.ts.map +1 -0
  111. package/dist/routes/health.js +41 -0
  112. package/dist/routes/health.js.map +1 -0
  113. package/dist/routes/jobs.d.ts +16 -0
  114. package/dist/routes/jobs.d.ts.map +1 -0
  115. package/dist/routes/jobs.js +25 -0
  116. package/dist/routes/jobs.js.map +1 -0
  117. package/dist/routes/nodes.d.ts +8 -0
  118. package/dist/routes/nodes.d.ts.map +1 -0
  119. package/dist/routes/nodes.js +124 -0
  120. package/dist/routes/nodes.js.map +1 -0
  121. package/dist/routes/oauth.d.ts +8 -0
  122. package/dist/routes/oauth.d.ts.map +1 -0
  123. package/dist/routes/oauth.js +19 -0
  124. package/dist/routes/oauth.js.map +1 -0
  125. package/dist/routes/openai.d.ts +8 -0
  126. package/dist/routes/openai.d.ts.map +1 -0
  127. package/dist/routes/openai.js +20 -0
  128. package/dist/routes/openai.js.map +1 -0
  129. package/dist/routes/storage.d.ts +12 -0
  130. package/dist/routes/storage.d.ts.map +1 -0
  131. package/dist/routes/storage.js +13 -0
  132. package/dist/routes/storage.js.map +1 -0
  133. package/dist/routes/workflows.d.ts +18 -0
  134. package/dist/routes/workflows.d.ts.map +1 -0
  135. package/dist/routes/workflows.js +25 -0
  136. package/dist/routes/workflows.js.map +1 -0
  137. package/dist/routes/workspace.d.ts +15 -0
  138. package/dist/routes/workspace.d.ts.map +1 -0
  139. package/dist/routes/workspace.js +24 -0
  140. package/dist/routes/workspace.js.map +1 -0
  141. package/dist/screenshot-server.d.ts +21 -0
  142. package/dist/screenshot-server.d.ts.map +1 -0
  143. package/dist/screenshot-server.js +222 -0
  144. package/dist/screenshot-server.js.map +1 -0
  145. package/dist/server.d.ts +10 -0
  146. package/dist/server.d.ts.map +1 -0
  147. package/dist/server.js +783 -0
  148. package/dist/server.js.map +1 -0
  149. package/dist/settings-registry.d.ts +29 -0
  150. package/dist/settings-registry.d.ts.map +1 -0
  151. package/dist/settings-registry.js +117 -0
  152. package/dist/settings-registry.js.map +1 -0
  153. package/dist/storage-api.d.ts +5 -0
  154. package/dist/storage-api.d.ts.map +1 -0
  155. package/dist/storage-api.js +221 -0
  156. package/dist/storage-api.js.map +1 -0
  157. package/dist/test-ui-server.d.ts +19 -0
  158. package/dist/test-ui-server.d.ts.map +1 -0
  159. package/dist/test-ui-server.js +1256 -0
  160. package/dist/test-ui-server.js.map +1 -0
  161. package/dist/trpc/context.d.ts +21 -0
  162. package/dist/trpc/context.d.ts.map +1 -0
  163. package/dist/trpc/context.js +10 -0
  164. package/dist/trpc/context.js.map +1 -0
  165. package/dist/trpc/error-formatter.d.ts +18 -0
  166. package/dist/trpc/error-formatter.d.ts.map +1 -0
  167. package/dist/trpc/error-formatter.js +41 -0
  168. package/dist/trpc/error-formatter.js.map +1 -0
  169. package/dist/trpc/index.d.ts +18 -0
  170. package/dist/trpc/index.d.ts.map +1 -0
  171. package/dist/trpc/index.js +13 -0
  172. package/dist/trpc/index.js.map +1 -0
  173. package/dist/trpc/middleware.d.ts +8 -0
  174. package/dist/trpc/middleware.d.ts.map +1 -0
  175. package/dist/trpc/middleware.js +12 -0
  176. package/dist/trpc/middleware.js.map +1 -0
  177. package/dist/trpc/router.d.ts +2543 -0
  178. package/dist/trpc/router.d.ts.map +1 -0
  179. package/dist/trpc/router.js +43 -0
  180. package/dist/trpc/router.js.map +1 -0
  181. package/dist/trpc/routers/assets.d.ts +229 -0
  182. package/dist/trpc/routers/assets.d.ts.map +1 -0
  183. package/dist/trpc/routers/assets.js +263 -0
  184. package/dist/trpc/routers/assets.js.map +1 -0
  185. package/dist/trpc/routers/collections.d.ts +88 -0
  186. package/dist/trpc/routers/collections.d.ts.map +1 -0
  187. package/dist/trpc/routers/collections.js +166 -0
  188. package/dist/trpc/routers/collections.js.map +1 -0
  189. package/dist/trpc/routers/costs.d.ts +129 -0
  190. package/dist/trpc/routers/costs.d.ts.map +1 -0
  191. package/dist/trpc/routers/costs.js +95 -0
  192. package/dist/trpc/routers/costs.js.map +1 -0
  193. package/dist/trpc/routers/files.d.ts +34 -0
  194. package/dist/trpc/routers/files.d.ts.map +1 -0
  195. package/dist/trpc/routers/files.js +92 -0
  196. package/dist/trpc/routers/files.js.map +1 -0
  197. package/dist/trpc/routers/jobs.d.ts +92 -0
  198. package/dist/trpc/routers/jobs.d.ts.map +1 -0
  199. package/dist/trpc/routers/jobs.js +100 -0
  200. package/dist/trpc/routers/jobs.js.map +1 -0
  201. package/dist/trpc/routers/mcp-config.d.ts +69 -0
  202. package/dist/trpc/routers/mcp-config.d.ts.map +1 -0
  203. package/dist/trpc/routers/mcp-config.js +290 -0
  204. package/dist/trpc/routers/mcp-config.js.map +1 -0
  205. package/dist/trpc/routers/messages.d.ts +121 -0
  206. package/dist/trpc/routers/messages.d.ts.map +1 -0
  207. package/dist/trpc/routers/messages.js +113 -0
  208. package/dist/trpc/routers/messages.js.map +1 -0
  209. package/dist/trpc/routers/models.d.ts +748 -0
  210. package/dist/trpc/routers/models.d.ts.map +1 -0
  211. package/dist/trpc/routers/models.js +1107 -0
  212. package/dist/trpc/routers/models.js.map +1 -0
  213. package/dist/trpc/routers/nodes.d.ts +48 -0
  214. package/dist/trpc/routers/nodes.d.ts.map +1 -0
  215. package/dist/trpc/routers/nodes.js +57 -0
  216. package/dist/trpc/routers/nodes.js.map +1 -0
  217. package/dist/trpc/routers/sandboxes.d.ts +64 -0
  218. package/dist/trpc/routers/sandboxes.d.ts.map +1 -0
  219. package/dist/trpc/routers/sandboxes.js +327 -0
  220. package/dist/trpc/routers/sandboxes.js.map +1 -0
  221. package/dist/trpc/routers/settings.d.ts +113 -0
  222. package/dist/trpc/routers/settings.d.ts.map +1 -0
  223. package/dist/trpc/routers/settings.js +193 -0
  224. package/dist/trpc/routers/settings.js.map +1 -0
  225. package/dist/trpc/routers/skills.d.ts +41 -0
  226. package/dist/trpc/routers/skills.d.ts.map +1 -0
  227. package/dist/trpc/routers/skills.js +194 -0
  228. package/dist/trpc/routers/skills.js.map +1 -0
  229. package/dist/trpc/routers/storage.d.ts +44 -0
  230. package/dist/trpc/routers/storage.d.ts.map +1 -0
  231. package/dist/trpc/routers/storage.js +153 -0
  232. package/dist/trpc/routers/storage.js.map +1 -0
  233. package/dist/trpc/routers/threads.d.ts +95 -0
  234. package/dist/trpc/routers/threads.d.ts.map +1 -0
  235. package/dist/trpc/routers/threads.js +150 -0
  236. package/dist/trpc/routers/threads.js.map +1 -0
  237. package/dist/trpc/routers/users.d.ts +79 -0
  238. package/dist/trpc/routers/users.d.ts.map +1 -0
  239. package/dist/trpc/routers/users.js +125 -0
  240. package/dist/trpc/routers/users.js.map +1 -0
  241. package/dist/trpc/routers/workflows.d.ts +681 -0
  242. package/dist/trpc/routers/workflows.d.ts.map +1 -0
  243. package/dist/trpc/routers/workflows.js +725 -0
  244. package/dist/trpc/routers/workflows.js.map +1 -0
  245. package/dist/trpc/routers/workspace.d.ts +127 -0
  246. package/dist/trpc/routers/workspace.d.ts.map +1 -0
  247. package/dist/trpc/routers/workspace.js +203 -0
  248. package/dist/trpc/routers/workspace.js.map +1 -0
  249. package/dist/unified-websocket-runner.d.ts +280 -0
  250. package/dist/unified-websocket-runner.d.ts.map +1 -0
  251. package/dist/unified-websocket-runner.js +3840 -0
  252. package/dist/unified-websocket-runner.js.map +1 -0
  253. package/dist/workspace-api.d.ts +14 -0
  254. package/dist/workspace-api.d.ts.map +1 -0
  255. package/dist/workspace-api.js +104 -0
  256. package/dist/workspace-api.js.map +1 -0
  257. package/dist/ws-adapter.d.ts +25 -0
  258. package/dist/ws-adapter.d.ts.map +1 -0
  259. package/dist/ws-adapter.js +63 -0
  260. package/dist/ws-adapter.js.map +1 -0
  261. package/package.json +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-agent.js","sourceRoot":"","sources":["../../src/agent/opencode-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Pi SDK agent integration.
3
+ *
4
+ * Wraps @mariozechner/pi-coding-agent to expose a NodeTool agent session that
5
+ * talks to whichever LLM provider the user has configured in pi
6
+ * (~/.pi/agent/auth.json). Frontend UI tools are bridged into pi as
7
+ * `customTools` that forward calls back through the NodeTool AgentTransport,
8
+ * mirroring the MCP bridge used by Claude/Codex.
9
+ */
10
+ import type { AgentTransport } from "./transport.js";
11
+ import type { AgentGetSessionMessagesRequest, AgentListSessionsRequest, AgentMessage, AgentModelDescriptor, AgentSessionInfoEntry, AgentTranscriptMessage, FrontendToolManifest } from "./types.js";
12
+ export declare function listPiModels(): Promise<AgentModelDescriptor[]>;
13
+ export declare class PiQuerySession {
14
+ private closed;
15
+ private readonly workspacePath;
16
+ private readonly systemPrompt;
17
+ private readonly modelProvider;
18
+ private readonly modelId;
19
+ private inFlight;
20
+ private resolvedSessionId;
21
+ /**
22
+ * Lazily created on first send so we can rebuild tools from the current
23
+ * renderer manifest. Pi's AgentSession is stateful, so we only build it once
24
+ * and then patch tools/model on subsequent sends.
25
+ */
26
+ private piSession;
27
+ private abortController;
28
+ constructor(options: {
29
+ model: string;
30
+ workspacePath: string;
31
+ resumeSessionId?: string;
32
+ systemPrompt?: string;
33
+ });
34
+ private ensureSession;
35
+ send(message: string, transport: AgentTransport | null, sessionId: string, manifest: FrontendToolManifest[], onMessage?: (message: AgentMessage) => void, _mcpServerUrl?: string | null): Promise<AgentMessage[]>;
36
+ private convertEvent;
37
+ interrupt(): Promise<void>;
38
+ close(): void;
39
+ }
40
+ export declare function listPiSessions(options: AgentListSessionsRequest): Promise<AgentSessionInfoEntry[]>;
41
+ export declare function getPiSessionMessages(options: AgentGetSessionMessagesRequest): Promise<AgentTranscriptMessage[]>;
42
+ //# sourceMappingURL=pi-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-agent.d.ts","sourceRoot":"","sources":["../../src/agent/pi-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AA4CpB,wBAAsB,YAAY,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAuBpE;AAiED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAgB;IACzC;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAEU;IAC3B,OAAO,CAAC,eAAe,CAAgC;gBAE3C,OAAO,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;YASa,aAAa;IAkErB,IAAI,CACR,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,oBAAoB,EAAE,EAChC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,EAC3C,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;IAiF1B,OAAO,CAAC,YAAY;IA6Dd,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAehC,KAAK,IAAI,IAAI;CAiBd;AAmCD,wBAAsB,cAAc,CAClC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA2BlC;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA6BnC"}
@@ -0,0 +1,429 @@
1
+ /**
2
+ * Pi SDK agent integration.
3
+ *
4
+ * Wraps @mariozechner/pi-coding-agent to expose a NodeTool agent session that
5
+ * talks to whichever LLM provider the user has configured in pi
6
+ * (~/.pi/agent/auth.json). Frontend UI tools are bridged into pi as
7
+ * `customTools` that forward calls back through the NodeTool AgentTransport,
8
+ * mirroring the MCP bridge used by Claude/Codex.
9
+ */
10
+ import { randomUUID } from "node:crypto";
11
+ import { createLogger } from "@nodetool-ai/config";
12
+ import { AuthStorage, ModelRegistry, SessionManager, SettingsManager, createAgentSession, defineTool, } from "@mariozechner/pi-coding-agent";
13
+ const log = createLogger("nodetool.websocket.agent.pi");
14
+ let authStorageInstance = null;
15
+ let modelRegistryInstance = null;
16
+ function getAuthStorage() {
17
+ if (!authStorageInstance) {
18
+ authStorageInstance = AuthStorage.create();
19
+ }
20
+ return authStorageInstance;
21
+ }
22
+ function getModelRegistry() {
23
+ if (!modelRegistryInstance) {
24
+ modelRegistryInstance = ModelRegistry.create(getAuthStorage());
25
+ }
26
+ return modelRegistryInstance;
27
+ }
28
+ function parseCompositeModelId(composite) {
29
+ const slash = composite.indexOf("/");
30
+ if (slash > 0) {
31
+ return {
32
+ provider: composite.slice(0, slash),
33
+ id: composite.slice(slash + 1),
34
+ };
35
+ }
36
+ // No slash — treat whole thing as an id under anthropic (best-effort default).
37
+ return { provider: "anthropic", id: composite };
38
+ }
39
+ function toDescriptor(m) {
40
+ return {
41
+ id: `${m.provider}/${m.id}`,
42
+ label: `${m.name} (${m.provider})`,
43
+ provider: "pi",
44
+ supportsReasoningEffort: m.reasoning,
45
+ };
46
+ }
47
+ export async function listPiModels() {
48
+ try {
49
+ const registry = getModelRegistry();
50
+ registry.refresh();
51
+ const available = registry.getAvailable();
52
+ const source = available.length > 0 ? available : registry.getAll();
53
+ const descriptors = source.map(toDescriptor);
54
+ if (descriptors.length > 0 && !descriptors.some((d) => d.isDefault)) {
55
+ // Prefer the first "available" model as default; otherwise fall back to
56
+ // the first model overall.
57
+ descriptors[0].isDefault = true;
58
+ }
59
+ return descriptors;
60
+ }
61
+ catch (error) {
62
+ log.error("Failed to list Pi models", error instanceof Error ? error : new Error(String(error)));
63
+ return [];
64
+ }
65
+ }
66
+ /**
67
+ * Build pi `customTools` from a NodeTool frontend tool manifest. Each call is
68
+ * forwarded to the renderer over the shared AgentTransport; the result is
69
+ * wrapped into pi's tool-result shape so agent-core can feed it back to the
70
+ * LLM.
71
+ */
72
+ function buildCustomTools(manifest, transport, sessionIdRef) {
73
+ return manifest.map((entry) => {
74
+ // Pi expects a TypeBox TSchema for `parameters`, but at runtime the type
75
+ // is only used by AJV (validation) and the provider adapters (sent as
76
+ // inputSchema to the LLM). A plain JSON Schema works for both.
77
+ const parameters = (entry.parameters ?? {
78
+ type: "object",
79
+ properties: {},
80
+ });
81
+ return defineTool({
82
+ name: entry.name,
83
+ label: entry.name,
84
+ description: entry.description,
85
+ parameters,
86
+ // Don't run pi's schema validation on the renderer's JSON Schema — the
87
+ // renderer owns the canonical schema, and we don't want a TypeBox
88
+ // round-trip to reject valid args on a quirk.
89
+ prepareArguments: (args) => args,
90
+ execute: async (toolCallId, params) => {
91
+ try {
92
+ const result = await transport.executeTool(sessionIdRef.current, toolCallId, entry.name, params ?? {});
93
+ const text = typeof result === "string"
94
+ ? result
95
+ : JSON.stringify(result ?? null);
96
+ const details = {};
97
+ return {
98
+ content: [{ type: "text", text }],
99
+ details,
100
+ };
101
+ }
102
+ catch (error) {
103
+ const message = error instanceof Error ? error.message : String(error);
104
+ const details = { error: message };
105
+ return {
106
+ content: [{ type: "text", text: `Error: ${message}` }],
107
+ details,
108
+ };
109
+ }
110
+ },
111
+ });
112
+ });
113
+ }
114
+ export class PiQuerySession {
115
+ closed = false;
116
+ workspacePath;
117
+ systemPrompt;
118
+ modelProvider;
119
+ modelId;
120
+ inFlight = false;
121
+ resolvedSessionId;
122
+ /**
123
+ * Lazily created on first send so we can rebuild tools from the current
124
+ * renderer manifest. Pi's AgentSession is stateful, so we only build it once
125
+ * and then patch tools/model on subsequent sends.
126
+ */
127
+ piSession = null;
128
+ abortController = null;
129
+ constructor(options) {
130
+ const parsed = parseCompositeModelId(options.model);
131
+ this.modelProvider = parsed.provider;
132
+ this.modelId = parsed.id;
133
+ this.workspacePath = options.workspacePath;
134
+ this.systemPrompt = options.systemPrompt ?? "";
135
+ this.resolvedSessionId = options.resumeSessionId ?? null;
136
+ }
137
+ async ensureSession(manifest, transport, sessionIdRef) {
138
+ const registry = getModelRegistry();
139
+ const model = registry.find(this.modelProvider, this.modelId);
140
+ if (!model) {
141
+ throw new Error(`Pi model not found: ${this.modelProvider}/${this.modelId}`);
142
+ }
143
+ const customTools = buildCustomTools(manifest, transport, sessionIdRef);
144
+ if (this.piSession) {
145
+ // Pi allows in-place model/tool swaps.
146
+ await this.piSession.setModel(model);
147
+ this.piSession.agent.state.tools = customTools;
148
+ return this.piSession;
149
+ }
150
+ // Resolve persistence target. New sessions create a fresh file under
151
+ // ~/.pi/agent/sessions/<encoded-cwd>/; resumed sessions open the
152
+ // existing file whose header id matches resolvedSessionId.
153
+ let sessionManager;
154
+ if (this.resolvedSessionId) {
155
+ const existingPath = await findPiSessionPath(this.workspacePath, this.resolvedSessionId);
156
+ if (!existingPath) {
157
+ throw new Error(`Pi session not found for id: ${this.resolvedSessionId}`);
158
+ }
159
+ sessionManager = SessionManager.open(existingPath);
160
+ }
161
+ else {
162
+ sessionManager = SessionManager.create(this.workspacePath);
163
+ }
164
+ const { session } = await createAgentSession({
165
+ cwd: this.workspacePath,
166
+ model,
167
+ authStorage: getAuthStorage(),
168
+ modelRegistry: registry,
169
+ sessionManager,
170
+ // Disable compaction; every turn is a full round-trip to the renderer
171
+ // and the NodeTool UI handles context-window management itself.
172
+ settingsManager: SettingsManager.inMemory({
173
+ compaction: { enabled: false },
174
+ }),
175
+ // Only the frontend tools are wired up — no file/bash/etc access.
176
+ tools: [],
177
+ customTools,
178
+ });
179
+ if (this.systemPrompt.trim().length > 0) {
180
+ session.agent.state.systemPrompt = this.systemPrompt;
181
+ }
182
+ this.piSession = session;
183
+ return session;
184
+ }
185
+ async send(message, transport, sessionId, manifest, onMessage, _mcpServerUrl) {
186
+ if (this.closed) {
187
+ throw new Error("Cannot send to a closed session");
188
+ }
189
+ if (this.inFlight) {
190
+ throw new Error("A Pi request is already in progress for this session");
191
+ }
192
+ if (!transport) {
193
+ throw new Error("Pi sessions require an active transport");
194
+ }
195
+ this.inFlight = true;
196
+ this.abortController = new AbortController();
197
+ const sessionIdRef = {
198
+ current: this.resolvedSessionId ?? sessionId,
199
+ };
200
+ const outputMessages = [];
201
+ const emittedToolCalls = new Set();
202
+ const textBuffers = new Map();
203
+ let session;
204
+ try {
205
+ session = await this.ensureSession(manifest, transport, sessionIdRef);
206
+ }
207
+ catch (error) {
208
+ const errorMsg = {
209
+ type: "result",
210
+ uuid: randomUUID(),
211
+ session_id: sessionIdRef.current,
212
+ subtype: "error",
213
+ is_error: true,
214
+ errors: [error instanceof Error ? error.message : String(error)],
215
+ };
216
+ if (onMessage)
217
+ onMessage(errorMsg);
218
+ outputMessages.push(errorMsg);
219
+ this.abortController = null;
220
+ this.inFlight = false;
221
+ return outputMessages;
222
+ }
223
+ this.resolvedSessionId = session.sessionId;
224
+ sessionIdRef.current = session.sessionId;
225
+ const unsubscribe = session.subscribe((event) => {
226
+ const agentMsg = this.convertEvent(event, session.sessionId, textBuffers, emittedToolCalls);
227
+ if (!agentMsg)
228
+ return;
229
+ outputMessages.push(agentMsg);
230
+ if (onMessage)
231
+ onMessage(agentMsg);
232
+ });
233
+ try {
234
+ await session.prompt(message);
235
+ return outputMessages;
236
+ }
237
+ catch (error) {
238
+ if (this.abortController?.signal.aborted) {
239
+ log.info("Pi turn was interrupted");
240
+ return outputMessages;
241
+ }
242
+ const errorMsg = {
243
+ type: "result",
244
+ uuid: randomUUID(),
245
+ session_id: sessionIdRef.current,
246
+ subtype: "error",
247
+ is_error: true,
248
+ errors: [error instanceof Error ? error.message : String(error)],
249
+ };
250
+ if (onMessage)
251
+ onMessage(errorMsg);
252
+ outputMessages.push(errorMsg);
253
+ return outputMessages;
254
+ }
255
+ finally {
256
+ unsubscribe();
257
+ this.abortController = null;
258
+ this.inFlight = false;
259
+ }
260
+ }
261
+ convertEvent(event, sessionId, textBuffers, emittedToolCalls) {
262
+ switch (event.type) {
263
+ case "message_update": {
264
+ const inner = event.assistantMessageEvent;
265
+ if (inner.type === "text_delta") {
266
+ const msgId = event.message.id ?? sessionId;
267
+ const current = (textBuffers.get(msgId) ?? "") + inner.delta;
268
+ textBuffers.set(msgId, current);
269
+ return {
270
+ type: "assistant",
271
+ uuid: msgId,
272
+ session_id: sessionId,
273
+ content: [{ type: "text", text: current }],
274
+ };
275
+ }
276
+ return null;
277
+ }
278
+ case "message_end": {
279
+ const msgId = event.message.id;
280
+ if (msgId)
281
+ textBuffers.delete(msgId);
282
+ return null;
283
+ }
284
+ case "tool_execution_start": {
285
+ if (emittedToolCalls.has(event.toolCallId))
286
+ return null;
287
+ emittedToolCalls.add(event.toolCallId);
288
+ return {
289
+ type: "assistant",
290
+ uuid: event.toolCallId,
291
+ session_id: sessionId,
292
+ content: [],
293
+ tool_calls: [
294
+ {
295
+ id: event.toolCallId,
296
+ type: "function",
297
+ function: {
298
+ name: event.toolName,
299
+ arguments: JSON.stringify(event.args ?? {}),
300
+ },
301
+ },
302
+ ],
303
+ };
304
+ }
305
+ case "agent_end": {
306
+ return {
307
+ type: "result",
308
+ uuid: randomUUID(),
309
+ session_id: sessionId,
310
+ subtype: "success",
311
+ };
312
+ }
313
+ default:
314
+ return null;
315
+ }
316
+ }
317
+ async interrupt() {
318
+ if (this.abortController) {
319
+ this.abortController.abort();
320
+ }
321
+ if (this.piSession) {
322
+ try {
323
+ await this.piSession.abort();
324
+ }
325
+ catch (error) {
326
+ log.warn(`Failed to abort Pi session: ${error instanceof Error ? error.message : String(error)}`);
327
+ }
328
+ }
329
+ }
330
+ close() {
331
+ if (this.closed)
332
+ return;
333
+ this.closed = true;
334
+ if (this.abortController) {
335
+ this.abortController.abort();
336
+ }
337
+ if (this.piSession) {
338
+ try {
339
+ this.piSession.dispose();
340
+ }
341
+ catch (error) {
342
+ log.warn(`Failed to dispose Pi session: ${error instanceof Error ? error.message : String(error)}`);
343
+ }
344
+ this.piSession = null;
345
+ }
346
+ }
347
+ }
348
+ function extractMessageText(message) {
349
+ if (message.role === "user") {
350
+ if (typeof message.content === "string")
351
+ return message.content;
352
+ return message.content
353
+ .filter((c) => c.type === "text")
354
+ .map((c) => c.text)
355
+ .join("\n");
356
+ }
357
+ if (message.role === "assistant") {
358
+ return message.content
359
+ .filter((c) => c.type === "text")
360
+ .map((c) => c.text)
361
+ .join("\n");
362
+ }
363
+ return "";
364
+ }
365
+ async function listPiSessionInfos(dir) {
366
+ if (dir) {
367
+ return SessionManager.list(dir);
368
+ }
369
+ return SessionManager.listAll();
370
+ }
371
+ async function findPiSessionPath(dir, sessionId) {
372
+ const infos = await listPiSessionInfos(dir);
373
+ const match = infos.find((info) => info.id === sessionId);
374
+ return match ? match.path : null;
375
+ }
376
+ export async function listPiSessions(options) {
377
+ try {
378
+ const infos = await listPiSessionInfos(options.dir);
379
+ // Sort newest-first for UI convenience and apply offset/limit.
380
+ infos.sort((a, b) => b.modified.getTime() - a.modified.getTime());
381
+ const offset = options.offset ?? 0;
382
+ const limit = options.limit ?? 50;
383
+ const page = infos.slice(offset, offset + limit);
384
+ return page.map((info) => ({
385
+ sessionId: info.id,
386
+ summary: info.name?.trim() || info.firstMessage || info.id,
387
+ lastModified: info.modified.getTime(),
388
+ cwd: info.cwd || undefined,
389
+ firstPrompt: info.firstMessage || undefined,
390
+ createdAt: info.created.getTime(),
391
+ customTitle: info.name,
392
+ provider: "pi",
393
+ }));
394
+ }
395
+ catch (error) {
396
+ log.error("Failed to list Pi sessions", error instanceof Error ? error : new Error(String(error)));
397
+ return [];
398
+ }
399
+ }
400
+ export async function getPiSessionMessages(options) {
401
+ try {
402
+ const path = await findPiSessionPath(options.dir, options.sessionId);
403
+ if (!path)
404
+ return [];
405
+ const manager = SessionManager.open(path);
406
+ const { messages } = manager.buildSessionContext();
407
+ return messages
408
+ .map((message, index) => {
409
+ const msg = message;
410
+ if (msg.role !== "user" && msg.role !== "assistant")
411
+ return null;
412
+ const text = extractMessageText(msg);
413
+ if (text.length === 0)
414
+ return null;
415
+ return {
416
+ type: msg.role,
417
+ uuid: `${options.sessionId}-${index}`,
418
+ session_id: options.sessionId,
419
+ text,
420
+ };
421
+ })
422
+ .filter((m) => m !== null);
423
+ }
424
+ catch (error) {
425
+ log.error("Failed to get Pi session messages", error instanceof Error ? error : new Error(String(error)));
426
+ return [];
427
+ }
428
+ }
429
+ //# sourceMappingURL=pi-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-agent.js","sourceRoot":"","sources":["../../src/agent/pi-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Shared types + the workflow-builder system prompt used by every agent SDK
3
+ * provider. Lives in its own file so the LLM provider can import it without
4
+ * pulling in `agent-runtime.ts` — that file in turn imports
5
+ * LlmAgentSdkProvider, which would create a TDZ-style circular import where
6
+ * the LLM provider's class binding is `undefined` at the time the runtime's
7
+ * provider map is initialized at module load.
8
+ */
9
+ import type { AgentMessage, AgentGetSessionMessagesRequest, AgentListSessionsRequest, AgentModelDescriptor, AgentModelParams, AgentSessionInfoEntry, AgentTranscriptMessage, FrontendToolManifest } from "./types.js";
10
+ import type { AgentTransport } from "./transport.js";
11
+ export declare const SYSTEM_PROMPT: string;
12
+ export interface AgentQuerySession {
13
+ send(message: string, transport: AgentTransport | null, sessionId: string, manifest: FrontendToolManifest[], onMessage?: (message: AgentMessage) => void, mcpServerUrl?: string | null): Promise<AgentMessage[]>;
14
+ interrupt(): Promise<void>;
15
+ close(): void;
16
+ }
17
+ /** Provider interface for agent SDKs (Claude, Codex, OpenCode, LLM). */
18
+ export interface AgentSdkProvider {
19
+ readonly name: string;
20
+ /**
21
+ * `userId` is required so the LLM provider can look up the right user's
22
+ * configured chat-provider secrets. Harness providers may ignore it.
23
+ */
24
+ listModels(userId: string, workspacePath?: string): Promise<AgentModelDescriptor[]>;
25
+ createSession(options: {
26
+ model: string;
27
+ workspacePath: string;
28
+ /**
29
+ * Authenticated user owning this session. Required — the agent socket
30
+ * route refuses unauthenticated connections, and providers that persist
31
+ * (LLM) must scope writes to this user. Harness providers may ignore it.
32
+ */
33
+ userId: string;
34
+ resumeSessionId?: string;
35
+ systemPrompt?: string;
36
+ modelParams?: AgentModelParams;
37
+ /**
38
+ * For the "llm" provider only — picks the underlying chat provider
39
+ * (anthropic / openai / gemini / …). Ignored by harness providers.
40
+ */
41
+ chatProviderId?: string;
42
+ }): AgentQuerySession;
43
+ listSessions(options: AgentListSessionsRequest, userId: string): Promise<AgentSessionInfoEntry[]>;
44
+ getSessionMessages(options: AgentGetSessionMessagesRequest, userId: string): Promise<AgentTranscriptMessage[]>;
45
+ }
46
+ //# sourceMappingURL=sdk-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-provider.d.ts","sourceRoot":"","sources":["../../src/agent/sdk-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,aAAa,QAwCd,CAAC;AAEb,MAAM,WAAW,iBAAiB;IAChC,IAAI,CACF,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,oBAAoB,EAAE,EAChC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,EAC3C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC3B,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,CACR,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACnC,aAAa,CAAC,OAAO,EAAE;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB;;;;WAIG;QACH,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,gBAAgB,CAAC;QAC/B;;;WAGG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,iBAAiB,CAAC;IACtB,YAAY,CACV,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACpC,kBAAkB,CAChB,OAAO,EAAE,8BAA8B,EACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;CACtC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Shared types + the workflow-builder system prompt used by every agent SDK
3
+ * provider. Lives in its own file so the LLM provider can import it without
4
+ * pulling in `agent-runtime.ts` — that file in turn imports
5
+ * LlmAgentSdkProvider, which would create a TDZ-style circular import where
6
+ * the LLM provider's class binding is `undefined` at the time the runtime's
7
+ * provider map is initialized at module load.
8
+ */
9
+ export const SYSTEM_PROMPT = [
10
+ "You are a Nodetool workflow assistant. Build workflows as DAGs where nodes are operations and edges are typed data flows.",
11
+ "Use only frontend UI tools from this session manifest (`ui_*`). Never create/edit workflow files.",
12
+ "",
13
+ "## Rules",
14
+ "- Never invent node types, property names, or IDs.",
15
+ "- Always call `ui_search_nodes` before adding nodes; use `include_properties=true` for exact field names.",
16
+ "- Never assume node availability from memory; resolve every node type via `ui_search_nodes`.",
17
+ "- Do not call tools that are not in the manifest.",
18
+ "- Do not explain plans between each tool call; execute directly and summarize only at the end.",
19
+ "- Reply in short bullets; no verbose explanations.",
20
+ "",
21
+ "## Workflow Sequence",
22
+ "1. `ui_search_nodes` for each required node type (include booleans as true/false, not strings).",
23
+ "2. `ui_add_node` or `ui_graph` to place nodes.",
24
+ "3. `ui_connect_nodes` with verified handle names.",
25
+ "4. `ui_get_graph` once to verify final state.",
26
+ "- Avoid repeated identical searches. If first result clearly matches, use it.",
27
+ "- If blocked, ask one concise clarification question and stop.",
28
+ "",
29
+ "## Generic AI nodes (prefer these over provider-specific ones)",
30
+ "These route to whichever model the user has configured — pick them before reaching for `huggingface.*`, `comfy.*`, `kie.*`, `fal.*`, `replicate.*` equivalents:",
31
+ "- Media generation: `nodetool.image.TextToImage`, `nodetool.image.ImageToImage`, `nodetool.video.TextToVideo`, `nodetool.video.ImageToVideo`, `nodetool.audio.TextToSpeech`, `nodetool.model3d.TextTo3D`, `nodetool.model3d.ImageTo3D`",
32
+ "- LLM agents: `nodetool.agents.Agent` (general, tool-capable), `nodetool.agents.Summarizer`, `nodetool.agents.Classifier`, `nodetool.agents.Extractor`",
33
+ "- Structured generation: `nodetool.generators.StructuredOutputGenerator` (schema-constrained JSON), `nodetool.generators.DataGenerator` (dataframe rows), `nodetool.generators.ListGenerator`, `nodetool.generators.ChartGenerator`, `nodetool.generators.SVGGenerator`",
34
+ "- Other: `nodetool.text.AutomaticSpeechRecognition` (STT), `nodetool.text.Embedding`",
35
+ "Still call `ui_search_nodes` to confirm the type and discover its `properties[].name` / `outputs[].name` before adding or connecting.",
36
+ "",
37
+ "## Choosing a model for AI nodes",
38
+ "Every generic AI node above has a `model` property whose value cannot be guessed — it depends on which providers the user has configured. Always call `ui_search_models` with the matching `kind`, then pass the chosen entry **as-is** (the whole object, not just its `id`) into `ui_update_node_data` under `data.properties.model`. Example: `ui_update_node_data({ node_id, data: { properties: { model: <entry from ui_search_models> } } })`. A bare id string will be rejected — the node reads `model.provider` and `model.id` separately. Mapping of kind → node type:",
39
+ "- `text_to_image` ↔ nodetool.image.TextToImage",
40
+ "- `image_to_image` ↔ nodetool.image.ImageToImage",
41
+ "- `text_to_video` ↔ nodetool.video.TextToVideo",
42
+ "- `image_to_video` ↔ nodetool.video.ImageToVideo",
43
+ "- `text_to_speech` ↔ nodetool.audio.TextToSpeech",
44
+ "- `speech_to_text` ↔ nodetool.text.AutomaticSpeechRecognition",
45
+ "- `text_generation` ↔ nodetool.agents.* and nodetool.generators.*",
46
+ "- `embedding` ↔ nodetool.text.Embedding",
47
+ "If `ui_search_models` returns an empty list, ask the user to install/configure a model for that task before continuing.",
48
+ "When multiple models are available, prefer the newest generation from the same family unless the user asks otherwise. Use the version/date in the id to decide (e.g. `claude-sonnet-4-6` over `claude-3-5-sonnet`, `gpt-5*` over `gpt-4*`, `flux-2` over `flux-1.x`, `gemini-3` over `gemini-2.x`). Do not pick deprecated or legacy ids when a newer same-family id is in the list.",
49
+ ].join("\n");
50
+ //# sourceMappingURL=sdk-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-provider.js","sourceRoot":"","sources":["../../src/agent/sdk-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,2HAA2H;IAC3H,mGAAmG;IACnG,EAAE;IACF,UAAU;IACV,oDAAoD;IACpD,2GAA2G;IAC3G,8FAA8F;IAC9F,mDAAmD;IACnD,gGAAgG;IAChG,oDAAoD;IACpD,EAAE;IACF,sBAAsB;IACtB,iGAAiG;IACjG,gDAAgD;IAChD,mDAAmD;IACnD,+CAA+C;IAC/C,+EAA+E;IAC/E,gEAAgE;IAChE,EAAE;IACF,gEAAgE;IAChE,iKAAiK;IACjK,wOAAwO;IACxO,wJAAwJ;IACxJ,yQAAyQ;IACzQ,sFAAsF;IACtF,uIAAuI;IACvI,EAAE;IACF,kCAAkC;IAClC,kjBAAkjB;IACljB,gDAAgD;IAChD,kDAAkD;IAClD,gDAAgD;IAChD,kDAAkD;IAClD,kDAAkD;IAClD,+DAA+D;IAC/D,mEAAmE;IACnE,yCAAyC;IACzC,yHAAyH;IACzH,sXAAsX;CACvX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * WebSocket route + transport for the agent runtime.
3
+ *
4
+ * Each connection at `/ws/agent` gets its own `AgentSocketTransport` instance
5
+ * that bridges agent-runtime events to the renderer over the socket using
6
+ * the JSON message protocol defined in `./types.ts`.
7
+ */
8
+ import type { FastifyPluginAsync } from "fastify";
9
+ declare const agentSocketRoute: FastifyPluginAsync;
10
+ export default agentSocketRoute;
11
+ //# sourceMappingURL=socket-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-route.d.ts","sourceRoot":"","sources":["../../src/agent/socket-route.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA4JlD,QAAA,MAAM,gBAAgB,EAAE,kBA2KvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}