oasis_test_v2 2.2.102 → 2.2.104
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/index.js +46 -8
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1122,7 +1122,7 @@ var RUNTIME_QUOTA_POLL_MS, RUNTIME_QUOTA_STALE_MS, RUNTIME_QUOTA_REFRESH_MIN_GAP
|
|
|
1122
1122
|
var init_runtime_quota = __esm({
|
|
1123
1123
|
"../contract/src/runtime-quota.ts"() {
|
|
1124
1124
|
"use strict";
|
|
1125
|
-
RUNTIME_QUOTA_POLL_MS =
|
|
1125
|
+
RUNTIME_QUOTA_POLL_MS = 60 * 6e4;
|
|
1126
1126
|
RUNTIME_QUOTA_STALE_MS = 2 * RUNTIME_QUOTA_POLL_MS;
|
|
1127
1127
|
RUNTIME_QUOTA_REFRESH_MIN_GAP_MS = 3e4;
|
|
1128
1128
|
statuses = /* @__PURE__ */ new Set(["ok", "unavailable", "unauthenticated", "unsupported", "error", "rate_limited"]);
|
|
@@ -247578,7 +247578,8 @@ function nodesDomain(deps) {
|
|
|
247578
247578
|
resolve11({ ok: false, code: "timeout", reason: `\u8FD9\u53F0\u8282\u70B9\u6CA1\u5728 ${Math.round(RUNTIME_DETECT_TIMEOUT_MS / 1e3)} \u79D2\u5185\u56DE\u8BDD\uFF0C\u6CA1\u62FF\u5230\u63A2\u6D4B\u7ED3\u679C` });
|
|
247579
247579
|
}, RUNTIME_DETECT_TIMEOUT_MS);
|
|
247580
247580
|
runtimeDetectWaiters.set(requestId, {
|
|
247581
|
-
|
|
247581
|
+
nodeId,
|
|
247582
|
+
resolve: (r) => resolve11(r.ok ? { ok: true, runtimes: r.runtimes ?? [] } : { ok: false, code: r.code ?? "node", reason: r.reason ?? "\u8FD9\u53F0\u8282\u70B9\u63A2\u6D4B\u8FD0\u884C\u65F6\u65F6\u51FA\u9519\u4E86" }),
|
|
247582
247583
|
timer
|
|
247583
247584
|
});
|
|
247584
247585
|
const sent = hub.dispatch(nodeId, { type: "detect_runtimes", requestId });
|
|
@@ -247594,6 +247595,27 @@ function nodesDomain(deps) {
|
|
|
247594
247595
|
runtimeDetectInFlight.set(nodeId, task);
|
|
247595
247596
|
return task;
|
|
247596
247597
|
}
|
|
247598
|
+
const reenrollDetects = /* @__PURE__ */ new Map();
|
|
247599
|
+
const REENROLL_DETECT_TTL_MS = 30 * 6e4;
|
|
247600
|
+
function startReenrollDetect(enrollToken, nodeId, conn) {
|
|
247601
|
+
const nowMs = Date.now();
|
|
247602
|
+
for (const [k2, v2] of reenrollDetects) if (v2.expiresAt <= nowMs) reenrollDetects.delete(k2);
|
|
247603
|
+
const rec2 = { nodeId, conn, expiresAt: nowMs + REENROLL_DETECT_TTL_MS };
|
|
247604
|
+
reenrollDetects.set(enrollToken, rec2);
|
|
247605
|
+
void detectNodeRuntimes(nodeId).then((outcome) => {
|
|
247606
|
+
rec2.outcome = outcome;
|
|
247607
|
+
if (!outcome.ok) console.log(`[nodes] \u91CD\u65B0\u63A5\u5165\u65F6\u73B0\u573A\u63A2\u6D4B\u6CA1\u62FF\u5230\u7ED3\u679C(node=${nodeId})\uFF1A${outcome.reason}\uFF1B\u7B2C 3 \u6B65\u9000\u56DE\u8FD9\u53F0\u8282\u70B9\u4E0A\u6B21\u4E0A\u62A5\u7684\u5217\u8868`);
|
|
247608
|
+
});
|
|
247609
|
+
}
|
|
247610
|
+
function detectedForEnrollment(enrollToken, nodeId) {
|
|
247611
|
+
const latest = detectedRuntimesOf(nodeId);
|
|
247612
|
+
const rec2 = reenrollDetects.get(enrollToken);
|
|
247613
|
+
if (!rec2 || rec2.nodeId !== nodeId) return latest;
|
|
247614
|
+
const conn = deps.getHub()?.connectedDaemons().find((d) => d.daemonId === nodeId);
|
|
247615
|
+
if (!conn || conn !== rec2.conn) return latest;
|
|
247616
|
+
if (!rec2.outcome) return void 0;
|
|
247617
|
+
return rec2.outcome.ok ? rec2.outcome.runtimes : latest;
|
|
247618
|
+
}
|
|
247597
247619
|
let hubWired = false;
|
|
247598
247620
|
function wireHub(hub) {
|
|
247599
247621
|
if (hubWired) return;
|
|
@@ -247691,6 +247713,14 @@ function nodesDomain(deps) {
|
|
|
247691
247713
|
deps.onStatusChange?.();
|
|
247692
247714
|
}
|
|
247693
247715
|
});
|
|
247716
|
+
hub.addDisconnectListener?.((daemonId) => {
|
|
247717
|
+
for (const [requestId, waiter] of runtimeDetectWaiters) {
|
|
247718
|
+
if (waiter.nodeId !== daemonId) continue;
|
|
247719
|
+
runtimeDetectWaiters.delete(requestId);
|
|
247720
|
+
clearTimeout(waiter.timer);
|
|
247721
|
+
waiter.resolve({ ok: false, code: "offline", reason: "\u8FDE\u63A5\u65AD\u5F00\u4E86\uFF0C\u8282\u70B9\u6CA1\u6765\u5F97\u53CA\u56DE\u62A5\u63A2\u6D4B\u7ED3\u679C" });
|
|
247722
|
+
}
|
|
247723
|
+
});
|
|
247694
247724
|
hub.onDaemonDisconnected = async (daemonId) => {
|
|
247695
247725
|
quotaByNode.delete(daemonId);
|
|
247696
247726
|
try {
|
|
@@ -247895,7 +247925,7 @@ function nodesDomain(deps) {
|
|
|
247895
247925
|
const crossCompany = raw?.companyId !== void 0 && companyId !== void 0 && raw.companyId !== companyId;
|
|
247896
247926
|
const entry = crossCompany ? null : raw;
|
|
247897
247927
|
const nodeId = entry?.issuedNodeId;
|
|
247898
|
-
const detected = nodeId !== void 0 ?
|
|
247928
|
+
const detected = nodeId !== void 0 ? detectedForEnrollment(enrollToken, nodeId) : void 0;
|
|
247899
247929
|
const nodeConnected = nodeId !== void 0 && (deps.getHub()?.connectedDaemons() ?? []).some((d) => d.daemonId === nodeId);
|
|
247900
247930
|
const boundNodeReady = nodeId !== void 0 && (nodeConnected || usable.some((r) => r.nodeId === nodeId));
|
|
247901
247931
|
const boundNode = boundNodeReady && nodeId !== void 0 ? await deps.nodeStore.getNode(nodeId) : null;
|
|
@@ -247987,6 +248017,8 @@ function nodesDomain(deps) {
|
|
|
247987
248017
|
deps.nodeTokens.clearRevocations(nodeId);
|
|
247988
248018
|
const existing = deps.nodeTokens.list().find((e) => e.nodeId === nodeId);
|
|
247989
248019
|
const token2 = existing?.token ?? deps.nodeTokens.issue(nodeId);
|
|
248020
|
+
const liveConn = deps.getHub()?.connectedDaemons().find((d) => d.daemonId === nodeId);
|
|
248021
|
+
if (liveConn) startReenrollDetect(enrollToken, nodeId, liveConn);
|
|
247990
248022
|
return { status: 200, body: { nodeId, token: token2 } };
|
|
247991
248023
|
});
|
|
247992
248024
|
router.patch("/api/nodes/:nodeId", async (req) => {
|
|
@@ -293875,7 +293907,7 @@ var RuntimeQuotaMonitor = class _RuntimeQuotaMonitor {
|
|
|
293875
293907
|
/**
|
|
293876
293908
|
* 人点了页面上的「刷新」(服务端下发 `refresh_quotas`,ADR 0620):**现在就去问上游**。
|
|
293877
293909
|
*
|
|
293878
|
-
* 与 {@link refresh} 的唯一区别就是**不看那
|
|
293910
|
+
* 与 {@link refresh} 的唯一区别就是**不看那 1 小时**——那条节流是背景轮询的节奏,
|
|
293879
293911
|
* 对一个正盯着页面等结果的人没有任何意义。换上的是一条窄得多的闸:
|
|
293880
293912
|
* {@link RUNTIME_QUOTA_REFRESH_MIN_GAP_MS}(30 秒)。连点被它挡下,且挡下时**如实说**
|
|
293881
293913
|
* 「刚在 N 秒前采过」,不假装采了一次(发起人方申的定则:会静默降级的动作必须回报走了哪条路)。
|
|
@@ -297882,7 +297914,7 @@ async function waitForCommandAuthorization(base, headers, draftId, fallback) {
|
|
|
297882
297914
|
}
|
|
297883
297915
|
}
|
|
297884
297916
|
}
|
|
297885
|
-
var CLI_VERSION = "2.2.
|
|
297917
|
+
var CLI_VERSION = "2.2.104" ? "2.2.104" : "dev";
|
|
297886
297918
|
function apiHeaders(token2, company) {
|
|
297887
297919
|
const headers = {
|
|
297888
297920
|
authorization: `Bearer ${token2}`,
|
|
@@ -301918,7 +301950,7 @@ function shimScript() {
|
|
|
301918
301950
|
}
|
|
301919
301951
|
|
|
301920
301952
|
// src/index.ts
|
|
301921
|
-
var PKG_VERSION = true ? "2.2.
|
|
301953
|
+
var PKG_VERSION = true ? "2.2.104" : "dev";
|
|
301922
301954
|
var LOCAL_BIN = localBin();
|
|
301923
301955
|
var NPM_PREFIX = npmPrefix();
|
|
301924
301956
|
var INSTANCE = DEFAULT_INSTANCE;
|
|
@@ -302310,8 +302342,14 @@ async function startOneInstance(o) {
|
|
|
302310
302342
|
}
|
|
302311
302343
|
const pidNow = readPid();
|
|
302312
302344
|
const alive2 = !!pidNow && isRunning2(pidNow);
|
|
302313
|
-
|
|
302314
|
-
|
|
302345
|
+
const identityChanged = !!prev && (prev.nodeId !== nodeId || prev.token !== token2);
|
|
302346
|
+
if (alive2 && label2 === before && !serverChanged && !companyChanged && !identityChanged) {
|
|
302347
|
+
if (enrollToken) {
|
|
302348
|
+
console.log(`\u2713 ${INSTANCE}\uFF1A\u5DF2\u5728\u8FD0\u884C\uFF0C\u672A\u91CD\u542F\uFF08PID ${pidNow}\uFF0C${label2 ?? "?"}\uFF09\uFF1B\u63A5\u5165\u5DF2\u786E\u8BA4\uFF0C\u8BF7\u56DE\u5230\u9875\u9762\u9009\u62E9\u8981\u6DFB\u52A0\u7684\u8FD0\u884C\u65F6`);
|
|
302349
|
+
} else {
|
|
302350
|
+
console.log(`\u2713 ${INSTANCE}\uFF1A\u5DF2\u5728\u8DD1\uFF08PID ${pidNow}\uFF0C${label2 ?? "?"}\uFF09\uFF0C\u7248\u672C\u4E0E\u914D\u7F6E\u5747\u672A\u53D8\uFF0C\u672A\u91CD\u542F`);
|
|
302351
|
+
}
|
|
302352
|
+
if (nameChanged) console.log(` \u672C\u673A\u8BB0\u5F55\u7684\u8282\u70B9\u540D\u5DF2\u66F4\u65B0\uFF1A${prev.name} \u2192 ${name}`);
|
|
302315
302353
|
return;
|
|
302316
302354
|
}
|
|
302317
302355
|
stopDaemon(INSTANCE);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oasis_test_v2",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.104",
|
|
4
4
|
"description": "Oasis node daemon + CLI — background daemon, auto-start, full server CLI",
|
|
5
5
|
"bin": {
|
|
6
6
|
"oasis": "./dist/index.js"
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
"node": ">=20"
|
|
27
27
|
},
|
|
28
28
|
"oasisRelease": {
|
|
29
|
-
"sourceHead": "
|
|
29
|
+
"sourceHead": "fedeeaeaf192842d2e7e5ba8c0b0c9ed72aaca14"
|
|
30
30
|
}
|
|
31
31
|
}
|