@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/.turbo/turbo-build.log +4 -6
- package/.turbo/turbo-test.log +23 -66
- package/CHANGELOG.md +20 -0
- package/dist/cli/packs.d.ts +6 -0
- package/dist/cli/packs.d.ts.map +1 -1
- package/dist/cli/packs.js +42 -8
- package/dist/cli/packs.js.map +1 -1
- package/dist/cli/packs.test.js +56 -1
- package/dist/cli/packs.test.js.map +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +55 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -5
- package/dist/index.js.map +1 -1
- package/dist/tui/installer/StepComplete.d.ts.map +1 -1
- package/dist/tui/installer/StepComplete.js +10 -1
- package/dist/tui/installer/StepComplete.js.map +1 -1
- package/dist/tui/manager/ManagerApp.d.ts +2 -1
- package/dist/tui/manager/ManagerApp.d.ts.map +1 -1
- package/dist/tui/manager/ManagerApp.js +3 -2
- package/dist/tui/manager/ManagerApp.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/packs.test.ts +65 -0
- package/src/cli/packs.ts +56 -10
- package/src/config.ts +57 -0
- package/src/index.ts +92 -5
- package/src/tui/installer/StepComplete.tsx +12 -1
- package/src/tui/manager/ManagerApp.tsx +4 -2
- package/tsconfig.tsbuildinfo +1 -1
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 {
|
|
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
|
|
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
|
|
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(
|
|
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":";AAEA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAoB,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,eAAe,EAAyB,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvB,CAAC;AAQD,SAAS,aAAa,CAAC,MAAwB;IAC7C,YAAY,EAAE,CAAC;IAEf,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9F,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEjE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,MAAM,cAAc,EAAE,CAAC;IAElE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,mCAAmC,aAAa,IAAI,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,aAAa,EAAE,CAAC,CAAC;IACxD,aAAa,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;IACpD,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC/E,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC/E,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC;IACxE,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;IACD,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,KAAK,CAAC,CAAC;IAElD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,qFAAqF;IACrF,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IACD,qCAAqC;IACrC,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,eAAe,aAAa,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;QAC3C,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,cAAc,EAAE,GAAG,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;YACxB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YACzB,UAAU,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,iBAAiB,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,EAAE;YACnD,OAAO,CAAC,GAAG,CACT,sBAAsB,cAAc,OAAO,aAAa,kCAAkC,CAC3F,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAEtB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACnE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAC/E,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,IAAI,oBAAoB,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,eAAe,aAAa,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IACzE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IACjF,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,SAAS;QACZ,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM;IACR,KAAK,QAAQ;QACX,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,GAA8B,EAAE,EAAE;YACnD,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,8BAA8B,CAAC,CAAC;YACrF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACjF,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;YAClF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM;IACR,KAAK,OAAO;QACV,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1B,QAAQ,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAA8B,EAAE,EAAE;gBACpD,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,CACX,6EAA6E,CAC9E,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM;IACR,KAAK,QAAQ;QACX,SAAS,EAAE,CAAC;QACZ,MAAM;IACR,KAAK,OAAO;QACV,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM;IACR,KAAK,QAAQ;QACX,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM;IACR,KAAK,YAAY;QACf,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CACxD,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CACH,CAAC;QACF,MAAM;IACR;QACE,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,+BAA+B,OAAO,IAAI,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,2DAA2D;YAC3D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,IAAI,MAAM,EAAE,CAAC;gBACX,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;oBAChC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QACD,MAAM;AACV,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
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":"
|
|
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
|
|
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":";
|
|
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;
|
|
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:
|
|
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;
|
|
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;AAsB7C,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,UAAU,UAAU,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAmB;IACrE,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,QAAQ,EAAE,EAAE,CAAC;gBACb,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,yBAAgB,IAC9B,IACF,CACP,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
package/src/cli/packs.test.ts
CHANGED
|
@@ -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:
|
|
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 } =
|
|
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(
|
|
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(
|
|
159
|
-
|
|
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
|
+
}
|