@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.
- package/LICENSE +202 -0
- package/README.md +222 -0
- package/dist/app.d.ts +9 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +289 -0
- package/dist/app.js.map +1 -0
- package/dist/core/agent-loop.d.ts +16 -0
- package/dist/core/agent-loop.d.ts.map +1 -0
- package/dist/core/agent-loop.js +64 -0
- package/dist/core/agent-loop.js.map +1 -0
- package/dist/core/monitor.d.ts +15 -0
- package/dist/core/monitor.d.ts.map +1 -0
- package/dist/core/monitor.js +40 -0
- package/dist/core/monitor.js.map +1 -0
- package/dist/core/orchestrator.d.ts +51 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +235 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/state-machine.d.ts +19 -0
- package/dist/core/state-machine.d.ts.map +1 -0
- package/dist/core/state-machine.js +42 -0
- package/dist/core/state-machine.js.map +1 -0
- package/dist/core/stickies.d.ts +20 -0
- package/dist/core/stickies.d.ts.map +1 -0
- package/dist/core/stickies.js +41 -0
- package/dist/core/stickies.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/context-gate.d.ts +49 -0
- package/dist/memory/context-gate.d.ts.map +1 -0
- package/dist/memory/context-gate.js +109 -0
- package/dist/memory/context-gate.js.map +1 -0
- package/dist/memory/experiment-tracker.d.ts +21 -0
- package/dist/memory/experiment-tracker.d.ts.map +1 -0
- package/dist/memory/experiment-tracker.js +117 -0
- package/dist/memory/experiment-tracker.js.map +1 -0
- package/dist/memory/memory-store.d.ts +37 -0
- package/dist/memory/memory-store.d.ts.map +1 -0
- package/dist/memory/memory-store.js +150 -0
- package/dist/memory/memory-store.js.map +1 -0
- package/dist/memory/token-estimator.d.ts +7 -0
- package/dist/memory/token-estimator.d.ts.map +1 -0
- package/dist/memory/token-estimator.js +30 -0
- package/dist/memory/token-estimator.js.map +1 -0
- package/dist/metrics/analyzer.d.ts +15 -0
- package/dist/metrics/analyzer.d.ts.map +1 -0
- package/dist/metrics/analyzer.js +67 -0
- package/dist/metrics/analyzer.js.map +1 -0
- package/dist/metrics/collector.d.ts +23 -0
- package/dist/metrics/collector.d.ts.map +1 -0
- package/dist/metrics/collector.js +60 -0
- package/dist/metrics/collector.js.map +1 -0
- package/dist/metrics/parser.d.ts +21 -0
- package/dist/metrics/parser.d.ts.map +1 -0
- package/dist/metrics/parser.js +43 -0
- package/dist/metrics/parser.js.map +1 -0
- package/dist/metrics/parsers/csv.d.ts +8 -0
- package/dist/metrics/parsers/csv.d.ts.map +1 -0
- package/dist/metrics/parsers/csv.js +37 -0
- package/dist/metrics/parsers/csv.js.map +1 -0
- package/dist/metrics/parsers/json.d.ts +8 -0
- package/dist/metrics/parsers/json.d.ts.map +1 -0
- package/dist/metrics/parsers/json.js +42 -0
- package/dist/metrics/parsers/json.js.map +1 -0
- package/dist/metrics/parsers/stdout.d.ts +3 -0
- package/dist/metrics/parsers/stdout.d.ts.map +1 -0
- package/dist/metrics/parsers/stdout.js +79 -0
- package/dist/metrics/parsers/stdout.js.map +1 -0
- package/dist/metrics/parsers/tensorboard.d.ts +16 -0
- package/dist/metrics/parsers/tensorboard.d.ts.map +1 -0
- package/dist/metrics/parsers/tensorboard.js +22 -0
- package/dist/metrics/parsers/tensorboard.js.map +1 -0
- package/dist/metrics/store.d.ts +33 -0
- package/dist/metrics/store.d.ts.map +1 -0
- package/dist/metrics/store.js +141 -0
- package/dist/metrics/store.js.map +1 -0
- package/dist/providers/auth/auth-manager.d.ts +22 -0
- package/dist/providers/auth/auth-manager.d.ts.map +1 -0
- package/dist/providers/auth/auth-manager.js +77 -0
- package/dist/providers/auth/auth-manager.js.map +1 -0
- package/dist/providers/auth/token-store.d.ts +14 -0
- package/dist/providers/auth/token-store.d.ts.map +1 -0
- package/dist/providers/auth/token-store.js +55 -0
- package/dist/providers/auth/token-store.js.map +1 -0
- package/dist/providers/claude/provider.d.ts +46 -0
- package/dist/providers/claude/provider.d.ts.map +1 -0
- package/dist/providers/claude/provider.js +606 -0
- package/dist/providers/claude/provider.js.map +1 -0
- package/dist/providers/openai/callback-server.d.ts +11 -0
- package/dist/providers/openai/callback-server.d.ts.map +1 -0
- package/dist/providers/openai/callback-server.js +58 -0
- package/dist/providers/openai/callback-server.js.map +1 -0
- package/dist/providers/openai/oauth.d.ts +16 -0
- package/dist/providers/openai/oauth.d.ts.map +1 -0
- package/dist/providers/openai/oauth.js +110 -0
- package/dist/providers/openai/oauth.js.map +1 -0
- package/dist/providers/openai/provider.d.ts +29 -0
- package/dist/providers/openai/provider.d.ts.map +1 -0
- package/dist/providers/openai/provider.js +363 -0
- package/dist/providers/openai/provider.js.map +1 -0
- package/dist/providers/retry.d.ts +6 -0
- package/dist/providers/retry.d.ts.map +1 -0
- package/dist/providers/retry.js +13 -0
- package/dist/providers/retry.js.map +1 -0
- package/dist/providers/sse.d.ts +6 -0
- package/dist/providers/sse.d.ts.map +1 -0
- package/dist/providers/sse.js +35 -0
- package/dist/providers/sse.js.map +1 -0
- package/dist/providers/types.d.ts +102 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +11 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/remote/config.d.ts +14 -0
- package/dist/remote/config.d.ts.map +1 -0
- package/dist/remote/config.js +81 -0
- package/dist/remote/config.js.map +1 -0
- package/dist/remote/connection-pool.d.ts +26 -0
- package/dist/remote/connection-pool.d.ts.map +1 -0
- package/dist/remote/connection-pool.js +268 -0
- package/dist/remote/connection-pool.js.map +1 -0
- package/dist/remote/executor.d.ts +23 -0
- package/dist/remote/executor.d.ts.map +1 -0
- package/dist/remote/executor.js +53 -0
- package/dist/remote/executor.js.map +1 -0
- package/dist/remote/file-sync.d.ts +19 -0
- package/dist/remote/file-sync.d.ts.map +1 -0
- package/dist/remote/file-sync.js +44 -0
- package/dist/remote/file-sync.js.map +1 -0
- package/dist/remote/types.d.ts +33 -0
- package/dist/remote/types.d.ts.map +1 -0
- package/dist/remote/types.js +2 -0
- package/dist/remote/types.js.map +1 -0
- package/dist/scheduler/sleep-manager.d.ts +33 -0
- package/dist/scheduler/sleep-manager.d.ts.map +1 -0
- package/dist/scheduler/sleep-manager.js +132 -0
- package/dist/scheduler/sleep-manager.js.map +1 -0
- package/dist/scheduler/ssh-batcher.d.ts +23 -0
- package/dist/scheduler/ssh-batcher.d.ts.map +1 -0
- package/dist/scheduler/ssh-batcher.js +98 -0
- package/dist/scheduler/ssh-batcher.js.map +1 -0
- package/dist/scheduler/state-store.d.ts +8 -0
- package/dist/scheduler/state-store.d.ts.map +1 -0
- package/dist/scheduler/state-store.js +48 -0
- package/dist/scheduler/state-store.js.map +1 -0
- package/dist/scheduler/trigger-scheduler.d.ts +24 -0
- package/dist/scheduler/trigger-scheduler.d.ts.map +1 -0
- package/dist/scheduler/trigger-scheduler.js +142 -0
- package/dist/scheduler/trigger-scheduler.js.map +1 -0
- package/dist/scheduler/triggers/file.d.ts +4 -0
- package/dist/scheduler/triggers/file.d.ts.map +1 -0
- package/dist/scheduler/triggers/file.js +39 -0
- package/dist/scheduler/triggers/file.js.map +1 -0
- package/dist/scheduler/triggers/metric.d.ts +4 -0
- package/dist/scheduler/triggers/metric.d.ts.map +1 -0
- package/dist/scheduler/triggers/metric.js +74 -0
- package/dist/scheduler/triggers/metric.js.map +1 -0
- package/dist/scheduler/triggers/process-exit.d.ts +4 -0
- package/dist/scheduler/triggers/process-exit.d.ts.map +1 -0
- package/dist/scheduler/triggers/process-exit.js +13 -0
- package/dist/scheduler/triggers/process-exit.js.map +1 -0
- package/dist/scheduler/triggers/resource.d.ts +4 -0
- package/dist/scheduler/triggers/resource.d.ts.map +1 -0
- package/dist/scheduler/triggers/resource.js +54 -0
- package/dist/scheduler/triggers/resource.js.map +1 -0
- package/dist/scheduler/triggers/timer.d.ts +3 -0
- package/dist/scheduler/triggers/timer.d.ts.map +1 -0
- package/dist/scheduler/triggers/timer.js +4 -0
- package/dist/scheduler/triggers/timer.js.map +1 -0
- package/dist/scheduler/triggers/types.d.ts +95 -0
- package/dist/scheduler/triggers/types.d.ts.map +1 -0
- package/dist/scheduler/triggers/types.js +11 -0
- package/dist/scheduler/triggers/types.js.map +1 -0
- package/dist/store/database.d.ts +5 -0
- package/dist/store/database.d.ts.map +1 -0
- package/dist/store/database.js +29 -0
- package/dist/store/database.js.map +1 -0
- package/dist/store/migrations.d.ts +3 -0
- package/dist/store/migrations.d.ts.map +1 -0
- package/dist/store/migrations.js +124 -0
- package/dist/store/migrations.js.map +1 -0
- package/dist/store/preferences.d.ts +7 -0
- package/dist/store/preferences.d.ts.map +1 -0
- package/dist/store/preferences.js +26 -0
- package/dist/store/preferences.js.map +1 -0
- package/dist/store/session-store.d.ts +29 -0
- package/dist/store/session-store.d.ts.map +1 -0
- package/dist/store/session-store.js +103 -0
- package/dist/store/session-store.js.map +1 -0
- package/dist/tools/clear-metrics.d.ts +5 -0
- package/dist/tools/clear-metrics.d.ts.map +1 -0
- package/dist/tools/clear-metrics.js +27 -0
- package/dist/tools/clear-metrics.js.map +1 -0
- package/dist/tools/compare-runs.d.ts +4 -0
- package/dist/tools/compare-runs.d.ts.map +1 -0
- package/dist/tools/compare-runs.js +77 -0
- package/dist/tools/compare-runs.js.map +1 -0
- package/dist/tools/consult.d.ts +3 -0
- package/dist/tools/consult.d.ts.map +1 -0
- package/dist/tools/consult.js +62 -0
- package/dist/tools/consult.js.map +1 -0
- package/dist/tools/file-ops.d.ts +6 -0
- package/dist/tools/file-ops.d.ts.map +1 -0
- package/dist/tools/file-ops.js +158 -0
- package/dist/tools/file-ops.js.map +1 -0
- package/dist/tools/kill-task.d.ts +6 -0
- package/dist/tools/kill-task.d.ts.map +1 -0
- package/dist/tools/kill-task.js +55 -0
- package/dist/tools/kill-task.js.map +1 -0
- package/dist/tools/list-machines.d.ts +4 -0
- package/dist/tools/list-machines.d.ts.map +1 -0
- package/dist/tools/list-machines.js +24 -0
- package/dist/tools/list-machines.js.map +1 -0
- package/dist/tools/memory-tools.d.ts +8 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +122 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/metrics-query.d.ts +4 -0
- package/dist/tools/metrics-query.d.ts.map +1 -0
- package/dist/tools/metrics-query.js +69 -0
- package/dist/tools/metrics-query.js.map +1 -0
- package/dist/tools/monitor.d.ts +5 -0
- package/dist/tools/monitor.d.ts.map +1 -0
- package/dist/tools/monitor.js +64 -0
- package/dist/tools/monitor.js.map +1 -0
- package/dist/tools/remote-exec.d.ts +6 -0
- package/dist/tools/remote-exec.d.ts.map +1 -0
- package/dist/tools/remote-exec.js +98 -0
- package/dist/tools/remote-exec.js.map +1 -0
- package/dist/tools/remote-sync.d.ts +5 -0
- package/dist/tools/remote-sync.d.ts.map +1 -0
- package/dist/tools/remote-sync.js +57 -0
- package/dist/tools/remote-sync.js.map +1 -0
- package/dist/tools/show-metrics.d.ts +4 -0
- package/dist/tools/show-metrics.d.ts.map +1 -0
- package/dist/tools/show-metrics.js +69 -0
- package/dist/tools/show-metrics.js.map +1 -0
- package/dist/tools/sleep.d.ts +4 -0
- package/dist/tools/sleep.d.ts.map +1 -0
- package/dist/tools/sleep.js +116 -0
- package/dist/tools/sleep.js.map +1 -0
- package/dist/tools/task-output.d.ts +5 -0
- package/dist/tools/task-output.d.ts.map +1 -0
- package/dist/tools/task-output.js +51 -0
- package/dist/tools/task-output.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +3 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +112 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/ui/commands.d.ts +7 -0
- package/dist/ui/commands.d.ts.map +1 -0
- package/dist/ui/commands.js +21 -0
- package/dist/ui/commands.js.map +1 -0
- package/dist/ui/components/gradient-edge.d.ts +7 -0
- package/dist/ui/components/gradient-edge.d.ts.map +1 -0
- package/dist/ui/components/gradient-edge.js +33 -0
- package/dist/ui/components/gradient-edge.js.map +1 -0
- package/dist/ui/components/input-bar.d.ts +8 -0
- package/dist/ui/components/input-bar.d.ts.map +1 -0
- package/dist/ui/components/input-bar.js +139 -0
- package/dist/ui/components/input-bar.js.map +1 -0
- package/dist/ui/components/key-hint-rule.d.ts +2 -0
- package/dist/ui/components/key-hint-rule.d.ts.map +1 -0
- package/dist/ui/components/key-hint-rule.js +19 -0
- package/dist/ui/components/key-hint-rule.js.map +1 -0
- package/dist/ui/components/overlay-header.d.ts +6 -0
- package/dist/ui/components/overlay-header.d.ts.map +1 -0
- package/dist/ui/components/overlay-header.js +10 -0
- package/dist/ui/components/overlay-header.js.map +1 -0
- package/dist/ui/components/status-bar.d.ts +11 -0
- package/dist/ui/components/status-bar.d.ts.map +1 -0
- package/dist/ui/components/status-bar.js +55 -0
- package/dist/ui/components/status-bar.js.map +1 -0
- package/dist/ui/format.d.ts +12 -0
- package/dist/ui/format.d.ts.map +1 -0
- package/dist/ui/format.js +36 -0
- package/dist/ui/format.js.map +1 -0
- package/dist/ui/layout.d.ts +48 -0
- package/dist/ui/layout.d.ts.map +1 -0
- package/dist/ui/layout.js +857 -0
- package/dist/ui/layout.js.map +1 -0
- package/dist/ui/markdown.d.ts +7 -0
- package/dist/ui/markdown.d.ts.map +1 -0
- package/dist/ui/markdown.js +67 -0
- package/dist/ui/markdown.js.map +1 -0
- package/dist/ui/mouse-filter.d.ts +21 -0
- package/dist/ui/mouse-filter.d.ts.map +1 -0
- package/dist/ui/mouse-filter.js +66 -0
- package/dist/ui/mouse-filter.js.map +1 -0
- package/dist/ui/overlays/metrics-overlay.d.ts +11 -0
- package/dist/ui/overlays/metrics-overlay.d.ts.map +1 -0
- package/dist/ui/overlays/metrics-overlay.js +86 -0
- package/dist/ui/overlays/metrics-overlay.js.map +1 -0
- package/dist/ui/overlays/task-overlay.d.ts +12 -0
- package/dist/ui/overlays/task-overlay.d.ts.map +1 -0
- package/dist/ui/overlays/task-overlay.js +77 -0
- package/dist/ui/overlays/task-overlay.js.map +1 -0
- package/dist/ui/panels/conversation.d.ts +8 -0
- package/dist/ui/panels/conversation.d.ts.map +1 -0
- package/dist/ui/panels/conversation.js +216 -0
- package/dist/ui/panels/conversation.js.map +1 -0
- package/dist/ui/panels/metrics-dashboard.d.ts +8 -0
- package/dist/ui/panels/metrics-dashboard.d.ts.map +1 -0
- package/dist/ui/panels/metrics-dashboard.js +56 -0
- package/dist/ui/panels/metrics-dashboard.js.map +1 -0
- package/dist/ui/panels/sleep-panel.d.ts +7 -0
- package/dist/ui/panels/sleep-panel.d.ts.map +1 -0
- package/dist/ui/panels/sleep-panel.js +48 -0
- package/dist/ui/panels/sleep-panel.js.map +1 -0
- package/dist/ui/panels/sticky-notes.d.ts +8 -0
- package/dist/ui/panels/sticky-notes.d.ts.map +1 -0
- package/dist/ui/panels/sticky-notes.js +49 -0
- package/dist/ui/panels/sticky-notes.js.map +1 -0
- package/dist/ui/panels/task-list.d.ts +8 -0
- package/dist/ui/panels/task-list.d.ts.map +1 -0
- package/dist/ui/panels/task-list.js +39 -0
- package/dist/ui/panels/task-list.js.map +1 -0
- package/dist/ui/theme.d.ts +25 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +50 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/version.d.ts +9 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +62 -0
- package/dist/version.js.map +1 -0
- package/package.json +59 -0
package/dist/app.js
ADDED
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { Layout } from "./ui/layout.js";
|
|
5
|
+
import { Orchestrator } from "./core/orchestrator.js";
|
|
6
|
+
import { ClaudeProvider } from "./providers/claude/provider.js";
|
|
7
|
+
import { OpenAIProvider } from "./providers/openai/provider.js";
|
|
8
|
+
import { AuthManager } from "./providers/auth/auth-manager.js";
|
|
9
|
+
import { OpenAIOAuth } from "./providers/openai/oauth.js";
|
|
10
|
+
import { ConnectionPool } from "./remote/connection-pool.js";
|
|
11
|
+
import { RemoteExecutor } from "./remote/executor.js";
|
|
12
|
+
import { FileSync } from "./remote/file-sync.js";
|
|
13
|
+
import { TriggerScheduler } from "./scheduler/trigger-scheduler.js";
|
|
14
|
+
import { SleepManager } from "./scheduler/sleep-manager.js";
|
|
15
|
+
import { MetricStore } from "./metrics/store.js";
|
|
16
|
+
import { MetricCollector } from "./metrics/collector.js";
|
|
17
|
+
import { createRemoteExecTool, createRemoteExecBackgroundTool, } from "./tools/remote-exec.js";
|
|
18
|
+
import { createUploadTool, createDownloadTool, } from "./tools/remote-sync.js";
|
|
19
|
+
import { createSleepTool } from "./tools/sleep.js";
|
|
20
|
+
import { createListMachinesTool } from "./tools/list-machines.js";
|
|
21
|
+
import { createTaskOutputTool } from "./tools/task-output.js";
|
|
22
|
+
import { createCompareRunsTool } from "./tools/compare-runs.js";
|
|
23
|
+
import { createShowMetricsTool } from "./tools/show-metrics.js";
|
|
24
|
+
import { createClearMetricsTool } from "./tools/clear-metrics.js";
|
|
25
|
+
import { createKillTaskTool } from "./tools/kill-task.js";
|
|
26
|
+
import { createReadFileTool, createWriteFileTool, createPatchFileTool } from "./tools/file-ops.js";
|
|
27
|
+
import { createWebFetchTool } from "./tools/web-fetch.js";
|
|
28
|
+
import { createStartMonitorTool, createStopMonitorTool } from "./tools/monitor.js";
|
|
29
|
+
import { createConsultTool } from "./tools/consult.js";
|
|
30
|
+
import { MonitorManager } from "./core/monitor.js";
|
|
31
|
+
import { loadMachines } from "./remote/config.js";
|
|
32
|
+
import { loadPreferences } from "./store/preferences.js";
|
|
33
|
+
import { MemoryStore } from "./memory/memory-store.js";
|
|
34
|
+
import { ContextGate } from "./memory/context-gate.js";
|
|
35
|
+
import { ExperimentTracker } from "./memory/experiment-tracker.js";
|
|
36
|
+
import { createMemoryTools } from "./tools/memory-tools.js";
|
|
37
|
+
import { StickyManager } from "./core/stickies.js";
|
|
38
|
+
const SYSTEM_PROMPT = `You are Helios, an autonomous ML research agent. You help researchers design, run, and monitor machine learning experiments on local and remote machines.
|
|
39
|
+
|
|
40
|
+
## Machines
|
|
41
|
+
- "local" is always available — it runs commands on the user's machine directly (no SSH).
|
|
42
|
+
- Remote machines are added by the user via /machine add. Use list_machines to see what's available.
|
|
43
|
+
- Prefer remote machines for heavy compute (training, GPU workloads). Use "local" for lightweight tasks or when no remote machines are configured.
|
|
44
|
+
|
|
45
|
+
## Capabilities
|
|
46
|
+
- Execute quick commands locally or remotely (remote_exec) — ONLY for short commands like ls, cat, pip install, git clone
|
|
47
|
+
- Launch and monitor training runs (remote_exec_background) — ALL training, evaluation, and long-running processes
|
|
48
|
+
- Track metrics like loss, accuracy, rewards (show_metrics)
|
|
49
|
+
- Transfer files between local and remote machines (remote_upload, remote_download)
|
|
50
|
+
- Read, write, and edit files on any machine (read_file, write_file, patch_file)
|
|
51
|
+
- Fetch web pages, documentation, and papers (web_fetch)
|
|
52
|
+
- Clear metrics from discarded runs (clear_metrics)
|
|
53
|
+
- Sleep and set triggers to wake on conditions (sleep)
|
|
54
|
+
- List configured machines (list_machines)
|
|
55
|
+
- Consult the other AI provider for a second opinion (consult)
|
|
56
|
+
|
|
57
|
+
## MANDATORY: Use remote_exec_background for ALL Runs
|
|
58
|
+
**EVERY training run, evaluation, benchmark, or process that takes more than a few seconds MUST use remote_exec_background.** Never use remote_exec for these — it blocks, produces no dashboard output, and breaks the entire monitoring pipeline.
|
|
59
|
+
|
|
60
|
+
remote_exec_background:
|
|
61
|
+
- Returns a pid and log_path
|
|
62
|
+
- Automatically appears in the TASKS panel
|
|
63
|
+
- Stdout/stderr is captured — Helios parses it for live metrics in the dashboard
|
|
64
|
+
- **DO NOT redirect stdout in your command** (no > file, no tee, no logging to file). Redirecting stdout breaks metric collection.
|
|
65
|
+
- To check output, use task_output — do NOT manually tail or cat the log file.
|
|
66
|
+
|
|
67
|
+
remote_exec is ONLY for quick one-shot commands (installing packages, checking files, git operations).
|
|
68
|
+
|
|
69
|
+
## Metric Tracking
|
|
70
|
+
When calling remote_exec_background, pass **metric_names** or **metric_patterns** to enable live dashboard charts:
|
|
71
|
+
|
|
72
|
+
- **metric_names**: List of names to parse in key=value or key: value format from stdout.
|
|
73
|
+
Example: metric_names=["loss", "acc", "lr"] matches "loss=0.234 acc=0.95 lr=1e-4"
|
|
74
|
+
- **metric_patterns**: Map of name → regex with one capture group for the numeric value.
|
|
75
|
+
Example: metric_patterns={"loss": "Loss:\\\\s*([\\\\d.e+-]+)"} matches "Loss: 0.234"
|
|
76
|
+
|
|
77
|
+
If neither is provided, no metrics will be tracked. ALWAYS specify metrics when launching a training run.
|
|
78
|
+
|
|
79
|
+
Training scripts MUST print metrics to stdout (one line per step/epoch). Do not redirect stdout.
|
|
80
|
+
|
|
81
|
+
Use **clear_metrics** to wipe stale data when discarding a failed run before starting a new one.
|
|
82
|
+
|
|
83
|
+
## Viewing Task Output
|
|
84
|
+
Use task_output to check on running tasks:
|
|
85
|
+
- task_output(machine_id, pid) — shows recent stdout/stderr
|
|
86
|
+
- task_output(machine_id, pid, lines=100) — show more lines
|
|
87
|
+
This is the preferred way to check task progress. Do not use remote_exec to manually tail logs.
|
|
88
|
+
|
|
89
|
+
## Monitoring Loop — PREFERRED APPROACH
|
|
90
|
+
After launching a background task, use **start_monitor** to set up periodic check-ins:
|
|
91
|
+
- start_monitor(goal="Train TinyStories to loss < 5.0", interval_minutes=2)
|
|
92
|
+
- The system will re-invoke you every N minutes with a status update containing:
|
|
93
|
+
- Elapsed time, current interval, task statuses, latest metric values, your goal
|
|
94
|
+
- On each check-in, review progress, take actions if needed (check output, adjust, launch new runs)
|
|
95
|
+
- Call **stop_monitor** when the objective is complete
|
|
96
|
+
|
|
97
|
+
Set the interval to match what you're waiting for. Short runs: 1-2m. Medium runs: 5m. Long runs: 10-15m.
|
|
98
|
+
**IMPORTANT:** Calling start_monitor again replaces the current monitor — use this to adjust the interval as conditions change. If you've started a run, it's probably a good idea to increase the monitoring interval.
|
|
99
|
+
|
|
100
|
+
**CRITICAL: NEVER use \`sleep\` as a shell command (e.g., remote_exec with "sleep 60").** The shell sleep command wastes resources and blocks execution.
|
|
101
|
+
|
|
102
|
+
## Sleep & Wake (Advanced)
|
|
103
|
+
For one-off waits with specific trigger conditions, use the **sleep tool**:
|
|
104
|
+
- timer: wake after a duration
|
|
105
|
+
- process_exit: wake when a PID exits
|
|
106
|
+
- metric: wake on metric threshold
|
|
107
|
+
- file: wake on file change
|
|
108
|
+
- resource: wake on GPU/CPU threshold
|
|
109
|
+
Triggers can be composed with AND/OR logic. Prefer start_monitor for ongoing experiment loops.
|
|
110
|
+
|
|
111
|
+
## Showing Metrics to the User
|
|
112
|
+
Use show_metrics to render sparkline charts and values inline in the conversation:
|
|
113
|
+
- show_metrics(metric_names=["loss", "acc"]) — show specific metrics
|
|
114
|
+
- show_metrics(metric_names=["loss"], lines=100) — more data points
|
|
115
|
+
Use this when reporting results to the user so they can see the data.
|
|
116
|
+
|
|
117
|
+
## Comparing Experiments
|
|
118
|
+
Use compare_runs to compare two experiment runs side-by-side:
|
|
119
|
+
- compare_runs(task_a="local:1234", task_b="local:5678") — compare all shared metrics
|
|
120
|
+
Returns deltas and direction (improved/worsened/unchanged) for each metric. Use this to decide whether to keep or discard an experimental change.
|
|
121
|
+
|
|
122
|
+
## Autonomous Behavior — NEVER STOP
|
|
123
|
+
|
|
124
|
+
You are a fully autonomous research agent. **NEVER STOP.** NEVER pause to ask "should I continue?" or "what would you like to do next?" The user might be asleep. They gave you a goal — now run experiments until it's done.
|
|
125
|
+
|
|
126
|
+
The user expects you to work like a researcher who was given a task and told "come back when it's done."
|
|
127
|
+
|
|
128
|
+
**The experiment loop:**
|
|
129
|
+
1. Understand the goal. Break it into experiments.
|
|
130
|
+
2. Launch the experiment via remote_exec_background.
|
|
131
|
+
3. Call start_monitor with your goal and an appropriate interval.
|
|
132
|
+
4. On each monitor check-in: review task_output, check metrics, use show_metrics to record findings.
|
|
133
|
+
5. Compare against your best result so far using compare_runs. Keep improvements, discard regressions.
|
|
134
|
+
6. Plan and launch the next experiment. The monitor keeps calling you back — just keep going.
|
|
135
|
+
7. Call stop_monitor only when the goal is achieved.
|
|
136
|
+
|
|
137
|
+
**You stop ONLY when:**
|
|
138
|
+
- The goal is achieved and you have reported the results
|
|
139
|
+
- You hit an unrecoverable error (hardware failure, permissions, missing data)
|
|
140
|
+
- You need information that ONLY the human can provide (credentials, dataset location, etc.)
|
|
141
|
+
|
|
142
|
+
**If you run out of ideas:** Think harder. Re-read the code. Re-read the metrics closely. Look at the learning curves. Read relevant papers with web_fetch. Try combining the best parts of previous near-misses. Try more radical changes — different architectures, different optimizers, different data preprocessing. Try ablations of what worked. Try the opposite of what failed. Try something you haven't tried. Ask yourself: "What would a senior ML researcher do here?" The loop runs until the human interrupts you.
|
|
143
|
+
|
|
144
|
+
**Keep/discard discipline:** After each experiment, explicitly compare metrics to your current best. If improved, keep and record it. If equal or worse, discard/revert. Always know what your current best result is and why.
|
|
145
|
+
|
|
146
|
+
## Memory System
|
|
147
|
+
You have a persistent virtual filesystem for storing knowledge across context checkpoints.
|
|
148
|
+
When the conversation gets too long, your context will be checkpointed: history is archived and you'll receive a briefing with your memory tree.
|
|
149
|
+
|
|
150
|
+
**Tools**: memory_ls, memory_read, memory_write, memory_rm
|
|
151
|
+
|
|
152
|
+
**CRITICAL: Proactively store important findings as you work.** Don't wait for a checkpoint — write to memory as you go:
|
|
153
|
+
- Store the goal at /goal
|
|
154
|
+
- Store your current best result at /best
|
|
155
|
+
- Store observations at /observations/<name>
|
|
156
|
+
- Store hypotheses at /hypotheses/<name>
|
|
157
|
+
- Store decisions at /decisions/<name>
|
|
158
|
+
- Experiments are auto-tracked at /experiments/ when you use remote_exec_background
|
|
159
|
+
|
|
160
|
+
After a checkpoint, you'll see a tree listing of all your stored knowledge. Use memory_read(path) to retrieve details, and memory_ls to explore.
|
|
161
|
+
|
|
162
|
+
**The gist is the key**: When listing nodes, you see path + gist. Make gists informative enough that you can decide whether to read the full content.
|
|
163
|
+
|
|
164
|
+
## Consulting the Other Provider
|
|
165
|
+
Use **consult** if you find yourself stuck. It sends a question to the other AI (Claude if you're OpenAI, OpenAI if you're Claude) and returns their response. Good for getting a second opinion on experiment design, debugging, or when you've exhausted your own ideas.
|
|
166
|
+
|
|
167
|
+
## Approach
|
|
168
|
+
- Think step-by-step about experiment design
|
|
169
|
+
- Monitor for common issues: loss divergence, NaN, OOM, dead GPUs
|
|
170
|
+
- Proactively suggest improvements based on observed metrics
|
|
171
|
+
- Be concise in responses but thorough in analysis
|
|
172
|
+
- Always check exit codes and stderr for errors when executing commands`;
|
|
173
|
+
export function App({ defaultProvider, claudeMode, mouseEmitter }) {
|
|
174
|
+
// CLI arg takes priority, then saved preference, then "claude"
|
|
175
|
+
const prefs = loadPreferences();
|
|
176
|
+
const initialProvider = defaultProvider ?? prefs.lastProvider ?? "claude";
|
|
177
|
+
const initialClaudeMode = claudeMode ?? prefs.claudeAuthMode;
|
|
178
|
+
const [orchestrator, setOrchestrator] = useState(null);
|
|
179
|
+
const [sleepManager, setSleepManager] = useState(null);
|
|
180
|
+
const [connectionPool, setConnectionPool] = useState(null);
|
|
181
|
+
const [executor, setExecutor] = useState(null);
|
|
182
|
+
const [metricCollector, setMetricCollector] = useState(null);
|
|
183
|
+
const [metricStore, setMetricStore] = useState(null);
|
|
184
|
+
const [monitorManager, setMonitorManager] = useState(null);
|
|
185
|
+
const [experimentTracker, setExperimentTracker] = useState(null);
|
|
186
|
+
const [memoryStoreState, setMemoryStoreState] = useState(null);
|
|
187
|
+
const [stickyManager, setStickyManager] = useState(null);
|
|
188
|
+
useEffect(() => {
|
|
189
|
+
// Auth
|
|
190
|
+
const authManager = new AuthManager();
|
|
191
|
+
// Register refresh handlers
|
|
192
|
+
const openaiOAuth = new OpenAIOAuth(authManager);
|
|
193
|
+
authManager.registerRefreshHandler("openai", (rt) => openaiOAuth.refresh(rt));
|
|
194
|
+
// Providers
|
|
195
|
+
const claudeProvider = new ClaudeProvider(authManager, initialClaudeMode);
|
|
196
|
+
const openaiProvider = new OpenAIProvider(authManager);
|
|
197
|
+
// Remote
|
|
198
|
+
const connPool = new ConnectionPool();
|
|
199
|
+
// Load machines from config and auto-connect
|
|
200
|
+
const machines = loadMachines();
|
|
201
|
+
for (const machine of machines) {
|
|
202
|
+
connPool.addMachine(machine);
|
|
203
|
+
connPool.connect(machine.id).catch((err) => {
|
|
204
|
+
console.error(`[helios] Failed to connect to ${machine.id} (${machine.host}:${machine.port}): ${err instanceof Error ? err.message : String(err)}`);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
const executor = new RemoteExecutor(connPool);
|
|
208
|
+
const fileSync = new FileSync();
|
|
209
|
+
for (const machine of machines) {
|
|
210
|
+
fileSync.addMachine(machine);
|
|
211
|
+
}
|
|
212
|
+
// Metrics — fresh slate each conversation
|
|
213
|
+
const metricStore = new MetricStore();
|
|
214
|
+
metricStore.clear();
|
|
215
|
+
const metricCollector = new MetricCollector(connPool, metricStore);
|
|
216
|
+
// Memory system — uses a placeholder session ID, updated when session starts
|
|
217
|
+
const memoryStore = new MemoryStore("pending");
|
|
218
|
+
const contextGate = new ContextGate(memoryStore);
|
|
219
|
+
contextGate.setExecutor(executor);
|
|
220
|
+
contextGate.setMetricStore(metricStore);
|
|
221
|
+
const expTracker = new ExperimentTracker(memoryStore);
|
|
222
|
+
// Stickies
|
|
223
|
+
const stickies = new StickyManager();
|
|
224
|
+
// Orchestrator
|
|
225
|
+
const orch = new Orchestrator({
|
|
226
|
+
defaultProvider: initialProvider,
|
|
227
|
+
systemPrompt: SYSTEM_PROMPT,
|
|
228
|
+
});
|
|
229
|
+
orch.setContextGate(contextGate);
|
|
230
|
+
orch.setStickyManager(stickies);
|
|
231
|
+
orch.registerProvider(claudeProvider);
|
|
232
|
+
orch.registerProvider(openaiProvider);
|
|
233
|
+
// Register tools
|
|
234
|
+
orch.registerTools([
|
|
235
|
+
createRemoteExecTool(executor),
|
|
236
|
+
createRemoteExecBackgroundTool(executor, metricCollector),
|
|
237
|
+
createUploadTool(fileSync),
|
|
238
|
+
createDownloadTool(fileSync),
|
|
239
|
+
createListMachinesTool(connPool),
|
|
240
|
+
createTaskOutputTool(executor, connPool),
|
|
241
|
+
createShowMetricsTool(metricStore),
|
|
242
|
+
createCompareRunsTool(metricStore),
|
|
243
|
+
createClearMetricsTool(metricStore, metricCollector),
|
|
244
|
+
createKillTaskTool(executor, connPool, metricCollector),
|
|
245
|
+
createReadFileTool(connPool),
|
|
246
|
+
createWriteFileTool(connPool),
|
|
247
|
+
createPatchFileTool(connPool),
|
|
248
|
+
createWebFetchTool(),
|
|
249
|
+
...createMemoryTools(memoryStore),
|
|
250
|
+
createConsultTool(() => orch.currentProvider?.name ?? null, (name) => orch.getProvider(name)),
|
|
251
|
+
]);
|
|
252
|
+
// Scheduler
|
|
253
|
+
const triggerScheduler = new TriggerScheduler(connPool);
|
|
254
|
+
const sleepMgr = new SleepManager(triggerScheduler, orch);
|
|
255
|
+
sleepMgr.setExecutor(executor);
|
|
256
|
+
sleepMgr.setConnectionPool(connPool);
|
|
257
|
+
sleepMgr.setMetricStore(metricStore);
|
|
258
|
+
// Register sleep tool
|
|
259
|
+
orch.registerTool(createSleepTool(sleepMgr));
|
|
260
|
+
// Monitor
|
|
261
|
+
const monitorMgr = new MonitorManager();
|
|
262
|
+
orch.registerTools([
|
|
263
|
+
createStartMonitorTool(monitorMgr),
|
|
264
|
+
createStopMonitorTool(monitorMgr),
|
|
265
|
+
]);
|
|
266
|
+
// Eagerly activate the default provider so the status bar shows provider/model immediately
|
|
267
|
+
orch.switchProvider(initialProvider).catch(() => { });
|
|
268
|
+
setOrchestrator(orch);
|
|
269
|
+
setSleepManager(sleepMgr);
|
|
270
|
+
setConnectionPool(connPool);
|
|
271
|
+
setExecutor(executor);
|
|
272
|
+
setMetricCollector(metricCollector);
|
|
273
|
+
setMetricStore(metricStore);
|
|
274
|
+
setMonitorManager(monitorMgr);
|
|
275
|
+
setExperimentTracker(expTracker);
|
|
276
|
+
setMemoryStoreState(memoryStore);
|
|
277
|
+
setStickyManager(stickies);
|
|
278
|
+
return () => {
|
|
279
|
+
monitorMgr.stop();
|
|
280
|
+
triggerScheduler.stopAll();
|
|
281
|
+
connPool.disconnectAll();
|
|
282
|
+
};
|
|
283
|
+
}, [initialProvider]);
|
|
284
|
+
if (!orchestrator || !sleepManager || !connectionPool || !executor || !metricStore || !metricCollector || !monitorManager || !experimentTracker || !memoryStoreState || !stickyManager) {
|
|
285
|
+
return (_jsx(Box, { padding: 1, children: _jsx(Text, { color: "yellow", children: "Starting Helios..." }) }));
|
|
286
|
+
}
|
|
287
|
+
return (_jsx(Layout, { orchestrator: orchestrator, sleepManager: sleepManager, connectionPool: connectionPool, executor: executor, metricStore: metricStore, metricCollector: metricCollector, monitorManager: monitorManager, experimentTracker: experimentTracker, memoryStore: memoryStoreState, stickyManager: stickyManager, mouseEmitter: mouseEmitter }));
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AgentEvent, ToolDefinition, ToolCallEvent } from "../providers/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Processes tool calls from the agent loop.
|
|
4
|
+
* Given a stream of AgentEvents, intercepts tool_call events,
|
|
5
|
+
* executes the tool, and yields the result.
|
|
6
|
+
*/
|
|
7
|
+
export declare function processToolCalls(events: AsyncGenerator<AgentEvent>, tools: ToolDefinition[]): AsyncGenerator<AgentEvent>;
|
|
8
|
+
/**
|
|
9
|
+
* Collects all text from a stream of AgentEvents.
|
|
10
|
+
*/
|
|
11
|
+
export declare function collectText(events: AsyncGenerator<AgentEvent>): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Extracts tool calls from a stream of AgentEvents.
|
|
14
|
+
*/
|
|
15
|
+
export declare function collectToolCalls(events: AsyncGenerator<AgentEvent>): Promise<ToolCallEvent[]>;
|
|
16
|
+
//# sourceMappingURL=agent-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/core/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACd,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AACH,wBAAuB,gBAAgB,CACrC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,KAAK,EAAE,cAAc,EAAE,GACtB,cAAc,CAAC,UAAU,CAAC,CAmC5B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,OAAO,CAAC,aAAa,EAAE,CAAC,CAQ1B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Processes tool calls from the agent loop.
|
|
3
|
+
* Given a stream of AgentEvents, intercepts tool_call events,
|
|
4
|
+
* executes the tool, and yields the result.
|
|
5
|
+
*/
|
|
6
|
+
export async function* processToolCalls(events, tools) {
|
|
7
|
+
const toolMap = new Map(tools.map((t) => [t.name, t]));
|
|
8
|
+
for await (const event of events) {
|
|
9
|
+
yield event;
|
|
10
|
+
if (event.type === "tool_call") {
|
|
11
|
+
const tool = toolMap.get(event.name);
|
|
12
|
+
if (!tool) {
|
|
13
|
+
yield {
|
|
14
|
+
type: "tool_result",
|
|
15
|
+
callId: event.id,
|
|
16
|
+
result: `Unknown tool: ${event.name}`,
|
|
17
|
+
isError: true,
|
|
18
|
+
};
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const result = await tool.execute(event.args);
|
|
23
|
+
yield {
|
|
24
|
+
type: "tool_result",
|
|
25
|
+
callId: event.id,
|
|
26
|
+
result,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
yield {
|
|
31
|
+
type: "tool_result",
|
|
32
|
+
callId: event.id,
|
|
33
|
+
result: `Tool error: ${err instanceof Error ? err.message : String(err)}`,
|
|
34
|
+
isError: true,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Collects all text from a stream of AgentEvents.
|
|
42
|
+
*/
|
|
43
|
+
export async function collectText(events) {
|
|
44
|
+
let text = "";
|
|
45
|
+
for await (const event of events) {
|
|
46
|
+
if (event.type === "text" && event.delta) {
|
|
47
|
+
text += event.delta;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return text;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Extracts tool calls from a stream of AgentEvents.
|
|
54
|
+
*/
|
|
55
|
+
export async function collectToolCalls(events) {
|
|
56
|
+
const calls = [];
|
|
57
|
+
for await (const event of events) {
|
|
58
|
+
if (event.type === "tool_call") {
|
|
59
|
+
calls.push(event);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return calls;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=agent-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/core/agent-loop.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,gBAAgB,CACrC,MAAkC,EAClC,KAAuB;IAEvB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,CAAC;QAEZ,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM;oBACJ,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,KAAK,CAAC,EAAE;oBAChB,MAAM,EAAE,iBAAiB,KAAK,CAAC,IAAI,EAAE;oBACrC,OAAO,EAAE,IAAI;iBACd,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM;oBACJ,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,KAAK,CAAC,EAAE;oBAChB,MAAM;iBACP,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM;oBACJ,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,KAAK,CAAC,EAAE;oBAChB,MAAM,EAAE,eAAe,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;oBACzE,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAkC;IAElC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAkC;IAElC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
export interface MonitorConfig {
|
|
3
|
+
intervalMs: number;
|
|
4
|
+
goal: string;
|
|
5
|
+
startedAt: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class MonitorManager extends EventEmitter {
|
|
8
|
+
private config;
|
|
9
|
+
private timer;
|
|
10
|
+
get isActive(): boolean;
|
|
11
|
+
get currentConfig(): MonitorConfig | null;
|
|
12
|
+
start(intervalMs: number, goal: string): MonitorConfig;
|
|
13
|
+
stop(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../src/core/monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,KAAK,CAA+C;IAE5D,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,aAAa,IAAI,aAAa,GAAG,IAAI,CAExC;IAED,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa;IAqBtD,IAAI,IAAI,IAAI;CAWb"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
export class MonitorManager extends EventEmitter {
|
|
3
|
+
config = null;
|
|
4
|
+
timer = null;
|
|
5
|
+
get isActive() {
|
|
6
|
+
return this.config !== null;
|
|
7
|
+
}
|
|
8
|
+
get currentConfig() {
|
|
9
|
+
return this.config;
|
|
10
|
+
}
|
|
11
|
+
start(intervalMs, goal) {
|
|
12
|
+
if (this.config) {
|
|
13
|
+
this.stop();
|
|
14
|
+
}
|
|
15
|
+
this.config = {
|
|
16
|
+
intervalMs,
|
|
17
|
+
goal,
|
|
18
|
+
startedAt: Date.now(),
|
|
19
|
+
};
|
|
20
|
+
this.timer = setInterval(() => {
|
|
21
|
+
if (this.config) {
|
|
22
|
+
this.emit("tick", this.config);
|
|
23
|
+
}
|
|
24
|
+
}, intervalMs);
|
|
25
|
+
this.emit("started", this.config);
|
|
26
|
+
return this.config;
|
|
27
|
+
}
|
|
28
|
+
stop() {
|
|
29
|
+
if (this.timer) {
|
|
30
|
+
clearInterval(this.timer);
|
|
31
|
+
this.timer = null;
|
|
32
|
+
}
|
|
33
|
+
const was = this.config;
|
|
34
|
+
this.config = null;
|
|
35
|
+
if (was) {
|
|
36
|
+
this.emit("stopped", was);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/core/monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,MAAM,OAAO,cAAe,SAAQ,YAAY;IACtC,MAAM,GAAyB,IAAI,CAAC;IACpC,KAAK,GAA0C,IAAI,CAAC;IAE5D,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,UAAkB,EAAE,IAAY;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QAED,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU;YACV,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ModelProvider, ModelInfo, ToolDefinition, Session, SessionConfig, AgentEvent, ReasoningEffort } from "../providers/types.js";
|
|
2
|
+
import { AgentStateMachine } from "./state-machine.js";
|
|
3
|
+
import { SessionStore } from "../store/session-store.js";
|
|
4
|
+
import type { ContextGate } from "../memory/context-gate.js";
|
|
5
|
+
import type { StickyManager } from "./stickies.js";
|
|
6
|
+
export interface OrchestratorConfig {
|
|
7
|
+
defaultProvider: "claude" | "openai";
|
|
8
|
+
systemPrompt: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class Orchestrator {
|
|
11
|
+
private providers;
|
|
12
|
+
private activeProvider;
|
|
13
|
+
private activeSession;
|
|
14
|
+
private tools;
|
|
15
|
+
private _totalCostUsd;
|
|
16
|
+
private _lastInputTokens;
|
|
17
|
+
private _contextGate;
|
|
18
|
+
private _stickyManager;
|
|
19
|
+
readonly stateMachine: AgentStateMachine;
|
|
20
|
+
readonly sessionStore: SessionStore;
|
|
21
|
+
readonly config: OrchestratorConfig;
|
|
22
|
+
constructor(config: OrchestratorConfig);
|
|
23
|
+
registerProvider(provider: ModelProvider): void;
|
|
24
|
+
registerTool(tool: ToolDefinition): void;
|
|
25
|
+
registerTools(tools: ToolDefinition[]): void;
|
|
26
|
+
setContextGate(gate: ContextGate): void;
|
|
27
|
+
get contextGate(): ContextGate | null;
|
|
28
|
+
setStickyManager(manager: StickyManager): void;
|
|
29
|
+
getTools(): ToolDefinition[];
|
|
30
|
+
getProvider(name?: string): ModelProvider | null;
|
|
31
|
+
switchProvider(name: "claude" | "openai"): Promise<void>;
|
|
32
|
+
ensureSession(): Promise<Session>;
|
|
33
|
+
startSession(config?: Partial<SessionConfig>): Promise<Session>;
|
|
34
|
+
resumeSession(sessionId: string): Promise<Session>;
|
|
35
|
+
send(message: string): AsyncGenerator<AgentEvent>;
|
|
36
|
+
interrupt(): void;
|
|
37
|
+
get currentSession(): Session | null;
|
|
38
|
+
get currentProvider(): ModelProvider | null;
|
|
39
|
+
get currentState(): import("./state-machine.js").AgentState;
|
|
40
|
+
get totalCostUsd(): number;
|
|
41
|
+
get currentModel(): string | null;
|
|
42
|
+
setModel(model: string): Promise<void>;
|
|
43
|
+
fetchModels(): Promise<ModelInfo[]>;
|
|
44
|
+
get reasoningEffort(): ReasoningEffort | null;
|
|
45
|
+
setReasoningEffort(effort: ReasoningEffort): Promise<void>;
|
|
46
|
+
/** Last input token count reported by the provider (for context budget tracking). */
|
|
47
|
+
get lastInputTokens(): number;
|
|
48
|
+
private maybeCheckpoint;
|
|
49
|
+
private generateCheckpointGist;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,cAAc,EACd,OAAO,EACP,aAAa,EACb,UAAU,EACV,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAA8B;IACpD,QAAQ,CAAC,YAAY,oBAA2B;IAChD,QAAQ,CAAC,YAAY,eAAsB;IAC3C,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;gBAExB,MAAM,EAAE,kBAAkB;IAItC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI/C,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIxC,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAI5C,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIvC,IAAI,WAAW,IAAI,WAAW,GAAG,IAAI,CAEpC;IAED,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI9C,QAAQ,IAAI,cAAc,EAAE;IAI5B,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAK1C,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxD,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAKjC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B/D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBjD,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;IAqDxD,SAAS,IAAI,IAAI;IAMjB,IAAI,cAAc,IAAI,OAAO,GAAG,IAAI,CAEnC;IAED,IAAI,eAAe,IAAI,aAAa,GAAG,IAAI,CAE1C;IAED,IAAI,YAAY,4CAEf;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IAEK,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtC,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAWzC,IAAI,eAAe,IAAI,eAAe,GAAG,IAAI,CAE5C;IAEK,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE,qFAAqF;IACrF,IAAI,eAAe,IAAI,MAAM,CAE5B;YAEc,eAAe;YAwBhB,sBAAsB;CAiBrC"}
|