@newrelic/preflight 1.0.6 → 1.0.7

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.
@@ -1,238 +1,303 @@
1
1
  import { accessSync, constants, existsSync, readFileSync } from 'node:fs';
2
- import { homedir, platform } from 'node:os';
3
- import { dirname, resolve } from 'node:path';
2
+ import { platform } from 'node:os';
3
+ import { resolve } from 'node:path';
4
+ import { createLogger } from '../shared/index.js';
4
5
  import { validateConfigFile, DEFAULT_STORAGE_PATH } from '../config.js';
5
- import { getDashboardDaemonStatus } from './schedule.js';
6
+ import { getDashboardDaemonStatus, findExecutableNodeDir } from './schedule.js';
6
7
  import { detectSettingsPath, entryContainsNrObserve } from './install-helper.js';
7
8
  import { isWsl, resolveWindowsHome } from './platform.js';
8
- import { readJsonFile } from './json-utils.js';
9
- export async function runDiagnostics(opts) {
10
- const configPath = opts?.configPath ?? resolve(DEFAULT_STORAGE_PATH, 'config.json');
11
- const storagePath = opts?.storagePath ?? DEFAULT_STORAGE_PATH;
12
- const checks = [];
13
- // Pre-read config once for mode detection; validateConfigFile also reads internally.
14
- const configRaw = readJsonFile(configPath);
15
- const mode = typeof configRaw.mode === 'string' ? configRaw.mode : 'cloud';
16
- // --- Check 1: Config valid ---
9
+ const logger = createLogger('diagnostics');
10
+ function checkConfigValid(configPath, runtimeStoragePath) {
17
11
  const validation = validateConfigFile(configPath);
12
+ // Prioritise the caller's runtime-resolved value (env-var-wins, matching
13
+ // loadMcpConfig priority) over the file value so the Storage writable check
14
+ // tests the same path the MCP server actually writes to. Falls back to the
15
+ // file value, then the default. Use || (not ??) so an empty string is treated
16
+ // like a missing value and falls through to the next tier.
17
+ const storagePath = runtimeStoragePath || validation.storagePath || DEFAULT_STORAGE_PATH;
18
+ const effectiveMode = validation.mode ?? 'cloud';
19
+ const licenseKeyEnv = process.env.NEW_RELIC_LICENSE_KEY;
20
+ // Use .trim() so a whitespace-only value (e.g. ' ') is treated as absent,
21
+ // preventing a false-positive NR reachability result when the key is invalid.
22
+ const hasLicenseKey = validation.hasLicenseKey || Boolean(licenseKeyEnv?.trim());
23
+ // Only skip the NR check for structural problems (no file, or file is unparseable).
24
+ // Zod type errors on unrelated fields do not affect reachability — the derived
25
+ // effectiveMode and hasLicenseKey values below still hold even when other fields
26
+ // fail validation, so the check can run and surface connectivity issues in parallel.
27
+ const nrSkipReason = !validation.fileExists
28
+ ? 'Skipped (no config file — run preflight setup first)'
29
+ : validation.malformed
30
+ ? 'Skipped (config could not be parsed — fix issues above first)'
31
+ : effectiveMode === 'local'
32
+ ? 'Skipped (mode: local)'
33
+ : !hasLicenseKey
34
+ ? licenseKeyEnv !== undefined
35
+ ? 'Skipped (NEW_RELIC_LICENSE_KEY is set but empty or blank — add a valid key)'
36
+ : 'Skipped (licenseKey not configured — set NEW_RELIC_LICENSE_KEY or add to config)'
37
+ : null;
38
+ let check;
18
39
  if (!validation.fileExists) {
19
- checks.push({
40
+ check = {
20
41
  check: 'Config valid',
21
42
  status: 'warn',
22
43
  detail: `No config file at ${configPath} — defaults will apply.`,
23
44
  fix: 'preflight setup',
24
- });
45
+ };
25
46
  }
26
47
  else if (validation.errors.length > 0) {
27
- checks.push({
48
+ check = {
28
49
  check: 'Config valid',
29
50
  status: 'fail',
30
51
  detail: validation.errors.join('; '),
31
52
  fix: 'Fix the fields listed above, then restart.',
32
- });
53
+ };
33
54
  }
34
55
  else if (validation.warnings.length > 0) {
35
- checks.push({
56
+ check = {
36
57
  check: 'Config valid',
37
58
  status: 'warn',
38
59
  detail: validation.warnings.join('; '),
39
- });
60
+ };
40
61
  }
41
62
  else {
42
- checks.push({
63
+ check = {
43
64
  check: 'Config valid',
44
65
  status: 'ok',
45
66
  detail: `Config loaded from ${configPath}`,
46
- });
67
+ };
47
68
  }
48
- // --- Checks 2 + 3: Daemon (macOS only) ---
69
+ return {
70
+ check,
71
+ context: { storagePath, nrSkipReason },
72
+ };
73
+ }
74
+ function checkDaemon() {
49
75
  if (platform() !== 'darwin') {
50
- checks.push({
51
- check: 'Daemon installed',
52
- status: 'skip',
53
- detail: 'Daemon management is macOS-only.',
54
- });
55
- checks.push({
56
- check: 'Daemon node path',
57
- status: 'skip',
58
- detail: 'Daemon management is macOS-only.',
59
- });
76
+ return [
77
+ { check: 'Daemon installed', status: 'skip', detail: 'Daemon management is macOS-only.' },
78
+ { check: 'Daemon node path', status: 'skip', detail: 'Daemon management is macOS-only.' },
79
+ ];
60
80
  }
61
- else {
62
- const daemonStatus = getDashboardDaemonStatus();
63
- if (!daemonStatus.installed) {
64
- checks.push({
81
+ const daemonStatus = getDashboardDaemonStatus();
82
+ if (!daemonStatus.installed) {
83
+ return [
84
+ {
65
85
  check: 'Daemon installed',
66
- status: 'fail',
67
- detail: 'com.preflight.dashboard.plist not found in ~/Library/LaunchAgents/',
68
- fix: 'preflight install --daemon',
69
- });
70
- checks.push({
86
+ status: 'warn',
87
+ detail: 'com.preflight.dashboard.plist not found dashboard will only run when Claude Code is open.',
88
+ fix: 'preflight setup (optional: install the always-on background daemon)',
89
+ },
90
+ {
71
91
  check: 'Daemon node path',
72
92
  status: 'skip',
73
93
  detail: 'Daemon not installed — install first.',
74
- });
75
- }
76
- else {
77
- checks.push({
94
+ },
95
+ ];
96
+ }
97
+ if (!daemonStatus.readable) {
98
+ return [
99
+ {
78
100
  check: 'Daemon installed',
79
- status: 'ok',
80
- detail: 'com.preflight.dashboard.plist found',
81
- });
82
- // --- Check 3: Daemon node path ---
83
- try {
84
- const plistFilePath = resolve(homedir(), 'Library', 'LaunchAgents', 'com.preflight.dashboard.plist');
85
- const plistContent = readFileSync(plistFilePath, 'utf-8');
86
- const pathMatch = plistContent.match(/<key>PATH<\/key>\s*<string>([^<]+)<\/string>/);
87
- const plistPathValue = pathMatch ? pathMatch[1] : '';
88
- const stripTrailingSlash = (p) => p.replace(/\/+$/, '');
89
- const plistDirs = plistPathValue.split(':').map(stripTrailingSlash);
90
- const nodeDir = stripTrailingSlash(dirname(process.execPath));
91
- if (plistDirs.includes(nodeDir)) {
92
- checks.push({
93
- check: 'Daemon node path',
94
- status: 'ok',
95
- detail: `${nodeDir} in plist PATH`,
96
- });
97
- }
98
- else {
99
- checks.push({
100
- check: 'Daemon node path',
101
- status: 'fail',
102
- detail: `Node directory ${nodeDir} missing from plist PATH`,
103
- fix: 'preflight install --daemon',
104
- });
105
- }
106
- }
107
- catch {
108
- checks.push({
109
- check: 'Daemon node path',
110
- status: 'warn',
111
- detail: 'Could not read plist to verify node path',
112
- fix: 'preflight install --daemon',
113
- });
114
- }
115
- }
101
+ status: 'warn',
102
+ detail: 'com.preflight.dashboard.plist found but could not be read',
103
+ fix: 'preflight uninstall --daemon, then preflight setup (answer Y to the daemon prompt)',
104
+ },
105
+ {
106
+ check: 'Daemon node path',
107
+ status: 'skip',
108
+ detail: 'Plist unreadable — daemon status could not be verified.',
109
+ },
110
+ ];
116
111
  }
117
- // --- Check 4: Hooks wired ---
118
- // On WSL with --windows-cc installs, hooks live on the Windows-side path.
119
- // Check both the Linux-side path and, when running under WSL, the Windows-side path.
120
- const settingsPaths = [detectSettingsPath('user')];
121
- if (isWsl()) {
122
- const winHome = resolveWindowsHome();
123
- if (winHome)
124
- settingsPaths.push(detectSettingsPath('user', winHome));
112
+ const installedCheck = {
113
+ check: 'Daemon installed',
114
+ status: 'ok',
115
+ detail: 'com.preflight.dashboard.plist found',
116
+ };
117
+ if (!daemonStatus.envPath) {
118
+ return [
119
+ installedCheck,
120
+ {
121
+ check: 'Daemon node path',
122
+ status: 'warn',
123
+ detail: 'Daemon plist predates node-path injection — node upgrades may break it',
124
+ fix: 'preflight uninstall --daemon, then preflight setup (answer Y to the daemon prompt)',
125
+ },
126
+ ];
127
+ }
128
+ const plistDirs = daemonStatus.envPath.split(':').filter(Boolean);
129
+ const { dir: nodeDir, hasNonExecutable } = findExecutableNodeDir(plistDirs);
130
+ let nodePathCheck;
131
+ if (nodeDir !== null) {
132
+ nodePathCheck = {
133
+ check: 'Daemon node path',
134
+ status: 'ok',
135
+ detail: 'node binary found in plist PATH',
136
+ };
137
+ }
138
+ else if (hasNonExecutable) {
139
+ nodePathCheck = {
140
+ check: 'Daemon node path',
141
+ status: 'fail',
142
+ detail: 'node binary found in plist PATH but is not executable',
143
+ fix: 'Check node permissions (chmod +x <node>), or reinstall: preflight uninstall --daemon && preflight setup',
144
+ };
145
+ }
146
+ else {
147
+ nodePathCheck = {
148
+ check: 'Daemon node path',
149
+ status: 'fail',
150
+ detail: 'No executable node binary found in plist PATH dirs',
151
+ fix: 'preflight uninstall --daemon, then preflight setup (answer Y to the daemon prompt)',
152
+ };
125
153
  }
154
+ return [installedCheck, nodePathCheck];
155
+ }
156
+ function checkHooksWired(settingsPaths) {
126
157
  const anyPathExists = settingsPaths.some(existsSync);
127
158
  let hooksPre = false;
128
159
  let hooksPost = false;
160
+ const parseErrorPaths = [];
161
+ let anyParsed = false;
129
162
  for (const sp of settingsPaths) {
130
163
  if (!existsSync(sp))
131
164
  continue;
132
165
  try {
133
166
  const settings = JSON.parse(readFileSync(sp, 'utf-8'));
167
+ anyParsed = true;
134
168
  const hooks = settings.hooks;
135
169
  if (Array.isArray(hooks?.PreToolUse))
136
170
  hooksPre ||= hooks.PreToolUse.some(entryContainsNrObserve);
137
171
  if (Array.isArray(hooks?.PostToolUse))
138
172
  hooksPost ||= hooks.PostToolUse.some(entryContainsNrObserve);
139
173
  }
140
- catch {
141
- /* treat as not wired */
174
+ catch (err) {
175
+ logger.debug('settings file could not be parsed — treating as not wired', { err, path: sp });
176
+ parseErrorPaths.push(sp);
142
177
  }
143
178
  }
144
179
  if (!anyPathExists) {
145
- checks.push({
180
+ return {
146
181
  check: 'Hooks wired',
147
182
  status: 'fail',
148
183
  detail: `Settings file not found: ${settingsPaths.join(' or ')}`,
149
184
  fix: 'preflight install',
150
- });
185
+ };
151
186
  }
152
- else if (!hooksPre || !hooksPost) {
153
- const missing = [!hooksPre && 'PreToolUse', !hooksPost && 'PostToolUse']
154
- .filter(Boolean)
155
- .join(' and ');
156
- checks.push({
187
+ if (hooksPre && hooksPost) {
188
+ const malformedNote = parseErrorPaths.length > 0 ? `; ${parseErrorPaths.join(' and ')} could not be parsed` : '';
189
+ return {
157
190
  check: 'Hooks wired',
158
- status: 'fail',
159
- detail: `${missing} not found in ${settingsPaths.filter(existsSync).join(' or ')}`,
160
- fix: 'preflight install',
161
- });
191
+ status: parseErrorPaths.length > 0 ? 'warn' : 'ok',
192
+ detail: `PreToolUse and PostToolUse hooks found${malformedNote}`,
193
+ ...(parseErrorPaths.length > 0 && {
194
+ fix: 'Fix or delete the malformed file(s), then run: preflight install',
195
+ }),
196
+ };
162
197
  }
163
- else {
164
- checks.push({
198
+ if (!anyParsed) {
199
+ const plural = parseErrorPaths.length > 1 ? 'files' : 'file';
200
+ return {
165
201
  check: 'Hooks wired',
166
- status: 'ok',
167
- detail: 'PreToolUse and PostToolUse hooks found',
168
- });
202
+ status: 'fail',
203
+ detail: `Settings ${plural} could not be parsed (malformed JSON): ${parseErrorPaths.join(' and ')}`,
204
+ fix: 'Fix or delete the malformed file(s), then run: preflight install',
205
+ };
169
206
  }
170
- // --- Check 5: Storage writable ---
207
+ const missing = [!hooksPre && 'PreToolUse', !hooksPost && 'PostToolUse']
208
+ .filter(Boolean)
209
+ .join(' and ');
210
+ const searched = settingsPaths.filter(existsSync).join(' or ');
211
+ const malformedNote = parseErrorPaths.length > 0 ? `; ${parseErrorPaths.join(' and ')} could not be parsed` : '';
212
+ return {
213
+ check: 'Hooks wired',
214
+ status: 'fail',
215
+ detail: `${missing} not found in ${searched}${malformedNote}`,
216
+ fix: 'preflight install',
217
+ };
218
+ }
219
+ function checkStorageWritable(storagePath) {
171
220
  try {
172
221
  accessSync(storagePath, constants.W_OK);
173
- checks.push({
174
- check: 'Storage writable',
175
- status: 'ok',
176
- detail: `${storagePath} is writable`,
177
- });
222
+ return { check: 'Storage writable', status: 'ok', detail: `${storagePath} is writable` };
178
223
  }
179
224
  catch {
180
225
  if (!existsSync(storagePath)) {
181
- checks.push({
226
+ return {
182
227
  check: 'Storage writable',
183
228
  status: 'fail',
184
229
  detail: `Directory not found: ${storagePath}`,
185
230
  fix: `mkdir -p ${storagePath} && chmod 700 ${storagePath}`,
186
- });
187
- }
188
- else {
189
- checks.push({
190
- check: 'Storage writable',
191
- status: 'fail',
192
- detail: `Directory exists but is not writable: ${storagePath}`,
193
- fix: `chmod 700 ${storagePath}`,
194
- });
231
+ };
195
232
  }
233
+ return {
234
+ check: 'Storage writable',
235
+ status: 'fail',
236
+ detail: `Directory exists but is not writable: ${storagePath}`,
237
+ fix: `chmod 700 ${storagePath}`,
238
+ };
196
239
  }
197
- // --- Check 6: NR reachable ---
198
- if (mode === 'local') {
199
- checks.push({
200
- check: 'NR reachable',
201
- status: 'skip',
202
- detail: 'Skipped (mode: local)',
203
- });
240
+ }
241
+ async function checkNrReachable(skipReason) {
242
+ if (skipReason !== null) {
243
+ return { check: 'NR reachable', status: 'skip', detail: skipReason };
204
244
  }
205
- else {
206
- const controller = new AbortController();
207
- const timeout = setTimeout(() => controller.abort(), 5000);
208
- try {
209
- await fetch('https://insights-collector.newrelic.com', {
210
- method: 'HEAD',
211
- signal: controller.signal,
212
- });
213
- checks.push({
214
- check: 'NR reachable',
215
- status: 'ok',
216
- detail: 'insights-collector.newrelic.com reachable',
217
- });
218
- }
219
- catch (err) {
220
- const isTimeout = err instanceof Error && err.name === 'AbortError';
221
- checks.push({
245
+ const controller = new AbortController();
246
+ const timeout = setTimeout(() => controller.abort(), 5000);
247
+ try {
248
+ const response = await fetch('https://insights-collector.newrelic.com', {
249
+ method: 'HEAD',
250
+ signal: controller.signal,
251
+ });
252
+ // 401/403 indicate the endpoint is reachable but rejected the credentials.
253
+ // Other 4xx (404, 405, etc.) just mean the HEAD / path has no handler —
254
+ // the endpoint is reachable and a 404 here is unrelated to the licenseKey.
255
+ if (response.status === 401 || response.status === 403) {
256
+ return {
222
257
  check: 'NR reachable',
223
- status: 'fail',
224
- detail: isTimeout
225
- ? 'Request timed out after 5 s endpoint may be reachable but slow'
226
- : 'Could not reach insights-collector.newrelic.com',
227
- fix: isTimeout
228
- ? 'Check for a slow proxy or firewall blocking HTTPS.'
229
- : 'Check network connectivity and that licenseKey is valid.',
230
- });
231
- }
232
- finally {
233
- clearTimeout(timeout);
258
+ status: 'warn',
259
+ detail: `insights-collector.newrelic.com replied with HTTP ${response.status} — endpoint is reachable but rejected the request`,
260
+ fix: 'Verify that licenseKey is correct and has Ingest permissions.',
261
+ };
234
262
  }
263
+ return {
264
+ check: 'NR reachable',
265
+ status: 'ok',
266
+ detail: 'insights-collector.newrelic.com reachable',
267
+ };
268
+ }
269
+ catch (err) {
270
+ const isTimeout = err instanceof Error && err.name === 'AbortError';
271
+ return {
272
+ check: 'NR reachable',
273
+ status: 'fail',
274
+ detail: isTimeout
275
+ ? 'Request timed out after 5 s — endpoint may be reachable but slow'
276
+ : 'Could not reach insights-collector.newrelic.com',
277
+ fix: isTimeout
278
+ ? 'Check for a slow proxy or firewall blocking HTTPS.'
279
+ : 'Check network connectivity and that licenseKey is valid.',
280
+ };
281
+ }
282
+ finally {
283
+ clearTimeout(timeout);
284
+ }
285
+ }
286
+ export async function runDiagnostics(opts) {
287
+ const configPath = opts?.configPath ?? resolve(DEFAULT_STORAGE_PATH, 'config.json');
288
+ const { check: configCheck, context } = checkConfigValid(configPath, opts?.storagePath);
289
+ const settingsPaths = [detectSettingsPath('user')];
290
+ if (isWsl()) {
291
+ const winHome = resolveWindowsHome();
292
+ if (winHome)
293
+ settingsPaths.push(detectSettingsPath('user', winHome));
235
294
  }
236
- return checks;
295
+ return [
296
+ configCheck,
297
+ ...checkDaemon(),
298
+ checkHooksWired(settingsPaths),
299
+ checkStorageWritable(context.storagePath),
300
+ await checkNrReachable(context.nrSkipReason),
301
+ ];
237
302
  }
238
303
  //# sourceMappingURL=diagnostics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/install/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/install/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export declare function errMsg(err: unknown): string;
1
2
  export declare function readJsonFile(path: string): Record<string, unknown>;
2
3
  export declare function readJsonFileStrict(path: string): Record<string, unknown>;
3
4
  export declare function writeJsonFile(path: string, data: Record<string, unknown>, additionalAllowedBase?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"json-utils.d.ts","sourceRoot":"","sources":["../../src/install/json-utils.ts"],"names":[],"mappings":"AAYA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMlE;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcxE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,qBAAqB,CAAC,EAAE,MAAM,GAC7B,IAAI,CAsDN"}
1
+ {"version":3,"file":"json-utils.d.ts","sourceRoot":"","sources":["../../src/install/json-utils.ts"],"names":[],"mappings":"AAYA,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMlE;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcxE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,qBAAqB,CAAC,EAAE,MAAM,GAC7B,IAAI,CAsDN"}
@@ -1,6 +1,9 @@
1
1
  import { readFileSync, writeFileSync, mkdirSync, existsSync, renameSync, unlinkSync, realpathSync, } from 'node:fs';
2
2
  import { basename, dirname, resolve, sep } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
+ export function errMsg(err) {
5
+ return err instanceof Error ? err.message : String(err);
6
+ }
4
7
  export function readJsonFile(path) {
5
8
  try {
6
9
  return JSON.parse(readFileSync(path, 'utf-8'));
@@ -1 +1 @@
1
- {"version":3,"file":"json-utils.js","sourceRoot":"","sources":["../../src/install/json-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-utils.js","sourceRoot":"","sources":["../../src/install/json-utils.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,32 @@
1
+ export declare function unescapeXml(s: string): string;
2
+ export declare function plistPath(): string;
3
+ export declare function dashboardPlistPath(): string;
4
+ export interface FindExecutableNodeDirResult {
5
+ readonly dir: string | null;
6
+ /** True if a `node` binary was found in one of the dirs but lacked execute permission. */
7
+ readonly hasNonExecutable: boolean;
8
+ }
9
+ export declare function findExecutableNodeDir(dirs: string[]): FindExecutableNodeDirResult;
1
10
  export declare function resolveNodeDir(): string;
2
11
  export interface ScheduleStatus {
3
12
  readonly installed: boolean;
13
+ readonly readable: boolean;
4
14
  readonly hour?: number;
5
15
  readonly minute?: number;
6
16
  readonly binaryPath?: string;
7
17
  }
8
18
  export declare function installSchedule(binaryPath: string, hour: number, minute: number): void;
9
- export declare function removeSchedule(): void;
19
+ export declare function removeSchedule(): boolean;
10
20
  export declare function getScheduleStatus(): ScheduleStatus;
11
21
  export interface DashboardDaemonStatus {
12
22
  readonly installed: boolean;
23
+ readonly readable: boolean;
13
24
  readonly binaryPath?: string;
25
+ /** Decoded PATH value from the plist EnvironmentVariables. Absent on older plists that predate node-path injection. */
26
+ readonly envPath?: string;
14
27
  }
15
28
  export declare function installDashboardDaemon(binaryPath: string): void;
16
- export declare function removeDashboardDaemon(): void;
29
+ export declare function removeDashboardDaemon(): boolean;
17
30
  export declare function getDashboardDaemonStatus(): DashboardDaemonStatus;
18
31
  export declare function resolveBinaryPath(): string | null;
19
32
  //# sourceMappingURL=schedule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../src/install/schedule.ts"],"names":[],"mappings":"AA4CA,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAoCD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAetF;AAED,wBAAgB,cAAc,IAAI,IAAI,CASrC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAmBlD;AA+BD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAe/D;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAS5C;AAED,wBAAgB,wBAAwB,IAAI,qBAAqB,CAehE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAgBjD"}
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../src/install/schedule.ts"],"names":[],"mappings":"AA4BA,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO7C;AAKD,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAUD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,0FAA0F;IAC1F,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAMD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,2BAA2B,CA0BjF;AAcD,wBAAgB,cAAc,IAAI,MAAM,CAiBvC;AAoCD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAetF;AAED,wBAAgB,cAAc,IAAI,OAAO,CAuBxC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAoBlD;AAiCD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,uHAAuH;IACvH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAe/D;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAuB/C;AAED,wBAAgB,wBAAwB,IAAI,qBAAqB,CAkBhE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAgBjD"}