@snoglobe/helios 0.1.0

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 (327) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +222 -0
  3. package/dist/app.d.ts +9 -0
  4. package/dist/app.d.ts.map +1 -0
  5. package/dist/app.js +289 -0
  6. package/dist/app.js.map +1 -0
  7. package/dist/core/agent-loop.d.ts +16 -0
  8. package/dist/core/agent-loop.d.ts.map +1 -0
  9. package/dist/core/agent-loop.js +64 -0
  10. package/dist/core/agent-loop.js.map +1 -0
  11. package/dist/core/monitor.d.ts +15 -0
  12. package/dist/core/monitor.d.ts.map +1 -0
  13. package/dist/core/monitor.js +40 -0
  14. package/dist/core/monitor.js.map +1 -0
  15. package/dist/core/orchestrator.d.ts +51 -0
  16. package/dist/core/orchestrator.d.ts.map +1 -0
  17. package/dist/core/orchestrator.js +235 -0
  18. package/dist/core/orchestrator.js.map +1 -0
  19. package/dist/core/state-machine.d.ts +19 -0
  20. package/dist/core/state-machine.d.ts.map +1 -0
  21. package/dist/core/state-machine.js +42 -0
  22. package/dist/core/state-machine.js.map +1 -0
  23. package/dist/core/stickies.d.ts +20 -0
  24. package/dist/core/stickies.d.ts.map +1 -0
  25. package/dist/core/stickies.js +41 -0
  26. package/dist/core/stickies.js.map +1 -0
  27. package/dist/index.d.ts +3 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +68 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/memory/context-gate.d.ts +49 -0
  32. package/dist/memory/context-gate.d.ts.map +1 -0
  33. package/dist/memory/context-gate.js +109 -0
  34. package/dist/memory/context-gate.js.map +1 -0
  35. package/dist/memory/experiment-tracker.d.ts +21 -0
  36. package/dist/memory/experiment-tracker.d.ts.map +1 -0
  37. package/dist/memory/experiment-tracker.js +117 -0
  38. package/dist/memory/experiment-tracker.js.map +1 -0
  39. package/dist/memory/memory-store.d.ts +37 -0
  40. package/dist/memory/memory-store.d.ts.map +1 -0
  41. package/dist/memory/memory-store.js +150 -0
  42. package/dist/memory/memory-store.js.map +1 -0
  43. package/dist/memory/token-estimator.d.ts +7 -0
  44. package/dist/memory/token-estimator.d.ts.map +1 -0
  45. package/dist/memory/token-estimator.js +30 -0
  46. package/dist/memory/token-estimator.js.map +1 -0
  47. package/dist/metrics/analyzer.d.ts +15 -0
  48. package/dist/metrics/analyzer.d.ts.map +1 -0
  49. package/dist/metrics/analyzer.js +67 -0
  50. package/dist/metrics/analyzer.js.map +1 -0
  51. package/dist/metrics/collector.d.ts +23 -0
  52. package/dist/metrics/collector.d.ts.map +1 -0
  53. package/dist/metrics/collector.js +60 -0
  54. package/dist/metrics/collector.js.map +1 -0
  55. package/dist/metrics/parser.d.ts +21 -0
  56. package/dist/metrics/parser.d.ts.map +1 -0
  57. package/dist/metrics/parser.js +43 -0
  58. package/dist/metrics/parser.js.map +1 -0
  59. package/dist/metrics/parsers/csv.d.ts +8 -0
  60. package/dist/metrics/parsers/csv.d.ts.map +1 -0
  61. package/dist/metrics/parsers/csv.js +37 -0
  62. package/dist/metrics/parsers/csv.js.map +1 -0
  63. package/dist/metrics/parsers/json.d.ts +8 -0
  64. package/dist/metrics/parsers/json.d.ts.map +1 -0
  65. package/dist/metrics/parsers/json.js +42 -0
  66. package/dist/metrics/parsers/json.js.map +1 -0
  67. package/dist/metrics/parsers/stdout.d.ts +3 -0
  68. package/dist/metrics/parsers/stdout.d.ts.map +1 -0
  69. package/dist/metrics/parsers/stdout.js +79 -0
  70. package/dist/metrics/parsers/stdout.js.map +1 -0
  71. package/dist/metrics/parsers/tensorboard.d.ts +16 -0
  72. package/dist/metrics/parsers/tensorboard.d.ts.map +1 -0
  73. package/dist/metrics/parsers/tensorboard.js +22 -0
  74. package/dist/metrics/parsers/tensorboard.js.map +1 -0
  75. package/dist/metrics/store.d.ts +33 -0
  76. package/dist/metrics/store.d.ts.map +1 -0
  77. package/dist/metrics/store.js +141 -0
  78. package/dist/metrics/store.js.map +1 -0
  79. package/dist/providers/auth/auth-manager.d.ts +22 -0
  80. package/dist/providers/auth/auth-manager.d.ts.map +1 -0
  81. package/dist/providers/auth/auth-manager.js +77 -0
  82. package/dist/providers/auth/auth-manager.js.map +1 -0
  83. package/dist/providers/auth/token-store.d.ts +14 -0
  84. package/dist/providers/auth/token-store.d.ts.map +1 -0
  85. package/dist/providers/auth/token-store.js +55 -0
  86. package/dist/providers/auth/token-store.js.map +1 -0
  87. package/dist/providers/claude/provider.d.ts +46 -0
  88. package/dist/providers/claude/provider.d.ts.map +1 -0
  89. package/dist/providers/claude/provider.js +606 -0
  90. package/dist/providers/claude/provider.js.map +1 -0
  91. package/dist/providers/openai/callback-server.d.ts +11 -0
  92. package/dist/providers/openai/callback-server.d.ts.map +1 -0
  93. package/dist/providers/openai/callback-server.js +58 -0
  94. package/dist/providers/openai/callback-server.js.map +1 -0
  95. package/dist/providers/openai/oauth.d.ts +16 -0
  96. package/dist/providers/openai/oauth.d.ts.map +1 -0
  97. package/dist/providers/openai/oauth.js +110 -0
  98. package/dist/providers/openai/oauth.js.map +1 -0
  99. package/dist/providers/openai/provider.d.ts +29 -0
  100. package/dist/providers/openai/provider.d.ts.map +1 -0
  101. package/dist/providers/openai/provider.js +363 -0
  102. package/dist/providers/openai/provider.js.map +1 -0
  103. package/dist/providers/retry.d.ts +6 -0
  104. package/dist/providers/retry.d.ts.map +1 -0
  105. package/dist/providers/retry.js +13 -0
  106. package/dist/providers/retry.js.map +1 -0
  107. package/dist/providers/sse.d.ts +6 -0
  108. package/dist/providers/sse.d.ts.map +1 -0
  109. package/dist/providers/sse.js +35 -0
  110. package/dist/providers/sse.js.map +1 -0
  111. package/dist/providers/types.d.ts +102 -0
  112. package/dist/providers/types.d.ts.map +1 -0
  113. package/dist/providers/types.js +11 -0
  114. package/dist/providers/types.js.map +1 -0
  115. package/dist/remote/config.d.ts +14 -0
  116. package/dist/remote/config.d.ts.map +1 -0
  117. package/dist/remote/config.js +81 -0
  118. package/dist/remote/config.js.map +1 -0
  119. package/dist/remote/connection-pool.d.ts +26 -0
  120. package/dist/remote/connection-pool.d.ts.map +1 -0
  121. package/dist/remote/connection-pool.js +268 -0
  122. package/dist/remote/connection-pool.js.map +1 -0
  123. package/dist/remote/executor.d.ts +23 -0
  124. package/dist/remote/executor.d.ts.map +1 -0
  125. package/dist/remote/executor.js +53 -0
  126. package/dist/remote/executor.js.map +1 -0
  127. package/dist/remote/file-sync.d.ts +19 -0
  128. package/dist/remote/file-sync.d.ts.map +1 -0
  129. package/dist/remote/file-sync.js +44 -0
  130. package/dist/remote/file-sync.js.map +1 -0
  131. package/dist/remote/types.d.ts +33 -0
  132. package/dist/remote/types.d.ts.map +1 -0
  133. package/dist/remote/types.js +2 -0
  134. package/dist/remote/types.js.map +1 -0
  135. package/dist/scheduler/sleep-manager.d.ts +33 -0
  136. package/dist/scheduler/sleep-manager.d.ts.map +1 -0
  137. package/dist/scheduler/sleep-manager.js +132 -0
  138. package/dist/scheduler/sleep-manager.js.map +1 -0
  139. package/dist/scheduler/ssh-batcher.d.ts +23 -0
  140. package/dist/scheduler/ssh-batcher.d.ts.map +1 -0
  141. package/dist/scheduler/ssh-batcher.js +98 -0
  142. package/dist/scheduler/ssh-batcher.js.map +1 -0
  143. package/dist/scheduler/state-store.d.ts +8 -0
  144. package/dist/scheduler/state-store.d.ts.map +1 -0
  145. package/dist/scheduler/state-store.js +48 -0
  146. package/dist/scheduler/state-store.js.map +1 -0
  147. package/dist/scheduler/trigger-scheduler.d.ts +24 -0
  148. package/dist/scheduler/trigger-scheduler.d.ts.map +1 -0
  149. package/dist/scheduler/trigger-scheduler.js +142 -0
  150. package/dist/scheduler/trigger-scheduler.js.map +1 -0
  151. package/dist/scheduler/triggers/file.d.ts +4 -0
  152. package/dist/scheduler/triggers/file.d.ts.map +1 -0
  153. package/dist/scheduler/triggers/file.js +39 -0
  154. package/dist/scheduler/triggers/file.js.map +1 -0
  155. package/dist/scheduler/triggers/metric.d.ts +4 -0
  156. package/dist/scheduler/triggers/metric.d.ts.map +1 -0
  157. package/dist/scheduler/triggers/metric.js +74 -0
  158. package/dist/scheduler/triggers/metric.js.map +1 -0
  159. package/dist/scheduler/triggers/process-exit.d.ts +4 -0
  160. package/dist/scheduler/triggers/process-exit.d.ts.map +1 -0
  161. package/dist/scheduler/triggers/process-exit.js +13 -0
  162. package/dist/scheduler/triggers/process-exit.js.map +1 -0
  163. package/dist/scheduler/triggers/resource.d.ts +4 -0
  164. package/dist/scheduler/triggers/resource.d.ts.map +1 -0
  165. package/dist/scheduler/triggers/resource.js +54 -0
  166. package/dist/scheduler/triggers/resource.js.map +1 -0
  167. package/dist/scheduler/triggers/timer.d.ts +3 -0
  168. package/dist/scheduler/triggers/timer.d.ts.map +1 -0
  169. package/dist/scheduler/triggers/timer.js +4 -0
  170. package/dist/scheduler/triggers/timer.js.map +1 -0
  171. package/dist/scheduler/triggers/types.d.ts +95 -0
  172. package/dist/scheduler/triggers/types.d.ts.map +1 -0
  173. package/dist/scheduler/triggers/types.js +11 -0
  174. package/dist/scheduler/triggers/types.js.map +1 -0
  175. package/dist/store/database.d.ts +5 -0
  176. package/dist/store/database.d.ts.map +1 -0
  177. package/dist/store/database.js +29 -0
  178. package/dist/store/database.js.map +1 -0
  179. package/dist/store/migrations.d.ts +3 -0
  180. package/dist/store/migrations.d.ts.map +1 -0
  181. package/dist/store/migrations.js +124 -0
  182. package/dist/store/migrations.js.map +1 -0
  183. package/dist/store/preferences.d.ts +7 -0
  184. package/dist/store/preferences.d.ts.map +1 -0
  185. package/dist/store/preferences.js +26 -0
  186. package/dist/store/preferences.js.map +1 -0
  187. package/dist/store/session-store.d.ts +29 -0
  188. package/dist/store/session-store.d.ts.map +1 -0
  189. package/dist/store/session-store.js +103 -0
  190. package/dist/store/session-store.js.map +1 -0
  191. package/dist/tools/clear-metrics.d.ts +5 -0
  192. package/dist/tools/clear-metrics.d.ts.map +1 -0
  193. package/dist/tools/clear-metrics.js +27 -0
  194. package/dist/tools/clear-metrics.js.map +1 -0
  195. package/dist/tools/compare-runs.d.ts +4 -0
  196. package/dist/tools/compare-runs.d.ts.map +1 -0
  197. package/dist/tools/compare-runs.js +77 -0
  198. package/dist/tools/compare-runs.js.map +1 -0
  199. package/dist/tools/consult.d.ts +3 -0
  200. package/dist/tools/consult.d.ts.map +1 -0
  201. package/dist/tools/consult.js +62 -0
  202. package/dist/tools/consult.js.map +1 -0
  203. package/dist/tools/file-ops.d.ts +6 -0
  204. package/dist/tools/file-ops.d.ts.map +1 -0
  205. package/dist/tools/file-ops.js +158 -0
  206. package/dist/tools/file-ops.js.map +1 -0
  207. package/dist/tools/kill-task.d.ts +6 -0
  208. package/dist/tools/kill-task.d.ts.map +1 -0
  209. package/dist/tools/kill-task.js +55 -0
  210. package/dist/tools/kill-task.js.map +1 -0
  211. package/dist/tools/list-machines.d.ts +4 -0
  212. package/dist/tools/list-machines.d.ts.map +1 -0
  213. package/dist/tools/list-machines.js +24 -0
  214. package/dist/tools/list-machines.js.map +1 -0
  215. package/dist/tools/memory-tools.d.ts +8 -0
  216. package/dist/tools/memory-tools.d.ts.map +1 -0
  217. package/dist/tools/memory-tools.js +122 -0
  218. package/dist/tools/memory-tools.js.map +1 -0
  219. package/dist/tools/metrics-query.d.ts +4 -0
  220. package/dist/tools/metrics-query.d.ts.map +1 -0
  221. package/dist/tools/metrics-query.js +69 -0
  222. package/dist/tools/metrics-query.js.map +1 -0
  223. package/dist/tools/monitor.d.ts +5 -0
  224. package/dist/tools/monitor.d.ts.map +1 -0
  225. package/dist/tools/monitor.js +64 -0
  226. package/dist/tools/monitor.js.map +1 -0
  227. package/dist/tools/remote-exec.d.ts +6 -0
  228. package/dist/tools/remote-exec.d.ts.map +1 -0
  229. package/dist/tools/remote-exec.js +98 -0
  230. package/dist/tools/remote-exec.js.map +1 -0
  231. package/dist/tools/remote-sync.d.ts +5 -0
  232. package/dist/tools/remote-sync.d.ts.map +1 -0
  233. package/dist/tools/remote-sync.js +57 -0
  234. package/dist/tools/remote-sync.js.map +1 -0
  235. package/dist/tools/show-metrics.d.ts +4 -0
  236. package/dist/tools/show-metrics.d.ts.map +1 -0
  237. package/dist/tools/show-metrics.js +69 -0
  238. package/dist/tools/show-metrics.js.map +1 -0
  239. package/dist/tools/sleep.d.ts +4 -0
  240. package/dist/tools/sleep.d.ts.map +1 -0
  241. package/dist/tools/sleep.js +116 -0
  242. package/dist/tools/sleep.js.map +1 -0
  243. package/dist/tools/task-output.d.ts +5 -0
  244. package/dist/tools/task-output.d.ts.map +1 -0
  245. package/dist/tools/task-output.js +51 -0
  246. package/dist/tools/task-output.js.map +1 -0
  247. package/dist/tools/web-fetch.d.ts +3 -0
  248. package/dist/tools/web-fetch.d.ts.map +1 -0
  249. package/dist/tools/web-fetch.js +112 -0
  250. package/dist/tools/web-fetch.js.map +1 -0
  251. package/dist/ui/commands.d.ts +7 -0
  252. package/dist/ui/commands.d.ts.map +1 -0
  253. package/dist/ui/commands.js +21 -0
  254. package/dist/ui/commands.js.map +1 -0
  255. package/dist/ui/components/gradient-edge.d.ts +7 -0
  256. package/dist/ui/components/gradient-edge.d.ts.map +1 -0
  257. package/dist/ui/components/gradient-edge.js +33 -0
  258. package/dist/ui/components/gradient-edge.js.map +1 -0
  259. package/dist/ui/components/input-bar.d.ts +8 -0
  260. package/dist/ui/components/input-bar.d.ts.map +1 -0
  261. package/dist/ui/components/input-bar.js +139 -0
  262. package/dist/ui/components/input-bar.js.map +1 -0
  263. package/dist/ui/components/key-hint-rule.d.ts +2 -0
  264. package/dist/ui/components/key-hint-rule.d.ts.map +1 -0
  265. package/dist/ui/components/key-hint-rule.js +19 -0
  266. package/dist/ui/components/key-hint-rule.js.map +1 -0
  267. package/dist/ui/components/overlay-header.d.ts +6 -0
  268. package/dist/ui/components/overlay-header.d.ts.map +1 -0
  269. package/dist/ui/components/overlay-header.js +10 -0
  270. package/dist/ui/components/overlay-header.js.map +1 -0
  271. package/dist/ui/components/status-bar.d.ts +11 -0
  272. package/dist/ui/components/status-bar.d.ts.map +1 -0
  273. package/dist/ui/components/status-bar.js +55 -0
  274. package/dist/ui/components/status-bar.js.map +1 -0
  275. package/dist/ui/format.d.ts +12 -0
  276. package/dist/ui/format.d.ts.map +1 -0
  277. package/dist/ui/format.js +36 -0
  278. package/dist/ui/format.js.map +1 -0
  279. package/dist/ui/layout.d.ts +48 -0
  280. package/dist/ui/layout.d.ts.map +1 -0
  281. package/dist/ui/layout.js +857 -0
  282. package/dist/ui/layout.js.map +1 -0
  283. package/dist/ui/markdown.d.ts +7 -0
  284. package/dist/ui/markdown.d.ts.map +1 -0
  285. package/dist/ui/markdown.js +67 -0
  286. package/dist/ui/markdown.js.map +1 -0
  287. package/dist/ui/mouse-filter.d.ts +21 -0
  288. package/dist/ui/mouse-filter.d.ts.map +1 -0
  289. package/dist/ui/mouse-filter.js +66 -0
  290. package/dist/ui/mouse-filter.js.map +1 -0
  291. package/dist/ui/overlays/metrics-overlay.d.ts +11 -0
  292. package/dist/ui/overlays/metrics-overlay.d.ts.map +1 -0
  293. package/dist/ui/overlays/metrics-overlay.js +86 -0
  294. package/dist/ui/overlays/metrics-overlay.js.map +1 -0
  295. package/dist/ui/overlays/task-overlay.d.ts +12 -0
  296. package/dist/ui/overlays/task-overlay.d.ts.map +1 -0
  297. package/dist/ui/overlays/task-overlay.js +77 -0
  298. package/dist/ui/overlays/task-overlay.js.map +1 -0
  299. package/dist/ui/panels/conversation.d.ts +8 -0
  300. package/dist/ui/panels/conversation.d.ts.map +1 -0
  301. package/dist/ui/panels/conversation.js +216 -0
  302. package/dist/ui/panels/conversation.js.map +1 -0
  303. package/dist/ui/panels/metrics-dashboard.d.ts +8 -0
  304. package/dist/ui/panels/metrics-dashboard.d.ts.map +1 -0
  305. package/dist/ui/panels/metrics-dashboard.js +56 -0
  306. package/dist/ui/panels/metrics-dashboard.js.map +1 -0
  307. package/dist/ui/panels/sleep-panel.d.ts +7 -0
  308. package/dist/ui/panels/sleep-panel.d.ts.map +1 -0
  309. package/dist/ui/panels/sleep-panel.js +48 -0
  310. package/dist/ui/panels/sleep-panel.js.map +1 -0
  311. package/dist/ui/panels/sticky-notes.d.ts +8 -0
  312. package/dist/ui/panels/sticky-notes.d.ts.map +1 -0
  313. package/dist/ui/panels/sticky-notes.js +49 -0
  314. package/dist/ui/panels/sticky-notes.js.map +1 -0
  315. package/dist/ui/panels/task-list.d.ts +8 -0
  316. package/dist/ui/panels/task-list.d.ts.map +1 -0
  317. package/dist/ui/panels/task-list.js +39 -0
  318. package/dist/ui/panels/task-list.js.map +1 -0
  319. package/dist/ui/theme.d.ts +25 -0
  320. package/dist/ui/theme.d.ts.map +1 -0
  321. package/dist/ui/theme.js +50 -0
  322. package/dist/ui/theme.js.map +1 -0
  323. package/dist/version.d.ts +9 -0
  324. package/dist/version.d.ts.map +1 -0
  325. package/dist/version.js +62 -0
  326. package/dist/version.js.map +1 -0
  327. package/package.json +59 -0
