@kmmao/happy-agent 0.3.8 → 0.3.10

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.cjs CHANGED
@@ -18,7 +18,7 @@ var path = require('path');
18
18
  var fs = require('fs');
19
19
  var os = require('os');
20
20
 
21
- var version = "0.3.8";
21
+ var version = "0.3.10";
22
22
 
23
23
  function loadConfig() {
24
24
  const serverUrl = (process.env.HAPPY_SERVER_URL ?? "https://happyserve.xycloud.info").replace(/\/+$/, "");
@@ -622,6 +622,7 @@ class RpcHandlerManager {
622
622
  logger;
623
623
  socket = null;
624
624
  reregisterInterval = null;
625
+ fastRetryTimer = null;
625
626
  constructor(config) {
626
627
  this.scopePrefix = config.scopePrefix;
627
628
  this.encryptionKey = config.encryptionKey;
@@ -681,11 +682,13 @@ class RpcHandlerManager {
681
682
  onSocketConnect(socket) {
682
683
  this.socket = socket;
683
684
  this.registerAllHandlers(socket);
685
+ this.scheduleFastRetry(socket);
684
686
  this.startReregisterInterval();
685
687
  }
686
688
  onSocketDisconnect() {
687
689
  this.socket = null;
688
690
  this.stopReregisterInterval();
691
+ this.cancelFastRetry();
689
692
  }
690
693
  getHandlerCount() {
691
694
  return this.handlers.size;
@@ -741,7 +744,27 @@ class RpcHandlerManager {
741
744
  }
742
745
  }
743
746
  /**
744
- * Periodic re-registration every 60s as a safety net.
747
+ * Fast retry: 5 seconds after initial connect, re-register all handlers once.
748
+ * Covers the case where the first batch of registrations failed silently.
749
+ */
750
+ scheduleFastRetry(socket) {
751
+ this.cancelFastRetry();
752
+ this.fastRetryTimer = setTimeout(() => {
753
+ this.fastRetryTimer = null;
754
+ if (this.socket === socket && this.handlers.size > 0) {
755
+ this.logger("[RPC] Fast retry: re-registering all handlers");
756
+ this.registerAllHandlers(socket);
757
+ }
758
+ }, 5e3);
759
+ }
760
+ cancelFastRetry() {
761
+ if (this.fastRetryTimer) {
762
+ clearTimeout(this.fastRetryTimer);
763
+ this.fastRetryTimer = null;
764
+ }
765
+ }
766
+ /**
767
+ * Periodic re-registration every 30s as a safety net.
745
768
  */
746
769
  startReregisterInterval() {
747
770
  this.stopReregisterInterval();
@@ -749,7 +772,7 @@ class RpcHandlerManager {
749
772
  if (this.socket && this.handlers.size > 0) {
750
773
  this.registerAllHandlers(this.socket);
751
774
  }
752
- }, 6e4);
775
+ }, 3e4);
753
776
  }
754
777
  stopReregisterInterval() {
755
778
  if (this.reregisterInterval) {
package/dist/index.d.cts CHANGED
@@ -175,6 +175,7 @@ declare class RpcHandlerManager {
175
175
  private readonly logger;
176
176
  private socket;
177
177
  private reregisterInterval;
178
+ private fastRetryTimer;
178
179
  constructor(config: RpcHandlerConfig);
179
180
  /**
180
181
  * Register an RPC handler for a specific method
@@ -196,7 +197,13 @@ declare class RpcHandlerManager {
196
197
  private emitRegisterWithRetry;
197
198
  private registerAllHandlers;
198
199
  /**
199
- * Periodic re-registration every 60s as a safety net.
200
+ * Fast retry: 5 seconds after initial connect, re-register all handlers once.
201
+ * Covers the case where the first batch of registrations failed silently.
202
+ */
203
+ private scheduleFastRetry;
204
+ private cancelFastRetry;
205
+ /**
206
+ * Periodic re-registration every 30s as a safety net.
200
207
  */
201
208
  private startReregisterInterval;
202
209
  private stopReregisterInterval;
package/dist/index.d.mts CHANGED
@@ -175,6 +175,7 @@ declare class RpcHandlerManager {
175
175
  private readonly logger;
176
176
  private socket;
177
177
  private reregisterInterval;
178
+ private fastRetryTimer;
178
179
  constructor(config: RpcHandlerConfig);
179
180
  /**
180
181
  * Register an RPC handler for a specific method
@@ -196,7 +197,13 @@ declare class RpcHandlerManager {
196
197
  private emitRegisterWithRetry;
197
198
  private registerAllHandlers;
198
199
  /**
199
- * Periodic re-registration every 60s as a safety net.
200
+ * Fast retry: 5 seconds after initial connect, re-register all handlers once.
201
+ * Covers the case where the first batch of registrations failed silently.
202
+ */
203
+ private scheduleFastRetry;
204
+ private cancelFastRetry;
205
+ /**
206
+ * Periodic re-registration every 30s as a safety net.
200
207
  */
201
208
  private startReregisterInterval;
202
209
  private stopReregisterInterval;
package/dist/index.mjs CHANGED
@@ -16,7 +16,7 @@ import { join as join$1, resolve } from 'path';
16
16
  import { realpathSync } from 'fs';
17
17
  import { tmpdir } from 'os';
18
18
 
19
- var version = "0.3.8";
19
+ var version = "0.3.10";
20
20
 
21
21
  function loadConfig() {
22
22
  const serverUrl = (process.env.HAPPY_SERVER_URL ?? "https://happyserve.xycloud.info").replace(/\/+$/, "");
@@ -620,6 +620,7 @@ class RpcHandlerManager {
620
620
  logger;
621
621
  socket = null;
622
622
  reregisterInterval = null;
623
+ fastRetryTimer = null;
623
624
  constructor(config) {
624
625
  this.scopePrefix = config.scopePrefix;
625
626
  this.encryptionKey = config.encryptionKey;
@@ -679,11 +680,13 @@ class RpcHandlerManager {
679
680
  onSocketConnect(socket) {
680
681
  this.socket = socket;
681
682
  this.registerAllHandlers(socket);
683
+ this.scheduleFastRetry(socket);
682
684
  this.startReregisterInterval();
683
685
  }
684
686
  onSocketDisconnect() {
685
687
  this.socket = null;
686
688
  this.stopReregisterInterval();
689
+ this.cancelFastRetry();
687
690
  }
688
691
  getHandlerCount() {
689
692
  return this.handlers.size;
@@ -739,7 +742,27 @@ class RpcHandlerManager {
739
742
  }
740
743
  }
741
744
  /**
742
- * Periodic re-registration every 60s as a safety net.
745
+ * Fast retry: 5 seconds after initial connect, re-register all handlers once.
746
+ * Covers the case where the first batch of registrations failed silently.
747
+ */
748
+ scheduleFastRetry(socket) {
749
+ this.cancelFastRetry();
750
+ this.fastRetryTimer = setTimeout(() => {
751
+ this.fastRetryTimer = null;
752
+ if (this.socket === socket && this.handlers.size > 0) {
753
+ this.logger("[RPC] Fast retry: re-registering all handlers");
754
+ this.registerAllHandlers(socket);
755
+ }
756
+ }, 5e3);
757
+ }
758
+ cancelFastRetry() {
759
+ if (this.fastRetryTimer) {
760
+ clearTimeout(this.fastRetryTimer);
761
+ this.fastRetryTimer = null;
762
+ }
763
+ }
764
+ /**
765
+ * Periodic re-registration every 30s as a safety net.
743
766
  */
744
767
  startReregisterInterval() {
745
768
  this.stopReregisterInterval();
@@ -747,7 +770,7 @@ class RpcHandlerManager {
747
770
  if (this.socket && this.handlers.size > 0) {
748
771
  this.registerAllHandlers(this.socket);
749
772
  }
750
- }, 6e4);
773
+ }, 3e4);
751
774
  }
752
775
  stopReregisterInterval() {
753
776
  if (this.reregisterInterval) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kmmao/happy-agent",
3
- "version": "0.3.8",
3
+ "version": "0.3.10",
4
4
  "description": "CLI client for controlling Happy Coder agents remotely",
5
5
  "author": "Kirill Dubovitskiy",
6
6
  "license": "MIT",
@@ -43,7 +43,7 @@
43
43
  "release": "npx --no-install release-it"
44
44
  },
45
45
  "dependencies": {
46
- "@kmmao/happy-wire": "^0.3.0",
46
+ "@kmmao/happy-wire": "^0.4.2",
47
47
  "axios": "^1.13.5",
48
48
  "chalk": "^5.6.2",
49
49
  "commander": "^13.1.0",