@sonde/agent 0.0.0
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/cli/packs.d.ts +23 -0
- package/dist/cli/packs.d.ts.map +1 -0
- package/dist/cli/packs.js +172 -0
- package/dist/cli/packs.js.map +1 -0
- package/dist/cli/packs.test.d.ts +2 -0
- package/dist/cli/packs.test.d.ts.map +1 -0
- package/dist/cli/packs.test.js +171 -0
- package/dist/cli/packs.test.js.map +1 -0
- package/dist/config.d.ts +18 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +38 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +191 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/attestation.d.ts +9 -0
- package/dist/runtime/attestation.d.ts.map +1 -0
- package/dist/runtime/attestation.js +32 -0
- package/dist/runtime/attestation.js.map +1 -0
- package/dist/runtime/attestation.test.d.ts +2 -0
- package/dist/runtime/attestation.test.d.ts.map +1 -0
- package/dist/runtime/attestation.test.js +59 -0
- package/dist/runtime/attestation.test.js.map +1 -0
- package/dist/runtime/audit.d.ts +19 -0
- package/dist/runtime/audit.d.ts.map +1 -0
- package/dist/runtime/audit.js +52 -0
- package/dist/runtime/audit.js.map +1 -0
- package/dist/runtime/audit.test.d.ts +2 -0
- package/dist/runtime/audit.test.d.ts.map +1 -0
- package/dist/runtime/audit.test.js +53 -0
- package/dist/runtime/audit.test.js.map +1 -0
- package/dist/runtime/connection.d.ts +55 -0
- package/dist/runtime/connection.d.ts.map +1 -0
- package/dist/runtime/connection.js +325 -0
- package/dist/runtime/connection.js.map +1 -0
- package/dist/runtime/connection.test.d.ts +2 -0
- package/dist/runtime/connection.test.d.ts.map +1 -0
- package/dist/runtime/connection.test.js +221 -0
- package/dist/runtime/connection.test.js.map +1 -0
- package/dist/runtime/executor.d.ts +21 -0
- package/dist/runtime/executor.d.ts.map +1 -0
- package/dist/runtime/executor.js +89 -0
- package/dist/runtime/executor.js.map +1 -0
- package/dist/runtime/executor.test.d.ts +2 -0
- package/dist/runtime/executor.test.d.ts.map +1 -0
- package/dist/runtime/executor.test.js +88 -0
- package/dist/runtime/executor.test.js.map +1 -0
- package/dist/runtime/privilege.d.ts +9 -0
- package/dist/runtime/privilege.d.ts.map +1 -0
- package/dist/runtime/privilege.js +35 -0
- package/dist/runtime/privilege.js.map +1 -0
- package/dist/runtime/privilege.test.d.ts +2 -0
- package/dist/runtime/privilege.test.d.ts.map +1 -0
- package/dist/runtime/privilege.test.js +22 -0
- package/dist/runtime/privilege.test.js.map +1 -0
- package/dist/runtime/scrubber.d.ts +17 -0
- package/dist/runtime/scrubber.d.ts.map +1 -0
- package/dist/runtime/scrubber.js +84 -0
- package/dist/runtime/scrubber.js.map +1 -0
- package/dist/runtime/scrubber.test.d.ts +2 -0
- package/dist/runtime/scrubber.test.d.ts.map +1 -0
- package/dist/runtime/scrubber.test.js +72 -0
- package/dist/runtime/scrubber.test.js.map +1 -0
- package/dist/system/scanner.d.ts +32 -0
- package/dist/system/scanner.d.ts.map +1 -0
- package/dist/system/scanner.js +90 -0
- package/dist/system/scanner.js.map +1 -0
- package/dist/system/scanner.test.d.ts +2 -0
- package/dist/system/scanner.test.d.ts.map +1 -0
- package/dist/system/scanner.test.js +121 -0
- package/dist/system/scanner.test.js.map +1 -0
- package/dist/tui/installer/InstallerApp.d.ts +11 -0
- package/dist/tui/installer/InstallerApp.d.ts.map +1 -0
- package/dist/tui/installer/InstallerApp.js +32 -0
- package/dist/tui/installer/InstallerApp.js.map +1 -0
- package/dist/tui/installer/StepComplete.d.ts +9 -0
- package/dist/tui/installer/StepComplete.d.ts.map +1 -0
- package/dist/tui/installer/StepComplete.js +46 -0
- package/dist/tui/installer/StepComplete.js.map +1 -0
- package/dist/tui/installer/StepHub.d.ts +8 -0
- package/dist/tui/installer/StepHub.d.ts.map +1 -0
- package/dist/tui/installer/StepHub.js +65 -0
- package/dist/tui/installer/StepHub.js.map +1 -0
- package/dist/tui/installer/StepPacks.d.ts +9 -0
- package/dist/tui/installer/StepPacks.d.ts.map +1 -0
- package/dist/tui/installer/StepPacks.js +35 -0
- package/dist/tui/installer/StepPacks.js.map +1 -0
- package/dist/tui/installer/StepPermissions.d.ts +9 -0
- package/dist/tui/installer/StepPermissions.d.ts.map +1 -0
- package/dist/tui/installer/StepPermissions.js +39 -0
- package/dist/tui/installer/StepPermissions.js.map +1 -0
- package/dist/tui/installer/StepScan.d.ts +7 -0
- package/dist/tui/installer/StepScan.d.ts.map +1 -0
- package/dist/tui/installer/StepScan.js +38 -0
- package/dist/tui/installer/StepScan.js.map +1 -0
- package/dist/tui/manager/ActivityLog.d.ts +7 -0
- package/dist/tui/manager/ActivityLog.d.ts.map +1 -0
- package/dist/tui/manager/ActivityLog.js +25 -0
- package/dist/tui/manager/ActivityLog.js.map +1 -0
- package/dist/tui/manager/AuditView.d.ts +7 -0
- package/dist/tui/manager/AuditView.d.ts.map +1 -0
- package/dist/tui/manager/AuditView.js +32 -0
- package/dist/tui/manager/AuditView.js.map +1 -0
- package/dist/tui/manager/ManagerApp.d.ts +20 -0
- package/dist/tui/manager/ManagerApp.d.ts.map +1 -0
- package/dist/tui/manager/ManagerApp.js +79 -0
- package/dist/tui/manager/ManagerApp.js.map +1 -0
- package/dist/tui/manager/PackManager.d.ts +7 -0
- package/dist/tui/manager/PackManager.d.ts.map +1 -0
- package/dist/tui/manager/PackManager.js +22 -0
- package/dist/tui/manager/PackManager.js.map +1 -0
- package/dist/tui/manager/StatusView.d.ts +15 -0
- package/dist/tui/manager/StatusView.d.ts.map +1 -0
- package/dist/tui/manager/StatusView.js +10 -0
- package/dist/tui/manager/StatusView.js.map +1 -0
- package/package.json +45 -0
- package/scripts/install.sh +11 -0
- package/src/cli/packs.test.ts +213 -0
- package/src/cli/packs.ts +214 -0
- package/src/config.ts +62 -0
- package/src/index.ts +218 -0
- package/src/runtime/attestation.test.ts +69 -0
- package/src/runtime/attestation.ts +36 -0
- package/src/runtime/audit.test.ts +64 -0
- package/src/runtime/audit.ts +70 -0
- package/src/runtime/connection.test.ts +303 -0
- package/src/runtime/connection.ts +389 -0
- package/src/runtime/executor.test.ts +112 -0
- package/src/runtime/executor.ts +107 -0
- package/src/runtime/privilege.test.ts +25 -0
- package/src/runtime/privilege.ts +36 -0
- package/src/runtime/scrubber.test.ts +84 -0
- package/src/runtime/scrubber.ts +96 -0
- package/src/system/scanner.test.ts +154 -0
- package/src/system/scanner.ts +133 -0
- package/src/tui/installer/InstallerApp.tsx +86 -0
- package/src/tui/installer/StepComplete.tsx +94 -0
- package/src/tui/installer/StepHub.tsx +111 -0
- package/src/tui/installer/StepPacks.tsx +73 -0
- package/src/tui/installer/StepPermissions.tsx +104 -0
- package/src/tui/installer/StepScan.tsx +82 -0
- package/src/tui/manager/ActivityLog.tsx +57 -0
- package/src/tui/manager/AuditView.tsx +73 -0
- package/src/tui/manager/ManagerApp.tsx +157 -0
- package/src/tui/manager/PackManager.tsx +71 -0
- package/src/tui/manager/StatusView.tsx +103 -0
- package/tsconfig.json +13 -0
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { checkPackPermissions, scanForSoftware } from './scanner.js';
|
|
3
|
+
function createMockChecker(overrides = {}) {
|
|
4
|
+
return {
|
|
5
|
+
commandExists: () => false,
|
|
6
|
+
fileExists: () => false,
|
|
7
|
+
serviceExists: () => false,
|
|
8
|
+
...overrides,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
const dockerManifest = {
|
|
12
|
+
name: 'docker',
|
|
13
|
+
version: '0.1.0',
|
|
14
|
+
description: 'Docker probes',
|
|
15
|
+
requires: { groups: ['docker'], files: [], commands: ['docker'] },
|
|
16
|
+
probes: [],
|
|
17
|
+
detect: { commands: ['docker'] },
|
|
18
|
+
};
|
|
19
|
+
const systemdManifest = {
|
|
20
|
+
name: 'systemd',
|
|
21
|
+
version: '0.1.0',
|
|
22
|
+
description: 'systemd probes',
|
|
23
|
+
requires: { groups: [], files: [], commands: ['systemctl'] },
|
|
24
|
+
probes: [],
|
|
25
|
+
detect: { files: ['/run/systemd/system'] },
|
|
26
|
+
};
|
|
27
|
+
const noDetectManifest = {
|
|
28
|
+
name: 'custom',
|
|
29
|
+
version: '0.1.0',
|
|
30
|
+
description: 'No detect rules',
|
|
31
|
+
requires: { groups: [], files: [], commands: [] },
|
|
32
|
+
probes: [],
|
|
33
|
+
};
|
|
34
|
+
describe('scanForSoftware', () => {
|
|
35
|
+
it('detects software when command exists', () => {
|
|
36
|
+
const checker = createMockChecker({
|
|
37
|
+
commandExists: (cmd) => cmd === 'docker',
|
|
38
|
+
});
|
|
39
|
+
const results = scanForSoftware([dockerManifest], checker);
|
|
40
|
+
expect(results).toHaveLength(1);
|
|
41
|
+
expect(results[0]?.detected).toBe(true);
|
|
42
|
+
expect(results[0]?.matchedCommands).toEqual(['docker']);
|
|
43
|
+
});
|
|
44
|
+
it('detects software when file exists', () => {
|
|
45
|
+
const checker = createMockChecker({
|
|
46
|
+
fileExists: (p) => p === '/run/systemd/system',
|
|
47
|
+
});
|
|
48
|
+
const results = scanForSoftware([systemdManifest], checker);
|
|
49
|
+
expect(results).toHaveLength(1);
|
|
50
|
+
expect(results[0]?.detected).toBe(true);
|
|
51
|
+
expect(results[0]?.matchedFiles).toEqual(['/run/systemd/system']);
|
|
52
|
+
});
|
|
53
|
+
it('marks as not detected when no checks pass', () => {
|
|
54
|
+
const checker = createMockChecker();
|
|
55
|
+
const results = scanForSoftware([dockerManifest], checker);
|
|
56
|
+
expect(results[0]?.detected).toBe(false);
|
|
57
|
+
expect(results[0]?.matchedCommands).toEqual([]);
|
|
58
|
+
});
|
|
59
|
+
it('handles manifests without detect rules', () => {
|
|
60
|
+
const checker = createMockChecker();
|
|
61
|
+
const results = scanForSoftware([noDetectManifest], checker);
|
|
62
|
+
expect(results[0]?.detected).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
it('scans multiple manifests', () => {
|
|
65
|
+
const checker = createMockChecker({
|
|
66
|
+
commandExists: (cmd) => cmd === 'docker',
|
|
67
|
+
fileExists: () => false,
|
|
68
|
+
});
|
|
69
|
+
const results = scanForSoftware([dockerManifest, systemdManifest, noDetectManifest], checker);
|
|
70
|
+
expect(results).toHaveLength(3);
|
|
71
|
+
expect(results[0]?.detected).toBe(true);
|
|
72
|
+
expect(results[1]?.detected).toBe(false);
|
|
73
|
+
expect(results[2]?.detected).toBe(false);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe('checkPackPermissions', () => {
|
|
77
|
+
it('returns satisfied when all requirements met', () => {
|
|
78
|
+
const checker = createMockChecker({
|
|
79
|
+
commandExists: () => true,
|
|
80
|
+
fileExists: () => true,
|
|
81
|
+
});
|
|
82
|
+
const result = checkPackPermissions(dockerManifest, checker, ['docker']);
|
|
83
|
+
expect(result.satisfied).toBe(true);
|
|
84
|
+
expect(result.missingGroups).toEqual([]);
|
|
85
|
+
expect(result.missingCommands).toEqual([]);
|
|
86
|
+
});
|
|
87
|
+
it('reports missing groups', () => {
|
|
88
|
+
const checker = createMockChecker({
|
|
89
|
+
commandExists: () => true,
|
|
90
|
+
});
|
|
91
|
+
const result = checkPackPermissions(dockerManifest, checker, []);
|
|
92
|
+
expect(result.satisfied).toBe(false);
|
|
93
|
+
expect(result.missingGroups).toEqual(['docker']);
|
|
94
|
+
});
|
|
95
|
+
it('reports missing commands', () => {
|
|
96
|
+
const checker = createMockChecker({
|
|
97
|
+
commandExists: () => false,
|
|
98
|
+
});
|
|
99
|
+
const result = checkPackPermissions(dockerManifest, checker, ['docker']);
|
|
100
|
+
expect(result.satisfied).toBe(false);
|
|
101
|
+
expect(result.missingCommands).toEqual(['docker']);
|
|
102
|
+
});
|
|
103
|
+
it('reports missing files', () => {
|
|
104
|
+
const manifest = {
|
|
105
|
+
name: 'test',
|
|
106
|
+
version: '0.1.0',
|
|
107
|
+
description: 'Test',
|
|
108
|
+
requires: { groups: [], files: ['/etc/special.conf'], commands: [] },
|
|
109
|
+
probes: [],
|
|
110
|
+
};
|
|
111
|
+
const checker = createMockChecker({ fileExists: () => false });
|
|
112
|
+
const result = checkPackPermissions(manifest, checker, []);
|
|
113
|
+
expect(result.satisfied).toBe(false);
|
|
114
|
+
expect(result.missingFiles).toEqual(['/etc/special.conf']);
|
|
115
|
+
});
|
|
116
|
+
it('returns satisfied for packs with no requirements', () => {
|
|
117
|
+
const result = checkPackPermissions(noDetectManifest, createMockChecker(), []);
|
|
118
|
+
expect(result.satisfied).toBe(true);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=scanner.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.test.js","sourceRoot":"","sources":["../../src/system/scanner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface HubConfig {
|
|
2
|
+
hubUrl: string;
|
|
3
|
+
apiKey: string;
|
|
4
|
+
agentName: string;
|
|
5
|
+
}
|
|
6
|
+
interface InstallerAppProps {
|
|
7
|
+
initialHubUrl?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function InstallerApp({ initialHubUrl }: InstallerAppProps): JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=InstallerApp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InstallerApp.d.ts","sourceRoot":"","sources":["../../../src/tui/installer/InstallerApp.tsx"],"names":[],"mappings":"AAYA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAUD,UAAU,iBAAiB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,EAAE,aAAa,EAAE,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAuD9E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { StepComplete } from './StepComplete.js';
|
|
5
|
+
import { StepHub } from './StepHub.js';
|
|
6
|
+
import { StepPacks } from './StepPacks.js';
|
|
7
|
+
import { StepPermissions } from './StepPermissions.js';
|
|
8
|
+
import { StepScan } from './StepScan.js';
|
|
9
|
+
const STEP_LABELS = {
|
|
10
|
+
hub: 'Hub Connection',
|
|
11
|
+
scan: 'System Scan',
|
|
12
|
+
packs: 'Pack Selection',
|
|
13
|
+
permissions: 'Permissions',
|
|
14
|
+
complete: 'Complete',
|
|
15
|
+
};
|
|
16
|
+
export function InstallerApp({ initialHubUrl }) {
|
|
17
|
+
const [step, setStep] = useState('hub');
|
|
18
|
+
const [hubConfig, setHubConfig] = useState({ hubUrl: '', apiKey: '', agentName: '' });
|
|
19
|
+
const [scanResults, setScanResults] = useState([]);
|
|
20
|
+
const [selectedPacks, setSelectedPacks] = useState([]);
|
|
21
|
+
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 Installer" }), _jsxs(Text, { color: "gray", children: [" \u2014 ", STEP_LABELS[step]] })] }), step === 'hub' && (_jsx(StepHub, { initialHubUrl: initialHubUrl, onNext: (config) => {
|
|
22
|
+
setHubConfig(config);
|
|
23
|
+
setStep('scan');
|
|
24
|
+
} })), step === 'scan' && (_jsx(StepScan, { onNext: (results) => {
|
|
25
|
+
setScanResults(results);
|
|
26
|
+
setStep('packs');
|
|
27
|
+
} })), step === 'packs' && (_jsx(StepPacks, { scanResults: scanResults, onNext: (packs) => {
|
|
28
|
+
setSelectedPacks(packs);
|
|
29
|
+
setStep('permissions');
|
|
30
|
+
} })), step === 'permissions' && (_jsx(StepPermissions, { selectedPacks: selectedPacks, onNext: () => setStep('complete'), onBack: () => setStep('packs') })), step === 'complete' && _jsx(StepComplete, { hubConfig: hubConfig, selectedPacks: selectedPacks })] }));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=InstallerApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InstallerApp.js","sourceRoot":"","sources":["../../../src/tui/installer/InstallerApp.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAUzC,MAAM,WAAW,GAAyB;IACxC,GAAG,EAAE,gBAAgB;IACrB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;CACrB,CAAC;AAMF,MAAM,UAAU,YAAY,CAAC,EAAE,aAAa,EAAqB;IAC/D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAO,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACjG,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IAEvE,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,gCAEhB,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAK,WAAW,CAAC,IAAI,CAAC,IAAQ,IAC5C,EAEL,IAAI,KAAK,KAAK,IAAI,CACjB,KAAC,OAAO,IACN,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;oBACjB,YAAY,CAAC,MAAM,CAAC,CAAC;oBACrB,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC,GACD,CACH,EAEA,IAAI,KAAK,MAAM,IAAI,CAClB,KAAC,QAAQ,IACP,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;oBAClB,cAAc,CAAC,OAAO,CAAC,CAAC;oBACxB,OAAO,CAAC,OAAO,CAAC,CAAC;gBACnB,CAAC,GACD,CACH,EAEA,IAAI,KAAK,OAAO,IAAI,CACnB,KAAC,SAAS,IACR,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBACxB,OAAO,CAAC,aAAa,CAAC,CAAC;gBACzB,CAAC,GACD,CACH,EAEA,IAAI,KAAK,aAAa,IAAI,CACzB,KAAC,eAAe,IACd,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EACjC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAC9B,CACH,EAEA,IAAI,KAAK,UAAU,IAAI,KAAC,YAAY,IAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,GAAI,IACxF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PackManifest } from '@sonde/shared';
|
|
2
|
+
import type { HubConfig } from './InstallerApp.js';
|
|
3
|
+
interface StepCompleteProps {
|
|
4
|
+
hubConfig: HubConfig;
|
|
5
|
+
selectedPacks: PackManifest[];
|
|
6
|
+
}
|
|
7
|
+
export declare function StepComplete({ hubConfig, selectedPacks }: StepCompleteProps): JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=StepComplete.d.ts.map
|
|
@@ -0,0 +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,CA+EzF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useApp, useInput } from 'ink';
|
|
3
|
+
import Spinner from 'ink-spinner';
|
|
4
|
+
import { useEffect, useState } from 'react';
|
|
5
|
+
import { saveConfig } from '../../config.js';
|
|
6
|
+
import { enrollWithHub } from '../../runtime/connection.js';
|
|
7
|
+
import { ProbeExecutor } from '../../runtime/executor.js';
|
|
8
|
+
export function StepComplete({ hubConfig, selectedPacks }) {
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
const [enrolling, setEnrolling] = useState(true);
|
|
11
|
+
const [agentId, setAgentId] = useState('');
|
|
12
|
+
const [error, setError] = useState('');
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const config = {
|
|
15
|
+
hubUrl: hubConfig.hubUrl,
|
|
16
|
+
apiKey: hubConfig.apiKey,
|
|
17
|
+
agentName: hubConfig.agentName,
|
|
18
|
+
};
|
|
19
|
+
saveConfig(config);
|
|
20
|
+
const executor = new ProbeExecutor();
|
|
21
|
+
enrollWithHub(config, executor)
|
|
22
|
+
.then(({ agentId: id }) => {
|
|
23
|
+
config.agentId = id;
|
|
24
|
+
saveConfig(config);
|
|
25
|
+
setAgentId(id);
|
|
26
|
+
setEnrolling(false);
|
|
27
|
+
})
|
|
28
|
+
.catch((err) => {
|
|
29
|
+
setError(err.message);
|
|
30
|
+
setEnrolling(false);
|
|
31
|
+
});
|
|
32
|
+
}, [hubConfig]);
|
|
33
|
+
useInput(() => {
|
|
34
|
+
if (!enrolling) {
|
|
35
|
+
exit();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
if (enrolling) {
|
|
39
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsxs(Text, { children: [" Enrolling with hub at ", hubConfig.hubUrl, "..."] })] }));
|
|
40
|
+
}
|
|
41
|
+
if (error) {
|
|
42
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "red", children: ["Enrollment failed: ", error] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Press any key to exit." }) })] }));
|
|
43
|
+
}
|
|
44
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "green", bold: true, children: "Enrollment successful!" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { children: [" Agent ID: ", agentId] }), _jsxs(Text, { children: [" Hub URL: ", hubConfig.hubUrl] }), _jsxs(Text, { children: [" Name: ", hubConfig.agentName] }), _jsxs(Text, { children: [' ', "Packs: ", selectedPacks.map((p) => p.name).join(', ') || '(none)'] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Next steps:" }), _jsx(Text, { color: "cyan", children: " sonde start" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Press any key to exit." }) })] }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=StepComplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepComplete.js","sourceRoot":"","sources":["../../../src/tui/installer/StepComplete.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAoB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ1D,MAAM,UAAU,YAAY,CAAC,EAAE,SAAS,EAAE,aAAa,EAAqB;IAC1E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAgB;YAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,SAAS,EAAE,SAAS,CAAC,SAAS;SAC/B,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,CAAC;QAEnB,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAErC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC;aAC5B,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE;YACxB,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YACpB,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACpB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,QAAQ,CAAC,GAAG,EAAE;QACZ,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAChB,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,GAClB,EACP,MAAC,IAAI,0CAAyB,SAAS,CAAC,MAAM,WAAW,IACrD,CACP,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,oCAAqB,KAAK,IAAQ,EACnD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uCAA8B,GAC5C,IACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,6CAEjB,EACP,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,MAAC,IAAI,8BAAa,OAAO,IAAQ,EACjC,MAAC,IAAI,6BAAY,SAAS,CAAC,MAAM,IAAQ,EACzC,MAAC,IAAI,0BAAS,SAAS,CAAC,SAAS,IAAQ,EACzC,MAAC,IAAI,eACF,IAAI,aAAS,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,IAChE,IACH,EACN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,IAAI,kCAAmB,EAC7B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,6BAAoB,IAClC,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uCAA8B,GAC5C,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HubConfig } from './InstallerApp.js';
|
|
2
|
+
interface StepHubProps {
|
|
3
|
+
onNext: (config: HubConfig) => void;
|
|
4
|
+
initialHubUrl?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function StepHub({ onNext, initialHubUrl }: StepHubProps): JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=StepHub.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepHub.d.ts","sourceRoot":"","sources":["../../../src/tui/installer/StepHub.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,YAAY;IACpB,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAUD,wBAAgB,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CA2F5E"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
import TextInput from 'ink-text-input';
|
|
5
|
+
import { useState } from 'react';
|
|
6
|
+
const FIELDS = ['hubUrl', 'apiKey', 'agentName'];
|
|
7
|
+
const FIELD_LABELS = {
|
|
8
|
+
hubUrl: 'Hub URL',
|
|
9
|
+
apiKey: 'API Key',
|
|
10
|
+
agentName: 'Agent Name',
|
|
11
|
+
};
|
|
12
|
+
export function StepHub({ onNext, initialHubUrl }) {
|
|
13
|
+
const [activeField, setActiveField] = useState(initialHubUrl ? 'apiKey' : 'hubUrl');
|
|
14
|
+
const [hubUrl, setHubUrl] = useState(initialHubUrl ?? '');
|
|
15
|
+
const [apiKey, setApiKey] = useState('');
|
|
16
|
+
const [agentName, setAgentName] = useState(os.hostname());
|
|
17
|
+
const [error, setError] = useState('');
|
|
18
|
+
const values = { hubUrl, apiKey, agentName };
|
|
19
|
+
const setters = {
|
|
20
|
+
hubUrl: setHubUrl,
|
|
21
|
+
apiKey: setApiKey,
|
|
22
|
+
agentName: setAgentName,
|
|
23
|
+
};
|
|
24
|
+
useInput((_input, key) => {
|
|
25
|
+
if (key.tab || (key.return && activeField !== FIELDS[FIELDS.length - 1])) {
|
|
26
|
+
const currentIdx = FIELDS.indexOf(activeField);
|
|
27
|
+
const nextIdx = (currentIdx + 1) % FIELDS.length;
|
|
28
|
+
const nextField = FIELDS[nextIdx];
|
|
29
|
+
if (nextField)
|
|
30
|
+
setActiveField(nextField);
|
|
31
|
+
setError('');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (key.return && activeField === FIELDS[FIELDS.length - 1]) {
|
|
35
|
+
// Validate and submit
|
|
36
|
+
if (!hubUrl.trim()) {
|
|
37
|
+
setError('Hub URL is required');
|
|
38
|
+
setActiveField('hubUrl');
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
new URL(hubUrl.trim());
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
setError('Invalid URL format');
|
|
46
|
+
setActiveField('hubUrl');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (!apiKey.trim()) {
|
|
50
|
+
setError('API Key is required');
|
|
51
|
+
setActiveField('apiKey');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
onNext({
|
|
55
|
+
hubUrl: hubUrl.trim(),
|
|
56
|
+
apiKey: apiKey.trim(),
|
|
57
|
+
agentName: agentName.trim() || os.hostname(),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "gray", children: "Enter your hub connection details. Tab to move between fields." }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: FIELDS.map((field) => (_jsxs(Box, { children: [_jsx(Box, { width: 14, children: _jsxs(Text, { color: activeField === field ? 'cyan' : 'white', children: [activeField === field ? '> ' : ' ', FIELD_LABELS[field], ":"] }) }), _jsx(Box, { children: activeField === field ? (_jsx(TextInput, { value: values[field], onChange: setters[field], placeholder: field === 'hubUrl' ? 'http://localhost:3000' : '' })) : (_jsx(Text, { color: "gray", children: field === 'apiKey' && values[field]
|
|
62
|
+
? '*'.repeat(values[field].length)
|
|
63
|
+
: values[field] || '(empty)' })) })] }, field))) }), error && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "red", children: error }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Tab: next field | Enter: submit" }) })] }));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=StepHub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepHub.js","sourceRoot":"","sources":["../../../src/tui/installer/StepHub.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PackManifest } from '@sonde/shared';
|
|
2
|
+
import type { ScanResult } from '../../system/scanner.js';
|
|
3
|
+
interface StepPacksProps {
|
|
4
|
+
scanResults: ScanResult[];
|
|
5
|
+
onNext: (packs: PackManifest[]) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function StepPacks({ scanResults, onNext }: StepPacksProps): JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=StepPacks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepPacks.d.ts","sourceRoot":"","sources":["../../../src/tui/installer/StepPacks.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,UAAU,cAAc;IACtB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;CACzC;AAQD,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAuD9E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { packRegistry } from '@sonde/packs';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
export function StepPacks({ scanResults, onNext }) {
|
|
6
|
+
const detectedNames = new Set(scanResults.filter((r) => r.detected).map((r) => r.packName));
|
|
7
|
+
const [rows, setRows] = useState(() => [...packRegistry.values()].map((pack) => ({
|
|
8
|
+
manifest: pack.manifest,
|
|
9
|
+
detected: detectedNames.has(pack.manifest.name),
|
|
10
|
+
selected: detectedNames.has(pack.manifest.name),
|
|
11
|
+
})));
|
|
12
|
+
const [cursor, setCursor] = useState(0);
|
|
13
|
+
useInput((_input, key) => {
|
|
14
|
+
if (key.upArrow) {
|
|
15
|
+
setCursor((prev) => (prev > 0 ? prev - 1 : rows.length - 1));
|
|
16
|
+
}
|
|
17
|
+
else if (key.downArrow) {
|
|
18
|
+
setCursor((prev) => (prev < rows.length - 1 ? prev + 1 : 0));
|
|
19
|
+
}
|
|
20
|
+
else if (_input === ' ') {
|
|
21
|
+
setRows((prev) => prev.map((row, i) => (i === cursor ? { ...row, selected: !row.selected } : row)));
|
|
22
|
+
}
|
|
23
|
+
else if (key.return) {
|
|
24
|
+
const selected = rows.filter((r) => r.selected).map((r) => r.manifest);
|
|
25
|
+
onNext(selected);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "gray", children: "Select packs to install. Detected software is pre-selected." }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: rows.map((row, i) => {
|
|
29
|
+
const isCursor = i === cursor;
|
|
30
|
+
const checkbox = row.selected ? '[x]' : '[ ]';
|
|
31
|
+
const probeCount = row.manifest.probes.length;
|
|
32
|
+
return (_jsxs(Box, { children: [_jsxs(Text, { color: isCursor ? 'cyan' : 'white', bold: isCursor, children: [isCursor ? '> ' : ' ', checkbox, " ", row.manifest.name] }), _jsxs(Text, { color: "gray", children: [' ', "(", probeCount, " probes) \u2014 ", row.manifest.description] }), row.detected && _jsx(Text, { color: "green", children: " [detected]" })] }, row.manifest.name));
|
|
33
|
+
}) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Up/Down: navigate | Space: toggle | Enter: confirm" }) })] }));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=StepPacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepPacks.js","sourceRoot":"","sources":["../../../src/tui/installer/StepPacks.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PackManifest } from '@sonde/shared';
|
|
2
|
+
interface StepPermissionsProps {
|
|
3
|
+
selectedPacks: PackManifest[];
|
|
4
|
+
onNext: () => void;
|
|
5
|
+
onBack: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function StepPermissions({ selectedPacks, onNext, onBack, }: StepPermissionsProps): JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=StepPermissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepPermissions.d.ts","sourceRoot":"","sources":["../../../src/tui/installer/StepPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AASlD,UAAU,oBAAoB;IAC5B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAkBD,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,MAAM,EACN,MAAM,GACP,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAoEpC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
import { checkPackPermissions, createSystemChecker, } from '../../system/scanner.js';
|
|
5
|
+
function getUserGroups() {
|
|
6
|
+
try {
|
|
7
|
+
if (typeof process.getgroups === 'function') {
|
|
8
|
+
return process.getgroups().map(String);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
// Not available on all platforms
|
|
13
|
+
}
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
export function StepPermissions({ selectedPacks, onNext, onBack, }) {
|
|
17
|
+
const [results, setResults] = useState([]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const checker = createSystemChecker();
|
|
20
|
+
const groups = getUserGroups();
|
|
21
|
+
const checks = selectedPacks.map((manifest) => ({
|
|
22
|
+
name: manifest.name,
|
|
23
|
+
check: checkPackPermissions(manifest, checker, groups),
|
|
24
|
+
}));
|
|
25
|
+
setResults(checks);
|
|
26
|
+
}, [selectedPacks]);
|
|
27
|
+
useInput((input, key) => {
|
|
28
|
+
if (key.return) {
|
|
29
|
+
onNext();
|
|
30
|
+
}
|
|
31
|
+
else if (input === 'b') {
|
|
32
|
+
onBack();
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
const issues = results.filter((r) => !r.check.satisfied);
|
|
36
|
+
const allGood = issues.length === 0;
|
|
37
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Permission Review" }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: results.map((r) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: r.check.satisfied ? 'green' : 'yellow', children: [r.check.satisfied ? ' OK' : ' !!', " ", r.name] }), !r.check.satisfied && (_jsxs(Box, { flexDirection: "column", marginLeft: 4, children: [r.check.missingGroups.length > 0 && (_jsxs(_Fragment, { children: [_jsxs(Text, { color: "yellow", children: ["Missing groups: ", r.check.missingGroups.join(', ')] }), r.check.missingGroups.map((g) => (_jsxs(Text, { color: "gray", children: [' ', "sudo usermod -aG ", g, " $(whoami)"] }, g)))] })), r.check.missingCommands.length > 0 && (_jsxs(Text, { color: "yellow", children: ["Missing commands: ", r.check.missingCommands.join(', ')] })), r.check.missingFiles.length > 0 && (_jsxs(Text, { color: "yellow", children: ["Missing files: ", r.check.missingFiles.join(', ')] }))] }))] }, r.name))) }), !allGood && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "yellow", children: "Some packs have missing permissions. They may not work correctly." }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Enter: proceed | b: back to pack selection" }) })] }));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=StepPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepPermissions.js","sourceRoot":"","sources":["../../../src/tui/installer/StepPermissions.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepScan.d.ts","sourceRoot":"","sources":["../../../src/tui/installer/StepScan.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAwC,MAAM,yBAAyB,CAAC;AAEhG,UAAU,aAAa;IACrB,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CACzC;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CA+D/D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { packRegistry } from '@sonde/packs';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import Spinner from 'ink-spinner';
|
|
5
|
+
import { useEffect, useState } from 'react';
|
|
6
|
+
import { createSystemChecker, scanForSoftware } from '../../system/scanner.js';
|
|
7
|
+
export function StepScan({ onNext }) {
|
|
8
|
+
const [scanning, setScanning] = useState(true);
|
|
9
|
+
const [results, setResults] = useState([]);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
const manifests = [...packRegistry.values()].map((p) => p.manifest);
|
|
12
|
+
const checker = createSystemChecker();
|
|
13
|
+
const scanResults = scanForSoftware(manifests, checker);
|
|
14
|
+
setResults(scanResults);
|
|
15
|
+
setScanning(false);
|
|
16
|
+
const timer = setTimeout(() => {
|
|
17
|
+
onNext(scanResults);
|
|
18
|
+
}, 1500);
|
|
19
|
+
return () => clearTimeout(timer);
|
|
20
|
+
}, [onNext]);
|
|
21
|
+
if (scanning) {
|
|
22
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: " Scanning system for known software..." })] }));
|
|
23
|
+
}
|
|
24
|
+
const detected = results.filter((r) => r.detected);
|
|
25
|
+
const notDetected = results.filter((r) => !r.detected);
|
|
26
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "green", children: "Scan complete!" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [detected.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, children: "Detected:" }), detected.map((r) => (_jsxs(Text, { color: "green", children: [' ', r.packName, " \u2014 ", formatMatches(r)] }, r.packName)))] })), notDetected.length > 0 && (_jsxs(Box, { marginTop: detected.length > 0 ? 1 : 0, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Not detected:" }), notDetected.map((r) => (_jsxs(Text, { color: "gray", children: [' ', r.packName] }, r.packName)))] }))] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Continuing to pack selection..." }) })] }));
|
|
27
|
+
}
|
|
28
|
+
function formatMatches(r) {
|
|
29
|
+
const parts = [];
|
|
30
|
+
if (r.matchedCommands.length > 0)
|
|
31
|
+
parts.push(`commands: ${r.matchedCommands.join(', ')}`);
|
|
32
|
+
if (r.matchedFiles.length > 0)
|
|
33
|
+
parts.push(`files: ${r.matchedFiles.join(', ')}`);
|
|
34
|
+
if (r.matchedServices.length > 0)
|
|
35
|
+
parts.push(`services: ${r.matchedServices.join(', ')}`);
|
|
36
|
+
return parts.join('; ');
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=StepScan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepScan.js","sourceRoot":"","sources":["../../../src/tui/installer/StepScan.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityLog.d.ts","sourceRoot":"","sources":["../../../src/tui/manager/ActivityLog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAoBD,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA+BvE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
function formatTime(isoString) {
|
|
4
|
+
const date = new Date(isoString);
|
|
5
|
+
return date.toLocaleTimeString('en-GB', { hour12: false });
|
|
6
|
+
}
|
|
7
|
+
function statusColor(status) {
|
|
8
|
+
switch (status) {
|
|
9
|
+
case 'success':
|
|
10
|
+
return 'green';
|
|
11
|
+
case 'error':
|
|
12
|
+
return 'red';
|
|
13
|
+
case 'timeout':
|
|
14
|
+
return 'yellow';
|
|
15
|
+
default:
|
|
16
|
+
return 'gray';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function ActivityLog({ activity }) {
|
|
20
|
+
if (activity.length === 0) {
|
|
21
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", children: "Activity" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Waiting for probe activity..." }) })] }));
|
|
22
|
+
}
|
|
23
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { bold: true, color: "white", children: ["Activity (", activity.length, " probes)"] }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: activity.map((entry, i) => (_jsxs(Box, { children: [_jsxs(Text, { color: "gray", children: [formatTime(entry.timestamp), " "] }), _jsx(Text, { color: "white", children: entry.probe.padEnd(25) }), _jsx(Text, { color: statusColor(entry.status), children: entry.status.padEnd(10) }), _jsxs(Text, { color: "gray", children: [entry.durationMs, "ms"] })] }, `${entry.timestamp}-${i}`))) })] }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ActivityLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityLog.js","sourceRoot":"","sources":["../../../src/tui/manager/ActivityLog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAOhC,SAAS,UAAU,CAAC,SAAiB;IACnC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAoB;IACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,yBAEjB,EACP,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,8CAAqC,GACnD,IACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,2BACX,QAAQ,CAAC,MAAM,gBACrB,EACP,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACtC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EACxD,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EACnD,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,YAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EACxE,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAAE,KAAK,CAAC,UAAU,UAAU,KAJtC,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE,CAK7B,CACP,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuditView.d.ts","sourceRoot":"","sources":["../../../src/tui/manager/AuditView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE7E,UAAU,cAAc;IACtB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAoBD,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CA8CnE"}
|