@openscout/scout 0.2.69 → 0.2.72
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/README.md +22 -0
- package/bin/openscout-runtime.mjs +23 -2
- package/dist/client/assets/RepoDiffViewer-DRzXs-TP.js +1 -0
- package/dist/client/assets/{addon-fit-DtSNdpy5.js → addon-fit-C5ueiijZ.js} +1 -1
- package/dist/client/assets/{addon-webgl-YYNKPQUg.js → addon-webgl-Cm7sl8RO.js} +1 -1
- package/dist/client/assets/index-CYs6TkOv.js +191 -0
- package/dist/client/assets/index-n_fpvwq8.css +1 -0
- package/dist/client/assets/{xterm-fBtFsYpq.js → xterm-FFux-PdF.js} +1 -1
- package/dist/client/index.html +36 -2
- package/dist/main.mjs +24567 -18118
- package/dist/openscout-terminal-relay.mjs +14 -74
- package/dist/pair-supervisor.mjs +8810 -3328
- package/dist/runtime/base-daemon.mjs +96 -16
- package/dist/runtime/broker-daemon.mjs +9907 -2715
- package/dist/runtime/broker-process-manager.mjs +50 -11
- package/dist/runtime/mesh-discover.mjs +50 -11
- package/dist/scout-control-plane-web.mjs +11134 -1542
- package/dist/scout-web-server.mjs +11134 -1542
- package/package.json +2 -2
- package/dist/client/assets/index-5-XOQrKH.js +0 -186
- package/dist/client/assets/index-BnA2HAbt.css +0 -1
|
@@ -8,6 +8,7 @@ import { fileURLToPath } from "url";
|
|
|
8
8
|
|
|
9
9
|
// packages/runtime/src/broker-api.ts
|
|
10
10
|
import { request as httpRequest } from "http";
|
|
11
|
+
var DEFAULT_BROKER_JSON_REQUEST_TIMEOUT_MS = 30000;
|
|
11
12
|
function normalizeBaseUrl(baseUrl) {
|
|
12
13
|
const trimmed = baseUrl.trim();
|
|
13
14
|
if (!trimmed) {
|
|
@@ -108,12 +109,19 @@ function requestBrokerOverUnixSocket(socketPath, baseUrl, path, options) {
|
|
|
108
109
|
request.end();
|
|
109
110
|
});
|
|
110
111
|
}
|
|
112
|
+
function defaultBrokerRequestSignal(options) {
|
|
113
|
+
return options.signal ?? AbortSignal.timeout(DEFAULT_BROKER_JSON_REQUEST_TIMEOUT_MS);
|
|
114
|
+
}
|
|
111
115
|
async function requestBrokerWire(baseUrl, path, options) {
|
|
116
|
+
const requestOptions = {
|
|
117
|
+
...options,
|
|
118
|
+
signal: defaultBrokerRequestSignal(options)
|
|
119
|
+
};
|
|
112
120
|
const socketPath = options.socketPath?.trim();
|
|
113
121
|
if (socketPath) {
|
|
114
122
|
try {
|
|
115
123
|
return {
|
|
116
|
-
response: await requestBrokerOverUnixSocket(socketPath, baseUrl, path,
|
|
124
|
+
response: await requestBrokerOverUnixSocket(socketPath, baseUrl, path, requestOptions),
|
|
117
125
|
trace: {
|
|
118
126
|
transport: "unix_socket",
|
|
119
127
|
socketPath
|
|
@@ -124,7 +132,7 @@ async function requestBrokerWire(baseUrl, path, options) {
|
|
|
124
132
|
throw error;
|
|
125
133
|
}
|
|
126
134
|
return {
|
|
127
|
-
response: await requestBrokerOverHttp(baseUrl, path,
|
|
135
|
+
response: await requestBrokerOverHttp(baseUrl, path, requestOptions),
|
|
128
136
|
trace: {
|
|
129
137
|
transport: "http",
|
|
130
138
|
socketPath,
|
|
@@ -134,7 +142,7 @@ async function requestBrokerWire(baseUrl, path, options) {
|
|
|
134
142
|
}
|
|
135
143
|
}
|
|
136
144
|
return {
|
|
137
|
-
response: await requestBrokerOverHttp(baseUrl, path,
|
|
145
|
+
response: await requestBrokerOverHttp(baseUrl, path, requestOptions),
|
|
138
146
|
trace: {
|
|
139
147
|
transport: "http"
|
|
140
148
|
}
|
|
@@ -175,6 +183,8 @@ function resolveOpenScoutSupportPaths() {
|
|
|
175
183
|
const logsDirectory = join(supportDirectory, "logs");
|
|
176
184
|
const runtimeDirectory = join(supportDirectory, "runtime");
|
|
177
185
|
const catalogDirectory = join(supportDirectory, "catalog");
|
|
186
|
+
const controlHome = process.env.OPENSCOUT_CONTROL_HOME ?? join(home, ".openscout", "control-plane");
|
|
187
|
+
const knowledgeDirectory = join(controlHome, "knowledge");
|
|
178
188
|
return {
|
|
179
189
|
supportDirectory,
|
|
180
190
|
logsDirectory,
|
|
@@ -186,8 +196,12 @@ function resolveOpenScoutSupportPaths() {
|
|
|
186
196
|
settingsPath: join(supportDirectory, "settings.json"),
|
|
187
197
|
harnessCatalogPath: join(catalogDirectory, "harness-catalog.json"),
|
|
188
198
|
relayAgentsRegistryPath: join(supportDirectory, "relay-agents.json"),
|
|
199
|
+
managedInstallsPath: join(supportDirectory, "managed-installs.json"),
|
|
189
200
|
relayHubDirectory: process.env.OPENSCOUT_RELAY_HUB ?? join(home, ".openscout", "relay"),
|
|
190
|
-
controlHome
|
|
201
|
+
controlHome,
|
|
202
|
+
knowledgeDirectory,
|
|
203
|
+
knowledgeQmdDirectory: join(knowledgeDirectory, "qmd"),
|
|
204
|
+
knowledgeSqlitePath: join(knowledgeDirectory, "knowledge.sqlite"),
|
|
191
205
|
desktopStatusPath: join(supportDirectory, "agent-status.json"),
|
|
192
206
|
workspaceStatePath: join(supportDirectory, "workspace-state.json"),
|
|
193
207
|
cutoverMarkerPath: join(supportDirectory, OPENSCOUT_RPC_CUTOVER_MARKER)
|
|
@@ -339,6 +353,7 @@ function isLoopbackHost(host) {
|
|
|
339
353
|
}
|
|
340
354
|
var BROKER_SERVICE_POLL_INTERVAL_MS = 100;
|
|
341
355
|
var DEFAULT_BROKER_START_TIMEOUT_MS = 15000;
|
|
356
|
+
var DEFAULT_BROKER_STOP_TIMEOUT_MS = 20000;
|
|
342
357
|
function buildDefaultBrokerUrl(host = DEFAULT_BROKER_HOST, port = DEFAULT_BROKER_PORT) {
|
|
343
358
|
return `http://${host}:${port}`;
|
|
344
359
|
}
|
|
@@ -444,6 +459,13 @@ function resolveBrokerStartTimeoutMs() {
|
|
|
444
459
|
}
|
|
445
460
|
return DEFAULT_BROKER_START_TIMEOUT_MS;
|
|
446
461
|
}
|
|
462
|
+
function resolveBrokerStopTimeoutMs() {
|
|
463
|
+
const explicit = Number.parseInt(process.env.OPENSCOUT_BROKER_STOP_TIMEOUT_MS ?? "", 10);
|
|
464
|
+
if (Number.isFinite(explicit) && explicit > 0) {
|
|
465
|
+
return Math.max(explicit, BROKER_SERVICE_POLL_INTERVAL_MS);
|
|
466
|
+
}
|
|
467
|
+
return DEFAULT_BROKER_STOP_TIMEOUT_MS;
|
|
468
|
+
}
|
|
447
469
|
function resolveBrokerServiceLabel(mode) {
|
|
448
470
|
const explicit = process.env.OPENSCOUT_SERVICE_LABEL?.trim() || process.env.OPENSCOUT_BROKER_SERVICE_LABEL?.trim();
|
|
449
471
|
if (explicit) {
|
|
@@ -533,7 +555,18 @@ function renderLaunchAgentPlist(config) {
|
|
|
533
555
|
"OPENSCOUT_NODE_QUALIFIER",
|
|
534
556
|
"OPENSCOUT_TAILSCALE_BIN",
|
|
535
557
|
"OPENSCOUT_TAILSCALE_STATUS_JSON",
|
|
536
|
-
"OPENSCOUT_SSE_KEEPALIVE_MS"
|
|
558
|
+
"OPENSCOUT_SSE_KEEPALIVE_MS",
|
|
559
|
+
"OPENSCOUT_WEB_EDGE_SCHEME",
|
|
560
|
+
"OPENSCOUT_WEB_PUBLIC_ORIGIN",
|
|
561
|
+
"OPENSCOUT_WEB_PORTAL_HOST",
|
|
562
|
+
"OPENSCOUT_WEB_LOCAL_NAME",
|
|
563
|
+
"OPENSCOUT_WEB_ADVERTISED_HOST",
|
|
564
|
+
"OPENSCOUT_WEB_TRUSTED_HOSTS",
|
|
565
|
+
"OPENSCOUT_WEB_TRUSTED_ORIGINS",
|
|
566
|
+
"OPENSCOUT_WEB_PORT",
|
|
567
|
+
"OPENSCOUT_WEB_FLAG_BUNDLE",
|
|
568
|
+
"OPENSCOUT_WEB_EXPERIENCE",
|
|
569
|
+
"OPENSCOUT_WEB_AB_VARIANT"
|
|
537
570
|
])
|
|
538
571
|
};
|
|
539
572
|
if (coreAgentsValue) {
|
|
@@ -816,6 +849,7 @@ async function startBrokerService(config = resolveBrokerServiceConfig()) {
|
|
|
816
849
|
bootoutLegacyBrokerService(config);
|
|
817
850
|
writeLaunchAgentPlist(config);
|
|
818
851
|
runCommand(launchctlPath(), ["bootout", config.serviceTarget], { allowFailure: true });
|
|
852
|
+
await waitForBrokerServiceStopped(config);
|
|
819
853
|
runCommand(launchctlPath(), ["bootstrap", config.domainTarget, config.launchAgentPath], { allowFailure: true });
|
|
820
854
|
runCommand(launchctlPath(), ["kickstart", "-k", config.serviceTarget], { allowFailure: true });
|
|
821
855
|
const attempts = Math.ceil(resolveBrokerStartTimeoutMs() / BROKER_SERVICE_POLL_INTERVAL_MS);
|
|
@@ -832,16 +866,21 @@ async function startBrokerService(config = resolveBrokerServiceConfig()) {
|
|
|
832
866
|
function sleep(ms) {
|
|
833
867
|
return new Promise((resolve3) => setTimeout(resolve3, ms));
|
|
834
868
|
}
|
|
835
|
-
async function
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
869
|
+
async function waitForBrokerServiceStopped(config) {
|
|
870
|
+
let status = await brokerServiceStatus(config);
|
|
871
|
+
const attempts = Math.ceil(resolveBrokerStopTimeoutMs() / BROKER_SERVICE_POLL_INTERVAL_MS);
|
|
872
|
+
for (let attempt = 0;attempt < attempts; attempt += 1) {
|
|
873
|
+
status = await brokerServiceStatus(config);
|
|
874
|
+
if (!status.loaded && !status.health.reachable) {
|
|
840
875
|
return status;
|
|
841
876
|
}
|
|
842
877
|
await sleep(BROKER_SERVICE_POLL_INTERVAL_MS);
|
|
843
878
|
}
|
|
844
|
-
return
|
|
879
|
+
return status;
|
|
880
|
+
}
|
|
881
|
+
async function stopBrokerService(config = resolveBrokerServiceConfig()) {
|
|
882
|
+
runCommand(launchctlPath(), ["bootout", config.serviceTarget], { allowFailure: true });
|
|
883
|
+
return waitForBrokerServiceStopped(config);
|
|
845
884
|
}
|
|
846
885
|
async function restartBrokerService(config = resolveBrokerServiceConfig()) {
|
|
847
886
|
await stopBrokerService(config);
|
|
@@ -8,6 +8,7 @@ import { fileURLToPath } from "url";
|
|
|
8
8
|
|
|
9
9
|
// packages/runtime/src/broker-api.ts
|
|
10
10
|
import { request as httpRequest } from "http";
|
|
11
|
+
var DEFAULT_BROKER_JSON_REQUEST_TIMEOUT_MS = 30000;
|
|
11
12
|
function normalizeBaseUrl(baseUrl) {
|
|
12
13
|
const trimmed = baseUrl.trim();
|
|
13
14
|
if (!trimmed) {
|
|
@@ -108,12 +109,19 @@ function requestBrokerOverUnixSocket(socketPath, baseUrl, path, options) {
|
|
|
108
109
|
request.end();
|
|
109
110
|
});
|
|
110
111
|
}
|
|
112
|
+
function defaultBrokerRequestSignal(options) {
|
|
113
|
+
return options.signal ?? AbortSignal.timeout(DEFAULT_BROKER_JSON_REQUEST_TIMEOUT_MS);
|
|
114
|
+
}
|
|
111
115
|
async function requestBrokerWire(baseUrl, path, options) {
|
|
116
|
+
const requestOptions = {
|
|
117
|
+
...options,
|
|
118
|
+
signal: defaultBrokerRequestSignal(options)
|
|
119
|
+
};
|
|
112
120
|
const socketPath = options.socketPath?.trim();
|
|
113
121
|
if (socketPath) {
|
|
114
122
|
try {
|
|
115
123
|
return {
|
|
116
|
-
response: await requestBrokerOverUnixSocket(socketPath, baseUrl, path,
|
|
124
|
+
response: await requestBrokerOverUnixSocket(socketPath, baseUrl, path, requestOptions),
|
|
117
125
|
trace: {
|
|
118
126
|
transport: "unix_socket",
|
|
119
127
|
socketPath
|
|
@@ -124,7 +132,7 @@ async function requestBrokerWire(baseUrl, path, options) {
|
|
|
124
132
|
throw error;
|
|
125
133
|
}
|
|
126
134
|
return {
|
|
127
|
-
response: await requestBrokerOverHttp(baseUrl, path,
|
|
135
|
+
response: await requestBrokerOverHttp(baseUrl, path, requestOptions),
|
|
128
136
|
trace: {
|
|
129
137
|
transport: "http",
|
|
130
138
|
socketPath,
|
|
@@ -134,7 +142,7 @@ async function requestBrokerWire(baseUrl, path, options) {
|
|
|
134
142
|
}
|
|
135
143
|
}
|
|
136
144
|
return {
|
|
137
|
-
response: await requestBrokerOverHttp(baseUrl, path,
|
|
145
|
+
response: await requestBrokerOverHttp(baseUrl, path, requestOptions),
|
|
138
146
|
trace: {
|
|
139
147
|
transport: "http"
|
|
140
148
|
}
|
|
@@ -175,6 +183,8 @@ function resolveOpenScoutSupportPaths() {
|
|
|
175
183
|
const logsDirectory = join(supportDirectory, "logs");
|
|
176
184
|
const runtimeDirectory = join(supportDirectory, "runtime");
|
|
177
185
|
const catalogDirectory = join(supportDirectory, "catalog");
|
|
186
|
+
const controlHome = process.env.OPENSCOUT_CONTROL_HOME ?? join(home, ".openscout", "control-plane");
|
|
187
|
+
const knowledgeDirectory = join(controlHome, "knowledge");
|
|
178
188
|
return {
|
|
179
189
|
supportDirectory,
|
|
180
190
|
logsDirectory,
|
|
@@ -186,8 +196,12 @@ function resolveOpenScoutSupportPaths() {
|
|
|
186
196
|
settingsPath: join(supportDirectory, "settings.json"),
|
|
187
197
|
harnessCatalogPath: join(catalogDirectory, "harness-catalog.json"),
|
|
188
198
|
relayAgentsRegistryPath: join(supportDirectory, "relay-agents.json"),
|
|
199
|
+
managedInstallsPath: join(supportDirectory, "managed-installs.json"),
|
|
189
200
|
relayHubDirectory: process.env.OPENSCOUT_RELAY_HUB ?? join(home, ".openscout", "relay"),
|
|
190
|
-
controlHome
|
|
201
|
+
controlHome,
|
|
202
|
+
knowledgeDirectory,
|
|
203
|
+
knowledgeQmdDirectory: join(knowledgeDirectory, "qmd"),
|
|
204
|
+
knowledgeSqlitePath: join(knowledgeDirectory, "knowledge.sqlite"),
|
|
191
205
|
desktopStatusPath: join(supportDirectory, "agent-status.json"),
|
|
192
206
|
workspaceStatePath: join(supportDirectory, "workspace-state.json"),
|
|
193
207
|
cutoverMarkerPath: join(supportDirectory, OPENSCOUT_RPC_CUTOVER_MARKER)
|
|
@@ -335,6 +349,7 @@ function resolveBrokerHost(scope = resolveAdvertiseScope()) {
|
|
|
335
349
|
}
|
|
336
350
|
var BROKER_SERVICE_POLL_INTERVAL_MS = 100;
|
|
337
351
|
var DEFAULT_BROKER_START_TIMEOUT_MS = 15000;
|
|
352
|
+
var DEFAULT_BROKER_STOP_TIMEOUT_MS = 20000;
|
|
338
353
|
function buildDefaultBrokerUrl(host = DEFAULT_BROKER_HOST, port = DEFAULT_BROKER_PORT) {
|
|
339
354
|
return `http://${host}:${port}`;
|
|
340
355
|
}
|
|
@@ -430,6 +445,13 @@ function resolveBrokerStartTimeoutMs() {
|
|
|
430
445
|
}
|
|
431
446
|
return DEFAULT_BROKER_START_TIMEOUT_MS;
|
|
432
447
|
}
|
|
448
|
+
function resolveBrokerStopTimeoutMs() {
|
|
449
|
+
const explicit = Number.parseInt(process.env.OPENSCOUT_BROKER_STOP_TIMEOUT_MS ?? "", 10);
|
|
450
|
+
if (Number.isFinite(explicit) && explicit > 0) {
|
|
451
|
+
return Math.max(explicit, BROKER_SERVICE_POLL_INTERVAL_MS);
|
|
452
|
+
}
|
|
453
|
+
return DEFAULT_BROKER_STOP_TIMEOUT_MS;
|
|
454
|
+
}
|
|
433
455
|
function resolveBrokerServiceLabel(mode) {
|
|
434
456
|
const explicit = process.env.OPENSCOUT_SERVICE_LABEL?.trim() || process.env.OPENSCOUT_BROKER_SERVICE_LABEL?.trim();
|
|
435
457
|
if (explicit) {
|
|
@@ -519,7 +541,18 @@ function renderLaunchAgentPlist(config) {
|
|
|
519
541
|
"OPENSCOUT_NODE_QUALIFIER",
|
|
520
542
|
"OPENSCOUT_TAILSCALE_BIN",
|
|
521
543
|
"OPENSCOUT_TAILSCALE_STATUS_JSON",
|
|
522
|
-
"OPENSCOUT_SSE_KEEPALIVE_MS"
|
|
544
|
+
"OPENSCOUT_SSE_KEEPALIVE_MS",
|
|
545
|
+
"OPENSCOUT_WEB_EDGE_SCHEME",
|
|
546
|
+
"OPENSCOUT_WEB_PUBLIC_ORIGIN",
|
|
547
|
+
"OPENSCOUT_WEB_PORTAL_HOST",
|
|
548
|
+
"OPENSCOUT_WEB_LOCAL_NAME",
|
|
549
|
+
"OPENSCOUT_WEB_ADVERTISED_HOST",
|
|
550
|
+
"OPENSCOUT_WEB_TRUSTED_HOSTS",
|
|
551
|
+
"OPENSCOUT_WEB_TRUSTED_ORIGINS",
|
|
552
|
+
"OPENSCOUT_WEB_PORT",
|
|
553
|
+
"OPENSCOUT_WEB_FLAG_BUNDLE",
|
|
554
|
+
"OPENSCOUT_WEB_EXPERIENCE",
|
|
555
|
+
"OPENSCOUT_WEB_AB_VARIANT"
|
|
523
556
|
])
|
|
524
557
|
};
|
|
525
558
|
if (coreAgentsValue) {
|
|
@@ -802,6 +835,7 @@ async function startBrokerService(config = resolveBrokerServiceConfig()) {
|
|
|
802
835
|
bootoutLegacyBrokerService(config);
|
|
803
836
|
writeLaunchAgentPlist(config);
|
|
804
837
|
runCommand(launchctlPath(), ["bootout", config.serviceTarget], { allowFailure: true });
|
|
838
|
+
await waitForBrokerServiceStopped(config);
|
|
805
839
|
runCommand(launchctlPath(), ["bootstrap", config.domainTarget, config.launchAgentPath], { allowFailure: true });
|
|
806
840
|
runCommand(launchctlPath(), ["kickstart", "-k", config.serviceTarget], { allowFailure: true });
|
|
807
841
|
const attempts = Math.ceil(resolveBrokerStartTimeoutMs() / BROKER_SERVICE_POLL_INTERVAL_MS);
|
|
@@ -818,16 +852,21 @@ async function startBrokerService(config = resolveBrokerServiceConfig()) {
|
|
|
818
852
|
function sleep(ms) {
|
|
819
853
|
return new Promise((resolve3) => setTimeout(resolve3, ms));
|
|
820
854
|
}
|
|
821
|
-
async function
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
855
|
+
async function waitForBrokerServiceStopped(config) {
|
|
856
|
+
let status = await brokerServiceStatus(config);
|
|
857
|
+
const attempts = Math.ceil(resolveBrokerStopTimeoutMs() / BROKER_SERVICE_POLL_INTERVAL_MS);
|
|
858
|
+
for (let attempt = 0;attempt < attempts; attempt += 1) {
|
|
859
|
+
status = await brokerServiceStatus(config);
|
|
860
|
+
if (!status.loaded && !status.health.reachable) {
|
|
826
861
|
return status;
|
|
827
862
|
}
|
|
828
863
|
await sleep(BROKER_SERVICE_POLL_INTERVAL_MS);
|
|
829
864
|
}
|
|
830
|
-
return
|
|
865
|
+
return status;
|
|
866
|
+
}
|
|
867
|
+
async function stopBrokerService(config = resolveBrokerServiceConfig()) {
|
|
868
|
+
runCommand(launchctlPath(), ["bootout", config.serviceTarget], { allowFailure: true });
|
|
869
|
+
return waitForBrokerServiceStopped(config);
|
|
831
870
|
}
|
|
832
871
|
async function restartBrokerService(config = resolveBrokerServiceConfig()) {
|
|
833
872
|
await stopBrokerService(config);
|