@calltelemetry/cli 0.15.1 → 1.1.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.
Files changed (46) hide show
  1. package/README.md +47 -0
  2. package/dist/commands/cube.d.ts.map +1 -1
  3. package/dist/commands/cube.js +68 -0
  4. package/dist/commands/cube.js.map +1 -1
  5. package/dist/commands/sftp.d.ts +3 -0
  6. package/dist/commands/sftp.d.ts.map +1 -0
  7. package/dist/commands/sftp.js +1586 -0
  8. package/dist/commands/sftp.js.map +1 -0
  9. package/dist/index.js +9 -4
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/appliance-api.d.ts +149 -0
  12. package/dist/lib/appliance-api.d.ts.map +1 -0
  13. package/dist/lib/appliance-api.js +492 -0
  14. package/dist/lib/appliance-api.js.map +1 -0
  15. package/dist/lib/cube-diag.d.ts +6 -0
  16. package/dist/lib/cube-diag.d.ts.map +1 -1
  17. package/dist/lib/cube-diag.js +9 -0
  18. package/dist/lib/cube-diag.js.map +1 -1
  19. package/dist/lib/cube-doctor.d.ts +107 -0
  20. package/dist/lib/cube-doctor.d.ts.map +1 -0
  21. package/dist/lib/cube-doctor.js +426 -0
  22. package/dist/lib/cube-doctor.js.map +1 -0
  23. package/dist/lib/openapi.d.ts +129 -0
  24. package/dist/lib/openapi.d.ts.map +1 -0
  25. package/dist/lib/openapi.js +325 -0
  26. package/dist/lib/openapi.js.map +1 -0
  27. package/dist/lib/sftp.d.ts +231 -0
  28. package/dist/lib/sftp.d.ts.map +1 -0
  29. package/dist/lib/sftp.js +439 -0
  30. package/dist/lib/sftp.js.map +1 -0
  31. package/dist/lib/version.d.ts +1 -1
  32. package/dist/lib/version.d.ts.map +1 -1
  33. package/dist/lib/version.js +1 -1
  34. package/dist/lib/version.js.map +1 -1
  35. package/dist/program.d.ts.map +1 -1
  36. package/dist/program.js +2 -0
  37. package/dist/program.js.map +1 -1
  38. package/dist/utils/prompt.d.ts +14 -0
  39. package/dist/utils/prompt.d.ts.map +1 -1
  40. package/dist/utils/prompt.js +28 -0
  41. package/dist/utils/prompt.js.map +1 -1
  42. package/dist/utils/table.d.ts +18 -0
  43. package/dist/utils/table.d.ts.map +1 -0
  44. package/dist/utils/table.js +97 -0
  45. package/dist/utils/table.js.map +1 -0
  46. package/package.json +1 -1
package/README.md CHANGED
@@ -166,6 +166,20 @@ ct diag db-watch --interval 2 # Live database activity monitor
166
166
  ct diag capture <seconds> [filter] # Packet capture via tcpdump
167
167
  ```
168
168
 
169
+ ### CUBE Diagnostics
170
+
171
+ ```bash
172
+ ct cube diag --monitor 60 --pcap 30 # Evidence bundle
173
+ ct cube doctor # Step-by-step registration/keepalive check
174
+ ct cube doctor --cube cucm-pub --reconnect --wait 90 --pcap 60
175
+ ```
176
+
177
+ `ct cube doctor` reports XCC enabled, provider URL, registration state,
178
+ keepalive freshness, probing interval, and liveness confidence. `--reconnect`
179
+ uses the appliance's real reconnect path to re-register with the CUBE, then
180
+ waits for the first `SolicitXccProbing` keepalive. See
181
+ [docs/cube-doctor.md](docs/cube-doctor.md).
182
+
169
183
  ### JTAPI (Cisco Phone Control)
170
184
 
171
185
  ```bash
@@ -270,6 +284,39 @@ ct seed status --org-id 1 # Seed counts and recent runs
270
284
  ct seed cleanup --org-id 1 --all # Remove seeded data
