@rallycry/conveyor-mcp 5.0.2 → 5.0.4

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.
@@ -1,3 +1,4 @@
1
+ import { io, Socket } from 'socket.io-client';
1
2
  import { ListDriveFilesResponse, ReadDriveFileResponse, DriveFileDTO, DeleteDriveFileResponse, ProjectIntegrationsSummary, GaAnalyticsSummaryDTO, ProjectChannelDTO, ReadChannelMessagesResponse, PostChannelMessageResponse, ListMeetingsResponse, MeetingForAgent, ReadMeetingTranscriptResponse, MeetingChecklistItemForAgent } from '@project/shared';
2
3
 
3
4
  interface ConveyorMcpConfig {
@@ -310,12 +311,20 @@ interface PrioritySummary {
310
311
  color: string;
311
312
  description?: string | null;
312
313
  }
314
+ /**
315
+ * Creates the underlying socket. Defaults to socket.io's `io`; tests inject a
316
+ * fake so the reconnect wiring in `connect()` can be driven without a server.
317
+ */
318
+ type ConveyorSocketFactory = (url: string, options: Parameters<typeof io>[1]) => Pick<Socket, "on" | "emit" | "close" | "connect" | "disconnect">;
313
319
  declare class ConveyorConnection {
314
320
  private socket;
315
321
  private config;
322
+ private socketFactory;
316
323
  /** project slug → id, for resolving `<project>/<card>` card paths. */
317
324
  private projectSlugIds;
318
- constructor(config: ConveyorMcpConfig);
325
+ /** Session rooms this connection has joined, replayed after every reconnect. */
326
+ private subscribedSessionIds;
327
+ constructor(config: ConveyorMcpConfig, socketFactory?: ConveyorSocketFactory);
319
328
  get projectId(): string;
320
329
  private resolveProjectId;
321
330
  /** The configured default board (CONVEYOR_SUBPROJECT_ID), if any. */
@@ -329,6 +338,16 @@ declare class ConveyorConnection {
329
338
  */
330
339
  private resolveSubProjectId;
331
340
  private normalizeProjectList;
341
+ /**
342
+ * Re-join every room this connection needs.
343
+ *
344
+ * Runs on the FIRST connect and on every reconnect. A socket.io reconnect
345
+ * starts a fresh server-side socket that belongs to no rooms, and Cloud Run
346
+ * cuts each websocket at its 60-minute request limit, so a subscribe sent
347
+ * only once left long-lived MCP connections silently outside the project room
348
+ * for the rest of the day.
349
+ */
350
+ private rejoinRooms;
332
351
  connect(): Promise<void>;
333
352
  private call;
334
353
  /**
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
- export { A as ActivePtySession, d as ConveyorConnection, e as ConveyorMcpConfig, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-B7CwszOV.js';
1
+ export { A as ActivePtySession, d as ConveyorConnection, e as ConveyorMcpConfig, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-jZ8nSRwk.js';
2
2
  export { AttachTunnelOptions, ResolvedPtySession, RunTunnelOptions, TunnelConnection, TunnelHandle, TunnelSession, TunnelTty, WaitForPtySessionOptions, attachTunnel, runTunnel, waitForPtySession } from './tunnel.js';
3
+ import 'socket.io-client';
3
4
  import '@project/shared';
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-HIVOGGE3.js";
6
6
  import {
7
7
  ConveyorConnection
8
- } from "./chunk-XLDG5QEX.js";
8
+ } from "./chunk-EUCQ26F7.js";
9
9
  export {
10
10
  ConveyorConnection,
11
11
  attachTunnel,
@@ -2,9 +2,12 @@
2
2
  import {
3
3
  runTunnel
4
4
  } from "./chunk-HIVOGGE3.js";
5
+ import {
6
+ watchForClientExit
7
+ } from "./chunk-5KU3QS6A.js";
5
8
  import {
6
9
  ConveyorConnection
7
- } from "./chunk-XLDG5QEX.js";
10
+ } from "./chunk-EUCQ26F7.js";
8
11
 
9
12
  // src/tunnel-cli.ts
10
13
  var HELP = `conveyor-tunnel \u2014 attach your local terminal to a cloud Claude Code session.
@@ -125,8 +128,7 @@ function cleanupAndExit(code) {
125
128
  conn.disconnect();
126
129
  process.exit(code);
127
130
  }
128
- process.on("SIGINT", () => cleanupAndExit(0));
129
- process.on("SIGTERM", () => cleanupAndExit(0));
131
+ watchForClientExit(() => cleanupAndExit(0), { watchStdin: false });
130
132
  try {
131
133
  await conn.connect();
132
134
  log("Connected to Conveyor API.");
package/dist/tunnel.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { A as ActivePtySession, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-B7CwszOV.js';
1
+ import { A as ActivePtySession, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-jZ8nSRwk.js';
2
+ import 'socket.io-client';
2
3
  import '@project/shared';
3
4
 
4
5
  /**
package/dist/wait-cli.js CHANGED
@@ -1,7 +1,10 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ watchForClientExit
4
+ } from "./chunk-5KU3QS6A.js";
2
5
  import {
3
6
  ConveyorConnection
4
- } from "./chunk-XLDG5QEX.js";
7
+ } from "./chunk-EUCQ26F7.js";
5
8
  import {
6
9
  runWait
7
10
  } from "./chunk-OPZL4NDT.js";
@@ -257,8 +260,7 @@ function interrupt() {
257
260
  exiting = true;
258
261
  emitResult({ reason: "interrupted" }, () => shutdown(0));
259
262
  }
260
- process.on("SIGINT", interrupt);
261
- process.on("SIGTERM", interrupt);
263
+ watchForClientExit(interrupt, { resumeStdin: true });
262
264
  try {
263
265
  await conn.connect();
264
266
  } catch (err) {
@@ -1,5 +1,6 @@
1
- import { C as CardCollectionPage, a as CardCollectionDelta } from './connection-B7CwszOV.js';
1
+ import { C as CardCollectionPage, a as CardCollectionDelta } from './connection-jZ8nSRwk.js';
2
2
  import { WaitFilter, WaitResult } from './wait.js';
3
+ import 'socket.io-client';
3
4
  import '@project/shared';
4
5
 
5
6
  /**
package/dist/wait.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { b as CardCollectionItem } from './connection-B7CwszOV.js';
1
+ import { b as CardCollectionItem } from './connection-jZ8nSRwk.js';
2
+ import 'socket.io-client';
2
3
  import '@project/shared';
3
4
 
4
5
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rallycry/conveyor-mcp",
3
- "version": "5.0.2",
3
+ "version": "5.0.4",
4
4
  "description": "Conveyor MCP server for Claude Code PM integration",
5
5
  "keywords": [
6
6
  "claude",