@sonde/agent 0.2.4 → 0.2.6

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/index.js CHANGED
@@ -1,12 +1,15 @@
1
1
  #!/usr/bin/env node
2
+ import { spawn } from 'node:child_process';
2
3
  import os from 'node:os';
3
- import { handlePacksCommand } from './cli/packs.js';
4
+ import { packRegistry } from '@sonde/packs';
5
+ import { buildEnabledPacks, handlePacksCommand } from './cli/packs.js';
4
6
  import { checkForUpdate, performUpdate } from './cli/update.js';
5
- import { getConfigPath, loadConfig, saveConfig } from './config.js';
7
+ import { getConfigPath, loadConfig, removePidFile, saveConfig, stopRunningAgent, writePidFile, } from './config.js';
6
8
  import { AgentConnection, enrollWithHub } from './runtime/connection.js';
7
9
  import { ProbeExecutor } from './runtime/executor.js';
8
10
  import { checkNotRoot } from './runtime/privilege.js';
9
11
  import { buildPatterns } from './runtime/scrubber.js';
12
+ import { createSystemChecker, scanForSoftware } from './system/scanner.js';
10
13
  import { VERSION } from './version.js';
11
14
  const args = process.argv.slice(2);
12
15
  const command = args[0];
@@ -21,6 +24,8 @@ function printUsage() {
21
24
  console.log(' install Interactive guided setup (enroll + scan + packs)');
22
25
  console.log(' enroll Enroll this agent with a hub');
23
26
  console.log(' start Start the agent (TUI by default, --headless for daemon)');
27
+ console.log(' stop Stop the background agent');
28
+ console.log(' restart Restart the agent in background');
24
29
  console.log(' status Show agent status');
25
30
  console.log(' packs Manage packs (list, scan, install, uninstall)');
26
31
  console.log(' update Check for and install agent updates');
@@ -48,7 +53,8 @@ function createRuntime(events) {
48
53
  console.error('Error: Agent not enrolled. Run "sonde enroll" first.');
49
54
  process.exit(1);
50
55
  }
51
- const executor = new ProbeExecutor(undefined, undefined, buildPatterns(config.scrubPatterns));
56
+ const enabledPacks = buildEnabledPacks(packRegistry, config.disabledPacks ?? []);
57
+ const executor = new ProbeExecutor(enabledPacks, undefined, buildPatterns(config.scrubPatterns));
52
58
  const connection = new AgentConnection(config, executor, events);
53
59
  return { config, executor, connection };
54
60
  }
@@ -96,6 +102,18 @@ async function cmdEnroll() {
96
102
  // Clear the one-time token after use
97
103
  config.enrollmentToken = undefined;
98
104
  saveConfig(config);
105
+ // Auto-detect packs
106
+ const manifests = [...packRegistry.values()].map((p) => p.manifest);
107
+ const checker = createSystemChecker();
108
+ const scanResults = scanForSoftware(manifests, checker);
109
+ const detectedNames = scanResults
110
+ .filter((r) => r.detected)
111
+ .map((r) => r.packName);
112
+ const allNames = manifests.map((m) => m.name);
113
+ const enabledNames = ['system', ...detectedNames.filter((n) => n !== 'system')];
114
+ const disabledNames = allNames.filter((n) => !enabledNames.includes(n));
115
+ config.disabledPacks = disabledNames;
116
+ saveConfig(config);
99
117
  console.log('Agent enrolled successfully.');
100
118
  console.log(` Hub: ${hubUrl}`);
101
119
  console.log(` Name: ${agentName}`);
@@ -105,6 +123,14 @@ async function cmdEnroll() {
105
123
  console.log(' mTLS: Client certificate issued and saved');
106
124
  }
107
125
  console.log('');
126
+ console.log('Pack detection:');
127
+ for (const name of enabledNames) {
128
+ console.log(` ✓ ${name}`);
129
+ }
130
+ for (const name of disabledNames) {
131
+ console.log(` ✗ ${name} (not detected)`);
132
+ }
133
+ console.log('');
108
134
  console.log('Run "sonde start" to connect.');
109
135
  }
