@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
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { patternsFromNames, patternsFromRegexes } from "../metrics/parser.js";
|
|
2
|
+
export function createRemoteExecTool(executor) {
|
|
3
|
+
return {
|
|
4
|
+
name: "remote_exec",
|
|
5
|
+
description: "Execute a short shell command. Returns stdout, stderr, and exit code. ONLY for quick one-shot commands (ls, cat, pip install, git clone, etc). NEVER use this for training, evaluation, or anything that runs longer than a few seconds — use remote_exec_background instead.",
|
|
6
|
+
parameters: {
|
|
7
|
+
type: "object",
|
|
8
|
+
properties: {
|
|
9
|
+
machine_id: {
|
|
10
|
+
type: "string",
|
|
11
|
+
description: "ID of the remote machine to run the command on",
|
|
12
|
+
},
|
|
13
|
+
command: {
|
|
14
|
+
type: "string",
|
|
15
|
+
description: "Shell command to execute",
|
|
16
|
+
},
|
|
17
|
+
timeout_seconds: {
|
|
18
|
+
type: "number",
|
|
19
|
+
description: "Optional timeout in seconds",
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
required: ["machine_id", "command"],
|
|
23
|
+
},
|
|
24
|
+
execute: async (args) => {
|
|
25
|
+
const result = await executor.exec(args.machine_id, args.command, args.timeout_seconds
|
|
26
|
+
? args.timeout_seconds * 1000
|
|
27
|
+
: undefined);
|
|
28
|
+
return JSON.stringify({
|
|
29
|
+
stdout: result.stdout,
|
|
30
|
+
stderr: result.stderr,
|
|
31
|
+
exit_code: result.exitCode,
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function createRemoteExecBackgroundTool(executor, metricCollector) {
|
|
37
|
+
return {
|
|
38
|
+
name: "remote_exec_background",
|
|
39
|
+
description: "Launch a long-running process in the background. Returns PID and log path. Stdout is captured automatically — DO NOT redirect stdout yourself. To track metrics in the dashboard, provide metric_names (for key=value format) or metric_patterns (custom regexes).",
|
|
40
|
+
parameters: {
|
|
41
|
+
type: "object",
|
|
42
|
+
properties: {
|
|
43
|
+
machine_id: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "ID of the machine (use \"local\" for this machine)",
|
|
46
|
+
},
|
|
47
|
+
command: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Command to run in the background",
|
|
50
|
+
},
|
|
51
|
+
log_path: {
|
|
52
|
+
type: "string",
|
|
53
|
+
description: "Optional path for stdout/stderr log file",
|
|
54
|
+
},
|
|
55
|
+
metric_names: {
|
|
56
|
+
type: "array",
|
|
57
|
+
items: { type: "string" },
|
|
58
|
+
description: "Metric names to parse from stdout in key=value or key: value format. Example: [\"loss\", \"acc\", \"lr\"]",
|
|
59
|
+
},
|
|
60
|
+
metric_patterns: {
|
|
61
|
+
type: "object",
|
|
62
|
+
additionalProperties: { type: "string" },
|
|
63
|
+
description: "Map of metric name → regex string with one capture group for the numeric value. Example: {\"loss\": \"Loss:\\\\s*([\\\\d.e+-]+)\"}",
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
required: ["machine_id", "command"],
|
|
67
|
+
},
|
|
68
|
+
execute: async (args) => {
|
|
69
|
+
const metricNames = args.metric_names;
|
|
70
|
+
const metricPatterns = args.metric_patterns;
|
|
71
|
+
const proc = await executor.execBackground(args.machine_id, args.command, args.log_path, { metricNames, metricPatterns });
|
|
72
|
+
// Register collector source immediately so metrics are tracked from the start
|
|
73
|
+
if (metricCollector && proc.logPath) {
|
|
74
|
+
let patterns;
|
|
75
|
+
if (metricPatterns) {
|
|
76
|
+
patterns = patternsFromRegexes(metricPatterns);
|
|
77
|
+
}
|
|
78
|
+
else if (metricNames && metricNames.length > 0) {
|
|
79
|
+
patterns = patternsFromNames(metricNames);
|
|
80
|
+
}
|
|
81
|
+
if (patterns) {
|
|
82
|
+
metricCollector.addSource({
|
|
83
|
+
taskId: `${proc.machineId}:${proc.pid}`,
|
|
84
|
+
machineId: proc.machineId,
|
|
85
|
+
logPath: proc.logPath,
|
|
86
|
+
patterns,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return JSON.stringify({
|
|
91
|
+
pid: proc.pid,
|
|
92
|
+
log_path: proc.logPath,
|
|
93
|
+
machine_id: proc.machineId,
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=remote-exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-exec.js","sourceRoot":"","sources":["../../src/tools/remote-exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ToolDefinition } from "../providers/types.js";
|
|
2
|
+
import type { FileSync } from "../remote/file-sync.js";
|
|
3
|
+
export declare function createUploadTool(fileSync: FileSync): ToolDefinition;
|
|
4
|
+
export declare function createDownloadTool(fileSync: FileSync): ToolDefinition;
|
|
5
|
+
//# sourceMappingURL=remote-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-sync.d.ts","sourceRoot":"","sources":["../../src/tools/remote-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CA+BnE;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,GACjB,cAAc,CAgChB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export function createUploadTool(fileSync) {
|
|
2
|
+
return {
|
|
3
|
+
name: "remote_upload",
|
|
4
|
+
description: "Upload files from local machine to a remote machine via rsync.",
|
|
5
|
+
parameters: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
machine_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "ID of the remote machine",
|
|
11
|
+
},
|
|
12
|
+
local_path: {
|
|
13
|
+
type: "string",
|
|
14
|
+
description: "Local file or directory path",
|
|
15
|
+
},
|
|
16
|
+
remote_path: {
|
|
17
|
+
type: "string",
|
|
18
|
+
description: "Remote destination path",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ["machine_id", "local_path", "remote_path"],
|
|
22
|
+
},
|
|
23
|
+
execute: async (args) => {
|
|
24
|
+
await fileSync.upload(args.machine_id, args.local_path, args.remote_path);
|
|
25
|
+
return `Uploaded ${args.local_path} to ${args.machine_id}:${args.remote_path}`;
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function createDownloadTool(fileSync) {
|
|
30
|
+
return {
|
|
31
|
+
name: "remote_download",
|
|
32
|
+
description: "Download files from a remote machine to local machine via rsync.",
|
|
33
|
+
parameters: {
|
|
34
|
+
type: "object",
|
|
35
|
+
properties: {
|
|
36
|
+
machine_id: {
|
|
37
|
+
type: "string",
|
|
38
|
+
description: "ID of the remote machine",
|
|
39
|
+
},
|
|
40
|
+
remote_path: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "Remote file or directory path",
|
|
43
|
+
},
|
|
44
|
+
local_path: {
|
|
45
|
+
type: "string",
|
|
46
|
+
description: "Local destination path",
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
required: ["machine_id", "remote_path", "local_path"],
|
|
50
|
+
},
|
|
51
|
+
execute: async (args) => {
|
|
52
|
+
await fileSync.download(args.machine_id, args.remote_path, args.local_path);
|
|
53
|
+
return `Downloaded ${args.machine_id}:${args.remote_path} to ${args.local_path}`;
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=remote-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-sync.js","sourceRoot":"","sources":["../../src/tools/remote-sync.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,gEAAgE;QAC7E,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;iBACxC;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yBAAyB;iBACvC;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC;SACtD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,QAAQ,CAAC,MAAM,CACnB,IAAI,CAAC,UAAoB,EACzB,IAAI,CAAC,UAAoB,EACzB,IAAI,CAAC,WAAqB,CAC3B,CAAC;YACF,OAAO,YAAY,IAAI,CAAC,UAAU,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACjF,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAkB;IAElB,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,kEAAkE;QACpE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;iBACxC;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+BAA+B;iBAC7C;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wBAAwB;iBACtC;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC;SACtD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,QAAQ,CAAC,QAAQ,CACrB,IAAI,CAAC,UAAoB,EACzB,IAAI,CAAC,WAAqB,EAC1B,IAAI,CAAC,UAAoB,CAC1B,CAAC;YACF,OAAO,cAAc,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;QACnF,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-metrics.d.ts","sourceRoot":"","sources":["../../src/tools/show-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,WAAW,GACjB,cAAc,CAqFhB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { analyzeMetric } from "../metrics/analyzer.js";
|
|
2
|
+
export function createShowMetricsTool(store) {
|
|
3
|
+
return {
|
|
4
|
+
name: "show_metrics",
|
|
5
|
+
description: "Query and display metrics. Shows sparkline charts, current values, and trend analysis. Use this to check on training progress, report results to the user, or compare values. Omit metric_names to list all available metrics.",
|
|
6
|
+
parameters: {
|
|
7
|
+
type: "object",
|
|
8
|
+
properties: {
|
|
9
|
+
metric_names: {
|
|
10
|
+
type: "array",
|
|
11
|
+
items: { type: "string" },
|
|
12
|
+
description: "Metric names to display. Omit to list all available metrics.",
|
|
13
|
+
},
|
|
14
|
+
task_id: {
|
|
15
|
+
type: "string",
|
|
16
|
+
description: "Optional: scope to a specific task (e.g. \"local:1234\"). Omit to query across all tasks.",
|
|
17
|
+
},
|
|
18
|
+
lines: {
|
|
19
|
+
type: "number",
|
|
20
|
+
description: "Number of data points to include (default: 50)",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
execute: async (args) => {
|
|
25
|
+
const metricNames = args.metric_names;
|
|
26
|
+
const taskId = args.task_id;
|
|
27
|
+
const limit = args.lines ?? 50;
|
|
28
|
+
// No names specified — list what's available
|
|
29
|
+
if (!metricNames || metricNames.length === 0) {
|
|
30
|
+
const names = taskId
|
|
31
|
+
? store.getMetricNames(taskId)
|
|
32
|
+
: store.getAllMetricNames();
|
|
33
|
+
return JSON.stringify({ available_metrics: names });
|
|
34
|
+
}
|
|
35
|
+
const metrics = [];
|
|
36
|
+
for (const name of metricNames) {
|
|
37
|
+
const series = taskId
|
|
38
|
+
? store.getSeries(taskId, name, limit)
|
|
39
|
+
: store.getSeriesAcrossTasks(name, limit);
|
|
40
|
+
if (series.length === 0) {
|
|
41
|
+
metrics.push({
|
|
42
|
+
name,
|
|
43
|
+
values: [],
|
|
44
|
+
latest: null,
|
|
45
|
+
min: null,
|
|
46
|
+
max: null,
|
|
47
|
+
trend: "no_data",
|
|
48
|
+
});
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const values = series.map((p) => p.value);
|
|
52
|
+
const latest = values[values.length - 1];
|
|
53
|
+
const min = Math.min(...values);
|
|
54
|
+
const max = Math.max(...values);
|
|
55
|
+
const analysis = analyzeMetric(series);
|
|
56
|
+
metrics.push({
|
|
57
|
+
name,
|
|
58
|
+
values,
|
|
59
|
+
latest,
|
|
60
|
+
min,
|
|
61
|
+
max,
|
|
62
|
+
trend: analysis.trend,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return JSON.stringify({ metrics });
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=show-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-metrics.js","sourceRoot":"","sources":["../../src/tools/show-metrics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,UAAU,qBAAqB,CACnC,KAAkB;IAElB,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,gOAAgO;QAClO,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,YAAY,EAAE;oBACZ,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EACT,8DAA8D;iBACjE;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,2FAA2F;iBAC9F;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,gDAAgD;iBACnD;aACF;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAoC,CAAC;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,OAA6B,CAAC;YAClD,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,EAAE,CAAC;YAE3C,6CAA6C;YAC7C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,MAAM;oBAClB,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;oBAC9B,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,OAAO,GAOR,EAAE,CAAC;YAER,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,MAAM;oBACnB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;oBACtC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAE5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI;wBACJ,MAAM,EAAE,EAAE;wBACV,MAAM,EAAE,IAAI;wBACZ,GAAG,EAAE,IAAI;wBACT,GAAG,EAAE,IAAI;wBACT,KAAK,EAAE,SAAS;qBACjB,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;gBAEhC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;gBAEvC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,MAAM;oBACN,MAAM;oBACN,GAAG;oBACH,GAAG;oBACH,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../src/tools/sleep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,GACzB,cAAc,CA0EhB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export function createSleepTool(sleepManager) {
|
|
2
|
+
return {
|
|
3
|
+
name: "sleep",
|
|
4
|
+
description: `Put yourself to sleep and STOP your current turn. When you call this tool, you MUST immediately end your response — do not output any more text or tool calls after sleep returns. You will be automatically woken when triggers fire and resumed with a wake message containing elapsed time, which triggers fired, and your original goal.
|
|
5
|
+
|
|
6
|
+
IMPORTANT: Calling sleep means "I am done for now, wake me when conditions are met." After calling sleep, STOP. Do not call any more tools. Do not write any more text. Your turn is over.
|
|
7
|
+
|
|
8
|
+
Trigger types:
|
|
9
|
+
- timer: Wake after a duration. Provide wake_after_seconds.
|
|
10
|
+
- process_exit: Wake when a remote process exits. Provide machine_id and pid or process_pattern.
|
|
11
|
+
- metric: Wake when a metric meets a condition. Provide machine_id, source, field, comparator, threshold.
|
|
12
|
+
- file: Wake when a file appears/changes. Provide machine_id, path, mode (exists|modified|size_stable).
|
|
13
|
+
- resource: Wake when GPU/CPU crosses a threshold. Provide machine_id, resource, comparator, threshold.
|
|
14
|
+
|
|
15
|
+
Use logic "any" to wake on the first condition met, "all" to require all conditions.`,
|
|
16
|
+
parameters: {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
reason: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: "Why you are sleeping (shown to user)",
|
|
22
|
+
},
|
|
23
|
+
wake_conditions: {
|
|
24
|
+
type: "array",
|
|
25
|
+
description: "Conditions that will wake you up",
|
|
26
|
+
items: { type: "object" },
|
|
27
|
+
},
|
|
28
|
+
logic: {
|
|
29
|
+
type: "string",
|
|
30
|
+
enum: ["any", "all"],
|
|
31
|
+
description: "Wake on ANY condition (OR) or ALL conditions (AND)",
|
|
32
|
+
},
|
|
33
|
+
deadline_minutes: {
|
|
34
|
+
type: "number",
|
|
35
|
+
description: "Maximum sleep duration in minutes. Wake regardless after this.",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
required: ["reason", "wake_conditions"],
|
|
39
|
+
},
|
|
40
|
+
execute: async (args) => {
|
|
41
|
+
const reason = args.reason;
|
|
42
|
+
// Models sometimes use variant key names
|
|
43
|
+
const conditions = (args.wake_conditions ?? args.conditions ?? args.triggers);
|
|
44
|
+
if (!conditions || !Array.isArray(conditions) || conditions.length === 0) {
|
|
45
|
+
return JSON.stringify({ error: "No wake_conditions provided. Provide an array of trigger conditions." });
|
|
46
|
+
}
|
|
47
|
+
const logic = args.logic ?? "any";
|
|
48
|
+
const deadlineMin = args.deadline_minutes;
|
|
49
|
+
const triggerConditions = conditions.map(parseTriggerCondition);
|
|
50
|
+
const expression = triggerConditions.length === 1
|
|
51
|
+
? triggerConditions[0]
|
|
52
|
+
: { op: logic === "all" ? "and" : "or", children: triggerConditions };
|
|
53
|
+
const session = await sleepManager.sleep({
|
|
54
|
+
reason,
|
|
55
|
+
expression,
|
|
56
|
+
deadlineMs: deadlineMin ? deadlineMin * 60 * 1000 : undefined,
|
|
57
|
+
});
|
|
58
|
+
return JSON.stringify({
|
|
59
|
+
status: "sleeping",
|
|
60
|
+
session_id: session.id,
|
|
61
|
+
trigger_id: session.trigger.id,
|
|
62
|
+
reason,
|
|
63
|
+
deadline: session.trigger.deadline
|
|
64
|
+
? new Date(session.trigger.deadline).toISOString()
|
|
65
|
+
: null,
|
|
66
|
+
instruction: "You are now sleeping. STOP your response immediately. Do not output any more text or tool calls. You will be woken automatically.",
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function parseTriggerCondition(raw) {
|
|
72
|
+
const type = raw.type;
|
|
73
|
+
switch (type) {
|
|
74
|
+
case "timer":
|
|
75
|
+
return {
|
|
76
|
+
kind: "timer",
|
|
77
|
+
wakeAt: Date.now() + (raw.wake_after_seconds ?? 3600) * 1000,
|
|
78
|
+
};
|
|
79
|
+
case "process_exit":
|
|
80
|
+
return {
|
|
81
|
+
kind: "process_exit",
|
|
82
|
+
machineId: raw.machine_id,
|
|
83
|
+
pid: raw.pid,
|
|
84
|
+
processPattern: raw.process_pattern,
|
|
85
|
+
};
|
|
86
|
+
case "metric":
|
|
87
|
+
return {
|
|
88
|
+
kind: "metric",
|
|
89
|
+
machineId: raw.machine_id,
|
|
90
|
+
source: raw.source,
|
|
91
|
+
field: raw.field,
|
|
92
|
+
comparator: raw.comparator,
|
|
93
|
+
threshold: raw.threshold,
|
|
94
|
+
sustainedChecks: raw.sustained_checks,
|
|
95
|
+
};
|
|
96
|
+
case "file":
|
|
97
|
+
return {
|
|
98
|
+
kind: "file",
|
|
99
|
+
machineId: raw.machine_id,
|
|
100
|
+
path: raw.path,
|
|
101
|
+
mode: raw.mode ?? "exists",
|
|
102
|
+
};
|
|
103
|
+
case "resource":
|
|
104
|
+
return {
|
|
105
|
+
kind: "resource",
|
|
106
|
+
machineId: raw.machine_id,
|
|
107
|
+
resource: raw.resource,
|
|
108
|
+
comparator: raw.comparator ?? "<",
|
|
109
|
+
threshold: raw.threshold,
|
|
110
|
+
gpuIndex: raw.gpu_index,
|
|
111
|
+
};
|
|
112
|
+
default:
|
|
113
|
+
throw new Error(`Unknown trigger type: ${type}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=sleep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/tools/sleep.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,eAAe,CAC7B,YAA0B;IAE1B,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE;;;;;;;;;;;qFAWoE;QACjF,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sCAAsC;iBACpD;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,kCAAkC;oBAC/C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;oBACpB,WAAW,EAAE,oDAAoD;iBAClE;gBACD,gBAAgB,EAAE;oBAChB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gEAAgE;iBAC9E;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACxC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;YACrC,yCAAyC;YACzC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAA0C,CAAC;YACvH,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sEAAsE,EAAE,CAAC,CAAC;YAC3G,CAAC;YACD,MAAM,KAAK,GAAI,IAAI,CAAC,KAAuB,IAAI,KAAK,CAAC;YACrD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAsC,CAAC;YAEhE,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAEhE,MAAM,UAAU,GACd,iBAAiB,CAAC,MAAM,KAAK,CAAC;gBAC5B,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;YAE1E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC;gBACvC,MAAM;gBACN,UAAU;gBACV,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS;aAC9D,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,OAAO,CAAC,EAAE;gBACtB,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC9B,MAAM;gBACN,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;oBAChC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;oBAClD,CAAC,CAAC,IAAI;gBACR,WAAW,EAAE,mIAAmI;aACjJ,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAA4B;IAE5B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAc,CAAC;IAEhC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM,EACJ,IAAI,CAAC,GAAG,EAAE,GAAG,CAAE,GAAG,CAAC,kBAA6B,IAAI,IAAI,CAAC,GAAG,IAAI;aACnE,CAAC;QAEJ,KAAK,cAAc;YACjB,OAAO;gBACL,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE,GAAG,CAAC,UAAoB;gBACnC,GAAG,EAAE,GAAG,CAAC,GAAyB;gBAClC,cAAc,EAAE,GAAG,CAAC,eAAqC;aAC1D,CAAC;QAEJ,KAAK,QAAQ;YACX,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,GAAG,CAAC,UAAoB;gBACnC,MAAM,EAAE,GAAG,CAAC,MAAsB;gBAClC,KAAK,EAAE,GAAG,CAAC,KAAe;gBAC1B,UAAU,EAAE,GAAG,CAAC,UAAmD;gBACnE,SAAS,EAAE,GAAG,CAAC,SAAmB;gBAClC,eAAe,EAAE,GAAG,CAAC,gBAAsC;aAC5D,CAAC;QAEJ,KAAK,MAAM;YACT,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,GAAG,CAAC,UAAoB;gBACnC,IAAI,EAAE,GAAG,CAAC,IAAc;gBACxB,IAAI,EAAG,GAAG,CAAC,IAA8C,IAAI,QAAQ;aACtE,CAAC;QAEJ,KAAK,UAAU;YACb,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,GAAG,CAAC,UAAoB;gBACnC,QAAQ,EAAE,GAAG,CAAC,QAKJ;gBACV,UAAU,EAAG,GAAG,CAAC,UAAsC,IAAI,GAAG;gBAC9D,SAAS,EAAE,GAAG,CAAC,SAAmB;gBAClC,QAAQ,EAAE,GAAG,CAAC,SAA+B;aAC9C,CAAC;QAEJ;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ToolDefinition } from "../providers/types.js";
|
|
2
|
+
import type { RemoteExecutor } from "../remote/executor.js";
|
|
3
|
+
import type { ConnectionPool } from "../remote/connection-pool.js";
|
|
4
|
+
export declare function createTaskOutputTool(executor: RemoteExecutor, pool: ConnectionPool): ToolDefinition;
|
|
5
|
+
//# sourceMappingURL=task-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-output.d.ts","sourceRoot":"","sources":["../../src/tools/task-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,GACnB,cAAc,CAsDhB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export function createTaskOutputTool(executor, pool) {
|
|
2
|
+
return {
|
|
3
|
+
name: "task_output",
|
|
4
|
+
description: "View the recent stdout/stderr output of a running or finished background task. " +
|
|
5
|
+
"Use this instead of running 'tail' or 'cat' manually — it knows the log path automatically.",
|
|
6
|
+
parameters: {
|
|
7
|
+
type: "object",
|
|
8
|
+
properties: {
|
|
9
|
+
machine_id: {
|
|
10
|
+
type: "string",
|
|
11
|
+
description: "Machine the task is running on",
|
|
12
|
+
},
|
|
13
|
+
pid: {
|
|
14
|
+
type: "number",
|
|
15
|
+
description: "PID of the background process",
|
|
16
|
+
},
|
|
17
|
+
lines: {
|
|
18
|
+
type: "number",
|
|
19
|
+
description: "Number of recent lines to show (default: 50)",
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
required: ["machine_id", "pid"],
|
|
23
|
+
},
|
|
24
|
+
execute: async (args) => {
|
|
25
|
+
const machineId = args.machine_id;
|
|
26
|
+
const pid = args.pid;
|
|
27
|
+
const lines = args.lines ?? 50;
|
|
28
|
+
const proc = executor.getBackgroundProcess(machineId, pid);
|
|
29
|
+
if (!proc) {
|
|
30
|
+
return JSON.stringify({
|
|
31
|
+
error: `No tracked background process with pid ${pid} on ${machineId}`,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (!proc.logPath) {
|
|
35
|
+
return JSON.stringify({
|
|
36
|
+
error: "No log path recorded for this process",
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const output = await pool.tailFile(machineId, proc.logPath, lines);
|
|
40
|
+
const running = await executor.isRunning(machineId, pid);
|
|
41
|
+
return JSON.stringify({
|
|
42
|
+
pid,
|
|
43
|
+
machine_id: machineId,
|
|
44
|
+
log_path: proc.logPath,
|
|
45
|
+
running,
|
|
46
|
+
output,
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=task-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-output.js","sourceRoot":"","sources":["../../src/tools/task-output.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,oBAAoB,CAClC,QAAwB,EACxB,IAAoB;IAEpB,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,iFAAiF;YACjF,6FAA6F;QAC/F,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;iBAC9C;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+BAA+B;iBAC7C;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8CAA8C;iBAC5D;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC;SAChC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAoB,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAC;YAC/B,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,EAAE,CAAC;YAE3C,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,0CAA0C,GAAG,OAAO,SAAS,EAAE;iBACvE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,uCAAuC;iBAC/C,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAEzD,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,GAAG;gBACH,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,OAAO;gBACP,MAAM;aACP,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-fetch.d.ts","sourceRoot":"","sources":["../../src/tools/web-fetch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,kBAAkB,IAAI,cAAc,CAyEnD"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Readability } from "@mozilla/readability";
|
|
2
|
+
import { parseHTML } from "linkedom";
|
|
3
|
+
export function createWebFetchTool() {
|
|
4
|
+
return {
|
|
5
|
+
name: "web_fetch",
|
|
6
|
+
description: "Fetch a URL and return the page content as readable text. Handles HTML (extracts article content), PDFs (extracts text), and plain text. Use this to read documentation, papers, blog posts, or any web page.",
|
|
7
|
+
parameters: {
|
|
8
|
+
type: "object",
|
|
9
|
+
properties: {
|
|
10
|
+
url: {
|
|
11
|
+
type: "string",
|
|
12
|
+
description: "URL to fetch",
|
|
13
|
+
},
|
|
14
|
+
max_length: {
|
|
15
|
+
type: "number",
|
|
16
|
+
description: "Max characters to return (default: 20000)",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
required: ["url"],
|
|
20
|
+
},
|
|
21
|
+
execute: async (args) => {
|
|
22
|
+
const url = args.url;
|
|
23
|
+
const maxLength = args.max_length ?? 20000;
|
|
24
|
+
try {
|
|
25
|
+
const resp = await fetch(url, {
|
|
26
|
+
headers: {
|
|
27
|
+
"User-Agent": "Helios-ML-Agent/1.0",
|
|
28
|
+
Accept: "text/html,application/xhtml+xml,application/pdf,text/plain,application/json",
|
|
29
|
+
},
|
|
30
|
+
redirect: "follow",
|
|
31
|
+
signal: AbortSignal.timeout(30_000),
|
|
32
|
+
});
|
|
33
|
+
if (!resp.ok) {
|
|
34
|
+
return JSON.stringify({ error: `HTTP ${resp.status}: ${resp.statusText}` });
|
|
35
|
+
}
|
|
36
|
+
const contentType = resp.headers.get("content-type") ?? "";
|
|
37
|
+
let title;
|
|
38
|
+
let text;
|
|
39
|
+
if (contentType.includes("application/pdf") || url.endsWith(".pdf")) {
|
|
40
|
+
const buffer = new Uint8Array(await resp.arrayBuffer());
|
|
41
|
+
const { extractText } = await import("unpdf");
|
|
42
|
+
const result = await extractText(buffer);
|
|
43
|
+
text = Array.isArray(result.text) ? result.text.join("\n") : result.text;
|
|
44
|
+
}
|
|
45
|
+
else if (contentType.includes("text/html") || contentType.includes("xhtml")) {
|
|
46
|
+
const html = await resp.text();
|
|
47
|
+
const parsed = extractArticle(html, url);
|
|
48
|
+
title = parsed.title;
|
|
49
|
+
text = parsed.text;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
text = await resp.text();
|
|
53
|
+
}
|
|
54
|
+
const truncated = text.length > maxLength;
|
|
55
|
+
const content = truncated ? text.slice(0, maxLength) : text;
|
|
56
|
+
return JSON.stringify({
|
|
57
|
+
url,
|
|
58
|
+
title,
|
|
59
|
+
content_type: contentType.split(";")[0],
|
|
60
|
+
length: text.length,
|
|
61
|
+
truncated,
|
|
62
|
+
content,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
return JSON.stringify({
|
|
67
|
+
error: err instanceof Error ? err.message : String(err),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function extractArticle(html, url) {
|
|
74
|
+
const { document } = parseHTML(html);
|
|
75
|
+
const reader = new Readability(document);
|
|
76
|
+
const article = reader.parse();
|
|
77
|
+
if (article?.textContent) {
|
|
78
|
+
// Clean up readability output — collapse excessive whitespace
|
|
79
|
+
const text = article.textContent
|
|
80
|
+
.split("\n")
|
|
81
|
+
.map((line) => line.trim())
|
|
82
|
+
.join("\n")
|
|
83
|
+
.replace(/\n{3,}/g, "\n\n")
|
|
84
|
+
.trim();
|
|
85
|
+
return { title: article.title ?? undefined, text };
|
|
86
|
+
}
|
|
87
|
+
// Fallback: basic tag stripping if readability can't extract
|
|
88
|
+
return { text: fallbackHtmlToText(html) };
|
|
89
|
+
}
|
|
90
|
+
function fallbackHtmlToText(html) {
|
|
91
|
+
let text = html;
|
|
92
|
+
text = text.replace(/<script[\s\S]*?<\/script>/gi, "");
|
|
93
|
+
text = text.replace(/<style[\s\S]*?<\/style>/gi, "");
|
|
94
|
+
text = text.replace(/<head[\s\S]*?<\/head>/gi, "");
|
|
95
|
+
text = text.replace(/<!--[\s\S]*?-->/g, "");
|
|
96
|
+
text = text.replace(/<\/(p|div|h[1-6]|li|tr|blockquote|pre|section|article)>/gi, "\n");
|
|
97
|
+
text = text.replace(/<br\s*\/?>/gi, "\n");
|
|
98
|
+
text = text.replace(/<[^>]+>/g, "");
|
|
99
|
+
text = text
|
|
100
|
+
.replace(/&/g, "&")
|
|
101
|
+
.replace(/</g, "<")
|
|
102
|
+
.replace(/>/g, ">")
|
|
103
|
+
.replace(/"/g, '"')
|
|
104
|
+
.replace(/ /g, " ");
|
|
105
|
+
text = text
|
|
106
|
+
.split("\n")
|
|
107
|
+
.map((line) => line.replace(/[ \t]+/g, " ").trim())
|
|
108
|
+
.join("\n")
|
|
109
|
+
.replace(/\n{3,}/g, "\n\n");
|
|
110
|
+
return text.trim();
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=web-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../src/tools/web-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/ui/commands.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,YAAY,EAmBlC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const COMMANDS = [
|
|
2
|
+
{ name: "help", description: "Show available commands and keybindings" },
|
|
3
|
+
{ name: "switch", args: "<claude|openai>", description: "Switch model provider" },
|
|
4
|
+
{ name: "model", args: "<model-id>", description: "Set model (e.g. gpt-5.4, claude-opus-4-6)" },
|
|
5
|
+
{ name: "models", description: "List available models for current provider" },
|
|
6
|
+
{ name: "reasoning", args: "<low|medium|high>", description: "Set reasoning effort level" },
|
|
7
|
+
{ name: "claude-mode", args: "<cli|api>", description: "Switch Claude auth mode (cli = Agent SDK, api = API key)" },
|
|
8
|
+
{ name: "resume", args: "[number]", description: "List or resume a past session" },
|
|
9
|
+
{ name: "metric", args: "[name1 name2 ...]", description: "Show sparklines for named metrics" },
|
|
10
|
+
{ name: "metrics", args: "clear", description: "Clear all collected metrics" },
|
|
11
|
+
{ name: "writeup", description: "Generate an experiment writeup from the session" },
|
|
12
|
+
{ name: "machine", args: "<add|rm|list>", description: "Manage remote machines" },
|
|
13
|
+
{ name: "machines", description: "List configured remote machines" },
|
|
14
|
+
{ name: "sticky", args: "<text>", description: "Pin a sticky note (always visible to the model)" },
|
|
15
|
+
{ name: "stickies", args: "[rm <num>]", description: "List sticky notes, or remove one by number" },
|
|
16
|
+
{ name: "memory", args: "[path]", description: "Show the memory tree (virtual filesystem)" },
|
|
17
|
+
{ name: "status", description: "Show provider, model, state, and cost" },
|
|
18
|
+
{ name: "clear", description: "Clear conversation history" },
|
|
19
|
+
{ name: "quit", description: "Exit Helios" },
|
|
20
|
+
];
|
|
21
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/ui/commands.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACxE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,uBAAuB,EAAE;IACjF,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,2CAA2C,EAAE;IAC/F,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAC7E,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC3F,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,0DAA0D,EAAE;IACnH,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,+BAA+B,EAAE;IAClF,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,mCAAmC,EAAE;IAC/F,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC9E,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,iDAAiD,EAAE;IACnF,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACjF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iCAAiC,EAAE;IACpE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;IAClG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,4CAA4C,EAAE;IACnG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;IAC5F,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACxE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC5D,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE;CAC7C,CAAC"}
|