@snoglobe/helios 0.1.0 → 0.2.1

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 (250) hide show
  1. package/README.md +1 -1
  2. package/dist/acp/entry.d.ts +7 -0
  3. package/dist/acp/entry.d.ts.map +1 -0
  4. package/dist/acp/entry.js +46 -0
  5. package/dist/acp/entry.js.map +1 -0
  6. package/dist/acp/server.d.ts +57 -0
  7. package/dist/acp/server.d.ts.map +1 -0
  8. package/dist/acp/server.js +434 -0
  9. package/dist/acp/server.js.map +1 -0
  10. package/dist/acp/transport.d.ts +31 -0
  11. package/dist/acp/transport.d.ts.map +1 -0
  12. package/dist/acp/transport.js +116 -0
  13. package/dist/acp/transport.js.map +1 -0
  14. package/dist/acp/types.d.ts +213 -0
  15. package/dist/acp/types.d.ts.map +1 -0
  16. package/dist/acp/types.js +3 -0
  17. package/dist/acp/types.js.map +1 -0
  18. package/dist/app.d.ts +8 -1
  19. package/dist/app.d.ts.map +1 -1
  20. package/dist/app.js +51 -281
  21. package/dist/app.js.map +1 -1
  22. package/dist/bootstrap.d.ts +3 -0
  23. package/dist/bootstrap.d.ts.map +1 -0
  24. package/dist/bootstrap.js +26 -0
  25. package/dist/bootstrap.js.map +1 -0
  26. package/dist/cli/auth.d.ts +20 -0
  27. package/dist/cli/auth.d.ts.map +1 -0
  28. package/dist/cli/auth.js +62 -0
  29. package/dist/cli/auth.js.map +1 -0
  30. package/dist/cli/doctor.d.ts +9 -0
  31. package/dist/cli/doctor.d.ts.map +1 -0
  32. package/dist/cli/doctor.js +368 -0
  33. package/dist/cli/doctor.js.map +1 -0
  34. package/dist/cli/env.d.ts +13 -0
  35. package/dist/cli/env.d.ts.map +1 -0
  36. package/dist/cli/env.js +16 -0
  37. package/dist/cli/env.js.map +1 -0
  38. package/dist/cli/export.d.ts +11 -0
  39. package/dist/cli/export.d.ts.map +1 -0
  40. package/dist/cli/export.js +103 -0
  41. package/dist/cli/export.js.map +1 -0
  42. package/dist/cli/index.d.ts +22 -0
  43. package/dist/cli/index.d.ts.map +1 -0
  44. package/dist/cli/index.js +71 -0
  45. package/dist/cli/index.js.map +1 -0
  46. package/dist/cli/init-cmd.d.ts +11 -0
  47. package/dist/cli/init-cmd.d.ts.map +1 -0
  48. package/dist/cli/init-cmd.js +37 -0
  49. package/dist/cli/init-cmd.js.map +1 -0
  50. package/dist/cli/kill.d.ts +8 -0
  51. package/dist/cli/kill.d.ts.map +1 -0
  52. package/dist/cli/kill.js +46 -0
  53. package/dist/cli/kill.js.map +1 -0
  54. package/dist/cli/options.d.ts +18 -0
  55. package/dist/cli/options.d.ts.map +1 -0
  56. package/dist/cli/options.js +24 -0
  57. package/dist/cli/options.js.map +1 -0
  58. package/dist/cli/replay.d.ts +9 -0
  59. package/dist/cli/replay.d.ts.map +1 -0
  60. package/dist/cli/replay.js +65 -0
  61. package/dist/cli/replay.js.map +1 -0
  62. package/dist/cli/report.d.ts +11 -0
  63. package/dist/cli/report.d.ts.map +1 -0
  64. package/dist/cli/report.js +70 -0
  65. package/dist/cli/report.js.map +1 -0
  66. package/dist/cli/run.d.ts +17 -0
  67. package/dist/cli/run.d.ts.map +1 -0
  68. package/dist/cli/run.js +120 -0
  69. package/dist/cli/run.js.map +1 -0
  70. package/dist/cli/search.d.ts +9 -0
  71. package/dist/cli/search.d.ts.map +1 -0
  72. package/dist/cli/search.js +52 -0
  73. package/dist/cli/search.js.map +1 -0
  74. package/dist/cli/sessions.d.ts +8 -0
  75. package/dist/cli/sessions.d.ts.map +1 -0
  76. package/dist/cli/sessions.js +38 -0
  77. package/dist/cli/sessions.js.map +1 -0
  78. package/dist/cli/watch.d.ts +8 -0
  79. package/dist/cli/watch.d.ts.map +1 -0
  80. package/dist/cli/watch.js +81 -0
  81. package/dist/cli/watch.js.map +1 -0
  82. package/dist/config/project.d.ts +63 -0
  83. package/dist/config/project.d.ts.map +1 -0
  84. package/dist/config/project.js +112 -0
  85. package/dist/config/project.js.map +1 -0
  86. package/dist/core/orchestrator.d.ts +4 -2
  87. package/dist/core/orchestrator.d.ts.map +1 -1
  88. package/dist/core/orchestrator.js +8 -3
  89. package/dist/core/orchestrator.js.map +1 -1
  90. package/dist/core/task-poller.d.ts +43 -0
  91. package/dist/core/task-poller.d.ts.map +1 -0
  92. package/dist/core/task-poller.js +98 -0
  93. package/dist/core/task-poller.js.map +1 -0
  94. package/dist/experiments/branching.d.ts +38 -0
  95. package/dist/experiments/branching.d.ts.map +1 -0
  96. package/dist/experiments/branching.js +80 -0
  97. package/dist/experiments/branching.js.map +1 -0
  98. package/dist/hub/client.d.ts +70 -0
  99. package/dist/hub/client.d.ts.map +1 -0
  100. package/dist/hub/client.js +140 -0
  101. package/dist/hub/client.js.map +1 -0
  102. package/dist/hub/config.d.ts +9 -0
  103. package/dist/hub/config.d.ts.map +1 -0
  104. package/dist/hub/config.js +38 -0
  105. package/dist/hub/config.js.map +1 -0
  106. package/dist/index.d.ts +0 -1
  107. package/dist/index.js +25 -3
  108. package/dist/index.js.map +1 -1
  109. package/dist/init.d.ts +44 -0
  110. package/dist/init.d.ts.map +1 -0
  111. package/dist/init.js +387 -0
  112. package/dist/init.js.map +1 -0
  113. package/dist/memory/context-gate.d.ts.map +1 -1
  114. package/dist/memory/context-gate.js +1 -1
  115. package/dist/memory/context-gate.js.map +1 -1
  116. package/dist/memory/experiment-tracker.d.ts.map +1 -1
  117. package/dist/memory/experiment-tracker.js +2 -6
  118. package/dist/memory/experiment-tracker.js.map +1 -1
  119. package/dist/memory/memory-store.d.ts.map +1 -1
  120. package/dist/memory/memory-store.js +16 -20
  121. package/dist/memory/memory-store.js.map +1 -1
  122. package/dist/metrics/collector.d.ts.map +1 -1
  123. package/dist/metrics/collector.js +7 -7
  124. package/dist/metrics/collector.js.map +1 -1
  125. package/dist/metrics/resources.d.ts +44 -0
  126. package/dist/metrics/resources.d.ts.map +1 -0
  127. package/dist/metrics/resources.js +382 -0
  128. package/dist/metrics/resources.js.map +1 -0
  129. package/dist/metrics/store.d.ts +10 -2
  130. package/dist/metrics/store.d.ts.map +1 -1
  131. package/dist/metrics/store.js +91 -27
  132. package/dist/metrics/store.js.map +1 -1
  133. package/dist/notifications/index.d.ts +2 -0
  134. package/dist/notifications/index.d.ts.map +1 -0
  135. package/dist/notifications/index.js +2 -0
  136. package/dist/notifications/index.js.map +1 -0
  137. package/dist/notifications/notifier.d.ts +36 -0
  138. package/dist/notifications/notifier.d.ts.map +1 -0
  139. package/dist/notifications/notifier.js +102 -0
  140. package/dist/notifications/notifier.js.map +1 -0
  141. package/dist/paths.d.ts +3 -0
  142. package/dist/paths.d.ts.map +1 -0
  143. package/dist/paths.js +5 -0
  144. package/dist/paths.js.map +1 -0
  145. package/dist/providers/claude/provider.d.ts +7 -3
  146. package/dist/providers/claude/provider.d.ts.map +1 -1
  147. package/dist/providers/claude/provider.js +48 -8
  148. package/dist/providers/claude/provider.js.map +1 -1
  149. package/dist/providers/openai/callback-server.d.ts +5 -1
  150. package/dist/providers/openai/callback-server.d.ts.map +1 -1
  151. package/dist/providers/openai/callback-server.js +42 -20
  152. package/dist/providers/openai/callback-server.js.map +1 -1
  153. package/dist/providers/openai/oauth.d.ts +4 -0
  154. package/dist/providers/openai/oauth.d.ts.map +1 -1
  155. package/dist/providers/openai/oauth.js +35 -14
  156. package/dist/providers/openai/oauth.js.map +1 -1
  157. package/dist/providers/openai/provider.d.ts +6 -3
  158. package/dist/providers/openai/provider.d.ts.map +1 -1
  159. package/dist/providers/openai/provider.js +35 -9
  160. package/dist/providers/openai/provider.js.map +1 -1
  161. package/dist/providers/types.d.ts +9 -1
  162. package/dist/providers/types.d.ts.map +1 -1
  163. package/dist/providers/types.js.map +1 -1
  164. package/dist/remote/config.d.ts.map +1 -1
  165. package/dist/remote/config.js +4 -8
  166. package/dist/remote/config.js.map +1 -1
  167. package/dist/remote/connection-pool.d.ts.map +1 -1
  168. package/dist/remote/connection-pool.js +9 -5
  169. package/dist/remote/connection-pool.js.map +1 -1
  170. package/dist/store/database.d.ts.map +1 -1
  171. package/dist/store/database.js +2 -2
  172. package/dist/store/database.js.map +1 -1
  173. package/dist/store/migrations.d.ts.map +1 -1
  174. package/dist/store/migrations.js +27 -0
  175. package/dist/store/migrations.js.map +1 -1
  176. package/dist/store/preferences.d.ts +2 -0
  177. package/dist/store/preferences.d.ts.map +1 -1
  178. package/dist/store/preferences.js +2 -2
  179. package/dist/store/preferences.js.map +1 -1
  180. package/dist/store/session-store.d.ts +6 -0
  181. package/dist/store/session-store.d.ts.map +1 -1
  182. package/dist/store/session-store.js +20 -5
  183. package/dist/store/session-store.js.map +1 -1
  184. package/dist/tools/env-snapshot.d.ts +5 -0
  185. package/dist/tools/env-snapshot.d.ts.map +1 -0
  186. package/dist/tools/env-snapshot.js +174 -0
  187. package/dist/tools/env-snapshot.js.map +1 -0
  188. package/dist/tools/experiment-branch.d.ts +7 -0
  189. package/dist/tools/experiment-branch.d.ts.map +1 -0
  190. package/dist/tools/experiment-branch.js +167 -0
  191. package/dist/tools/experiment-branch.js.map +1 -0
  192. package/dist/tools/file-ops.d.ts.map +1 -1
  193. package/dist/tools/file-ops.js +1 -3
  194. package/dist/tools/file-ops.js.map +1 -1
  195. package/dist/tools/hub.d.ts +5 -0
  196. package/dist/tools/hub.d.ts.map +1 -0
  197. package/dist/tools/hub.js +298 -0
  198. package/dist/tools/hub.js.map +1 -0
  199. package/dist/tools/sweep.d.ts +6 -0
  200. package/dist/tools/sweep.d.ts.map +1 -0
  201. package/dist/tools/sweep.js +153 -0
  202. package/dist/tools/sweep.js.map +1 -0
  203. package/dist/tools/web-fetch.d.ts.map +1 -1
  204. package/dist/tools/web-fetch.js +2 -1
  205. package/dist/tools/web-fetch.js.map +1 -1
  206. package/dist/tools/writeup.d.ts +11 -0
  207. package/dist/tools/writeup.d.ts.map +1 -0
  208. package/dist/tools/writeup.js +102 -0
  209. package/dist/tools/writeup.js.map +1 -0
  210. package/dist/ui/commands.d.ts +36 -0
  211. package/dist/ui/commands.d.ts.map +1 -1
  212. package/dist/ui/commands.js +501 -1
  213. package/dist/ui/commands.js.map +1 -1
  214. package/dist/ui/components/input-bar.js.map +1 -1
  215. package/dist/ui/components/overlay-header.d.ts.map +1 -1
  216. package/dist/ui/components/overlay-header.js.map +1 -1
  217. package/dist/ui/components/status-bar.js +1 -1
  218. package/dist/ui/components/status-bar.js.map +1 -1
  219. package/dist/ui/format.d.ts +4 -0
  220. package/dist/ui/format.d.ts.map +1 -1
  221. package/dist/ui/format.js +16 -0
  222. package/dist/ui/format.js.map +1 -1
  223. package/dist/ui/layout.d.ts +7 -42
  224. package/dist/ui/layout.d.ts.map +1 -1
  225. package/dist/ui/layout.js +71 -543
  226. package/dist/ui/layout.js.map +1 -1
  227. package/dist/ui/overlays/metrics-overlay.js.map +1 -1
  228. package/dist/ui/overlays/task-overlay.d.ts +1 -1
  229. package/dist/ui/overlays/task-overlay.d.ts.map +1 -1
  230. package/dist/ui/overlays/task-overlay.js.map +1 -1
  231. package/dist/ui/panels/conversation.d.ts +1 -1
  232. package/dist/ui/panels/conversation.d.ts.map +1 -1
  233. package/dist/ui/panels/conversation.js +1 -2
  234. package/dist/ui/panels/conversation.js.map +1 -1
  235. package/dist/ui/panels/metrics-dashboard.d.ts.map +1 -1
  236. package/dist/ui/panels/metrics-dashboard.js.map +1 -1
  237. package/dist/ui/panels/sleep-panel.js.map +1 -1
  238. package/dist/ui/panels/sticky-notes.d.ts.map +1 -1
  239. package/dist/ui/panels/sticky-notes.js.map +1 -1
  240. package/dist/ui/panels/task-list.d.ts +4 -2
  241. package/dist/ui/panels/task-list.d.ts.map +1 -1
  242. package/dist/ui/panels/task-list.js +41 -9
  243. package/dist/ui/panels/task-list.js.map +1 -1
  244. package/dist/ui/theme.d.ts.map +1 -1
  245. package/dist/ui/theme.js.map +1 -1
  246. package/dist/ui/types.d.ts +22 -0
  247. package/dist/ui/types.d.ts.map +1 -0
  248. package/dist/ui/types.js +2 -0
  249. package/dist/ui/types.js.map +1 -0
  250. package/package.json +19 -6
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > [!CAUTION]
4
4
  > **Important:** Helios does not currently have a permissions/security model. The agent runs basically unrestricted. You are responsible for any losses of data/other adverse outcomes from running it. If you have stuff you care about, then back it up (whether or not you use Helios, backing up is a good idea!), run Helios in a container, or wait until it has a permissions system.
