@snoglobe/helios 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/acp/entry.d.ts +7 -0
- package/dist/acp/entry.d.ts.map +1 -0
- package/dist/acp/entry.js +46 -0
- package/dist/acp/entry.js.map +1 -0
- package/dist/acp/server.d.ts +57 -0
- package/dist/acp/server.d.ts.map +1 -0
- package/dist/acp/server.js +434 -0
- package/dist/acp/server.js.map +1 -0
- package/dist/acp/transport.d.ts +31 -0
- package/dist/acp/transport.d.ts.map +1 -0
- package/dist/acp/transport.js +116 -0
- package/dist/acp/transport.js.map +1 -0
- package/dist/acp/types.d.ts +213 -0
- package/dist/acp/types.d.ts.map +1 -0
- package/dist/acp/types.js +3 -0
- package/dist/acp/types.js.map +1 -0
- package/dist/app.d.ts +8 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +51 -281
- package/dist/app.js.map +1 -1
- package/dist/bootstrap.d.ts +3 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +26 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/cli/auth.d.ts +20 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +62 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/doctor.d.ts +9 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +368 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/env.d.ts +13 -0
- package/dist/cli/env.d.ts.map +1 -0
- package/dist/cli/env.js +16 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/export.d.ts +11 -0
- package/dist/cli/export.d.ts.map +1 -0
- package/dist/cli/export.js +103 -0
- package/dist/cli/export.js.map +1 -0
- package/dist/cli/index.d.ts +22 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +71 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-cmd.d.ts +11 -0
- package/dist/cli/init-cmd.d.ts.map +1 -0
- package/dist/cli/init-cmd.js +37 -0
- package/dist/cli/init-cmd.js.map +1 -0
- package/dist/cli/kill.d.ts +8 -0
- package/dist/cli/kill.d.ts.map +1 -0
- package/dist/cli/kill.js +46 -0
- package/dist/cli/kill.js.map +1 -0
- package/dist/cli/options.d.ts +18 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +24 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/replay.d.ts +9 -0
- package/dist/cli/replay.d.ts.map +1 -0
- package/dist/cli/replay.js +65 -0
- package/dist/cli/replay.js.map +1 -0
- package/dist/cli/report.d.ts +11 -0
- package/dist/cli/report.d.ts.map +1 -0
- package/dist/cli/report.js +70 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/run.d.ts +17 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +120 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/search.d.ts +9 -0
- package/dist/cli/search.d.ts.map +1 -0
- package/dist/cli/search.js +52 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/cli/sessions.d.ts +8 -0
- package/dist/cli/sessions.d.ts.map +1 -0
- package/dist/cli/sessions.js +38 -0
- package/dist/cli/sessions.js.map +1 -0
- package/dist/cli/watch.d.ts +8 -0
- package/dist/cli/watch.d.ts.map +1 -0
- package/dist/cli/watch.js +81 -0
- package/dist/cli/watch.js.map +1 -0
- package/dist/config/project.d.ts +63 -0
- package/dist/config/project.d.ts.map +1 -0
- package/dist/config/project.js +112 -0
- package/dist/config/project.js.map +1 -0
- package/dist/core/orchestrator.d.ts +4 -2
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +8 -3
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/task-poller.d.ts +43 -0
- package/dist/core/task-poller.d.ts.map +1 -0
- package/dist/core/task-poller.js +98 -0
- package/dist/core/task-poller.js.map +1 -0
- package/dist/experiments/branching.d.ts +38 -0
- package/dist/experiments/branching.d.ts.map +1 -0
- package/dist/experiments/branching.js +80 -0
- package/dist/experiments/branching.js.map +1 -0
- package/dist/hub/client.d.ts +70 -0
- package/dist/hub/client.d.ts.map +1 -0
- package/dist/hub/client.js +140 -0
- package/dist/hub/client.js.map +1 -0
- package/dist/hub/config.d.ts +9 -0
- package/dist/hub/config.d.ts.map +1 -0
- package/dist/hub/config.js +38 -0
- package/dist/hub/config.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +25 -3
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +44 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +387 -0
- package/dist/init.js.map +1 -0
- package/dist/memory/context-gate.d.ts.map +1 -1
- package/dist/memory/context-gate.js +1 -1
- package/dist/memory/context-gate.js.map +1 -1
- package/dist/memory/experiment-tracker.d.ts.map +1 -1
- package/dist/memory/experiment-tracker.js +2 -6
- package/dist/memory/experiment-tracker.js.map +1 -1
- package/dist/memory/memory-store.d.ts.map +1 -1
- package/dist/memory/memory-store.js +16 -20
- package/dist/memory/memory-store.js.map +1 -1
- package/dist/metrics/collector.d.ts.map +1 -1
- package/dist/metrics/collector.js +7 -7
- package/dist/metrics/collector.js.map +1 -1
- package/dist/metrics/resources.d.ts +44 -0
- package/dist/metrics/resources.d.ts.map +1 -0
- package/dist/metrics/resources.js +382 -0
- package/dist/metrics/resources.js.map +1 -0
- package/dist/metrics/store.d.ts +10 -2
- package/dist/metrics/store.d.ts.map +1 -1
- package/dist/metrics/store.js +91 -27
- package/dist/metrics/store.js.map +1 -1
- package/dist/notifications/index.d.ts +2 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +2 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/notifier.d.ts +36 -0
- package/dist/notifications/notifier.d.ts.map +1 -0
- package/dist/notifications/notifier.js +102 -0
- package/dist/notifications/notifier.js.map +1 -0
- package/dist/paths.d.ts +3 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +5 -0
- package/dist/paths.js.map +1 -0
- package/dist/providers/claude/provider.d.ts +7 -3
- package/dist/providers/claude/provider.d.ts.map +1 -1
- package/dist/providers/claude/provider.js +48 -8
- package/dist/providers/claude/provider.js.map +1 -1
- package/dist/providers/openai/callback-server.d.ts +5 -1
- package/dist/providers/openai/callback-server.d.ts.map +1 -1
- package/dist/providers/openai/callback-server.js +42 -20
- package/dist/providers/openai/callback-server.js.map +1 -1
- package/dist/providers/openai/oauth.d.ts +4 -0
- package/dist/providers/openai/oauth.d.ts.map +1 -1
- package/dist/providers/openai/oauth.js +35 -14
- package/dist/providers/openai/oauth.js.map +1 -1
- package/dist/providers/openai/provider.d.ts +6 -3
- package/dist/providers/openai/provider.d.ts.map +1 -1
- package/dist/providers/openai/provider.js +35 -9
- package/dist/providers/openai/provider.js.map +1 -1
- package/dist/providers/types.d.ts +9 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/remote/config.d.ts.map +1 -1
- package/dist/remote/config.js +4 -8
- package/dist/remote/config.js.map +1 -1
- package/dist/remote/connection-pool.d.ts.map +1 -1
- package/dist/remote/connection-pool.js +9 -5
- package/dist/remote/connection-pool.js.map +1 -1
- package/dist/store/database.d.ts.map +1 -1
- package/dist/store/database.js +2 -2
- package/dist/store/database.js.map +1 -1
- package/dist/store/migrations.d.ts.map +1 -1
- package/dist/store/migrations.js +27 -0
- package/dist/store/migrations.js.map +1 -1
- package/dist/store/preferences.d.ts +2 -0
- package/dist/store/preferences.d.ts.map +1 -1
- package/dist/store/preferences.js +2 -2
- package/dist/store/preferences.js.map +1 -1
- package/dist/store/session-store.d.ts +6 -0
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +20 -5
- package/dist/store/session-store.js.map +1 -1
- package/dist/tools/env-snapshot.d.ts +5 -0
- package/dist/tools/env-snapshot.d.ts.map +1 -0
- package/dist/tools/env-snapshot.js +174 -0
- package/dist/tools/env-snapshot.js.map +1 -0
- package/dist/tools/experiment-branch.d.ts +7 -0
- package/dist/tools/experiment-branch.d.ts.map +1 -0
- package/dist/tools/experiment-branch.js +167 -0
- package/dist/tools/experiment-branch.js.map +1 -0
- package/dist/tools/file-ops.d.ts.map +1 -1
- package/dist/tools/file-ops.js +1 -3
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/hub.d.ts +5 -0
- package/dist/tools/hub.d.ts.map +1 -0
- package/dist/tools/hub.js +298 -0
- package/dist/tools/hub.js.map +1 -0
- package/dist/tools/sweep.d.ts +6 -0
- package/dist/tools/sweep.d.ts.map +1 -0
- package/dist/tools/sweep.js +153 -0
- package/dist/tools/sweep.js.map +1 -0
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +2 -1
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/writeup.d.ts +11 -0
- package/dist/tools/writeup.d.ts.map +1 -0
- package/dist/tools/writeup.js +102 -0
- package/dist/tools/writeup.js.map +1 -0
- package/dist/ui/commands.d.ts +36 -0
- package/dist/ui/commands.d.ts.map +1 -1
- package/dist/ui/commands.js +501 -1
- package/dist/ui/commands.js.map +1 -1
- package/dist/ui/components/input-bar.js.map +1 -1
- package/dist/ui/components/overlay-header.d.ts.map +1 -1
- package/dist/ui/components/overlay-header.js.map +1 -1
- package/dist/ui/components/status-bar.js +1 -1
- package/dist/ui/components/status-bar.js.map +1 -1
- package/dist/ui/format.d.ts +4 -0
- package/dist/ui/format.d.ts.map +1 -1
- package/dist/ui/format.js +16 -0
- package/dist/ui/format.js.map +1 -1
- package/dist/ui/layout.d.ts +7 -42
- package/dist/ui/layout.d.ts.map +1 -1
- package/dist/ui/layout.js +71 -543
- package/dist/ui/layout.js.map +1 -1
- package/dist/ui/overlays/metrics-overlay.js.map +1 -1
- package/dist/ui/overlays/task-overlay.d.ts +1 -1
- package/dist/ui/overlays/task-overlay.d.ts.map +1 -1
- package/dist/ui/overlays/task-overlay.js.map +1 -1
- package/dist/ui/panels/conversation.d.ts +1 -1
- package/dist/ui/panels/conversation.d.ts.map +1 -1
- package/dist/ui/panels/conversation.js +1 -2
- package/dist/ui/panels/conversation.js.map +1 -1
- package/dist/ui/panels/metrics-dashboard.d.ts.map +1 -1
- package/dist/ui/panels/metrics-dashboard.js.map +1 -1
- package/dist/ui/panels/sleep-panel.js.map +1 -1
- package/dist/ui/panels/sticky-notes.d.ts.map +1 -1
- package/dist/ui/panels/sticky-notes.js.map +1 -1
- package/dist/ui/panels/task-list.d.ts +4 -2
- package/dist/ui/panels/task-list.d.ts.map +1 -1
- package/dist/ui/panels/task-list.js +41 -9
- package/dist/ui/panels/task-list.js.map +1 -1
- package/dist/ui/theme.d.ts.map +1 -1
- package/dist/ui/theme.js.map +1 -1
- package/dist/ui/types.d.ts +22 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +2 -0
- package/dist/ui/types.js.map +1 -0
- package/package.json +19 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `helios init` — initialize a project with a helios.json config file.
|
|
3
|
+
*/
|
|
4
|
+
import { Option } from "effect";
|
|
5
|
+
import { Command } from "@effect/cli";
|
|
6
|
+
export declare const initCmd: Command.Command<"init", never, never, {
|
|
7
|
+
readonly provider: Option.Option<"claude" | "openai">;
|
|
8
|
+
readonly model: Option.Option<string>;
|
|
9
|
+
readonly machine: Option.Option<string>;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=init-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/init-cmd.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,OAAO,EAAW,MAAM,aAAa,CAAC;AAoB/C,eAAO,MAAM,OAAO;;;;EAkCnB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `helios init` — initialize a project with a helios.json config file.
|
|
3
|
+
*/
|
|
4
|
+
import { Effect, Option } from "effect";
|
|
5
|
+
import { Command, Options } from "@effect/cli";
|
|
6
|
+
const providerOpt = Options.choice("provider", ["claude", "openai"]).pipe(Options.withAlias("P"), Options.withDescription("Default provider for this project"), Options.optional);
|
|
7
|
+
const modelOpt = Options.text("model").pipe(Options.withAlias("m"), Options.withDescription("Default model for this project"), Options.optional);
|
|
8
|
+
const machineOpt = Options.text("machine").pipe(Options.withDescription("Default machine for experiments"), Options.optional);
|
|
9
|
+
export const initCmd = Command.make("init", { provider: providerOpt, model: modelOpt, machine: machineOpt }, ({ provider, model, machine }) => Effect.promise(async () => {
|
|
10
|
+
const { existsSync } = await import("node:fs");
|
|
11
|
+
const { join } = await import("node:path");
|
|
12
|
+
const { writeProjectConfig } = await import("../config/project.js");
|
|
13
|
+
const dir = process.cwd();
|
|
14
|
+
const configPath = join(dir, "helios.json");
|
|
15
|
+
if (existsSync(configPath)) {
|
|
16
|
+
console.log(`helios.json already exists in ${dir}`);
|
|
17
|
+
console.log("Edit it directly or delete it and re-run 'helios init'.");
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const config = {};
|
|
21
|
+
if (Option.isSome(provider))
|
|
22
|
+
config.provider = provider.value;
|
|
23
|
+
if (Option.isSome(model))
|
|
24
|
+
config.model = model.value;
|
|
25
|
+
if (Option.isSome(machine))
|
|
26
|
+
config.defaultMachine = machine.value;
|
|
27
|
+
// Sensible defaults
|
|
28
|
+
config.metricNames = ["loss", "acc", "lr"];
|
|
29
|
+
writeProjectConfig(dir, config);
|
|
30
|
+
console.log(`Created helios.json in ${dir}`);
|
|
31
|
+
console.log("\nEdit it to configure:");
|
|
32
|
+
console.log(" - provider/model defaults");
|
|
33
|
+
console.log(" - metric names and patterns to track");
|
|
34
|
+
console.log(" - notification channels (desktop, webhook, command)");
|
|
35
|
+
console.log(" - project-specific agent instructions");
|
|
36
|
+
}));
|
|
37
|
+
//# sourceMappingURL=init-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-cmd.js","sourceRoot":"","sources":["../../src/cli/init-cmd.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CACvE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,eAAe,CAAC,mCAAmC,CAAC,EAC5D,OAAO,CAAC,QAAQ,CACjB,CAAC;AAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACzC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,eAAe,CAAC,gCAAgC,CAAC,EACzD,OAAO,CAAC,QAAQ,CACjB,CAAC;AAEF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC7C,OAAO,CAAC,eAAe,CAAC,iCAAiC,CAAC,EAC1D,OAAO,CAAC,QAAQ,CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CACjC,MAAM,EACN,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,EAC/D,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IACxB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAEpE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAE5C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAA4B,CAAC;IACrF,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACrD,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAElE,oBAAoB;IACpB,MAAM,CAAC,WAAW,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAE3C,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC,CAAC,CACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kill.d.ts","sourceRoot":"","sources":["../../src/cli/kill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAC;AAM5C,eAAO,MAAM,IAAI;;EAgDhB,CAAC"}
|
package/dist/cli/kill.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `helios kill <machine:pid>` — kill a running task from the CLI.
|
|
3
|
+
*/
|
|
4
|
+
import { Effect } from "effect";
|
|
5
|
+
import { Command, Args } from "@effect/cli";
|
|
6
|
+
const target = Args.text({ name: "machine:pid" }).pipe(Args.withDescription("Task to kill, e.g. 'local:12345'"));
|
|
7
|
+
export const kill = Command.make("kill", { target }, ({ target }) => Effect.promise(async () => {
|
|
8
|
+
const [machineId, pidStr] = target.split(":");
|
|
9
|
+
const pid = parseInt(pidStr, 10);
|
|
10
|
+
if (!machineId || isNaN(pid)) {
|
|
11
|
+
console.error("Usage: helios kill <machine_id:pid>");
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
const { createRuntime } = await import("../init.js");
|
|
15
|
+
const runtime = await createRuntime();
|
|
16
|
+
const { connectionPool, executor } = runtime;
|
|
17
|
+
// Check if running
|
|
18
|
+
const running = await connectionPool.isProcessRunning(machineId, pid);
|
|
19
|
+
if (!running) {
|
|
20
|
+
console.log(`Process ${machineId}:${pid} is not running.`);
|
|
21
|
+
runtime.cleanup();
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Kill it
|
|
25
|
+
const result = await connectionPool.exec(machineId, `kill ${pid} 2>/dev/null && echo killed || echo failed`);
|
|
26
|
+
const outcome = result.stdout.trim();
|
|
27
|
+
if (outcome === "killed") {
|
|
28
|
+
console.log(`Killed ${machineId}:${pid}`);
|
|
29
|
+
// Clean up from executor tracking
|
|
30
|
+
const key = `${machineId}:${pid}`;
|
|
31
|
+
executor.removeBackgroundProcess(key);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// Try SIGKILL
|
|
35
|
+
const force = await connectionPool.exec(machineId, `kill -9 ${pid} 2>/dev/null && echo killed || echo failed`);
|
|
36
|
+
if (force.stdout.trim() === "killed") {
|
|
37
|
+
console.log(`Force-killed ${machineId}:${pid} (SIGKILL)`);
|
|
38
|
+
executor.removeBackgroundProcess(`${machineId}:${pid}`);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.error(`Failed to kill ${machineId}:${pid}. Check permissions.`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
runtime.cleanup();
|
|
45
|
+
}));
|
|
46
|
+
//# sourceMappingURL=kill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kill.js","sourceRoot":"","sources":["../../src/cli/kill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,IAAI,CACpD,IAAI,CAAC,eAAe,CAAC,kCAAkC,CAAC,CACzD,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAC9B,MAAM,EACN,EAAE,MAAM,EAAE,EACV,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACb,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IACxB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IAEtC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7C,mBAAmB;IACnB,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,kBAAkB,CAAC,CAAC;QAC3D,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,UAAU;IACV,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,4CAA4C,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAErC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;QAE1C,kCAAkC;QAClC,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC;QAClC,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,cAAc;QACd,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,4CAA4C,CAAC,CAAC;QAC/G,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,IAAI,GAAG,YAAY,CAAC,CAAC;YAC1D,QAAQ,CAAC,uBAAuB,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,kBAAkB,SAAS,IAAI,GAAG,sBAAsB,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,EAAE,CAAC;AACpB,CAAC,CAAC,CACL,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared CLI options used across commands.
|
|
3
|
+
*/
|
|
4
|
+
import { Options, Args } from "@effect/cli";
|
|
5
|
+
export declare const provider: Options.Options<import("effect/Option").Option<"claude" | "openai">>;
|
|
6
|
+
export declare const claudeMode: Options.Options<import("effect/Option").Option<"cli" | "api">>;
|
|
7
|
+
export declare const model: Options.Options<import("effect/Option").Option<string>>;
|
|
8
|
+
export declare const continueSession: Options.Options<boolean>;
|
|
9
|
+
export declare const resumeSession: Options.Options<import("effect/Option").Option<string>>;
|
|
10
|
+
export declare const print: Options.Options<boolean>;
|
|
11
|
+
export declare const headless: Options.Options<boolean>;
|
|
12
|
+
export declare const home: Options.Options<import("effect/Option").Option<string>>;
|
|
13
|
+
export declare const hubUrl: Options.Options<import("effect/Option").Option<string>>;
|
|
14
|
+
export declare const hubKey: Options.Options<import("effect/Option").Option<string>>;
|
|
15
|
+
export declare const agent: Options.Options<import("effect/Option").Option<string>>;
|
|
16
|
+
export declare const files: Options.Options<string[]>;
|
|
17
|
+
export declare const prompt: Args.Args<import("effect/Option").Option<string>>;
|
|
18
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAI5C,eAAO,MAAM,QAAQ,sEAIpB,CAAC;AAEF,eAAO,MAAM,UAAU,gEAGtB,CAAC;AAEF,eAAO,MAAM,KAAK,yDAIjB,CAAC;AAIF,eAAO,MAAM,eAAe,0BAI3B,CAAC;AAEF,eAAO,MAAM,aAAa,yDAIzB,CAAC;AAIF,eAAO,MAAM,KAAK,0BAIjB,CAAC;AAEF,eAAO,MAAM,QAAQ,0BAGpB,CAAC;AAIF,eAAO,MAAM,IAAI,yDAGhB,CAAC;AAEF,eAAO,MAAM,MAAM,yDAGlB,CAAC;AAEF,eAAO,MAAM,MAAM,yDAGlB,CAAC;AAEF,eAAO,MAAM,KAAK,yDAGjB,CAAC;AAIF,eAAO,MAAM,KAAK,2BAIjB,CAAC;AAIF,eAAO,MAAM,MAAM,mDAGlB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared CLI options used across commands.
|
|
3
|
+
*/
|
|
4
|
+
import { Options, Args } from "@effect/cli";
|
|
5
|
+
// ── Provider & model ─────────────────────────────────────
|
|
6
|
+
export const provider = Options.choice("provider", ["claude", "openai"]).pipe(Options.withAlias("P"), Options.withDescription("Model provider"), Options.optional);
|
|
7
|
+
export const claudeMode = Options.choice("claude-mode", ["cli", "api"]).pipe(Options.withDescription("Force Claude auth mode (cli or api)"), Options.optional);
|
|
8
|
+
export const model = Options.text("model").pipe(Options.withAlias("m"), Options.withDescription("Model to use"), Options.optional);
|
|
9
|
+
// ── Session ──────────────────────────────────────────────
|
|
10
|
+
export const continueSession = Options.boolean("continue").pipe(Options.withAlias("c"), Options.withDescription("Continue most recent conversation"), Options.withDefault(false));
|
|
11
|
+
export const resumeSession = Options.text("resume").pipe(Options.withAlias("r"), Options.withDescription("Resume a conversation by session ID"), Options.optional);
|
|
12
|
+
// ── Modes ────────────────────────────────────────────────
|
|
13
|
+
export const print = Options.boolean("print").pipe(Options.withAlias("p"), Options.withDescription("Print response and exit (non-interactive)"), Options.withDefault(false));
|
|
14
|
+
export const headless = Options.boolean("headless").pipe(Options.withDescription("Compact UI — no input field"), Options.withDefault(false));
|
|
15
|
+
// ── Paths & hub ──────────────────────────────────────────
|
|
16
|
+
export const home = Options.directory("home").pipe(Options.withDescription("Data directory (default: ~/.helios)"), Options.optional);
|
|
17
|
+
export const hubUrl = Options.text("hub-url").pipe(Options.withDescription("AgentHub server URL"), Options.optional);
|
|
18
|
+
export const hubKey = Options.text("hub-key").pipe(Options.withDescription("AgentHub API key"), Options.optional);
|
|
19
|
+
export const agent = Options.text("agent").pipe(Options.withDescription("Agent identity on AgentHub"), Options.optional);
|
|
20
|
+
// ── Attachments ─────────────────────────────────────────
|
|
21
|
+
export const files = Options.text("file").pipe(Options.withAlias("f"), Options.withDescription("Attach a file (PDF, image). Can be repeated."), Options.repeated);
|
|
22
|
+
// ── Positional ───────────────────────────────────────────
|
|
23
|
+
export const prompt = Args.text({ name: "prompt" }).pipe(Args.withDescription("Initial prompt to send"), Args.optional);
|
|
24
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `helios replay <session-id>` — read-only playback of a session's conversation.
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "@effect/cli";
|
|
5
|
+
export declare const replay: Command.Command<"replay", never, never, {
|
|
6
|
+
readonly sessionId: string;
|
|
7
|
+
readonly raw: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../src/cli/replay.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAWrD,eAAO,MAAM,MAAM;;;EAmElB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `helios replay <session-id>` — read-only playback of a session's conversation.
|
|
3
|
+
*/
|
|
4
|
+
import { Effect } from "effect";
|
|
5
|
+
import { Command, Args, Options } from "@effect/cli";
|
|
6
|
+
const sessionId = Args.text({ name: "session-id" }).pipe(Args.withDescription("Session ID to replay (use 'helios sessions' to find IDs)"));
|
|
7
|
+
const raw = Options.boolean("raw").pipe(Options.withDescription("Output raw text without formatting"), Options.withDefault(false));
|
|
8
|
+
export const replay = Command.make("replay", { sessionId, raw }, ({ sessionId, raw }) => Effect.promise(async () => {
|
|
9
|
+
const { SessionStore } = await import("../store/session-store.js");
|
|
10
|
+
const store = new SessionStore(process.env.AGENTHUB_AGENT ?? "");
|
|
11
|
+
const session = store.getSession(sessionId);
|
|
12
|
+
if (!session) {
|
|
13
|
+
console.error(`Session "${sessionId}" not found. Use 'helios sessions' to list sessions.`);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const messages = store.getMessages(sessionId, 10000);
|
|
17
|
+
if (messages.length === 0) {
|
|
18
|
+
console.log("Session has no messages.");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const date = new Date(session.createdAt).toLocaleString();
|
|
22
|
+
const provider = session.providerId;
|
|
23
|
+
if (!raw) {
|
|
24
|
+
console.log(`\x1b[1m── Session ${sessionId} ──\x1b[0m`);
|
|
25
|
+
console.log(`Provider: ${provider} | Started: ${date} | Messages: ${messages.length}\n`);
|
|
26
|
+
}
|
|
27
|
+
for (const msg of messages) {
|
|
28
|
+
if (raw) {
|
|
29
|
+
console.log(`[${msg.role}] ${msg.content}`);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const time = new Date(msg.timestamp).toLocaleTimeString();
|
|
33
|
+
switch (msg.role) {
|
|
34
|
+
case "user":
|
|
35
|
+
console.log(`\x1b[33m┌─ User \x1b[2m${time}\x1b[0m`);
|
|
36
|
+
console.log(`\x1b[33m│\x1b[0m ${msg.content.split("\n").join("\n\x1b[33m│\x1b[0m ")}`);
|
|
37
|
+
console.log(`\x1b[33m└\x1b[0m`);
|
|
38
|
+
break;
|
|
39
|
+
case "assistant":
|
|
40
|
+
console.log(`\x1b[36m┌─ Helios \x1b[2m${time}\x1b[0m`);
|
|
41
|
+
// Truncate very long assistant messages for readability
|
|
42
|
+
const content = msg.content.length > 2000
|
|
43
|
+
? msg.content.slice(0, 2000) + `\n... (${msg.content.length - 2000} chars truncated)`
|
|
44
|
+
: msg.content;
|
|
45
|
+
console.log(`\x1b[36m│\x1b[0m ${content.split("\n").join("\n\x1b[36m│\x1b[0m ")}`);
|
|
46
|
+
console.log(`\x1b[36m└\x1b[0m`);
|
|
47
|
+
break;
|
|
48
|
+
case "tool":
|
|
49
|
+
console.log(`\x1b[2m ⚙ tool ${time}\x1b[0m`);
|
|
50
|
+
const preview = msg.content.length > 200
|
|
51
|
+
? msg.content.slice(0, 200) + "..."
|
|
52
|
+
: msg.content;
|
|
53
|
+
console.log(`\x1b[2m ${preview.split("\n").join("\n ")}\x1b[0m`);
|
|
54
|
+
break;
|
|
55
|
+
case "system":
|
|
56
|
+
console.log(`\x1b[35m ◈ system: ${msg.content}\x1b[0m`);
|
|
57
|
+
break;
|
|
58
|
+
default:
|
|
59
|
+
console.log(`\x1b[31m ✗ ${msg.role}: ${msg.content}\x1b[0m`);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
console.log();
|
|
63
|
+
}
|
|
64
|
+
}));
|
|
65
|
+
//# sourceMappingURL=replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/cli/replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `helios report [session-id]` — generate an experiment writeup from session data.
|
|
3
|
+
* Outputs markdown to stdout (pipeable: `helios report > results.md`)
|
|
4
|
+
*/
|
|
5
|
+
import { Option } from "effect";
|
|
6
|
+
import { Command } from "@effect/cli";
|
|
7
|
+
export declare const report: Command.Command<"report", never, never, {
|
|
8
|
+
readonly sessionId: Option.Option<string>;
|
|
9
|
+
readonly provider: Option.Option<"claude" | "openai">;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/cli/report.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAarD,eAAO,MAAM,MAAM;;;EAyElB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `helios report [session-id]` — generate an experiment writeup from session data.
|
|
3
|
+
* Outputs markdown to stdout (pipeable: `helios report > results.md`)
|
|
4
|
+
*/
|
|
5
|
+
import { Effect, Option } from "effect";
|
|
6
|
+
import { Command, Args, Options } from "@effect/cli";
|
|
7
|
+
const sessionId = Args.text({ name: "session-id" }).pipe(Args.withDescription("Session ID to report on (default: most recent)"), Args.optional);
|
|
8
|
+
const provider = Options.choice("provider", ["claude", "openai"]).pipe(Options.withAlias("P"), Options.withDescription("Provider to use for generating the writeup"), Options.optional);
|
|
9
|
+
export const report = Command.make("report", { sessionId, provider }, ({ sessionId: sessionIdOpt, provider: providerOpt }) => Effect.promise(async () => {
|
|
10
|
+
const { SessionStore } = await import("../store/session-store.js");
|
|
11
|
+
const { createRuntime } = await import("../init.js");
|
|
12
|
+
const { buildWriteupSystemPrompt } = await import("../tools/writeup.js");
|
|
13
|
+
const agentId = process.env.AGENTHUB_AGENT ?? "";
|
|
14
|
+
const store = new SessionStore(agentId);
|
|
15
|
+
// Resolve session
|
|
16
|
+
const targetId = Option.getOrUndefined(sessionIdOpt);
|
|
17
|
+
let resolvedId;
|
|
18
|
+
if (targetId) {
|
|
19
|
+
const session = store.getSession(targetId);
|
|
20
|
+
if (!session) {
|
|
21
|
+
process.stderr.write(`Session "${targetId}" not found.\n`);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
resolvedId = targetId;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const sessions = store.listSessions(1);
|
|
28
|
+
if (sessions.length === 0) {
|
|
29
|
+
process.stderr.write("No sessions found.\n");
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
resolvedId = sessions[0].id;
|
|
33
|
+
process.stderr.write(`Using most recent session: ${resolvedId}\n`);
|
|
34
|
+
}
|
|
35
|
+
// Gather session transcript
|
|
36
|
+
const messages = store.getMessages(resolvedId, 10000);
|
|
37
|
+
if (messages.length === 0) {
|
|
38
|
+
process.stderr.write("Session has no messages.\n");
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
const transcript = messages
|
|
42
|
+
.map((m) => `[${m.role}] ${m.content}`)
|
|
43
|
+
.join("\n\n");
|
|
44
|
+
// Create a runtime to get a provider for the writeup
|
|
45
|
+
const providerName = Option.getOrUndefined(providerOpt);
|
|
46
|
+
const runtime = await createRuntime({ provider: providerName });
|
|
47
|
+
const activeProvider = runtime.orchestrator.currentProvider;
|
|
48
|
+
if (!activeProvider) {
|
|
49
|
+
process.stderr.write("No active provider. Authenticate first with 'helios auth login'.\n");
|
|
50
|
+
runtime.cleanup();
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
process.stderr.write("Generating report...\n");
|
|
54
|
+
const session = await activeProvider.createSession({
|
|
55
|
+
systemPrompt: buildWriteupSystemPrompt({ transcript: true }),
|
|
56
|
+
});
|
|
57
|
+
try {
|
|
58
|
+
for await (const event of activeProvider.send(session, transcript, [])) {
|
|
59
|
+
if (event.type === "text" && event.delta) {
|
|
60
|
+
process.stdout.write(event.delta);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
process.stdout.write("\n");
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
await activeProvider.closeSession(session).catch(() => { });
|
|
67
|
+
runtime.cleanup();
|
|
68
|
+
}
|
|
69
|
+
}));
|
|
70
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/cli/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default command — launches the interactive TUI or runs in print mode.
|
|
3
|
+
*/
|
|
4
|
+
import { Effect, Option } from "effect";
|
|
5
|
+
export interface RunOptions {
|
|
6
|
+
provider: Option.Option<string>;
|
|
7
|
+
claudeMode: Option.Option<string>;
|
|
8
|
+
model: Option.Option<string>;
|
|
9
|
+
continueSession: boolean;
|
|
10
|
+
resumeSession: Option.Option<string>;
|
|
11
|
+
print: boolean;
|
|
12
|
+
headless: boolean;
|
|
13
|
+
files: string[];
|
|
14
|
+
prompt: Option.Option<string>;
|
|
15
|
+
}
|
|
16
|
+
export declare function run(opts: RunOptions): Effect.Effect<void>;
|
|
17
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGxC,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAuBzD"}
|
package/dist/cli/run.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default command — launches the interactive TUI or runs in print mode.
|
|
3
|
+
*/
|
|
4
|
+
import { Effect, Option } from "effect";
|
|
5
|
+
export function run(opts) {
|
|
6
|
+
return Effect.gen(function* () {
|
|
7
|
+
const providerArg = Option.getOrUndefined(opts.provider);
|
|
8
|
+
const claudeModeArg = Option.getOrUndefined(opts.claudeMode);
|
|
9
|
+
const modelArg = Option.getOrUndefined(opts.model);
|
|
10
|
+
const resumeId = Option.getOrUndefined(opts.resumeSession);
|
|
11
|
+
const promptText = Option.getOrUndefined(opts.prompt);
|
|
12
|
+
if (opts.print) {
|
|
13
|
+
yield* printMode({ provider: providerArg, claudeMode: claudeModeArg, model: modelArg, prompt: promptText, files: opts.files });
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
yield* tuiMode({
|
|
17
|
+
provider: providerArg,
|
|
18
|
+
claudeMode: claudeModeArg,
|
|
19
|
+
model: modelArg,
|
|
20
|
+
headless: opts.headless,
|
|
21
|
+
continueSession: opts.continueSession,
|
|
22
|
+
resumeSessionId: resumeId,
|
|
23
|
+
prompt: promptText,
|
|
24
|
+
files: opts.files,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// ── File loading ────────────────────────────────────────
|
|
30
|
+
const MIME_TYPES = {
|
|
31
|
+
".pdf": "application/pdf",
|
|
32
|
+
".png": "image/png",
|
|
33
|
+
".jpg": "image/jpeg",
|
|
34
|
+
".jpeg": "image/jpeg",
|
|
35
|
+
".gif": "image/gif",
|
|
36
|
+
".webp": "image/webp",
|
|
37
|
+
};
|
|
38
|
+
const MAX_FILE_SIZE = 20 * 1024 * 1024; // 20MB
|
|
39
|
+
async function loadAttachments(paths) {
|
|
40
|
+
if (paths.length === 0)
|
|
41
|
+
return [];
|
|
42
|
+
const { readFile, stat } = await import("node:fs/promises");
|
|
43
|
+
const { extname, basename } = await import("node:path");
|
|
44
|
+
return Promise.all(paths.map(async (filePath) => {
|
|
45
|
+
const ext = extname(filePath).toLowerCase();
|
|
46
|
+
const mediaType = MIME_TYPES[ext];
|
|
47
|
+
if (!mediaType) {
|
|
48
|
+
throw new Error(`Unsupported file type: ${ext} (supported: ${Object.keys(MIME_TYPES).join(", ")})`);
|
|
49
|
+
}
|
|
50
|
+
const info = await stat(filePath);
|
|
51
|
+
if (info.size > MAX_FILE_SIZE) {
|
|
52
|
+
throw new Error(`File too large: ${basename(filePath)} (${(info.size / 1024 / 1024).toFixed(0)}MB, max ${MAX_FILE_SIZE / 1024 / 1024}MB)`);
|
|
53
|
+
}
|
|
54
|
+
const data = await readFile(filePath);
|
|
55
|
+
return {
|
|
56
|
+
filename: basename(filePath),
|
|
57
|
+
mediaType,
|
|
58
|
+
data: data.toString("base64"),
|
|
59
|
+
};
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
function printMode(opts) {
|
|
63
|
+
return Effect.promise(async () => {
|
|
64
|
+
if (!opts.prompt) {
|
|
65
|
+
// Read from stdin if no prompt argument
|
|
66
|
+
const chunks = [];
|
|
67
|
+
for await (const chunk of process.stdin) {
|
|
68
|
+
chunks.push(chunk);
|
|
69
|
+
}
|
|
70
|
+
opts.prompt = Buffer.concat(chunks).toString("utf-8").trim();
|
|
71
|
+
}
|
|
72
|
+
if (!opts.prompt) {
|
|
73
|
+
process.stderr.write("Error: no prompt provided. Pass a prompt as an argument or pipe via stdin.\n");
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
const attachments = await loadAttachments(opts.files);
|
|
77
|
+
const { createRuntime } = await import("../init.js");
|
|
78
|
+
const runtime = await createRuntime({ provider: opts.provider, claudeMode: opts.claudeMode });
|
|
79
|
+
if (opts.model) {
|
|
80
|
+
await runtime.orchestrator.setModel(opts.model);
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
for await (const event of runtime.orchestrator.send(opts.prompt, attachments.length > 0 ? attachments : undefined)) {
|
|
84
|
+
if (event.type === "text" && event.delta) {
|
|
85
|
+
process.stdout.write(event.delta);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
process.stdout.write("\n");
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
runtime.cleanup();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function tuiMode(opts) {
|
|
96
|
+
return Effect.promise(async () => {
|
|
97
|
+
const initialPrompt = opts.prompt;
|
|
98
|
+
const attachments = await loadAttachments(opts.files);
|
|
99
|
+
// Dynamic imports to avoid pulling React into print mode
|
|
100
|
+
const { withFullScreen } = await import("fullscreen-ink");
|
|
101
|
+
const { App } = await import("../app.js");
|
|
102
|
+
const { createMouseFilter } = await import("../ui/mouse-filter.js");
|
|
103
|
+
const { createElement } = await import("react");
|
|
104
|
+
const { filteredStdin, mouseEmitter } = createMouseFilter(process.stdin);
|
|
105
|
+
const { start, waitUntilExit } = withFullScreen(createElement(App, {
|
|
106
|
+
defaultProvider: opts.provider,
|
|
107
|
+
claudeMode: opts.claudeMode,
|
|
108
|
+
mouseEmitter: opts.headless ? undefined : mouseEmitter,
|
|
109
|
+
headless: opts.headless,
|
|
110
|
+
initialPrompt,
|
|
111
|
+
initialAttachments: attachments.length > 0 ? attachments : undefined,
|
|
112
|
+
resumeSessionId: opts.resumeSessionId,
|
|
113
|
+
continueSession: opts.continueSession,
|
|
114
|
+
model: opts.model,
|
|
115
|
+
}), { exitOnCtrlC: false, stdin: filteredStdin });
|
|
116
|
+
await start();
|
|
117
|
+
await waitUntilExit();
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `helios search "query"` — full-text search across all session histories.
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "@effect/cli";
|
|
5
|
+
export declare const search: Command.Command<"search", never, never, {
|
|
6
|
+
readonly query: string;
|
|
7
|
+
readonly limit: number;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAYrD,eAAO,MAAM,MAAM;;;EA8DlB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `helios search "query"` — full-text search across all session histories.
|
|
3
|
+
*/
|
|
4
|
+
import { Effect } from "effect";
|
|
5
|
+
import { Command, Args, Options } from "@effect/cli";
|
|
6
|
+
const query = Args.text({ name: "query" }).pipe(Args.withDescription("Text to search for across all sessions"));
|
|
7
|
+
const limit = Options.integer("limit").pipe(Options.withAlias("n"), Options.withDescription("Max results to show"), Options.withDefault(20));
|
|
8
|
+
export const search = Command.make("search", { query, limit }, ({ query, limit }) => Effect.promise(async () => {
|
|
9
|
+
const { getDb } = await import("../store/database.js");
|
|
10
|
+
const { truncate } = await import("../ui/format.js");
|
|
11
|
+
const db = getDb();
|
|
12
|
+
const agentId = process.env.AGENTHUB_AGENT ?? "";
|
|
13
|
+
// Search messages with LIKE (SQLite doesn't have full-text by default)
|
|
14
|
+
const rows = db.prepare(`SELECT m.session_id, m.role, m.content, m.timestamp, s.provider
|
|
15
|
+
FROM messages m
|
|
16
|
+
JOIN sessions s ON s.id = m.session_id
|
|
17
|
+
WHERE s.agent_id = ? AND m.content LIKE ? ESCAPE '\'
|
|
18
|
+
ORDER BY m.timestamp DESC
|
|
19
|
+
LIMIT ?`).all(agentId, `%${query.replace(/[%_]/g, "\\$&")}%`, limit);
|
|
20
|
+
if (rows.length === 0) {
|
|
21
|
+
console.log(`No results for "${query}".`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
console.log(`Found ${rows.length} result${rows.length > 1 ? "s" : ""} for "${query}":\n`);
|
|
25
|
+
for (const row of rows) {
|
|
26
|
+
const time = new Date(row.timestamp).toLocaleString();
|
|
27
|
+
const roleColor = row.role === "user" ? "\x1b[33m" : row.role === "assistant" ? "\x1b[36m" : "\x1b[2m";
|
|
28
|
+
// Find the query match in context
|
|
29
|
+
const idx = row.content.toLowerCase().indexOf(query.toLowerCase());
|
|
30
|
+
const start = Math.max(0, idx - 60);
|
|
31
|
+
const end = Math.min(row.content.length, idx + query.length + 60);
|
|
32
|
+
let snippet = row.content.slice(start, end).replace(/\n/g, " ");
|
|
33
|
+
if (start > 0)
|
|
34
|
+
snippet = "..." + snippet;
|
|
35
|
+
if (end < row.content.length)
|
|
36
|
+
snippet = snippet + "...";
|
|
37
|
+
// Highlight the match
|
|
38
|
+
const matchIdx = snippet.toLowerCase().indexOf(query.toLowerCase());
|
|
39
|
+
if (matchIdx >= 0) {
|
|
40
|
+
snippet =
|
|
41
|
+
snippet.slice(0, matchIdx) +
|
|
42
|
+
"\x1b[43m\x1b[30m" +
|
|
43
|
+
snippet.slice(matchIdx, matchIdx + query.length) +
|
|
44
|
+
"\x1b[0m" +
|
|
45
|
+
snippet.slice(matchIdx + query.length);
|
|
46
|
+
}
|
|
47
|
+
console.log(`${roleColor}${row.role}\x1b[0m \x1b[2m${time} session:${row.session_id.slice(0, 8)}\x1b[0m`);
|
|
48
|
+
console.log(` ${snippet}`);
|
|
49
|
+
console.log();
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/cli/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAW,MAAM,aAAa,CAAC;AAQ/C,eAAO,MAAM,QAAQ;;EA4CpB,CAAC"}
|