271
285
  ```
272
286
 
287
+ ### SFTP Tooling
288
+
289
+ Manage SFTP Action Accounts and the surrounding operational surface. Commands
290
+ read the OpenAPI document generated by the installed appliance release, so they
291
+ follow the routes that release actually exposes.
292
+
293
+ ```bash
294
+ ct sftp status # Accounts, storage, monitoring, daemon
295
+ ct sftp doctor # Connectivity and compatibility checks
296
+ ct sftp accounts list # List accounts
297
+ ct sftp accounts create --username backups --description "CUCM backups" --quota-gb 25
298
+ ct sftp accounts update backups --disable
299
+ ct sftp accounts password backups --generate
300
+ ct sftp accounts delete backups --yes
301
+ ct sftp accounts export --output accounts.csv
302
+ ct sftp accounts import accounts.csv --validate-only
303
+ ct sftp monitoring enable backups --schedule daily --hour 2 --minute 5
304
+ ct sftp storage status
305
+ ct sftp activity --limit 25
306
+ ct sftp api --list # Every SFTP operation in this release
307
+ ```
308
+
309
+ `create` generates and displays a strong password when none is supplied. Use
310
+ `--password-stdin` for automation. All read commands support `--json`.
311
+
312
+ Human invocations prompt for an appliance admin email and password, then use a
313
+ short-lived session JWT that is kept only in memory. For automation, set
314
+ `CT_API_TOKEN`, or `CT_API_EMAIL` + `CT_API_PASSWORD` to skip the prompts.
315
+
316
+ See [docs/sftp.md](docs/sftp.md) for account actions, monitoring, storage,
317
+ analytics, report schedules, authentication, and the generic OpenAPI escape
318
+ hatch.
319
+
273
320
  ## Interactive TUI
274
321
 
275
322
  When run without arguments on a TTY, `ct` launches an interactive menu built with [Ink](https://github.com/vadimdemedes/ink). Navigate with arrow keys, select with Enter, quit with `q`.
@@ -1 +1 @@
1
- {"version":3,"file":"cube.d.ts","sourceRoot":"","sources":["../../src/commands/cube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QA0CnD"}
1
+ {"version":3,"file":"cube.d.ts","sourceRoot":"","sources":["../../src/commands/cube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAgInD"}
@@ -1,4 +1,6 @@
1
1
  import { collectCubeDiag } from '../lib/cube-diag.js';
2
+ import { ApplianceApi, DEFAULT_API_URL, DEFAULT_TIMEOUT_MS, parsePositiveInt, } from '../lib/appliance-api.js';
3
+ import { applianceCubeDoctorBackend, cubeDoctorExitCode, renderCubeDoctorReport, runCubeDoctor, } from '../lib/cube-doctor.js';
2
4
  import { parseNonNegativeSecs } from '../utils/parseSecs.js';
3
5
  import * as out from '../utils/output.js';
4
6
  /**
@@ -48,5 +50,71 @@ export function registerCubeCommand(program) {
48
50
  out.fail(`Cube diagnostics failed: ${message}`);
49
51
  }
50
52
  });
53
+ cube
54
+ .command('doctor')
55
+ .description('Step-by-step CUBE/XCC health check: registration, keepalive, intervals, optional reconnect/pcap')
56
+ .option('--cube <id|name>', 'Check one CUBE instead of all xcc-enabled CUBEs')
57
+ .option('--wait <secs>', 'Wait up to N seconds for registration/keepalive', '30')
58
+ .option('--interval <secs>', 'Poll interval while waiting', '5')
59
+ .option('--reconnect', 'Ask the appliance to re-register with the CUBE, then wait for the first keepalive')
60
+ .option('--pcap <secs>', 'Capture XCC wire (bridge + host TLS ingress) during the check', '0')
61
+ .option('--pcap-dir <path>', 'Directory for pcap files')
62
+ .option('--url <url>', `Appliance API base URL (default: ${DEFAULT_API_URL})`)
63
+ .option('--token <token>', 'Machine API token for automation (prefer interactive login)')
64
+ .option('--email <email>', 'Admin email for interactive session login (or CT_API_EMAIL)')
65
+ .option('--org <id>', 'Organization ID (or CT_ORG_ID)')
66
+ .option('--timeout <ms>', 'Request timeout in milliseconds', String(DEFAULT_TIMEOUT_MS))
67
+ .option('--verify-tls', 'Verify the appliance TLS certificate')
68
+ .option('--json', 'Output a structured JSON report')
69
+ .action(async (opts) => {
70
+ let waitSecs;
71
+ let intervalSecs;
72
+ let pcapSecs;
73
+ try {
74
+ waitSecs = parseNonNegativeSecs(opts.wait, '--wait');
75
+ intervalSecs = parseNonNegativeSecs(opts.interval, '--interval');
76
+ pcapSecs = parseNonNegativeSecs(opts.pcap, '--pcap');
77
+ if (waitSecs > 0 && intervalSecs === 0) {
78
+ throw new Error('--interval must be at least 1 when --wait is greater than 0');
79
+ }
80
+ }
81
+ catch (err) {
82
+ out.fail(err instanceof Error ? err.message : String(err));
83
+ process.exitCode = 1;
84
+ return;
85
+ }
86
+ try {
87
+ const api = await ApplianceApi.connect({
88
+ baseUrl: opts.url,
89
+ token: opts.token,
90
+ email: opts.email,
91
+ orgId: parsePositiveInt(opts.org, '--org'),
92
+ timeoutMs: parsePositiveInt(opts.timeout, '--timeout'),
93
+ verifyTls: opts.verifyTls ? true : undefined,
94
+ });
95
+ const spec = await api.fetchSpec();
96
+ const backend = applianceCubeDoctorBackend(api, spec);
97
+ const report = await runCubeDoctor(backend, {
98
+ cube: opts.cube,
99
+ waitSecs,
100
+ intervalSecs,
101
+ reconnect: opts.reconnect === true,
102
+ pcapSecs,
103
+ pcapDir: opts.pcapDir,
104
+ });
105
+ if (opts.json) {
106
+ console.log(JSON.stringify(report, null, 2));
107
+ }
108
+ else {
109
+ out.header('CUBE Doctor');
110
+ console.log(renderCubeDoctorReport(report));
111
+ }
112
+ process.exitCode = cubeDoctorExitCode(report);
113
+ }
114
+ catch (err) {
115
+ out.fail(err instanceof Error ? err.message : String(err));
116
+ process.exitCode = 1;
117
+ }
118
+ });
51
119
  }
52
120
  //# sourceMappingURL=cube.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cube.js","sourceRoot":"","sources":["../../src/commands/cube.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SACjB,WAAW,CAAC,4EAA4E,CAAC;SACzF,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;SAC3F,MAAM,CAAC,kBAAkB,EAAE,8DAA8D,EAAE,GAAG,CAAC;SAC/F,MAAM,CAAC,kBAAkB,EAAE,2DAA2D,EAAE,GAAG,CAAC;SAC5F,MAAM,CAAC,eAAe,EAAE,yEAAyE,EAAE,GAAG,CAAC;SACvG,MAAM,CAAC,KAAK,EAAE,IAA4E,EAAE,EAAE;QAC7F,yEAAyE;QACzE,uEAAuE;QACvE,oCAAoC;QACpC,IAAI,WAAmB,CAAC;QACxB,IAAI,WAAmB,CAAC;QACxB,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC9D,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC9D,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;gBACjC,UAAU,EAAE,IAAI,CAAC,MAAM;gBACvB,WAAW;gBACX,WAAW;gBACX,QAAQ;aACT,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"cube.js","sourceRoot":"","sources":["../../src/commands/cube.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSftpCommand(program: Command): void;
3
+ //# sourceMappingURL=sftp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sftp.d.ts","sourceRoot":"","sources":["../../src/commands/sftp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmxEpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgB1D"}