110
136
  function cmdStart() {
@@ -131,21 +157,56 @@ function cmdStart() {
131
157
  console.log(` Hub: ${config.hubUrl}`);
132
158
  console.log('');
133
159
  connection.start();
160
+ writePidFile(process.pid);
134
161
  process.stdin.unref();
135
162
  const shutdown = () => {
136
163
  console.log('\nShutting down...');
137
164
  connection.stop();
165
+ removePidFile();
138
166
  process.exit(0);
139
167
  };
140
168
  process.on('SIGINT', shutdown);
141
169
  process.on('SIGTERM', shutdown);
142
170
  }
171
+ function spawnBackgroundAgent() {
172
+ const child = spawn(process.execPath, [process.argv[1], 'start', '--headless'], {
173
+ detached: true,
174
+ stdio: 'ignore',
175
+ });
176
+ child.unref();
177
+ return child.pid;
178
+ }
143
179
  async function cmdManager() {
180
+ stopRunningAgent();
181
+ let detached = false;
144
182
  const { render } = await import('ink');
145
183
  const { createElement } = await import('react');
146
184
  const { ManagerApp } = await import('./tui/manager/ManagerApp.js');
147
- const { waitUntilExit } = render(createElement(ManagerApp, { createRuntime }));
185
+ const onDetach = () => {
186
+ detached = true;
187
+ spawnBackgroundAgent();
188
+ };
189
+ const { waitUntilExit } = render(createElement(ManagerApp, { createRuntime, onDetach }));
148
190
  await waitUntilExit();
191
+ if (detached) {
192
+ console.log('Agent detached to background.');
193
+ console.log(' sonde stop — stop the background agent');
194
+ console.log(' sonde start — reattach the TUI');
195
+ console.log(' sonde restart — restart in background');
196
+ }
197
+ }
198
+ function cmdStop() {
199
+ if (stopRunningAgent()) {
200
+ console.log('Agent stopped.');
201
+ }
202
+ else {
203
+ console.log('No running agent found.');
204
+ }
205
+ }
206
+ function cmdRestart() {
207
+ stopRunningAgent();
208
+ const pid = spawnBackgroundAgent();
209
+ console.log(`Agent restarted in background (PID: ${pid}).`);
149
210
  }
150
211
  function cmdStatus() {
151
212
  const config = loadConfig();
@@ -154,7 +215,7 @@ function cmdStatus() {
154
215
  console.log(`Run "sonde enroll" to get started.`);
155
216
  return;
156
217
  }
157
- console.log('Sonde Agent Status');
218
+ console.log(`Sonde Agent v${VERSION}`);
158
219
  console.log(` Name: ${config.agentName}`);
159
220
  console.log(` Hub: ${config.hubUrl}`);
160
221
  console.log(` Agent ID: ${config.agentId ?? '(not yet assigned)'}`);
@@ -213,6 +274,12 @@ switch (command) {
213
274
  });
214
275
  }
215
276
  break;
277
+ case 'stop':
278
+ cmdStop();
279
+ break;
280
+ case 'restart':
281
+ cmdRestart();
282
+ break;
216
283
  case 'status':
217
284
  cmdStatus();
218
285
  break;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StepComplete.d.ts","sourceRoot":"","sources":["../../../src/tui/installer/StepComplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAOlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,iBAAiB;IACzB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAkFzF"}
