@spark-strategic/helix-core 0.1.3 → 0.1.5

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.
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `helix-core autostart install|uninstall|status` — make the connector daemon
3
+ * come up at machine boot, before any interactive login, so the agent is online
4
+ * even when nobody is logged in.
5
+ *
6
+ * The boot launcher just runs `helix-core start`, so it reuses the exact same
7
+ * detached-daemon + pidfile machinery as a manual start. That's deliberate: the
8
+ * boot-started daemon is then indistinguishable from a hand-started one, so
9
+ * `helix-core status | restart | stop` all operate on it normally.
10
+ *
11
+ * Platform strategy:
12
+ * Windows — a Scheduled Task with an `AtStartup` trigger, registered with
13
+ * LogonType **S4U** (service-for-user). S4U runs the task AS THE INSTALLING
14
+ * USER without storing a password and without requiring an interactive
15
+ * session, so: (a) it fires at boot before login, and (b) it runs under the
16
+ * user's identity — `os.homedir()` still resolves to the user's profile
17
+ * (same `~/.helix`), and the user can `stop`/`restart` it without elevation.
18
+ * Registering an AtStartup/S4U task requires an ELEVATED shell; we detect the
19
+ * access-denied case and say so.
20
+ * macOS / Linux — printed, copy-pasteable launchd / systemd instructions
21
+ * rather than a half-working auto-writer, since both need root or per-distro
22
+ * specifics to run truly pre-login.
23
+ */
24
+ import type { DaemonFlags } from './daemon';
25
+ export type AutostartAction = 'install' | 'uninstall' | 'status';
26
+ /** `helix-core autostart <action>` handler. */
27
+ export declare function runAutostart(action: AutostartAction, flags: DaemonFlags): void;
28
+ //# sourceMappingURL=autostart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autostart.d.ts","sourceRoot":"","sources":["../src/autostart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI5C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAgLjE,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAO9E"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ /**
3
+ * `helix-core autostart install|uninstall|status` — make the connector daemon
4
+ * come up at machine boot, before any interactive login, so the agent is online
5
+ * even when nobody is logged in.
6
+ *
7
+ * The boot launcher just runs `helix-core start`, so it reuses the exact same
8
+ * detached-daemon + pidfile machinery as a manual start. That's deliberate: the
9
+ * boot-started daemon is then indistinguishable from a hand-started one, so
10
+ * `helix-core status | restart | stop` all operate on it normally.
11
+ *
12
+ * Platform strategy:
13
+ * Windows — a Scheduled Task with an `AtStartup` trigger, registered with
14
+ * LogonType **S4U** (service-for-user). S4U runs the task AS THE INSTALLING
15
+ * USER without storing a password and without requiring an interactive
16
+ * session, so: (a) it fires at boot before login, and (b) it runs under the
17
+ * user's identity — `os.homedir()` still resolves to the user's profile
18
+ * (same `~/.helix`), and the user can `stop`/`restart` it without elevation.
19
+ * Registering an AtStartup/S4U task requires an ELEVATED shell; we detect the
20
+ * access-denied case and say so.
21
+ * macOS / Linux — printed, copy-pasteable launchd / systemd instructions
22
+ * rather than a half-working auto-writer, since both need root or per-distro
23
+ * specifics to run truly pre-login.
24
+ */
25
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ var desc = Object.getOwnPropertyDescriptor(m, k);
28
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
29
+ desc = { enumerable: true, get: function() { return m[k]; } };
30
+ }
31
+ Object.defineProperty(o, k2, desc);
32
+ }) : (function(o, m, k, k2) {
33
+ if (k2 === undefined) k2 = k;
34
+ o[k2] = m[k];
35
+ }));
36
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
37
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
38
+ }) : function(o, v) {
39
+ o["default"] = v;
40
+ });
41
+ var __importStar = (this && this.__importStar) || (function () {
42
+ var ownKeys = function(o) {
43
+ ownKeys = Object.getOwnPropertyNames || function (o) {
44
+ var ar = [];
45
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
46
+ return ar;
47
+ };
48
+ return ownKeys(o);
49
+ };
50
+ return function (mod) {
51
+ if (mod && mod.__esModule) return mod;
52
+ var result = {};
53
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
54
+ __setModuleDefault(result, mod);
55
+ return result;
56
+ };
57
+ })();
58
+ Object.defineProperty(exports, "__esModule", { value: true });
59
+ exports.runAutostart = runAutostart;
60
+ const child_process_1 = require("child_process");
61
+ const fs = __importStar(require("fs"));
62
+ const os = __importStar(require("os"));
63
+ const path = __importStar(require("path"));
64
+ const TASK_NAME = 'HelixCoreConnector';
65
+ /** Absolute path to this CLI's entrypoint, so the boot task re-invokes the same
66
+ * installed build regardless of what's on PATH at boot. */
67
+ function cliEntrypoint() {
68
+ return process.argv[1];
69
+ }
70
+ /** Build the `start` argument list the boot launcher runs. Mirrors what the
71
+ * daemon forwards, so a boot-started connector matches a manual one. */
72
+ function startArgs(flags) {
73
+ const args = ['start', '--adapter', flags.adapter?.trim() || 'openclaw'];
74
+ if (flags.agent?.trim())
75
+ args.push('--agent', flags.agent.trim());
76
+ if (flags.url?.trim())
77
+ args.push('--url', flags.url.trim());
78
+ return args;
79
+ }
80
+ /** Run a PowerShell script (written to a temp .ps1 to avoid inline-quoting hell)
81
+ * and return its result. */
82
+ function runPowerShell(script) {
83
+ const file = path.join(os.tmpdir(), `helix-core-autostart-${process.pid}.ps1`);
84
+ fs.writeFileSync(file, script, 'utf-8');
85
+ try {
86
+ const res = (0, child_process_1.spawnSync)('powershell', ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', file], { encoding: 'utf-8' });
87
+ if (res.error)
88
+ return { ok: false, stdout: '', stderr: String(res.error.message ?? res.error) };
89
+ return { ok: res.status === 0, stdout: (res.stdout ?? '').trim(), stderr: (res.stderr ?? '').trim() };
90
+ }
91
+ finally {
92
+ try {
93
+ fs.unlinkSync(file);
94
+ }
95
+ catch { /* best effort */ }
96
+ }
97
+ }
98
+ /** Escape a string for embedding inside a PowerShell single-quoted literal. */
99
+ function psSingleQuote(s) {
100
+ return s.replace(/'/g, "''");
101
+ }
102
+ function installWindows(flags) {
103
+ const log = (m) => console.log(`[helix-core] ${m}`);
104
+ const node = process.execPath;
105
+ const cli = cliEntrypoint();
106
+ // The task action runs: "<node>" "<cli>" start --adapter openclaw ...
107
+ // Paths are wrapped in double quotes (literal inside the PS single-quoted
108
+ // -Argument string) so spaces in the profile path don't split the args.
109
+ const argument = `"${cli}" ${startArgs(flags).join(' ')}`;
110
+ const script = `
111
+ $ErrorActionPreference = 'Stop'
112
+ $action = New-ScheduledTaskAction -Execute '${psSingleQuote(node)}' -Argument '${psSingleQuote(argument)}'
113
+ $trigger = New-ScheduledTaskTrigger -AtStartup
114
+ $principal = New-ScheduledTaskPrincipal -UserId "$env:USERDOMAIN\\$env:USERNAME" -LogonType S4U -RunLevel Limited
115
+ $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable
116
+ Register-ScheduledTask -TaskName '${TASK_NAME}' -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Force -Description 'Helix Core personal-agent connector — auto-start at boot.' | Out-Null
117
+ Write-Output 'registered'
118
+ `;
119
+ const res = runPowerShell(script);
120
+ if (res.ok) {
121
+ log(`installed boot auto-start (Scheduled Task "${TASK_NAME}").`);
122
+ log('the connector will start at every boot, before login, running as you.');
123
+ log('note: it only produces replies while the OpenClaw gateway is also running — make sure OpenClaw itself auto-starts too.');
124
+ log(`remove it later with: helix-core autostart uninstall`);
125
+ return;
126
+ }
127
+ const denied = /access is denied|denied|elevat|administrat/i.test(`${res.stderr} ${res.stdout}`);
128
+ if (denied) {
129
+ throw new Error('registering a boot task requires an elevated terminal. Re-run in an Administrator PowerShell/Command Prompt:\n' +
130
+ ' helix-core autostart install');
131
+ }
132
+ throw new Error(`failed to register the boot task: ${res.stderr || res.stdout || 'unknown error'}`);
133
+ }
134
+ function uninstallWindows() {
135
+ const log = (m) => console.log(`[helix-core] ${m}`);
136
+ const res = runPowerShell(`$ErrorActionPreference='SilentlyContinue'
137
+ if (Get-ScheduledTask -TaskName '${TASK_NAME}' -ErrorAction SilentlyContinue) {
138
+ Unregister-ScheduledTask -TaskName '${TASK_NAME}' -Confirm:$false
139
+ Write-Output 'removed'
140
+ } else { Write-Output 'absent' }`);
141
+ if (res.stdout.includes('absent')) {
142
+ log('no boot auto-start was installed.');
143
+ return;
144
+ }
145
+ if (res.ok || res.stdout.includes('removed')) {
146
+ log(`removed boot auto-start (Scheduled Task "${TASK_NAME}").`);
147
+ log('the currently running connector is left untouched — use `helix-core stop` to end it now.');
148
+ return;
149
+ }
150
+ const denied = /access is denied|denied|elevat|administrat/i.test(`${res.stderr} ${res.stdout}`);
151
+ if (denied) {
152
+ throw new Error('removing the boot task requires an elevated terminal. Re-run in an Administrator shell:\n helix-core autostart uninstall');
153
+ }
154
+ throw new Error(`failed to remove the boot task: ${res.stderr || res.stdout || 'unknown error'}`);
155
+ }
156
+ function statusWindows() {
157
+ const log = (m) => console.log(`[helix-core] ${m}`);
158
+ const res = runPowerShell(`$t = Get-ScheduledTask -TaskName '${TASK_NAME}' -ErrorAction SilentlyContinue
159
+ if ($t) { Write-Output ("installed:" + $t.State) } else { Write-Output 'absent' }`);
160
+ if (res.stdout.startsWith('installed')) {
161
+ const state = res.stdout.split(':')[1] || 'unknown';
162
+ log(`boot auto-start is INSTALLED (Scheduled Task "${TASK_NAME}", state: ${state}).`);
163
+ log('this only controls launch-at-boot; use `helix-core status` to see if the connector is running right now.');
164
+ }
165
+ else {
166
+ log('boot auto-start is NOT installed. Install it with: helix-core autostart install');
167
+ }
168
+ }
169
+ /** Print copy-pasteable manual setup for non-Windows hosts. */
170
+ function printUnixInstructions(action, flags) {
171
+ const log = (m) => console.log(`[helix-core] ${m}`);
172
+ const node = process.execPath;
173
+ const cli = cliEntrypoint();
174
+ const cmd = `${node} ${cli} ${startArgs(flags).join(' ')}`;
175
+ if (action === 'uninstall') {
176
+ log('to remove a boot auto-start you set up manually:');
177
+ if (process.platform === 'darwin') {
178
+ console.log(' sudo launchctl bootout system /Library/LaunchDaemons/ai.spark-strategic.helix-core.plist');
179
+ console.log(' sudo rm /Library/LaunchDaemons/ai.spark-strategic.helix-core.plist');
180
+ }
181
+ else {
182
+ console.log(' sudo systemctl disable --now helix-core.service');
183
+ console.log(' sudo rm /etc/systemd/system/helix-core.service');
184
+ }
185
+ return;
186
+ }
187
+ if (action === 'status') {
188
+ log('check your manually-installed boot service:');
189
+ console.log(process.platform === 'darwin'
190
+ ? ' sudo launchctl print system/ai.spark-strategic.helix-core'
191
+ : ' systemctl status helix-core.service');
192
+ return;
193
+ }
194
+ log(`automated boot install isn't wired for ${process.platform} yet — here's a ready-to-use unit.`);
195
+ if (process.platform === 'darwin') {
196
+ console.log('Save as /Library/LaunchDaemons/ai.spark-strategic.helix-core.plist (runs at boot, before login):\n');
197
+ console.log(`<?xml version="1.0" encoding="UTF-8"?>
198
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
199
+ <plist version="1.0"><dict>
200
+ <key>Label</key><string>ai.spark-strategic.helix-core</string>
201
+ <key>ProgramArguments</key><array>
202
+ <string>${node}</string><string>${cli}</string>${startArgs(flags).map((a) => `<string>${a}</string>`).join('')}
203
+ </array>
204
+ <key>RunAtLoad</key><true/>
205
+ <key>KeepAlive</key><true/>
206
+ <key>UserName</key><string>${os.userInfo().username}</string>
207
+ </dict></plist>`);
208
+ console.log('\nThen: sudo launchctl bootstrap system /Library/LaunchDaemons/ai.spark-strategic.helix-core.plist');
209
+ }
210
+ else {
211
+ console.log('Save as /etc/systemd/system/helix-core.service (runs at boot, before login):\n');
212
+ console.log(`[Unit]
213
+ Description=Helix Core personal-agent connector
214
+ After=network-online.target
215
+ Wants=network-online.target
216
+
217
+ [Service]
218
+ Type=forking
219
+ User=${os.userInfo().username}
220
+ ExecStart=${cmd}
221
+ ExecStop=${node} ${cli} stop
222
+ Restart=on-failure
223
+
224
+ [Install]
225
+ WantedBy=multi-user.target`);
226
+ console.log('\nThen: sudo systemctl daemon-reload && sudo systemctl enable --now helix-core.service');
227
+ }
228
+ log('note: the connector only produces replies while the OpenClaw gateway is also running — ensure OpenClaw auto-starts too.');
229
+ }
230
+ /** `helix-core autostart <action>` handler. */
231
+ function runAutostart(action, flags) {
232
+ if (process.platform === 'win32') {
233
+ if (action === 'install')
234
+ return installWindows(flags);
235
+ if (action === 'uninstall')
236
+ return uninstallWindows();
237
+ return statusWindows();
238
+ }
239
+ printUnixInstructions(action, flags);
240
+ }
241
+ //# sourceMappingURL=autostart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autostart.js","sourceRoot":"","sources":["../src/autostart.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -13,6 +13,9 @@ const connector_1 = require("./connector");
13
13
  const adapter_1 = require("./adapter");
14
14
  const openclaw_adapter_1 = require("./openclaw-adapter");
15
15
  const init_1 = require("./init");
16
+ const daemon_1 = require("./daemon");
17
+ const update_1 = require("./update");
18
+ const autostart_1 = require("./autostart");
16
19
  const version_1 = require("./version");
17
20
  /** Minimal flag parser: `--key value`, `--key=value`, and boolean `--flag`. */
18
21
  function parseArgs(argv) {
@@ -70,6 +73,14 @@ function selectAdapter(name, flags) {
70
73
  throw new Error(`Unknown adapter "${name}". Built-in: echo, openclaw. For a custom agent, embed the library and pass your own AgentAdapter.`);
71
74
  }
72
75
  }
76
+ /** The subset of flags the background daemon forwards to its `connect` child. */
77
+ function daemonFlagsFrom(flags) {
78
+ return {
79
+ adapter: typeof flags.adapter === 'string' ? flags.adapter : undefined,
80
+ agent: typeof flags.agent === 'string' ? flags.agent : undefined,
81
+ url: typeof flags.url === 'string' ? flags.url : undefined,
82
+ };
83
+ }
73
84
  function runConnect(flags) {
74
85
  const config = (0, config_1.resolveConfig)(overridesFromFlags(flags));
75
86
  const adapter = selectAdapter(typeof flags.adapter === 'string' ? flags.adapter : undefined, flags);
@@ -89,9 +100,23 @@ const HELP = `helix-core — connect a personal agent to Helix
89
100
  Setup (one command, from your agent's page in Helix):
90
101
  helix-core init openclaw --token <personal agent token>
91
102
 
92
- That enrolls the agent, prepares the local OpenClaw gateway, and stays connected.
103
+ That enrolls the agent, prepares the local OpenClaw gateway, and brings the
104
+ agent online as a hidden background daemon that survives closing the terminal.
105
+
106
+ Daemon commands:
107
+ helix-core start Start the connector in the background (hidden)
108
+ helix-core stop Stop the background connector
109
+ helix-core restart Restart the background connector
110
+ helix-core status Show whether the connector is running
111
+
112
+ Keeping it online:
113
+ helix-core autostart install Start the connector at boot, before login (survives logout/reboot)
114
+ helix-core autostart uninstall Remove the boot auto-start
115
+ helix-core autostart status Show whether boot auto-start is installed
116
+ helix-core update Update to the latest published version and relaunch the connector
93
117
 
94
118
  Other commands:
119
+ helix-core connect Run the connector in the FOREGROUND (attached; for debugging)
95
120
  helix-core version Print package + protocol version
96
121
  helix-core help Show this help
97
122
 
@@ -99,8 +124,21 @@ Options (init openclaw):
99
124
  --token <token> Personal agent token from Helix (required for first setup)
100
125
  --yes, -y Skip the pre-restart confirmation prompt
101
126
  --no-restart Configure only; don't restart the gateway
102
- --no-connect Configure only; don't stay attached after setup
127
+ --no-connect Configure only; don't start the background daemon
128
+ --foreground After setup, attach in the foreground instead of daemonizing
103
129
  --agent <id> OpenClaw agent id to route turns to (default: main)
130
+
131
+ Options (update):
132
+ --yes, -y Skip the confirmation prompt
133
+ --tag <tag> Install a specific dist-tag or version (default: latest)
134
+
135
+ Options (autostart install):
136
+ --agent <id> OpenClaw agent id the boot-started connector routes to (default: main)
137
+
138
+ Note: on Windows, "autostart install/uninstall" must be run in an elevated
139
+ (Administrator) terminal. On macOS/Linux it prints a ready-to-use launchd/systemd
140
+ unit. The connector only replies while the OpenClaw gateway is also running, so
141
+ make sure OpenClaw itself starts at boot too.
104
142
  `;
105
143
  function main() {
106
144
  const { command, flags } = parseArgs(process.argv.slice(2));
@@ -123,6 +161,62 @@ function main() {
123
161
  process.exit(1);
124
162
  }
125
163
  break;
164
+ case 'start':
165
+ try {
166
+ (0, daemon_1.startDaemon)(daemonFlagsFrom(flags));
167
+ }
168
+ catch (err) {
169
+ console.error(`[helix-core] ${err instanceof Error ? err.message : String(err)}`);
170
+ process.exit(1);
171
+ }
172
+ break;
173
+ case 'stop':
174
+ (0, daemon_1.stopDaemon)();
175
+ break;
176
+ case 'restart':
177
+ (0, daemon_1.restartDaemon)(daemonFlagsFrom(flags)).catch((err) => {
178
+ console.error(`[helix-core] ${err instanceof Error ? err.message : String(err)}`);
179
+ process.exit(1);
180
+ });
181
+ break;
182
+ case 'status': {
183
+ const s = (0, daemon_1.daemonStatus)();
184
+ if (s.running) {
185
+ console.log(`[helix-core] running (pid ${s.pid}).`);
186
+ console.log(`[helix-core] logs: ${(0, daemon_1.logFilePath)()}`);
187
+ }
188
+ else {
189
+ console.log('[helix-core] not running. Start it with: helix-core start');
190
+ }
191
+ break;
192
+ }
193
+ case 'update':
194
+ (0, update_1.runUpdate)({
195
+ yes: flags.yes === true || flags.y === true,
196
+ tag: typeof flags.tag === 'string' ? flags.tag : undefined,
197
+ daemon: daemonFlagsFrom(flags),
198
+ }).catch((err) => {
199
+ console.error(`[helix-core] ${err instanceof Error ? err.message : String(err)}`);
200
+ process.exit(1);
201
+ });
202
+ break;
203
+ case 'autostart': {
204
+ // `autostart <action>` — action is the first positional after the command.
205
+ const action = process.argv.slice(3).find((a) => !a.startsWith('-'));
206
+ if (action !== 'install' && action !== 'uninstall' && action !== 'status') {
207
+ console.error(`[helix-core] unknown autostart action "${action ?? ''}" — supported: install, uninstall, status\n`);
208
+ console.log(HELP);
209
+ process.exit(1);
210
+ }
211
+ try {
212
+ (0, autostart_1.runAutostart)(action, daemonFlagsFrom(flags));
213
+ }
214
+ catch (err) {
215
+ console.error(`[helix-core] ${err instanceof Error ? err.message : String(err)}`);
216
+ process.exit(1);
217
+ }
218
+ break;
219
+ }
126
220
  case 'init': {
127
221
  // `init <target>` — target is the first positional after the command.
128
222
  const target = process.argv.slice(3).find((a) => !a.startsWith('-'));
@@ -136,6 +230,7 @@ function main() {
136
230
  yes: flags.yes === true || flags.y === true,
137
231
  noRestart: flags['no-restart'] === true,
138
232
  noConnect: flags['no-connect'] === true,
233
+ foreground: flags.foreground === true,
139
234
  agent: typeof flags.agent === 'string' ? flags.agent : undefined,
140
235
  url: typeof flags.url === 'string' ? flags.url : undefined,
141
236
  }).catch((err) => {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Background-daemon lifecycle for the connector: `start` / `stop` / `restart` /
3
+ * `status`.
4
+ *
5
+ * Installing the npm package only puts the CLI on PATH; `connect` (and `init`'s
6
+ * attach step) run the connector in the FOREGROUND, tied to the terminal — close
7
+ * the shell and the agent goes offline. This module runs the same `connect` loop
8
+ * as a detached, hidden child process so the agent stays online across terminal
9
+ * and (via a process manager / login item) reboot.
10
+ *
11
+ * Deliberately dependency-free and cross-platform: no pm2/systemd/nssm required.
12
+ * State is two files under ~/.helix:
13
+ * connector.pid — the daemon child's PID (liveness = pidfile + kill(pid,0))
14
+ * connector.log — the child's stdout/stderr (append)
15
+ *
16
+ * Windows note: `detached:true` + `windowsHide:true` gives a hidden, session-
17
+ * independent process; `process.kill(pid, 'SIGTERM')` maps to TerminateProcess
18
+ * (a hard kill — the connector only holds a socket, so no graceful step is lost).
19
+ */
20
+ /** Flags forwarded to the daemonized `connect` run. */
21
+ export interface DaemonFlags {
22
+ adapter?: string;
23
+ agent?: string;
24
+ url?: string;
25
+ }
26
+ export declare function pidFilePath(): string;
27
+ export declare function logFilePath(): string;
28
+ /** Current daemon status: whether it's running and its PID. */
29
+ export declare function daemonStatus(): {
30
+ running: boolean;
31
+ pid: number | null;
32
+ };
33
+ /** Launch the connector as a detached, hidden background process. No-op (with a
34
+ * notice) if one is already running. Validates connector config up front so a
35
+ * misconfigured box fails loudly here instead of via a child that dies silently
36
+ * a moment after detaching. */
37
+ export declare function startDaemon(flags: DaemonFlags): void;
38
+ /** Stop the background daemon. Reports (and cleans up) if nothing is running. */
39
+ export declare function stopDaemon(): void;
40
+ /** Restart: stop the current daemon (waiting for the PID to actually exit so we
41
+ * don't race two connectors on the same slug), then start fresh. */
42
+ export declare function restartDaemon(flags: DaemonFlags): Promise<void>;
43
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAwDD,+DAA+D;AAC/D,wBAAgB,YAAY,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAKvE;AAED;;;gCAGgC;AAChC,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CA2CpD;AAED,iFAAiF;AACjF,wBAAgB,UAAU,IAAI,IAAI,CAejC;AAED;qEACqE;AACrE,wBAAsB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAUrE"}
package/dist/daemon.js ADDED
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ /**
3
+ * Background-daemon lifecycle for the connector: `start` / `stop` / `restart` /
4
+ * `status`.
5
+ *
6
+ * Installing the npm package only puts the CLI on PATH; `connect` (and `init`'s
7
+ * attach step) run the connector in the FOREGROUND, tied to the terminal — close
8
+ * the shell and the agent goes offline. This module runs the same `connect` loop
9
+ * as a detached, hidden child process so the agent stays online across terminal
10
+ * and (via a process manager / login item) reboot.
11
+ *
12
+ * Deliberately dependency-free and cross-platform: no pm2/systemd/nssm required.
13
+ * State is two files under ~/.helix:
14
+ * connector.pid — the daemon child's PID (liveness = pidfile + kill(pid,0))
15
+ * connector.log — the child's stdout/stderr (append)
16
+ *
17
+ * Windows note: `detached:true` + `windowsHide:true` gives a hidden, session-
18
+ * independent process; `process.kill(pid, 'SIGTERM')` maps to TerminateProcess
19
+ * (a hard kill — the connector only holds a socket, so no graceful step is lost).
20
+ */
21
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ var desc = Object.getOwnPropertyDescriptor(m, k);
24
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
25
+ desc = { enumerable: true, get: function() { return m[k]; } };
26
+ }
27
+ Object.defineProperty(o, k2, desc);
28
+ }) : (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ o[k2] = m[k];
31
+ }));
32
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
33
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
34
+ }) : function(o, v) {
35
+ o["default"] = v;
36
+ });
37
+ var __importStar = (this && this.__importStar) || (function () {
38
+ var ownKeys = function(o) {
39
+ ownKeys = Object.getOwnPropertyNames || function (o) {
40
+ var ar = [];
41
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
42
+ return ar;
43
+ };
44
+ return ownKeys(o);
45
+ };
46
+ return function (mod) {
47
+ if (mod && mod.__esModule) return mod;
48
+ var result = {};
49
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
50
+ __setModuleDefault(result, mod);
51
+ return result;
52
+ };
53
+ })();
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.pidFilePath = pidFilePath;
56
+ exports.logFilePath = logFilePath;
57
+ exports.daemonStatus = daemonStatus;
58
+ exports.startDaemon = startDaemon;
59
+ exports.stopDaemon = stopDaemon;
60
+ exports.restartDaemon = restartDaemon;
61
+ const child_process_1 = require("child_process");
62
+ const fs = __importStar(require("fs"));
63
+ const os = __importStar(require("os"));
64
+ const path = __importStar(require("path"));
65
+ const config_1 = require("./config");
66
+ function helixDir() {
67
+ return path.join(os.homedir(), '.helix');
68
+ }
69
+ function pidFilePath() {
70
+ return path.join(helixDir(), 'connector.pid');
71
+ }
72
+ function logFilePath() {
73
+ return path.join(helixDir(), 'connector.log');
74
+ }
75
+ /** Read the daemon PID from the pidfile, or null if absent/garbage. */
76
+ function readPid() {
77
+ try {
78
+ const raw = fs.readFileSync(pidFilePath(), 'utf-8').trim();
79
+ const pid = Number.parseInt(raw, 10);
80
+ return Number.isInteger(pid) && pid > 0 ? pid : null;
81
+ }
82
+ catch {
83
+ return null;
84
+ }
85
+ }
86
+ /** True if a process with this PID is alive. `kill(pid, 0)` throws ESRCH when
87
+ * gone; EPERM means it exists but we can't signal it (still "alive"). */
88
+ function isAlive(pid) {
89
+ try {
90
+ process.kill(pid, 0);
91
+ return true;
92
+ }
93
+ catch (err) {
94
+ return err.code === 'EPERM';
95
+ }
96
+ }
97
+ function removePidFile() {
98
+ try {
99
+ fs.unlinkSync(pidFilePath());
100
+ }
101
+ catch { /* already gone */ }
102
+ }
103
+ /** The path to this CLI's entrypoint, so the daemon child re-invokes the same
104
+ * build (dist/cli.js in a normal install; the ts-node shim in dev). */
105
+ function cliEntrypoint() {
106
+ return process.argv[1];
107
+ }
108
+ /** Default adapter for the daemon: the package exists to bridge OpenClaw, so if
109
+ * the shared config has an `openclaw` block we default there rather than to the
110
+ * `echo` reference adapter (which `connect` defaults to for dev). */
111
+ function defaultAdapter() {
112
+ try {
113
+ const cfgPath = path.join(helixDir(), 'config.json');
114
+ const cfg = JSON.parse(fs.readFileSync(cfgPath, 'utf-8'));
115
+ if (cfg && typeof cfg === 'object' && cfg.openclaw && typeof cfg.openclaw === 'object') {
116
+ return 'openclaw';
117
+ }
118
+ }
119
+ catch { /* fall through */ }
120
+ return 'echo';
121
+ }
122
+ function connectArgs(flags) {
123
+ const adapter = flags.adapter?.trim() || defaultAdapter();
124
+ const args = ['connect', '--adapter', adapter];
125
+ if (flags.agent?.trim())
126
+ args.push('--agent', flags.agent.trim());
127
+ if (flags.url?.trim())
128
+ args.push('--url', flags.url.trim());
129
+ return args;
130
+ }
131
+ /** Current daemon status: whether it's running and its PID. */
132
+ function daemonStatus() {
133
+ const pid = readPid();
134
+ if (pid && isAlive(pid))
135
+ return { running: true, pid };
136
+ if (pid)
137
+ removePidFile(); // stale pidfile — clean it up
138
+ return { running: false, pid: null };
139
+ }
140
+ /** Launch the connector as a detached, hidden background process. No-op (with a
141
+ * notice) if one is already running. Validates connector config up front so a
142
+ * misconfigured box fails loudly here instead of via a child that dies silently
143
+ * a moment after detaching. */
144
+ function startDaemon(flags) {
145
+ const log = (m) => console.log(`[helix-core] ${m}`);
146
+ const existing = daemonStatus();
147
+ if (existing.running) {
148
+ log(`already running (pid ${existing.pid}). Use "helix-core restart" to reload or "helix-core stop" to end it.`);
149
+ return;
150
+ }
151
+ // Fail fast if there's no connector identity — otherwise the detached child
152
+ // would exit immediately and the user would just see "offline" with no clue.
153
+ try {
154
+ (0, config_1.resolveConfig)();
155
+ }
156
+ catch (err) {
157
+ throw new Error(`${err instanceof Error ? err.message : String(err)}\n` +
158
+ 'Run `helix-core init openclaw --token <token>` first to enroll this agent.');
159
+ }
160
+ fs.mkdirSync(helixDir(), { recursive: true });
161
+ const logFd = fs.openSync(logFilePath(), 'a');
162
+ fs.writeSync(logFd, `\n[helix-core] --- daemon started ${new Date().toISOString()} ---\n`);
163
+ const child = (0, child_process_1.spawn)(process.execPath, [cliEntrypoint(), ...connectArgs(flags)], {
164
+ detached: true,
165
+ windowsHide: true,
166
+ stdio: ['ignore', logFd, logFd],
167
+ env: process.env,
168
+ });
169
+ if (typeof child.pid !== 'number') {
170
+ fs.closeSync(logFd);
171
+ throw new Error('failed to spawn the connector daemon process.');
172
+ }
173
+ fs.writeFileSync(pidFilePath(), String(child.pid), 'utf-8');
174
+ child.unref();
175
+ fs.closeSync(logFd); // the child holds its own dup of the fd
176
+ log(`started in background (pid ${child.pid}).`);
177
+ log(`logs: ${logFilePath()}`);
178
+ log('manage with: helix-core status | helix-core restart | helix-core stop');
179
+ }
180
+ /** Stop the background daemon. Reports (and cleans up) if nothing is running. */
181
+ function stopDaemon() {
182
+ const log = (m) => console.log(`[helix-core] ${m}`);
183
+ const pid = readPid();
184
+ if (!pid || !isAlive(pid)) {
185
+ if (pid)
186
+ removePidFile();
187
+ log('not running.');
188
+ return;
189
+ }
190
+ try {
191
+ process.kill(pid, 'SIGTERM');
192
+ }
193
+ catch (err) {
194
+ log(`could not signal pid ${pid}: ${err instanceof Error ? err.message : String(err)}`);
195
+ }
196
+ removePidFile();
197
+ log(`stopped (pid ${pid}).`);
198
+ }
199
+ /** Restart: stop the current daemon (waiting for the PID to actually exit so we
200
+ * don't race two connectors on the same slug), then start fresh. */
201
+ async function restartDaemon(flags) {
202
+ const pid = readPid();
203
+ stopDaemon();
204
+ if (pid) {
205
+ // Give the old process up to ~3s to release the socket before relaunching.
206
+ for (let i = 0; i < 30 && isAlive(pid); i += 1) {
207
+ await new Promise((r) => setTimeout(r, 100));
208
+ }
209
+ }
210
+ startDaemon(flags);
211
+ }
212
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBH,kCAEC;AAED,kCAEC;AAyDD,oCAKC;AAMD,kCA2CC;AAGD,gCAeC;AAID,sCAUC;AAtKD,iDAAsC;AACtC,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,qCAAyC;AASzC,SAAS,QAAQ;IACf,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC;AAED,uEAAuE;AACvE,SAAS,OAAO;IACd,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;0EAC0E;AAC1E,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAQ,GAA6B,CAAC,IAAI,KAAK,OAAO,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC;QAAC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACpE,CAAC;AAED;wEACwE;AACxE,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;sEAEsE;AACtE,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACvF,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,cAAc,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+DAA+D;AAC/D,SAAgB,YAAY;IAC1B,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvD,IAAI,GAAG;QAAE,aAAa,EAAE,CAAC,CAAC,8BAA8B;IACxD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AAED;;;gCAGgC;AAChC,SAAgB,WAAW,CAAC,KAAkB;IAC5C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,GAAG,CAAC,wBAAwB,QAAQ,CAAC,GAAG,uEAAuE,CAAC,CAAC;QACjH,OAAO;IACT,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,IAAI,CAAC;QACH,IAAA,sBAAa,GAAE,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;YACvD,4EAA4E,CAC7E,CAAC;IACJ,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9C,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,qCAAqC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE3F,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;QAC9E,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;QAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IAEH,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAClC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,wCAAwC;IAE7D,GAAG,CAAC,8BAA8B,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjD,GAAG,CAAC,SAAS,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9B,GAAG,CAAC,uEAAuE,CAAC,CAAC;AAC/E,CAAC;AAED,iFAAiF;AACjF,SAAgB,UAAU;IACxB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,GAAG;YAAE,aAAa,EAAE,CAAC;QACzB,GAAG,CAAC,cAAc,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,wBAAwB,GAAG,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,aAAa,EAAE,CAAC;IAChB,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;qEACqE;AAC9D,KAAK,UAAU,aAAa,CAAC,KAAkB;IACpD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,UAAU,EAAE,CAAC;IACb,IAAI,GAAG,EAAE,CAAC;QACR,2EAA2E;QAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,WAAW,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC"}
package/dist/init.d.ts CHANGED
@@ -31,8 +31,10 @@ export interface InitFlags {
31
31
  yes?: boolean;
32
32
  /** Configure only; do not restart the gateway. */
33
33
  noRestart?: boolean;
34
- /** Configure only; don't stay attached after setup. */
34
+ /** Configure only; don't start the background daemon after setup. */
35
35
  noConnect?: boolean;
36
+ /** After setup, attach in the foreground instead of daemonizing (debugging). */
37
+ foreground?: boolean;
36
38
  /** OpenClaw agent id turns should route to (default: main). */
37
39
  agent?: string;
38
40
  /** Advanced: override the agents-api base URL (defaults to the Helix cloud). */
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAgBH,MAAM,WAAW,SAAS;IACxB;6EACyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA4DD;iGACiG;AACjG,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAsFD,0CAA0C;AAC1C,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA0HrE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAiBH,MAAM,WAAW,SAAS;IACxB;6EACyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA4DD;iGACiG;AACjG,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAsFD,0CAA0C;AAC1C,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAkIrE"}
package/dist/init.js CHANGED
@@ -68,6 +68,7 @@ const readline = __importStar(require("readline"));
68
68
  const config_1 = require("./config");
69
69
  const connector_1 = require("./connector");
70
70
  const openclaw_adapter_1 = require("./openclaw-adapter");
71
+ const daemon_1 = require("./daemon");
71
72
  const version_1 = require("./version");
72
73
  const ENDPOINT_PATH = 'gateway.http.endpoints.chatCompletions.enabled';
73
74
  const DEFAULT_AGENT_ID = 'main';
@@ -302,11 +303,13 @@ async function runInitOpenClaw(flags) {
302
303
  log('gateway restarted.');
303
304
  }
304
305
  }
