@calltelemetry/cli 0.3.9 → 0.4.1

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 (61) hide show
  1. package/dist/commands/diag.d.ts.map +1 -1
  2. package/dist/commands/diag.js +7 -0
  3. package/dist/commands/diag.js.map +1 -1
  4. package/dist/commands/jtapi.d.ts.map +1 -1
  5. package/dist/commands/jtapi.js +10 -9
  6. package/dist/commands/jtapi.js.map +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/lib/compose.d.ts.map +1 -1
  9. package/dist/lib/compose.js +1 -3
  10. package/dist/lib/compose.js.map +1 -1
  11. package/dist/lib/env.d.ts +14 -0
  12. package/dist/lib/env.d.ts.map +1 -0
  13. package/dist/lib/env.js +74 -0
  14. package/dist/lib/env.js.map +1 -0
  15. package/dist/lib/jtapi.d.ts +67 -2
  16. package/dist/lib/jtapi.d.ts.map +1 -1
  17. package/dist/lib/jtapi.js +261 -14
  18. package/dist/lib/jtapi.js.map +1 -1
  19. package/dist/lib/paths.d.ts +1 -1
  20. package/dist/lib/paths.d.ts.map +1 -1
  21. package/dist/lib/paths.js +1 -1
  22. package/dist/lib/paths.js.map +1 -1
  23. package/dist/lib/redact.d.ts +10 -0
  24. package/dist/lib/redact.d.ts.map +1 -0
  25. package/dist/lib/redact.js +45 -0
  26. package/dist/lib/redact.js.map +1 -0
  27. package/dist/lib/rpc.d.ts +2 -0
  28. package/dist/lib/rpc.d.ts.map +1 -1
  29. package/dist/lib/rpc.js +27 -7
  30. package/dist/lib/rpc.js.map +1 -1
  31. package/dist/lib/secrets.d.ts +2 -1
  32. package/dist/lib/secrets.d.ts.map +1 -1
  33. package/dist/lib/secrets.js +16 -1
  34. package/dist/lib/secrets.js.map +1 -1
  35. package/dist/lib/showtech-steps.d.ts +7 -0
  36. package/dist/lib/showtech-steps.d.ts.map +1 -0
  37. package/dist/lib/showtech-steps.js +351 -0
  38. package/dist/lib/showtech-steps.js.map +1 -0
  39. package/dist/ui/components/TabBar.d.ts +12 -0
  40. package/dist/ui/components/TabBar.d.ts.map +1 -0
  41. package/dist/ui/components/TabBar.js +9 -0
  42. package/dist/ui/components/TabBar.js.map +1 -0
  43. package/dist/ui/components/index.d.ts +2 -0
  44. package/dist/ui/components/index.d.ts.map +1 -1
  45. package/dist/ui/components/index.js +1 -0
  46. package/dist/ui/components/index.js.map +1 -1
  47. package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -1
  48. package/dist/ui/views/DiagDatabaseView.js +126 -38
  49. package/dist/ui/views/DiagDatabaseView.js.map +1 -1
  50. package/dist/ui/views/DiagShowTechView.d.ts +6 -0
  51. package/dist/ui/views/DiagShowTechView.d.ts.map +1 -0
  52. package/dist/ui/views/DiagShowTechView.js +68 -0
  53. package/dist/ui/views/DiagShowTechView.js.map +1 -0
  54. package/dist/ui/views/JtapiView.d.ts +7 -0
  55. package/dist/ui/views/JtapiView.d.ts.map +1 -0
  56. package/dist/ui/views/JtapiView.js +407 -0
  57. package/dist/ui/views/JtapiView.js.map +1 -0
  58. package/dist/ui/views/MainMenu.d.ts.map +1 -1
  59. package/dist/ui/views/MainMenu.js +16 -16
  60. package/dist/ui/views/MainMenu.js.map +1 -1
  61. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"diag.d.ts","sourceRoot":"","sources":["../../src/commands/diag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QA+HnD"}