1
+ {"version":3,"file":"StepComplete.d.ts","sourceRoot":"","sources":["../../../src/tui/installer/StepComplete.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,iBAAiB;IACzB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CA2FzF"}
@@ -1,7 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { packRegistry } from '@sonde/packs';
2
3
  import { Box, Text, useApp, useInput } from 'ink';
3
4
  import Spinner from 'ink-spinner';
4
5
  import { useEffect, useState } from 'react';
6
+ import { buildEnabledPacks } from '../../cli/packs.js';
5
7
  import { saveConfig } from '../../config.js';
6
8
  import { enrollWithHub } from '../../runtime/connection.js';
7
9
  import { ProbeExecutor } from '../../runtime/executor.js';
@@ -11,13 +13,20 @@ export function StepComplete({ hubConfig, selectedPacks }) {
11
13
  const [agentId, setAgentId] = useState('');
12
14
  const [error, setError] = useState('');
13
15
  useEffect(() => {
16
+ const selectedNames = new Set(selectedPacks.map((p) => p.name));
17
+ const disabledPacks = [...packRegistry.keys()]
18
+ .filter((name) => !selectedNames.has(name));
14
19
  const config = {
15
20
  hubUrl: hubConfig.hubUrl,
16
21
  apiKey: hubConfig.apiKey,
17
22
  agentName: hubConfig.agentName,
23
+ disabledPacks: disabledPacks.length > 0
24
+ ? disabledPacks
25
+ : undefined,
18
26
  };
19
27
  saveConfig(config);
20
- const executor = new ProbeExecutor();
28
+ const enabledPacks = buildEnabledPacks(packRegistry, disabledPacks);
29
+ const executor = new ProbeExecutor(enabledPacks);
21
30
  enrollWithHub(config, executor)
22
31
  .then(({ agentId: id, apiKey: mintedKey }) => {
23
32
  config.agentId = id;
@@ -1 +1 @@
1
- {"version":3,"file":"StepComplete.js","sourceRoot":"","sources":["../../../src/tui/installer/StepComplete.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StepComplete.js","sourceRoot":"","sources":["../../../src/tui/installer/StepComplete.tsx"],"names":[],"mappings":"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"}
@@ -14,7 +14,8 @@ interface Runtime {
14
14
  }
15
15
  interface ManagerAppProps {
16
16
  createRuntime: (events: ConnectionEvents) => Runtime;
17
+ onDetach?: () => void;
17
18
  }
18
- export declare function ManagerApp({ createRuntime }: ManagerAppProps): JSX.Element;
19
+ export declare function ManagerApp({ createRuntime, onDetach }: ManagerAppProps): JSX.Element;
19
20
  export {};
20
21
  //# sourceMappingURL=ManagerApp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManagerApp.d.ts","sourceRoot":"","sources":["../../../src/tui/manager/ManagerApp.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ/D,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,OAAO;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,UAAU,eAAe;IACvB,aAAa,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC;CACtD;AAID,wBAAgB,UAAU,CAAC,EAAE,aAAa,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA4H1E"}
1
+ {"version":3,"file":"ManagerApp.d.ts","sourceRoot":"","sources":["../../../src/tui/manager/ManagerApp.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ/D,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,OAAO;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,UAAU,eAAe;IACvB,aAAa,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACrD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,wBAAgB,UAAU,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA6HpF"}
@@ -7,7 +7,7 @@ import { AuditView } from './AuditView.js';
7
7
  import { PackManager } from './PackManager.js';
8
8
  import { StatusView } from './StatusView.js';
9
9
  const MAX_ACTIVITY = 50;
10
- export function ManagerApp({ createRuntime }) {
10
+ export function ManagerApp({ createRuntime, onDetach }) {
11
11
  const { exit } = useApp();
12
12
  const [view, setView] = useState('status');
13
13
  const [connected, setConnected] = useState(false);
@@ -63,6 +63,7 @@ export function ManagerApp({ createRuntime }) {
63
63
  break;
64
64
  case 'q':
65
65
  runtimeRef.current?.connection.stop();
66
+ onDetach?.();
66
67
  exit();
67
68
  break;
68
69
  }
@@ -74,6 +75,6 @@ export function ManagerApp({ createRuntime }) {
74
75
  const statusColor = connected ? 'green' : 'yellow';
75
76
  const statusText = connected ? 'Connected' : 'Connecting...';
76
77
  const displayId = agentId ? ` (${agentId})` : '';
77
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Sonde Agent" }), _jsx(Text, { children: " " }), _jsx(Text, { color: statusColor, children: statusText }), _jsx(Text, { color: "gray", children: displayId })] }), view === 'status' && config && executor && auditLog && (_jsx(StatusView, { config: config, connected: connected, agentId: agentId, executor: executor, auditLog: auditLog, activity: activity })), view === 'packs' && executor && _jsx(PackManager, { executor: executor }), view === 'activity' && _jsx(ActivityLog, { activity: activity }), view === 'audit' && auditLog && _jsx(AuditView, { auditLog: auditLog }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: view === 'status' ? 'cyan' : 'gray', bold: view === 'status', children: "s:status" }), _jsx(Text, { children: " " }), _jsx(Text, { color: view === 'packs' ? 'cyan' : 'gray', bold: view === 'packs', children: "p:packs" }), _jsx(Text, { children: " " }), _jsx(Text, { color: view === 'activity' ? 'cyan' : 'gray', bold: view === 'activity', children: "l:activity" }), _jsx(Text, { children: " " }), _jsx(Text, { color: view === 'audit' ? 'cyan' : 'gray', bold: view === 'audit', children: "a:audit" }), _jsx(Text, { children: " " }), _jsx(Text, { color: "gray", children: "q:quit" })] })] }));
78
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Sonde Agent" }), _jsx(Text, { children: " " }), _jsx(Text, { color: statusColor, children: statusText }), _jsx(Text, { color: "gray", children: displayId })] }), view === 'status' && config && executor && auditLog && (_jsx(StatusView, { config: config, connected: connected, agentId: agentId, executor: executor, auditLog: auditLog, activity: activity })), view === 'packs' && executor && _jsx(PackManager, { executor: executor }), view === 'activity' && _jsx(ActivityLog, { activity: activity }), view === 'audit' && auditLog && _jsx(AuditView, { auditLog: auditLog }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: view === 'status' ? 'cyan' : 'gray', bold: view === 'status', children: "s:status" }), _jsx(Text, { children: " " }), _jsx(Text, { color: view === 'packs' ? 'cyan' : 'gray', bold: view === 'packs', children: "p:packs" }), _jsx(Text, { children: " " }), _jsx(Text, { color: view === 'activity' ? 'cyan' : 'gray', bold: view === 'activity', children: "l:activity" }), _jsx(Text, { children: " " }), _jsx(Text, { color: view === 'audit' ? 'cyan' : 'gray', bold: view === 'audit', children: "a:audit" }), _jsx(Text, { children: " " }), _jsx(Text, { color: "gray", children: "q:detach" })] })] }));
78
79
  }
79
80
  //# sourceMappingURL=ManagerApp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManagerApp.js","sourceRoot":"","sources":["../../../src/tui/manager/ManagerApp.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAqB7C,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,UAAU,UAAU,CAAC,EAAE,aAAa,EAAmB;IAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAO,QAAQ,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAsB,CAAC;IAC7D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC,CAAC;IAE9D,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE;gBAClB,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,UAAU,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YACD,cAAc,EAAE,GAAG,EAAE;gBACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;YACjB,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;gBACnB,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;gBAC5B,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YACD,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;gBAC9C,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;oBACnB,MAAM,KAAK,GAAkB;wBAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,KAAK;wBACL,MAAM;wBACN,UAAU;qBACX,CAAC;oBACF,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC9B,OAAO,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvE,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAE3B,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,GAAG;gBACN,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClB,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,CAAC,OAAO,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,CAAC,UAAU,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,CAAC,OAAO,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,GAAG;gBACN,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,EAAE,CAAC;gBACP,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACnC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAC/B,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC;IAEnD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;IAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,aAC5E,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,aAClB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,4BAEhB,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,YAAG,UAAU,GAAQ,EAC7C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,SAAS,GAAQ,IACjC,EAEL,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,QAAQ,IAAI,CACtD,KAAC,UAAU,IACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GAClB,CACH,EAEA,IAAI,KAAK,OAAO,IAAI,QAAQ,IAAI,KAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,GAAI,EAEnE,IAAI,KAAK,UAAU,IAAI,KAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,GAAI,EAE1D,IAAI,KAAK,OAAO,IAAI,QAAQ,IAAI,KAAC,SAAS,IAAC,QAAQ,EAAE,QAAQ,GAAI,EAElE,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,QAAQ,yBAElE,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,wBAEhE,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,UAAU,2BAEtE,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,wBAEhE,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAc,IAC5B,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ManagerApp.js","sourceRoot":"","sources":["../../../src/tui/manager/ManagerApp.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonde/agent",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -4,6 +4,7 @@ import type { SystemChecker } from '../system/scanner.js';
4
4
  import {
5
5
  type PackCommandDeps,
6
6
  type PackState,
7
+ buildEnabledPacks,
7
8
  cmdPacksInstall,
8
9
  cmdPacksList,
9
10
  cmdPacksScan,
@@ -52,6 +53,7 @@ function createDeps(overrides: Partial<PackCommandDeps> = {}): PackCommandDeps {
52
53
  checker: createMockChecker(),
53
54
  getUserGroups: () => [],
54
55
  log: vi.fn(),
56
+ persist: vi.fn(),
55
57
  ...overrides,
56
58
  };
57
59
  }
@@ -210,4 +212,67 @@ describe('cmdPacksUninstall', () => {
210
212
  const log = deps.log as ReturnType<typeof vi.fn>;
211
213
  expect(log).toHaveBeenCalledWith('Error: Pack "docker" is not installed.');
212
214
  });
215
+
216
+ it('persists disabled packs on uninstall', () => {
217
+ const deps = createDeps();
218
+ cmdPacksUninstall('system', deps);
219
+
220
+ const persist = deps.persist as ReturnType<typeof vi.fn>;
221
+ expect(persist).toHaveBeenCalledTimes(1);
222
+ const firstCall = persist.mock.calls[0] as unknown[];
223
+ const disabled = firstCall[0] as string[];
224
+ expect(disabled).toContain('system');
225
+ expect(disabled).toContain('docker');
226
+ });
227
+ });
228
+
229
+ describe('cmdPacksInstall persistence', () => {
230
+ it('persists disabled packs on install', () => {
231
+ const deps = createDeps();
232
+ cmdPacksInstall('docker', deps);
233
+
234
+ const persist = deps.persist as ReturnType<typeof vi.fn>;
235
+ expect(persist).toHaveBeenCalledTimes(1);
236
+ const firstCall = persist.mock.calls[0] as unknown[];
237
+ const disabled = firstCall[0] as string[];
238
+ expect(disabled).not.toContain('docker');
239
+ expect(disabled).not.toContain('system');
240
+ });
241
+
242
+ it('does not persist when install fails', () => {
243
+ const deps = createDeps();
244
+ cmdPacksInstall('nonexistent', deps);
245
+
246
+ const persist = deps.persist as ReturnType<typeof vi.fn>;
247
+ expect(persist).not.toHaveBeenCalled();
248
+ });
249
+ });
250
+
251
+ describe('buildEnabledPacks', () => {
252
+ it('returns all packs when none disabled', () => {
253
+ const registry = new Map([
254
+ ['system', createMockPack('system')],
255
+ ['docker', createMockPack('docker')],
256
+ ]);
257
+ const result = buildEnabledPacks(registry, []);
258
+ expect([...result.keys()]).toEqual(['system', 'docker']);
259
+ });
260
+
261
+ it('filters out disabled packs', () => {
262
+ const registry = new Map([
263
+ ['system', createMockPack('system')],
264
+ ['docker', createMockPack('docker')],
265
+ ['nginx', createMockPack('nginx')],
266
+ ]);
267
+ const result = buildEnabledPacks(registry, ['docker', 'nginx']);
268
+ expect([...result.keys()]).toEqual(['system']);
269
+ });
270
+
271
+ it('ignores disabled names not in registry', () => {
272
+ const registry = new Map([
273
+ ['system', createMockPack('system')],
274
+ ]);
275
+ const result = buildEnabledPacks(registry, ['nonexistent']);
276
+ expect([...result.keys()]).toEqual(['system']);
277
+ });
213
278
  });
package/src/cli/packs.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { Pack } from '@sonde/packs';
2
2
  import { packRegistry } from '@sonde/packs';
3
3
  import type { PackManifest } from '@sonde/shared';
4
+ import { loadConfig, saveConfig } from '../config.js';
4
5
  import {
5
6
  type PermissionCheck,
6
7
  type ScanResult,
@@ -10,6 +11,24 @@ import {
10
11
  scanForSoftware,
11
12
  } from '../system/scanner.js';
12
13
 
14
+ /**
15
+ * Build a pack map filtered by a disabled list.
16
+ * Used by both the CLI commands and ProbeExecutor creation.
17
+ */
18
+ export function buildEnabledPacks(
19
+ registry: ReadonlyMap<string, Pack>,
20
+ disabledPacks: string[],
21
+ ): Map<string, Pack> {
22
+ const disabled = new Set(disabledPacks);
23
+ const result = new Map<string, Pack>();
24
+ for (const [name, pack] of registry) {
25
+ if (!disabled.has(name)) {
26
+ result.set(name, pack);
27
+ }
28
+ }
29
+ return result;
30
+ }
31
+
13
32
  export interface PackState {
14
33
  /** Packs currently loaded/active on this agent */
15
34
  installed: Map<string, Pack>;
@@ -22,17 +41,28 @@ export interface PackCommandDeps {
22
41
  checker: SystemChecker;
23
42
  getUserGroups: () => string[];
24
43
  log: (msg: string) => void;
44
+ persist: (disabledPacks: string[]) => void;
25
45
  }
26
46
 
27
47
  function createDefaultDeps(): PackCommandDeps {
48
+ const config = loadConfig();
49
+ const disabledPacks = config?.disabledPacks ?? [];
28
50
  return {
29
51
  state: {
30
- installed: new Map(packRegistry),
52
+ installed: buildEnabledPacks(packRegistry, disabledPacks),
31
53
  available: packRegistry,
32
54
  },
33
55
  checker: createSystemChecker(),
34
56
  getUserGroups: getProcessUserGroups,
35
57
  log: console.log,
58
+ persist: (disabled) => {
59
+ const current = loadConfig();
60
+ if (current) {
61
+ current.disabledPacks =
62
+ disabled.length > 0 ? disabled : undefined;
63
+ saveConfig(current);
64
+ }
65
+ },
36
66
  };
37
67
  }
38
68
 
@@ -58,17 +88,20 @@ export function cmdPacksList(deps?: PackCommandDeps): void {
58
88
  return;
59
89
  }
60
90
 
91
+ const bold = (s: string) => `\x1b[1m${s}\x1b[0m`;
92
+
61
93
  log('Installed packs:');
62
94
  log('');
63
95
  for (const [name, pack] of state.installed) {
64
96
  const probeCount = pack.manifest.probes.length;
65
- log(` ${name} v${pack.manifest.version} (${probeCount} probes)`);
97
+ log(` ${bold(name)} v${pack.manifest.version} (${probeCount} probes)`);
66
98
  log(` ${pack.manifest.description}`);
67
99
  for (const probe of pack.manifest.probes) {
68
100
  log(` - ${name}.${probe.name}: ${probe.description}`);
69
101
  }
70
102
  log('');
71
103
  }
104
+ log(` Manage: sonde packs install ${bold('<name>')} | uninstall ${bold('<name>')}`);
72
105
  }
73
106
 
74
107
  export function cmdPacksScan(deps?: PackCommandDeps): ScanResult[] {
@@ -112,7 +145,8 @@ export function cmdPacksInstall(
112
145
  name: string,
113
146
  deps?: PackCommandDeps,
114
147
  ): { success: boolean; permissions?: PermissionCheck } {
115
- const { state, checker, getUserGroups, log } = deps ?? createDefaultDeps();
148
+ const { state, checker, getUserGroups, log, persist } =
149
+ deps ?? createDefaultDeps();
116
150
 
117
151
  const pack = state.available.get(name);
118
152
  if (!pack) {
@@ -128,7 +162,9 @@ export function cmdPacksInstall(
128
162
 
129
163
  // Check permissions
130
164
  const userGroups = getUserGroups();
131
- const permissions = checkPackPermissions(pack.manifest, checker, userGroups);
165
+ const permissions = checkPackPermissions(
166
+ pack.manifest, checker, userGroups,
167
+ );
132
168
 
133
169
  if (!permissions.satisfied) {
134
170
  log(`Pack "${name}" requires additional permissions:`);
@@ -150,13 +186,19 @@ export function cmdPacksInstall(
150
186
  }
151
187
 
152
188
  state.installed.set(name, pack);
189
+ const disabled = [...state.available.keys()]
190
+ .filter((k) => !state.installed.has(k));
191
+ persist(disabled);
153
192
  log(`Pack "${name}" installed successfully.`);
154
193
  log(` ${pack.manifest.probes.length} probes now available.`);
155
194
  return { success: true, permissions };
156
195
  }
157
196
 
158
- export function cmdPacksUninstall(name: string, deps?: PackCommandDeps): boolean {
159
- const { state, log } = deps ?? createDefaultDeps();
197
+ export function cmdPacksUninstall(
198
+ name: string,
199
+ deps?: PackCommandDeps,
200
+ ): boolean {
201
+ const { state, log, persist } = deps ?? createDefaultDeps();
160
202
 
161
203
  if (!state.installed.has(name)) {
162
204
  log(`Error: Pack "${name}" is not installed.`);
@@ -164,19 +206,23 @@ export function cmdPacksUninstall(name: string, deps?: PackCommandDeps): boolean
164
206
  }
165
207
 
166
208
  state.installed.delete(name);
209
+ const disabled = [...state.available.keys()]
210
+ .filter((k) => !state.installed.has(k));
211
+ persist(disabled);
167
212
  log(`Pack "${name}" uninstalled.`);
168
213
  return true;
169
214
  }
170
215
 
171
216
  export function handlePacksCommand(subArgs: string[]): void {
172
217
  const subcommand = subArgs[0];
218
+ const deps = createDefaultDeps();
173
219
 
174
220
  switch (subcommand) {
175
221
  case 'list':
176
- cmdPacksList();
222
+ cmdPacksList(deps);
177
223
  break;
178
224
  case 'scan':
179
- cmdPacksScan();
225
+ cmdPacksScan(deps);
180
226
  break;
181
227
  case 'install': {
182
228
  const name = subArgs[1];
@@ -184,7 +230,7 @@ export function handlePacksCommand(subArgs: string[]): void {
184
230
  console.error('Usage: sonde packs install <name>');
185
231
  process.exit(1);
186
232
  }
187
- const result = cmdPacksInstall(name);
233
+ const result = cmdPacksInstall(name, deps);
188
234
  if (!result.success) process.exit(1);
189
235
  break;
190
236
  }
@@ -194,7 +240,7 @@ export function handlePacksCommand(subArgs: string[]): void {
194
240
  console.error('Usage: sonde packs uninstall <name>');
195
241
  process.exit(1);
196
242
  }
197
- if (!cmdPacksUninstall(name)) process.exit(1);
243
+ if (!cmdPacksUninstall(name, deps)) process.exit(1);
198
244
  break;
199
245
  }
200
246
  default:
package/src/config.ts CHANGED
@@ -13,10 +13,12 @@ export interface AgentConfig {
13
13
  caCertPath?: string;
14
14
  scrubPatterns?: string[];
15
15
  allowUnsignedPacks?: boolean;
16
+ disabledPacks?: string[];
16
17
  }
17
18
 
18
19
  const CONFIG_DIR = path.join(os.homedir(), '.sonde');
19
20
  const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
21
+ const PID_FILE = path.join(CONFIG_DIR, 'agent.pid');
20
22
 
21
23
  export function getConfigPath(): string {
22
24
  return CONFIG_FILE;
@@ -74,3 +76,58 @@ export function saveCerts(
74
76
  config.keyPath = keyPath;
75
77
  config.caCertPath = caCertPath;
76
78
  }
79
+
80
+ export function writePidFile(pid: number): void {
81
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
82
+ fs.writeFileSync(PID_FILE, String(pid), 'utf-8');
83
+ }
84
+
85
+ /**
86
+ * Read PID file and verify the process is still alive.
87
+ * Returns undefined if file missing or process is dead.
88
+ */
89
+ export function readPidFile(): number | undefined {
90
+ let raw: string;
91
+ try {
92
+ raw = fs.readFileSync(PID_FILE, 'utf-8').trim();
93
+ } catch {
94
+ return undefined;
95
+ }
96
+
97
+ const pid = Number.parseInt(raw, 10);
98
+ if (Number.isNaN(pid)) return undefined;
99
+
100
+ try {
101
+ process.kill(pid, 0);
102
+ return pid;
103
+ } catch {
104
+ // Process is dead — clean up stale PID file
105
+ removePidFile();
106
+ return undefined;
107
+ }
108
+ }
109
+
110
+ export function removePidFile(): void {
111
+ try {
112
+ fs.unlinkSync(PID_FILE);
113
+ } catch {
114
+ // Ignore if already removed
115
+ }
116
+ }
117
+
118
+ /**
119
+ * Stop a running background agent if one exists.
120
+ * Returns true if an agent was stopped.
121
+ */
122
+ export function stopRunningAgent(): boolean {
123
+ const pid = readPidFile();
124
+ if (pid === undefined) return false;
125
+
126
+ try {
127
+ process.kill(pid, 'SIGTERM');
128
+ } catch {
129
+ // Process already gone
130
+ }
131
+ removePidFile();
132
+ return true;
133
+ }