305
- // 4. Attach and stay connected. This makes `init` the ONLY command an operator
306
- // runs — setup and going-live in one shot. Opt out with --no-connect (e.g.
307
- // to run the connector under a process manager separately).
306
+ // 4. Bring the agent online. This makes `init` the ONLY command an operator
307
+ // runs — setup and going-live in one shot. By default we start a hidden
308
+ // background daemon so the agent stays online after the terminal closes;
309
+ // --foreground attaches instead (handy for watching a first connection),
310
+ // and --no-connect skips going live entirely.
308
311
  if (flags.noConnect) {
309
- log('setup complete. Start the agent later with: helix-core connect --adapter openclaw');
312
+ log('setup complete. Bring the agent online later with: helix-core start');
310
313
  return;
311
314
  }
312
315
  let config;
@@ -320,7 +323,12 @@ async function runInitOpenClaw(flags) {
320
323
  log('re-run with your personal agent token to go live: helix-core init openclaw --token <token>');
321
324
  return;
322
325
  }
323
- log('setup complete — bringing the agent online…');
326
+ if (!flags.foreground) {
327
+ log('setup complete — bringing the agent online in the background…');
328
+ (0, daemon_1.startDaemon)({ adapter: 'openclaw', agent: flags.agent, url: flags.url });
329
+ return;
330
+ }
331
+ log('setup complete — bringing the agent online (foreground; Ctrl-C to stop)…');
324
332
  const connector = new connector_1.Connector({
325
333
  config,
326
334
  adapter: new openclaw_adapter_1.OpenClawAdapter({ agentId: flags.agent }),
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `helix-core update` — pull the latest published package and relaunch the
3
+ * running connector on the new build.
4
+ *
5
+ * This is a thin wrapper over `npm install -g <pkg>@<tag>`; the value it adds is
6
+ * being honest about the side effect. Updating the global package replaces the
7
+ * on-disk `dist/` out from under any RUNNING connector daemon, but a live daemon
8
+ * keeps executing the OLD code it already loaded into memory — so the new build
9
+ * isn't actually live until the daemon is restarted. We therefore:
10
+ *
11
+ * 1. warn that the connector (this agent) will briefly go offline for the
12
+ * restart, and confirm before touching anything,
13
+ * 2. run the global install,
14
+ * 3. restart the daemon IFF one was running, so the new build goes live.
15
+ *
16
+ * The OpenClaw gateway itself is never restarted by an update — only the thin
17
+ * connector daemon is. (The one path that bounces the gateway is re-running
18
+ * `init openclaw`, which this command deliberately does not do.)
19
+ */
20
+ import { type DaemonFlags } from './daemon';
21
+ export interface UpdateFlags {
22
+ /** Skip the confirmation prompt (non-interactive). */
23
+ yes?: boolean;
24
+ /** dist-tag or version to install (default: latest). */
25
+ tag?: string;
26
+ /** Forwarded to the daemon restart so the relaunched connector keeps its
27
+ * adapter/agent/url wiring. */
28
+ daemon?: DaemonFlags;
29
+ }
30
+ /** `helix-core update` handler. */
31
+ export declare function runUpdate(flags: UpdateFlags): Promise<void>;
32
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAGzE,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;oCACgC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAuBD,mCAAmC;AACnC,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CjE"}
package/dist/update.js ADDED
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * `helix-core update` — pull the latest published package and relaunch the
4
+ * running connector on the new build.
5
+ *
6
+ * This is a thin wrapper over `npm install -g <pkg>@<tag>`; the value it adds is
7
+ * being honest about the side effect. Updating the global package replaces the
8
+ * on-disk `dist/` out from under any RUNNING connector daemon, but a live daemon
9
+ * keeps executing the OLD code it already loaded into memory — so the new build
10
+ * isn't actually live until the daemon is restarted. We therefore:
11
+ *
12
+ * 1. warn that the connector (this agent) will briefly go offline for the
13
+ * restart, and confirm before touching anything,
14
+ * 2. run the global install,
15
+ * 3. restart the daemon IFF one was running, so the new build goes live.
16
+ *
17
+ * The OpenClaw gateway itself is never restarted by an update — only the thin
18
+ * connector daemon is. (The one path that bounces the gateway is re-running
19
+ * `init openclaw`, which this command deliberately does not do.)
20
+ */
21
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ var desc = Object.getOwnPropertyDescriptor(m, k);
24
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
25
+ desc = { enumerable: true, get: function() { return m[k]; } };
26
+ }
27
+ Object.defineProperty(o, k2, desc);
28
+ }) : (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ o[k2] = m[k];
31
+ }));
32
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
33
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
34
+ }) : function(o, v) {
35
+ o["default"] = v;
36
+ });
37
+ var __importStar = (this && this.__importStar) || (function () {
38
+ var ownKeys = function(o) {
39
+ ownKeys = Object.getOwnPropertyNames || function (o) {
40
+ var ar = [];
41
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
42
+ return ar;
43
+ };
44
+ return ownKeys(o);
45
+ };
46
+ return function (mod) {
47
+ if (mod && mod.__esModule) return mod;
48
+ var result = {};
49
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
50
+ __setModuleDefault(result, mod);
51
+ return result;
52
+ };
53
+ })();
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.runUpdate = runUpdate;
56
+ const child_process_1 = require("child_process");
57
+ const readline = __importStar(require("readline"));
58
+ const daemon_1 = require("./daemon");
59
+ const version_1 = require("./version");
60
+ /** Ask a yes/no question on the TTY. No TTY (piped/CI) → false; pass --yes. */
61
+ function confirm(question) {
62
+ if (!process.stdin.isTTY)
63
+ return Promise.resolve(false);
64
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
65
+ return new Promise((resolve) => {
66
+ rl.question(`${question} [y/N] `, (answer) => {
67
+ rl.close();
68
+ resolve(/^y(es)?$/i.test(answer.trim()));
69
+ });
70
+ });
71
+ }
72
+ /** Run `npm install -g <pkg>@<tag>`, streaming npm's own output to the console
73
+ * so the operator sees the real progress/errors. Returns whether it succeeded. */
74
+ function npmInstallGlobal(spec) {
75
+ // shell:true so Windows resolves `npm.cmd`; the spec is built from our own
76
+ // package name + a validated tag, never raw user input.
77
+ const res = (0, child_process_1.spawnSync)(`npm install -g ${spec}`, { stdio: 'inherit', shell: true });
78
+ return res.status === 0;
79
+ }
80
+ /** `helix-core update` handler. */
81
+ async function runUpdate(flags) {
82
+ const log = (m) => console.log(`[helix-core] ${m}`);
83
+ const info = (0, version_1.packageInfo)();
84
+ // Only allow a simple tag/version token — this ends up in a shell command.
85
+ const rawTag = flags.tag?.trim() || 'latest';
86
+ if (!/^[a-zA-Z0-9.\-^~*]+$/.test(rawTag)) {
87
+ throw new Error(`invalid --tag "${rawTag}". Use a dist-tag (e.g. latest) or a version (e.g. 0.1.4).`);
88
+ }
89
+ const spec = `${info.name}@${rawTag}`;
90
+ const running = (0, daemon_1.daemonStatus)().running;
91
+ log(`current version: ${info.version}. Updating to ${spec}.`);
92
+ if (running) {
93
+ log('the background connector is running; it will be restarted after the update, so this agent will briefly go offline.');
94
+ }
95
+ else {
96
+ log('no background connector is running, so nothing goes offline. Start it afterwards with: helix-core start');
97
+ }
98
+ log('this does NOT restart the OpenClaw gateway (only re-run `init openclaw` does that).');
99
+ const proceed = flags.yes || (await confirm(`Install ${spec}${running ? ' and restart the connector' : ''}?`));
100
+ if (!proceed) {
101
+ log('update cancelled — nothing changed.');
102
+ return;
103
+ }
104
+ log(`installing ${spec}…`);
105
+ if (!npmInstallGlobal(spec)) {
106
+ throw new Error(`npm failed to install ${spec}. If it was a permissions error, re-run in a terminal with the right privileges ` +
107
+ '(elevated on Windows, or `sudo` on macOS/Linux), then run `helix-core restart`.');
108
+ }
109
+ log('package updated.');
110
+ if (running) {
111
+ log('restarting the connector to load the new build…');
112
+ await (0, daemon_1.restartDaemon)(flags.daemon ?? {});
113
+ log('done — the agent is back online on the new version.');
114
+ }
115
+ else {
116
+ log('done. Bring the agent online with: helix-core start');
117
+ }
118
+ }
119
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spark-strategic/helix-core",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Helix Core — the minimal local runtime you run to connect a personal agent to Helix. Other tools (MCP, etc.) ship as their own packages that Core runs.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",