@exaudeus/workrail 3.24.2 → 3.24.3

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.
@@ -670,12 +670,12 @@
670
670
  "bytes": 6002
671
671
  },
672
672
  "mcp-server.d.ts": {
673
- "sha256": "4ef3c55720fc5deb6fff14a1be5958d9cddd94ce4037af0cb842e3f3ce0cfac0",
674
- "bytes": 295
673
+ "sha256": "01d30540da2d1fbada4da5cb54fc287b13a53940d5cd6e9ccb0fd29fc3a71720",
674
+ "bytes": 409
675
675
  },
676
676
  "mcp-server.js": {
677
- "sha256": "ef9c98e49ea95d556e8e8328ff235d7b631a6ef72d1480c22b9409ae4b1c9b5b",
678
- "bytes": 2687
677
+ "sha256": "1ab44bb05d75fe445fce6ea819c489e93e1d39ffedcd7a80c566e7085a0dd796",
678
+ "bytes": 3577
679
679
  },
680
680
  "mcp/assert-output.d.ts": {
681
681
  "sha256": "f1b821c3652423b15a09d2d1c5a042ee565a503c3d7196bd8220fbe697e0dc75",
@@ -3,3 +3,4 @@ export { startStdioServer } from './mcp/transports/stdio-entry.js';
3
3
  export { startHttpServer } from './mcp/transports/http-entry.js';
4
4
  export { startBridgeServer, detectHealthyPrimary } from './mcp/transports/bridge-entry.js';
5
5
  export { composeServer } from './mcp/server.js';
6
+ export declare function waitForStdinReadable(timeoutMs: number, stdin?: NodeJS.ReadableStream): Promise<boolean>;
@@ -2,6 +2,7 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.composeServer = exports.detectHealthyPrimary = exports.startBridgeServer = exports.startHttpServer = exports.startStdioServer = void 0;
5
+ exports.waitForStdinReadable = waitForStdinReadable;
5
6
  const transport_mode_js_1 = require("./mcp/transports/transport-mode.js");
6
7
  const stdio_entry_js_1 = require("./mcp/transports/stdio-entry.js");
7
8
  const http_entry_js_1 = require("./mcp/transports/http-entry.js");
@@ -17,11 +18,32 @@ Object.defineProperty(exports, "detectHealthyPrimary", { enumerable: true, get:
17
18
  var server_js_1 = require("./mcp/server.js");
18
19
  Object.defineProperty(exports, "composeServer", { enumerable: true, get: function () { return server_js_1.composeServer; } });
19
20
  const DEFAULT_MCP_PORT = 3100;
21
+ const STDIO_CLIENT_PROBE_MS = 150;
22
+ function waitForStdinReadable(timeoutMs, stdin = process.stdin) {
23
+ return new Promise((resolve) => {
24
+ stdin.pause();
25
+ const timer = setTimeout(() => {
26
+ stdin.removeListener('readable', onReadable);
27
+ resolve(false);
28
+ }, timeoutMs);
29
+ const onReadable = () => {
30
+ clearTimeout(timer);
31
+ stdin.removeListener('readable', onReadable);
32
+ resolve(true);
33
+ };
34
+ stdin.once('readable', onReadable);
35
+ });
36
+ }
20
37
  async function main() {
21
38
  const mode = (0, transport_mode_js_1.resolveTransportMode)(process.env);
22
39
  if (mode.kind === 'stdio') {
23
40
  const primaryPort = await (0, bridge_entry_js_1.detectHealthyPrimary)(DEFAULT_MCP_PORT);
24
41
  if (primaryPort != null) {
42
+ const hasClient = await waitForStdinReadable(STDIO_CLIENT_PROBE_MS, process.stdin);
43
+ if (!hasClient) {
44
+ console.error(`[Startup] Primary on :${primaryPort}, no stdio client within ${STDIO_CLIENT_PROBE_MS}ms — exiting`);
45
+ process.exit(0);
46
+ }
25
47
  console.error(`[Startup] Primary detected on :${primaryPort} — starting in bridge mode`);
26
48
  try {
27
49
  await (0, bridge_entry_js_1.startBridgeServer)(primaryPort);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exaudeus/workrail",
3
- "version": "3.24.2",
3
+ "version": "3.24.3",
4
4
  "description": "Step-by-step workflow enforcement for AI agents via MCP",
5
5
  "license": "MIT",
6
6
  "repository": {