@ctrl-spc/cli 1.1.13 → 1.1.14

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.
Files changed (2) hide show
  1. package/dist/daemon.js +9 -3
  2. package/package.json +1 -1
package/dist/daemon.js CHANGED
@@ -3,6 +3,7 @@ import { loadMachineState } from './session.js';
3
3
  import { makeSpawner, nodeSpawnAgent } from './spawner.js';
4
4
  import { makeControlRequestProcessor } from './controlRequests.js';
5
5
  export const HEARTBEAT_INTERVAL_MS = 30_000;
6
+ export const WORK_SCAN_INTERVAL_MS = 2_000;
6
7
  const SESSION_RETRY_INTERVAL_MS = 5_000;
7
8
  export async function heartbeatOnce(session, deps) {
8
9
  try {
@@ -113,14 +114,19 @@ export async function runDaemon() {
113
114
  process.once('SIGTERM', () => void shutdown());
114
115
  session = await heartbeatOnce(session, deps);
115
116
  await markRecoveredSessionsDisconnected(session, () => Date.now(), deps.log);
117
+ let lastHeartbeatAt = Date.now();
116
118
  let spawner = makeSpawner({ session, spawnAgent: nodeSpawnAgent, ownedSessions, now: () => Date.now(), log: deps.log });
117
119
  let controls = makeControlRequestProcessor({ session, spawnAgent: nodeSpawnAgent, ownedSessions, now: () => Date.now(), log: deps.log });
118
120
  await runSpawnScan(spawner, deps.log);
119
121
  await runControlScan(controls, deps.log);
120
122
  while (true) {
121
- await sleep(HEARTBEAT_INTERVAL_MS);
122
- session = await heartbeatOnce(session, deps);
123
- await touchOwnedSessions(session, ownedSessions, () => Date.now(), deps.log);
123
+ await sleep(WORK_SCAN_INTERVAL_MS);
124
+ const now = Date.now();
125
+ if (now - lastHeartbeatAt >= HEARTBEAT_INTERVAL_MS) {
126
+ session = await heartbeatOnce(session, deps);
127
+ await touchOwnedSessions(session, ownedSessions, () => now, deps.log);
128
+ lastHeartbeatAt = now;
129
+ }
124
130
  spawner = makeSpawner({ session, spawnAgent: nodeSpawnAgent, ownedSessions, now: () => Date.now(), log: deps.log });
125
131
  controls = makeControlRequestProcessor({ session, spawnAgent: nodeSpawnAgent, ownedSessions, now: () => Date.now(), log: deps.log });
126
132
  await runSpawnScan(spawner, deps.log);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ctrl-spc/cli",
3
- "version": "1.1.13",
3
+ "version": "1.1.14",
4
4
  "description": "Control Space CLI - machine setup and background daemon",
5
5
  "type": "module",
6
6
  "files": [