@gowelle/stint-agent 1.2.27 → 1.2.28

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.
@@ -2,10 +2,10 @@ import {
2
2
  gitService,
3
3
  projectService,
4
4
  validatePidFile
5
- } from "./chunk-TKPLAYYZ.js";
5
+ } from "./chunk-JIRQHCFR.js";
6
6
  import {
7
7
  authService
8
- } from "./chunk-OX2GO7KX.js";
8
+ } from "./chunk-RHWE22KH.js";
9
9
 
10
10
  // src/components/StatusDashboard.tsx
11
11
  import { useState, useEffect } from "react";
@@ -0,0 +1,7 @@
1
+ import {
2
+ apiService
3
+ } from "./chunk-UJBUIRQZ.js";
4
+ import "./chunk-RHWE22KH.js";
5
+ export {
6
+ apiService
7
+ };
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  apiService
3
- } from "./chunk-JIYLLUF7.js";
3
+ } from "./chunk-UJBUIRQZ.js";
4
4
  import {
5
5
  gitService,
6
6
  projectService
7
- } from "./chunk-TKPLAYYZ.js";
7
+ } from "./chunk-JIRQHCFR.js";
8
8
  import {
9
9
  authService,
10
10
  config,
11
11
  logger
12
- } from "./chunk-OX2GO7KX.js";
12
+ } from "./chunk-RHWE22KH.js";
13
13
 
14
14
  // src/utils/notify.ts
15
15
  import notifier from "node-notifier";
@@ -561,6 +561,10 @@ var WebSocketServiceImpl = class {
561
561
  forceTLS = true;
562
562
  }
563
563
  logger.info("websocket", `Connecting to ${wsHost}:${wsPort} with key ${reverbAppKey}...`);
564
+ if (typeof global.WebSocket === "undefined") {
565
+ const { WebSocket } = await import("ws");
566
+ global.WebSocket = WebSocket;
567
+ }
564
568
  const pusherClient = new Pusher(reverbAppKey, {
565
569
  wsHost,
566
570
  wsPort,
@@ -605,7 +609,7 @@ var WebSocketServiceImpl = class {
605
609
  }
606
610
  })
607
611
  });
