@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.
- package/dist/autostart.d.ts +28 -0
- package/dist/autostart.d.ts.map +1 -0
- package/dist/autostart.js +241 -0
- package/dist/autostart.js.map +1 -0
- package/dist/cli.js +97 -2
- package/dist/cli.js.map +1 -1
- package/dist/daemon.d.ts +43 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +212 -0
- package/dist/daemon.js.map +1 -0
- package/dist/init.d.ts +3 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +13 -5
- package/dist/init.js.map +1 -1
- package/dist/update.d.ts +32 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +119 -0
- package/dist/update.js.map +1 -0
- package/package.json +1 -1
|
@@ -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
|
|
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
|
|
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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"}
|
package/dist/daemon.d.ts
ADDED
|
@@ -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":"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"}
|
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
|
|
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). */
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
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.
|
|
306
|
-
// runs — setup and going-live in one shot.
|
|
307
|
-
//
|
|
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.
|
|
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
|
-
|
|
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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"}
|
package/dist/update.d.ts
ADDED
|
@@ -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
|
+
"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",
|