@rallycry/conveyor-mcp 5.0.16 → 5.0.17

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.
@@ -394,7 +394,7 @@ var ConveyorConnection = class {
394
394
  });
395
395
  }
396
396
  resumeTask(taskId, projectId) {
397
- return this.callService("cloudBuildService", "wakeCodespace", {
397
+ return this.callService("cloudBuildService", "wakeWorkspace", {
398
398
  taskId,
399
399
  projectId: this.resolveProjectId(projectId)
400
400
  });
@@ -1,4 +1,4 @@
1
- // ../shared/dist/chunk-VSUBG7GR.js
1
+ // ../shared/dist/chunk-SFSQ7NKP.js
2
2
  import { z } from "zod";
3
3
  import { z as z2 } from "zod";
4
4
  var DEFAULT_SONNET_MODEL = "claude-sonnet-5-5";
@@ -1096,7 +1096,7 @@ var listTaskFilesContract = defineToolContract({
1096
1096
  var getAttachmentContract = defineToolContract({
1097
1097
  name: "get_attachment",
1098
1098
  agent: {
1099
- description: "Fetch one task file's content plus metadata by file ID. This is the way to read attachment bytes: a document `downloadUrl` (anything that is not an image or video) answers 404 without a signed-in project member's session, so do not curl or WebFetch it from the pod. Call list_task_files first to discover IDs and check sizes \u2014 large binaries may be truncated by the service's size limit. Pass task_id when the file is attached to another card in this project, such as the pack parent.",
1099
+ description: "Fetch one task file by ID. Text and images under the inline size caps come back inline. Any other file (PDF, Word, Excel, zip, large logs) is saved into this pod, and the result names the local path: open it with the Read tool or Bash. A document downloadUrl answers 404 without a signed-in project member's session, so do not curl or WebFetch it. Call list_task_files first to discover IDs and sizes. Pass task_id when the file is attached to another card in this project, such as the pack parent.",
1100
1100
  fields: {
1101
1101
  fileId: f.string({ desc: "The file ID to retrieve" }),
1102
1102
  task_id: agentTaskIdOrSlug
package/dist/cli.js CHANGED
@@ -81,13 +81,13 @@ import {
81
81
  uploadAttachmentContract,
82
82
  uploadSiteAssetsContract,
83
83
  voteDecisionContract
84
- } from "./chunk-P4WATE3Z.js";
84
+ } from "./chunk-IRVUONC3.js";
85
85
  import {
86
86
  installLifecycle
87
87
  } from "./chunk-5KU3QS6A.js";
88
88
  import {
89
89
  ConveyorConnection
90
- } from "./chunk-E43OFCNP.js";
90
+ } from "./chunk-6JLKJUYV.js";
91
91
 
92
92
  // src/cli.ts
93
93
  import { createRequire } from "module";
@@ -119,7 +119,7 @@ function registerProjectTools(server2, conn2) {
119
119
  );
120
120
  server2.tool(
121
121
  "get_onboarding_status",
122
- "Get the project's onboarding/setup readiness checklist so you can drive setup to green without the user opening Project Settings. Returns { ok, checks[] } where each check has a key (githubApp, githubOauthScopes, claudeToken, devcontainer, devBranch, anthropicKey, compute, codespaceQuota), a status (ok | warn | fail), a human-readable reason, and an optional fix hint. Call this first during onboarding, resolve every 'fail' (use gh/gcloud CLIs or point the user at the fix), then call again until ok is true. Pass projectId to target a specific project; otherwise the configured default project is used.",
122
+ "Get the project's onboarding/setup readiness checklist so you can drive setup to green without the user opening Project Settings. Returns { ok, checks[] } where each check has a key (githubApp, githubOauthScopes, codingAgentCredential, devBranch, anthropicKey, compute), a status (ok | warn | fail), a human-readable reason, and an optional fix hint. Call this first during onboarding, resolve every 'fail' (use gh/gcloud CLIs or point the user at the fix), then call again until ok is true. Pass projectId to target a specific project; otherwise the configured default project is used.",
123
123
  {
124
124
  projectId: z.string().optional().describe("Target Conveyor project ID")
125
125
  },
@@ -536,7 +536,7 @@ function formatTaskSessionState(t, limit = 20) {
536
536
  }
537
537
  }
538
538
  if (t.workspaces.length === 0) {
539
- lines.push(" (no v3 workspaces)");
539
+ lines.push(" (no workspaces)");
540
540
  } else {
541
541
  const { kept, omitted } = latestByCreatedAt(t.workspaces, limit);
542
542
  lines.push(...kept.flatMap(formatWorkspace));
@@ -770,7 +770,7 @@ function registerGetTaskCli(server2, conn2) {
770
770
  function registerGetTaskSessions(server2, conn2) {
771
771
  server2.tool(
772
772
  "get_task_sessions",
773
- "Read compute-session state for a task: legacy CodespaceSession rows plus v3 workspaces, including purpose=review review workspaces. Shows pod identity, liveness, lifecycle, and code-review claim state. Use to diagnose stalled/dead agents or code-review runs. Pass projectId to target a specific project; otherwise the configured default project is used.",
773
+ "Read compute-session state for a task: workspace sessions and workspaces, including purpose=review review workspaces. Shows pod identity, liveness, lifecycle, and code-review claim state. Use to diagnose stalled/dead agents or code-review runs. Pass projectId to target a specific project; otherwise the configured default project is used.",
774
774
  {
775
775
  projectId: z5.string().optional().describe("Target Conveyor project ID"),
776
776
  taskId: z5.string().describe("The task ID or slug"),
@@ -958,7 +958,7 @@ function registerTaskLifecycleTools(server2, conn2) {
958
958
  function registerBuildTools(server2, conn2) {
959
959
  server2.tool(
960
960
  "start_task",
961
- "Start a cloud build (codespace) for a task. Pass projectId to target a specific project; otherwise the configured default project is used.",
961
+ "Start a cloud build for a task. Pass projectId to target a specific project; otherwise the configured default project is used.",
962
962
  {
963
963
  projectId: z6.string().optional().describe("Target Conveyor project ID"),
964
964
  taskId: z6.string().describe("The task ID")
@@ -997,7 +997,7 @@ function registerBuildTools(server2, conn2) {
997
997
  );
998
998
  server2.tool(
999
999
  "get_build_status",
1000
- "Check codespace and agent status for a task. Pass projectId to target a specific project; otherwise the configured default project is used.",
1000
+ "Check environment and agent status for a task. Pass projectId to target a specific project; otherwise the configured default project is used.",
1001
1001
  {
1002
1002
  projectId: z6.string().optional().describe("Target Conveyor project ID"),
1003
1003
  taskId: z6.string().describe("The task ID")
@@ -1767,7 +1767,9 @@ var GetTaskFilesRequestSchema = z52.object({
1767
1767
  var GetTaskFileRequestSchema = z52.object({
1768
1768
  sessionId: z52.string(),
1769
1769
  fileId: z52.string(),
1770
- taskId: z52.string().optional()
1770
+ taskId: z52.string().optional(),
1771
+ /** Ask for a short-lived `agentDownloadUrl` when the bytes are not inlined. */
1772
+ agentDownload: z52.boolean().optional()
1771
1773
  });
1772
1774
  var DeleteTaskFileRequestSchema = z52.object({
1773
1775
  sessionId: z52.string(),
@@ -1907,10 +1909,6 @@ var ReportDiscoveredPortsRequestSchema = z52.object({
1907
1909
  sessionId: z52.string(),
1908
1910
  ports: z52.array(DiscoveredPortSchema).max(64)
1909
1911
  });
1910
- var ReportBootMilestoneRequestSchema = z52.object({
1911
- sessionId: z52.string(),
1912
- key: z52.string().max(64)
1913
- });
1914
1912
  var CreateSubtaskRequestSchema = z52.object({
1915
1913
  sessionId: z52.string(),
1916
1914
  title: z52.string().min(1),
@@ -3395,6 +3393,8 @@ var ANTHROPIC_CATALOG = [
3395
3393
  anthropicEntry(DEFAULT_HAIKU_MODEL, "Haiku 4.5", 1, 5, { supportsEffort: false }),
3396
3394
  anthropicEntry(FABLE_MODEL, "Fable 5.1", 10, 50)
3397
3395
  ];
3396
+ var PROJECT_ARCHIVE_RETENTION_DAYS = 30;
3397
+ var RETENTION_MS = PROJECT_ARCHIVE_RETENTION_DAYS * 24 * 60 * 60 * 1e3;
3398
3398
  var CLAUDESPACE_WORKLOAD_LABEL = "rc-workload";
3399
3399
  var CLAUDESPACE_WORKLOAD_VALUE = "claudespace";
3400
3400
  var CONVEYOR_POD_SELECTOR = `${CLAUDESPACE_WORKLOAD_LABEL}=${CLAUDESPACE_WORKLOAD_VALUE}`;
@@ -3994,7 +3994,7 @@ function registerStartTunnelTool(server2, conn2, startTunnel) {
3994
3994
  const info = await conn2.getWorkspaceAttachInfo(taskId, sshPublicKey);
3995
3995
  if (!info.tunnelUrl || !info.attachToken) {
3996
3996
  throw new Error(
3997
- "Workspace tunnels are unavailable for this task (GitHub Codespace-backed environments expose previews only \u2014 use workspace_preview_urls)."
3997
+ "Workspace tunnels are unavailable for this task \u2014 it has no live workspace tunnel. Use workspace_preview_urls for previews."
3998
3998
  );
3999
3999
  }
4000
4000
  const remotePort = port ?? info.ssh?.remotePort ?? 2222;
@@ -164,9 +164,6 @@ interface WorkspaceAttachInfo {
164
164
  taskId: string;
165
165
  sessionId: string;
166
166
  workspaceRoot: string;
167
- /** "codespace" means preview-only — GitHub owns the VM's forwarded ports, so
168
- * `tunnelUrl`/`attachToken`/`ssh` are null/absent. Older servers omit it. */
169
- backend?: "gke" | "codespace";
170
167
  tunnelUrl: string | null;
171
168
  attachToken: string | null;
172
169
  expiresAt: string;
@@ -533,7 +530,8 @@ declare class ConveyorConnection {
533
530
  }>;
534
531
  sleepTask(taskId: string, projectId?: string): Promise<{
535
532
  taskId: string;
536
- codespaceStatus: string;
533
+ codespaceStatus?: string;
534
+ workspaceStatus?: string;
537
535
  }>;
538
536
  resumeTask(taskId: string, projectId?: string): Promise<{
539
537
  status: string;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ActivePtySession, d as ConveyorConnection, e as ConveyorMcpConfig, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-aXGLRE5V.js';
1
+ export { A as ActivePtySession, d as ConveyorConnection, e as ConveyorMcpConfig, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-Ctg-QM1s.js';
2
2
  export { AttachTunnelOptions, ResolvedPtySession, RunTunnelOptions, TunnelConnection, TunnelHandle, TunnelSession, TunnelTty, WaitForPtySessionOptions, attachTunnel, runTunnel, waitForPtySession } from './tunnel.js';
3
3
  import 'socket.io-client';
4
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-E43OFCNP.js";
8
+ } from "./chunk-6JLKJUYV.js";
9
9
  export {
10
10
  ConveyorConnection,
11
11
  attachTunnel,
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  transferSiteAsset
4
- } from "./chunk-P4WATE3Z.js";
4
+ } from "./chunk-IRVUONC3.js";
5
5
  import {
6
6
  ConveyorConnection
7
- } from "./chunk-E43OFCNP.js";
7
+ } from "./chunk-6JLKJUYV.js";
8
8
 
9
9
  // src/site-assets-cli.ts
10
10
  import crypto from "crypto";
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-5KU3QS6A.js";
8
8
  import {
9
9
  ConveyorConnection
10
- } from "./chunk-E43OFCNP.js";
10
+ } from "./chunk-6JLKJUYV.js";
11
11
 
12
12
  // src/tunnel-cli.ts
13
13
  var HELP = `conveyor-tunnel \u2014 attach your local terminal to a cloud Claude Code session.
package/dist/tunnel.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as ActivePtySession, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-aXGLRE5V.js';
1
+ import { A as ActivePtySession, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-Ctg-QM1s.js';
2
2
  import 'socket.io-client';
3
3
  import '@project/shared';
4
4
 
package/dist/wait-cli.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-5KU3QS6A.js";
5
5
  import {
6
6
  ConveyorConnection
7
- } from "./chunk-E43OFCNP.js";
7
+ } from "./chunk-6JLKJUYV.js";
8
8
  import {
9
9
  runWait
10
10
  } from "./chunk-OPZL4NDT.js";
@@ -1,4 +1,4 @@
1
- import { C as CardCollectionPage, a as CardCollectionDelta } from './connection-aXGLRE5V.js';
1
+ import { C as CardCollectionPage, a as CardCollectionDelta } from './connection-Ctg-QM1s.js';
2
2
  import { WaitFilter, WaitResult } from './wait.js';
3
3
  import 'socket.io-client';
4
4
  import '@project/shared';
package/dist/wait.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { b as CardCollectionItem } from './connection-aXGLRE5V.js';
1
+ import { b as CardCollectionItem } from './connection-Ctg-QM1s.js';
2
2
  import 'socket.io-client';
3
3
  import '@project/shared';
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rallycry/conveyor-mcp",
3
- "version": "5.0.16",
3
+ "version": "5.0.17",
4
4
  "description": "Conveyor MCP server for Claude Code PM integration",
5
5
  "keywords": [
6
6
  "claude",
@@ -36,7 +36,7 @@
36
36
  "test:unit": "vitest run --passWithNoTests"
37
37
  },
38
38
  "dependencies": {
39
- "@modelcontextprotocol/sdk": "^1.30.1",
39
+ "@modelcontextprotocol/sdk": "^1.32.1",
40
40
  "socket.io-client": "^4.8.4",
41
41
  "ws": "8.22.0",
42
42
  "zod": "^4.6.5"