@schoolai/shipyard-mcp 0.1.3-next.458 → 0.1.3-next.464

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.
@@ -28494,7 +28494,7 @@ init_cjs_shims();
28494
28494
  // ../../packages/schema/dist/index.mjs
28495
28495
  init_cjs_shims();
28496
28496
 
28497
- // ../../packages/schema/dist/yjs-helpers-B435ND5d.mjs
28497
+ // ../../packages/schema/dist/yjs-helpers-CFQmkNYl.mjs
28498
28498
  init_cjs_shims();
28499
28499
 
28500
28500
  // ../../packages/schema/dist/plan.mjs
@@ -42665,7 +42665,7 @@ var PRReviewCommentSchema = external_exports.object({
42665
42665
  resolved: external_exports.boolean().optional()
42666
42666
  });
42667
42667
 
42668
- // ../../packages/schema/dist/yjs-helpers-B435ND5d.mjs
42668
+ // ../../packages/schema/dist/yjs-helpers-CFQmkNYl.mjs
42669
42669
  function assertNever2(value) {
42670
42670
  throw new Error(`Unhandled discriminated union member: ${JSON.stringify(value)}`);
42671
42671
  }
@@ -42770,7 +42770,7 @@ var InputRequestBaseSchema = external_exports.object({
42770
42770
  message: external_exports.string().min(1, "Message cannot be empty"),
42771
42771
  status: external_exports.enum(InputRequestStatusValues),
42772
42772
  defaultValue: external_exports.string().optional(),
42773
- timeout: external_exports.number().int().min(10, "Timeout must be at least 10 seconds").max(900, "Timeout cannot exceed 15 minutes").optional(),
42773
+ timeout: external_exports.number().int().min(10, "Timeout must be at least 10 seconds").max(14400, "Timeout cannot exceed 4 hours").optional(),
42774
42774
  planId: external_exports.string().optional(),
42775
42775
  response: external_exports.unknown().optional(),
42776
42776
  answeredAt: external_exports.number().optional(),
@@ -863,7 +863,7 @@ function createHandedOffConversationVersion(params) {
863
863
  return ConversationVersionSchema.parse(version);
864
864
  }
865
865
 
866
- // ../../packages/schema/dist/yjs-helpers-B435ND5d.mjs
866
+ // ../../packages/schema/dist/yjs-helpers-CFQmkNYl.mjs
867
867
  import { z as z2 } from "zod";
868
868
  import { nanoid as nanoid2 } from "nanoid";
869
869
  import * as Y from "yjs";
@@ -959,7 +959,7 @@ var CreateSubscriptionRequestSchema = z2.object({
959
959
  threshold: z2.number().positive().optional()
960
960
  });
961
961
  var CreateSubscriptionResponseSchema = z2.object({ clientId: z2.string() });
962
- var DEFAULT_INPUT_REQUEST_TIMEOUT_SECONDS = 300;
962
+ var DEFAULT_INPUT_REQUEST_TIMEOUT_SECONDS = 1800;
963
963
  var InputRequestTypeValues = [
964
964
  "text",
965
965
  "multiline",
@@ -978,7 +978,7 @@ var InputRequestBaseSchema = z2.object({
978
978
  message: z2.string().min(1, "Message cannot be empty"),
979
979
  status: z2.enum(InputRequestStatusValues),
980
980
  defaultValue: z2.string().optional(),
981
- timeout: z2.number().int().min(10, "Timeout must be at least 10 seconds").max(900, "Timeout cannot exceed 15 minutes").optional(),
981
+ timeout: z2.number().int().min(10, "Timeout must be at least 10 seconds").max(14400, "Timeout cannot exceed 4 hours").optional(),
982
982
  planId: z2.string().optional(),
983
983
  response: z2.unknown().optional(),
984
984
  answeredAt: z2.number().optional(),
@@ -3,7 +3,7 @@ import {
3
3
  YDOC_KEYS,
4
4
  createInputRequest,
5
5
  logPlanEvent
6
- } from "./chunk-4BEPSPPL.js";
6
+ } from "./chunk-75NZRAN5.js";
7
7
  import {
8
8
  logger
9
9
  } from "./chunk-GSGLHRWX.js";
@@ -203,7 +203,7 @@ import {
203
203
  updateLinkedPRStatus,
204
204
  updatePlanIndexViewedBy,
205
205
  validateA2AMessages
206
- } from "./chunk-4BEPSPPL.js";
206
+ } from "./chunk-75NZRAN5.js";
207
207
  import "./chunk-JSBRDJBE.js";
208
208
  export {
209
209
  A2ADataPartSchema,
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-EBNL5ZX7.js";
20
20
  import {
21
21
  InputRequestManager
22
- } from "./chunk-FTOVV4YW.js";
22
+ } from "./chunk-MZTJGBLT.js";
23
23
  import {
24
24
  ArtifactSchema,
25
25
  DeliverableSchema,
@@ -68,7 +68,7 @@ import {
68
68
  setPlanMetadata,
69
69
  touchPlanIndexEntry,
70
70
  transitionPlanStatus
71
- } from "./chunk-4BEPSPPL.js";
71
+ } from "./chunk-75NZRAN5.js";
72
72
  import {
73
73
  loadEnv,
74
74
  logger
@@ -2477,7 +2477,7 @@ import { z as z12 } from "zod";
2477
2477
 
2478
2478
  // src/tools/add-artifact.ts
2479
2479
  import { execSync } from "child_process";
2480
- import { readFile as readFile3 } from "fs/promises";
2480
+ import { readFile as readFile3, writeFile as writeFile4 } from "fs/promises";
2481
2481
  import { ServerBlockNoteEditor as ServerBlockNoteEditor2 } from "@blocknote/server-util";
2482
2482
  import { nanoid as nanoid4 } from "nanoid";
2483
2483
  import { z as z3 } from "zod";
@@ -2909,6 +2909,14 @@ Linked to deliverable: ${input.deliverableId}` : "";
2909
2909
  logger.warn({ planId }, "Cannot update plan index: missing ownerId");
2910
2910
  }
2911
2911
  logger.info({ planId, snapshotUrl }, "Task auto-completed");
2912
+ const { homedir: homedir5 } = await import("os");
2913
+ const { join: join6 } = await import("path");
2914
+ const { mkdir: mkdir3 } = await import("fs/promises");
2915
+ const snapshotsDir = join6(homedir5(), ".shipyard", "snapshots");
2916
+ await mkdir3(snapshotsDir, { recursive: true });
2917
+ const snapshotFile = join6(snapshotsDir, `${planId}.txt`);
2918
+ await writeFile4(snapshotFile, snapshotUrl, "utf-8");
2919
+ logger.info({ planId, snapshotFile }, "Snapshot URL written to file");
2912
2920
  let prText = "";
2913
2921
  if (linkedPR) {
2914
2922
  prText = `
@@ -2932,13 +2940,15 @@ Type: ${type}
2932
2940
  Filename: ${filename}
2933
2941
  URL: ${artifactUrl}${linkedText}
2934
2942
 
2935
- \u{1F389} ALL DELIVERABLES COMPLETE! Task auto-completed.
2943
+ \u{1F389} ALL DELIVERABLES COMPLETE! Task auto-completed.${prText}
2936
2944
 
2937
- Snapshot URL: ${snapshotUrl}${prText}
2938
-
2939
- Embed this snapshot URL in your PR description as proof of completed work.`
2945
+ Snapshot URL saved to: ${snapshotFile}
2946
+ (Note: Very long URL - recommend not reading directly. Use file path to attach to PR or access later.)`
2940
2947
  }
2941
- ]
2948
+ ],
2949
+ // Keep structured data for execute_code wrapper
2950
+ snapshotUrl,
2951
+ allDeliverablesComplete: true
2942
2952
  };
