@grackle-ai/core 0.89.0 → 0.89.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/auto-reconnect.d.ts.map +1 -1
- package/dist/auto-reconnect.js +125 -45
- package/dist/auto-reconnect.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-reconnect.d.ts","sourceRoot":"","sources":["../src/auto-reconnect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auto-reconnect.d.ts","sourceRoot":"","sources":["../src/auto-reconnect.ts"],"names":[],"mappings":"AA+CA;;;;;;GAMG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsFvD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAK/D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
|
package/dist/auto-reconnect.js
CHANGED
|
@@ -16,6 +16,8 @@ const RECONNECT_MAX_RETRIES = 5;
|
|
|
16
16
|
const RECONNECT_MAX_DELAY_MS = 120_000;
|
|
17
17
|
/** Multiplier for exponential backoff. */
|
|
18
18
|
const RECONNECT_BACKOFF_MULTIPLIER = 2;
|
|
19
|
+
/** Interval between probes for sleeping environments (milliseconds). */
|
|
20
|
+
const PROBE_INTERVAL_MS = 60_000;
|
|
19
21
|
/** Tracks reconnect backoff state per environment. */
|
|
20
22
|
const reconnectStates = new Map();
|
|
21
23
|
/** Prevents concurrent reconnect attempts for the same environment. */
|
|
@@ -30,6 +32,7 @@ const reconnecting = new Set();
|
|
|
30
32
|
*/
|
|
31
33
|
export async function attemptReconnects() {
|
|
32
34
|
const environments = envRegistry.listEnvironments();
|
|
35
|
+
// ── Phase 1: Disconnected environments (exponential backoff) ──
|
|
33
36
|
const disconnected = environments.filter((env) => env.status === "disconnected");
|
|
34
37
|
for (const env of disconnected) {
|
|
35
38
|
const state = reconnectStates.get(env.id);
|
|
@@ -38,6 +41,7 @@ export async function attemptReconnects() {
|
|
|
38
41
|
reconnectStates.set(env.id, {
|
|
39
42
|
attempts: 0,
|
|
40
43
|
nextRetryAt: Date.now() + RECONNECT_INITIAL_DELAY_MS,
|
|
44
|
+
lastProbeAt: 0,
|
|
41
45
|
});
|
|
42
46
|
continue;
|
|
43
47
|
}
|
|
@@ -58,10 +62,42 @@ export async function attemptReconnects() {
|
|
|
58
62
|
logger.error({ environmentId: env.id, err }, "Unhandled error during auto-reconnect");
|
|
59
63
|
});
|
|
60
64
|
}
|
|
61
|
-
//
|
|
65
|
+
// ── Phase 2: Sleeping environments (periodic probe) ──────
|
|
66
|
+
const sleeping = environments.filter((env) => env.status === "sleeping");
|
|
67
|
+
for (const env of sleeping) {
|
|
68
|
+
// Don't auto-probe codespace environments — gh codespace ssh can
|
|
69
|
+
// auto-start a stopped codespace, which is expensive.
|
|
70
|
+
if (env.adapterType === "codespace") {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const state = reconnectStates.get(env.id);
|
|
74
|
+
// First time seeing this sleeping env (e.g., after server restart)
|
|
75
|
+
// — initialize with lastProbeAt = now so first probe fires after interval.
|
|
76
|
+
if (!state) {
|
|
77
|
+
reconnectStates.set(env.id, {
|
|
78
|
+
attempts: RECONNECT_MAX_RETRIES,
|
|
79
|
+
nextRetryAt: 0,
|
|
80
|
+
lastProbeAt: Date.now(),
|
|
81
|
+
});
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
// Probe interval not elapsed yet
|
|
85
|
+
if (Date.now() - state.lastProbeAt < PROBE_INTERVAL_MS) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
// Already reconnecting/probing
|
|
89
|
+
if (reconnecting.has(env.id)) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
// Attempt probe (fire-and-forget)
|
|
93
|
+
tryProbe(env.id).catch((err) => {
|
|
94
|
+
logger.debug({ environmentId: env.id, err }, "Unhandled error during sleeping probe");
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
// Clean up state for environments that are no longer disconnected or sleeping
|
|
62
98
|
for (const [envId] of reconnectStates) {
|
|
63
99
|
const env = environments.find((e) => e.id === envId);
|
|
64
|
-
if (env?.status !== "disconnected") {
|
|
100
|
+
if (env?.status !== "disconnected" && env?.status !== "sleeping") {
|
|
65
101
|
reconnectStates.delete(envId);
|
|
66
102
|
}
|
|
67
103
|
}
|
|
@@ -83,7 +119,7 @@ export function clearReconnectState(environmentId) {
|
|
|
83
119
|
* attempts to zero and nextRetryAt to now.
|
|
84
120
|
*/
|
|
85
121
|
export function resetReconnectState(environmentId) {
|
|
86
|
-
reconnectStates.set(environmentId, { attempts: 0, nextRetryAt: Date.now() });
|
|
122
|
+
reconnectStates.set(environmentId, { attempts: 0, nextRetryAt: Date.now(), lastProbeAt: 0 });
|
|
87
123
|
}
|
|
88
124
|
/** @internal Reset all reconnect state for testing. */
|
|
89
125
|
export function _resetForTesting() {
|
|
@@ -91,6 +127,53 @@ export function _resetForTesting() {
|
|
|
91
127
|
reconnecting.clear();
|
|
92
128
|
}
|
|
93
129
|
// ─── Internal ───────────────────────────────────────────────
|
|
130
|
+
/**
|
|
131
|
+
* Run the reconnect/provision flow and complete the connection.
|
|
132
|
+
* Shared success path for both {@link tryReconnect} and {@link tryProbe}.
|
|
133
|
+
*
|
|
134
|
+
* @returns `true` if the connection was established, `false` if skipped
|
|
135
|
+
* (environment removed, no adapter registered).
|
|
136
|
+
*/
|
|
137
|
+
async function connectAndRecover(environmentId) {
|
|
138
|
+
const env = envRegistry.getEnvironment(environmentId);
|
|
139
|
+
if (!env) {
|
|
140
|
+
reconnectStates.delete(environmentId);
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
const adapter = adapterManager.getAdapter(env.adapterType);
|
|
144
|
+
if (!adapter) {
|
|
145
|
+
logger.warn({ environmentId, adapterType: env.adapterType }, "No adapter registered — skipping reconnect");
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
envRegistry.updateEnvironmentStatus(environmentId, "connecting");
|
|
149
|
+
emit("environment.changed", {});
|
|
150
|
+
const config = parseAdapterConfig(env.adapterConfig);
|
|
151
|
+
config.defaultRuntime = resolveBootstrapRuntime(env);
|
|
152
|
+
const powerlineToken = env.powerlineToken;
|
|
153
|
+
// Run reconnectOrProvision — tries fast reconnect if supported, falls back to provision
|
|
154
|
+
for await (const event of reconnectOrProvision(environmentId, adapter, config, powerlineToken, !!env.bootstrapped)) {
|
|
155
|
+
logger.debug({ environmentId, stage: event.stage, message: event.message }, "Reconnect progress");
|
|
156
|
+
}
|
|
157
|
+
// Establish gRPC connection
|
|
158
|
+
const conn = await adapter.connect(environmentId, config, powerlineToken);
|
|
159
|
+
adapterManager.setConnection(environmentId, conn);
|
|
160
|
+
// Push tokens (local environments exclude file tokens)
|
|
161
|
+
if (env.adapterType === "local") {
|
|
162
|
+
await tokenPush.pushToEnv(environmentId, { excludeFileTokens: true });
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
await tokenPush.pushToEnv(environmentId);
|
|
166
|
+
}
|
|
167
|
+
envRegistry.updateEnvironmentStatus(environmentId, "connected");
|
|
168
|
+
envRegistry.markBootstrapped(environmentId);
|
|
169
|
+
emit("environment.changed", {});
|
|
170
|
+
// Auto-recover suspended sessions (fire-and-forget)
|
|
171
|
+
recoverSuspendedSessions(environmentId, conn).catch((recoverErr) => {
|
|
172
|
+
logger.error({ environmentId, err: recoverErr }, "Session recovery failed after auto-reconnect");
|
|
173
|
+
});
|
|
174
|
+
reconnectStates.delete(environmentId);
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
94
177
|
/**
|
|
95
178
|
* Attempt to reconnect a single disconnected environment.
|
|
96
179
|
* Uses the existing `reconnectOrProvision` flow from adapter-sdk.
|
|
@@ -98,55 +181,22 @@ export function _resetForTesting() {
|
|
|
98
181
|
async function tryReconnect(environmentId) {
|
|
99
182
|
reconnecting.add(environmentId);
|
|
100
183
|
try {
|
|
101
|
-
|
|
102
|
-
const
|
|
103
|
-
if (
|
|
104
|
-
|
|
105
|
-
return;
|
|
184
|
+
logger.info({ environmentId }, "Attempting auto-reconnect");
|
|
185
|
+
const connected = await connectAndRecover(environmentId);
|
|
186
|
+
if (connected) {
|
|
187
|
+
logger.info({ environmentId }, "Auto-reconnect successful");
|
|
106
188
|
}
|
|
107
|
-
const adapter = adapterManager.getAdapter(env.adapterType);
|
|
108
|
-
if (!adapter) {
|
|
109
|
-
logger.warn({ environmentId, adapterType: env.adapterType }, "No adapter registered — skipping reconnect");
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
logger.info({ environmentId, adapterType: env.adapterType }, "Attempting auto-reconnect");
|
|
113
|
-
envRegistry.updateEnvironmentStatus(environmentId, "connecting");
|
|
114
|
-
emit("environment.changed", {});
|
|
115
|
-
const config = parseAdapterConfig(env.adapterConfig);
|
|
116
|
-
config.defaultRuntime = resolveBootstrapRuntime(env);
|
|
117
|
-
const powerlineToken = env.powerlineToken;
|
|
118
|
-
// Run reconnectOrProvision — tries fast reconnect if supported, falls back to provision
|
|
119
|
-
for await (const event of reconnectOrProvision(environmentId, adapter, config, powerlineToken, !!env.bootstrapped)) {
|
|
120
|
-
logger.debug({ environmentId, stage: event.stage, message: event.message }, "Reconnect progress");
|
|
121
|
-
}
|
|
122
|
-
// Establish gRPC connection
|
|
123
|
-
const conn = await adapter.connect(environmentId, config, powerlineToken);
|
|
124
|
-
adapterManager.setConnection(environmentId, conn);
|
|
125
|
-
// Push tokens (local environments exclude file tokens)
|
|
126
|
-
if (env.adapterType === "local") {
|
|
127
|
-
await tokenPush.pushToEnv(environmentId, { excludeFileTokens: true });
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
await tokenPush.pushToEnv(environmentId);
|
|
131
|
-
}
|
|
132
|
-
envRegistry.updateEnvironmentStatus(environmentId, "connected");
|
|
133
|
-
envRegistry.markBootstrapped(environmentId);
|
|
134
|
-
emit("environment.changed", {});
|
|
135
|
-
// Auto-recover suspended sessions (fire-and-forget)
|
|
136
|
-
recoverSuspendedSessions(environmentId, conn).catch((err) => {
|
|
137
|
-
logger.error({ environmentId, err }, "Session recovery failed after auto-reconnect");
|
|
138
|
-
});
|
|
139
|
-
logger.info({ environmentId }, "Auto-reconnect successful");
|
|
140
|
-
reconnectStates.delete(environmentId);
|
|
141
189
|
}
|
|
142
190
|
catch (err) {
|
|
143
191
|
// Clean up any partially-established connection to avoid leaking state
|
|
144
192
|
adapterManager.removeConnection(environmentId);
|
|
145
|
-
const state = reconnectStates.get(environmentId) ?? { attempts: 0, nextRetryAt: 0 };
|
|
193
|
+
const state = reconnectStates.get(environmentId) ?? { attempts: 0, nextRetryAt: 0, lastProbeAt: 0 };
|
|
146
194
|
state.attempts++;
|
|
147
195
|
if (state.attempts >= RECONNECT_MAX_RETRIES) {
|
|
148
|
-
logger.
|
|
149
|
-
envRegistry.updateEnvironmentStatus(environmentId, "
|
|
196
|
+
logger.warn({ environmentId, attempts: state.attempts, err }, "Auto-reconnect exhausted all retries — entering sleeping state for periodic probing");
|
|
197
|
+
envRegistry.updateEnvironmentStatus(environmentId, "sleeping");
|
|
198
|
+
state.lastProbeAt = Date.now();
|
|
199
|
+
reconnectStates.set(environmentId, state);
|
|
150
200
|
emit("environment.changed", {});
|
|
151
201
|
}
|
|
152
202
|
else {
|
|
@@ -162,4 +212,34 @@ async function tryReconnect(environmentId) {
|
|
|
162
212
|
reconnecting.delete(environmentId);
|
|
163
213
|
}
|
|
164
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Probe a sleeping environment to check if it has become reachable.
|
|
217
|
+
* On success: transitions to connected and recovers sessions.
|
|
218
|
+
* On failure: stays sleeping, updates lastProbeAt, logs at debug level.
|
|
219
|
+
*/
|
|
220
|
+
async function tryProbe(environmentId) {
|
|
221
|
+
reconnecting.add(environmentId);
|
|
222
|
+
try {
|
|
223
|
+
logger.debug({ environmentId }, "Probing sleeping environment");
|
|
224
|
+
const recovered = await connectAndRecover(environmentId);
|
|
225
|
+
if (recovered) {
|
|
226
|
+
logger.info({ environmentId }, "Sleeping environment recovered — now connected");
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
// Clean up any partially-established connection
|
|
231
|
+
adapterManager.removeConnection(environmentId);
|
|
232
|
+
// Stay sleeping — update lastProbeAt but do NOT increment attempts
|
|
233
|
+
const state = reconnectStates.get(environmentId);
|
|
234
|
+
if (state) {
|
|
235
|
+
state.lastProbeAt = Date.now();
|
|
236
|
+
}
|
|
237
|
+
envRegistry.updateEnvironmentStatus(environmentId, "sleeping");
|
|
238
|
+
emit("environment.changed", {});
|
|
239
|
+
logger.debug({ environmentId, err }, "Sleeping probe failed — will retry later");
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
reconnecting.delete(environmentId);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
165
245
|
//# sourceMappingURL=auto-reconnect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../src/auto-reconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,+DAA+D;AAE/D,mEAAmE;AACnE,MAAM,0BAA0B,GAAW,MAAM,CAAC;AAElD,6DAA6D;AAC7D,MAAM,qBAAqB,GAAW,CAAC,CAAC;AAExC,+DAA+D;AAC/D,MAAM,sBAAsB,GAAW,OAAO,CAAC;AAE/C,0CAA0C;AAC1C,MAAM,4BAA4B,GAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../src/auto-reconnect.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grackle-ai/core",
|
|
3
|
-
"version": "0.89.
|
|
3
|
+
"version": "0.89.1",
|
|
4
4
|
"description": "Core gRPC business logic for Grackle — RPC handlers, event system, streaming, session lifecycle",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -36,12 +36,12 @@
|
|
|
36
36
|
"pino": "^10.3.1",
|
|
37
37
|
"ulid": "^2.3.0",
|
|
38
38
|
"uuid": "^11.0.0",
|
|
39
|
-
"@grackle-ai/auth": "0.89.
|
|
40
|
-
"@grackle-ai/adapter-sdk": "0.89.
|
|
41
|
-
"@grackle-ai/
|
|
42
|
-
"@grackle-ai/
|
|
43
|
-
"@grackle-ai/knowledge": "0.89.
|
|
44
|
-
"@grackle-ai/prompt": "0.89.
|
|
39
|
+
"@grackle-ai/auth": "0.89.1",
|
|
40
|
+
"@grackle-ai/adapter-sdk": "0.89.1",
|
|
41
|
+
"@grackle-ai/database": "0.89.1",
|
|
42
|
+
"@grackle-ai/common": "0.89.1",
|
|
43
|
+
"@grackle-ai/knowledge": "0.89.1",
|
|
44
|
+
"@grackle-ai/prompt": "0.89.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@rushstack/heft": "1.2.7",
|