@@ -0,0 +1,216 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect } from "react";
3
+ import { Box, Text } from "ink";
4
+ import { C, G, METRIC_COLORS, nameHash } from "../theme.js";
5
+ import { renderMarkdown } from "../markdown.js";
6
+ import { sparkline } from "./metrics-dashboard.js";
7
+ import { truncate, formatMetricValue } from "../format.js";
8
+ export function ConversationPanel({ messages, isStreaming, }) {
9
+ if (messages.length === 0)
10
+ return null;
11
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, paddingBottom: 1, children: [messages.map((msg) => (_jsx(MessageLine, { message: msg }, msg.id))), isStreaming && (_jsx(Box, { paddingLeft: 2, children: _jsx(PulsingIndicator, {}) }))] }));
12
+ }
13
+ function MessageLine({ message }) {
14
+ const { role, content, tool } = message;
15
+ switch (role) {
16
+ case "user":
17
+ return (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { wrap: "wrap", children: [_jsxs(Text, { color: C.primary, bold: true, children: [G.active, " "] }), _jsx(Text, { color: C.text, children: content })] }) }));
18
+ case "assistant":
19
+ return (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { wrap: "wrap", children: renderMarkdown(content) }) }));
20
+ case "tool":
21
+ return tool ? _jsx(ToolCallBlock, { tool: tool }) : null;
22
+ case "error":
23
+ return (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { wrap: "wrap", color: C.error, children: [G.active, " ", content] }) }));
24
+ case "system":
25
+ return (_jsx(Box, { paddingLeft: 2, marginTop: 1, children: _jsx(Text, { color: C.primary, dimColor: true, wrap: "wrap", children: content }) }));
26
+ default:
27
+ return (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { wrap: "wrap", children: content }) }));
28
+ }
29
+ }
30
+ const PULSE_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
31
+ function PulsingIndicator() {
32
+ const [frame, setFrame] = useState(0);
33
+ useEffect(() => {
34
+ const timer = setInterval(() => {
35
+ setFrame((f) => (f + 1) % PULSE_FRAMES.length);
36
+ }, 80);
37
+ return () => clearInterval(timer);
38
+ }, []);
39
+ return _jsx(Text, { color: C.primary, children: PULSE_FRAMES[frame] });
40
+ }
41
+ // ── Tool call routing ────────────────────────────────────────────────
42
+ function ToolCallBlock({ tool }) {
43
+ switch (tool.name) {
44
+ case "remote_exec":
45
+ return _jsx(ExecDisplay, { tool: tool });
46
+ case "remote_exec_background":
47
+ return _jsx(ExecBackgroundDisplay, { tool: tool });
48
+ case "remote_upload":
49
+ case "remote_download":
50
+ return _jsx(FileSyncDisplay, { tool: tool });
51
+ case "sleep":
52
+ return _jsx(SleepDisplay, { tool: tool });
53
+ case "start_monitor":
54
+ return _jsx(MonitorDisplay, { tool: tool });
55
+ case "stop_monitor":
56
+ return _jsx(MonitorStopDisplay, { tool: tool });
57
+ case "task_output":
58
+ return _jsx(TaskOutputDisplay, { tool: tool });
59
+ case "list_machines":
60
+ return _jsx(ListMachinesDisplay, { tool: tool });
61
+ case "show_metrics":
62
+ return _jsx(ShowMetricsDisplay, { tool: tool });
63
+ case "compare_runs":
64
+ return _jsx(CompareRunsDisplay, { tool: tool });
65
+ default:
66
+ return _jsx(GenericToolDisplay, { tool: tool });
67
+ }
68
+ }
69
+ // ── Shared helpers ───────────────────────────────────────────────────
70
+ function ToolHeader({ icon, label, detail }) {
71
+ return (_jsx(Box, { children: _jsxs(Text, { wrap: "wrap", children: [_jsx(Text, { color: C.primary, dimColor: true, children: "┃ " }), _jsxs(Text, { color: C.bright, bold: true, children: [icon, " ", label] }), detail ? _jsxs(Text, { color: C.dim, children: [" ", detail] }) : null] }) }));
72
+ }
73
+ function parseResult(tool) {
74
+ if (!tool.result)
75
+ return null;
76
+ try {
77
+ return JSON.parse(tool.result);
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ }
83
+ // ── remote_exec ──────────────────────────────────────────────────────
84
+ function ExecDisplay({ tool }) {
85
+ const machine = tool.args.machine_id ?? "?";
86
+ const command = tool.args.command ?? "";
87
+ const result = parseResult(tool);
88
+ const stdout = result?.stdout;
89
+ const stderr = result?.stderr;
90
+ const exitCode = result?.exit_code;
91
+ const hasOutput = stdout || stderr;
92
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: "$", label: machine, detail: command }), tool.result && (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [stdout ? (_jsxs(Box, { children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.text, wrap: "wrap", children: trimOutput(stdout, 20) })] })) : null, stderr ? (_jsxs(Box, { children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.error, wrap: "wrap", children: trimOutput(stderr, 5) })] })) : null, exitCode !== undefined && exitCode !== 0 ? (_jsxs(Box, { children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsxs(Text, { color: C.error, children: ["exit ", exitCode] })] })) : null, !hasOutput && exitCode === 0 ? (_jsxs(Box, { children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.dim, children: "ok" })] })) : null] })), !tool.result && (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.dim, children: "running\u2026" })] }))] }));
93
+ }
94
+ function trimOutput(text, maxLines) {
95
+ const lines = text.trimEnd().split("\n");
96
+ if (lines.length <= maxLines)
97
+ return text.trimEnd();
98
+ const kept = lines.slice(-maxLines);
99
+ return `… ${lines.length - maxLines} lines hidden …\n${kept.join("\n")}`;
100
+ }
101
+ // ── remote_exec_background ───────────────────────────────────────────
102
+ function ExecBackgroundDisplay({ tool }) {
103
+ const machine = tool.args.machine_id ?? "?";
104
+ const command = tool.args.command ?? "";
105
+ const result = parseResult(tool);
106
+ const pid = result?.pid;
107
+ const logPath = result?.log_path;
108
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: "&", label: machine, detail: command }), result && (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.dim, children: "pid " }), _jsx(Text, { color: C.text, children: pid }), logPath ? (_jsxs(Text, { color: C.dim, children: [" \u2192 ", logPath] })) : null] })), !tool.result && (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.dim, children: "launching\u2026" })] }))] }));
109
+ }
110
+ // ── remote_upload / remote_download ──────────────────────────────────
111
+ function FileSyncDisplay({ tool }) {
112
+ const isUpload = tool.name === "remote_upload";
113
+ const icon = isUpload ? "↑" : "↓";
114
+ const machine = tool.args.machine_id ?? "?";
115
+ const local = tool.args.local_path ?? "";
116
+ const remote = tool.args.remote_path ?? "";
117
+ const label = isUpload ? `${local} → ${machine}:${remote}` : `${machine}:${remote} → ${local}`;
118
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: icon, label: tool.name.replace("remote_", ""), detail: label }), tool.result && (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: tool.isError ? C.error : C.dim, children: truncate(tool.result, 80) })] }))] }));
119
+ }
120
+ // ── sleep ────────────────────────────────────────────────────────────
121
+ function SleepDisplay({ tool }) {
122
+ const reason = tool.args.reason ?? "";
123
+ const result = parseResult(tool);
124
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: "\u25C7", label: "sleep", detail: truncate(reason, 60) }), result && !tool.isError && (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsxs(Text, { color: C.dim, children: ["session ", String(result.session_id ?? "?").slice(0, 8), result.deadline ? ` deadline ${String(result.deadline)}` : ""] })] })), tool.isError && tool.result && (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.error, children: truncate(tool.result, 80) })] }))] }));
125
+ }
126
+ // ── task_output ─────────────────────────────────────────────────────
127
+ function TaskOutputDisplay({ tool }) {
128
+ const machine = tool.args.machine_id ?? "?";
129
+ const pid = tool.args.pid;
130
+ const result = parseResult(tool);
131
+ const output = result?.output;
132
+ const running = result?.running;
133
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: "\u22B3", label: `${machine}:${pid}`, detail: running !== undefined ? (running ? "running" : "stopped") : undefined }), output ? (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.text, wrap: "wrap", children: trimOutput(output, 20) })] })) : !tool.result ? (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.dim, children: "fetching\u2026" })] })) : result?.error ? (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.error, children: String(result.error) })] })) : null] }));
134
+ }
135
+ // ── list_machines ────────────────────────────────────────────────────
136
+ function ListMachinesDisplay({ tool }) {
137
+ const result = parseResult(tool);
138
+ const machines = (result?.machines ?? []);
139
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: "\u229E", label: "list_machines" }), machines.length > 0 ? (machines.map((m) => (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsxs(Text, { color: m.connected ? C.primary : C.dim, children: [m.connected ? "◆" : "◇", " ", m.id] }), m.error ? _jsxs(Text, { color: C.error, children: [" ", m.error] }) : null] }, m.id)))) : !tool.result ? (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.dim, children: "fetching\u2026" })] })) : null] }));
140
+ }
141
+ // ── show_metrics ────────────────────────────────────────────────────
142
+ function ShowMetricsDisplay({ tool }) {
143
+ const result = parseResult(tool);
144
+ const metrics = (result?.metrics ?? []);
145
+ const trendIcon = (trend) => {
146
+ switch (trend) {
147
+ case "decreasing": return "\u2193"; // ↓
148
+ case "increasing": return "\u2191"; // ↑
149
+ case "plateau": return "\u2192"; // →
150
+ case "unstable": return "~";
151
+ default: return "?";
152
+ }
153
+ };
154
+ const trendColor = (trend) => {
155
+ switch (trend) {
156
+ case "decreasing": return C.primary;
157
+ case "increasing": return C.primary;
158
+ case "plateau": return C.dim;
159
+ default: return C.dim;
160
+ }
161
+ };
162
+ const formatValue = (v) => v === null ? "\u2014" : formatMetricValue(v);
163
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: "\u25C8", label: "show_metrics" }), metrics.length > 0 ? (metrics.map((m) => {
164
+ const color = METRIC_COLORS[nameHash(m.name) % METRIC_COLORS.length];
165
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsxs(Box, { children: [_jsx(Text, { color: C.dim, dimColor: true, children: "\u2503 " }), _jsx(Text, { color: color, bold: true, children: m.name }), m.values.length > 0 ? (_jsxs(Text, { color: color, children: [" ", sparkline(m.values, 30)] })) : null] }), m.latest !== null ? (_jsxs(Box, { children: [_jsx(Text, { color: C.dim, dimColor: true, children: "\u2503 " }), _jsx(Text, { color: C.text, children: formatValue(m.latest) }), _jsxs(Text, { color: C.dim, children: [" ", "min ", formatValue(m.min), " max ", formatValue(m.max)] }), _jsxs(Text, { color: trendColor(m.trend), children: [" ", trendIcon(m.trend), " ", m.trend] })] })) : (_jsxs(Box, { children: [_jsx(Text, { color: C.dim, dimColor: true, children: "\u2503 " }), _jsx(Text, { color: C.dim, children: "no data" })] }))] }, m.name));
166
+ })) : !tool.result ? (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "\u2503 " }), _jsx(Text, { color: C.dim, children: "loading..." })] })) : (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "\u2503 " }), _jsx(Text, { color: C.dim, children: "no metrics found" })] }))] }));
167
+ }
168
+ // ── start_monitor / stop_monitor ─────────────────────────────────────
169
+ function MonitorDisplay({ tool }) {
170
+ const result = parseResult(tool);
171
+ const goal = tool.args.goal ?? "";
172
+ const interval = tool.args.interval_minutes ?? 2;
173
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: "\u27F3", label: "monitor", detail: `every ${interval}m` }), _jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.dim, children: goal })] })] }));
174
+ }
175
+ function MonitorStopDisplay({ tool }) {
176
+ return (_jsx(Box, { flexDirection: "column", paddingLeft: 2, children: _jsx(ToolHeader, { icon: "\u27F3", label: "monitor stopped" }) }));
177
+ }
178
+ // ── compare_runs ────────────────────────────────────────────────────
179
+ function CompareRunsDisplay({ tool }) {
180
+ const taskA = tool.args.task_a ?? "?";
181
+ const taskB = tool.args.task_b ?? "?";
182
+ const result = parseResult(tool);
183
+ const comparisons = (result?.comparisons ?? []);
184
+ const dirIcon = (d) => {
185
+ switch (d) {
186
+ case "decreased": return "↓";
187
+ case "increased": return "↑";
188
+ case "unchanged": return "→";
189
+ default: return "?";
190
+ }
191
+ };
192
+ const dirColor = (d) => {
193
+ switch (d) {
194
+ case "decreased": return C.primary;
195
+ case "increased": return C.primary;
196
+ case "unchanged": return C.dim;
197
+ default: return C.dim;
198
+ }
199
+ };
200
+ const fmtVal = (v) => v === null ? "—" : formatMetricValue(v);
201
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: "\u21C4", label: "compare", detail: `${taskA} vs ${taskB}` }), comparisons.length > 0 ? (comparisons.map((c) => {
202
+ const color = METRIC_COLORS[nameHash(c.metric) % METRIC_COLORS.length];
203
+ return (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: color, children: c.metric.padEnd(12) }), _jsx(Text, { color: C.dim, children: fmtVal(c.baseline?.latest ?? null) }), _jsx(Text, { color: C.dim, children: " → " }), _jsx(Text, { color: dirColor(c.direction), children: fmtVal(c.experiment?.latest ?? null) }), c.delta !== null ? (_jsxs(Text, { color: dirColor(c.direction), children: [" ", dirIcon(c.direction), " ", c.delta > 0 ? "+" : "", fmtVal(c.delta)] })) : null] }, c.metric));
204
+ })) : !tool.result ? (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.dim, children: "comparing\u2026" })] })) : result?.error ? (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: C.error, children: String(result.error) })] })) : null] }));
205
+ }
206
+ // ── Generic fallback ─────────────────────────────────────────────────
207
+ function GenericToolDisplay({ tool }) {
208
+ const argStr = Object.entries(tool.args)
209
+ .map(([k, v]) => {
210
+ const val = typeof v === "string" ? truncate(v, 50) : JSON.stringify(v);
211
+ return `${k}: ${val}`;
212
+ })
213
+ .join(" ");
214
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(ToolHeader, { icon: "\u2699", label: tool.name, detail: argStr }), tool.result && (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: C.dim, dimColor: true, children: "┃ " }), _jsx(Text, { color: tool.isError ? C.error : C.dim, wrap: "wrap", children: truncate(tool.result, 120) })] }))] }));
215
+ }
216
+ //# sourceMappingURL=conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../../src/ui/panels/conversation.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface MetricsDashboardProps {
2
+ metricData?: Map<string, number[]>;
3
+ width?: number;
4
+ }
5
+ export declare function MetricsDashboard({ metricData, width, }: MetricsDashboardProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function sparkline(values: number[], width?: number): string;
7
+ export {};
8
+ //# sourceMappingURL=metrics-dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-dashboard.d.ts","sourceRoot":"","sources":["../../../src/ui/panels/metrics-dashboard.tsx"],"names":[],"mappings":"AAKA,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,KAAK,GACN,EAAE,qBAAqB,2CA4CvB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,SAAK,GAAG,MAAM,CAgC9D"}
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { C, METRIC_COLORS, nameHash } from "../theme.js";
4
+ import { formatMetricValue } from "../format.js";
5
+ export function MetricsDashboard({ metricData, width, }) {
6
+ const panelWidth = width ?? (Math.floor((process.stdout.columns || 80) / 2) - 3);
7
+ // label(12) + space(1) + value(10) + space(1) + padding(2) = 26 overhead
8
+ const sparkWidth = Math.max(10, panelWidth - 26);
9
+ return (_jsx(Box, { flexDirection: "column", flexGrow: 1, children: !metricData || metricData.size === 0 ? (_jsx(Box, { flexGrow: 1, alignItems: "center", justifyContent: "center", children: _jsx(Text, { color: C.dim, dimColor: true, children: "no active metrics" }) })) : ((() => {
10
+ const entries = Array.from(metricData.entries());
11
+ const maxNameLen = Math.max(...entries.map(([n]) => n.length));
12
+ const labelWidth = maxNameLen + 1;
13
+ const adjSparkWidth = Math.max(10, panelWidth - labelWidth - 14);
14
+ return entries.map(([name, values]) => {
15
+ const color = METRIC_COLORS[nameHash(name) % METRIC_COLORS.length];
16
+ const latest = values.length > 0
17
+ ? values[values.length - 1]
18
+ : null;
19
+ const formatted = latest !== null
20
+ ? formatMetricValue(latest)
21
+ : "—";
22
+ return (_jsxs(Box, { paddingLeft: 1, children: [_jsx(Text, { color: color, children: name.padEnd(labelWidth) }), _jsx(Text, { color: color, children: sparkline(values, adjSparkWidth) }), _jsxs(Text, { color: C.text, children: [" ", formatted] })] }, name));
23
+ });
24
+ })()) }));
25
+ }
26
+ export function sparkline(values, width = 40) {
27
+ if (values.length === 0)
28
+ return "";
29
+ const blocks = [
30
+ "\u2581",
31
+ "\u2582",
32
+ "\u2583",
33
+ "\u2584",
34
+ "\u2585",
35
+ "\u2586",
36
+ "\u2587",
37
+ "\u2588",
38
+ ];
39
+ const min = Math.min(...values);
40
+ const max = Math.max(...values);
41
+ const range = max - min || 1;
42
+ const step = Math.max(1, Math.floor(values.length / width));
43
+ const sampled = [];
44
+ for (let i = 0; i < values.length; i += step) {
45
+ sampled.push(values[i]);
46
+ if (sampled.length >= width)
47
+ break;
48
+ }
49
+ return sampled
50
+ .map((v) => {
51
+ const idx = Math.round(((v - min) / range) * (blocks.length - 1));
52
+ return blocks[idx];
53
+ })
54
+ .join("");
55
+ }
56
+ //# sourceMappingURL=metrics-dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-dashboard.js","sourceRoot":"","sources":["../../../src/ui/panels/metrics-dashboard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { SleepManager } from "../../scheduler/sleep-manager.js";
2
+ interface SleepPanelProps {
3
+ sleepManager: SleepManager;
4
+ }
5
+ export declare function SleepPanel({ sleepManager }: SleepPanelProps): import("react/jsx-runtime").JSX.Element | null;
6
+ export {};
7
+ //# sourceMappingURL=sleep-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep-panel.d.ts","sourceRoot":"","sources":["../../../src/ui/panels/sleep-panel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGrE,UAAU,eAAe;IACvB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,wBAAgB,UAAU,CAAC,EAAE,YAAY,EAAE,EAAE,eAAe,kDAuD3D"}
@@ -0,0 +1,48 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect } from "react";
3
+ import { Box, Text } from "ink";
4
+ import { C, G } from "../theme.js";
5
+ import { formatDuration } from "../format.js";
6
+ export function SleepPanel({ sleepManager }) {
7
+ const [now, setNow] = useState(Date.now());
8
+ useEffect(() => {
9
+ const interval = setInterval(() => setNow(Date.now()), 1000);
10
+ return () => clearInterval(interval);
11
+ }, []);
12
+ const session = sleepManager.currentSleep;
13
+ if (!session)
14
+ return null;
15
+ const elapsed = now - session.createdAt;
16
+ const elapsedStr = formatDuration(elapsed);
17
+ const deadline = session.trigger.deadline;
18
+ const remaining = deadline ? deadline - now : null;
19
+ return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", flexGrow: 1, paddingX: 2, children: [_jsxs(Text, { color: C.primary, bold: true, children: [G.brand, " SLEEPING"] }), _jsx(Text, { color: C.dim, children: session.trigger.sleepReason }), _jsxs(Text, { color: C.primary, children: ["elapsed ", elapsedStr] }), remaining !== null && remaining > 0 && (_jsxs(Text, { color: C.primary, children: ["wake in ", formatDuration(remaining)] })), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: C.primary, bold: true, children: "triggers:" }), _jsx(TriggerDisplay, { expression: session.trigger.expression, satisfiedLeaves: session.trigger.satisfiedLeaves, path: "root" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: C.dim, dimColor: true, children: "type to wake manually" }) })] }));
20
+ }
21
+ function TriggerDisplay({ expression, satisfiedLeaves, path, }) {
22
+ if ("op" in expression) {
23
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 1, children: [_jsxs(Text, { color: C.dim, children: [expression.op.toUpperCase(), ":"] }), expression.children.map((child, i) => (_jsx(TriggerDisplay, { expression: child, satisfiedLeaves: satisfiedLeaves, path: `${path}.${i}` }, i)))] }));
24
+ }
25
+ const satisfied = satisfiedLeaves.has(path);
26
+ const icon = satisfied ? G.dot : G.dotDim;
27
+ const color = satisfied ? C.success : C.dim;
28
+ return (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: color, children: [icon, " ", describeCondition(expression)] }) }));
29
+ }
30
+ function describeCondition(expr) {
31
+ if ("op" in expr)
32
+ return `${expr.op}(...)`;
33
+ switch (expr.kind) {
34
+ case "timer":
35
+ return `timer: ${new Date(expr.wakeAt).toLocaleTimeString()}`;
36
+ case "process_exit":
37
+ return `process: ${expr.processPattern ?? `PID ${expr.pid}`} on ${expr.machineId}`;
38
+ case "metric":
39
+ return `metric: ${expr.field} ${expr.comparator} ${expr.threshold}`;
40
+ case "file":
41
+ return `file ${expr.mode}: ${expr.path} on ${expr.machineId}`;
42
+ case "resource":
43
+ return `resource: ${expr.resource} ${expr.comparator} ${expr.threshold}%`;
44
+ case "user_message":
45
+ return "user message";
46
+ }
47
+ }
48
+ //# sourceMappingURL=sleep-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep-panel.js","sourceRoot":"","sources":["../../../src/ui/panels/sleep-panel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { StickyNote } from "../../core/stickies.js";
2
+ interface StickyNotesPanelProps {
3
+ notes: StickyNote[];
4
+ width: number;
5
+ }
6
+ export declare function StickyNotesPanel({ notes, width }: StickyNotesPanelProps): import("react/jsx-runtime").JSX.Element | null;
7
+ export {};
8
+ //# sourceMappingURL=sticky-notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sticky-notes.d.ts","sourceRoot":"","sources":["../../../src/ui/panels/sticky-notes.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,UAAU,qBAAqB;IAC7B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,qBAAqB,kDAuBvE"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { C } from "../theme.js";
4
+ export function StickyNotesPanel({ notes, width }) {
5
+ if (notes.length === 0)
6
+ return null;
7
+ const inner = width - 4; // 2 for border, 2 for padding
8
+ const label = "─ STICKIES ";
9
+ const topBorder = "┌" + label + "─".repeat(Math.max(0, width - 2 - label.length)) + "┐";
10
+ return (_jsxs(Box, { flexDirection: "column", width: width, children: [_jsx(Text, { color: C.primary, children: topBorder }), notes.map((note) => (_jsx(StickyNoteItem, { note: note, innerWidth: inner, borderWidth: width }, note.num))), _jsx(Text, { color: C.primary, children: "└" + "─".repeat(width - 2) + "┘" })] }));
11
+ }
12
+ function StickyNoteItem({ note, innerWidth, borderWidth, }) {
13
+ const label = `${note.num}. `;
14
+ const textWidth = innerWidth - label.length;
15
+ const wrapped = wrapText(note.text, textWidth);
16
+ return (_jsxs(_Fragment, { children: [wrapped.map((line, i) => {
17
+ const prefix = i === 0 ? label : " ".repeat(label.length);
18
+ const content = prefix + line;
19
+ return (_jsxs(Text, { color: C.primary, children: ["│", " ", _jsx(Text, { color: i === 0 ? C.bright : C.text, bold: i === 0, children: pad(content, borderWidth - 4) }), " ", "│"] }, `${note.num}-${i}`));
20
+ }), _jsx(Text, { color: C.primary, children: "│" + " ".repeat(borderWidth - 2) + "│" })] }));
21
+ }
22
+ function wrapText(text, width) {
23
+ if (width <= 0)
24
+ return [text];
25
+ const lines = [];
26
+ const words = text.split(" ");
27
+ let current = "";
28
+ for (const word of words) {
29
+ if (current.length === 0) {
30
+ current = word;
31
+ }
32
+ else if (current.length + 1 + word.length <= width) {
33
+ current += " " + word;
34
+ }
35
+ else {
36
+ lines.push(current);
37
+ current = word;
38
+ }
39
+ }
40
+ if (current)
41
+ lines.push(current);
42
+ return lines.length > 0 ? lines : [""];
43
+ }
44
+ function pad(text, width) {
45
+ if (text.length >= width)
46
+ return text.slice(0, width);
47
+ return text + " ".repeat(width - text.length);
48
+ }
49
+ //# sourceMappingURL=sticky-notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sticky-notes.js","sourceRoot":"","sources":["../../../src/ui/panels/sticky-notes.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { TaskInfo } from "../layout.js";
2
+ interface TaskListPanelProps {
3
+ tasks?: TaskInfo[];
4
+ width?: number;
5
+ }
6
+ export declare function TaskListPanel({ tasks, width }: TaskListPanelProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=task-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-list.d.ts","sourceRoot":"","sources":["../../../src/ui/panels/task-list.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAU,EAAE,KAAK,EAAE,EAAE,kBAAkB,2CA+BtE"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { C, G } from "../theme.js";
4
+ export function TaskListPanel({ tasks = [], width }) {
5
+ const panelWidth = width ?? (Math.floor((process.stdout.columns || 80) * 0.4) - 4);
6
+ // icon(1) + space(1) + machineId(~8) + space(1) = ~11 overhead
7
+ const nameWidth = Math.max(10, panelWidth - 11);
8
+ return (_jsx(Box, { flexDirection: "column", flexGrow: 1, children: tasks.length === 0 ? (_jsx(Box, { flexGrow: 1, alignItems: "center", justifyContent: "center", children: _jsx(Text, { color: C.dim, dimColor: true, children: "no tasks" }) })) : (tasks.slice(0, 5).map((task) => {
9
+ const name = task.name.length > nameWidth
10
+ ? task.name.slice(0, nameWidth - 1) + "…"
11
+ : task.name;
12
+ return (_jsxs(Box, { paddingLeft: 1, children: [_jsxs(Text, { color: statusColor(task.status), children: [statusIcon(task.status), " "] }), _jsxs(Text, { color: C.dim, children: [task.machineId, " "] }), _jsx(Text, { color: C.text, children: name })] }, task.id));
13
+ })) }));
14
+ }
15
+ function statusIcon(status) {
16
+ switch (status) {
17
+ case "running":
18
+ return G.dot;
19
+ case "completed":
20
+ return G.dot;
21
+ case "failed":
22
+ return G.active;
23
+ default:
24
+ return G.bullet;
25
+ }
26
+ }
27
+ function statusColor(status) {
28
+ switch (status) {
29
+ case "running":
30
+ return C.primary;
31
+ case "completed":
32
+ return C.success;
33
+ case "failed":
34
+ return C.error;
35
+ default:
36
+ return C.dim;
37
+ }
38
+ }
39
+ //# sourceMappingURL=task-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-list.js","sourceRoot":"","sources":["../../../src/ui/panels/task-list.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAQnC,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAsB;IACrE,MAAM,UAAU,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACnF,+DAA+D;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC;IAEhD,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,YACpC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,YAC3D,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,+BAErB,GACH,CACP,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS;gBACvC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG;gBACzC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACd,OAAO,CACL,MAAC,GAAG,IAAe,WAAW,EAAE,CAAC,aAC/B,MAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAClC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IACxB,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,GAAG,aAAG,IAAI,CAAC,SAAS,SAAS,EAC5C,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAAG,IAAI,GAAQ,KAL1B,IAAI,CAAC,EAAE,CAMX,CACP,CAAC;QACJ,CAAC,CAAC,CACH,GACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,GAAG,CAAC;QACf,KAAK,WAAW;YACd,OAAO,CAAC,CAAC,GAAG,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,MAAM,CAAC;QAClB;YACE,OAAO,CAAC,CAAC,MAAM,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,OAAO,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,CAAC,CAAC,OAAO,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB;YACE,OAAO,CAAC,CAAC,GAAG,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ export declare const C: {
2
+ primary: "yellow";
3
+ bright: "yellowBright";
4
+ text: "white";
5
+ dim: "gray";
6
+ error: "red";
7
+ success: "green";
8
+ };
9
+ export declare const G: {
10
+ brand: string;
11
+ section: string;
12
+ bullet: string;
13
+ active: string;
14
+ dot: string;
15
+ dotDim: string;
16
+ rule: string;
17
+ dash: string;
18
+ };
19
+ export declare const METRIC_COLORS: readonly ["yellowBright", "cyanBright", "greenBright", "magentaBright", "redBright", "blueBright", "whiteBright", "yellow", "cyan", "green"];
20
+ export declare function nameHash(s: string): number;
21
+ /** Heavy horizontal rule spanning the terminal */
22
+ export declare function HRule({ dim }: {
23
+ dim?: boolean;
24
+ }): import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/ui/theme.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,CAAC;;;;;;;CAOb,CAAC;AAGF,eAAO,MAAM,CAAC;;;;;;;;;CASb,CAAC;AAGF,eAAO,MAAM,aAAa,8IAWhB,CAAC;AAEX,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1C;AAMD,kDAAkD;AAClD,wBAAgB,KAAK,CAAC,EAAE,GAAW,EAAE,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,2CAQvD"}