2943
2953
  }
2944
2954
  const statusText = statusChanged ? "\nStatus: draft \u2192 in_progress (auto-updated)" : "";
@@ -4800,7 +4810,7 @@ Parameters:
4800
4810
  - options (string[], optional): For 'choice' type - available options (required for choice)
4801
4811
  - multiSelect (boolean, optional): For 'choice' type - allow selecting multiple options (uses checkboxes instead of radio buttons)
4802
4812
  - defaultValue (string, optional): Pre-filled value for text/multiline inputs
4803
- - timeout (number, optional): Timeout in seconds (default: 300, min: 10, max: 600)
4813
+ - timeout (number, optional): Timeout in seconds (default: 1800, min: 10, max: 14400)
4804
4814
  - planId (string, optional): Optional metadata to link request to plan (for activity log filtering)
4805
4815
 
4806
4816
  Returns:
@@ -5075,7 +5085,7 @@ async function setupReviewNotification(planId, pollIntervalSeconds) {
5075
5085
  return { script, fullResponse: text };
5076
5086
  }
5077
5087
  async function requestUserInput(opts) {
5078
- const { InputRequestManager: InputRequestManager2 } = await import("./input-request-manager-YMNFW4JM.js");
5088
+ const { InputRequestManager: InputRequestManager2 } = await import("./input-request-manager-43QSOJS3.js");
5079
5089
  const ydoc = await getOrCreateDoc3(PLAN_INDEX_DOC_NAME);
5080
5090
  const manager = new InputRequestManager2();
5081
5091
  const params = opts.type === "choice" ? {
@@ -5119,7 +5129,7 @@ async function requestUserInput(opts) {
5119
5129
  };
5120
5130
  }
5121
5131
  async function postActivityUpdate(opts) {
5122
- const { logPlanEvent: logPlanEvent2 } = await import("./dist-FZ4WTJ2H.js");
5132
+ const { logPlanEvent: logPlanEvent2 } = await import("./dist-HIDISXZO.js");
5123
5133
  const { getGitHubUsername: getGitHubUsername2 } = await import("./server-identity-6PHKR2FY.js");
5124
5134
  const { nanoid: nanoid7 } = await import("nanoid");
5125
5135
  const doc = await getOrCreateDoc3(opts.planId);
@@ -5142,7 +5152,7 @@ async function postActivityUpdate(opts) {
5142
5152
  return { success: true, eventId, requestId };
5143
5153
  }
5144
5154
  async function resolveActivityRequest(opts) {
5145
- const { logPlanEvent: logPlanEvent2, getPlanEvents } = await import("./dist-FZ4WTJ2H.js");
5155
+ const { logPlanEvent: logPlanEvent2, getPlanEvents } = await import("./dist-HIDISXZO.js");
5146
5156
  const { getGitHubUsername: getGitHubUsername2 } = await import("./server-identity-6PHKR2FY.js");
5147
5157
  const doc = await getOrCreateDoc3(opts.planId);
5148
5158
  const actorName = await getGitHubUsername2();
@@ -5277,7 +5287,7 @@ var RequestUserInputInput = z13.object({
5277
5287
  options: z13.array(z13.string()).optional().describe("For 'choice' type - available options (required for choice)"),
5278
5288
  multiSelect: z13.boolean().optional().describe("For 'choice' type - allow selecting multiple options"),
5279
5289
  defaultValue: z13.string().optional().describe("Pre-filled value for text/multiline inputs"),
5280
- timeout: z13.number().optional().describe("Timeout in seconds (default: 300, min: 10, max: 900)"),
5290
+ timeout: z13.number().optional().describe("Timeout in seconds (default: 1800, min: 10, max: 14400)"),
5281
5291
  planId: z13.string().optional().describe("Optional metadata to link request to plan (for activity log filtering)")
5282
5292
  });
5283
5293
  var requestUserInputTool = {
@@ -5334,7 +5344,7 @@ NOTE: This is also available as requestUserInput() inside execute_code for multi
5334
5344
  },
5335
5345
  timeout: {
5336
5346
  type: "number",
5337
- description: "Timeout in seconds (default: 300, min: 10, max: 900)"
5347
+ description: "Timeout in seconds (default: 1800, min: 10, max: 14400)"
5338
5348
  },
5339
5349
  planId: {
5340
5350
  type: "string",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  InputRequestManager
3
- } from "./chunk-FTOVV4YW.js";
4
- import "./chunk-4BEPSPPL.js";
3
+ } from "./chunk-MZTJGBLT.js";
4
+ import "./chunk-75NZRAN5.js";
5
5
  import "./chunk-GSGLHRWX.js";
6
6
  import "./chunk-JSBRDJBE.js";
7
7
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schoolai/shipyard-mcp",
3
- "version": "0.1.3-next.458",
3
+ "version": "0.1.3-next.464",
4
4
  "description": "Shipyard MCP server and CLI tools for distributed planning with CRDTs",
5
5
  "type": "module",
6
6
  "bin": {