optimus-tool-call 0.1.23 → 0.1.24
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.
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* Signs `payload` with the stored machine key when present (same as `log-llm-config` startup_sender)
|
|
5
5
|
* so the backend does not revoke keys on every unsigned sync.
|
|
6
6
|
*
|
|
7
|
-
* Throttled (default 30 min) to avoid an extra HTTP round-trip on every tool call.
|
|
8
|
-
*
|
|
9
|
-
* `
|
|
7
|
+
* Throttled (default 30 min) on success to avoid an extra HTTP round-trip on every tool call.
|
|
8
|
+
* After failures (network, non-2xx, etc.), exponential backoff caps repeated work so hooks are
|
|
9
|
+
* not blocked on every batch. Override interval with `OPTIMUS_STARTUP_SYNC_INTERVAL_MS` (set to
|
|
10
|
+
* `0` to sync on every batch when healthy). Skip entirely with `OPTIMUS_SKIP_STARTUP_SYNC=1`.
|
|
10
11
|
*/
|
|
11
12
|
export declare function ensureStartupMetadataSynced(hardwareUuid: string): Promise<void>;
|
|
12
13
|
//# sourceMappingURL=startup-sync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-sync.d.ts","sourceRoot":"","sources":["../../src/lib/startup-sync.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"startup-sync.d.ts","sourceRoot":"","sources":["../../src/lib/startup-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuDH,wBAAsB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GrF"}
|
package/dist/lib/startup-sync.js
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* Signs `payload` with the stored machine key when present (same as `log-llm-config` startup_sender)
|
|
5
5
|
* so the backend does not revoke keys on every unsigned sync.
|
|
6
6
|
*
|
|
7
|
-
* Throttled (default 30 min) to avoid an extra HTTP round-trip on every tool call.
|
|
8
|
-
*
|
|
9
|
-
* `
|
|
7
|
+
* Throttled (default 30 min) on success to avoid an extra HTTP round-trip on every tool call.
|
|
8
|
+
* After failures (network, non-2xx, etc.), exponential backoff caps repeated work so hooks are
|
|
9
|
+
* not blocked on every batch. Override interval with `OPTIMUS_STARTUP_SYNC_INTERVAL_MS` (set to
|
|
10
|
+
* `0` to sync on every batch when healthy). Skip entirely with `OPTIMUS_SKIP_STARTUP_SYNC=1`.
|
|
10
11
|
*/
|
|
11
12
|
import { buildStartupEndpointUrl, createSignature, loadEndpointBase, persistAuthKey, readStoredAuthKey, } from "optimus-tofu";
|
|
12
13
|
import { OPTIMUS_AUTH_KEY_RELATIVE_PATH, resetToolCallAuthCache } from "./machine-auth.js";
|
|
@@ -19,8 +20,34 @@ const emptyUserProfile = () => ({
|
|
|
19
20
|
claude_email: "",
|
|
20
21
|
cursor_email: "",
|
|
21
22
|
});
|
|
22
|
-
let lastSuccessfulStartupSyncMs = 0;
|
|
23
23
|
const DEFAULT_STARTUP_SYNC_INTERVAL_MS = 1800000;
|
|
24
|
+
const STARTUP_SYNC_FAILURE_BACKOFF_BASE_MS = 5000;
|
|
25
|
+
const STARTUP_SYNC_FAILURE_BACKOFF_CAP_MS = 300000;
|
|
26
|
+
let lastStartupAttemptEndedMs = 0;
|
|
27
|
+
/** After a failed attempt, false until the next completed successful sync. */
|
|
28
|
+
let lastStartupAttemptOk = true;
|
|
29
|
+
let startupSyncFailureStreak = 0;
|
|
30
|
+
function recordStartupSyncAttemptEnd(ok) {
|
|
31
|
+
lastStartupAttemptEndedMs = Date.now();
|
|
32
|
+
lastStartupAttemptOk = ok;
|
|
33
|
+
if (ok) {
|
|
34
|
+
startupSyncFailureStreak = 0;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
startupSyncFailureStreak += 1;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function shouldSkipStartupSyncDueToCooldown(now, intervalMs) {
|
|
41
|
+
if (lastStartupAttemptEndedMs <= 0)
|
|
42
|
+
return false;
|
|
43
|
+
const failureBackoffMs = !lastStartupAttemptOk
|
|
44
|
+
? Math.min(STARTUP_SYNC_FAILURE_BACKOFF_CAP_MS, STARTUP_SYNC_FAILURE_BACKOFF_BASE_MS *
|
|
45
|
+
2 ** Math.min(Math.max(0, startupSyncFailureStreak - 1), 6))
|
|
46
|
+
: 0;
|
|
47
|
+
const successIntervalMs = lastStartupAttemptOk && intervalMs > 0 ? intervalMs : 0;
|
|
48
|
+
const cooldownMs = Math.max(failureBackoffMs, successIntervalMs);
|
|
49
|
+
return cooldownMs > 0 && now - lastStartupAttemptEndedMs < cooldownMs;
|
|
50
|
+
}
|
|
24
51
|
export async function ensureStartupMetadataSynced(hardwareUuid) {
|
|
25
52
|
if (process.env.OPTIMUS_SKIP_STARTUP_SYNC === "1")
|
|
26
53
|
return;
|
|
@@ -32,9 +59,7 @@ export async function ensureStartupMetadataSynced(hardwareUuid) {
|
|
|
32
59
|
Number.isNaN(parsed) || parsed < 0 ? DEFAULT_STARTUP_SYNC_INTERVAL_MS : parsed;
|
|
33
60
|
}
|
|
34
61
|
const now = Date.now();
|
|
35
|
-
if (intervalMs
|
|
36
|
-
lastSuccessfulStartupSyncMs > 0 &&
|
|
37
|
-
now - lastSuccessfulStartupSyncMs < intervalMs) {
|
|
62
|
+
if (shouldSkipStartupSyncDueToCooldown(now, intervalMs)) {
|
|
38
63
|
return;
|
|
39
64
|
}
|
|
40
65
|
const timestamp = new Date().toISOString();
|
|
@@ -97,6 +122,7 @@ export async function ensureStartupMetadataSynced(hardwareUuid) {
|
|
|
97
122
|
const text = await res.text();
|
|
98
123
|
if (!res.ok) {
|
|
99
124
|
console.error(`[optimus-tool-call] startup metadata sync failed ${res.status}: ${text ? text.slice(0, 240) : res.statusText}`);
|
|
125
|
+
recordStartupSyncAttemptEnd(false);
|
|
100
126
|
return;
|
|
101
127
|
}
|
|
102
128
|
let parsed = {};
|
|
@@ -104,16 +130,18 @@ export async function ensureStartupMetadataSynced(hardwareUuid) {
|
|
|
104
130
|
parsed = JSON.parse(text);
|
|
105
131
|
}
|
|
106
132
|
catch {
|
|
133
|
+
recordStartupSyncAttemptEnd(false);
|
|
107
134
|
return;
|
|
108
135
|
}
|
|
109
136
|
if (parsed.status === "key_issued" && typeof parsed.key === "string") {
|
|
110
137
|
persistAuthKey(parsed.key, typeof parsed.key_id === "string" ? parsed.key_id : null, hardwareUuid, { authRelativePath: OPTIMUS_AUTH_KEY_RELATIVE_PATH });
|
|
111
138
|
resetToolCallAuthCache();
|
|
112
139
|
}
|
|
113
|
-
|
|
140
|
+
recordStartupSyncAttemptEnd(true);
|
|
114
141
|
}
|
|
115
142
|
catch (err) {
|
|
116
143
|
console.error(`[optimus-tool-call] startup metadata sync error: ${err instanceof Error ? err.message : String(err)}`);
|
|
144
|
+
recordStartupSyncAttemptEnd(false);
|
|
117
145
|
}
|
|
118
146
|
}
|
|
119
147
|
//# sourceMappingURL=startup-sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-sync.js","sourceRoot":"","sources":["../../src/lib/startup-sync.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"startup-sync.js","sourceRoot":"","sources":["../../src/lib/startup-sync.ts"],"names":[],"mappings":"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"}
|