@kraki/tentacle 0.11.17 → 0.11.19
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/daemon-worker.js +3 -1
- package/dist/daemon-worker.js.map +1 -1
- package/dist/daemon.d.ts +5 -4
- package/dist/daemon.js +112 -15
- package/dist/daemon.js.map +1 -1
- package/package.json +1 -1
package/dist/daemon-worker.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* KeyManager handles E2E encryption keys.
|
|
11
11
|
*/
|
|
12
12
|
import { execSync } from 'node:child_process';
|
|
13
|
-
import { loadConfig, loadChannelKey, getOrCreateDeviceId, getConfigPath, getChannelKeyPath, getVersion } from './config.js';
|
|
13
|
+
import { loadConfig, loadChannelKey, getOrCreateDeviceId, getConfigPath, getChannelKeyPath, getVersion, saveDaemonPid } from './config.js';
|
|
14
14
|
import { CopilotAdapter } from './adapters/copilot.js';
|
|
15
15
|
// On macOS the daemon is NOT detached (no setsid) to preserve the
|
|
16
16
|
// Gatekeeper session for code signing. Ignore SIGHUP so we survive
|
|
@@ -34,6 +34,8 @@ process.on('uncaughtException', (err) => {
|
|
|
34
34
|
process.exit(1);
|
|
35
35
|
});
|
|
36
36
|
export async function startWorker() {
|
|
37
|
+
// Write PID immediately so the launcher (launchctl or CLI) can find us
|
|
38
|
+
saveDaemonPid(process.pid);
|
|
37
39
|
logger.info('Daemon starting…');
|
|
38
40
|
const configPath = getConfigPath();
|
|
39
41
|
const channelKeyPath = getChannelKeyPath();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-worker.js","sourceRoot":"","sources":["../src/daemon-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon-worker.js","sourceRoot":"","sources":["../src/daemon-worker.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon.d.ts
CHANGED
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
* Its PID is tracked under the current Kraki home.
|
|
6
6
|
*
|
|
7
7
|
* On macOS, downloaded SEA binaries carry com.apple.provenance which
|
|
8
|
-
* cannot be removed. macOS 26+ CSM 2 blocks fork()+execve() of
|
|
9
|
-
* binaries from child processes
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* cannot be removed. macOS 26+ CSM 2 blocks direct fork()+execve() of
|
|
9
|
+
* such binaries from child processes. To bypass this, macOS SEA builds
|
|
10
|
+
* use launchctl to have launchd spawn the daemon in a completely
|
|
11
|
+
* independent context. If launchctl also fails, the caller falls back
|
|
12
|
+
* to running the daemon worker in the current process.
|
|
12
13
|
*/
|
|
13
14
|
import { type KrakiConfig } from './config.js';
|
|
14
15
|
export declare const INTERNAL_DAEMON_WORKER_COMMAND = "__daemon-worker";
|
package/dist/daemon.js
CHANGED
|
@@ -5,17 +5,35 @@
|
|
|
5
5
|
* Its PID is tracked under the current Kraki home.
|
|
6
6
|
*
|
|
7
7
|
* On macOS, downloaded SEA binaries carry com.apple.provenance which
|
|
8
|
-
* cannot be removed. macOS 26+ CSM 2 blocks fork()+execve() of
|
|
9
|
-
* binaries from child processes
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* cannot be removed. macOS 26+ CSM 2 blocks direct fork()+execve() of
|
|
9
|
+
* such binaries from child processes. To bypass this, macOS SEA builds
|
|
10
|
+
* use launchctl to have launchd spawn the daemon in a completely
|
|
11
|
+
* independent context. If launchctl also fails, the caller falls back
|
|
12
|
+
* to running the daemon worker in the current process.
|
|
12
13
|
*/
|
|
13
|
-
import { spawn } from 'node:child_process';
|
|
14
|
-
import { closeSync, mkdirSync, openSync } from 'node:fs';
|
|
14
|
+
import { spawn, execSync } from 'node:child_process';
|
|
15
|
+
import { closeSync, mkdirSync, openSync, writeFileSync, existsSync, unlinkSync } from 'node:fs';
|
|
15
16
|
import { delimiter, join, dirname, resolve } from 'node:path';
|
|
17
|
+
import { homedir } from 'node:os';
|
|
16
18
|
import { isSea } from 'node:sea';
|
|
17
19
|
import { getLogsDir, getLogVerbosity, saveDaemonPid, loadDaemonPid, clearDaemonPid, } from './config.js';
|
|
18
20
|
const STARTUP_GRACE_MS = 1500;
|
|
21
|
+
const LAUNCHD_LABEL = 'cloud.corelli.kraki';
|
|
22
|
+
function getLaunchdPlistPath() {
|
|
23
|
+
return join(homedir(), 'Library', 'LaunchAgents', `${LAUNCHD_LABEL}.plist`);
|
|
24
|
+
}
|
|
25
|
+
function unloadLaunchdAgent() {
|
|
26
|
+
try {
|
|
27
|
+
execSync(`launchctl unload "${getLaunchdPlistPath()}" 2>/dev/null`, { stdio: 'ignore' });
|
|
28
|
+
}
|
|
29
|
+
catch { /* not loaded */ }
|
|
30
|
+
}
|
|
31
|
+
function cleanupLaunchdPlist() {
|
|
32
|
+
unloadLaunchdAgent();
|
|
33
|
+
const p = getLaunchdPlistPath();
|
|
34
|
+
if (existsSync(p))
|
|
35
|
+
unlinkSync(p);
|
|
36
|
+
}
|
|
19
37
|
export const INTERNAL_DAEMON_WORKER_COMMAND = '__daemon-worker';
|
|
20
38
|
export function getDaemonBootstrapLogPath() {
|
|
21
39
|
return join(getLogsDir(), 'daemon-bootstrap.log');
|
|
@@ -116,9 +134,93 @@ export class MacOSCodeSignatureError extends Error {
|
|
|
116
134
|
}
|
|
117
135
|
}
|
|
118
136
|
// ── Start / Stop ────────────────────────────────────────
|
|
137
|
+
/**
|
|
138
|
+
* Start the daemon via launchctl on macOS SEA.
|
|
139
|
+
* launchd spawns the process in a clean context, bypassing CSM restrictions.
|
|
140
|
+
* The daemon-worker saves its own PID; we poll for it here.
|
|
141
|
+
*/
|
|
142
|
+
async function startDaemonLaunchctl(config) {
|
|
143
|
+
const logLevel = getLogVerbosity(config) === 'verbose' ? 'debug' : 'info';
|
|
144
|
+
const bootstrapLogPath = getDaemonBootstrapLogPath();
|
|
145
|
+
mkdirSync(dirname(bootstrapLogPath), { recursive: true });
|
|
146
|
+
const plistDir = join(homedir(), 'Library', 'LaunchAgents');
|
|
147
|
+
mkdirSync(plistDir, { recursive: true });
|
|
148
|
+
// Build PATH that includes locations for `gh` and other tools
|
|
149
|
+
const pathParts = new Set((process.env.PATH ?? '').split(':'));
|
|
150
|
+
for (const p of ['/usr/local/bin', '/opt/homebrew/bin', '/usr/bin', '/bin'])
|
|
151
|
+
pathParts.add(p);
|
|
152
|
+
const envEntries = [
|
|
153
|
+
['NODE_ENV', 'production'],
|
|
154
|
+
['LOG_LEVEL', logLevel],
|
|
155
|
+
['PATH', [...pathParts].filter(Boolean).join(':')],
|
|
156
|
+
['HOME', homedir()],
|
|
157
|
+
];
|
|
158
|
+
if (process.env.KRAKI_RELAY_URL)
|
|
159
|
+
envEntries.push(['KRAKI_RELAY_URL', process.env.KRAKI_RELAY_URL]);
|
|
160
|
+
const envXml = envEntries
|
|
161
|
+
.map(([k, v]) => ` <key>${k}</key>\n <string>${escapeXml(v)}</string>`)
|
|
162
|
+
.join('\n');
|
|
163
|
+
const plist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
164
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
165
|
+
<plist version="1.0">
|
|
166
|
+
<dict>
|
|
167
|
+
<key>Label</key>
|
|
168
|
+
<string>${LAUNCHD_LABEL}</string>
|
|
169
|
+
<key>ProgramArguments</key>
|
|
170
|
+
<array>
|
|
171
|
+
<string>${escapeXml(process.execPath)}</string>
|
|
172
|
+
<string>${INTERNAL_DAEMON_WORKER_COMMAND}</string>
|
|
173
|
+
</array>
|
|
174
|
+
<key>RunAtLoad</key>
|
|
175
|
+
<true/>
|
|
176
|
+
<key>KeepAlive</key>
|
|
177
|
+
<false/>
|
|
178
|
+
<key>EnvironmentVariables</key>
|
|
179
|
+
<dict>
|
|
180
|
+
${envXml}
|
|
181
|
+
</dict>
|
|
182
|
+
<key>StandardOutPath</key>
|
|
183
|
+
<string>${escapeXml(bootstrapLogPath)}</string>
|
|
184
|
+
<key>StandardErrorPath</key>
|
|
185
|
+
<string>${escapeXml(bootstrapLogPath)}</string>
|
|
186
|
+
<key>WorkingDirectory</key>
|
|
187
|
+
<string>${escapeXml(homedir())}</string>
|
|
188
|
+
</dict>
|
|
189
|
+
</plist>`;
|
|
190
|
+
const plistPath = getLaunchdPlistPath();
|
|
191
|
+
writeFileSync(plistPath, plist);
|
|
192
|
+
unloadLaunchdAgent();
|
|
193
|
+
execSync(`launchctl load "${plistPath}"`, { stdio: 'ignore' });
|
|
194
|
+
// The daemon-worker writes its own PID on startup. Poll for it.
|
|
195
|
+
const deadline = Date.now() + STARTUP_GRACE_MS;
|
|
196
|
+
while (Date.now() < deadline) {
|
|
197
|
+
await new Promise(r => setTimeout(r, 200));
|
|
198
|
+
const pid = loadDaemonPid();
|
|
199
|
+
if (pid !== null) {
|
|
200
|
+
try {
|
|
201
|
+
process.kill(pid, 0);
|
|
202
|
+
return pid;
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
// PID saved but process already dead → CSM or crash
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Daemon didn't start or died immediately
|
|
211
|
+
cleanupLaunchdPlist();
|
|
212
|
+
throw new MacOSCodeSignatureError(bootstrapLogPath);
|
|
213
|
+
}
|
|
214
|
+
function escapeXml(s) {
|
|
215
|
+
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
216
|
+
}
|
|
119
217
|
export async function startDaemon(config, cliEntryPath) {
|
|
120
|
-
// Kill any existing daemon(s) before starting a new one
|
|
121
218
|
stopDaemon();
|
|
219
|
+
// On macOS SEA, use launchctl so launchd spawns the daemon in a clean
|
|
220
|
+
// context that isn't blocked by CSM provenance tracking.
|
|
221
|
+
if (process.platform === 'darwin' && isSea()) {
|
|
222
|
+
return startDaemonLaunchctl(config);
|
|
223
|
+
}
|
|
122
224
|
const launch = resolveDaemonLaunch(cliEntryPath);
|
|
123
225
|
launch.env.LOG_LEVEL = getLogVerbosity(config) === 'verbose' ? 'debug' : 'info';
|
|
124
226
|
const bootstrapLogPath = getDaemonBootstrapLogPath();
|
|
@@ -144,14 +246,6 @@ export async function startDaemon(config, cliEntryPath) {
|
|
|
144
246
|
catch {
|
|
145
247
|
// Child may already be gone
|
|
146
248
|
}
|
|
147
|
-
// On macOS, downloaded SEA binaries get SIGKILL'd by CSM 2 when
|
|
148
|
-
// fork()+execve()'d due to com.apple.provenance. Signal the caller
|
|
149
|
-
// to fall back to in-process daemon.
|
|
150
|
-
if (process.platform === 'darwin' &&
|
|
151
|
-
err instanceof Error &&
|
|
152
|
-
err.message.includes('SIGKILL')) {
|
|
153
|
-
throw new MacOSCodeSignatureError(bootstrapLogPath);
|
|
154
|
-
}
|
|
155
249
|
throw err;
|
|
156
250
|
}
|
|
157
251
|
child.unref();
|
|
@@ -169,6 +263,9 @@ export function stopDaemon() {
|
|
|
169
263
|
}
|
|
170
264
|
clearDaemonPid();
|
|
171
265
|
}
|
|
266
|
+
// On macOS, also clean up launchd agent
|
|
267
|
+
if (process.platform === 'darwin')
|
|
268
|
+
cleanupLaunchdPlist();
|
|
172
269
|
return pid !== null;
|
|
173
270
|
}
|
|
174
271
|
//# sourceMappingURL=daemon.js.map
|
package/dist/daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
|