608
- this.echo = new Echo({
612
+ const echoInstance = new Echo({
609
613
  broadcaster: "reverb",
610
614
  key: reverbAppKey,
611
615
  wsHost,
@@ -622,21 +626,32 @@ var WebSocketServiceImpl = class {
622
626
  },
623
627
  client: pusherClient
624
628
  });
629
+ this.echo = echoInstance;
625
630
  logger.info("websocket", "Echo instance created, setting up connection handlers...");
626
631
  return new Promise((resolve, reject) => {
627
- if (!this.echo) {
628
- reject(new Error("Echo not initialized"));
632
+ if (pusherClient.connection.state === "connected") {
633
+ logger.success("websocket", "\u2705 Already connected to Broadcaster");
634
+ writeStatus({ connected: true });
635
+ this.reconnectAttempts = 0;
636
+ this.isManualDisconnect = false;
637
+ resolve();
629
638
  return;
630
639
  }
631
640
  const connectionTimeout = setTimeout(() => {
632
- const state = this.echo?.connector.pusher.connection.state || "unknown";
633
- logger.error("websocket", `Connection timeout after 15s (state: ${state})`);
634
- reject(new Error(`Connection timeout - stuck in state: ${state}`));
635
- }, 15e3);
636
- this.echo.connector.pusher.connection.bind("state_change", (states) => {
637
- logger.info("websocket", `Connection state: ${states.previous} -> ${states.current}`);
641
+ if (this.echo !== echoInstance) return;
642
+ const state = pusherClient.connection.state || "unknown";
643
+ logger.error("websocket", `Connection timeout after 30s (state: ${state})`);
644
+ if (state !== "connected") {
645
+ reject(new Error(`Connection timeout - stuck in state: ${state}`));
646
+ }
647
+ }, 3e4);
648
+ pusherClient.connection.bind("state_change", (states) => {
649
+ if (this.echo === echoInstance) {
650
+ logger.info("websocket", `Connection state: ${states.previous} -> ${states.current}`);
651
+ }
638
652
  });
639
- this.echo.connector.pusher.connection.bind("connected", () => {
653
+ pusherClient.connection.bind("connected", () => {
654
+ if (this.echo !== echoInstance) return;
640
655
  clearTimeout(connectionTimeout);
641
656
  logger.success("websocket", "\u2705 Connected to Broadcaster via Sanctum");
642
657
  writeStatus({ connected: true });
@@ -644,28 +659,34 @@ var WebSocketServiceImpl = class {
644
659
  this.isManualDisconnect = false;
645
660
  resolve();
646
661
  });
647
- this.echo.connector.pusher.connection.bind("error", (error) => {
662
+ pusherClient.connection.bind("error", (error) => {
663
+ if (this.echo !== echoInstance) return;
648
664
  clearTimeout(connectionTimeout);
649
665
  const errorMessage = error instanceof Error ? error.message : JSON.stringify(error) || "Unknown connection error";
650
666
  logger.error("websocket", `WebSocket error: ${errorMessage}`);
651
- if (error?.data?.code === 1006) {
667
+ if (error && typeof error === "object" && "data" in error && error.data?.code === 1006) {
652
668
  logger.warn("websocket", "Detected abnormal closure (1006), ensuring reconnection...");
653
669
  this.handleDisconnect();
654
670
  }
655
- reject(new Error(errorMessage));
671
+ if (pusherClient.connection.state === "failed") {
672
+ reject(new Error(errorMessage));
673
+ }
656
674
  });
657
- this.echo.connector.pusher.connection.bind("disconnected", () => {
675
+ pusherClient.connection.bind("disconnected", () => {
676
+ if (this.echo !== echoInstance) return;
658
677
  logger.warn("websocket", "WebSocket disconnected");
659
678
  writeStatus({ connected: false });
660
679
  this.handleDisconnect();
661
680
  });
662
- this.echo.connector.pusher.connection.bind("failed", () => {
681
+ pusherClient.connection.bind("failed", () => {
682
+ if (this.echo !== echoInstance) return;
663
683
  clearTimeout(connectionTimeout);
664
684
  logger.error("websocket", "WebSocket connection failed");
665
685
  this.handleDisconnect();
666
686
  reject(new Error("WebSocket connection failed"));
667
687
  });
668
- this.echo.connector.pusher.connection.bind("unavailable", () => {
688
+ pusherClient.connection.bind("unavailable", () => {
689
+ if (this.echo !== echoInstance) return;
669
690
  logger.warn("websocket", "WebSocket connection unavailable, attempting auto-reconnect");
670
691
  writeStatus({ connected: false });
671
692
  });
@@ -726,7 +747,7 @@ var WebSocketServiceImpl = class {
726
747
  if (commit.has_large_files) {
727
748
  try {
728
749
  logger.info("websocket", `Commit ${commit.id} marked as large, fetching full details...`);
729
- const { apiService: apiService2 } = await import("./api-DIM62R5R.js");
750
+ const { apiService: apiService2 } = await import("./api-MEUGSQYO.js");
730
751
  const fullCommit = await apiService2.getCommit(commit.id);
731
752
  commit = {
732
753
  ...commit,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  config,
3
3
  logger
4
- } from "./chunk-OX2GO7KX.js";
4
+ } from "./chunk-RHWE22KH.js";
5
5
 
6
6
  // src/services/git.ts
7
7
  import simpleGit from "simple-git";
@@ -308,7 +308,7 @@ var AuthServiceImpl = class {
308
308
  return null;
309
309
  }
310
310
  try {
311
- const { apiService } = await import("./api-DIM62R5R.js");
311
+ const { apiService } = await import("./api-MEUGSQYO.js");
312
312
  const user = await apiService.getCurrentUser();
313
313
  logger.info("auth", `Token validated for user: ${user.email}`);
314
314
  return user;
@@ -2,7 +2,7 @@ import {
2
2
  authService,
3
3
  config,
4
4
  logger
5
- } from "./chunk-OX2GO7KX.js";
5
+ } from "./chunk-RHWE22KH.js";
6
6
 
7
7
  // src/utils/circuit-breaker.ts
8
8
  var CircuitBreaker = class {
@@ -98,7 +98,7 @@ var CircuitBreaker = class {
98
98
  };
99
99
 
100
100
  // src/services/api.ts
101
- var AGENT_VERSION = "1.2.27";
101
+ var AGENT_VERSION = "1.2.28";
102
102
  var ApiServiceImpl = class {
103
103
  sessionId = null;
104
104
  circuitBreaker = new CircuitBreaker({
@@ -3,20 +3,20 @@ import {
3
3
  commitQueue,
4
4
  notify,
5
5
  websocketService
6
- } from "../chunk-WBVNPUXR.js";
6
+ } from "../chunk-GLD7IU2F.js";
7
7
  import {
8
8
  apiService
9
- } from "../chunk-JIYLLUF7.js";
9
+ } from "../chunk-UJBUIRQZ.js";
10
10
  import {
11
11
  gitService,
12
12
  projectService,
13
13
  removePidFile,
14
14
  writePidFile
15
- } from "../chunk-TKPLAYYZ.js";
15
+ } from "../chunk-JIRQHCFR.js";
16
16
  import {
17
17
  authService,
18
18
  logger
19
- } from "../chunk-OX2GO7KX.js";
19
+ } from "../chunk-RHWE22KH.js";
20
20
 
21
21
  // src/daemon/runner.ts
22
22
  import "dotenv/config";
package/dist/index.js CHANGED
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  commitQueue,
4
4
  websocketService
5
- } from "./chunk-WBVNPUXR.js";
5
+ } from "./chunk-GLD7IU2F.js";
6
6
  import {
7
7
  apiService
8
- } from "./chunk-JIYLLUF7.js";
8
+ } from "./chunk-UJBUIRQZ.js";
9
9
  import {
10
10
  getPidFilePath,
11
11
  gitService,
@@ -14,14 +14,14 @@ import {
14
14
  projectService,
15
15
  spawnDetached,
16
16
  validatePidFile
17
- } from "./chunk-TKPLAYYZ.js";
17
+ } from "./chunk-JIRQHCFR.js";
18
18
  import {
19
19
  __commonJS,
20
20
  __toESM,
21
21
  authService,
22
22
  config,
23
23
  logger
24
- } from "./chunk-OX2GO7KX.js";
24
+ } from "./chunk-RHWE22KH.js";
25
25
 
26
26
  // node_modules/semver/internal/constants.js
27
27
  var require_constants = __commonJS({
@@ -2552,7 +2552,7 @@ function registerStatusCommand(program2) {
2552
2552
  try {
2553
2553
  const { render } = await import("ink");
2554
2554
  const { createElement } = await import("react");
2555
- const { StatusDashboard } = await import("./StatusDashboard-RG4NAR2B.js");
2555
+ const { StatusDashboard } = await import("./StatusDashboard-BV7RHIIH.js");
2556
2556
  render(createElement(StatusDashboard, { cwd }));
2557
2557
  return;
2558
2558
  } catch (error) {
@@ -4356,7 +4356,7 @@ ${chalk14.bold("Config file:")} ${chalk14.cyan(configPath)}
4356
4356
  }
4357
4357
 
4358
4358
  // src/index.ts
4359
- var AGENT_VERSION = "1.2.27";
4359
+ var AGENT_VERSION = "1.2.28";
4360
4360
  var program = new Command();
4361
4361
  program.name("stint").description("Stint Agent - Local daemon for Stint Project Assistant").version(AGENT_VERSION, "-v, --version", "output the current version").addHelpText("after", `
4362
4362
  ${chalk15.bold("Examples:")}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gowelle/stint-agent",
3
- "version": "1.2.27",
3
+ "version": "1.2.28",
4
4
  "description": "Local agent for Stint - Project Assistant",
5
5
  "author": "Gowelle John <gowelle.john@icloud.com>",
6
6
  "license": "MIT",
@@ -1,7 +0,0 @@
1
- import {
2
- apiService
3
- } from "./chunk-JIYLLUF7.js";
4
- import "./chunk-OX2GO7KX.js";
5
- export {
6
- apiService
7
- };