@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,124 @@
|
|
|
1
|
+
const migrations = [
|
|
2
|
+
{
|
|
3
|
+
version: 1,
|
|
4
|
+
sql: `
|
|
5
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
6
|
+
id TEXT PRIMARY KEY,
|
|
7
|
+
provider TEXT NOT NULL,
|
|
8
|
+
provider_session_id TEXT,
|
|
9
|
+
model TEXT,
|
|
10
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
11
|
+
created_at INTEGER NOT NULL,
|
|
12
|
+
last_active_at INTEGER NOT NULL
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
16
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
17
|
+
session_id TEXT NOT NULL,
|
|
18
|
+
role TEXT NOT NULL,
|
|
19
|
+
content TEXT NOT NULL,
|
|
20
|
+
tool_calls TEXT,
|
|
21
|
+
token_count INTEGER,
|
|
22
|
+
timestamp INTEGER NOT NULL,
|
|
23
|
+
FOREIGN KEY (session_id) REFERENCES sessions(id)
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
CREATE TABLE IF NOT EXISTS tasks (
|
|
27
|
+
id TEXT PRIMARY KEY,
|
|
28
|
+
session_id TEXT NOT NULL,
|
|
29
|
+
machine_id TEXT NOT NULL,
|
|
30
|
+
command TEXT NOT NULL,
|
|
31
|
+
pid INTEGER,
|
|
32
|
+
log_path TEXT,
|
|
33
|
+
status TEXT NOT NULL DEFAULT 'running',
|
|
34
|
+
exit_code INTEGER,
|
|
35
|
+
created_at INTEGER NOT NULL,
|
|
36
|
+
completed_at INTEGER,
|
|
37
|
+
FOREIGN KEY (session_id) REFERENCES sessions(id)
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
CREATE TABLE IF NOT EXISTS metrics (
|
|
41
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
42
|
+
task_id TEXT NOT NULL,
|
|
43
|
+
machine_id TEXT NOT NULL,
|
|
44
|
+
metric_name TEXT NOT NULL,
|
|
45
|
+
value REAL NOT NULL,
|
|
46
|
+
step INTEGER,
|
|
47
|
+
timestamp INTEGER NOT NULL
|
|
48
|
+
);
|
|
49
|
+
CREATE INDEX IF NOT EXISTS idx_metrics_task_name
|
|
50
|
+
ON metrics(task_id, metric_name, timestamp);
|
|
51
|
+
|
|
52
|
+
CREATE TABLE IF NOT EXISTS machines (
|
|
53
|
+
id TEXT PRIMARY KEY,
|
|
54
|
+
host TEXT NOT NULL,
|
|
55
|
+
port INTEGER NOT NULL DEFAULT 22,
|
|
56
|
+
username TEXT NOT NULL,
|
|
57
|
+
auth_method TEXT NOT NULL,
|
|
58
|
+
key_path TEXT,
|
|
59
|
+
labels TEXT,
|
|
60
|
+
created_at INTEGER NOT NULL
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
CREATE TABLE IF NOT EXISTS triggers (
|
|
64
|
+
id TEXT PRIMARY KEY,
|
|
65
|
+
session_id TEXT NOT NULL,
|
|
66
|
+
expression TEXT NOT NULL,
|
|
67
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
68
|
+
sleep_reason TEXT,
|
|
69
|
+
context_snapshot_id TEXT,
|
|
70
|
+
poll_interval_ms INTEGER,
|
|
71
|
+
deadline INTEGER,
|
|
72
|
+
satisfied_leaves TEXT,
|
|
73
|
+
last_evaluated_at INTEGER,
|
|
74
|
+
last_error TEXT,
|
|
75
|
+
created_at INTEGER NOT NULL,
|
|
76
|
+
satisfied_at INTEGER
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
CREATE TABLE IF NOT EXISTS _schema_version (
|
|
80
|
+
version INTEGER PRIMARY KEY
|
|
81
|
+
);
|
|
82
|
+
`,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
version: 2,
|
|
86
|
+
sql: `
|
|
87
|
+
CREATE INDEX IF NOT EXISTS idx_messages_session
|
|
88
|
+
ON messages(session_id, timestamp);
|
|
89
|
+
CREATE INDEX IF NOT EXISTS idx_metrics_name_ts
|
|
90
|
+
ON metrics(metric_name, timestamp);
|
|
91
|
+
|
|
92
|
+
CREATE TABLE IF NOT EXISTS memory_nodes (
|
|
93
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
94
|
+
session_id TEXT NOT NULL,
|
|
95
|
+
path TEXT NOT NULL,
|
|
96
|
+
gist TEXT NOT NULL,
|
|
97
|
+
content TEXT,
|
|
98
|
+
is_dir INTEGER NOT NULL DEFAULT 0,
|
|
99
|
+
created_at INTEGER NOT NULL,
|
|
100
|
+
updated_at INTEGER NOT NULL,
|
|
101
|
+
UNIQUE(session_id, path)
|
|
102
|
+
);
|
|
103
|
+
CREATE INDEX IF NOT EXISTS idx_memory_session_path
|
|
104
|
+
ON memory_nodes(session_id, path);
|
|
105
|
+
`,
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
export function runMigrations(db) {
|
|
109
|
+
db.exec(`
|
|
110
|
+
CREATE TABLE IF NOT EXISTS _schema_version (
|
|
111
|
+
version INTEGER PRIMARY KEY
|
|
112
|
+
);
|
|
113
|
+
`);
|
|
114
|
+
const currentVersion = db.prepare("SELECT MAX(version) as v FROM _schema_version").get()?.v ?? 0;
|
|
115
|
+
for (const migration of migrations) {
|
|
116
|
+
if (migration.version > currentVersion) {
|
|
117
|
+
db.transaction(() => {
|
|
118
|
+
db.exec(migration.sql);
|
|
119
|
+
db.prepare("INSERT INTO _schema_version (version) VALUES (?)").run(migration.version);
|
|
120
|
+
})();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/store/migrations.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,GAAgB;IAC9B;QACE,OAAO,EAAE,CAAC;QACV,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8EJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,GAAG,EAAE;;;;;;;;;;;;;;;;;;;KAmBJ;KACF;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,EAAE,CAAC,IAAI,CAAC;;;;GAIP,CAAC,CAAC;IAEH,MAAM,cAAc,GAEhB,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAGhE,EAAE,CAAC,IAAI,CAAC,CAAC;IAEZ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC;YACvC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBAClB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACvB,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAChE,SAAS,CAAC,OAAO,CAClB,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface Preferences {
|
|
2
|
+
lastProvider?: "claude" | "openai";
|
|
3
|
+
claudeAuthMode?: "cli" | "api";
|
|
4
|
+
}
|
|
5
|
+
export declare function loadPreferences(): Preferences;
|
|
6
|
+
export declare function savePreferences(prefs: Partial<Preferences>): void;
|
|
7
|
+
//# sourceMappingURL=preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/store/preferences.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACnC,cAAc,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CAChC;AAQD,wBAAgB,eAAe,IAAI,WAAW,CAO7C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAQjE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
const CONFIG_DIR = join(homedir(), ".helios");
|
|
5
|
+
const PREFS_FILE = join(CONFIG_DIR, "preferences.json");
|
|
6
|
+
function ensureDir() {
|
|
7
|
+
if (!existsSync(CONFIG_DIR)) {
|
|
8
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function loadPreferences() {
|
|
12
|
+
try {
|
|
13
|
+
if (!existsSync(PREFS_FILE))
|
|
14
|
+
return {};
|
|
15
|
+
return JSON.parse(readFileSync(PREFS_FILE, "utf-8"));
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function savePreferences(prefs) {
|
|
22
|
+
ensureDir();
|
|
23
|
+
const existing = loadPreferences();
|
|
24
|
+
writeFileSync(PREFS_FILE, JSON.stringify({ ...existing, ...prefs }, null, 2), "utf-8");
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../src/store/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAOxD,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,SAAS,EAAE,CAAC;IACZ,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,aAAa,CACX,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAClD,OAAO,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Session } from "../providers/types.js";
|
|
2
|
+
export interface StoredMessage {
|
|
3
|
+
id: number;
|
|
4
|
+
sessionId: string;
|
|
5
|
+
role: "user" | "assistant" | "system" | "tool";
|
|
6
|
+
content: string;
|
|
7
|
+
toolCalls?: string;
|
|
8
|
+
tokenCount?: number;
|
|
9
|
+
timestamp: number;
|
|
10
|
+
}
|
|
11
|
+
export interface SessionSummary {
|
|
12
|
+
id: string;
|
|
13
|
+
provider: string;
|
|
14
|
+
model: string | null;
|
|
15
|
+
createdAt: number;
|
|
16
|
+
lastActiveAt: number;
|
|
17
|
+
messageCount: number;
|
|
18
|
+
firstUserMessage: string | null;
|
|
19
|
+
}
|
|
20
|
+
export declare class SessionStore {
|
|
21
|
+
createSession(provider: string, model?: string, providerSessionId?: string): Session;
|
|
22
|
+
getSession(id: string): Session | null;
|
|
23
|
+
updateLastActive(sessionId: string): void;
|
|
24
|
+
addMessage(sessionId: string, role: StoredMessage["role"], content: string, toolCalls?: string, tokenCount?: number): void;
|
|
25
|
+
getMessages(sessionId: string, limit?: number): StoredMessage[];
|
|
26
|
+
listSessions(limit?: number): Session[];
|
|
27
|
+
listSessionSummaries(limit?: number): SessionSummary[];
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/store/session-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,qBAAa,YAAY;IACvB,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO;IAmBV,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAiBtC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQzC,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAeP,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,aAAa,EAAE;IAmB5D,YAAY,CAAC,KAAK,SAAK,GAAG,OAAO,EAAE;IAiBnC,oBAAoB,CAAC,KAAK,SAAK,GAAG,cAAc,EAAE;CAkCnD"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { nanoid } from "nanoid";
|
|
2
|
+
import { getDb } from "./database.js";
|
|
3
|
+
import { truncate } from "../ui/format.js";
|
|
4
|
+
export class SessionStore {
|
|
5
|
+
createSession(provider, model, providerSessionId) {
|
|
6
|
+
const id = nanoid();
|
|
7
|
+
const now = Date.now();
|
|
8
|
+
const db = getDb();
|
|
9
|
+
db.prepare(`INSERT INTO sessions (id, provider, provider_session_id, model, status, created_at, last_active_at)
|
|
10
|
+
VALUES (?, ?, ?, ?, 'active', ?, ?)`).run(id, provider, providerSessionId ?? null, model ?? null, now, now);
|
|
11
|
+
return {
|
|
12
|
+
id,
|
|
13
|
+
providerId: provider,
|
|
14
|
+
providerSessionId,
|
|
15
|
+
createdAt: now,
|
|
16
|
+
lastActiveAt: now,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
getSession(id) {
|
|
20
|
+
const db = getDb();
|
|
21
|
+
const row = db
|
|
22
|
+
.prepare("SELECT * FROM sessions WHERE id = ?")
|
|
23
|
+
.get(id);
|
|
24
|
+
if (!row)
|
|
25
|
+
return null;
|
|
26
|
+
return {
|
|
27
|
+
id: row.id,
|
|
28
|
+
providerId: row.provider,
|
|
29
|
+
providerSessionId: row.provider_session_id,
|
|
30
|
+
createdAt: row.created_at,
|
|
31
|
+
lastActiveAt: row.last_active_at,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
updateLastActive(sessionId) {
|
|
35
|
+
const db = getDb();
|
|
36
|
+
db.prepare("UPDATE sessions SET last_active_at = ? WHERE id = ?").run(Date.now(), sessionId);
|
|
37
|
+
}
|
|
38
|
+
addMessage(sessionId, role, content, toolCalls, tokenCount) {
|
|
39
|
+
const db = getDb();
|
|
40
|
+
db.prepare(`INSERT INTO messages (session_id, role, content, tool_calls, token_count, timestamp)
|
|
41
|
+
VALUES (?, ?, ?, ?, ?, ?)`).run(sessionId, role, content, toolCalls ?? null, tokenCount ?? null, Date.now());
|
|
42
|
+
}
|
|
43
|
+
getMessages(sessionId, limit = 100) {
|
|
44
|
+
const db = getDb();
|
|
45
|
+
const rows = db
|
|
46
|
+
.prepare(`SELECT * FROM messages WHERE session_id = ? ORDER BY timestamp ASC LIMIT ?`)
|
|
47
|
+
.all(sessionId, limit);
|
|
48
|
+
return rows.map((row) => ({
|
|
49
|
+
id: row.id,
|
|
50
|
+
sessionId: row.session_id,
|
|
51
|
+
role: row.role,
|
|
52
|
+
content: row.content,
|
|
53
|
+
toolCalls: row.tool_calls,
|
|
54
|
+
tokenCount: row.token_count,
|
|
55
|
+
timestamp: row.timestamp,
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
listSessions(limit = 20) {
|
|
59
|
+
const db = getDb();
|
|
60
|
+
const rows = db
|
|
61
|
+
.prepare("SELECT * FROM sessions ORDER BY last_active_at DESC LIMIT ?")
|
|
62
|
+
.all(limit);
|
|
63
|
+
return rows.map((row) => ({
|
|
64
|
+
id: row.id,
|
|
65
|
+
providerId: row.provider,
|
|
66
|
+
providerSessionId: row.provider_session_id,
|
|
67
|
+
createdAt: row.created_at,
|
|
68
|
+
lastActiveAt: row.last_active_at,
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
listSessionSummaries(limit = 20) {
|
|
72
|
+
const db = getDb();
|
|
73
|
+
const rows = db
|
|
74
|
+
.prepare(`SELECT
|
|
75
|
+
s.id,
|
|
76
|
+
s.provider,
|
|
77
|
+
s.model,
|
|
78
|
+
s.created_at,
|
|
79
|
+
s.last_active_at,
|
|
80
|
+
COUNT(m.id) AS message_count,
|
|
81
|
+
(SELECT m2.content FROM messages m2
|
|
82
|
+
WHERE m2.session_id = s.id AND m2.role = 'user'
|
|
83
|
+
ORDER BY m2.timestamp ASC LIMIT 1) AS first_user_message
|
|
84
|
+
FROM sessions s
|
|
85
|
+
LEFT JOIN messages m ON m.session_id = s.id
|
|
86
|
+
GROUP BY s.id
|
|
87
|
+
ORDER BY s.last_active_at DESC
|
|
88
|
+
LIMIT ?`)
|
|
89
|
+
.all(limit);
|
|
90
|
+
return rows.map((row) => ({
|
|
91
|
+
id: row.id,
|
|
92
|
+
provider: row.provider,
|
|
93
|
+
model: row.model ?? null,
|
|
94
|
+
createdAt: row.created_at,
|
|
95
|
+
lastActiveAt: row.last_active_at,
|
|
96
|
+
messageCount: row.message_count,
|
|
97
|
+
firstUserMessage: row.first_user_message
|
|
98
|
+
? truncate(row.first_user_message, 80, true)
|
|
99
|
+
: null,
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/store/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ToolDefinition } from "../providers/types.js";
|
|
2
|
+
import type { MetricStore } from "../metrics/store.js";
|
|
3
|
+
import type { MetricCollector } from "../metrics/collector.js";
|
|
4
|
+
export declare function createClearMetricsTool(store: MetricStore, collector: MetricCollector): ToolDefinition;
|
|
5
|
+
//# sourceMappingURL=clear-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-metrics.d.ts","sourceRoot":"","sources":["../../src/tools/clear-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,eAAe,GACzB,cAAc,CA6BhB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export function createClearMetricsTool(store, collector) {
|
|
2
|
+
return {
|
|
3
|
+
name: "clear_metrics",
|
|
4
|
+
description: "Clear collected metrics. Use this when discarding a failed experiment run before starting a new one, so the dashboard and metric queries only show data from the new run.",
|
|
5
|
+
parameters: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
task_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Optional: clear metrics only for a specific task (e.g. \"local:1234\"). If omitted, clears all metrics.",
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
execute: async (args) => {
|
|
15
|
+
const taskId = args.task_id;
|
|
16
|
+
if (taskId) {
|
|
17
|
+
const deleted = store.clearTask(taskId);
|
|
18
|
+
collector.removeSource(taskId);
|
|
19
|
+
return JSON.stringify({ cleared: deleted, task_id: taskId });
|
|
20
|
+
}
|
|
21
|
+
const deleted = store.clear();
|
|
22
|
+
collector.reset();
|
|
23
|
+
return JSON.stringify({ cleared: deleted, all: true });
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=clear-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-metrics.js","sourceRoot":"","sources":["../../src/tools/clear-metrics.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,sBAAsB,CACpC,KAAkB,EAClB,SAA0B;IAE1B,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,2KAA2K;QAC7K,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,yGAAyG;iBAC5G;aACF;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAA6B,CAAC;YAElD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACxC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9B,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare-runs.d.ts","sourceRoot":"","sources":["../../src/tools/compare-runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,GACvB,cAAc,CAuFhB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export function createCompareRunsTool(metricStore) {
|
|
2
|
+
return {
|
|
3
|
+
name: "compare_runs",
|
|
4
|
+
description: "Compare metrics between two experiment runs side-by-side. " +
|
|
5
|
+
"Shows the final value, min, max, and delta for each metric. " +
|
|
6
|
+
"Use this to decide whether to keep or discard an experiment.",
|
|
7
|
+
parameters: {
|
|
8
|
+
type: "object",
|
|
9
|
+
properties: {
|
|
10
|
+
task_a: {
|
|
11
|
+
type: "string",
|
|
12
|
+
description: 'Task ID of the baseline run (format: "machine_id:pid")',
|
|
13
|
+
},
|
|
14
|
+
task_b: {
|
|
15
|
+
type: "string",
|
|
16
|
+
description: 'Task ID of the new run to compare (format: "machine_id:pid")',
|
|
17
|
+
},
|
|
18
|
+
metric_names: {
|
|
19
|
+
type: "array",
|
|
20
|
+
items: { type: "string" },
|
|
21
|
+
description: "Optional list of metric names to compare. If omitted, compares all shared metrics.",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
required: ["task_a", "task_b"],
|
|
25
|
+
},
|
|
26
|
+
execute: async (args) => {
|
|
27
|
+
const taskA = args.task_a;
|
|
28
|
+
const taskB = args.task_b;
|
|
29
|
+
const filterNames = args.metric_names;
|
|
30
|
+
const summaryA = metricStore.getTaskSummary(taskA);
|
|
31
|
+
const summaryB = metricStore.getTaskSummary(taskB);
|
|
32
|
+
if (Object.keys(summaryA).length === 0) {
|
|
33
|
+
return JSON.stringify({ error: `No metrics found for task ${taskA}` });
|
|
34
|
+
}
|
|
35
|
+
if (Object.keys(summaryB).length === 0) {
|
|
36
|
+
return JSON.stringify({ error: `No metrics found for task ${taskB}` });
|
|
37
|
+
}
|
|
38
|
+
// Get union of metric names, optionally filtered
|
|
39
|
+
const allNames = new Set([
|
|
40
|
+
...Object.keys(summaryA),
|
|
41
|
+
...Object.keys(summaryB),
|
|
42
|
+
]);
|
|
43
|
+
const names = filterNames
|
|
44
|
+
? filterNames.filter((n) => allNames.has(n))
|
|
45
|
+
: Array.from(allNames);
|
|
46
|
+
const comparisons = names.map((name) => {
|
|
47
|
+
const a = summaryA[name];
|
|
48
|
+
const b = summaryB[name];
|
|
49
|
+
const delta = a && b ? b.latest - a.latest : null;
|
|
50
|
+
const direction = delta === null
|
|
51
|
+
? "n/a"
|
|
52
|
+
: delta < -0.0001
|
|
53
|
+
? "decreased"
|
|
54
|
+
: delta > 0.0001
|
|
55
|
+
? "increased"
|
|
56
|
+
: "unchanged";
|
|
57
|
+
return {
|
|
58
|
+
metric: name,
|
|
59
|
+
baseline: a
|
|
60
|
+
? { latest: a.latest, min: a.min, max: a.max, samples: a.count }
|
|
61
|
+
: null,
|
|
62
|
+
experiment: b
|
|
63
|
+
? { latest: b.latest, min: b.min, max: b.max, samples: b.count }
|
|
64
|
+
: null,
|
|
65
|
+
delta,
|
|
66
|
+
direction,
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
return JSON.stringify({
|
|
70
|
+
task_a: taskA,
|
|
71
|
+
task_b: taskB,
|
|
72
|
+
comparisons,
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=compare-runs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare-runs.js","sourceRoot":"","sources":["../../src/tools/compare-runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consult.d.ts","sourceRoot":"","sources":["../../src/tools/consult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3E,wBAAgB,iBAAiB,CAC/B,qBAAqB,EAAE,MAAM,MAAM,GAAG,IAAI,EAC1C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,IAAI,GAClD,cAAc,CA+DhB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { formatError } from "../ui/format.js";
|
|
2
|
+
const CONSULT_SYSTEM_PROMPT = `You are a senior ML research consultant. Another AI research agent is asking for your help. Give a direct, actionable response. Be concise — focus on what they should try next.`;
|
|
3
|
+
export function createConsultTool(getActiveProviderName, getProvider) {
|
|
4
|
+
return {
|
|
5
|
+
name: "consult",
|
|
6
|
+
description: "Ask the other AI provider for a second opinion. Sends your question to Claude (if you're using OpenAI) or OpenAI (if you're using Claude). Use this if you're stuck and want a fresh perspective.",
|
|
7
|
+
parameters: {
|
|
8
|
+
type: "object",
|
|
9
|
+
properties: {
|
|
10
|
+
question: {
|
|
11
|
+
type: "string",
|
|
12
|
+
description: "What you want to ask the other provider.",
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
required: ["question"],
|
|
16
|
+
},
|
|
17
|
+
execute: async (args) => {
|
|
18
|
+
const question = args.question;
|
|
19
|
+
if (!question?.trim()) {
|
|
20
|
+
return JSON.stringify({ error: "question is required" });
|
|
21
|
+
}
|
|
22
|
+
const activeName = getActiveProviderName();
|
|
23
|
+
if (!activeName) {
|
|
24
|
+
return JSON.stringify({ error: "No active provider" });
|
|
25
|
+
}
|
|
26
|
+
const otherName = activeName === "claude" ? "openai" : "claude";
|
|
27
|
+
const otherProvider = getProvider(otherName);
|
|
28
|
+
if (!otherProvider) {
|
|
29
|
+
return JSON.stringify({ error: `Provider "${otherName}" not available` });
|
|
30
|
+
}
|
|
31
|
+
if (!(await otherProvider.isAuthenticated())) {
|
|
32
|
+
return JSON.stringify({
|
|
33
|
+
error: `Provider "${otherName}" is not authenticated. Ask the user to run /switch ${otherName} first.`,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const session = await otherProvider.createSession({
|
|
37
|
+
systemPrompt: CONSULT_SYSTEM_PROMPT,
|
|
38
|
+
});
|
|
39
|
+
try {
|
|
40
|
+
let response = "";
|
|
41
|
+
for await (const event of otherProvider.send(session, question, [])) {
|
|
42
|
+
if (event.type === "text" && event.delta) {
|
|
43
|
+
response += event.delta;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return JSON.stringify({
|
|
47
|
+
provider: otherName,
|
|
48
|
+
response: response || "(empty response)",
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
return JSON.stringify({
|
|
53
|
+
error: `Consult failed: ${formatError(err)}`,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
await otherProvider.closeSession(session).catch(() => { });
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=consult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consult.js","sourceRoot":"","sources":["../../src/tools/consult.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,qBAAqB,GAAG,kLAAkL,CAAC;AAEjN,MAAM,UAAU,iBAAiB,CAC/B,qBAA0C,EAC1C,WAAmD;IAEnD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,WAAW,EACT,mMAAmM;QACrM,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0CAA0C;iBACxD;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAkB,CAAC;YACzC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,MAAM,SAAS,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAChE,MAAM,aAAa,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,SAAS,iBAAiB,EAAE,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,aAAa,SAAS,uDAAuD,SAAS,SAAS;iBACvG,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC;gBAChD,YAAY,EAAE,qBAAqB;aACpC,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;oBACpE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBACzC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;oBAC1B,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,QAAQ,IAAI,kBAAkB;iBACzC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,mBAAmB,WAAW,CAAC,GAAG,CAAC,EAAE;iBAC7C,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,MAAM,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ToolDefinition } from "../providers/types.js";
|
|
2
|
+
import type { ConnectionPool } from "../remote/connection-pool.js";
|
|
3
|
+
export declare function createReadFileTool(pool: ConnectionPool): ToolDefinition;
|
|
4
|
+
export declare function createWriteFileTool(pool: ConnectionPool): ToolDefinition;
|
|
5
|
+
export declare function createPatchFileTool(pool: ConnectionPool): ToolDefinition;
|
|
6
|
+
//# sourceMappingURL=file-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-ops.d.ts","sourceRoot":"","sources":["../../src/tools/file-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAqDvE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CA2DxE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAmExE"}
|