1
+ {"version":3,"file":"diag.d.ts","sourceRoot":"","sources":["../../src/commands/diag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAsInD"}
@@ -5,6 +5,7 @@ import * as out from '../utils/output.js';
5
5
  import { DiagNetworkView } from '../ui/views/DiagNetworkView.js';
6
6
  import { DiagServiceView } from '../ui/views/DiagServiceView.js';
7
7
  import { DiagDatabaseView } from '../ui/views/DiagDatabaseView.js';
8
+ import { DiagShowTechView } from '../ui/views/DiagShowTechView.js';
8
9
  export function registerDiagCommand(program) {
9
10
  const diag = program
10
11
  .command('diag')
@@ -27,6 +28,12 @@ export function registerDiagCommand(program) {
27
28
  const { waitUntilExit } = render(React.createElement(DiagDatabaseView));
28
29
  await waitUntilExit();
29
30
  });
31
+ diag.command('showtech')
32
+ .description('Collect support bundle (logs, diagnostics, config)')
33
+ .action(async () => {
34
+ const { waitUntilExit } = render(React.createElement(DiagShowTechView));
35
+ await waitUntilExit();
36
+ });
30
37
  diag.command('tesla <mode> <url>')
31
38
  .description('Test TCP + HTTP connectivity (ipv4|ipv6)')
32
39
  .action(async (mode, url) => {
@@ -1 +1 @@
1
- {"version":3,"file":"diag.js","sourceRoot":"","sources":["../../src/commands/diag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diag.js","sourceRoot":"","sources":["../../src/commands/diag.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"jtapi.d.ts","sourceRoot":"","sources":["../../src/commands/jtapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAgCpD"}
1
+ {"version":3,"file":"jtapi.d.ts","sourceRoot":"","sources":["../../src/commands/jtapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAoCpD"}
@@ -1,35 +1,36 @@
1
1
  import { render } from 'ink';
2
2
  import React from 'react';
3
- import { JtapiEnableView } from '../ui/views/JtapiEnableView.js';
4
- import { JtapiDisableView } from '../ui/views/JtapiDisableView.js';
5
- import { JtapiTroubleshootView } from '../ui/views/JtapiTroubleshootView.js';
6
- import { JtapiStatusView } from '../ui/views/JtapiStatusView.js';
3
+ import { JtapiView } from '../ui/views/JtapiView.js';
7
4
  export function registerJtapiCommand(program) {
8
5
  const jtapi = program
9
6
  .command('jtapi')
10
- .description('JTAPI sidecar management and diagnostics');
7
+ .description('JTAPI sidecar management and diagnostics')
8
+ .action(async () => {
9
+ const { waitUntilExit } = render(React.createElement(JtapiView));
10
+ await waitUntilExit();
11
+ });
11
12
  jtapi.command('enable')
12
13
  .description('Enable the JTAPI sidecar')
13
14
  .action(async () => {
14
- const { waitUntilExit } = render(React.createElement(JtapiEnableView));
15
+ const { waitUntilExit } = render(React.createElement(JtapiView, { initialAction: 'enable' }));
15
16
  await waitUntilExit();
16
17
  });
17
18
  jtapi.command('disable')
18
19
  .description('Disable the JTAPI sidecar')
19
20
  .action(async () => {
20
- const { waitUntilExit } = render(React.createElement(JtapiDisableView));
21
+ const { waitUntilExit } = render(React.createElement(JtapiView, { initialAction: 'disable' }));
21
22
  await waitUntilExit();
22
23
  });
23
24
  jtapi.command('status')
24
25
  .description('Show JTAPI sidecar status')
25
26
  .action(async () => {
26
- const { waitUntilExit } = render(React.createElement(JtapiStatusView));
27
+ const { waitUntilExit } = render(React.createElement(JtapiView, { initialAction: 'status' }));
27
28
  await waitUntilExit();
28
29
  });
29
30
  jtapi.command('troubleshoot')
30
31
  .description('Run comprehensive JTAPI diagnostics (9 checks)')
31
32
  .action(async () => {
32
- const { waitUntilExit } = render(React.createElement(JtapiTroubleshootView));
33
+ const { waitUntilExit } = render(React.createElement(JtapiView, { initialAction: 'troubleshoot' }));
33
34
  await waitUntilExit();
34
35
  });
35
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jtapi.js","sourceRoot":"","sources":["../../src/commands/jtapi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,0CAA0C,CAAC,CAAC;IAE3D,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;QACvE,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;SACrB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACxE,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;QACvE,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;SAC1B,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC7E,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"jtapi.js","sourceRoot":"","sources":["../../src/commands/jtapi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9F,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;SACrB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC/F,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9F,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;SAC1B,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QACpG,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const VERSION = '0.3.9';
2
+ const VERSION = '0.4.1';
3
3
  import { Command } from 'commander';
4
4
  import { registerStatusCommand } from './commands/status.js';
5
5
  import { registerUpdateCommand } from './commands/update.js';
@@ -1 +1 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/lib/compose.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6CD,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAIjE,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CA0BpE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;IAmBzF;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;;;;IAkBA;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE;;;;IAkBnG;AAED,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYjE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAO7C;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE;;;;IAEhF"}
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/lib/compose.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6CD,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAIjE,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CA0BpE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;IAmBzF;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;;;;IAkBA;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE;;;;IAkBnG;AAED,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYjE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAM7C;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE;;;;IAEhF"}
@@ -155,12 +155,10 @@ export async function composePs(service) {
155
155
  return stdout.trim();
156
156
  }
157
157
  export function getAllComposeFiles() {
158
- const { composeFile, overrideFile, jtapiOverlayFile, jtapiStateFile, secretsOverlayFile } = getPaths();
158
+ const { composeFile, overrideFile, secretsOverlayFile } = getPaths();
159
159
  const files = [composeFile];
160
160
  if (existsSync(overrideFile))
161
161
  files.push(overrideFile);
162
- if (existsSync(jtapiStateFile) && existsSync(jtapiOverlayFile))
163
- files.push(jtapiOverlayFile);
164
162
  if (existsSync(secretsOverlayFile))
165
163
  files.push(secretsOverlayFile);
166
164
  return files;
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/lib/compose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/lib/compose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Read all key-value pairs from the .env file.
3
+ * Returns empty object if .env doesn't exist.
4
+ */
5
+ export declare function readEnvKeys(): Record<string, string>;
6
+ /**
7
+ * Update specific keys in .env without disturbing other content.
8
+ * - Existing keys are updated in-place (preserving line position)
9
+ * - New keys are appended at the end
10
+ * - Keys with value `undefined` are removed
11
+ * - Comments and blank lines are preserved
12
+ */
13
+ export declare function updateEnvKeys(updates: Record<string, string | undefined>): Promise<void>;
14
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQpD;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAsDf"}
@@ -0,0 +1,74 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { getEnvFilePath, parseEnvFile } from './secrets.js';
3
+ import { writeFileSafe } from './fs.js';
4
+ /**
5
+ * Read all key-value pairs from the .env file.
6
+ * Returns empty object if .env doesn't exist.
7
+ */
8
+ export function readEnvKeys() {
9
+ const envPath = getEnvFilePath();
10
+ if (!existsSync(envPath))
11
+ return {};
12
+ try {
13
+ return parseEnvFile(readFileSync(envPath, 'utf-8'));
14
+ }
15
+ catch {
16
+ return {};
17
+ }
18
+ }
19
+ /**
20
+ * Update specific keys in .env without disturbing other content.
21
+ * - Existing keys are updated in-place (preserving line position)
22
+ * - New keys are appended at the end
23
+ * - Keys with value `undefined` are removed
24
+ * - Comments and blank lines are preserved
25
+ */
26
+ export async function updateEnvKeys(updates) {
27
+ const envPath = getEnvFilePath();
28
+ const raw = existsSync(envPath) ? readFileSync(envPath, 'utf-8') : '';
29
+ // Split into lines, but drop the final empty string produced by trailing newline
30
+ const lines = raw.length > 0 ? raw.split('\n') : [];
31
+ if (lines.length > 0 && lines[lines.length - 1] === '') {
32
+ lines.pop();
33
+ }
34
+ const pending = new Map(Object.entries(updates));
35
+ const result = [];
36
+ for (const line of lines) {
37
+ const trimmed = line.trim();
38
+ // Preserve comments and blank lines
39
+ if (!trimmed || trimmed.startsWith('#')) {
40
+ result.push(line);
41
+ continue;
42
+ }
43
+ // Strip optional 'export ' prefix for key matching
44
+ const stripped = trimmed.startsWith('export ') ? trimmed.slice(7) : trimmed;
45
+ const eqIdx = stripped.indexOf('=');
46
+ if (eqIdx === -1) {
47
+ result.push(line);
48
+ continue;
49
+ }
50
+ const key = stripped.slice(0, eqIdx).trim();
51
+ if (pending.has(key)) {
52
+ const newValue = pending.get(key);
53
+ pending.delete(key);
54
+ if (newValue !== undefined) {
55
+ // Update in-place
56
+ result.push(`${key}=${newValue}`);
57
+ }
58
+ // If undefined, skip (remove the line)
59
+ }
60
+ else {
61
+ result.push(line);
62
+ }
63
+ }
64
+ // Append remaining new keys
65
+ for (const [key, value] of pending) {
66
+ if (value !== undefined) {
67
+ result.push(`${key}=${value}`);
68
+ }
69
+ }
70
+ // Ensure trailing newline
71
+ const content = result.length > 0 ? result.join('\n') + '\n' : '';
72
+ await writeFileSafe(envPath, content, { mode: 0o600 });
73
+ }
74
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,71 @@
1
+ export interface ContainerStatus {
2
+ running: boolean;
3
+ state: string;
4
+ health: string;
5
+ uptime?: string;
6
+ }
7
+ export interface HealthResult {
8
+ reachable: boolean;
9
+ status?: string;
10
+ source: 'compose' | 'exec';
11
+ detail?: string;
12
+ }
13
+ export interface DependencyStatus {
14
+ name: string;
15
+ running: boolean;
16
+ health: string;
17
+ }
18
+ export interface WebConfigStatus {
19
+ mode: string | null;
20
+ sidecarEndpoint: string | null;
21
+ configured: boolean;
22
+ }
23
+ export interface PrereqResult {
24
+ label: string;
25
+ passed: boolean;
26
+ detail: string;
27
+ }
28
+ /**
29
+ * Check if JTAPI is enabled by reading COMPOSE_PROFILES from .env.
30
+ * Pure read — no side effects or migration.
31
+ */
1
32
  export declare function isJtapiEnabled(): boolean;
2
- export declare function hasOverlayFile(): boolean;
33
+ /**
34
+ * Enable JTAPI: add jtapi to COMPOSE_PROFILES and write JTAPI env vars.
35
+ * Also runs migration cleanup if old state file exists.
36
+ */
3
37
  export declare function enableJtapi(): Promise<void>;
38
+ /**
39
+ * Disable JTAPI: remove jtapi from COMPOSE_PROFILES and remove JTAPI env vars.
40
+ */
4
41
  export declare function disableJtapi(): Promise<void>;
5
- export declare function getComposeFiles(): string[];
42
+ /**
43
+ * Explicit migration from old .jtapi-enabled state file to .env approach.
44
+ * Returns true if migration occurred.
45
+ */
46
+ export declare function migrateFromStateFile(): Promise<boolean>;
47
+ /**
48
+ * Get JTAPI sidecar container status via compose ps.
49
+ */
50
+ export declare function getJtapiContainerStatus(): Promise<ContainerStatus>;
51
+ /**
52
+ * Check JTAPI sidecar health. Primary: compose health field. Fallback: exec curl.
53
+ */
54
+ export declare function getJtapiHealthCheck(): Promise<HealthResult>;
55
+ /**
56
+ * Check status of JTAPI dependency services (nats, ct-media, minio).
57
+ */
58
+ export declare function getJtapiDependencyStatus(): Promise<DependencyStatus[]>;
59
+ /**
60
+ * Check JTAPI-related env vars on the running web container.
61
+ */
62
+ export declare function getJtapiWebConfig(): Promise<WebConfigStatus>;
63
+ /**
64
+ * Run pre-flight checks before enabling JTAPI.
65
+ */
66
+ export declare function checkJtapiPrereqs(): Promise<PrereqResult[]>;
67
+ /**
68
+ * Poll sidecar health until healthy or timeout.
69
+ */
70
+ export declare function waitForHealth(maxWaitSec?: number): Promise<boolean>;
6
71
  //# sourceMappingURL=jtapi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jtapi.d.ts","sourceRoot":"","sources":["../../src/lib/jtapi.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjD;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAO1C"}
1
+ {"version":3,"file":"jtapi.d.ts","sourceRoot":"","sources":["../../src/lib/jtapi.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;GAGG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAIxC;AAED;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBjD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAclD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAY7D;AAID;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,eAAe,CAAC,CAoCxE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CA4BjE;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmC5E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC,CAiBlE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAyCjE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,SAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAWrE"}
package/dist/lib/jtapi.js CHANGED
@@ -1,27 +1,274 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { getPaths } from './paths.js';
3
- import { writeFileSafe, removeSafe } from './fs.js';
3
+ import { removeSafe } from './fs.js';
4
+ import { readEnvKeys, updateEnvKeys } from './env.js';
5
+ import { compose, composeExec } from './compose.js';
6
+ import { exec } from './exec.js';
7
+ import { checkDiskSpace } from './system.js';
8
+ import { debug } from './log.js';
9
+ // ── JTAPI env vars written to .env when enabling ──
10
+ const JTAPI_ENV_VARS = {
11
+ JTAPI_MODE: 'direct',
12
+ JTAPI_SIDECAR_ENDPOINT: 'jtapi-sidecar:50051',
13
+ JTAPI_SIDECAR_URL: 'http://jtapi-sidecar:8080',
14
+ S3_ENABLED: 'true',
15
+ CT_MEDIA_ENDPOINT: 'ct-media:50053',
16
+ };
17
+ const JTAPI_ENV_KEYS = [
18
+ ...Object.keys(JTAPI_ENV_VARS),
19
+ 'JTAPI_VERSION',
20
+ 'CT_MEDIA_VERSION',
21
+ ];
22
+ // ── State management ──
23
+ /**
24
+ * Check if JTAPI is enabled by reading COMPOSE_PROFILES from .env.
25
+ * Pure read — no side effects or migration.
26
+ */
4
27
  export function isJtapiEnabled() {
5
- const { jtapiStateFile, jtapiOverlayFile } = getPaths();
6
- return existsSync(jtapiStateFile) && existsSync(jtapiOverlayFile);
7
- }
8
- export function hasOverlayFile() {
9
- return existsSync(getPaths().jtapiOverlayFile);
28
+ const env = readEnvKeys();
29
+ const profiles = env.COMPOSE_PROFILES ?? '';
30
+ return profiles.split(',').map(p => p.trim()).includes('jtapi');
10
31
  }
32
+ /**
33
+ * Enable JTAPI: add jtapi to COMPOSE_PROFILES and write JTAPI env vars.
34
+ * Also runs migration cleanup if old state file exists.
35
+ */
11
36
  export async function enableJtapi() {
12
- await writeFileSafe(getPaths().jtapiStateFile, '');
37
+ const env = readEnvKeys();
38
+ const existing = (env.COMPOSE_PROFILES ?? '').split(',').map(p => p.trim()).filter(Boolean);
39
+ if (!existing.includes('jtapi')) {
40
+ existing.push('jtapi');
41
+ }
42
+ const updates = {
43
+ COMPOSE_PROFILES: existing.join(','),
44
+ ...JTAPI_ENV_VARS,
45
+ };
46
+ await updateEnvKeys(updates);
47
+ // Clean up old state file if present (one-time migration)
48
+ const { jtapiStateFile } = getPaths();
49
+ if (existsSync(jtapiStateFile)) {
50
+ await removeSafe(jtapiStateFile);
51
+ }
13
52
  }
53
+ /**
54
+ * Disable JTAPI: remove jtapi from COMPOSE_PROFILES and remove JTAPI env vars.
55
+ */
14
56
  export async function disableJtapi() {
57
+ const env = readEnvKeys();
58
+ const existing = (env.COMPOSE_PROFILES ?? '').split(',').map(p => p.trim()).filter(Boolean);
59
+ const filtered = existing.filter(p => p !== 'jtapi');
60
+ const updates = {
61
+ COMPOSE_PROFILES: filtered.length > 0 ? filtered.join(',') : undefined,
62
+ };
63
+ for (const key of JTAPI_ENV_KEYS) {
64
+ updates[key] = undefined;
65
+ }
66
+ await updateEnvKeys(updates);
67
+ }
68
+ /**
69
+ * Explicit migration from old .jtapi-enabled state file to .env approach.
70
+ * Returns true if migration occurred.
71
+ */
72
+ export async function migrateFromStateFile() {
15
73
  const { jtapiStateFile } = getPaths();
16
- if (existsSync(jtapiStateFile))
74
+ if (!existsSync(jtapiStateFile))
75
+ return false;
76
+ // Already migrated?
77
+ if (isJtapiEnabled()) {
17
78
  await removeSafe(jtapiStateFile);
79
+ return false;
80
+ }
81
+ await enableJtapi();
82
+ return true;
83
+ }
84
+ // ── Container / health inspection ──
85
+ /**
86
+ * Get JTAPI sidecar container status via compose ps.
87
+ */
88
+ export async function getJtapiContainerStatus() {
89
+ try {
90
+ const result = await compose(['ps', '--format', 'json', 'jtapi-sidecar'], { pipe: true });
91
+ const stdout = String(result.stdout ?? '').trim();
92
+ if (!stdout)
93
+ return { running: false, state: 'not found', health: 'unknown' };
94
+ // compose ps --format json may output one JSON object per line
95
+ const lines = stdout.split('\n').filter(Boolean);
96
+ for (const line of lines) {
97
+ try {
98
+ const obj = JSON.parse(line);
99
+ const state = (obj.State ?? obj.state ?? '').toLowerCase();
100
+ const health = (obj.Health ?? obj.health ?? 'unknown').toLowerCase();
101
+ const status = obj.Status ?? obj.status ?? '';
102
+ return {
103
+ running: state === 'running',
104
+ state: state || 'unknown',
105
+ health: health || 'unknown',
106
+ uptime: status || undefined,
107
+ };
108
+ }
109
+ catch {
110
+ continue;
111
+ }
112
+ }
113
+ // Fallback: text parsing
114
+ if (stdout.toLowerCase().includes('running')) {
115
+ const healthy = stdout.toLowerCase().includes('healthy');
116
+ return { running: true, state: 'running', health: healthy ? 'healthy' : 'unknown' };
117
+ }
118
+ return { running: false, state: 'exited', health: 'unknown' };
119
+ }
120
+ catch (err) {
121
+ debug(`getJtapiContainerStatus failed: ${err.message}`);
122
+ return { running: false, state: 'not found', health: 'unknown' };
123
+ }
124
+ }
125
+ /**
126
+ * Check JTAPI sidecar health. Primary: compose health field. Fallback: exec curl.
127
+ */
128
+ export async function getJtapiHealthCheck() {
129
+ const container = await getJtapiContainerStatus();
130
+ // If compose reports a known health status, use it
131
+ if (container.health === 'healthy') {
132
+ return { reachable: true, status: 'UP', source: 'compose' };
133
+ }
134
+ if (container.health === 'unhealthy') {
135
+ return { reachable: false, status: 'DOWN', source: 'compose' };
136
+ }
137
+ // Fallback: try exec curl into the container
138
+ if (!container.running) {
139
+ return { reachable: false, source: 'compose', detail: `Container ${container.state}` };
140
+ }
141
+ try {
142
+ const result = await Promise.race([
143
+ composeExec('jtapi-sidecar', ['curl', '-sf', 'http://localhost:8080/actuator/health'], { pipe: true }),
144
+ new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), 10_000)),
145
+ ]);
146
+ const stdout = String(result.stdout ?? '').trim();
147
+ const status = stdout.includes('"UP"') ? 'UP' : stdout.includes('"DOWN"') ? 'DOWN' : undefined;
148
+ return { reachable: true, status, source: 'exec', detail: stdout };
149
+ }
150
+ catch (err) {
151
+ debug(`Health exec fallback failed: ${err.message}`);
152
+ return { reachable: false, source: 'exec', detail: err.message };
153
+ }
154
+ }
155
+ /**
156
+ * Check status of JTAPI dependency services (nats, ct-media, minio).
157
+ */
158
+ export async function getJtapiDependencyStatus() {
159
+ const services = ['nats', 'ct-media', 'minio'];
160
+ const results = [];
161
+ for (const name of services) {
162
+ try {
163
+ const result = await compose(['ps', '--format', 'json', name], { pipe: true });
164
+ const stdout = String(result.stdout ?? '').trim();
165
+ if (!stdout) {
166
+ results.push({ name, running: false, health: 'not found' });
167
+ continue;
168
+ }
169
+ const lines = stdout.split('\n').filter(Boolean);
170
+ let parsed = false;
171
+ for (const line of lines) {
172
+ try {
173
+ const obj = JSON.parse(line);
174
+ const state = (obj.State ?? obj.state ?? '').toLowerCase();
175
+ const health = (obj.Health ?? obj.health ?? 'unknown').toLowerCase();
176
+ results.push({ name, running: state === 'running', health: health || 'unknown' });
177
+ parsed = true;
178
+ break;
179
+ }
180
+ catch {
181
+ continue;
182
+ }
183
+ }
184
+ if (!parsed) {
185
+ const running = stdout.toLowerCase().includes('running');
186
+ results.push({ name, running, health: running ? 'unknown' : 'not found' });
187
+ }
188
+ }
189
+ catch {
190
+ results.push({ name, running: false, health: 'not found' });
191
+ }
192
+ }
193
+ return results;
194
+ }
195
+ /**
196
+ * Check JTAPI-related env vars on the running web container.
197
+ */
198
+ export async function getJtapiWebConfig() {
199
+ try {
200
+ const result = await composeExec('web', ['env'], { pipe: true });
201
+ const stdout = String(result.stdout ?? '');
202
+ const vars = {};
203
+ for (const line of stdout.split('\n')) {
204
+ const eq = line.indexOf('=');
205
+ if (eq > 0)
206
+ vars[line.slice(0, eq)] = line.slice(eq + 1);
207
+ }
208
+ const mode = vars.JTAPI_MODE || null;
209
+ const sidecarEndpoint = vars.JTAPI_SIDECAR_ENDPOINT || null;
210
+ return { mode, sidecarEndpoint, configured: !!mode };
211
+ }
212
+ catch (err) {
213
+ debug(`getJtapiWebConfig failed: ${err.message}`);
214
+ return { mode: null, sidecarEndpoint: null, configured: false };
215
+ }
216
+ }
217
+ /**
218
+ * Run pre-flight checks before enabling JTAPI.
219
+ */
220
+ export async function checkJtapiPrereqs() {
221
+ const results = [];
222
+ // 1. Docker Compose plugin available (not legacy docker-compose)
223
+ try {
224
+ const result = await exec('docker', ['compose', 'version']);
225
+ const version = String(result.stdout ?? '').trim();
226
+ results.push({ label: 'Docker Compose plugin', passed: true, detail: version });
227
+ }
228
+ catch {
229
+ results.push({ label: 'Docker Compose plugin', passed: false, detail: 'JTAPI requires "docker compose" plugin (not legacy docker-compose)' });
230
+ }
231
+ // 2. Docker daemon running
232
+ try {
233
+ await exec('docker', ['info'], { stdout: 'pipe', stderr: 'pipe' });
234
+ results.push({ label: 'Docker daemon', passed: true, detail: 'running' });
235
+ }
236
+ catch {
237
+ results.push({ label: 'Docker daemon', passed: false, detail: 'Docker daemon is not running' });
238
+ }
239
+ // 3. Current state
240
+ const enabled = isJtapiEnabled();
241
+ results.push({
242
+ label: 'JTAPI status',
243
+ passed: !enabled,
244
+ detail: enabled ? 'Already enabled' : 'Disabled — ready to enable',
245
+ });
246
+ // 4. Disk space
247
+ try {
248
+ const disk = await checkDiskSpace('/', 5);
249
+ results.push({
250
+ label: 'Disk space',
251
+ passed: disk.ok,
252
+ detail: disk.ok ? `${disk.freePercent}% free` : `Only ${disk.freePercent}% free (need 5%)`,
253
+ });
254
+ }
255
+ catch {
256
+ results.push({ label: 'Disk space', passed: true, detail: 'Unable to check' });
257
+ }
258
+ return results;
18
259
  }
19
- export function getComposeFiles() {
20
- const { composeFile, jtapiOverlayFile, jtapiStateFile } = getPaths();
21
- const files = [composeFile];
22
- if (existsSync(jtapiStateFile) && existsSync(jtapiOverlayFile)) {
23
- files.push(jtapiOverlayFile);
260
+ /**
261
+ * Poll sidecar health until healthy or timeout.
262
+ */
263
+ export async function waitForHealth(maxWaitSec = 90) {
264
+ const interval = 5_000;
265
+ const deadline = Date.now() + maxWaitSec * 1000;
266
+ while (Date.now() < deadline) {
267
+ const health = await getJtapiHealthCheck();
268
+ if (health.reachable && health.status === 'UP')
269
+ return true;
270
+ await new Promise(r => setTimeout(r, interval));
24
271
  }
25
- return files;
272
+ return false;
26
273
  }
27
274
  //# sourceMappingURL=jtapi.js.map