@sonde/packs 0.1.1 → 0.1.3

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.
Files changed (161) hide show
  1. package/.turbo/turbo-build.log +4 -6
  2. package/.turbo/turbo-test.log +57 -814
  3. package/CHANGELOG.md +18 -0
  4. package/dist/docker/manifest (# Edit conflict 2026-02-19 LIl7ilN #).js +54 -0
  5. package/dist/index.d.ts +9 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +9 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/integrations/a10.d.ts +3 -0
  10. package/dist/integrations/a10.d.ts.map +1 -0
  11. package/dist/integrations/a10.js +218 -0
  12. package/dist/integrations/a10.js.map +1 -0
  13. package/dist/integrations/checkpoint.d.ts +3 -0
  14. package/dist/integrations/checkpoint.d.ts.map +1 -0
  15. package/dist/integrations/checkpoint.js +249 -0
  16. package/dist/integrations/checkpoint.js.map +1 -0
  17. package/dist/integrations/citrix.d.ts.map +1 -1
  18. package/dist/integrations/citrix.js +14 -19
  19. package/dist/integrations/citrix.js.map +1 -1
  20. package/dist/integrations/citrix.test.js +3 -3
  21. package/dist/integrations/citrix.test.js.map +1 -1
  22. package/dist/integrations/datadog.d.ts +3 -0
  23. package/dist/integrations/datadog.d.ts.map +1 -0
  24. package/dist/integrations/datadog.js +195 -0
  25. package/dist/integrations/datadog.js.map +1 -0
  26. package/dist/integrations/graph.d.ts.map +1 -1
  27. package/dist/integrations/graph.js +10 -15
  28. package/dist/integrations/graph.js.map +1 -1
  29. package/dist/integrations/graph.test.js +3 -3
  30. package/dist/integrations/graph.test.js.map +1 -1
  31. package/dist/integrations/httpbin.d.ts.map +1 -1
  32. package/dist/integrations/httpbin.js +2 -7
  33. package/dist/integrations/httpbin.js.map +1 -1
  34. package/dist/integrations/jira.d.ts +3 -0
  35. package/dist/integrations/jira.d.ts.map +1 -0
  36. package/dist/integrations/jira.js +199 -0
  37. package/dist/integrations/jira.js.map +1 -0
  38. package/dist/integrations/loki.d.ts +3 -0
  39. package/dist/integrations/loki.d.ts.map +1 -0
  40. package/dist/integrations/loki.js +178 -0
  41. package/dist/integrations/loki.js.map +1 -0
  42. package/dist/integrations/meraki.d.ts +3 -0
  43. package/dist/integrations/meraki.d.ts.map +1 -0
  44. package/dist/integrations/meraki.js +238 -0
  45. package/dist/integrations/meraki.js.map +1 -0
  46. package/dist/integrations/nutanix.d.ts.map +1 -1
  47. package/dist/integrations/nutanix.js +12 -17
  48. package/dist/integrations/nutanix.js.map +1 -1
  49. package/dist/integrations/nutanix.test.js +3 -3
  50. package/dist/integrations/nutanix.test.js.map +1 -1
  51. package/dist/integrations/pagerduty.d.ts +3 -0
  52. package/dist/integrations/pagerduty.d.ts.map +1 -0
  53. package/dist/integrations/pagerduty.js +229 -0
  54. package/dist/integrations/pagerduty.js.map +1 -0
  55. package/dist/integrations/proxmox.d.ts.map +1 -1
  56. package/dist/integrations/proxmox.js +8 -13
  57. package/dist/integrations/proxmox.js.map +1 -1
  58. package/dist/integrations/proxmox.test.js +3 -3
  59. package/dist/integrations/proxmox.test.js.map +1 -1
  60. package/dist/integrations/servicenow.d.ts.map +1 -1
  61. package/dist/integrations/servicenow.js +10 -16
  62. package/dist/integrations/servicenow.js.map +1 -1
  63. package/dist/integrations/servicenow.test.js +3 -3
  64. package/dist/integrations/servicenow.test.js.map +1 -1
  65. package/dist/integrations/splunk.d.ts.map +1 -1
  66. package/dist/integrations/splunk.js +8 -13
  67. package/dist/integrations/splunk.js.map +1 -1
  68. package/dist/integrations/splunk.test.js +3 -3
  69. package/dist/integrations/splunk.test.js.map +1 -1
  70. package/dist/integrations/thousandeyes.d.ts +3 -0
  71. package/dist/integrations/thousandeyes.d.ts.map +1 -0
  72. package/dist/integrations/thousandeyes.js +263 -0
  73. package/dist/integrations/thousandeyes.js.map +1 -0
  74. package/dist/integrations/vcenter.d.ts +3 -0
  75. package/dist/integrations/vcenter.d.ts.map +1 -0
  76. package/dist/integrations/vcenter.js +190 -0
  77. package/dist/integrations/vcenter.js.map +1 -0
  78. package/dist/proxmox/probes/ceph-status.test.d.ts (# Edit conflict 2026-02-19 N25hAvJ #).map +1 -0
  79. package/dist/system/index.d.ts.map +1 -1
  80. package/dist/system/index.js +10 -0
  81. package/dist/system/index.js.map +1 -1
  82. package/dist/system/manifest.d.ts.map +1 -1
  83. package/dist/system/manifest.js +100 -3
  84. package/dist/system/manifest.js.map +1 -1
  85. package/dist/system/probes/logs-dmesg.d.ts +13 -0
  86. package/dist/system/probes/logs-dmesg.d.ts.map +1 -0
  87. package/dist/system/probes/logs-dmesg.js +22 -0
  88. package/dist/system/probes/logs-dmesg.js.map +1 -0
  89. package/dist/system/probes/logs-dmesg.test.d.ts +2 -0
  90. package/dist/system/probes/logs-dmesg.test.d.ts.map +1 -0
  91. package/dist/system/probes/logs-dmesg.test.js +55 -0
  92. package/dist/system/probes/logs-dmesg.test.js.map +1 -0
  93. package/dist/system/probes/logs-journal.d.ts +21 -0
  94. package/dist/system/probes/logs-journal.d.ts.map +1 -0
  95. package/dist/system/probes/logs-journal.js +70 -0
  96. package/dist/system/probes/logs-journal.js.map +1 -0
  97. package/dist/system/probes/logs-journal.test.d.ts +2 -0
  98. package/dist/system/probes/logs-journal.test.d.ts.map +1 -0
  99. package/dist/system/probes/logs-journal.test.js +113 -0
  100. package/dist/system/probes/logs-journal.test.js.map +1 -0
  101. package/dist/system/probes/logs-tail.d.ts +14 -0
  102. package/dist/system/probes/logs-tail.d.ts.map +1 -0
  103. package/dist/system/probes/logs-tail.js +40 -0
  104. package/dist/system/probes/logs-tail.js.map +1 -0
  105. package/dist/system/probes/logs-tail.test.d.ts +2 -0
  106. package/dist/system/probes/logs-tail.test.d.ts.map +1 -0
  107. package/dist/system/probes/logs-tail.test.js +82 -0
  108. package/dist/system/probes/logs-tail.test.js.map +1 -0
  109. package/dist/system/probes/ping.d.ts +20 -0
  110. package/dist/system/probes/ping.d.ts.map +1 -0
  111. package/dist/system/probes/ping.js +54 -0
  112. package/dist/system/probes/ping.js.map +1 -0
  113. package/dist/system/probes/ping.test.d.ts +2 -0
  114. package/dist/system/probes/ping.test.d.ts.map +1 -0
  115. package/dist/system/probes/ping.test.js +127 -0
  116. package/dist/system/probes/ping.test.js.map +1 -0
  117. package/dist/system/probes/traceroute.d.ts +17 -0
  118. package/dist/system/probes/traceroute.d.ts.map +1 -0
  119. package/dist/system/probes/traceroute.js +72 -0
  120. package/dist/system/probes/traceroute.js.map +1 -0
  121. package/dist/system/probes/traceroute.test.d.ts +2 -0
  122. package/dist/system/probes/traceroute.test.d.ts.map +1 -0
  123. package/dist/system/probes/traceroute.test.js +98 -0
  124. package/dist/system/probes/traceroute.test.js.map +1 -0
  125. package/package.json +1 -1
  126. package/src/index.ts +9 -0
  127. package/src/integrations/a10.ts +370 -0
  128. package/src/integrations/checkpoint.ts +381 -0
  129. package/src/integrations/citrix.test.ts +3 -3
  130. package/src/integrations/citrix.ts +17 -21
  131. package/src/integrations/datadog.ts +281 -0
  132. package/src/integrations/graph.test.ts +3 -3
  133. package/src/integrations/graph.ts +10 -14
  134. package/src/integrations/httpbin.ts +2 -6
  135. package/src/integrations/jira.ts +272 -0
  136. package/src/integrations/loki.ts +228 -0
  137. package/src/integrations/meraki.ts +344 -0
  138. package/src/integrations/nutanix.test.ts +3 -3
  139. package/src/integrations/nutanix.ts +13 -17
  140. package/src/integrations/pagerduty.ts +319 -0
  141. package/src/integrations/proxmox.test.ts +3 -3
  142. package/src/integrations/proxmox.ts +8 -12
  143. package/src/integrations/servicenow.test.ts +3 -3
  144. package/src/integrations/servicenow.ts +10 -15
  145. package/src/integrations/splunk.test.ts +3 -3
  146. package/src/integrations/splunk.ts +9 -13
  147. package/src/integrations/thousandeyes.ts +353 -0
  148. package/src/integrations/vcenter.ts +261 -0
  149. package/src/system/index.ts +10 -0
  150. package/src/system/manifest.ts +113 -3
  151. package/src/system/probes/logs-dmesg.test.ts +83 -0
  152. package/src/system/probes/logs-dmesg.ts +38 -0
  153. package/src/system/probes/logs-journal.test.ts +142 -0
  154. package/src/system/probes/logs-journal.ts +103 -0
  155. package/src/system/probes/logs-tail.test.ts +140 -0
  156. package/src/system/probes/logs-tail.ts +70 -0
  157. package/src/system/probes/ping.test.ts +163 -0
  158. package/src/system/probes/ping.ts +89 -0
  159. package/src/system/probes/traceroute.test.ts +149 -0
  160. package/src/system/probes/traceroute.ts +99 -0
  161. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,127 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { parsePingOutput, ping } from './ping.js';
3
+ const LINUX_OUTPUT = `PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
4
+ 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.543 ms
5
+ 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.401 ms
6
+ 64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.387 ms
7
+ 64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.392 ms
8
+
9
+ --- 10.0.0.1 ping statistics ---
10
+ 4 packets transmitted, 4 received, 0% packet loss, time 3005ms
11
+ rtt min/avg/max/mdev = 0.387/0.430/0.543/0.065 ms
12
+ `;
13
+ const MACOS_OUTPUT = `PING 192.168.1.1 (192.168.1.1): 56 data bytes
14
+ 64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=1.234 ms
15
+ 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.456 ms
16
+ 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.123 ms
17
+ 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.345 ms
18
+
19
+ --- 192.168.1.1 ping statistics ---
20
+ 4 packets transmitted, 4 packets received, 0.0% packet loss
21
+ round-trip min/avg/max/stddev = 1.123/1.289/1.456/0.122 ms
22
+ `;
23
+ const FULL_LOSS_OUTPUT = `PING 10.99.99.99 (10.99.99.99) 56(84) bytes of data.
24
+
25
+ --- 10.99.99.99 ping statistics ---
26
+ 4 packets transmitted, 0 received, 100% packet loss, time 3003ms
27
+ `;
28
+ const PARTIAL_LOSS_OUTPUT = `PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
29
+ 64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=0.500 ms
30
+ 64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=0.600 ms
31
+
32
+ --- 10.0.0.5 ping statistics ---
33
+ 4 packets transmitted, 2 received, 50% packet loss, time 3004ms
34
+ rtt min/avg/max/mdev = 0.500/0.550/0.600/0.050 ms
35
+ `;
36
+ describe('parsePingOutput', () => {
37
+ it('parses valid Linux ping output', () => {
38
+ const result = parsePingOutput(LINUX_OUTPUT, '10.0.0.1');
39
+ expect(result.host).toBe('10.0.0.1');
40
+ expect(result.packetsTransmitted).toBe(4);
41
+ expect(result.packetsReceived).toBe(4);
42
+ expect(result.packetLossPercent).toBe(0);
43
+ expect(result.rttMs).toEqual({
44
+ min: 0.387,
45
+ avg: 0.43,
46
+ max: 0.543,
47
+ stddev: 0.065,
48
+ });
49
+ });
50
+ it('parses valid macOS ping output', () => {
51
+ const result = parsePingOutput(MACOS_OUTPUT, '192.168.1.1');
52
+ expect(result.host).toBe('192.168.1.1');
53
+ expect(result.packetsTransmitted).toBe(4);
54
+ expect(result.packetsReceived).toBe(4);
55
+ expect(result.packetLossPercent).toBe(0);
56
+ expect(result.rttMs).toEqual({
57
+ min: 1.123,
58
+ avg: 1.289,
59
+ max: 1.456,
60
+ stddev: 0.122,
61
+ });
62
+ });
63
+ it('handles 100% packet loss', () => {
64
+ const result = parsePingOutput(FULL_LOSS_OUTPUT, '10.99.99.99');
65
+ expect(result.packetsTransmitted).toBe(4);
66
+ expect(result.packetsReceived).toBe(0);
67
+ expect(result.packetLossPercent).toBe(100);
68
+ expect(result.rttMs).toBeUndefined();
69
+ });
70
+ it('handles partial packet loss with RTT', () => {
71
+ const result = parsePingOutput(PARTIAL_LOSS_OUTPUT, '10.0.0.5');
72
+ expect(result.packetsTransmitted).toBe(4);
73
+ expect(result.packetsReceived).toBe(2);
74
+ expect(result.packetLossPercent).toBe(50);
75
+ expect(result.rttMs).toBeDefined();
76
+ expect(result.rttMs?.avg).toBeCloseTo(0.55);
77
+ });
78
+ });
79
+ describe('ping handler', () => {
80
+ it('throws when host param is missing', async () => {
81
+ const mockExec = async () => '';
82
+ await expect(ping(undefined, mockExec)).rejects.toThrow('Missing required parameter: host');
83
+ await expect(ping({}, mockExec)).rejects.toThrow('Missing required parameter: host');
84
+ });
85
+ it('passes correct args to exec with default count', async () => {
86
+ const calls = [];
87
+ const mockExec = async (cmd, args) => {
88
+ calls.push({ cmd, args });
89
+ return LINUX_OUTPUT;
90
+ };
91
+ const result = (await ping({ host: '10.0.0.1' }, mockExec));
92
+ expect(calls).toHaveLength(1);
93
+ expect(calls[0]?.cmd).toBe('ping');
94
+ expect(calls[0]?.args).toContain('-c');
95
+ expect(calls[0]?.args).toContain('4');
96
+ expect(calls[0]?.args).toContain('10.0.0.1');
97
+ expect(result.host).toBe('10.0.0.1');
98
+ expect(result.packetsTransmitted).toBe(4);
99
+ });
100
+ it('respects custom count param', async () => {
101
+ const calls = [];
102
+ const mockExec = async (cmd, args) => {
103
+ calls.push({ cmd, args });
104
+ return LINUX_OUTPUT;
105
+ };
106
+ await ping({ host: '10.0.0.1', count: 2 }, mockExec);
107
+ expect(calls[0]?.args).toContain('2');
108
+ });
109
+ it('clamps count to valid range', async () => {
110
+ const calls = [];
111
+ const mockExec = async (cmd, args) => {
112
+ calls.push({ cmd, args });
113
+ return LINUX_OUTPUT;
114
+ };
115
+ await ping({ host: '10.0.0.1', count: 100 }, mockExec);
116
+ expect(calls[0]?.args).toContain('20');
117
+ await ping({ host: '10.0.0.1', count: 0 }, mockExec);
118
+ expect(calls[1]?.args).toContain('1');
119
+ });
120
+ it('handles exec failure (DNS resolution error)', async () => {
121
+ const mockExec = async () => {
122
+ throw new Error('ping: unknown host nosuchhost.invalid');
123
+ };
124
+ await expect(ping({ host: 'nosuchhost.invalid' }, mockExec)).rejects.toThrow('unknown host');
125
+ });
126
+ });
127
+ //# sourceMappingURL=ping.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ping.test.js","sourceRoot":"","sources":["../../../src/system/probes/ping.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ProbeHandler } from '../../types.js';
2
+ export interface TracerouteHop {
3
+ hop: number;
4
+ ip: string | null;
5
+ rttMs: (number | null)[];
6
+ }
7
+ export interface TracerouteResult {
8
+ host: string;
9
+ hops: TracerouteHop[];
10
+ }
11
+ /**
12
+ * Traces the network path to a host via `traceroute -n`.
13
+ * Works on both Linux and macOS.
14
+ */
15
+ export declare const traceroute: ProbeHandler;
16
+ export declare function parseTracerouteOutput(raw: string, host: string): TracerouteResult;
17
+ //# sourceMappingURL=traceroute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceroute.d.ts","sourceRoot":"","sources":["../../../src/system/probes/traceroute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,YAqBxB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,gBAAgB,CAuBlB"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Traces the network path to a host via `traceroute -n`.
3
+ * Works on both Linux and macOS.
4
+ */
5
+ export const traceroute = async (params, exec) => {
6
+ const host = params?.host;
7
+ if (!host) {
8
+ throw new Error('Missing required parameter: host');
9
+ }
10
+ const maxHops = Math.min(Math.max(Number(params?.maxHops ?? 30), 1), 64);
11
+ const output = await exec('traceroute', [
12
+ '-n',
13
+ '-m',
14
+ String(maxHops),
15
+ '-w',
16
+ '2',
17
+ host,
18
+ ]);
19
+ return parseTracerouteOutput(output, host);
20
+ };
21
+ export function parseTracerouteOutput(raw, host) {
22
+ const hops = [];
23
+ const lines = raw.trim().split('\n');
24
+ for (const line of lines) {
25
+ // Skip the header line ("traceroute to ...")
26
+ const hopMatch = line.match(/^\s*(\d+)\s+(.+)/);
27
+ if (!hopMatch)
28
+ continue;
29
+ const hopNum = Number(hopMatch[1]);
30
+ const rest = hopMatch[2] ?? '';
31
+ // All probes timed out: "* * *"
32
+ if (/^\*\s+\*\s+\*\s*$/.test(rest)) {
33
+ hops.push({ hop: hopNum, ip: null, rttMs: [null, null, null] });
34
+ continue;
35
+ }
36
+ const hop = parseHopLine(hopNum, rest);
37
+ hops.push(hop);
38
+ }
39
+ return { host, hops };
40
+ }
41
+ function parseHopLine(hopNum, rest) {
42
+ let ip = null;
43
+ const rttMs = [];
44
+ // Tokenize the rest of the line
45
+ const tokens = rest.trim().split(/\s+/);
46
+ let i = 0;
47
+ while (i < tokens.length) {
48
+ const token = tokens[i];
49
+ if (!token || token === '*') {
50
+ rttMs.push(null);
51
+ i++;
52
+ }
53
+ else if (token === 'ms') {
54
+ // Skip "ms" — already consumed the number
55
+ i++;
56
+ }
57
+ else if (/^\d+\.\d+\.\d+\.\d+$/.test(token) || token.includes(':')) {
58
+ // IPv4 or IPv6 address
59
+ ip = token;
60
+ i++;
61
+ }
62
+ else {
63
+ const num = Number.parseFloat(token);
64
+ if (!Number.isNaN(num)) {
65
+ rttMs.push(num);
66
+ }
67
+ i++;
68
+ }
69
+ }
70
+ return { hop: hopNum, ip, rttMs };
71
+ }
72
+ //# sourceMappingURL=traceroute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceroute.js","sourceRoot":"","sources":["../../../src/system/probes/traceroute.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAiB,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAC7D,MAAM,IAAI,GAAG,MAAM,EAAE,IAA0B,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAC1C,EAAE,CACH,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;QACtC,IAAI;QACJ,IAAI;QACJ,MAAM,CAAC,OAAO,CAAC;QACf,IAAI;QACJ,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IAEH,OAAO,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,GAAW,EACX,IAAY;IAEZ,MAAM,IAAI,GAAoB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE/B,gCAAgC;QAChC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChE,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,IAAY;IAChD,IAAI,EAAE,GAAkB,IAAI,CAAC;IAC7B,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,gCAAgC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,0CAA0C;YAC1C,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrE,uBAAuB;YACvB,EAAE,GAAG,KAAK,CAAC;YACX,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=traceroute.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceroute.test.d.ts","sourceRoot":"","sources":["../../../src/system/probes/traceroute.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,98 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { parseTracerouteOutput, traceroute, } from './traceroute.js';
3
+ const LINUX_TRACEROUTE = `traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
4
+ 1 192.168.1.1 1.234 ms 1.100 ms 1.050 ms
5
+ 2 10.0.0.1 5.432 ms 5.300 ms 5.200 ms
6
+ 3 * * *
7
+ 4 172.16.0.1 15.678 ms 15.500 ms 15.400 ms
8
+ 5 8.8.8.8 20.123 ms 20.050 ms 19.900 ms`;
9
+ const MACOS_TRACEROUTE = `traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
10
+ 1 192.168.0.1 2.345 ms 2.100 ms 2.050 ms
11
+ 2 * * *
12
+ 3 1.1.1.1 10.567 ms 10.400 ms 10.300 ms`;
13
+ const ALL_TIMEOUT = `traceroute to 10.0.0.99 (10.0.0.99), 5 hops max, 60 byte packets
14
+ 1 * * *
15
+ 2 * * *
16
+ 3 * * *`;
17
+ describe('parseTracerouteOutput', () => {
18
+ it('parses Linux traceroute with mixed hops', () => {
19
+ const result = parseTracerouteOutput(LINUX_TRACEROUTE, '8.8.8.8');
20
+ expect(result.host).toBe('8.8.8.8');
21
+ expect(result.hops).toHaveLength(5);
22
+ // Hop 1: normal response
23
+ expect(result.hops[0]?.hop).toBe(1);
24
+ expect(result.hops[0]?.ip).toBe('192.168.1.1');
25
+ expect(result.hops[0]?.rttMs).toEqual([1.234, 1.1, 1.05]);
26
+ // Hop 3: all timeouts
27
+ expect(result.hops[2]?.hop).toBe(3);
28
+ expect(result.hops[2]?.ip).toBeNull();
29
+ expect(result.hops[2]?.rttMs).toEqual([null, null, null]);
30
+ // Hop 5: destination
31
+ expect(result.hops[4]?.hop).toBe(5);
32
+ expect(result.hops[4]?.ip).toBe('8.8.8.8');
33
+ expect(result.hops[4]?.rttMs).toEqual([20.123, 20.05, 19.9]);
34
+ });
35
+ it('parses macOS traceroute output', () => {
36
+ const result = parseTracerouteOutput(MACOS_TRACEROUTE, '1.1.1.1');
37
+ expect(result.host).toBe('1.1.1.1');
38
+ expect(result.hops).toHaveLength(3);
39
+ expect(result.hops[0]?.ip).toBe('192.168.0.1');
40
+ expect(result.hops[1]?.ip).toBeNull();
41
+ expect(result.hops[2]?.ip).toBe('1.1.1.1');
42
+ });
43
+ it('handles all-timeout output', () => {
44
+ const result = parseTracerouteOutput(ALL_TIMEOUT, '10.0.0.99');
45
+ expect(result.hops).toHaveLength(3);
46
+ for (const hop of result.hops) {
47
+ expect(hop.ip).toBeNull();
48
+ expect(hop.rttMs).toEqual([null, null, null]);
49
+ }
50
+ });
51
+ it('handles empty output', () => {
52
+ const result = parseTracerouteOutput('', '8.8.8.8');
53
+ expect(result.hops).toHaveLength(0);
54
+ });
55
+ });
56
+ describe('traceroute handler', () => {
57
+ it('throws when host is missing', async () => {
58
+ const mockExec = async () => '';
59
+ await expect(traceroute(undefined, mockExec)).rejects.toThrow('Missing required parameter: host');
60
+ await expect(traceroute({}, mockExec)).rejects.toThrow('Missing required parameter: host');
61
+ });
62
+ it('passes correct args with defaults', async () => {
63
+ const calls = [];
64
+ const mockExec = async (cmd, args) => {
65
+ calls.push({ cmd, args });
66
+ return LINUX_TRACEROUTE;
67
+ };
68
+ const result = (await traceroute({ host: '8.8.8.8' }, mockExec));
69
+ expect(calls).toHaveLength(1);
70
+ expect(calls[0]?.cmd).toBe('traceroute');
71
+ expect(calls[0]?.args).toEqual([
72
+ '-n', '-m', '30', '-w', '2', '8.8.8.8',
73
+ ]);
74
+ expect(result.host).toBe('8.8.8.8');
75
+ expect(result.hops).toHaveLength(5);
76
+ });
77
+ it('respects custom maxHops', async () => {
78
+ const calls = [];
79
+ const mockExec = async (cmd, args) => {
80
+ calls.push({ cmd, args });
81
+ return '';
82
+ };
83
+ await traceroute({ host: '8.8.8.8', maxHops: 10 }, mockExec);
84
+ expect(calls[0]?.args).toContain('10');
85
+ });
86
+ it('clamps maxHops to valid range', async () => {
87
+ const calls = [];
88
+ const mockExec = async (cmd, args) => {
89
+ calls.push({ cmd, args });
90
+ return '';
91
+ };
92
+ await traceroute({ host: '8.8.8.8', maxHops: 999 }, mockExec);
93
+ expect(calls[0]?.args).toContain('64');
94
+ await traceroute({ host: '8.8.8.8', maxHops: 0 }, mockExec);
95
+ expect(calls[1]?.args).toContain('1');
96
+ });
97
+ });
98
+ //# sourceMappingURL=traceroute.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceroute.test.js","sourceRoot":"","sources":["../../../src/system/probes/traceroute.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonde/packs",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -39,6 +39,15 @@ export { graphPack } from './integrations/graph.js';
39
39
  export { splunkPack } from './integrations/splunk.js';
40
40
  export { proxmoxPack } from './integrations/proxmox.js';
41
41
  export { nutanixPack } from './integrations/nutanix.js';
42
+ export { vcenterPack } from './integrations/vcenter.js';
43
+ export { datadogPack } from './integrations/datadog.js';
44
+ export { lokiPack } from './integrations/loki.js';
45
+ export { jiraPack } from './integrations/jira.js';
46
+ export { pagerdutyPack } from './integrations/pagerduty.js';
47
+ export { thousandeyesPack } from './integrations/thousandeyes.js';
48
+ export { merakiPack } from './integrations/meraki.js';
49
+ export { checkpointPack } from './integrations/checkpoint.js';
50
+ export { a10Pack } from './integrations/a10.js';
42
51
  export { proxmoxDiagnosticRunbooks } from './runbooks/proxmox.js';
43
52
  export { nutanixDiagnosticRunbooks } from './runbooks/nutanix.js';
44
53