@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.
- package/dist/commands/diag.d.ts.map +1 -1
- package/dist/commands/diag.js +7 -0
- package/dist/commands/diag.js.map +1 -1
- package/dist/commands/jtapi.d.ts.map +1 -1
- package/dist/commands/jtapi.js +10 -9
- package/dist/commands/jtapi.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/compose.d.ts.map +1 -1
- package/dist/lib/compose.js +1 -3
- package/dist/lib/compose.js.map +1 -1
- package/dist/lib/env.d.ts +14 -0
- package/dist/lib/env.d.ts.map +1 -0
- package/dist/lib/env.js +74 -0
- package/dist/lib/env.js.map +1 -0
- package/dist/lib/jtapi.d.ts +67 -2
- package/dist/lib/jtapi.d.ts.map +1 -1
- package/dist/lib/jtapi.js +261 -14
- package/dist/lib/jtapi.js.map +1 -1
- package/dist/lib/paths.d.ts +1 -1
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +1 -1
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/redact.d.ts +10 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +45 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/rpc.d.ts +2 -0
- package/dist/lib/rpc.d.ts.map +1 -1
- package/dist/lib/rpc.js +27 -7
- package/dist/lib/rpc.js.map +1 -1
- package/dist/lib/secrets.d.ts +2 -1
- package/dist/lib/secrets.d.ts.map +1 -1
- package/dist/lib/secrets.js +16 -1
- package/dist/lib/secrets.js.map +1 -1
- package/dist/lib/showtech-steps.d.ts +7 -0
- package/dist/lib/showtech-steps.d.ts.map +1 -0
- package/dist/lib/showtech-steps.js +351 -0
- package/dist/lib/showtech-steps.js.map +1 -0
- package/dist/ui/components/TabBar.d.ts +12 -0
- package/dist/ui/components/TabBar.d.ts.map +1 -0
- package/dist/ui/components/TabBar.js +9 -0
- package/dist/ui/components/TabBar.js.map +1 -0
- package/dist/ui/components/index.d.ts +2 -0
- package/dist/ui/components/index.d.ts.map +1 -1
- package/dist/ui/components/index.js +1 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -1
- package/dist/ui/views/DiagDatabaseView.js +126 -38
- package/dist/ui/views/DiagDatabaseView.js.map +1 -1
- package/dist/ui/views/DiagShowTechView.d.ts +6 -0
- package/dist/ui/views/DiagShowTechView.d.ts.map +1 -0
- package/dist/ui/views/DiagShowTechView.js +68 -0
- package/dist/ui/views/DiagShowTechView.js.map +1 -0
- package/dist/ui/views/JtapiView.d.ts +7 -0
- package/dist/ui/views/JtapiView.d.ts.map +1 -0
- package/dist/ui/views/JtapiView.js +407 -0
- package/dist/ui/views/JtapiView.js.map +1 -0
- package/dist/ui/views/MainMenu.d.ts.map +1 -1
- package/dist/ui/views/MainMenu.js +16 -16
- package/dist/ui/views/MainMenu.js.map +1 -1
- 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;
|
|
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"}
|
package/dist/commands/diag.js
CHANGED
|
@@ -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":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SACpB,WAAW,CAAC,uCAAuC,CAAC;SACpD,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,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SACpB,WAAW,CAAC,4CAA4C,CAAC;SACzD,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,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SACrB,WAAW,CAAC,wCAAwC,CAAC;SACrD,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,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;SAC/B,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,GAAW,EAAE,EAAE;QAC1C,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,gBAAgB;QAChB,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,0BAA0B,CAAC,CAAC,CAAC;YAC7F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC5E,QAAQ,GAAG,KAAK,IAAI,0BAA0B,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,0BAA0B,CAAC;QACxC,CAAC;QAED,YAAY;QACZ,IAAI,IAAY,EAAE,IAAY,CAAC;QAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAEvD,IAAI,SAAS,EAAE,CAAC;YACd,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;QAC7B,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM;YAChC,CAAC,CAAC;;;qCAG2B,IAAI,MAAM,IAAI;;;;;;oCAMf,IAAI,IAAI,IAAI;;;;SAIvC;YACD,CAAC,CAAC;;;qCAG2B,IAAI,KAAK,IAAI;;;;SAIzC,CAAC;QAEJ,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ;YACjE,6BAA6B,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE;YACpD,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC;SAChD,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,MAAe,EAAE,MAAe,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;QAE1D,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,UAAU,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACnC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE;YACxE,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
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;
|
|
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"}
|
package/dist/commands/jtapi.js
CHANGED
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
import { render } from 'ink';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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,
|
|
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 +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,
|
|
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"}
|
package/dist/lib/compose.js
CHANGED
|
@@ -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,
|
|
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;
|
package/dist/lib/compose.js.map
CHANGED
|
@@ -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"}
|
package/dist/lib/env.js
ADDED
|
@@ -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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"}
|
package/dist/lib/jtapi.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
package/dist/lib/jtapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jtapi.d.ts","sourceRoot":"","sources":["../../src/lib/jtapi.ts"],"names":[],"mappings":"
|
|
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 {
|
|
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
|
|
6
|
-
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
272
|
+
return false;
|
|
26
273
|
}
|
|
27
274
|
//# sourceMappingURL=jtapi.js.map
|