@rynx-ai/server 0.1.11-beta.43 → 0.1.11-beta.45

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.
@@ -2301,10 +2301,17 @@ export function createControlRouter(opts) {
2301
2301
  }
2302
2302
  if (!authorizeLoopbackManagementRequest(ctx, daemonManagement.managementToken))
2303
2303
  return;
2304
- const maintenanceLeaseToken = ctx.get(DAEMON_MAINTENANCE_LEASE_HEADER).trim() || undefined;
2304
+ if (ctx.get(DAEMON_MAINTENANCE_LEASE_HEADER).trim()) {
2305
+ ctx.set("Cache-Control", "no-store");
2306
+ ctx.status = 410;
2307
+ ctx.body = {
2308
+ error: "cross-process maintenance leases are retired; upgrade the caller",
2309
+ };
2310
+ return;
2311
+ }
2305
2312
  let result;
2306
2313
  try {
2307
- result = await daemonManagement.shutdownIfIdle(maintenanceLeaseToken);
2314
+ result = await daemonManagement.shutdownIfIdle();
2308
2315
  }
2309
2316
  catch (error) {
2310
2317
  ctx.set("Cache-Control", "no-store");
@@ -2319,15 +2326,16 @@ export function createControlRouter(opts) {
2319
2326
  ctx.body = result;
2320
2327
  });
2321
2328
  router.post(DAEMON_MAINTENANCE_LEASE_RELEASE_PATH, (ctx) => {
2322
- if (!isConfiguredDaemonManagement(daemonManagement)
2323
- || !daemonManagement.releaseMaintenanceLease) {
2324
- return notFound(ctx, "daemon maintenance lease management is not configured");
2329
+ if (!isConfiguredDaemonManagement(daemonManagement)) {
2330
+ return notFound(ctx, "daemon management is not configured");
2325
2331
  }
2326
2332
  if (!authorizeLoopbackManagementRequest(ctx, daemonManagement.managementToken))
2327
2333
  return;
2328
- const result = daemonManagement.releaseMaintenanceLease(ctx.get(DAEMON_MAINTENANCE_LEASE_HEADER).trim());
2334
+ // Compatibility for updaters released before Plugin-owned drain became
2335
+ // the sole upgrade fence. New daemons never acquire a Host lease.
2336
+ const result = { outcome: "not_active" };
2329
2337
  ctx.set("Cache-Control", "no-store");
2330
- ctx.status = result.outcome === "denied" ? 403 : 200;
2338
+ ctx.status = 200;
2331
2339
  ctx.body = result;
2332
2340
  });
2333
2341
  router.post(DAEMON_BROWSER_ARTIFACT_INSTALL_PATH, async (ctx) => {
package/dist/server.d.ts CHANGED
@@ -267,11 +267,7 @@ export interface DaemonManagementHost {
267
267
  restartRequired: boolean;
268
268
  };
269
269
  /** Perform one final activity check and schedule shutdown only when idle. */
270
- shutdownIfIdle?(maintenanceLeaseToken?: string): DaemonShutdownIfIdleResult | Promise<DaemonShutdownIfIdleResult>;
271
- /** Release a cross-process maintenance fence after a verified cutover. */
272
- releaseMaintenanceLease?(maintenanceLeaseToken: string): {
273
- outcome: "released" | "not_active" | "denied";
274
- };
270
+ shutdownIfIdle?(): DaemonShutdownIfIdleResult | Promise<DaemonShutdownIfIdleResult>;
275
271
  /** Stateful plugin registry operations owned by the resident daemon. */
276
272
  pluginManagement?: PluginManagementHost;
277
273
  /** Registered Git/local plugin catalogs. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rynx-ai/server",
3
- "version": "0.1.11-beta.43",
3
+ "version": "0.1.11-beta.45",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/rynx-ai/rynx.git",
@@ -27,15 +27,15 @@
27
27
  "@koa/router": "^15.4.0",
28
28
  "koa": "^3.2.0",
29
29
  "ws": "^8.21.0",
30
- "@rynx-ai/core": "0.1.11-beta.43",
31
- "@rynx-ai/plugin-sdk": "0.1.11-beta.43",
32
- "@rynx-ai/protocol": "0.1.11-beta.43",
33
- "@rynx-ai/remote-runtime-e2ee": "0.1.11-beta.43",
34
- "@rynx-ai/runtime": "0.1.11-beta.43"
30
+ "@rynx-ai/core": "0.1.11-beta.45",
31
+ "@rynx-ai/plugin-sdk": "0.1.11-beta.45",
32
+ "@rynx-ai/protocol": "0.1.11-beta.45",
33
+ "@rynx-ai/remote-runtime-e2ee": "0.1.11-beta.45",
34
+ "@rynx-ai/runtime": "0.1.11-beta.45"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/ws": "^8.18.1",
38
- "@rynx-ai/control-web": "0.1.11-beta.43"
38
+ "@rynx-ai/control-web": "0.1.11-beta.45"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "rm -rf dist && tsc -p tsconfig.json && mkdir -p dist/control-web && cp -R ../control-web/dist/. dist/control-web/",