@excitedjs/dreamux 0.19.0 → 0.19.2
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/CHANGELOG.json +24 -0
- package/CHANGELOG.md +15 -1
- package/dist/daemon/install.js +18 -5
- package/dist/daemon/install.js.map +1 -1
- package/dist/onboard/run.js +24 -7
- package/dist/onboard/run.js.map +1 -1
- package/dist/onboard/service-node.js +183 -0
- package/dist/onboard/service-node.js.map +1 -0
- package/dist/onboard/service.js +46 -210
- package/dist/onboard/service.js.map +1 -1
- package/dist/platform/paths.js +110 -1
- package/dist/platform/paths.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.json
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@excitedjs/dreamux",
|
|
3
3
|
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.19.2",
|
|
6
|
+
"tag": "@excitedjs/dreamux_v0.19.2",
|
|
7
|
+
"date": "Mon, 20 Jul 2026 07:33:54 GMT",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"comment": "Create the managed service state working directory before systemd or launchd registration."
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"version": "0.19.1",
|
|
18
|
+
"tag": "@excitedjs/dreamux_v0.19.1",
|
|
19
|
+
"date": "Mon, 20 Jul 2026 06:55:12 GMT",
|
|
20
|
+
"comments": {
|
|
21
|
+
"patch": [
|
|
22
|
+
{
|
|
23
|
+
"comment": "Capture the full interactive-session PATH from `dreamux onboard` / `daemon install` and persist it into the generated systemd user service and launchd plist. The managed-service PATH leads with stable Dreamux-owned dirs (selected Node bin dir, resolved provider bin dirs, dreamux bin dir), then appends every entry of the captured session PATH in its original order, then appends fresh-install fallback dirs (`$XDG_BIN_HOME` when set, `$HOME/.local/bin`, and portable platform system dirs). All entries are de-duplicated while preserving first occurrence. Re-running `daemon install` after switching nvm/pyenv/Homebrew environments regenerates the service PATH. The same effective PATH resolves provider/agent binaries during service installation. No `process.env` mutation and no shell profile edits. `buildServicePath()`/`withServicePath()` in `platform/paths.ts` are the single source of truth; `withUserLocalBinPath()` builds the resolve-time effective PATH."
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
4
28
|
{
|
|
5
29
|
"version": "0.19.0",
|
|
6
30
|
"tag": "@excitedjs/dreamux_v0.19.0",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
# Change Log - @excitedjs/dreamux
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Mon, 20 Jul 2026 07:33:54 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 0.19.2
|
|
6
|
+
Mon, 20 Jul 2026 07:33:54 GMT
|
|
7
|
+
|
|
8
|
+
### Patches
|
|
9
|
+
|
|
10
|
+
- Create the managed service state working directory before systemd or launchd registration.
|
|
11
|
+
|
|
12
|
+
## 0.19.1
|
|
13
|
+
Mon, 20 Jul 2026 06:55:12 GMT
|
|
14
|
+
|
|
15
|
+
### Patches
|
|
16
|
+
|
|
17
|
+
- Capture the full interactive-session PATH from `dreamux onboard` / `daemon install` and persist it into the generated systemd user service and launchd plist. The managed-service PATH leads with stable Dreamux-owned dirs (selected Node bin dir, resolved provider bin dirs, dreamux bin dir), then appends every entry of the captured session PATH in its original order, then appends fresh-install fallback dirs (`$XDG_BIN_HOME` when set, `$HOME/.local/bin`, and portable platform system dirs). All entries are de-duplicated while preserving first occurrence. Re-running `daemon install` after switching nvm/pyenv/Homebrew environments regenerates the service PATH. The same effective PATH resolves provider/agent binaries during service installation. No `process.env` mutation and no shell profile edits. `buildServicePath()`/`withServicePath()` in `platform/paths.ts` are the single source of truth; `withUserLocalBinPath()` builds the resolve-time effective PATH.
|
|
4
18
|
|
|
5
19
|
## 0.19.0
|
|
6
20
|
Sun, 19 Jul 2026 03:45:02 GMT
|
package/dist/daemon/install.js
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* top-level `dreamux uninstall`.
|
|
10
10
|
*/
|
|
11
11
|
import { ExecaCommandRunner } from '../onboard/commands.js';
|
|
12
|
-
import {
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
|
+
import { installUserService, removeUserService, resolveServiceExecutable, selectServiceNodeBin, validateManagedServiceLaunch, withUserLocalBinPath, } from '../onboard/service.js';
|
|
13
14
|
import { TransparentFileLedger } from '../onboard/ledger.js';
|
|
14
15
|
import { globalConfigDir, loadConfig, } from '../config/config.js';
|
|
15
16
|
import { AgentRuntimeProviderCatalog } from '../agent-runtime/catalog.js';
|
|
@@ -28,6 +29,8 @@ function serviceProviderBinChecks(config, env, catalogs) {
|
|
|
28
29
|
export async function runDaemonInstall(options = {}) {
|
|
29
30
|
const runner = options.runner ?? new ExecaCommandRunner();
|
|
30
31
|
const env = options.env ?? process.env;
|
|
32
|
+
const platform = options.platform ?? process.platform;
|
|
33
|
+
const homeDir = options.homeDir ?? homedir();
|
|
31
34
|
const dryRun = options.dryRun ?? false;
|
|
32
35
|
const startService = options.startService ?? true;
|
|
33
36
|
// Fail loudly when the operator has not run onboard yet — daemon install
|
|
@@ -45,7 +48,9 @@ export async function runDaemonInstall(options = {}) {
|
|
|
45
48
|
setRuntimeConfig(config);
|
|
46
49
|
const providerBinChecks = await Promise.all(serviceProviderBinChecks(config, env, catalogs).map(async (check) => ({
|
|
47
50
|
...check,
|
|
48
|
-
bin: dryRun
|
|
51
|
+
bin: dryRun
|
|
52
|
+
? check.bin
|
|
53
|
+
: await resolveServiceExecutable(check.bin, withUserLocalBinPath(env, homeDir, platform)),
|
|
49
54
|
})));
|
|
50
55
|
// Pin the managed service to a stable system Node (issue #83) rather than the
|
|
51
56
|
// current process Node — otherwise running `daemon install` from a
|
|
@@ -53,11 +58,16 @@ export async function runDaemonInstall(options = {}) {
|
|
|
53
58
|
const nodeBin = dryRun
|
|
54
59
|
? process.execPath
|
|
55
60
|
: await selectServiceNodeBin({
|
|
56
|
-
platform
|
|
61
|
+
platform,
|
|
57
62
|
currentNodeBin: process.execPath,
|
|
58
63
|
runner,
|
|
59
64
|
...(options.nodeProbe !== undefined ? { probe: options.nodeProbe } : {}),
|
|
60
65
|
});
|
|
66
|
+
// Persist the effective resolved env/homeDir/platform (not the optional raw
|
|
67
|
+
// options values) so managedServicePath renders the captured session PATH and
|
|
68
|
+
// the preflight uses the exact same inputs. In normal CLI use options.env is
|
|
69
|
+
// undefined, so env falls back to process.env — that ambient PATH must be
|
|
70
|
+
// persisted into the service unit.
|
|
61
71
|
const answers = {
|
|
62
72
|
configDir: globalConfigDir(),
|
|
63
73
|
dreamuxBin: dreamuxBinPath(env),
|
|
@@ -65,6 +75,9 @@ export async function runDaemonInstall(options = {}) {
|
|
|
65
75
|
providerBinChecks,
|
|
66
76
|
startService,
|
|
67
77
|
dryRun,
|
|
78
|
+
homeDir,
|
|
79
|
+
platform,
|
|
80
|
+
env,
|
|
68
81
|
};
|
|
69
82
|
if (!dryRun) {
|
|
70
83
|
const launch = await validateManagedServiceLaunch(answers, runner);
|
|
@@ -81,8 +94,8 @@ export async function runDaemonInstall(options = {}) {
|
|
|
81
94
|
answers,
|
|
82
95
|
ledger,
|
|
83
96
|
runner,
|
|
84
|
-
platform
|
|
85
|
-
homeDir
|
|
97
|
+
platform,
|
|
98
|
+
homeDir,
|
|
86
99
|
uid: options.uid,
|
|
87
100
|
});
|
|
88
101
|
return { service, files: ledger.entries() };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/daemon/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/daemon/install.ts"],"names":[],"mappings":"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"}
|
package/dist/onboard/run.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { pathExists } from '../platform/fs-errors.js';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
2
3
|
import { assertNoLegacyTomlOnly, globalConfigFile, loadConfig, stringifyConfig, } from '../config/config.js';
|
|
3
4
|
import { dispatcherDir, logsRoot, setRuntimeConfig, stateRoot, } from '../platform/paths.js';
|
|
4
5
|
import { AgentRuntimeProviderCatalog } from '../agent-runtime/catalog.js';
|
|
@@ -7,18 +8,20 @@ import { providerBinChecksForConfig, runDispatcherProviderDiagnostics, } from '.
|
|
|
7
8
|
import { ExecaCommandRunner } from './commands.js';
|
|
8
9
|
import { dreamuxConfigFromAnswers } from './config-files.js';
|
|
9
10
|
import { ensureDirectory, TransparentFileLedger, writeTextFile, } from './ledger.js';
|
|
10
|
-
import { installUserService, managedServiceEnvironment, resolveServiceExecutable, selectServiceNodeBin, validateManagedServiceLaunch, } from './service.js';
|
|
11
|
+
import { installUserService, managedServiceEnvironment, resolveServiceExecutable, selectServiceNodeBin, validateManagedServiceLaunch, withUserLocalBinPath, } from './service.js';
|
|
11
12
|
export async function runOnboard(options) {
|
|
12
13
|
const answers = options.answers;
|
|
13
14
|
const ledger = options.ledger ?? new TransparentFileLedger();
|
|
14
15
|
const runner = options.runner ?? new ExecaCommandRunner();
|
|
15
16
|
const env = options.env ?? process.env;
|
|
17
|
+
const platform = options.platform ?? process.platform;
|
|
18
|
+
const homeDir = options.homeDir ?? homedir();
|
|
16
19
|
const configPath = globalConfigFile({ configDir: answers.configDir });
|
|
17
20
|
const existingConfig = await readExistingDreamuxConfig(answers.configDir);
|
|
18
21
|
const dreamuxConfig = dreamuxConfigFromAnswers(answers, existingConfig);
|
|
19
22
|
const serviceNodeBin = answers.registerService && !answers.dryRun
|
|
20
23
|
? await selectServiceNodeBin({
|
|
21
|
-
platform
|
|
24
|
+
platform,
|
|
22
25
|
currentNodeBin: process.execPath,
|
|
23
26
|
runner,
|
|
24
27
|
probe: options.nodeProbe,
|
|
@@ -50,12 +53,20 @@ export async function runOnboard(options) {
|
|
|
50
53
|
setRuntimeConfig(loaded.config);
|
|
51
54
|
const catalogs = loaded === null ? null : catalogsFromLoadedConfig(loaded);
|
|
52
55
|
const providerBinChecks = answers.registerService && !answers.dryRun && loaded !== null && catalogs !== null
|
|
53
|
-
? await resolveProviderBinChecks(loaded.config, catalogs, env)
|
|
56
|
+
? await resolveProviderBinChecks(loaded.config, catalogs, env, platform, homeDir)
|
|
54
57
|
: [];
|
|
58
|
+
// Persist the effective resolved env/homeDir/platform (not the optional raw
|
|
59
|
+
// options values) so managedServicePath renders the captured session PATH and
|
|
60
|
+
// the preflight uses the exact same inputs. In normal CLI use options.env is
|
|
61
|
+
// undefined, so env falls back to process.env — that ambient PATH must be
|
|
62
|
+
// persisted into the service unit.
|
|
55
63
|
const effectiveAnswers = {
|
|
56
64
|
...answers,
|
|
57
65
|
nodeBin: serviceNodeBin,
|
|
58
66
|
providerBinChecks,
|
|
67
|
+
homeDir,
|
|
68
|
+
platform,
|
|
69
|
+
env,
|
|
59
70
|
};
|
|
60
71
|
const doctor = await runDispatcherDoctor(effectiveAnswers, loaded, catalogs, env, runner);
|
|
61
72
|
if (!effectiveAnswers.dryRun && !doctor.ok) {
|
|
@@ -72,8 +83,8 @@ export async function runOnboard(options) {
|
|
|
72
83
|
answers: effectiveAnswers,
|
|
73
84
|
ledger,
|
|
74
85
|
runner,
|
|
75
|
-
platform
|
|
76
|
-
homeDir
|
|
86
|
+
platform,
|
|
87
|
+
homeDir,
|
|
77
88
|
uid: options.uid,
|
|
78
89
|
})
|
|
79
90
|
: null;
|
|
@@ -107,16 +118,22 @@ function catalogsFromLoadedConfig(loaded) {
|
|
|
107
118
|
}),
|
|
108
119
|
};
|
|
109
120
|
}
|
|
110
|
-
async function resolveProviderBinChecks(config, catalogs, env) {
|
|
121
|
+
async function resolveProviderBinChecks(config, catalogs, env, platform, homeDir) {
|
|
111
122
|
const checks = providerBinChecksForConfig({
|
|
112
123
|
config,
|
|
113
124
|
catalogs,
|
|
114
125
|
env,
|
|
115
126
|
scope: 'managedService',
|
|
116
127
|
});
|
|
128
|
+
// Bare provider binaries (e.g. a `local-agent` installed to
|
|
129
|
+
// $HOME/.local/bin) resolve against the effective service PATH, which the
|
|
130
|
+
// service unit also includes. Resolve against that augmented PATH so the
|
|
131
|
+
// daemon-install preflight and the running service agree. process.env is
|
|
132
|
+
// never mutated; platform/homeDir/env are passed explicitly by the caller.
|
|
133
|
+
const resolveEnv = withUserLocalBinPath(env, homeDir, platform);
|
|
117
134
|
return await Promise.all(checks.map(async (check) => ({
|
|
118
135
|
...check,
|
|
119
|
-
bin: await resolveServiceExecutable(check.bin,
|
|
136
|
+
bin: await resolveServiceExecutable(check.bin, resolveEnv),
|
|
120
137
|
})));
|
|
121
138
|
}
|
|
122
139
|
async function runDispatcherDoctor(answers, loaded, catalogs, env, runner) {
|
package/dist/onboard/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/onboard/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/onboard/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { constants } from 'node:fs';
|
|
2
|
+
import { access, realpath } from 'node:fs/promises';
|
|
3
|
+
/**
|
|
4
|
+
* Minimum Node version the managed-service environment requires. The launchd
|
|
5
|
+
* plist and systemd user unit persist a stable Node binary; selection (see
|
|
6
|
+
* {@link selectServiceNodeBin}) refuses candidates below this version.
|
|
7
|
+
*/
|
|
8
|
+
export const MIN_SERVICE_NODE_VERSION = '22.7.0';
|
|
9
|
+
/**
|
|
10
|
+
* Parse a `node --version` (or `v<major>.<minor>.<patch>`) string and decide
|
|
11
|
+
* whether it satisfies {@link MIN_SERVICE_NODE_VERSION}. Pure and side-effect
|
|
12
|
+
* free so selection and the launch doctor share one comparison.
|
|
13
|
+
*/
|
|
14
|
+
export function nodeVersionSatisfies(raw) {
|
|
15
|
+
const match = raw.trim().match(/^v?(\d+)\.(\d+)\.(\d+)/);
|
|
16
|
+
if (match === null)
|
|
17
|
+
return false;
|
|
18
|
+
const major = Number(match[1]);
|
|
19
|
+
const minor = Number(match[2]);
|
|
20
|
+
if (!Number.isInteger(major) || !Number.isInteger(minor))
|
|
21
|
+
return false;
|
|
22
|
+
if (major > 22)
|
|
23
|
+
return true;
|
|
24
|
+
return major === 22 && minor >= 7;
|
|
25
|
+
}
|
|
26
|
+
export const defaultServiceNodeProbe = {
|
|
27
|
+
realpath: (path) => realpath(path),
|
|
28
|
+
isExecutable: (path) => isExecutable(path),
|
|
29
|
+
};
|
|
30
|
+
// Markers matched (case-insensitively) against a Node binary's resolved path.
|
|
31
|
+
// Each keeps a leading `/.<name>/` or segment anchor so a user dir like
|
|
32
|
+
// `/home/volta/` never matches `/.volta/`. macOS fnm installs under
|
|
33
|
+
// `~/Library/Application Support/fnm/`; dreamux supports launchd so cover it.
|
|
34
|
+
const VERSION_MANAGER_MARKERS = [
|
|
35
|
+
{ manager: 'nvm', markers: ['/.nvm/versions/node/'] },
|
|
36
|
+
{
|
|
37
|
+
manager: 'fnm',
|
|
38
|
+
markers: [
|
|
39
|
+
'/.fnm/',
|
|
40
|
+
'fnm_multishells',
|
|
41
|
+
'/.local/share/fnm/',
|
|
42
|
+
'/library/application support/fnm/',
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{ manager: 'asdf', markers: ['/.asdf/installs/nodejs/', '/.asdf/shims/'] },
|
|
46
|
+
{ manager: 'volta', markers: ['/.volta/'] },
|
|
47
|
+
];
|
|
48
|
+
/** Pure marker match on a single path; returns the manager name or null. */
|
|
49
|
+
export function versionManagerOfPath(path) {
|
|
50
|
+
const needle = path.toLowerCase();
|
|
51
|
+
for (const entry of VERSION_MANAGER_MARKERS) {
|
|
52
|
+
if (entry.markers.some((marker) => needle.includes(marker))) {
|
|
53
|
+
return entry.manager;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Single async/injectable predicate selection and doctor share. Resolves
|
|
60
|
+
* symlinks first so a `/usr/local/bin/node` shim into nvm/fnm/asdf is caught;
|
|
61
|
+
* falls back to the raw path when realpath fails.
|
|
62
|
+
*/
|
|
63
|
+
export async function detectServiceNodeVersionManager(nodeBin, probe = defaultServiceNodeProbe) {
|
|
64
|
+
const raw = versionManagerOfPath(nodeBin);
|
|
65
|
+
if (raw !== null)
|
|
66
|
+
return raw;
|
|
67
|
+
let resolved;
|
|
68
|
+
try {
|
|
69
|
+
resolved = await probe.realpath(nodeBin);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return versionManagerOfPath(resolved);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Platform-aware stable Node candidates. macOS covers Homebrew (Apple Silicon
|
|
78
|
+
* and Intel prefixes); Linux covers standard system locations.
|
|
79
|
+
*/
|
|
80
|
+
export function stableNodeCandidates(platform) {
|
|
81
|
+
if (platform === 'darwin') {
|
|
82
|
+
return [
|
|
83
|
+
'/opt/homebrew/bin/node',
|
|
84
|
+
'/opt/homebrew/opt/node/bin/node',
|
|
85
|
+
'/opt/homebrew/opt/node@24/bin/node',
|
|
86
|
+
'/opt/homebrew/opt/node@22/bin/node',
|
|
87
|
+
'/usr/local/bin/node',
|
|
88
|
+
'/usr/local/opt/node/bin/node',
|
|
89
|
+
'/usr/local/opt/node@24/bin/node',
|
|
90
|
+
'/usr/local/opt/node@22/bin/node',
|
|
91
|
+
'/usr/bin/node',
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
return ['/usr/local/bin/node', '/usr/bin/node', '/bin/node'];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Choose the Node binary persisted into the managed-service environment.
|
|
98
|
+
* Prefers a stable system Node (exists, not version-manager-bound, satisfies
|
|
99
|
+
* MIN_SERVICE_NODE_VERSION); falls back to the current Node otherwise.
|
|
100
|
+
*/
|
|
101
|
+
export async function selectServiceNodeBin(options) {
|
|
102
|
+
const probe = options.probe ?? defaultServiceNodeProbe;
|
|
103
|
+
for (const candidate of stableNodeCandidates(options.platform)) {
|
|
104
|
+
if (!(await probe.isExecutable(candidate)))
|
|
105
|
+
continue;
|
|
106
|
+
if ((await detectServiceNodeVersionManager(candidate, probe)) !== null) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
let version;
|
|
110
|
+
try {
|
|
111
|
+
version = await options.runner.capture(candidate, ['--version']);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (!nodeVersionSatisfies(version))
|
|
117
|
+
continue;
|
|
118
|
+
// Persist the candidate path itself (a stable symlink), never its realpath,
|
|
119
|
+
// so a Homebrew symlink keeps the volatile Cellar path out of the service.
|
|
120
|
+
return candidate;
|
|
121
|
+
}
|
|
122
|
+
return stabilizeHomebrewCellarNode(options.currentNodeBin, options.platform, probe);
|
|
123
|
+
}
|
|
124
|
+
const HOMEBREW_PREFIXES = ['/opt/homebrew', '/usr/local'];
|
|
125
|
+
function matchHomebrewCellar(path) {
|
|
126
|
+
for (const prefix of HOMEBREW_PREFIXES) {
|
|
127
|
+
const cellar = `${prefix}/Cellar/node`;
|
|
128
|
+
if (!path.startsWith(`${cellar}/`) && !path.startsWith(`${cellar}@`)) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const major = path.slice(cellar.length).match(/^@(\d+)\//);
|
|
132
|
+
return { prefix, major: major === null ? null : major[1] };
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Homebrew Cellar (`<prefix>/Cellar/node[@major]/<version>/bin/node`) is a
|
|
138
|
+
* version-pinned path unfit for a persistent service. Best-effort remap to the
|
|
139
|
+
* matching stable Homebrew symlink; no match returns the input unchanged and
|
|
140
|
+
* never throws. darwin-only.
|
|
141
|
+
*/
|
|
142
|
+
export async function stabilizeHomebrewCellarNode(nodeBin, platform, probe = defaultServiceNodeProbe) {
|
|
143
|
+
if (platform !== 'darwin')
|
|
144
|
+
return nodeBin;
|
|
145
|
+
let resolved;
|
|
146
|
+
try {
|
|
147
|
+
resolved = await probe.realpath(nodeBin);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
resolved = nodeBin;
|
|
151
|
+
}
|
|
152
|
+
const cellar = matchHomebrewCellar(nodeBin) ?? matchHomebrewCellar(resolved);
|
|
153
|
+
if (cellar === null)
|
|
154
|
+
return nodeBin;
|
|
155
|
+
const links = [];
|
|
156
|
+
if (cellar.major !== null) {
|
|
157
|
+
links.push(`${cellar.prefix}/opt/node@${cellar.major}/bin/node`);
|
|
158
|
+
}
|
|
159
|
+
links.push(`${cellar.prefix}/opt/node/bin/node`, `${cellar.prefix}/bin/node`);
|
|
160
|
+
for (const link of links) {
|
|
161
|
+
if (!(await probe.isExecutable(link)))
|
|
162
|
+
continue;
|
|
163
|
+
try {
|
|
164
|
+
if ((await probe.realpath(link)) === resolved)
|
|
165
|
+
return link;
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// ignore and try the next candidate symlink
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return nodeBin;
|
|
172
|
+
}
|
|
173
|
+
/** True when `path` is executable by the current process; never throws. */
|
|
174
|
+
export async function isExecutable(path) {
|
|
175
|
+
try {
|
|
176
|
+
await access(path, constants.X_OK);
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=service-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-node.js","sourceRoot":"","sources":["../../src/onboard/service-node.ts"],"names":[],"mappings":"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"}
|
package/dist/onboard/service.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { pathExists } from '../platform/fs-errors.js';
|
|
2
|
-
import {
|
|
3
|
-
import { access, realpath, rm } from 'node:fs/promises';
|
|
2
|
+
import { rm } from 'node:fs/promises';
|
|
4
3
|
import { homedir } from 'node:os';
|
|
5
4
|
import { delimiter, dirname, isAbsolute, join, resolve } from 'node:path';
|
|
6
5
|
import { build as buildPlist } from 'plist';
|
|
7
6
|
import { expandHome } from '../config/config.js';
|
|
8
|
-
import { logsRoot, stateRoot } from '../platform/paths.js';
|
|
7
|
+
import { buildServicePath, logsRoot, standardExecDirs, stateRoot, userLocalBinDirs, withServicePath, } from '../platform/paths.js';
|
|
9
8
|
import { ensureDirectory, ensureTextFile, writeTextFile, } from './ledger.js';
|
|
9
|
+
import { isExecutable, MIN_SERVICE_NODE_VERSION, nodeVersionSatisfies, } from './service-node.js';
|
|
10
10
|
export const LAUNCHD_LABEL = 'dev.excited.dreamux';
|
|
11
11
|
export const SYSTEMD_UNIT = 'dreamux.service';
|
|
12
|
-
export
|
|
13
|
-
export const SERVICE_PATH_DEFAULTS = ['/usr/local/bin', '/usr/bin', '/bin'];
|
|
12
|
+
export { defaultServiceNodeProbe, detectServiceNodeVersionManager, isExecutable, MIN_SERVICE_NODE_VERSION, nodeVersionSatisfies, selectServiceNodeBin, stabilizeHomebrewCellarNode, stableNodeCandidates, versionManagerOfPath, } from './service-node.js';
|
|
14
13
|
export function serviceUnitPath(platform = process.platform, homeDir = homedir()) {
|
|
15
14
|
if (platform === 'darwin') {
|
|
16
15
|
return {
|
|
@@ -29,9 +28,11 @@ export function serviceUnitPath(platform = process.platform, homeDir = homedir()
|
|
|
29
28
|
export async function installUserService(options) {
|
|
30
29
|
const homeDir = options.homeDir ?? homedir();
|
|
31
30
|
const unit = serviceUnitPath(options.platform, homeDir);
|
|
31
|
+
const workingDir = stateRoot();
|
|
32
32
|
const logDir = logsRoot();
|
|
33
33
|
const stdoutLog = join(logDir, 'daemon.stdout.log');
|
|
34
34
|
const stderrLog = join(logDir, 'daemon.stderr.log');
|
|
35
|
+
await ensureDirectory(workingDir, options.ledger, 'managed service working directory', { dryRun: options.answers.dryRun });
|
|
35
36
|
await ensureDirectory(logDir, options.ledger, 'daemon log directory', {
|
|
36
37
|
dryRun: options.answers.dryRun,
|
|
37
38
|
});
|
|
@@ -102,12 +103,11 @@ WantedBy=default.target
|
|
|
102
103
|
`;
|
|
103
104
|
}
|
|
104
105
|
export function managedServiceEnvironment(answers) {
|
|
105
|
-
|
|
106
|
-
//
|
|
107
|
-
// resolve under the service's minimal environment without core naming them.
|
|
106
|
+
const home = answers.homeDir ?? homedir();
|
|
107
|
+
// Unit PATH: stable dirs → captured session PATH → fallbacks (see managedServicePath).
|
|
108
108
|
const env = {
|
|
109
109
|
DREAMUX_CONFIG_DIR: answers.configDir,
|
|
110
|
-
HOME:
|
|
110
|
+
HOME: home,
|
|
111
111
|
DREAMUX_NODE_BIN: answers.nodeBin,
|
|
112
112
|
PATH: managedServicePath(answers),
|
|
113
113
|
};
|
|
@@ -138,7 +138,7 @@ export async function validateManagedServiceLaunch(answers, runner) {
|
|
|
138
138
|
errors,
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
|
-
export async function resolveServiceExecutable(command, env
|
|
141
|
+
export async function resolveServiceExecutable(command, env) {
|
|
142
142
|
const trimmed = command.trim();
|
|
143
143
|
if (trimmed === '') {
|
|
144
144
|
throw new Error('managed service executable path is empty');
|
|
@@ -157,180 +157,42 @@ export async function resolveServiceExecutable(command, env = process.env) {
|
|
|
157
157
|
}
|
|
158
158
|
throw new Error(`managed service cannot resolve executable '${command}' from PATH; pass an absolute path and rerun dreamux onboard`);
|
|
159
159
|
}
|
|
160
|
-
export function nodeVersionSatisfies(raw) {
|
|
161
|
-
const match = raw.trim().match(/^v?(\d+)\.(\d+)\.(\d+)/);
|
|
162
|
-
if (match === null)
|
|
163
|
-
return false;
|
|
164
|
-
const major = Number(match[1]);
|
|
165
|
-
const minor = Number(match[2]);
|
|
166
|
-
if (!Number.isInteger(major) || !Number.isInteger(minor))
|
|
167
|
-
return false;
|
|
168
|
-
if (major > 22)
|
|
169
|
-
return true;
|
|
170
|
-
return major === 22 && minor >= 7;
|
|
171
|
-
}
|
|
172
|
-
export const defaultServiceNodeProbe = {
|
|
173
|
-
realpath: (path) => realpath(path),
|
|
174
|
-
isExecutable: (path) => isExecutable(path),
|
|
175
|
-
};
|
|
176
|
-
// Markers matched (case-insensitively) against a Node binary's resolved path.
|
|
177
|
-
// Each marker keeps a leading `/.<name>/` or explicit segment anchor so a user
|
|
178
|
-
// directory such as `/home/volta/` never matches the `/.volta/` marker. macOS
|
|
179
|
-
// fnm installs under `~/Library/Application Support/fnm/`; dreamux supports
|
|
180
|
-
// launchd, so that path must be covered.
|
|
181
|
-
const VERSION_MANAGER_MARKERS = [
|
|
182
|
-
{ manager: 'nvm', markers: ['/.nvm/versions/node/'] },
|
|
183
|
-
{
|
|
184
|
-
manager: 'fnm',
|
|
185
|
-
markers: [
|
|
186
|
-
'/.fnm/',
|
|
187
|
-
'fnm_multishells',
|
|
188
|
-
'/.local/share/fnm/',
|
|
189
|
-
'/library/application support/fnm/',
|
|
190
|
-
],
|
|
191
|
-
},
|
|
192
|
-
{ manager: 'asdf', markers: ['/.asdf/installs/nodejs/', '/.asdf/shims/'] },
|
|
193
|
-
{ manager: 'volta', markers: ['/.volta/'] },
|
|
194
|
-
];
|
|
195
|
-
/** Pure marker match on a single path; returns the manager name or null. */
|
|
196
|
-
export function versionManagerOfPath(path) {
|
|
197
|
-
const needle = path.toLowerCase();
|
|
198
|
-
for (const entry of VERSION_MANAGER_MARKERS) {
|
|
199
|
-
if (entry.markers.some((marker) => needle.includes(marker))) {
|
|
200
|
-
return entry.manager;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* The single async/injectable predicate selection and doctor share. Resolves
|
|
207
|
-
* symlinks first so a `/usr/local/bin/node` shim pointing into nvm/fnm/asdf is
|
|
208
|
-
* caught; falls back to the raw path when realpath fails (e.g. broken link).
|
|
209
|
-
*/
|
|
210
|
-
export async function detectServiceNodeVersionManager(nodeBin, probe = defaultServiceNodeProbe) {
|
|
211
|
-
const raw = versionManagerOfPath(nodeBin);
|
|
212
|
-
if (raw !== null)
|
|
213
|
-
return raw;
|
|
214
|
-
let resolved;
|
|
215
|
-
try {
|
|
216
|
-
resolved = await probe.realpath(nodeBin);
|
|
217
|
-
}
|
|
218
|
-
catch {
|
|
219
|
-
return null;
|
|
220
|
-
}
|
|
221
|
-
return versionManagerOfPath(resolved);
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Platform-aware stable Node candidates, decoupled from SERVICE_PATH_DEFAULTS
|
|
225
|
-
* (which only renders the service PATH). macOS covers Homebrew (Apple Silicon
|
|
226
|
-
* and Intel prefixes); Linux covers the standard system locations.
|
|
227
|
-
*/
|
|
228
|
-
export function stableNodeCandidates(platform) {
|
|
229
|
-
if (platform === 'darwin') {
|
|
230
|
-
return [
|
|
231
|
-
'/opt/homebrew/bin/node',
|
|
232
|
-
'/opt/homebrew/opt/node/bin/node',
|
|
233
|
-
'/opt/homebrew/opt/node@24/bin/node',
|
|
234
|
-
'/opt/homebrew/opt/node@22/bin/node',
|
|
235
|
-
'/usr/local/bin/node',
|
|
236
|
-
'/usr/local/opt/node/bin/node',
|
|
237
|
-
'/usr/local/opt/node@24/bin/node',
|
|
238
|
-
'/usr/local/opt/node@22/bin/node',
|
|
239
|
-
'/usr/bin/node',
|
|
240
|
-
];
|
|
241
|
-
}
|
|
242
|
-
return ['/usr/local/bin/node', '/usr/bin/node', '/bin/node'];
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Choose the Node binary persisted into the managed-service environment.
|
|
246
|
-
* Prefers a stable system Node (exists, not version-manager-bound, satisfies
|
|
247
|
-
* MIN_SERVICE_NODE_VERSION); falls back to the current Node otherwise. The
|
|
248
|
-
* fallback reproduces the original fragility when onboarding itself runs under
|
|
249
|
-
* a version-manager Node — that case is the doctor drift advisory's job to
|
|
250
|
-
* surface, not this function's.
|
|
251
|
-
*/
|
|
252
|
-
export async function selectServiceNodeBin(options) {
|
|
253
|
-
const probe = options.probe ?? defaultServiceNodeProbe;
|
|
254
|
-
for (const candidate of stableNodeCandidates(options.platform)) {
|
|
255
|
-
if (!(await probe.isExecutable(candidate)))
|
|
256
|
-
continue;
|
|
257
|
-
if ((await detectServiceNodeVersionManager(candidate, probe)) !== null) {
|
|
258
|
-
continue;
|
|
259
|
-
}
|
|
260
|
-
let version;
|
|
261
|
-
try {
|
|
262
|
-
version = await options.runner.capture(candidate, ['--version']);
|
|
263
|
-
}
|
|
264
|
-
catch {
|
|
265
|
-
continue;
|
|
266
|
-
}
|
|
267
|
-
if (!nodeVersionSatisfies(version))
|
|
268
|
-
continue;
|
|
269
|
-
// Persist the candidate path itself (a stable symlink), never its realpath,
|
|
270
|
-
// so a Homebrew symlink keeps the volatile Cellar path out of the service.
|
|
271
|
-
return candidate;
|
|
272
|
-
}
|
|
273
|
-
return stabilizeHomebrewCellarNode(options.currentNodeBin, options.platform, probe);
|
|
274
|
-
}
|
|
275
|
-
const HOMEBREW_PREFIXES = ['/opt/homebrew', '/usr/local'];
|
|
276
|
-
function matchHomebrewCellar(path) {
|
|
277
|
-
for (const prefix of HOMEBREW_PREFIXES) {
|
|
278
|
-
const cellar = `${prefix}/Cellar/node`;
|
|
279
|
-
if (!path.startsWith(`${cellar}/`) && !path.startsWith(`${cellar}@`)) {
|
|
280
|
-
continue;
|
|
281
|
-
}
|
|
282
|
-
const major = path.slice(cellar.length).match(/^@(\d+)\//);
|
|
283
|
-
return { prefix, major: major === null ? null : major[1] };
|
|
284
|
-
}
|
|
285
|
-
return null;
|
|
286
|
-
}
|
|
287
160
|
/**
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
291
|
-
*
|
|
292
|
-
*
|
|
293
|
-
*
|
|
161
|
+
* Builds the resolve-time effective PATH used to resolve bare provider/agent
|
|
162
|
+
* binaries during `onboard`/`daemon install`. Captured session PATH leads, then
|
|
163
|
+
* fresh-install fallback dirs (XDG_BIN_HOME / ~/.local/bin + platform dirs).
|
|
164
|
+
* Stable Dreamux-owned dirs are added at service render time (see
|
|
165
|
+
* managedServicePath). Delegates to {@link withServicePath} in paths.ts. Never
|
|
166
|
+
* mutates env.
|
|
294
167
|
*/
|
|
295
|
-
export
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
resolved = nodeBin;
|
|
304
|
-
}
|
|
305
|
-
const cellar = matchHomebrewCellar(nodeBin) ?? matchHomebrewCellar(resolved);
|
|
306
|
-
if (cellar === null)
|
|
307
|
-
return nodeBin;
|
|
308
|
-
const links = [];
|
|
309
|
-
if (cellar.major !== null) {
|
|
310
|
-
links.push(`${cellar.prefix}/opt/node@${cellar.major}/bin/node`);
|
|
311
|
-
}
|
|
312
|
-
links.push(`${cellar.prefix}/opt/node/bin/node`, `${cellar.prefix}/bin/node`);
|
|
313
|
-
for (const link of links) {
|
|
314
|
-
if (!(await probe.isExecutable(link)))
|
|
315
|
-
continue;
|
|
316
|
-
try {
|
|
317
|
-
if ((await probe.realpath(link)) === resolved)
|
|
318
|
-
return link;
|
|
319
|
-
}
|
|
320
|
-
catch {
|
|
321
|
-
// ignore and try the next candidate symlink
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
return nodeBin;
|
|
168
|
+
export function withUserLocalBinPath(env, homeDir, platform) {
|
|
169
|
+
const sessionPath = env['PATH'] ?? '';
|
|
170
|
+
const fallbackDirs = standardExecDirs({
|
|
171
|
+
platform: platform ?? process.platform,
|
|
172
|
+
homeDir: homeDir ?? homedir(),
|
|
173
|
+
env,
|
|
174
|
+
});
|
|
175
|
+
return withServicePath(env, { stableDirs: [], sessionPath, fallbackDirs });
|
|
325
176
|
}
|
|
177
|
+
/** Re-exported for service-level callers; canonical impl is in paths.ts. */
|
|
178
|
+
export { userLocalBinDirs };
|
|
326
179
|
function managedServicePath(answers) {
|
|
327
|
-
|
|
180
|
+
// Service PATH order: stable Dreamux-owned dirs (Node bin, provider bin dirs,
|
|
181
|
+
// dreamux bin) → captured session PATH (original order) → fresh-install
|
|
182
|
+
// fallback dirs from paths.ts. De-duped via buildServicePath. Never reads
|
|
183
|
+
// process.env; platform/homeDir/env passed explicitly.
|
|
184
|
+
const stableDirs = [
|
|
328
185
|
dirname(answers.nodeBin),
|
|
329
186
|
...serviceProviderBinChecks(answers).flatMap((check) => absoluteDir(check.bin)),
|
|
330
187
|
...absoluteDir(answers.dreamuxBin),
|
|
331
|
-
...SERVICE_PATH_DEFAULTS,
|
|
332
188
|
];
|
|
333
|
-
|
|
189
|
+
const sessionPath = answers.env?.['PATH'] ?? '';
|
|
190
|
+
const fallbackDirs = standardExecDirs({
|
|
191
|
+
platform: answers.platform ?? process.platform,
|
|
192
|
+
homeDir: answers.homeDir ?? homedir(),
|
|
193
|
+
env: answers.env ?? {},
|
|
194
|
+
});
|
|
195
|
+
return buildServicePath({ stableDirs, sessionPath, fallbackDirs });
|
|
334
196
|
}
|
|
335
197
|
function serviceProviderBinChecks(answers) {
|
|
336
198
|
const checks = new Map();
|
|
@@ -342,31 +204,11 @@ function serviceProviderBinChecks(answers) {
|
|
|
342
204
|
function absoluteDir(path) {
|
|
343
205
|
return isAbsolute(path) ? [dirname(path)] : [];
|
|
344
206
|
}
|
|
345
|
-
function uniqueNonEmpty(values) {
|
|
346
|
-
const out = [];
|
|
347
|
-
const seen = new Set();
|
|
348
|
-
for (const value of values) {
|
|
349
|
-
if (value === '' || seen.has(value))
|
|
350
|
-
continue;
|
|
351
|
-
seen.add(value);
|
|
352
|
-
out.push(value);
|
|
353
|
-
}
|
|
354
|
-
return out;
|
|
355
|
-
}
|
|
356
207
|
async function assertExecutable(path, label) {
|
|
357
208
|
if (await isExecutable(path))
|
|
358
209
|
return;
|
|
359
210
|
throw new Error(`managed service executable is not runnable: ${label}`);
|
|
360
211
|
}
|
|
361
|
-
async function isExecutable(path) {
|
|
362
|
-
try {
|
|
363
|
-
await access(path, constants.X_OK);
|
|
364
|
-
return true;
|
|
365
|
-
}
|
|
366
|
-
catch {
|
|
367
|
-
return false;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
212
|
function errorMessage(err) {
|
|
371
213
|
return err instanceof Error ? err.message : String(err);
|
|
372
214
|
}
|
|
@@ -401,19 +243,14 @@ async function registerSystemd(unitPath, options) {
|
|
|
401
243
|
dryRun: options.answers.dryRun,
|
|
402
244
|
});
|
|
403
245
|
options.ledger.record(unitPath, 'unchanged', 'systemd user service registered');
|
|
404
|
-
// `systemctl --user enable` only schedules the service for an
|
|
405
|
-
// session
|
|
406
|
-
//
|
|
407
|
-
//
|
|
408
|
-
// reboot. Best-effort: a strict polkit / non-root setup may deny it, but that
|
|
409
|
-
// must not fail onboard / daemon install (issue #78).
|
|
246
|
+
// `systemctl --user enable` only schedules the service for an active login
|
|
247
|
+
// session. `loginctl enable-linger` makes a user service boot without a login;
|
|
248
|
+
// without it "enabled" silently fails to autostart on reboot. Best-effort: a
|
|
249
|
+
// strict polkit / non-root setup may deny it, but that must not fail onboard.
|
|
410
250
|
const { lingerEnabled, warnings } = await enableSystemdLinger(options);
|
|
411
251
|
return { lingerEnabled, warnings };
|
|
412
252
|
}
|
|
413
|
-
/**
|
|
414
|
-
* Enable systemd user lingering for the calling user, best-effort. Returns the
|
|
415
|
-
* outcome plus any operator-facing warning. Skipped (null) on a dry run.
|
|
416
|
-
*/
|
|
253
|
+
/** Enable systemd user lingering, best-effort. Skipped (null) on dry run. */
|
|
417
254
|
export async function enableSystemdLinger(options) {
|
|
418
255
|
if (options.answers.dryRun)
|
|
419
256
|
return { lingerEnabled: null, warnings: [] };
|
|
@@ -430,10 +267,9 @@ export async function enableSystemdLinger(options) {
|
|
|
430
267
|
};
|
|
431
268
|
}
|
|
432
269
|
/**
|
|
433
|
-
* Unregister and remove the user-level service unit only. Shared by
|
|
434
|
-
*
|
|
435
|
-
* `
|
|
436
|
-
* service-manager calls — the unit-file removal is authoritative.
|
|
270
|
+
* Unregister and remove the user-level service unit only. Shared by
|
|
271
|
+
* `dreamux uninstall` (also removes config/state/logs) and
|
|
272
|
+
* `daemon uninstall` (removes nothing else). Unit-file removal is authoritative.
|
|
437
273
|
*/
|
|
438
274
|
export async function removeUserService(options) {
|
|
439
275
|
const homeDir = options.homeDir ?? homedir();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/onboard/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/onboard/service.ts"],"names":[],"mappings":"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"}
|
package/dist/platform/paths.js
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
*/
|
|
38
38
|
import { realpath } from 'node:fs/promises';
|
|
39
39
|
import { homedir } from 'node:os';
|
|
40
|
-
import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
40
|
+
import { dirname, isAbsolute, join, relative, resolve, sep, delimiter } from 'node:path';
|
|
41
41
|
import { fileURLToPath } from 'node:url';
|
|
42
42
|
import { assertUnixSocketPathBudget, } from '@excitedjs/dreamux-utils';
|
|
43
43
|
import { BUILT_IN_DEFAULTS, } from '../config/config.js';
|
|
@@ -325,4 +325,113 @@ export function teamMateNameSegment(name) {
|
|
|
325
325
|
export function dispatcherPathSegment(id) {
|
|
326
326
|
return validateDispatcherId(id);
|
|
327
327
|
}
|
|
328
|
+
/**
|
|
329
|
+
* The operator's user-local standard bin dirs, in priority order. When
|
|
330
|
+
* XDG_BIN_HOME is set (in the passed env) and non-empty it is included first;
|
|
331
|
+
* the conventional $HOME/.local/bin is always included. Both are kept so a
|
|
332
|
+
* binary installed in either location resolves.
|
|
333
|
+
*/
|
|
334
|
+
export function userLocalBinDirs(options) {
|
|
335
|
+
const dirs = [];
|
|
336
|
+
const xdg = options.env['XDG_BIN_HOME'];
|
|
337
|
+
if (typeof xdg === 'string' && xdg.trim() !== '') {
|
|
338
|
+
dirs.push(xdg.trim());
|
|
339
|
+
}
|
|
340
|
+
dirs.push(join(options.homeDir, '.local', 'bin'));
|
|
341
|
+
return dirs;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Platform conventional system bin dirs (user-local dirs are NOT included here —
|
|
345
|
+
* see {@link userLocalBinDirs}). All platforms include /usr/local/bin,
|
|
346
|
+
* /usr/bin, /bin. macOS adds the Apple Silicon Homebrew prefix
|
|
347
|
+
* /opt/homebrew/bin (Intel Homebrew lands under /usr/local/bin, already
|
|
348
|
+
* covered). Linux adds the common Linuxbrew prefix
|
|
349
|
+
* /home/linuxbrew/.linuxbrew/bin.
|
|
350
|
+
*
|
|
351
|
+
* These are deterministic: no brew --prefix, no shell profile inspection.
|
|
352
|
+
*/
|
|
353
|
+
export function systemExecDirs(platform) {
|
|
354
|
+
const dirs = ['/usr/local/bin', '/usr/bin', '/bin'];
|
|
355
|
+
if (platform === 'darwin') {
|
|
356
|
+
dirs.push('/opt/homebrew/bin');
|
|
357
|
+
}
|
|
358
|
+
else if (platform === 'linux') {
|
|
359
|
+
dirs.push('/home/linuxbrew/.linuxbrew/bin');
|
|
360
|
+
}
|
|
361
|
+
return dirs;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* The full ordered, de-duplicated standard executable dirs for a platform: the
|
|
365
|
+
* user-local bin dirs (see {@link userLocalBinDirs}) followed by the platform
|
|
366
|
+
* conventional system dirs (see {@link systemExecDirs}). Used as the
|
|
367
|
+
* fresh-install fallback dirs by {@link buildServicePath}.
|
|
368
|
+
*/
|
|
369
|
+
export function standardExecDirs(options) {
|
|
370
|
+
return dedupeExecDirs([
|
|
371
|
+
...userLocalBinDirs(options),
|
|
372
|
+
...systemExecDirs(options.platform),
|
|
373
|
+
]);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Build the managed-service PATH: stable Dreamux-owned dirs first, then the
|
|
377
|
+
* captured session PATH in original order, then the fresh-install fallback
|
|
378
|
+
* dirs. Deduplicated while preserving first occurrence. Never reads
|
|
379
|
+
* process.env. This is the single source of truth for the service PATH order.
|
|
380
|
+
*/
|
|
381
|
+
export function buildServicePath(input) {
|
|
382
|
+
return dedupeExecDirs([
|
|
383
|
+
...input.stableDirs,
|
|
384
|
+
...input.sessionPath.split(delimiter),
|
|
385
|
+
...input.fallbackDirs,
|
|
386
|
+
]).join(delimiter);
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Return a copy of `env` with PATH set to {@link buildServicePath}. The
|
|
390
|
+
* caller's env object (and process.env) is never mutated.
|
|
391
|
+
*/
|
|
392
|
+
export function withServicePath(env, input) {
|
|
393
|
+
return { ...env, PATH: buildServicePath(input) };
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Return a copy of `env` with PATH augmented so bare provider/agent binaries
|
|
397
|
+
* resolve against the standard executable dirs during `dreamux onboard` and
|
|
398
|
+
* `dreamux daemon install`. It places the captured session PATH (in original
|
|
399
|
+
* order) ahead of the fresh-install fallback dirs (XDG_BIN_HOME /
|
|
400
|
+
* $HOME/.local/bin + portable platform system + brew dirs), matching the order
|
|
401
|
+
* {@link buildServicePath} persists into the service unit — so the
|
|
402
|
+
* daemon-install preflight and the running service agree.
|
|
403
|
+
*
|
|
404
|
+
* Stable Dreamux-owned dirs (Node bin, provider bin dirs, dreamux bin) are NOT
|
|
405
|
+
* included here: at resolve time the Node bin is not yet selected and the
|
|
406
|
+
* dreamux bin dir is computed separately. Those are added when the service PATH
|
|
407
|
+
* is rendered (see `managedServicePath` in onboard/service.ts). Pass
|
|
408
|
+
* `extraDirs` to lead the PATH with explicit actual dirs (e.g. a resolved
|
|
409
|
+
* provider bin dir).
|
|
410
|
+
*
|
|
411
|
+
* The caller's env (and process.env) is never mutated; platform/homeDir/env are
|
|
412
|
+
* passed explicitly by the caller and these helpers never read process.env.
|
|
413
|
+
* XDG_BIN_HOME is a widely-followed convention (NOT part of the formal XDG Base
|
|
414
|
+
* Directory spec); it is honored alongside $HOME/.local/bin so binaries in
|
|
415
|
+
* either location resolve.
|
|
416
|
+
*/
|
|
417
|
+
export function withStandardExecPath(env, options) {
|
|
418
|
+
const sessionPath = env['PATH'] ?? '';
|
|
419
|
+
const fallbackDirs = standardExecDirs(options);
|
|
420
|
+
return withServicePath(env, {
|
|
421
|
+
stableDirs: options.extraDirs ?? [],
|
|
422
|
+
sessionPath,
|
|
423
|
+
fallbackDirs,
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
function dedupeExecDirs(values) {
|
|
427
|
+
const out = [];
|
|
428
|
+
const seen = new Set();
|
|
429
|
+
for (const value of values) {
|
|
430
|
+
if (value === '' || seen.has(value))
|
|
431
|
+
continue;
|
|
432
|
+
seen.add(value);
|
|
433
|
+
out.push(value);
|
|
434
|
+
}
|
|
435
|
+
return out;
|
|
436
|
+
}
|
|
328
437
|
//# sourceMappingURL=paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/platform/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/platform/paths.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@excitedjs/dreamux",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.2",
|
|
4
4
|
"description": "Dreamux core host for multi-dispatcher agent orchestration through provider interfaces.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
"execa": "^9.6.1",
|
|
34
34
|
"pino": "^9.5.0",
|
|
35
35
|
"plist": "^5.0.0",
|
|
36
|
-
"@excitedjs/agent-runtime-claude-code": "0.4.1",
|
|
37
36
|
"@excitedjs/agent-runtime-codex": "0.3.2",
|
|
38
|
-
"@excitedjs/
|
|
37
|
+
"@excitedjs/agent-runtime-claude-code": "0.4.1",
|
|
39
38
|
"@excitedjs/dreamux-utils": "0.3.2",
|
|
39
|
+
"@excitedjs/dreamux-types": "0.5.0",
|
|
40
40
|
"@excitedjs/feishu-channel": "3.0.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|