@openscout/scout 0.2.53 → 0.2.55
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/client/assets/{arc.es-DHqqknxg.js → arc.es-ChjXbrxY.js} +1 -1
- package/dist/client/assets/index-DUtTv5D0.css +1 -0
- package/dist/client/assets/index-kOG7gvZY.js +139 -0
- package/dist/client/index.html +3 -3
- package/dist/main.mjs +198 -29
- package/dist/pair-supervisor.mjs +125 -2
- package/dist/scout-control-plane-web.mjs +207 -91
- package/package.json +2 -2
- package/dist/client/assets/index-DYZld5kI.css +0 -1
- package/dist/client/assets/index-DzoSArBb.js +0 -139
|
@@ -14,7 +14,6 @@ var __export = (target, all) => {
|
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
16
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
-
var __require = import.meta.require;
|
|
18
17
|
// packages/agent-sessions/src/protocol/adapter.ts
|
|
19
18
|
class BaseAdapter {
|
|
20
19
|
config;
|
|
@@ -4389,7 +4388,14 @@ var init_dist = __esm(() => {
|
|
|
4389
4388
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
4390
4389
|
*/
|
|
4391
4390
|
});
|
|
4392
|
-
|
|
4391
|
+
|
|
4392
|
+
// packages/protocol/dist/common.js
|
|
4393
|
+
var init_common = () => {};
|
|
4394
|
+
|
|
4395
|
+
// packages/protocol/dist/actors.js
|
|
4396
|
+
var init_actors = () => {};
|
|
4397
|
+
|
|
4398
|
+
// packages/protocol/dist/agent-identity.js
|
|
4393
4399
|
function trimIdentityPrefix(value) {
|
|
4394
4400
|
return value.trim().replace(/^@+/, "").replace(/[.,!?;)\]]+$/, "");
|
|
4395
4401
|
}
|
|
@@ -4739,17 +4745,17 @@ var init_agent_identity = __esm(() => {
|
|
|
4739
4745
|
resolveAgentSelector = resolveAgentIdentity;
|
|
4740
4746
|
});
|
|
4741
4747
|
|
|
4742
|
-
// packages/protocol/
|
|
4748
|
+
// packages/protocol/dist/agent-address.js
|
|
4743
4749
|
var init_agent_address = __esm(() => {
|
|
4744
4750
|
init_agent_identity();
|
|
4745
4751
|
});
|
|
4746
4752
|
|
|
4747
|
-
// packages/protocol/
|
|
4753
|
+
// packages/protocol/dist/agent-selectors.js
|
|
4748
4754
|
var init_agent_selectors = __esm(() => {
|
|
4749
4755
|
init_agent_address();
|
|
4750
4756
|
});
|
|
4751
4757
|
|
|
4752
|
-
// packages/protocol/
|
|
4758
|
+
// packages/protocol/dist/scout-agent-card.js
|
|
4753
4759
|
function buildScoutReturnAddress(input) {
|
|
4754
4760
|
const next = {
|
|
4755
4761
|
actorId: input.actorId,
|
|
@@ -4784,11 +4790,48 @@ function buildScoutReturnAddress(input) {
|
|
|
4784
4790
|
}
|
|
4785
4791
|
return next;
|
|
4786
4792
|
}
|
|
4787
|
-
// packages/protocol/
|
|
4788
|
-
var
|
|
4793
|
+
// packages/protocol/dist/mesh.js
|
|
4794
|
+
var init_mesh = () => {};
|
|
4795
|
+
|
|
4796
|
+
// packages/protocol/dist/conversations.js
|
|
4797
|
+
var init_conversations = () => {};
|
|
4798
|
+
// packages/protocol/dist/messages.js
|
|
4799
|
+
var init_messages = () => {};
|
|
4800
|
+
|
|
4801
|
+
// packages/protocol/dist/invocations.js
|
|
4802
|
+
var init_invocations = () => {};
|
|
4803
|
+
|
|
4804
|
+
// packages/protocol/dist/scout-dispatch.js
|
|
4805
|
+
var init_scout_dispatch = () => {};
|
|
4806
|
+
|
|
4807
|
+
// packages/protocol/dist/deliveries.js
|
|
4808
|
+
var init_deliveries = () => {};
|
|
4809
|
+
|
|
4810
|
+
// packages/protocol/dist/transports.js
|
|
4811
|
+
var init_transports = () => {};
|
|
4812
|
+
|
|
4813
|
+
// packages/protocol/dist/events.js
|
|
4814
|
+
var init_events = () => {};
|
|
4815
|
+
|
|
4816
|
+
// packages/protocol/dist/thread-events.js
|
|
4817
|
+
var init_thread_events = () => {};
|
|
4818
|
+
|
|
4819
|
+
// packages/protocol/dist/index.js
|
|
4820
|
+
var init_dist2 = __esm(() => {
|
|
4821
|
+
init_common();
|
|
4822
|
+
init_actors();
|
|
4789
4823
|
init_agent_identity();
|
|
4790
4824
|
init_agent_address();
|
|
4791
4825
|
init_agent_selectors();
|
|
4826
|
+
init_mesh();
|
|
4827
|
+
init_conversations();
|
|
4828
|
+
init_messages();
|
|
4829
|
+
init_invocations();
|
|
4830
|
+
init_scout_dispatch();
|
|
4831
|
+
init_deliveries();
|
|
4832
|
+
init_transports();
|
|
4833
|
+
init_events();
|
|
4834
|
+
init_thread_events();
|
|
4792
4835
|
});
|
|
4793
4836
|
|
|
4794
4837
|
// packages/runtime/src/support-paths.ts
|
|
@@ -7068,7 +7111,7 @@ async function initializeOpenScoutSetup(options = {}) {
|
|
|
7068
7111
|
var SCOUT_AGENT_ID = "scout", SCOUT_PRIMARY_CONVERSATION_ID = "dm.scout.primary", MANAGED_AGENT_HARNESSES, DEFAULT_OPERATOR_NAME, DEFAULT_CAPABILITIES, DEFAULT_TRANSPORT = "claude_stream_json", DEFAULT_TELEGRAM_MODE = "polling", LEGACY_DEFAULT_TELEGRAM_CONVERSATION_ID = "channel.shared", DEFAULT_TELEGRAM_CONVERSATION_ID, SETTINGS_VERSION = 1, PROJECT_CONFIG_VERSION = 1, PROJECT_SCAN_SKIP_DIRECTORIES, PROJECT_STRONG_MARKERS, PROJECT_WEAK_MARKERS, PROJECT_HARNESS_MARKERS, PROJECT_STRONG_MARKERS_FLAT_NESTED, PROJECT_WEAK_MARKERS_FLAT_NESTED, GIT_BRANCH_CACHE_TTL_MS = 15000, gitBranchCache, SCOUT_SKILL_FILE_NAME = "SKILL.md", SETUP_MODULE_DIRECTORY, SCOUT_SKILL_REPO_ROOT, SCOUT_SKILL_INSTALL_PATHS, PROJECT_SCAN_MAX_DEPTH = 64;
|
|
7069
7112
|
var init_setup = __esm(() => {
|
|
7070
7113
|
init_dist();
|
|
7071
|
-
|
|
7114
|
+
init_dist2();
|
|
7072
7115
|
init_harness_catalog();
|
|
7073
7116
|
init_support_paths();
|
|
7074
7117
|
init_user_project_hints();
|
|
@@ -7784,6 +7827,7 @@ class ClaudeStreamJsonSession {
|
|
|
7784
7827
|
await writeFile4(join13(this.options.runtimeDirectory, "prompt.txt"), this.options.systemPrompt);
|
|
7785
7828
|
this.claudeSessionId = await readOptionalFile2(this.sessionStatePath);
|
|
7786
7829
|
const args = [
|
|
7830
|
+
"--verbose",
|
|
7787
7831
|
"--print",
|
|
7788
7832
|
"--input-format",
|
|
7789
7833
|
"stream-json",
|
|
@@ -11837,7 +11881,7 @@ function shouldDisableGeneratedCodexEndpoint(endpoint) {
|
|
|
11837
11881
|
}
|
|
11838
11882
|
var MODULE_DIRECTORY, OPENSCOUT_REPO_ROOT, DEFAULT_LOCAL_AGENT_CAPABILITIES, DEFAULT_LOCAL_AGENT_HARNESS = "claude", SUPPORTED_LOCAL_AGENT_HARNESSES;
|
|
11839
11883
|
var init_local_agents = __esm(async () => {
|
|
11840
|
-
|
|
11884
|
+
init_dist2();
|
|
11841
11885
|
init_claude_stream_json();
|
|
11842
11886
|
init_codex_app_server();
|
|
11843
11887
|
init_setup();
|
|
@@ -11852,7 +11896,7 @@ var init_local_agents = __esm(async () => {
|
|
|
11852
11896
|
|
|
11853
11897
|
// packages/web/server/index.ts
|
|
11854
11898
|
import { existsSync as existsSync13 } from "fs";
|
|
11855
|
-
import { dirname as dirname12, join as join20 } from "path";
|
|
11899
|
+
import { dirname as dirname12, join as join20, resolve as resolve9 } from "path";
|
|
11856
11900
|
import { fileURLToPath as fileURLToPath8 } from "url";
|
|
11857
11901
|
|
|
11858
11902
|
// packages/web/server/create-openscout-web-server.ts
|
|
@@ -14529,80 +14573,22 @@ function installScoutApiMiddleware(app, label = "api") {
|
|
|
14529
14573
|
});
|
|
14530
14574
|
}
|
|
14531
14575
|
async function registerScoutWebAssets(app, options) {
|
|
14532
|
-
|
|
14533
|
-
|
|
14534
|
-
const fs = await import("fs");
|
|
14535
|
-
const path = await import("path");
|
|
14536
|
-
const vite = await createServer({
|
|
14537
|
-
configFile: options.viteConfigPath,
|
|
14538
|
-
server: { middlewareMode: true, hmr: { port: 5183 } },
|
|
14539
|
-
appType: "custom"
|
|
14540
|
-
});
|
|
14541
|
-
const viteRoot = (vite.config.root ?? process.cwd()).replace(/\/$/, "");
|
|
14542
|
-
const proxyToVite = (req, url) => {
|
|
14543
|
-
return new Promise((resolve5) => {
|
|
14544
|
-
const http = __require("http");
|
|
14545
|
-
const { Duplex } = __require("stream");
|
|
14546
|
-
const socket = new Duplex({
|
|
14547
|
-
read() {},
|
|
14548
|
-
write(_chunk, _encoding, cb) {
|
|
14549
|
-
cb();
|
|
14550
|
-
}
|
|
14551
|
-
});
|
|
14552
|
-
const nodeReq = new http.IncomingMessage(socket);
|
|
14553
|
-
nodeReq.method = req.method;
|
|
14554
|
-
nodeReq.url = url.pathname + url.search;
|
|
14555
|
-
nodeReq.headers = {};
|
|
14556
|
-
for (const [key, value] of req.headers.entries()) {
|
|
14557
|
-
nodeReq.headers[key.toLowerCase()] = value;
|
|
14558
|
-
}
|
|
14559
|
-
const nodeRes = new http.ServerResponse(nodeReq);
|
|
14560
|
-
const chunks = [];
|
|
14561
|
-
nodeRes.write = function(chunk) {
|
|
14562
|
-
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
14563
|
-
return true;
|
|
14564
|
-
};
|
|
14565
|
-
const originalEnd = nodeRes.end.bind(nodeRes);
|
|
14566
|
-
nodeRes.end = function(chunk) {
|
|
14567
|
-
if (chunk) {
|
|
14568
|
-
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
14569
|
-
}
|
|
14570
|
-
const body = Buffer.concat(chunks);
|
|
14571
|
-
const headers = new Headers;
|
|
14572
|
-
for (const [key, val] of Object.entries(nodeRes.getHeaders())) {
|
|
14573
|
-
if (val == null)
|
|
14574
|
-
continue;
|
|
14575
|
-
if (Array.isArray(val)) {
|
|
14576
|
-
for (const v of val)
|
|
14577
|
-
headers.append(key, v);
|
|
14578
|
-
} else {
|
|
14579
|
-
headers.set(key, String(val));
|
|
14580
|
-
}
|
|
14581
|
-
}
|
|
14582
|
-
resolve5(new Response(body.length > 0 ? body : null, {
|
|
14583
|
-
status: nodeRes.statusCode,
|
|
14584
|
-
headers
|
|
14585
|
-
}));
|
|
14586
|
-
return originalEnd();
|
|
14587
|
-
};
|
|
14588
|
-
vite.middlewares.handle(nodeReq, nodeRes, async () => {
|
|
14589
|
-
try {
|
|
14590
|
-
const indexPath = path.join(viteRoot, "index.html");
|
|
14591
|
-
let html2 = fs.readFileSync(indexPath, "utf-8");
|
|
14592
|
-
html2 = await vite.transformIndexHtml(url.pathname, html2);
|
|
14593
|
-
resolve5(new Response(html2, {
|
|
14594
|
-
status: 200,
|
|
14595
|
-
headers: { "content-type": "text/html; charset=utf-8" }
|
|
14596
|
-
}));
|
|
14597
|
-
} catch {
|
|
14598
|
-
resolve5(new Response("Not Found", { status: 404 }));
|
|
14599
|
-
}
|
|
14600
|
-
});
|
|
14601
|
-
});
|
|
14602
|
-
};
|
|
14576
|
+
const viteUrl = options.viteDevUrl?.trim() || options.defaultViteUrl;
|
|
14577
|
+
if (options.assetMode === "vite-proxy") {
|
|
14603
14578
|
app.all("/*", async (c) => {
|
|
14604
|
-
const
|
|
14605
|
-
|
|
14579
|
+
const target = new URL(c.req.path, viteUrl);
|
|
14580
|
+
target.search = new URL(c.req.url).search;
|
|
14581
|
+
const headers = new Headers(c.req.header());
|
|
14582
|
+
headers.delete("host");
|
|
14583
|
+
const response = await fetch(target.toString(), {
|
|
14584
|
+
method: c.req.method,
|
|
14585
|
+
headers,
|
|
14586
|
+
body: c.req.method !== "GET" && c.req.method !== "HEAD" ? c.req.raw.body : undefined
|
|
14587
|
+
});
|
|
14588
|
+
return new Response(response.body, {
|
|
14589
|
+
status: response.status,
|
|
14590
|
+
headers: response.headers
|
|
14591
|
+
});
|
|
14606
14592
|
});
|
|
14607
14593
|
return;
|
|
14608
14594
|
}
|
|
@@ -15912,9 +15898,131 @@ function queryFleet(opts) {
|
|
|
15912
15898
|
activity
|
|
15913
15899
|
};
|
|
15914
15900
|
}
|
|
15901
|
+
var WINDOW_TIERS = [
|
|
15902
|
+
{ ms: 30 * 60000, label: "30m" },
|
|
15903
|
+
{ ms: 60 * 60000, label: "1h" },
|
|
15904
|
+
{ ms: 6 * 60 * 60000, label: "6h" },
|
|
15905
|
+
{ ms: 24 * 60 * 60000, label: "24h" },
|
|
15906
|
+
{ ms: 7 * 24 * 60 * 60000, label: "7d" }
|
|
15907
|
+
];
|
|
15908
|
+
var MIN_FILLED_BUCKETS = 3;
|
|
15909
|
+
var _sealedCounts = new Map;
|
|
15910
|
+
var _cachedTier = null;
|
|
15911
|
+
function queryHeartrate(numBuckets = 48) {
|
|
15912
|
+
const nowMs = Date.now();
|
|
15913
|
+
let chosenTier = WINDOW_TIERS[WINDOW_TIERS.length - 1];
|
|
15914
|
+
for (const tier of WINDOW_TIERS) {
|
|
15915
|
+
const bucketMs2 = tier.ms / numBuckets;
|
|
15916
|
+
const currentBucketStart2 = Math.floor(nowMs / bucketMs2) * bucketMs2;
|
|
15917
|
+
const alignedStart2 = currentBucketStart2 - (numBuckets - 1) * bucketMs2;
|
|
15918
|
+
if (_cachedTier === tier.label) {
|
|
15919
|
+
let sealedHits = 0;
|
|
15920
|
+
let filledSealed = 0;
|
|
15921
|
+
for (let i = 0;i < numBuckets - 1; i++) {
|
|
15922
|
+
const key = String(alignedStart2 + i * bucketMs2);
|
|
15923
|
+
if (_sealedCounts.has(key)) {
|
|
15924
|
+
sealedHits++;
|
|
15925
|
+
if (_sealedCounts.get(key) > 0)
|
|
15926
|
+
filledSealed++;
|
|
15927
|
+
}
|
|
15928
|
+
}
|
|
15929
|
+
if (sealedHits === numBuckets - 1 && filledSealed >= MIN_FILLED_BUCKETS) {
|
|
15930
|
+
chosenTier = tier;
|
|
15931
|
+
break;
|
|
15932
|
+
}
|
|
15933
|
+
}
|
|
15934
|
+
const rows2 = db().prepare(`SELECT ts FROM activity_items WHERE ts >= ? ORDER BY ts ASC`).all(alignedStart2);
|
|
15935
|
+
const counts2 = new Array(numBuckets).fill(0);
|
|
15936
|
+
for (const row of rows2) {
|
|
15937
|
+
const ms = row.ts < 1000000000000 ? row.ts * 1000 : row.ts;
|
|
15938
|
+
if (ms < alignedStart2)
|
|
15939
|
+
continue;
|
|
15940
|
+
const idx = Math.min(numBuckets - 1, Math.floor((ms - alignedStart2) / bucketMs2));
|
|
15941
|
+
if (idx >= 0)
|
|
15942
|
+
counts2[idx]++;
|
|
15943
|
+
}
|
|
15944
|
+
const filled = counts2.filter((c) => c > 0).length;
|
|
15945
|
+
if (filled >= MIN_FILLED_BUCKETS) {
|
|
15946
|
+
if (_cachedTier !== tier.label) {
|
|
15947
|
+
_sealedCounts.clear();
|
|
15948
|
+
_cachedTier = tier.label;
|
|
15949
|
+
}
|
|
15950
|
+
for (let i = 0;i < numBuckets - 1; i++) {
|
|
15951
|
+
_sealedCounts.set(String(alignedStart2 + i * bucketMs2), counts2[i]);
|
|
15952
|
+
}
|
|
15953
|
+
const peak2 = Math.max(1, ...counts2);
|
|
15954
|
+
return {
|
|
15955
|
+
windowLabel: tier.label,
|
|
15956
|
+
buckets: counts2.map((count, i) => ({
|
|
15957
|
+
ts: Math.round(alignedStart2 + i * bucketMs2),
|
|
15958
|
+
count,
|
|
15959
|
+
value: count / peak2
|
|
15960
|
+
}))
|
|
15961
|
+
};
|
|
15962
|
+
}
|
|
15963
|
+
}
|
|
15964
|
+
const bucketMs = chosenTier.ms / numBuckets;
|
|
15965
|
+
const currentBucketStart = Math.floor(nowMs / bucketMs) * bucketMs;
|
|
15966
|
+
const alignedStart = currentBucketStart - (numBuckets - 1) * bucketMs;
|
|
15967
|
+
if (_cachedTier === chosenTier.label) {
|
|
15968
|
+
const counts2 = new Array(numBuckets).fill(0);
|
|
15969
|
+
let allSealed = true;
|
|
15970
|
+
for (let i = 0;i < numBuckets - 1; i++) {
|
|
15971
|
+
const key = String(alignedStart + i * bucketMs);
|
|
15972
|
+
if (_sealedCounts.has(key)) {
|
|
15973
|
+
counts2[i] = _sealedCounts.get(key);
|
|
15974
|
+
} else {
|
|
15975
|
+
allSealed = false;
|
|
15976
|
+
break;
|
|
15977
|
+
}
|
|
15978
|
+
}
|
|
15979
|
+
if (allSealed) {
|
|
15980
|
+
const liveStart = alignedStart + (numBuckets - 1) * bucketMs;
|
|
15981
|
+
const row = db().prepare(`SELECT COUNT(*) AS c FROM activity_items WHERE ts >= ?`).get(liveStart);
|
|
15982
|
+
counts2[numBuckets - 1] = row.c;
|
|
15983
|
+
const peak2 = Math.max(1, ...counts2);
|
|
15984
|
+
return {
|
|
15985
|
+
windowLabel: chosenTier.label,
|
|
15986
|
+
buckets: counts2.map((count, i) => ({
|
|
15987
|
+
ts: Math.round(alignedStart + i * bucketMs),
|
|
15988
|
+
count,
|
|
15989
|
+
value: count / peak2
|
|
15990
|
+
}))
|
|
15991
|
+
};
|
|
15992
|
+
}
|
|
15993
|
+
}
|
|
15994
|
+
_sealedCounts.clear();
|
|
15995
|
+
_cachedTier = chosenTier.label;
|
|
15996
|
+
const rows = db().prepare(`SELECT ts FROM activity_items WHERE ts >= ? ORDER BY ts ASC`).all(alignedStart);
|
|
15997
|
+
const counts = new Array(numBuckets).fill(0);
|
|
15998
|
+
for (const row of rows) {
|
|
15999
|
+
const ms = row.ts < 1000000000000 ? row.ts * 1000 : row.ts;
|
|
16000
|
+
if (ms < alignedStart)
|
|
16001
|
+
continue;
|
|
16002
|
+
const idx = Math.min(numBuckets - 1, Math.floor((ms - alignedStart) / bucketMs));
|
|
16003
|
+
if (idx >= 0)
|
|
16004
|
+
counts[idx]++;
|
|
16005
|
+
}
|
|
16006
|
+
for (let i = 0;i < numBuckets - 1; i++) {
|
|
16007
|
+
_sealedCounts.set(String(alignedStart + i * bucketMs), counts[i]);
|
|
16008
|
+
}
|
|
16009
|
+
for (const key of _sealedCounts.keys()) {
|
|
16010
|
+
if (Number(key) < alignedStart)
|
|
16011
|
+
_sealedCounts.delete(key);
|
|
16012
|
+
}
|
|
16013
|
+
const peak = Math.max(1, ...counts);
|
|
16014
|
+
return {
|
|
16015
|
+
windowLabel: chosenTier.label,
|
|
16016
|
+
buckets: counts.map((count, i) => ({
|
|
16017
|
+
ts: Math.round(alignedStart + i * bucketMs),
|
|
16018
|
+
count,
|
|
16019
|
+
value: count / peak
|
|
16020
|
+
}))
|
|
16021
|
+
};
|
|
16022
|
+
}
|
|
15915
16023
|
|
|
15916
16024
|
// packages/web/server/core/broker/service.ts
|
|
15917
|
-
|
|
16025
|
+
init_dist2();
|
|
15918
16026
|
init_setup();
|
|
15919
16027
|
init_support_paths();
|
|
15920
16028
|
await init_local_agents();
|
|
@@ -17258,6 +17366,7 @@ async function createOpenScoutWebServer(options) {
|
|
|
17258
17366
|
app.get("/api/shell-state/refresh", async (c) => c.json(await shellStateCache.refresh()));
|
|
17259
17367
|
app.get("/api/agents", (c) => c.json(queryAgents()));
|
|
17260
17368
|
app.get("/api/activity", (c) => c.json(queryActivity()));
|
|
17369
|
+
app.get("/api/heartrate", (c) => c.json(queryHeartrate()));
|
|
17261
17370
|
app.get("/api/fleet", (c) => c.json(queryFleet({
|
|
17262
17371
|
limit: parseOptionalPositiveInt(c.req.query("limit")),
|
|
17263
17372
|
activityLimit: parseOptionalPositiveInt(c.req.query("activityLimit"))
|
|
@@ -17479,7 +17588,8 @@ async function createOpenScoutWebServer(options) {
|
|
|
17479
17588
|
await registerScoutWebAssets(app, {
|
|
17480
17589
|
assetMode: options.assetMode,
|
|
17481
17590
|
staticRoot: resolveStaticRoot(options.staticRoot),
|
|
17482
|
-
|
|
17591
|
+
viteDevUrl: options.viteDevUrl,
|
|
17592
|
+
defaultViteUrl: "http://127.0.0.1:5180"
|
|
17483
17593
|
});
|
|
17484
17594
|
const warmupCaches = () => Promise.allSettled([
|
|
17485
17595
|
shellStateCache.refresh(),
|
|
@@ -17887,19 +17997,25 @@ function resolveStaticRoot2() {
|
|
|
17887
17997
|
return process.env.OPENSCOUT_WEB_STATIC_ROOT.trim();
|
|
17888
17998
|
}
|
|
17889
17999
|
const selfDir = dirname12(fileURLToPath8(import.meta.url));
|
|
17890
|
-
const
|
|
17891
|
-
if (existsSync13(
|
|
17892
|
-
return
|
|
18000
|
+
const siblingClientRoot = join20(selfDir, "client");
|
|
18001
|
+
if (existsSync13(join20(siblingClientRoot, "index.html"))) {
|
|
18002
|
+
return siblingClientRoot;
|
|
18003
|
+
}
|
|
18004
|
+
const sourceDistClientRoot = resolve9(selfDir, "../dist/client");
|
|
18005
|
+
if (existsSync13(join20(sourceDistClientRoot, "index.html"))) {
|
|
18006
|
+
return sourceDistClientRoot;
|
|
17893
18007
|
}
|
|
17894
18008
|
return;
|
|
17895
18009
|
}
|
|
17896
18010
|
var staticRoot = resolveStaticRoot2();
|
|
17897
|
-
var
|
|
17898
|
-
var
|
|
18011
|
+
var viteDevUrl = process.env.OPENSCOUT_WEB_VITE_URL?.trim() || undefined;
|
|
18012
|
+
var useViteProxy = Boolean(viteDevUrl) || !staticRoot;
|
|
18013
|
+
var idleTimeoutSeconds = Number.parseInt(process.env.OPENSCOUT_WEB_IDLE_TIMEOUT_SECONDS?.trim() || (useViteProxy ? "180" : "30"), 10);
|
|
17899
18014
|
var { app, warmupCaches } = await createOpenScoutWebServer({
|
|
17900
18015
|
currentDirectory,
|
|
17901
18016
|
shellStateCacheTtlMs,
|
|
17902
|
-
assetMode:
|
|
18017
|
+
assetMode: useViteProxy ? "vite-proxy" : "static",
|
|
18018
|
+
viteDevUrl,
|
|
17903
18019
|
staticRoot
|
|
17904
18020
|
});
|
|
17905
18021
|
var honoFetch = app.fetch;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openscout/scout",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.55",
|
|
4
4
|
"description": "Published Scout package that installs the `scout` command",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -23,6 +23,6 @@
|
|
|
23
23
|
"access": "public"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@openscout/runtime": "0.2.
|
|
26
|
+
"@openscout/runtime": "0.2.55"
|
|
27
27
|
}
|
|
28
28
|
}
|