5
5
 
6
- ![Helios screenshot](https://raw.githubusercontent.com/snoglobe/helios/main/media/screenshot.png)
6
+ ![Helios screenshot](https://raw.githubusercontent.com/snoglobe/helios/main/media/screnshot.png)
7
7
 
8
8
  An autonomous research agent inspired by [Andrej Karpathy's 'autoresearch'](https://github.com/karpathy/autoresearch). Autoresearch works very well within Helios, just have to tune the prompt slightly.
9
9
 
@@ -0,0 +1,7 @@
1
+ /**
2
+ * ACP mode entry point.
3
+ * Initializes the Helios runtime and starts the ACP stdio server.
4
+ * No TUI — pure JSON-RPC over stdin/stdout.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/acp/entry.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * ACP mode entry point.
3
+ * Initializes the Helios runtime and starts the ACP stdio server.
4
+ * No TUI — pure JSON-RPC over stdin/stdout.
5
+ */
6
+ import { createRuntime } from "../init.js";
7
+ import { AcpServer } from "./server.js";
8
+ const providerArg = (() => {
9
+ const i = process.argv.indexOf("--provider");
10
+ const j = process.argv.indexOf("-p");
11
+ const idx = Math.max(i, j);
12
+ if (idx >= 0) {
13
+ const v = process.argv[idx + 1];
14
+ if (v === "claude" || v === "openai")
15
+ return v;
16
+ }
17
+ return undefined;
18
+ })();
19
+ const claudeMode = (() => {
20
+ const i = process.argv.indexOf("--claude-mode");
21
+ if (i >= 0) {
22
+ const v = process.argv[i + 1];
23
+ if (v === "cli" || v === "api")
24
+ return v;
25
+ }
26
+ return undefined;
27
+ })();
28
+ // stderr for logs since stdout is the ACP transport
29
+ const log = (msg) => process.stderr.write(`[helios-acp] ${msg}\n`);
30
+ log("Initializing runtime...");
31
+ const runtime = await createRuntime({ provider: providerArg, claudeMode });
32
+ const server = new AcpServer(runtime);
33
+ log("ACP server ready — waiting for initialize request");
34
+ // Clean up on exit
35
+ process.on("SIGINT", () => {
36
+ server.stop();
37
+ runtime.cleanup();
38
+ process.exit(0);
39
+ });
40
+ process.on("SIGTERM", () => {
41
+ server.stop();
42
+ runtime.cleanup();
43
+ process.exit(0);
44
+ });
45
+ server.start();
46
+ //# sourceMappingURL=entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/acp/entry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE;IACxB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;IACvB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC,EAAE,CAAC;AAEL,oDAAoD;AACpD,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAE3E,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAE/B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;AAC3E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAEtC,GAAG,CAAC,mDAAmD,CAAC,CAAC;AAEzD,mBAAmB;AACnB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,OAAO,CAAC,OAAO,EAAE,CAAC;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,OAAO,CAAC,OAAO,EAAE,CAAC;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * ACP Agent server — maps Agent Client Protocol to the Helios Orchestrator.
3
+ *
4
+ * Lifecycle:
5
+ * Client → initialize → negotiate capabilities
6
+ * Client → session/new → create orchestrator session
7
+ * Client → session/prompt → stream model output as session/update notifications
8
+ * Client → session/cancel → interrupt generation
9
+ * Client → session/list → list past sessions
10
+ * Client → session/set_config_option → switch provider/model
11
+ */
12
+ import type { HeliosRuntime } from "../init.js";
13
+ export declare class AcpServer {
14
+ private transport;
15
+ private runtime;
16
+ private activeSessions;
17
+ private activePromptSession;
18
+ private initialized;
19
+ private prompting;
20
+ private static readonly MAX_SESSIONS;
21
+ private pollTimer;
22
+ constructor(runtime: HeliosRuntime);
23
+ private get orchestrator();
24
+ private get experimentTracker();
25
+ start(): void;
26
+ stop(): void;
27
+ private wireMonitor;
28
+ private wireSleepWake;
29
+ /**
30
+ * Poll background tasks every 5s — detect completion, collect final metrics,
31
+ * update experiment tracker, and fire notifications.
32
+ * Uses setTimeout + re-arm to prevent overlapping polls under high latency.
33
+ */
34
+ private startTaskPoll;
35
+ /** Get the most recently used session ID. */
36
+ private getActiveSessionId;
37
+ /**
38
+ * Inject a synthetic prompt into the session (monitor tick, sleep wake, etc.)
39
+ * and stream the model's response as ACP session updates.
40
+ */
41
+ private injectPrompt;
42
+ private registerHandlers;
43
+ private handleInitialize;
44
+ private handleSessionNew;
45
+ private handleSessionPrompt;
46
+ private handleSessionCancel;
47
+ private handleSessionList;
48
+ private handleSetConfigOption;
49
+ private sendUpdate;
50
+ private getConfigOptions;
51
+ /**
52
+ * Build a CommandContext adapter that routes TUI command output
53
+ * through ACP session/update notifications.
54
+ */
55
+ private buildCommandContext;
56
+ }
57
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/acp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA6ChD,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAO;IAE3C,OAAO,CAAC,SAAS,CAA+C;gBAEpD,OAAO,EAAE,aAAa;IAQlC,OAAO,KAAK,YAAY,GAAwC;IAChE,OAAO,KAAK,iBAAiB,GAA6C;IAE1E,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAUZ,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IASrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAqCrB,6CAA6C;IAC7C,OAAO,CAAC,kBAAkB;IAO1B;;;OAGG;YACW,YAAY;IA0D1B,OAAO,CAAC,gBAAgB;YAsBV,gBAAgB;YAmBhB,gBAAgB;YAgChB,mBAAmB;IAqFjC,OAAO,CAAC,mBAAmB;YAOb,iBAAiB;YAajB,qBAAqB;IAUnC,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,gBAAgB;IAiBxB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAsC5B"}
@@ -0,0 +1,434 @@
1
+ /**
2
+ * ACP Agent server — maps Agent Client Protocol to the Helios Orchestrator.
3
+ *
4
+ * Lifecycle:
5
+ * Client → initialize → negotiate capabilities
6
+ * Client → session/new → create orchestrator session
7
+ * Client → session/prompt → stream model output as session/update notifications
8
+ * Client → session/cancel → interrupt generation
9
+ * Client → session/list → list past sessions
10
+ * Client → session/set_config_option → switch provider/model
11
+ */
12
+ import { StdioTransport } from "./transport.js";
13
+ import { VERSION } from "../version.js";
14
+ import { COMMANDS, handleSlashCommand } from "../ui/commands.js";
15
+ import { pollTaskStatuses, handleFinishedTasks, buildMonitorMessage } from "../core/task-poller.js";
16
+ /** Map helios tool names to ACP tool call kinds. */
17
+ function toolKind(name) {
18
+ if (/read|download|task_output|show_metrics|memory_ls|memory_read/.test(name))
19
+ return "read";
20
+ if (/write|upload|patch|memory_write|memory_rm|clear/.test(name))
21
+ return "edit";
22
+ if (/exec|kill/.test(name))
23
+ return "execute";
24
+ if (/fetch|web/.test(name))
25
+ return "fetch";
26
+ if (/list|compare|hub_leaves|hub_log|hub_read/.test(name))
27
+ return "search";
28
+ if (/consult|writeup/.test(name))
29
+ return "think";
30
+ return "other";
31
+ }
32
+ /** Build a descriptive title for a tool call from the tool name + args. */
33
+ function toolTitle(event) {
34
+ const args = event.args;
35
+ const machine = args.machine_id;
36
+ switch (event.name) {
37
+ case "remote_exec":
38
+ case "remote_exec_background": {
39
+ const label = machine ?? event.name;
40
+ const cmd = args.command;
41
+ return cmd ? `${label}: ${cmd}` : label;
42
+ }
43
+ case "remote_upload":
44
+ case "remote_download":
45
+ return `${machine ?? event.name}: ${args.remote_path ?? args.local_path ?? ""}`;
46
+ case "memory_write":
47
+ case "memory_read":
48
+ case "memory_ls":
49
+ case "memory_rm":
50
+ return `${event.name}: ${args.path ?? "/"}`;
51
+ case "metrics_query":
52
+ return `${event.name}: ${args.name ?? "all"}`;
53
+ default:
54
+ return event.name;
55
+ }
56
+ }
57
+ export class AcpServer {
58
+ transport = new StdioTransport();
59
+ runtime;
60
+ activeSessions = new Map();
61
+ activePromptSession = null;
62
+ initialized = false;
63
+ prompting = false;
64
+ static MAX_SESSIONS = 100;
65
+ pollTimer = null;
66
+ constructor(runtime) {
67
+ this.runtime = runtime;
68
+ this.registerHandlers();
69
+ this.wireMonitor();
70
+ this.wireSleepWake();
71
+ this.startTaskPoll();
72
+ }
73
+ get orchestrator() { return this.runtime.orchestrator; }
74
+ get experimentTracker() { return this.runtime.experimentTracker; }
75
+ start() {
76
+ this.transport.start();
77
+ }
78
+ stop() {
79
+ if (this.pollTimer) {
80
+ clearTimeout(this.pollTimer);
81
+ this.pollTimer = null;
82
+ }
83
+ this.transport.stop();
84
+ }
85
+ // ── Monitor & sleep/wake wiring ────────────────────
86
+ wireMonitor() {
87
+ this.runtime.monitorManager.on("tick", (config) => {
88
+ if (this.prompting)
89
+ return;
90
+ const sessionId = this.getActiveSessionId();
91
+ if (!sessionId)
92
+ return;
93
+ const message = buildMonitorMessage(config, this.runtime.executor, this.runtime.metricStore);
94
+ this.injectPrompt(sessionId, message);
95
+ });
96
+ }
97
+ wireSleepWake() {
98
+ this.runtime.sleepManager.on("wake", (_session, _reason, wakeMessage) => {
99
+ if (this.prompting)
100
+ return;
101
+ const sessionId = this.getActiveSessionId();
102
+ if (!sessionId)
103
+ return;
104
+ this.injectPrompt(sessionId, wakeMessage);
105
+ });
106
+ }
107
+ /**
108
+ * Poll background tasks every 5s — detect completion, collect final metrics,
109
+ * update experiment tracker, and fire notifications.
110
+ * Uses setTimeout + re-arm to prevent overlapping polls under high latency.
111
+ */
112
+ startTaskPoll() {
113
+ const { executor, metricCollector } = this.runtime;
114
+ const poll = async () => {
115
+ try {
116
+ const procs = executor.getBackgroundProcesses();
117
+ if (procs.length === 0) {
118
+ await metricCollector.collectAll().catch(() => { });
119
+ return;
120
+ }
121
+ const { finished } = await pollTaskStatuses(executor);
122
+ if (finished.length > 0) {
123
+ await handleFinishedTasks(finished, {
124
+ executor: this.runtime.executor,
125
+ connectionPool: this.runtime.connectionPool,
126
+ metricCollector: this.runtime.metricCollector,
127
+ metricStore: this.runtime.metricStore,
128
+ experimentTracker: this.runtime.experimentTracker,
129
+ notifier: this.runtime.notifier,
130
+ });
131
+ }
132
+ else {
133
+ await metricCollector.collectAll().catch(() => { });
134
+ }
135
+ }
136
+ catch {
137
+ // Non-fatal — will retry on next tick
138
+ }
139
+ finally {
140
+ if (this.pollTimer !== null) {
141
+ this.pollTimer = setTimeout(poll, 5000);
142
+ }
143
+ }
144
+ };
145
+ this.pollTimer = setTimeout(poll, 5000);
146
+ }
147
+ /** Get the most recently used session ID. */
148
+ getActiveSessionId() {
149
+ if (this.activePromptSession)
150
+ return this.activePromptSession;
151
+ // Fall back to the last session we know about
152
+ const ids = [...this.activeSessions.keys()];
153
+ return ids.length > 0 ? ids[ids.length - 1] : null;
154
+ }
155
+ /**
156
+ * Inject a synthetic prompt into the session (monitor tick, sleep wake, etc.)
157
+ * and stream the model's response as ACP session updates.
158
+ */
159
+ async injectPrompt(sessionId, text) {
160
+ if (this.prompting)
161
+ return;
162
+ this.prompting = true;
163
+ try {
164
+ for await (const event of this.orchestrator.send(text)) {
165
+ this.experimentTracker?.onEvent(event);
166
+ switch (event.type) {
167
+ case "text":
168
+ if (event.delta) {
169
+ this.sendUpdate(sessionId, {
170
+ sessionUpdate: "agent_message_chunk",
171
+ content: { type: "text", text: event.delta },
172
+ });
173
+ }
174
+ break;
175
+ case "tool_call":
176
+ this.sendUpdate(sessionId, {
177
+ sessionUpdate: "tool_call",
178
+ toolCallId: event.id,
179
+ title: toolTitle(event),
180
+ kind: toolKind(event.name),
181
+ status: "in_progress",
182
+ });
183
+ break;
184
+ case "tool_result": {
185
+ const content = event.result
186
+ ? [{ type: "text", text: event.result }]
187
+ : [];
188
+ this.sendUpdate(sessionId, {
189
+ sessionUpdate: "tool_call_update",
190
+ toolCallId: event.callId,
191
+ status: event.isError ? "failed" : "completed",
192
+ content,
193
+ });
194
+ break;
195
+ }
196
+ case "error":
197
+ this.sendUpdate(sessionId, {
198
+ sessionUpdate: "agent_message_chunk",
199
+ content: { type: "text", text: `Error: ${event.error.message}` },
200
+ });
201
+ break;
202
+ }
203
+ }
204
+ }
205
+ catch (err) {
206
+ process.stderr.write(`[helios-acp] inject prompt error: ${err instanceof Error ? err.message : String(err)}\n`);
207
+ }
208
+ finally {
209
+ this.prompting = false;
210
+ }
211
+ }
212
+ // ── Handler registration ────────────────────────────
213
+ registerHandlers() {
214
+ this.transport.onMethod("initialize", (params) => this.handleInitialize(params));
215
+ this.transport.onMethod("session/new", (params) => this.handleSessionNew(params));
216
+ this.transport.onMethod("session/prompt", (params) => this.handleSessionPrompt(params));
217
+ this.transport.onMethod("session/list", (params) => this.handleSessionList(params));
218
+ this.transport.onMethod("session/set_config_option", (params) => this.handleSetConfigOption(params));
219
+ this.transport.onNotification("session/cancel", (params) => this.handleSessionCancel(params));
220
+ }
221
+ // ── Protocol methods ────────────────────────────────
222
+ async handleInitialize(_params) {
223
+ this.initialized = true;
224
+ return {
225
+ protocolVersion: 1,
226
+ agentCapabilities: {
227
+ loadSession: false,
228
+ promptCapabilities: {},
229
+ sessionCapabilities: { list: {} },
230
+ mcpCapabilities: { http: false, sse: false },
231
+ },
232
+ agentInfo: {
233
+ name: "helios",
234
+ title: "Helios — Autonomous ML Research Agent",
235
+ version: VERSION,
236
+ },
237
+ authMethods: [],
238
+ };
239
+ }
240
+ async handleSessionNew(params) {
241
+ if (!this.initialized)
242
+ throw new Error("Not initialized");
243
+ const session = await this.orchestrator.ensureSession();
244
+ this.activeSessions.set(session.id, { cwd: params.cwd });
245
+ // Evict oldest entries to bound memory
246
+ if (this.activeSessions.size > AcpServer.MAX_SESSIONS) {
247
+ const oldest = this.activeSessions.keys().next().value;
248
+ this.activeSessions.delete(oldest);
249
+ }
250
+ // Advertise slash commands
251
+ this.sendUpdate(session.id, {
252
+ sessionUpdate: "available_commands_update",
253
+ availableCommands: COMMANDS.map((c) => ({
254
+ name: c.name,
255
+ description: c.description,
256
+ input: c.args ? { hint: c.args } : undefined,
257
+ })),
258
+ });
259
+ // Advertise config options
260
+ const configOptions = this.getConfigOptions();
261
+ this.sendUpdate(session.id, {
262
+ sessionUpdate: "config_option_update",
263
+ configOptions,
264
+ });
265
+ return { sessionId: session.id, configOptions };
266
+ }
267
+ async handleSessionPrompt(params) {
268
+ if (!this.initialized)
269
+ throw new Error("Not initialized");
270
+ this.activePromptSession = params.sessionId;
271
+ // Extract text from content blocks
272
+ const text = params.prompt
273
+ .filter((b) => b.type === "text")
274
+ .map((b) => b.text)
275
+ .join("\n");
276
+ if (!text.trim()) {
277
+ return { stopReason: "end_turn" };
278
+ }
279
+ // Handle slash commands via the shared command handler
280
+ if (text.startsWith("/")) {
281
+ await handleSlashCommand(text, this.buildCommandContext(params.sessionId));
282
+ return { stopReason: "end_turn" };
283
+ }
284
+ this.prompting = true;
285
+ try {
286
+ let stopReason = "end_turn";
287
+ for await (const event of this.orchestrator.send(text)) {
288
+ // Check for cancellation
289
+ if (this.activePromptSession !== params.sessionId) {
290
+ stopReason = "cancelled";
291
+ break;
292
+ }
293
+ // Feed to experiment tracker
294
+ this.experimentTracker?.onEvent(event);
295
+ switch (event.type) {
296
+ case "text":
297
+ if (event.delta) {
298
+ this.sendUpdate(params.sessionId, {
299
+ sessionUpdate: "agent_message_chunk",
300
+ content: { type: "text", text: event.delta },
301
+ });
302
+ }
303
+ break;
304
+ case "tool_call":
305
+ this.sendUpdate(params.sessionId, {
306
+ sessionUpdate: "tool_call",
307
+ toolCallId: event.id,
308
+ title: toolTitle(event),
309
+ kind: toolKind(event.name),
310
+ status: "in_progress",
311
+ });
312
+ break;
313
+ case "tool_result": {
314
+ const content = event.result
315
+ ? [{ type: "text", text: event.result }]
316
+ : [];
317
+ this.sendUpdate(params.sessionId, {
318
+ sessionUpdate: "tool_call_update",
319
+ toolCallId: event.callId,
320
+ status: event.isError ? "failed" : "completed",
321
+ content,
322
+ });
323
+ break;
324
+ }
325
+ case "error":
326
+ this.sendUpdate(params.sessionId, {
327
+ sessionUpdate: "agent_message_chunk",
328
+ content: { type: "text", text: `Error: ${event.error.message}` },
329
+ });
330
+ break;
331
+ }
332
+ }
333
+ return { stopReason };
334
+ }
335
+ catch {
336
+ return { stopReason: "end_turn" };
337
+ }
338
+ finally {
339
+ this.activePromptSession = null;
340
+ this.prompting = false;
341
+ }
342
+ }
343
+ handleSessionCancel(params) {
344
+ if (this.activePromptSession === params.sessionId) {
345
+ this.orchestrator.interrupt();
346
+ this.activePromptSession = null;
347
+ }
348
+ }
349
+ async handleSessionList(_params) {
350
+ if (!this.initialized)
351
+ throw new Error("Not initialized");
352
+ const summaries = this.orchestrator.sessionStore.listSessionSummaries(50);
353
+ return {
354
+ sessions: summaries.map((s) => ({
355
+ sessionId: s.id,
356
+ cwd: this.activeSessions.get(s.id)?.cwd ?? process.cwd(),
357
+ title: s.firstUserMessage ?? undefined,
358
+ updatedAt: new Date(s.lastActiveAt).toISOString(),
359
+ })),
360
+ };
361
+ }
362
+ async handleSetConfigOption(params) {
363
+ if (!this.initialized)
364
+ throw new Error("Not initialized");
365
+ if (params.configId === "provider") {
366
+ await this.orchestrator.switchProvider(params.value);
367
+ }
368
+ return { configOptions: this.getConfigOptions() };
369
+ }
370
+ // ── Helpers ─────────────────────────────────────────
371
+ sendUpdate(sessionId, update) {
372
+ this.transport.notify("session/update", {
373
+ sessionId,
374
+ update,
375
+ });
376
+ }
377
+ getConfigOptions() {
378
+ const currentProvider = this.orchestrator.currentProvider?.name ?? "claude";
379
+ return [
380
+ {
381
+ id: "provider",
382
+ name: "Provider",
383
+ type: "select",
384
+ category: "model",
385
+ currentValue: currentProvider,
386
+ options: [
387
+ { value: "claude", name: "Claude" },
388
+ { value: "openai", name: "OpenAI" },
389
+ ],
390
+ },
391
+ ];
392
+ }
393
+ /**
394
+ * Build a CommandContext adapter that routes TUI command output
395
+ * through ACP session/update notifications.
396
+ */
397
+ buildCommandContext(sessionId) {
398
+ const messages = [];
399
+ let nextId = 1;
400
+ const addMessage = (role, content) => {
401
+ const id = nextId++;
402
+ this.sendUpdate(sessionId, {
403
+ sessionUpdate: "agent_message_chunk",
404
+ content: { type: "text", text: content },
405
+ });
406
+ return id;
407
+ };
408
+ return {
409
+ orchestrator: this.orchestrator,
410
+ addMessage,
411
+ updateMessage: (_id, updates) => {
412
+ // For streaming updates (like /writeup), send incremental chunks
413
+ if (updates.content) {
414
+ this.sendUpdate(sessionId, {
415
+ sessionUpdate: "agent_message_chunk",
416
+ content: { type: "text", text: updates.content },
417
+ });
418
+ }
419
+ },
420
+ setMessages: () => { },
421
+ messages,
422
+ setIsStreaming: () => { },
423
+ connectionPool: this.runtime.connectionPool,
424
+ metricStore: this.runtime.metricStore,
425
+ metricCollector: this.runtime.metricCollector,
426
+ memoryStore: this.runtime.memoryStore,
427
+ stickyManager: this.runtime.stickyManager,
428
+ setStickyNotes: () => { },
429
+ executor: this.runtime.executor,
430
+ restoreMessages: () => [],
431
+ };
432
+ }
433
+ }
434
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/acp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * JSON-RPC 2.0 over stdio transport for ACP.
3
+ * Messages are newline-delimited JSON on stdin/stdout.
4
+ */
5
+ type MethodHandler = (params: Record<string, unknown>, id: number | string) => Promise<unknown>;
6
+ type NotificationHandler = (params: Record<string, unknown>) => void;
7
+ export declare class StdioTransport {
8
+ private rl;
9
+ private methods;
10
+ private notifications;
11
+ private pending;
12
+ private nextId;
13
+ constructor();
14
+ /** Register a handler for incoming requests (has id, expects response). */
15
+ onMethod(method: string, handler: MethodHandler): void;
16
+ /** Register a handler for incoming notifications (no id, no response). */
17
+ onNotification(method: string, handler: NotificationHandler): void;
18
+ /** Send a notification to the client (no response expected). */
19
+ notify(method: string, params?: Record<string, unknown>): void;
20
+ /** Send a request to the client and wait for a response (30s timeout). */
21
+ request(method: string, params?: Record<string, unknown>): Promise<unknown>;
22
+ /** Start reading from stdin. */
23
+ start(): void;
24
+ stop(): void;
25
+ private dispatch;
26
+ private sendResult;
27
+ private sendError;
28
+ private writeLine;
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/acp/transport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAChG,KAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAErE,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,OAAO,CAGV;IACL,OAAO,CAAC,MAAM,CAAK;;IAMnB,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAItD,0EAA0E;IAC1E,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAIlE,gEAAgE;IAChE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM9D,0EAA0E;IACpE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBjF,gCAAgC;IAChC,KAAK,IAAI,IAAI;IAab,IAAI,IAAI,IAAI;IAMZ,OAAO,CAAC,QAAQ;IAuChB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,SAAS;CAGlB"}