@rallycry/conveyor-mcp 5.0.11 → 5.0.13

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.
package/dist/cli.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-5KU3QS6A.js";
5
5
  import {
6
6
  ConveyorConnection
7
- } from "./chunk-UOLE5JY2.js";
7
+ } from "./chunk-CRHA7PSA.js";
8
8
 
9
9
  // src/cli.ts
10
10
  import { createRequire } from "module";
@@ -12,7 +12,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
12
12
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
13
13
 
14
14
  // src/tools/project.ts
15
- import { z } from "zod";
15
+ import { z } from "zod/v3";
16
16
  function registerProjectTools(server2, conn2) {
17
17
  server2.tool(
18
18
  "list_projects",
@@ -70,16 +70,16 @@ function registerProjectTools(server2, conn2) {
70
70
  }
71
71
 
72
72
  // src/tools/connection.ts
73
- import { z as z4 } from "zod";
73
+ import { z as z4 } from "zod/v3";
74
74
 
75
- // ../shared/dist/chunk-3D2OVVIS.js
75
+ // ../shared/dist/chunk-BH4SLNGU.js
76
76
  import { z as z2 } from "zod";
77
77
  import { z as z22 } from "zod";
78
- var DEFAULT_SONNET_MODEL = "claude-sonnet-5";
78
+ var DEFAULT_SONNET_MODEL = "claude-sonnet-5-5";
79
79
  var DEFAULT_OPUS_MODEL = "claude-opus-5-5";
80
80
  var DEFAULT_HAIKU_MODEL = "claude-haiku-4-5-20251001";
81
81
  var FABLE_MODEL = "claude-fable-5-1";
82
- var PREVIOUS_SONNET_MODEL = "claude-sonnet-4-6";
82
+ var PREVIOUS_SONNET_MODEL = "claude-sonnet-5";
83
83
  var PREVIOUS_OPUS_MODEL = "claude-opus-5";
84
84
  function formatModelId(provider, model) {
85
85
  return `${provider}/${model}`;
@@ -322,14 +322,14 @@ var f = {
322
322
  return { kind: "nullable", inner };
323
323
  }
324
324
  };
325
- function compileString(z14, spec) {
326
- let schema = z14.string();
325
+ function compileString(z16, spec) {
326
+ let schema = z16.string();
327
327
  if (spec.min !== void 0) schema = schema.min(spec.min);
328
328
  if (spec.max !== void 0) schema = schema.max(spec.max);
329
329
  return schema;
330
330
  }
331
- function compileNumber(z14, spec) {
332
- let schema = z14.number();
331
+ function compileNumber(z16, spec) {
332
+ let schema = z16.number();
333
333
  if (spec.int) schema = schema.int();
334
334
  if (spec.positive) schema = schema.positive();
335
335
  if (spec.nonnegative) schema = schema.nonnegative();
@@ -337,50 +337,50 @@ function compileNumber(z14, spec) {
337
337
  if (spec.max !== void 0) schema = schema.max(spec.max);
338
338
  return schema;
339
339
  }
340
- function compileArray(z14, spec) {
341
- let schema = z14.array(compileField(z14, spec.item));
340
+ function compileArray(z16, spec) {
341
+ let schema = z16.array(compileField(z16, spec.item));
342
342
  if (spec.min !== void 0) schema = schema.min(spec.min);
343
343
  if (spec.max !== void 0) schema = schema.max(spec.max);
344
344
  return schema;
345
345
  }
346
- function compileBase(z14, spec) {
346
+ function compileBase(z16, spec) {
347
347
  switch (spec.kind) {
348
348
  case "string":
349
- return compileString(z14, spec);
349
+ return compileString(z16, spec);
350
350
  case "number":
351
- return compileNumber(z14, spec);
351
+ return compileNumber(z16, spec);
352
352
  case "boolean":
353
- return z14.boolean();
353
+ return z16.boolean();
354
354
  case "enum":
355
- return z14.enum([...spec.values]);
355
+ return z16.enum([...spec.values]);
356
356
  case "array":
357
- return compileArray(z14, spec);
357
+ return compileArray(z16, spec);
358
358
  case "object":
359
- return z14.object(compileShape(z14, spec.fields));
359
+ return z16.object(compileShape(z16, spec.fields));
360
360
  }
361
361
  }
362
362
  function descriptionOf(spec) {
363
363
  if (spec.kind === "optional" || spec.kind === "nullable") return descriptionOf(spec.inner);
364
364
  return spec.desc;
365
365
  }
366
- function compileUndescribed(z14, spec) {
366
+ function compileUndescribed(z16, spec) {
367
367
  if (spec.kind === "optional") {
368
- return compileUndescribed(z14, spec.inner).optional();
368
+ return compileUndescribed(z16, spec.inner).optional();
369
369
  }
370
370
  if (spec.kind === "nullable") {
371
- return compileUndescribed(z14, spec.inner).nullable();
371
+ return compileUndescribed(z16, spec.inner).nullable();
372
372
  }
373
- return compileBase(z14, spec);
373
+ return compileBase(z16, spec);
374
374
  }
375
- function compileField(z14, spec) {
376
- const schema = compileUndescribed(z14, spec);
375
+ function compileField(z16, spec) {
376
+ const schema = compileUndescribed(z16, spec);
377
377
  const desc = descriptionOf(spec);
378
378
  return desc === void 0 ? schema : schema.describe(desc);
379
379
  }
380
- function compileShape(z14, fields) {
380
+ function compileShape(z16, fields) {
381
381
  const shape = {};
382
382
  for (const [key, spec] of Object.entries(fields)) {
383
- shape[key] = compileField(z14, spec);
383
+ shape[key] = compileField(z16, spec);
384
384
  }
385
385
  return shape;
386
386
  }
@@ -390,6 +390,7 @@ function defineToolContract(contract) {
390
390
  var mcpProjectId = f.optional(f.string({ desc: "Target Conveyor project ID" }));
391
391
  var cardDescriptionDesc = (lead) => `${lead} \u2014 ${CARD_DESCRIPTION_FIELD_HINT}`;
392
392
  var storyPointValueDesc = "Story point value (1=Common, 2=Magic, 3=Rare, 5=Unique)";
393
+ var priorityValueDesc = "Priority value from manage_priorities list (1 = the project's highest level; seeded defaults are 1=High, 2=Medium, 3=Low)";
393
394
  var getTaskContract = defineToolContract({
394
395
  name: "get_task",
395
396
  agent: {
@@ -623,7 +624,7 @@ var updateTaskContract = defineToolContract({
623
624
  }
624
625
  },
625
626
  mcp: {
626
- description: "Update task fields: title, description, plan, status, risk, story points, assignment, githubBranch, onHold, or tags. Set status to claim a card (InProgress), triage it (Open), or cancel it (Cancelled); for review approvals prefer approve_task / request_changes, which guard against stale-state races. Set onHold to park a card (true) or bring it back to the active board (false) without cancelling it. Tags are additive/subtractive \u2014 pass addTags/removeTags with tag names (not a replace-set). Pass projectId to target a specific project; otherwise the configured default project is used. Moving a task beyond Planning auto-fills any missing icon, story points, and agent assignment \u2014 don't spend turns on them; pass storyPointValue only to correct the sizing yourself. For subtasks use update_subtask.",
627
+ description: "Update task fields: title, description, plan, status, risk, story points, priority, assignment, githubBranch, onHold, or tags. Set status to claim a card (InProgress), triage it (Open), or cancel it (Cancelled); for review approvals prefer approve_task / request_changes, which guard against stale-state races. Set onHold to park a card (true) or bring it back to the active board (false) without cancelling it. Tags are additive/subtractive \u2014 pass addTags/removeTags with tag names (not a replace-set). Pass projectId to target a specific project; otherwise the configured default project is used. Moving a task beyond Planning auto-fills any missing icon, story points, and agent assignment \u2014 don't spend turns on them; pass storyPointValue only to correct the sizing yourself. For subtasks use update_subtask.",
627
628
  fields: {
628
629
  projectId: mcpProjectId,
629
630
  taskId: f.string({ desc: "The task ID" }),
@@ -645,6 +646,13 @@ var updateTaskContract = defineToolContract({
645
646
  })
646
647
  )
647
648
  ),
649
+ priorityValue: f.optional(
650
+ f.nullable(
651
+ f.number({
652
+ desc: `${priorityValueDesc}. The levels are per-project \u2014 a value the project has not configured is rejected. Pass null to clear it.`
653
+ })
654
+ )
655
+ ),
648
656
  assignedUserId: f.optional(f.nullable(f.string({ desc: "User ID to assign, or null" }))),
649
657
  subProjectId: f.optional(
650
658
  f.nullable(
@@ -1106,13 +1114,13 @@ var agentTaskIdOrSlug = f.optional(
1106
1114
  var listTaskFilesContract = defineToolContract({
1107
1115
  name: "list_task_files",
1108
1116
  agent: {
1109
- description: "List all files attached to this task with metadata. Use before fetching a specific file to see what is available and how large each is. For file contents use get_attachment. Pass task_id to list another card's files in this project, for example the pack parent's source documents.",
1117
+ description: "List all files attached to this task with metadata. Showcase files (the card's deliverables, `showcase: true` on each row) list first; a row with `supersedesFileId` is a newer version of that file. Use before fetching a specific file to see what is available and how large each is. For file contents use get_attachment. Pass task_id to list another card's files in this project, for example the pack parent's source documents.",
1110
1118
  fields: {
1111
1119
  task_id: agentTaskIdOrSlug
1112
1120
  }
1113
1121
  },
1114
1122
  mcp: {
1115
- description: "List all files attached to a task with metadata (no contents \u2014 fast and small). Pass projectId to target a specific project; otherwise the configured default project is used. Use before fetching a specific file to see what is available and how large each is. For file contents use get_attachment.",
1123
+ description: "List all files attached to a task with metadata (no contents \u2014 fast and small). Showcase files (the card's deliverables, `showcase: true` on each row) list first; a row with `supersedesFileId` is a newer version of that file. Pass projectId to target a specific project; otherwise the configured default project is used. Use before fetching a specific file to see what is available and how large each is. For file contents use get_attachment.",
1116
1124
  fields: {
1117
1125
  projectId: mcpProjectId,
1118
1126
  taskId: mcpTaskIdOrSlug
@@ -1156,10 +1164,20 @@ var attachmentTags = f.optional(
1156
1164
  desc: `Glossary tag names this file is a relevant example of. MUST be a JSON array of quoted strings, e.g. ["ops-hub", "platform-support"] \u2014 bare unquoted words are invalid JSON and fail the whole call before it is parsed (21 fleet calls in one week died this way). Use it when the file shows a tagged entity in a particular state: the tag's page lists its recent tagged attachments, so a reader can see what the entity looks like across the app and spot visual changes over time. Names are matched case-insensitively within the project; a name that matches no tag is reported back and never fails the upload. Max 5.`
1157
1165
  })
1158
1166
  );
1167
+ var attachmentShowcase = f.optional(
1168
+ f.boolean({
1169
+ desc: "Mark this file as a showcase: the finished result of the card. Showcase files render first with a thumbnail on the card, are what a tag gallery shows, always post to chat, get a long-lived link, are kept past the 90-day purge, and are appended to the PR body under '## Showcase'. Use it for the final capture, not for scoping or before shots."
1170
+ })
1171
+ );
1172
+ var attachmentSupersedes = f.optional(
1173
+ f.string({
1174
+ desc: "File id (from list_task_files) of an older file on this card that this upload replaces, e.g. the previous cut of a video. The old file loses showcase and collapses under the new one as history; the new one inherits its showcase flag and tag labels. Naming a file that already has a newer version replaces the newest one. A bad id never fails the upload \u2014 the reason comes back instead."
1175
+ })
1176
+ );
1159
1177
  var uploadAttachmentContract = defineToolContract({
1160
1178
  name: "upload_attachment",
1161
1179
  agent: {
1162
- description: "Upload a file (doc, notes, data, diagram, screenshot \u2014 any file type, up to 25MB) as a task attachment AND post it to the task chat in one step \u2014 no follow-up post_to_chat call needed. This is how you deliver a file the user should keep: it attaches to the card. Never publish deliverables as an external Claude artifact. Pass `tags` when the file is a good example of a glossary tag in some state.",
1180
+ description: "Upload a file (doc, notes, data, diagram, screenshot \u2014 any file type, up to 25MB) as a task attachment AND post it to the task chat in one step \u2014 no follow-up post_to_chat call needed. This is how you deliver a file the user should keep: it attaches to the card. Never publish deliverables as an external Claude artifact. Pass `showcase: true` for the capture that shows the finished result, `supersedes` with the old file's id when this is a newer version of a file already on the card, and `tags` when the file is a good example of a glossary tag in some state.",
1163
1181
  fields: {
1164
1182
  path: f.string({
1165
1183
  desc: "Path to the file \u2014 absolute, or relative to the workspace root"
@@ -1172,11 +1190,13 @@ var uploadAttachmentContract = defineToolContract({
1172
1190
  desc: "Alias of `title` (the external conveyor-mcp surface names this field `comment`). Provide at most one of the two."
1173
1191
  })
1174
1192
  ),
1175
- tags: attachmentTags
1193
+ tags: attachmentTags,
1194
+ showcase: attachmentShowcase,
1195
+ supersedes: attachmentSupersedes
1176
1196
  }
1177
1197
  },
1178
1198
  mcp: {
1179
- description: "Upload a local file as a task attachment (any file type, up to 25MB). Pass projectId to target a specific project; otherwise the configured default project is used. The file appears under the task's Files. Pass `comment` to also post it to the task chat in the same step, and `tags` when the file is a good example of a glossary tag in some state.",
1199
+ description: "Upload a local file as a task attachment (any file type, up to 25MB). Pass projectId to target a specific project; otherwise the configured default project is used. The file appears under the task's Files. Pass `comment` to also post it to the task chat in the same step, `showcase: true` for the capture that shows the finished result (a showcase file always posts to chat), `supersedes` with the old file's id when this is a newer version of a file already on the card, and `tags` when the file is a good example of a glossary tag in some state.",
1180
1200
  fields: {
1181
1201
  projectId: mcpProjectId,
1182
1202
  taskId: mcpTaskIdOrSlug,
@@ -1190,6 +1210,8 @@ var uploadAttachmentContract = defineToolContract({
1190
1210
  })
1191
1211
  ),
1192
1212
  tags: attachmentTags,
1213
+ showcase: attachmentShowcase,
1214
+ supersedes: attachmentSupersedes,
1193
1215
  mimeType: f.optional(
1194
1216
  f.string({ desc: "Override the mime type inferred from the file extension" })
1195
1217
  )
@@ -1214,11 +1236,35 @@ var deleteAttachmentContract = defineToolContract({
1214
1236
  }
1215
1237
  }
1216
1238
  });
1239
+ var SET_SHOWCASE_BEHAVIOR = "Mark an already-uploaded attachment as the card's showcase (`showcase: true`) or clear the flag (`showcase: false`) \u2014 the same flag upload_attachment sets at upload time, so promote an earlier capture here instead of uploading it again. A flip to showcase posts the file to the task chat once; a file that a chat message already carries is not posted again. `fileId` comes from list_task_files.";
1240
+ var showcaseFlag = f.boolean({
1241
+ desc: "true marks the file as the card's showcase; false clears the flag."
1242
+ });
1243
+ var setShowcaseContract = defineToolContract({
1244
+ name: "set_showcase",
1245
+ agent: {
1246
+ description: `${SET_SHOWCASE_BEHAVIOR} A pod can only change files on its own card.`,
1247
+ fields: {
1248
+ fileId: f.string({ desc: "The file ID to change" }),
1249
+ showcase: showcaseFlag
1250
+ }
1251
+ },
1252
+ mcp: {
1253
+ description: `${SET_SHOWCASE_BEHAVIOR} Requires Moderate on the project, the same bar as the star on the card's Files list. Pass projectId to target a specific project; otherwise the configured default project is used.`,
1254
+ fields: {
1255
+ projectId: mcpProjectId,
1256
+ taskId: f.string({ desc: "The task ID or slug the file is attached to" }),
1257
+ fileId: f.string({ desc: "The file ID to change" }),
1258
+ showcase: showcaseFlag
1259
+ }
1260
+ }
1261
+ });
1217
1262
  var attachmentsContracts = [
1218
1263
  listTaskFilesContract,
1219
1264
  getAttachmentContract,
1220
1265
  uploadAttachmentContract,
1221
- deleteAttachmentContract
1266
+ deleteAttachmentContract,
1267
+ setShowcaseContract
1222
1268
  ];
1223
1269
  var createSuggestionContract = defineToolContract({
1224
1270
  name: "create_suggestion",
@@ -1541,7 +1587,7 @@ var createPullRequestContract = defineToolContract({
1541
1587
  fields: {
1542
1588
  title: f.string({ desc: "The PR title" }),
1543
1589
  body: f.string({
1544
- desc: "The PR description/body in markdown. If the diff changes anything a user sees rendered, the body MUST show the visual proof inline, not just point at the card: upload the capture with upload_attachment, then embed the downloadUrl it returns under a '## Screenshots' heading (![caption](url) for images, [caption](url) for video). Only image and video URLs belong in a PR body: a document downloadUrl (csv, pdf, md, \u2026) needs a signed-in project member and shows 404 to a reviewer on GitHub, so point at the card instead. Attach to the card as well \u2014 the card is the durable home, the PR body is what the reviewer reads."
1590
+ desc: "The PR description/body in markdown. If the diff changes anything a user sees rendered, the body MUST show the visual proof inline, not just point at the card: upload the capture with upload_attachment, then embed the downloadUrl it returns under a '## Screenshots' heading (![caption](url) for images, [caption](url) for video). Only image and video URLs belong in a PR body: a document downloadUrl (csv, pdf, md, \u2026) needs a signed-in project member and shows 404 to a reviewer on GitHub, so point at the card instead. Attach to the card as well \u2014 the card is the durable home, the PR body is what the reviewer reads. Showcase attachments (uploaded with `showcase: true`) are appended under '## Showcase' automatically when Conveyor creates the PR; mention them inline yourself only if you want them next to specific text."
1545
1591
  }),
1546
1592
  branch: f.optional(
1547
1593
  f.string({
@@ -1572,7 +1618,7 @@ var createPullRequestContract = defineToolContract({
1572
1618
  taskId: f.string({ desc: "The task ID whose branch should be opened as a PR" }),
1573
1619
  title: f.string({ desc: "Pull request title" }),
1574
1620
  body: f.string({
1575
- desc: "Pull request body (markdown). For a diff that changes rendered UI, embed the visual proof inline: upload the capture with upload_attachment and paste the downloadUrl it returns as ![caption](url), in addition to leaving it on the card."
1621
+ desc: "Pull request body (markdown). For a diff that changes rendered UI, embed the visual proof inline: upload the capture with upload_attachment and paste the downloadUrl it returns as ![caption](url), in addition to leaving it on the card. Showcase attachments (uploaded with `showcase: true`) are appended under '## Showcase' automatically when Conveyor creates the PR; mention them inline yourself only if you want them next to specific text."
1576
1622
  }),
1577
1623
  head: f.optional(
1578
1624
  f.string({ desc: "Source branch for the PR (defaults to the task's branch)" })
@@ -2354,7 +2400,7 @@ var TOOL_CONTRACTS = Object.fromEntries(
2354
2400
  );
2355
2401
 
2356
2402
  // src/tools/contract-tool.ts
2357
- import { z as z3 } from "zod";
2403
+ import { z as z3 } from "zod/v3";
2358
2404
  function mcpShape(surface) {
2359
2405
  return compileShape(z3, surface.fields);
2360
2406
  }
@@ -2423,7 +2469,7 @@ function registerConnectionTools(server2, conn2) {
2423
2469
  }
2424
2470
 
2425
2471
  // src/tools/project-config.ts
2426
- import { z as z5 } from "zod";
2472
+ import { z as z5 } from "zod/v3";
2427
2473
  var CONTEXT_LINK_LOCATOR_MAX = 300;
2428
2474
  function jsonResult(data) {
2429
2475
  return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
@@ -2658,7 +2704,7 @@ function registerProjectConfigTools(server2, conn2) {
2658
2704
  }
2659
2705
 
2660
2706
  // src/tools/tasks.ts
2661
- import { z as z6 } from "zod";
2707
+ import { z as z6 } from "zod/v3";
2662
2708
 
2663
2709
  // src/tools/tasks-format.ts
2664
2710
  function formatCompletedMeta(data) {
@@ -2851,6 +2897,9 @@ function registerCreateTask(server2, conn2) {
2851
2897
  plan: z6.string().optional().describe("Task implementation plan (markdown)"),
2852
2898
  status: z6.enum(["Planning", "Open"]).optional().describe("Initial status (default: Planning)"),
2853
2899
  subProjectId: BOARD_ASSIGN,
2900
+ priorityValue: z6.number().int().positive().optional().describe(
2901
+ `${priorityValueDesc}. A value the project has not configured is rejected before the card is created.`
2902
+ ),
2854
2903
  tags: z6.array(z6.string()).optional().describe(
2855
2904
  'Tag names to assign to the new card (e.g. ["refactor"]). Unknown names are rejected before the card is created, so nothing is written and a corrected retry creates exactly one card. Create the tag first with manage_tags. Use list_tags to see available tags.'
2856
2905
  )
@@ -2876,6 +2925,9 @@ function registerUpdateTask(server2, conn2) {
2876
2925
  if (params.storyPointValue !== void 0) {
2877
2926
  parts.push(`story points: ${result.storyPointValue ?? "cleared"}`);
2878
2927
  }
2928
+ if (params.priorityValue !== void 0) {
2929
+ parts.push(`priority: ${result.priorityValue ?? "cleared"}`);
2930
+ }
2879
2931
  if ((result.addedTags ?? []).length > 0) parts.push(`+tags: ${result.addedTags.join(", ")}`);
2880
2932
  if ((result.removedTags ?? []).length > 0)
2881
2933
  parts.push(`-tags: ${result.removedTags.join(", ")}`);
@@ -3105,7 +3157,7 @@ function registerTaskTools(server2, conn2) {
3105
3157
  }
3106
3158
 
3107
3159
  // src/tools/builds.ts
3108
- import { z as z7 } from "zod";
3160
+ import { z as z7 } from "zod/v3";
3109
3161
  function textResult2(result) {
3110
3162
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
3111
3163
  }
@@ -3204,7 +3256,7 @@ function registerBuildTools(server2, conn2) {
3204
3256
  // src/tools/attachments.ts
3205
3257
  import { readFile, stat } from "fs/promises";
3206
3258
  import { basename, extname } from "path";
3207
- import { z as z8 } from "zod";
3259
+ import { z as z8 } from "zod/v3";
3208
3260
  var MAX_FILE_SIZE_BYTES = 25 * 1024 * 1024;
3209
3261
  var MAX_FILE_TAGS = 5;
3210
3262
  var MIME_BY_EXT = {
@@ -3235,6 +3287,8 @@ var MIME_BY_EXT = {
3235
3287
  ".gz": "application/gzip",
3236
3288
  ".mp4": "video/mp4",
3237
3289
  ".webm": "video/webm",
3290
+ ".mov": "video/quicktime",
3291
+ ".m4v": "video/x-m4v",
3238
3292
  ".mp3": "audio/mpeg",
3239
3293
  ".wav": "audio/wav"
3240
3294
  };
@@ -3328,21 +3382,23 @@ function registerUploadAttachment(server2, conn2) {
3328
3382
  };
3329
3383
  }
3330
3384
  const comment = params.comment ?? params.title;
3331
- const result = await conn2.confirmFileUpload(
3332
- params.taskId,
3385
+ const result = await conn2.confirmFileUpload({
3386
+ taskId: params.taskId,
3333
3387
  fileId,
3334
3388
  comment,
3335
- params.projectId,
3336
- params.tags
3337
- );
3389
+ projectId: params.projectId,
3390
+ tags: params.tags,
3391
+ showcase: params.showcase,
3392
+ supersedes: params.supersedes
3393
+ });
3338
3394
  const lines = [
3339
- `Uploaded ${result.fileName} (${info.size} bytes, ${mimeType}). File ID: ${result.fileId}`
3395
+ `${result.showcase ? "Showcase attachment. " : ""}Uploaded ${result.fileName} (${info.size} bytes, ${mimeType}). File ID: ${result.fileId}`
3340
3396
  ];
3341
3397
  if (result.downloadUrl) lines.push(`downloadUrl: ${result.downloadUrl}`);
3342
3398
  if (result.messageId) lines.push("Posted to the task chat.");
3343
3399
  else if (comment === void 0) {
3344
3400
  lines.push(
3345
- "Not posted to the task chat \u2014 pass `comment` (or `title`) to show it in the card thread."
3401
+ "Not posted to the task chat \u2014 pass `comment` (or `title`) to show it in the card thread, or `showcase: true` for the finished result."
3346
3402
  );
3347
3403
  }
3348
3404
  if (result.appliedTags?.length) lines.push(`Tagged: ${result.appliedTags.join(", ")}.`);
@@ -3351,9 +3407,18 @@ function registerUploadAttachment(server2, conn2) {
3351
3407
  `No tag matched: ${result.unknownTags.join(", ")} \u2014 check the project's tag names.`
3352
3408
  );
3353
3409
  }
3410
+ const supersedeLine = describeSupersede(result);
3411
+ if (supersedeLine) lines.push(supersedeLine);
3354
3412
  return { content: [{ type: "text", text: lines.join("\n") }] };
3355
3413
  });
3356
3414
  }
3415
+ function describeSupersede(result) {
3416
+ if (result.superseded) {
3417
+ return `Replaces ${result.superseded.fileName} (${result.superseded.fileId}), which now collapses under it as history.`;
3418
+ }
3419
+ if (result.supersedeError) return `Did not replace the older file: ${result.supersedeError}.`;
3420
+ return null;
3421
+ }
3357
3422
  function registerSetFileTags(server2, conn2) {
3358
3423
  server2.tool(
3359
3424
  "set_file_tags",
@@ -3393,12 +3458,23 @@ function registerDeleteAttachment(server2, conn2) {
3393
3458
  };
3394
3459
  });
3395
3460
  }
3461
+ function registerSetShowcase(server2, conn2) {
3462
+ registerContractTool(server2, setShowcaseContract, async (params) => {
3463
+ const result = await conn2.setShowcase(params);
3464
+ const lines = result.showcase ? [
3465
+ `${result.fileName} (${result.id}) is now a showcase file. It is in the task chat and appended to the PR body under '## Showcase'.`
3466
+ ] : [`${result.fileName} (${result.id}) is no longer a showcase file.`];
3467
+ if (result.showcase && result.downloadUrl) lines.push(`downloadUrl: ${result.downloadUrl}`);
3468
+ return { content: [{ type: "text", text: lines.join("\n") }] };
3469
+ });
3470
+ }
3396
3471
  function registerAttachmentTools(server2, conn2) {
3397
3472
  registerListTaskFiles(server2, conn2);
3398
3473
  registerGetAttachment(server2, conn2);
3399
3474
  registerUploadAttachment(server2, conn2);
3400
3475
  registerDeleteAttachment(server2, conn2);
3401
3476
  registerSetFileTags(server2, conn2);
3477
+ registerSetShowcase(server2, conn2);
3402
3478
  }
3403
3479
 
3404
3480
  // src/tools/pull-request.ts
@@ -3516,8 +3592,8 @@ function registerSuggestionTools(server2, conn2) {
3516
3592
  // ../shared/dist/index.js
3517
3593
  import { z as z9 } from "zod";
3518
3594
  import { z as z23 } from "zod";
3519
- import { z as z32 } from "zod";
3520
3595
  import { z as z42 } from "zod";
3596
+ import { z as z32 } from "zod";
3521
3597
  import { z as z52 } from "zod";
3522
3598
  import { z as z62 } from "zod";
3523
3599
  import { z as z72 } from "zod";
@@ -3526,6 +3602,8 @@ import { z as z92 } from "zod";
3526
3602
  import { z as z10 } from "zod";
3527
3603
  import { z as z11 } from "zod";
3528
3604
  import { z as z12 } from "zod";
3605
+ import { z as z13 } from "zod";
3606
+ import { z as z14 } from "zod";
3529
3607
  var ACHIEVEMENT_RARITIES = [
3530
3608
  {
3531
3609
  key: "common",
@@ -3784,29 +3862,120 @@ var AgentEventSchema = z23.union([
3784
3862
  KnownAgentEventSchema,
3785
3863
  z23.object({ type: z23.string().min(1) }).catchall(z23.unknown())
3786
3864
  ]);
3787
- var cardDescription = z32.string().max(CARD_DESCRIPTION_MAX, CARD_DESCRIPTION_LIMIT_MESSAGE).optional();
3788
- var AgentHeartbeatSchema = z32.object({
3789
- sessionId: z32.string().optional(),
3790
- timestamp: z32.string(),
3791
- status: z32.enum(["active", "idle", "building"]),
3792
- currentAction: z32.string().optional(),
3865
+ var PtyChatAtSchema = z32.string().max(40).optional();
3866
+ var PtyChatTurnUsageSchema = z32.object({
3867
+ input: z32.number().int().nonnegative(),
3868
+ output: z32.number().int().nonnegative(),
3869
+ cacheRead: z32.number().int().nonnegative(),
3870
+ cacheWrite: z32.number().int().nonnegative()
3871
+ });
3872
+ var PtyChatTurnFileSchema = z32.object({
3873
+ path: z32.string().max(500),
3874
+ added: z32.number().int(),
3875
+ removed: z32.number().int()
3876
+ });
3877
+ var PTY_CHAT_TURN_FILES_MAX = 50;
3878
+ var PtyChatEventPayloadSchema = z32.discriminatedUnion("kind", [
3879
+ z32.object({
3880
+ kind: z32.literal("init"),
3881
+ at: PtyChatAtSchema,
3882
+ model: z32.string().max(200),
3883
+ claudeSessionId: z32.string().max(100).optional()
3884
+ }),
3885
+ z32.object({
3886
+ kind: z32.literal("user_text"),
3887
+ at: PtyChatAtSchema,
3888
+ text: z32.string().max(16384),
3889
+ // Set by the SERVER (never the agent) when this prompt was injected by
3890
+ // Conveyor rather than typed by a human — the routed message's `source`
3891
+ // (`ci_success`, `review_trigger`, `automated_feedback`, …). The agent
3892
+ // pastes automated messages into the TUI exactly like human prompts, so the
3893
+ // CLI records both as plain transcript `user` records; without this the
3894
+ // builder chat renders "All CI checks passed on your PR." as the human's
3895
+ // own bubble. Absent ⇒ a genuine human prompt. Exception: the AGENT sets
3896
+ // `model_switch` on the notice it emits after a live model/effort switch.
3897
+ source: z32.string().max(60).optional()
3898
+ }),
3899
+ z32.object({
3900
+ kind: z32.literal("assistant_text"),
3901
+ at: PtyChatAtSchema,
3902
+ text: z32.string().max(16384),
3903
+ model: z32.string().max(200).optional()
3904
+ }),
3905
+ z32.object({
3906
+ kind: z32.literal("tool_use"),
3907
+ at: PtyChatAtSchema,
3908
+ name: z32.string().max(200),
3909
+ // Compact preview: JSON.stringify(input) truncated agent-side. The cap
3910
+ // matches the text events because AskUserQuestion payloads ride this field
3911
+ // and the web lifts them into an interactive card — a tight cap forced
3912
+ // option descriptions down to 80 chars, making them unreadable. Every
3913
+ // other tool keeps a far smaller agent-side budget (`TOOL_INPUT_MAX` in
3914
+ // `chat-record-mapper.ts`), so the ring does not grow for normal calls.
3915
+ input: z32.string().max(16384),
3916
+ // Transcript tool_use block id — lets the client pair the tool_result.
3917
+ id: z32.string().max(100).optional()
3918
+ }),
3919
+ z32.object({
3920
+ kind: z32.literal("tool_result"),
3921
+ at: PtyChatAtSchema,
3922
+ // tool_use block id this result answers (absent on malformed records).
3923
+ toolUseId: z32.string().max(100).optional(),
3924
+ // Compact output preview, truncated agent-side.
3925
+ output: z32.string().max(2e3),
3926
+ isError: z32.boolean().optional()
3927
+ }),
3928
+ z32.object({
3929
+ kind: z32.literal("turn_end"),
3930
+ at: PtyChatAtSchema,
3931
+ // Wall-clock turn length as the CLI measured it ("Worked for 23s").
3932
+ durationMs: z32.number().int().nonnegative().optional(),
3933
+ // Last model that answered in this turn.
3934
+ model: z32.string().max(200).optional(),
3935
+ // Token usage summed over the turn's API responses.
3936
+ usage: PtyChatTurnUsageSchema.optional(),
3937
+ // Files the turn edited, with line counts. Absent when nothing was edited.
3938
+ files: z32.array(PtyChatTurnFileSchema).max(PTY_CHAT_TURN_FILES_MAX).optional()
3939
+ })
3940
+ ]);
3941
+ var PtyChatEventRequestSchema = z32.object({
3942
+ sessionId: z32.string(),
3943
+ event: PtyChatEventPayloadSchema
3944
+ });
3945
+ var PtyChatAttachRequestSchema = z32.object({
3946
+ sessionId: z32.string()
3947
+ });
3948
+ var PTY_EFFORT_LEVELS = ["low", "medium", "high", "xhigh", "max"];
3949
+ var SetPtyModelEffortRequestSchema = z32.object({
3950
+ sessionId: z32.string(),
3951
+ model: z32.string().min(1).max(200).optional(),
3952
+ effort: z32.enum(PTY_EFFORT_LEVELS).optional()
3953
+ }).refine((p) => p.model !== void 0 || p.effort !== void 0, {
3954
+ message: "model or effort is required"
3955
+ });
3956
+ var cardDescription = z42.string().max(CARD_DESCRIPTION_MAX, CARD_DESCRIPTION_LIMIT_MESSAGE).optional();
3957
+ var AgentHeartbeatSchema = z42.object({
3958
+ sessionId: z42.string().optional(),
3959
+ timestamp: z42.string(),
3960
+ status: z42.enum(["active", "idle", "building"]),
3961
+ currentAction: z42.string().optional(),
3793
3962
  /** Sender-observed main event-loop lag (ms) — see AgentHeartbeat.loopLagMs. */
3794
- loopLagMs: z32.number().nonnegative().optional()
3963
+ loopLagMs: z42.number().nonnegative().optional()
3795
3964
  });
3796
- var CreatePRInputSchema = z32.object({
3797
- title: z32.string().min(1),
3798
- body: z32.string(),
3799
- head: z32.string().optional(),
3800
- base: z32.string().optional()
3965
+ var CreatePRInputSchema = z42.object({
3966
+ title: z42.string().min(1),
3967
+ body: z42.string(),
3968
+ head: z42.string().optional(),
3969
+ base: z42.string().optional()
3801
3970
  });
3802
- var PostToChatInputSchema = z32.object({
3803
- message: z32.string().min(1),
3804
- type: z32.enum(["message", "question", "update"]).optional().default("message"),
3805
- milestone: z32.enum(["plan_ready", "implementation_complete", "blocked"]).optional()
3971
+ var PostToChatInputSchema = z42.object({
3972
+ message: z42.string().min(1),
3973
+ type: z42.enum(["message", "question", "update"]).optional().default("message"),
3974
+ milestone: z42.enum(["plan_ready", "implementation_complete", "blocked"]).optional()
3806
3975
  });
3807
- var GetTaskContextRequestSchema = z32.object({
3808
- sessionId: z32.string(),
3809
- includeHistory: z32.boolean().optional().default(false),
3976
+ var GetTaskContextRequestSchema = z42.object({
3977
+ sessionId: z42.string(),
3978
+ includeHistory: z42.boolean().optional().default(false),
3810
3979
  /**
3811
3980
  * Read the plan-revised marker WITHOUT consuming it. Bookkeeping fetches
3812
3981
  * (the session-identity check, the branch refresh) pass true so they cannot
@@ -3814,283 +3983,292 @@ var GetTaskContextRequestSchema = z32.object({
3814
3983
  * Defaults to false — consuming — so a pod running an older agent build still
3815
3984
  * clears the marker instead of showing the notice on every boot forever.
3816
3985
  */
3817
- peekPlanRevision: z32.boolean().optional().default(false)
3986
+ peekPlanRevision: z42.boolean().optional().default(false)
3818
3987
  });
3819
- var GetChatMessagesRequestSchema = z32.object({
3820
- sessionId: z32.string(),
3821
- limit: z32.number().int().positive().optional().default(50),
3822
- offset: z32.number().int().nonnegative().optional().default(0),
3988
+ var GetChatMessagesRequestSchema = z42.object({
3989
+ sessionId: z42.string(),
3990
+ limit: z42.number().int().positive().optional().default(50),
3991
+ offset: z42.number().int().nonnegative().optional().default(0),
3823
3992
  /** Task id or slug to read chat from. Omit for the session's own task. Only
3824
3993
  * the session's own task or one of its children resolves — anything else is
3825
3994
  * an error, never a silent fallback to the caller's own chat. */
3826
- taskId: z32.string().optional()
3995
+ taskId: z42.string().optional()
3827
3996
  });
3828
- var GetTaskFilesRequestSchema = z32.object({
3829
- sessionId: z32.string(),
3830
- taskId: z32.string().optional()
3997
+ var GetTaskFilesRequestSchema = z42.object({
3998
+ sessionId: z42.string(),
3999
+ taskId: z42.string().optional()
3831
4000
  });
3832
- var GetTaskFileRequestSchema = z32.object({
3833
- sessionId: z32.string(),
3834
- fileId: z32.string(),
3835
- taskId: z32.string().optional()
4001
+ var GetTaskFileRequestSchema = z42.object({
4002
+ sessionId: z42.string(),
4003
+ fileId: z42.string(),
4004
+ taskId: z42.string().optional()
3836
4005
  });
3837
- var DeleteTaskFileRequestSchema = z32.object({
3838
- sessionId: z32.string(),
3839
- fileId: z32.string()
4006
+ var DeleteTaskFileRequestSchema = z42.object({
4007
+ sessionId: z42.string(),
4008
+ fileId: z42.string()
3840
4009
  });
3841
- var GetTaskRequestSchema = z32.object({
3842
- sessionId: z32.string(),
3843
- taskSlugOrId: z32.string()
4010
+ var SetTaskFileShowcaseRequestSchema = z42.object({
4011
+ sessionId: z42.string(),
4012
+ fileId: z42.string(),
4013
+ showcase: z42.boolean()
3844
4014
  });
3845
- var GetCliHistoryRequestSchema = z32.object({
3846
- sessionId: z32.string(),
3847
- limit: z32.number().int().positive().optional().default(100),
3848
- source: z32.enum(["agent", "application"]).optional(),
4015
+ var GetTaskRequestSchema = z42.object({
4016
+ sessionId: z42.string(),
4017
+ taskSlugOrId: z42.string()
4018
+ });
4019
+ var GetCliHistoryRequestSchema = z42.object({
4020
+ sessionId: z42.string(),
4021
+ limit: z42.number().int().positive().optional().default(100),
4022
+ source: z42.enum(["agent", "application"]).optional(),
3849
4023
  /** Task id or slug to read logs from. Omit for the session's own task. Only
3850
4024
  * the session's own task or one of its children resolves — anything else is
3851
4025
  * an error, never a silent fallback to the caller's own logs. */
3852
- taskId: z32.string().optional()
4026
+ taskId: z42.string().optional()
3853
4027
  });
3854
- var ListSubtasksRequestSchema = z32.object({
3855
- sessionId: z32.string(),
4028
+ var ListSubtasksRequestSchema = z42.object({
4029
+ sessionId: z42.string(),
3856
4030
  /** "compact" returns the slim orchestration view (ListSubtasksCompactResponse:
3857
4031
  * per-child status, agent, story points, PR state, dependencies); "full" (default — wire-compat with older
3858
4032
  * agents) returns the verbose SubtaskSummaryDTO[] including description/plan. */
3859
- view: z32.enum(["compact", "full"]).optional()
4033
+ view: z42.enum(["compact", "full"]).optional()
3860
4034
  });
3861
- var GetDependenciesRequestSchema = z32.object({
3862
- sessionId: z32.string()
4035
+ var GetDependenciesRequestSchema = z42.object({
4036
+ sessionId: z42.string()
3863
4037
  });
3864
- var GetSuggestionsRequestSchema = z32.object({
3865
- sessionId: z32.string(),
3866
- status: z32.string().optional(),
3867
- limit: z32.number().int().min(1).max(100).optional()
4038
+ var GetSuggestionsRequestSchema = z42.object({
4039
+ sessionId: z42.string(),
4040
+ status: z42.string().optional(),
4041
+ limit: z42.number().int().min(1).max(100).optional()
3868
4042
  });
3869
- var ListManualTestsRequestSchema = z32.object({
3870
- sessionId: z32.string()
4043
+ var ListManualTestsRequestSchema = z42.object({
4044
+ sessionId: z42.string()
3871
4045
  });
3872
- var QueryManualTestsRequestSchema = z32.object({
3873
- sessionId: z32.string(),
3874
- cardStatuses: z32.array(z32.string()).optional(),
3875
- testStatuses: z32.array(z32.enum(["open", "approved", "rejected"])).optional()
4046
+ var QueryManualTestsRequestSchema = z42.object({
4047
+ sessionId: z42.string(),
4048
+ cardStatuses: z42.array(z42.string()).optional(),
4049
+ testStatuses: z42.array(z42.enum(["open", "approved", "rejected"])).optional()
3876
4050
  });
3877
- var CreatePullRequestRequestSchema = CreatePRInputSchema.extend({ sessionId: z32.string() });
3878
- var RequestFileUploadRequestSchema = z32.object({
3879
- sessionId: z32.string(),
3880
- fileName: z32.string().min(1).max(255),
3881
- mimeType: z32.string().min(1).max(128),
3882
- fileSize: z32.number().int().positive().max(MAX_FILE_SIZE_BYTES2)
4051
+ var CreatePullRequestRequestSchema = CreatePRInputSchema.extend({ sessionId: z42.string() });
4052
+ var RequestFileUploadRequestSchema = z42.object({
4053
+ sessionId: z42.string(),
4054
+ fileName: z42.string().min(1).max(255),
4055
+ mimeType: z42.string().min(1).max(128),
4056
+ fileSize: z42.number().int().positive().max(MAX_FILE_SIZE_BYTES2)
3883
4057
  });
3884
- var ConfirmFileUploadRequestSchema = z32.object({
3885
- sessionId: z32.string(),
3886
- fileId: z32.string(),
3887
- title: z32.string().max(500).optional(),
4058
+ var ConfirmFileUploadRequestSchema = z42.object({
4059
+ sessionId: z42.string(),
4060
+ fileId: z42.string(),
4061
+ title: z42.string().max(500).optional(),
3888
4062
  /** Glossary tag names (or ids) this file is an example of. */
3889
- tags: z32.array(z32.string().min(1).max(MAX_FILE_TAG_LENGTH)).max(MAX_FILE_TAGS2).optional()
4063
+ tags: z42.array(z42.string().min(1).max(MAX_FILE_TAG_LENGTH)).max(MAX_FILE_TAGS2).optional(),
4064
+ /** Mark the file as the card's showcase (the deliverable). */
4065
+ showcase: z42.boolean().optional(),
4066
+ /** Id of an older file on the same card this upload replaces. */
4067
+ supersedes: z42.string().min(1).max(64).optional()
3890
4068
  });
3891
- var UpdateTaskStatusRequestSchema = z32.object({
3892
- sessionId: z32.string(),
3893
- status: z32.string(),
3894
- force: z32.boolean().optional().default(false)
4069
+ var UpdateTaskStatusRequestSchema = z42.object({
4070
+ sessionId: z42.string(),
4071
+ status: z42.string(),
4072
+ force: z42.boolean().optional().default(false)
3895
4073
  });
3896
- var StoreSessionIdRequestSchema = z32.object({
3897
- sessionId: z32.string(),
3898
- sdkSessionId: z32.string()
4074
+ var StoreSessionIdRequestSchema = z42.object({
4075
+ sessionId: z42.string(),
4076
+ sdkSessionId: z42.string()
3899
4077
  });
3900
- var SetManualTestsRequestSchema = z32.object({
3901
- sessionId: z32.string(),
4078
+ var SetManualTestsRequestSchema = z42.object({
4079
+ sessionId: z42.string(),
3902
4080
  items: ManualTestItemsSchema
3903
4081
  });
3904
- var EditManualTestRequestSchema = z32.object({
3905
- sessionId: z32.string(),
3906
- title: z32.string().min(1),
3907
- newTitle: z32.string().min(1)
4082
+ var EditManualTestRequestSchema = z42.object({
4083
+ sessionId: z42.string(),
4084
+ title: z42.string().min(1),
4085
+ newTitle: z42.string().min(1)
3908
4086
  });
3909
- var RemoveManualTestRequestSchema = z32.object({
3910
- sessionId: z32.string(),
3911
- title: z32.string().min(1)
4087
+ var RemoveManualTestRequestSchema = z42.object({
4088
+ sessionId: z42.string(),
4089
+ title: z42.string().min(1)
3912
4090
  });
3913
- var ApproveManualTestRequestSchema = z32.object({
3914
- sessionId: z32.string(),
3915
- title: z32.string().min(1)
4091
+ var ApproveManualTestRequestSchema = z42.object({
4092
+ sessionId: z42.string(),
4093
+ title: z42.string().min(1)
3916
4094
  });
3917
- var RejectManualTestRequestSchema = z32.object({
3918
- sessionId: z32.string(),
3919
- title: z32.string().min(1),
3920
- reason: z32.string().min(1).max(2e3)
4095
+ var RejectManualTestRequestSchema = z42.object({
4096
+ sessionId: z42.string(),
4097
+ title: z42.string().min(1),
4098
+ reason: z42.string().min(1).max(2e3)
3921
4099
  });
3922
- var SessionStartRequestSchema = z32.object({
3923
- sessionId: z32.string(),
3924
- agentVersion: z32.string(),
3925
- capabilities: z32.array(z32.string())
4100
+ var SessionStartRequestSchema = z42.object({
4101
+ sessionId: z42.string(),
4102
+ agentVersion: z42.string(),
4103
+ capabilities: z42.array(z42.string())
3926
4104
  });
3927
- var SessionStopRequestSchema = z32.object({
3928
- sessionId: z32.string(),
3929
- reason: z32.string().optional()
4105
+ var SessionStopRequestSchema = z42.object({
4106
+ sessionId: z42.string(),
4107
+ reason: z42.string().optional()
3930
4108
  });
3931
- var EndReviewSessionRequestSchema = z32.object({
3932
- sessionId: z32.string(),
3933
- reason: z32.enum(["approved", "changes_requested", "finished"]).optional()
4109
+ var EndReviewSessionRequestSchema = z42.object({
4110
+ sessionId: z42.string(),
4111
+ reason: z42.enum(["approved", "changes_requested", "finished"]).optional()
3934
4112
  });
3935
- var ConnectAgentRequestSchema = z32.object({
3936
- sessionId: z32.string()
4113
+ var ConnectAgentRequestSchema = z42.object({
4114
+ sessionId: z42.string()
3937
4115
  });
3938
- var ReportAgentStatusRequestSchema = z32.object({
3939
- sessionId: z32.string(),
3940
- status: z32.string(),
4116
+ var ReportAgentStatusRequestSchema = z42.object({
4117
+ sessionId: z42.string(),
4118
+ status: z42.string(),
3941
4119
  /** Why the agent reports this status (e.g. "user_question" while an AskUserQuestion questionnaire is pending in the TUI). */
3942
- reason: z32.string().optional(),
4120
+ reason: z42.string().optional(),
3943
4121
  /**
3944
4122
  * The pending question text, sent only alongside `reason: "user_question"`
3945
4123
  * so the server can surface it in the user-question notification body (and
3946
4124
  * thus the Attention feed) instead of a generic string. Optional: older
3947
4125
  * agents omit it and the server falls back to the generic wording.
3948
4126
  */
3949
- questionText: z32.string().optional()
4127
+ questionText: z42.string().optional()
3950
4128
  });
3951
- var NotifyAgentVersionRequestSchema = z32.object({
3952
- sessionId: z32.string(),
3953
- agentVersion: z32.string()
4129
+ var NotifyAgentVersionRequestSchema = z42.object({
4130
+ sessionId: z42.string(),
4131
+ agentVersion: z42.string()
3954
4132
  });
3955
- var DiscoveredPortSchema = z32.object({
3956
- port: z32.number().int().min(1).max(65535),
3957
- label: z32.string().min(1).max(64).optional(),
3958
- protocol: z32.enum(["http", "tcp"]).optional(),
3959
- detectedAt: z32.string()
4133
+ var DiscoveredPortSchema = z42.object({
4134
+ port: z42.number().int().min(1).max(65535),
4135
+ label: z42.string().min(1).max(64).optional(),
4136
+ protocol: z42.enum(["http", "tcp"]).optional(),
4137
+ detectedAt: z42.string()
3960
4138
  });
3961
- var ReportDiscoveredPortsRequestSchema = z32.object({
3962
- sessionId: z32.string(),
3963
- ports: z32.array(DiscoveredPortSchema).max(64)
4139
+ var ReportDiscoveredPortsRequestSchema = z42.object({
4140
+ sessionId: z42.string(),
4141
+ ports: z42.array(DiscoveredPortSchema).max(64)
3964
4142
  });
3965
- var ReportBootMilestoneRequestSchema = z32.object({
3966
- sessionId: z32.string(),
3967
- key: z32.string().max(64)
4143
+ var ReportBootMilestoneRequestSchema = z42.object({
4144
+ sessionId: z42.string(),
4145
+ key: z42.string().max(64)
3968
4146
  });
3969
- var CreateSubtaskRequestSchema = z32.object({
3970
- sessionId: z32.string(),
3971
- title: z32.string().min(1),
4147
+ var CreateSubtaskRequestSchema = z42.object({
4148
+ sessionId: z42.string(),
4149
+ title: z42.string().min(1),
3972
4150
  description: cardDescription,
3973
- plan: z32.string().optional(),
3974
- storyPointValue: z32.number().int().positive().optional(),
3975
- ordinal: z32.number().int().nonnegative().optional(),
3976
- followParentStatus: z32.boolean().optional(),
4151
+ plan: z42.string().optional(),
4152
+ storyPointValue: z42.number().int().positive().optional(),
4153
+ ordinal: z42.number().int().nonnegative().optional(),
4154
+ followParentStatus: z42.boolean().optional(),
3977
4155
  /** Sibling subtask ids or slugs this subtask blocks on (explicit dependency
3978
4156
  * metadata — preferred over encoding order in plan text / ordinal). */
3979
- dependsOn: z32.array(z32.string().min(1)).max(32).optional(),
4157
+ dependsOn: z42.array(z42.string().min(1)).max(32).optional(),
3980
4158
  /** Glossary tag names to assign to the child. Unmatched names come back in
3981
4159
  * the response rather than failing the create. */
3982
- tags: z32.array(z32.string().min(1)).max(10).optional()
4160
+ tags: z42.array(z42.string().min(1)).max(10).optional()
3983
4161
  });
3984
- var UpdateSubtaskRequestSchema = z32.object({
3985
- sessionId: z32.string(),
3986
- subtaskId: z32.string(),
3987
- title: z32.string().min(1).optional(),
4162
+ var UpdateSubtaskRequestSchema = z42.object({
4163
+ sessionId: z42.string(),
4164
+ subtaskId: z42.string(),
4165
+ title: z42.string().min(1).optional(),
3988
4166
  description: cardDescription,
3989
- plan: z32.string().optional(),
4167
+ plan: z42.string().optional(),
3990
4168
  /** Orchestration statuses only ("Planning" | "Open") — the pack parent's
3991
4169
  * sanctioned promotion path. Execution statuses stay with the build
3992
4170
  * pipeline / force_update_task_status. Enforced server-side. */
3993
- status: z32.string().optional(),
4171
+ status: z42.string().optional(),
3994
4172
  /** Assign a project agent to the child — accepts the agent's id or exact
3995
4173
  * name; resolved against the parent task's project server-side. */
3996
- agentIdOrName: z32.string().min(1).optional(),
3997
- storyPointValue: z32.number().int().positive().optional(),
3998
- followParentStatus: z32.boolean().optional(),
4174
+ agentIdOrName: z42.string().min(1).optional(),
4175
+ storyPointValue: z42.number().int().positive().optional(),
4176
+ followParentStatus: z42.boolean().optional(),
3999
4177
  /** Replace this subtask's dependency edges with these sibling ids/slugs.
4000
4178
  * Empty array clears all. Omit to leave dependencies unchanged. */
4001
- dependsOn: z32.array(z32.string().min(1)).max(32).optional()
4179
+ dependsOn: z42.array(z42.string().min(1)).max(32).optional()
4002
4180
  });
4003
- var DeleteSubtaskRequestSchema = z32.object({
4004
- sessionId: z32.string(),
4005
- subtaskId: z32.string()
4181
+ var DeleteSubtaskRequestSchema = z42.object({
4182
+ sessionId: z42.string(),
4183
+ subtaskId: z42.string()
4006
4184
  });
4007
- var SetSubtaskParentRequestSchema = z32.object({
4008
- sessionId: z32.string(),
4009
- taskId: z32.string().min(1),
4010
- detach: z32.boolean().optional(),
4011
- ordinal: z32.number().int().nonnegative().optional(),
4012
- followParentStatus: z32.boolean().optional()
4185
+ var SetSubtaskParentRequestSchema = z42.object({
4186
+ sessionId: z42.string(),
4187
+ taskId: z42.string().min(1),
4188
+ detach: z42.boolean().optional(),
4189
+ ordinal: z42.number().int().nonnegative().optional(),
4190
+ followParentStatus: z42.boolean().optional()
4013
4191
  });
4014
- var GetTaskPropertiesRequestSchema = z32.object({
4015
- sessionId: z32.string()
4192
+ var GetTaskPropertiesRequestSchema = z42.object({
4193
+ sessionId: z42.string()
4016
4194
  });
4017
- var UpdateTaskFieldsRequestSchema = z32.object({
4018
- sessionId: z32.string(),
4019
- plan: z32.string().optional(),
4195
+ var UpdateTaskFieldsRequestSchema = z42.object({
4196
+ sessionId: z42.string(),
4197
+ plan: z42.string().optional(),
4020
4198
  description: cardDescription
4021
4199
  });
4022
- var UpdateTaskPropertiesRequestSchema = z32.object({
4023
- sessionId: z32.string(),
4024
- title: z32.string().optional(),
4025
- storyPointValue: z32.number().int().positive().optional(),
4026
- tagIds: z32.array(z32.string()).optional(),
4027
- tagNames: z32.array(z32.string()).optional(),
4028
- githubPRUrl: z32.string().url().optional(),
4029
- githubBranch: z32.string().optional(),
4200
+ var UpdateTaskPropertiesRequestSchema = z42.object({
4201
+ sessionId: z42.string(),
4202
+ title: z42.string().optional(),
4203
+ storyPointValue: z42.number().int().positive().optional(),
4204
+ tagIds: z42.array(z42.string()).optional(),
4205
+ tagNames: z42.array(z42.string()).optional(),
4206
+ githubPRUrl: z42.string().url().optional(),
4207
+ githubBranch: z42.string().optional(),
4030
4208
  // Canonical risk level, or null to clear — same semantics as the headless
4031
4209
  // update_task boundary (resolved to the project's Risk row in the handler).
4032
4210
  risk: riskLevelSchema.nullable().optional()
4033
4211
  });
4034
- var ListIconsRequestSchema = z32.object({
4035
- sessionId: z32.string()
4212
+ var ListIconsRequestSchema = z42.object({
4213
+ sessionId: z42.string()
4036
4214
  });
4037
- var GenerateTaskIconRequestSchema = z32.object({
4038
- sessionId: z32.string(),
4039
- prompt: z32.string().min(1),
4040
- aspectRatio: z32.string().optional()
4215
+ var GenerateTaskIconRequestSchema = z42.object({
4216
+ sessionId: z42.string(),
4217
+ prompt: z42.string().min(1),
4218
+ aspectRatio: z42.string().optional()
4041
4219
  });
4042
- var SearchFaIconsRequestSchema = z32.object({
4043
- sessionId: z32.string(),
4044
- query: z32.string().min(1),
4045
- first: z32.number().int().positive().optional()
4220
+ var SearchFaIconsRequestSchema = z42.object({
4221
+ sessionId: z42.string(),
4222
+ query: z42.string().min(1),
4223
+ first: z42.number().int().positive().optional()
4046
4224
  });
4047
- var PickFaIconRequestSchema = z32.object({
4048
- sessionId: z32.string(),
4049
- fontAwesomeId: z32.string().min(1),
4050
- fontAwesomeStyle: z32.string().optional()
4225
+ var PickFaIconRequestSchema = z42.object({
4226
+ sessionId: z42.string(),
4227
+ fontAwesomeId: z42.string().min(1),
4228
+ fontAwesomeStyle: z42.string().optional()
4051
4229
  });
4052
- var CreateFollowUpTaskRequestSchema = z32.object({
4053
- sessionId: z32.string(),
4054
- title: z32.string().min(1),
4230
+ var CreateFollowUpTaskRequestSchema = z42.object({
4231
+ sessionId: z42.string(),
4232
+ title: z42.string().min(1),
4055
4233
  description: cardDescription,
4056
- plan: z32.string().optional(),
4057
- storyPointValue: z32.number().int().positive().optional()
4234
+ plan: z42.string().optional(),
4235
+ storyPointValue: z42.number().int().positive().optional()
4058
4236
  });
4059
- var AddDependencyRequestSchema = z32.object({
4060
- sessionId: z32.string(),
4061
- dependsOnSlugOrId: z32.string()
4237
+ var AddDependencyRequestSchema = z42.object({
4238
+ sessionId: z42.string(),
4239
+ dependsOnSlugOrId: z42.string()
4062
4240
  });
4063
- var RemoveDependencyRequestSchema = z32.object({
4064
- sessionId: z32.string(),
4065
- dependsOnSlugOrId: z32.string()
4241
+ var RemoveDependencyRequestSchema = z42.object({
4242
+ sessionId: z42.string(),
4243
+ dependsOnSlugOrId: z42.string()
4066
4244
  });
4067
- var CreateSuggestionRequestSchema = z32.object({
4068
- sessionId: z32.string(),
4069
- title: z32.string().min(1),
4245
+ var CreateSuggestionRequestSchema = z42.object({
4246
+ sessionId: z42.string(),
4247
+ title: z42.string().min(1),
4070
4248
  description: cardDescription,
4071
- tagNames: z32.array(z32.string()).optional()
4249
+ tagNames: z42.array(z42.string()).optional()
4072
4250
  });
4073
- var VoteSuggestionRequestSchema = z32.object({
4074
- sessionId: z32.string(),
4075
- suggestionId: z32.string(),
4076
- value: z32.union([z32.literal(1), z32.literal(-1)])
4251
+ var VoteSuggestionRequestSchema = z42.object({
4252
+ sessionId: z42.string(),
4253
+ suggestionId: z42.string(),
4254
+ value: z42.union([z42.literal(1), z42.literal(-1)])
4077
4255
  });
4078
- var TriggerIdentificationRequestSchema = z32.object({
4079
- sessionId: z32.string()
4256
+ var TriggerIdentificationRequestSchema = z42.object({
4257
+ sessionId: z42.string()
4080
4258
  });
4081
- var HandoffToImplementerRequestSchema = z32.object({
4082
- sessionId: z32.string(),
4259
+ var HandoffToImplementerRequestSchema = z42.object({
4260
+ sessionId: z42.string(),
4083
4261
  // Optional difficulty sizing — sets the task's story points before resolving
4084
4262
  // the matched implementer agent. Omit to hand off using the task's current
4085
4263
  // story points (or the project's default task agent when unsized).
4086
- storyPoints: z32.number().int().positive().optional(),
4264
+ storyPoints: z42.number().int().positive().optional(),
4087
4265
  // Optional kickoff note posted to the task chat alongside the handoff notice.
4088
- message: z32.string().optional()
4266
+ message: z42.string().optional()
4089
4267
  });
4090
- var SubmitCodeReviewResultRequestSchema = z32.object({
4091
- sessionId: z32.string(),
4092
- approved: z32.boolean(),
4093
- content: z32.string(),
4268
+ var SubmitCodeReviewResultRequestSchema = z42.object({
4269
+ sessionId: z42.string(),
4270
+ approved: z42.boolean(),
4271
+ content: z42.string(),
4094
4272
  // Canonical risk level the reviewer assigned to this change. Required on every
4095
4273
  // verdict — the reviewer must judge it. Applied authoritatively server-side
4096
4274
  // (may raise OR lower an already-set value; the reviewer has that authority).
@@ -4098,244 +4276,195 @@ var SubmitCodeReviewResultRequestSchema = z32.object({
4098
4276
  // The commit SHA the reviewer actually reviewed. When present, the verdict is
4099
4277
  // rejected unless the task is still at this SHA (guards against a late
4100
4278
  // old-SHA verdict overwriting a newer review cycle).
4101
- reviewedSha: z32.string().optional()
4279
+ reviewedSha: z42.string().optional()
4102
4280
  });
4103
- var CycleCodingAgentKeyRequestSchema = z32.object({
4104
- sessionId: z32.string(),
4105
- rateLimitType: z32.string(),
4106
- resetsAt: z32.string().optional()
4281
+ var CycleCodingAgentKeyRequestSchema = z42.object({
4282
+ sessionId: z42.string(),
4283
+ rateLimitType: z42.string(),
4284
+ resetsAt: z42.string().optional()
4107
4285
  });
4108
- var PostChildChatMessageRequestSchema = z32.object({
4109
- sessionId: z32.string(),
4110
- childTaskId: z32.string(),
4111
- message: z32.string().min(1)
4286
+ var PostChildChatMessageRequestSchema = z42.object({
4287
+ sessionId: z42.string(),
4288
+ childTaskId: z42.string(),
4289
+ message: z42.string().min(1)
4112
4290
  });
4113
- var UpdateChildStatusRequestSchema = z32.object({
4114
- sessionId: z32.string(),
4115
- childTaskId: z32.string(),
4116
- status: z32.string()
4291
+ var UpdateChildStatusRequestSchema = z42.object({
4292
+ sessionId: z42.string(),
4293
+ childTaskId: z42.string(),
4294
+ status: z42.string()
4117
4295
  });
4118
- var GetAgentStatusRequestSchema = z32.object({
4119
- taskId: z32.string()
4296
+ var GetAgentStatusRequestSchema = z42.object({
4297
+ taskId: z42.string()
4120
4298
  });
4121
- var GetUiCliHistoryRequestSchema = z32.object({
4122
- taskId: z32.string()
4299
+ var GetUiCliHistoryRequestSchema = z42.object({
4300
+ taskId: z42.string()
4123
4301
  });
4124
- var GetActivePtySessionRequestSchema = z32.object({
4125
- taskId: z32.string()
4302
+ var GetActivePtySessionRequestSchema = z42.object({
4303
+ taskId: z42.string()
4126
4304
  });
4127
- var ListActivePtySessionsRequestSchema = z32.object({
4128
- taskId: z32.string()
4305
+ var ListActivePtySessionsRequestSchema = z42.object({
4306
+ taskId: z42.string()
4129
4307
  });
4130
- var SendSoftStopRequestSchema = z32.object({
4131
- taskId: z32.string()
4308
+ var SendSoftStopRequestSchema = z42.object({
4309
+ taskId: z42.string()
4132
4310
  });
4133
- var StopTaskSessionRequestSchema = z32.object({
4134
- taskId: z32.string(),
4135
- sessionId: z32.string()
4311
+ var StopTaskSessionRequestSchema = z42.object({
4312
+ taskId: z42.string(),
4313
+ sessionId: z42.string()
4136
4314
  });
4137
- var FlushTaskQueueRequestSchema = z32.object({
4138
- taskId: z32.string(),
4139
- softStop: z32.boolean().optional()
4315
+ var FlushTaskQueueRequestSchema = z42.object({
4316
+ taskId: z42.string(),
4317
+ softStop: z42.boolean().optional()
4140
4318
  });
4141
- var CancelTaskQueuedMessageRequestSchema = z32.object({
4142
- taskId: z32.string(),
4143
- messageId: z32.string()
4319
+ var CancelTaskQueuedMessageRequestSchema = z42.object({
4320
+ taskId: z42.string(),
4321
+ messageId: z42.string()
4144
4322
  });
4145
- var FlushSingleQueuedMessageRequestSchema = z32.object({
4146
- taskId: z32.string(),
4147
- messageId: z32.string(),
4148
- softStop: z32.boolean().optional()
4323
+ var FlushSingleQueuedMessageRequestSchema = z42.object({
4324
+ taskId: z42.string(),
4325
+ messageId: z42.string(),
4326
+ softStop: z42.boolean().optional()
4149
4327
  });
4150
- var AnswerAgentQuestionRequestSchema = z32.object({
4151
- taskId: z32.string(),
4152
- requestId: z32.string(),
4153
- answers: z32.record(z32.string(), z32.string())
4328
+ var AnswerAgentQuestionRequestSchema = z42.object({
4329
+ taskId: z42.string(),
4330
+ requestId: z42.string(),
4331
+ answers: z42.record(z42.string(), z42.string())
4154
4332
  });
4155
- var ClearAgentTodosRequestSchema = z32.object({
4156
- taskId: z32.string()
4333
+ var ClearAgentTodosRequestSchema = z42.object({
4334
+ taskId: z42.string()
4157
4335
  });
4158
- var AgentQuestionOptionSchema = z32.object({
4159
- label: z32.string(),
4160
- description: z32.string(),
4161
- preview: z32.string().optional()
4336
+ var AgentQuestionOptionSchema = z42.object({
4337
+ label: z42.string(),
4338
+ description: z42.string(),
4339
+ preview: z42.string().optional()
4162
4340
  });
4163
- var AgentQuestionSchema = z32.object({
4164
- question: z32.string(),
4165
- header: z32.string(),
4166
- options: z32.array(AgentQuestionOptionSchema),
4167
- multiSelect: z32.boolean().optional()
4341
+ var AgentQuestionSchema = z42.object({
4342
+ question: z42.string(),
4343
+ header: z42.string(),
4344
+ options: z42.array(AgentQuestionOptionSchema),
4345
+ multiSelect: z42.boolean().optional()
4168
4346
  });
4169
- var AskUserQuestionRequestSchema = z32.object({
4170
- sessionId: z32.string(),
4171
- question: z32.string().min(1),
4172
- requestId: z32.string().min(1),
4173
- questions: z32.array(AgentQuestionSchema).min(1)
4347
+ var AskUserQuestionRequestSchema = z42.object({
4348
+ sessionId: z42.string(),
4349
+ question: z42.string().min(1),
4350
+ requestId: z42.string().min(1),
4351
+ questions: z42.array(AgentQuestionSchema).min(1)
4174
4352
  });
4175
- var PostAgentMessageRequestSchema = z32.object({
4176
- sessionId: z32.string().min(1),
4177
- content: z32.string(),
4178
- milestone: z32.enum(["plan_ready", "implementation_complete", "blocked"]).optional()
4353
+ var PostAgentMessageRequestSchema = z42.object({
4354
+ sessionId: z42.string().min(1),
4355
+ content: z42.string(),
4356
+ milestone: z42.enum(["plan_ready", "implementation_complete", "blocked"]).optional()
4179
4357
  });
4180
- var EmitAgentEventRequestSchema = z32.object({
4181
- sessionId: z32.string(),
4182
- events: z32.array(AgentEventSchema).max(500)
4358
+ var EmitAgentEventRequestSchema = z42.object({
4359
+ sessionId: z42.string(),
4360
+ events: z42.array(AgentEventSchema).max(500)
4183
4361
  });
4184
- var RefreshGithubTokenRequestSchema = z32.object({
4185
- sessionId: z32.string(),
4186
- forceFresh: z32.boolean().optional()
4362
+ var RefreshGithubTokenRequestSchema = z42.object({
4363
+ sessionId: z42.string(),
4364
+ forceFresh: z42.boolean().optional()
4187
4365
  });
4188
- var ReportCredentialFailureRequestSchema = z32.object({
4189
- sessionId: z32.string(),
4190
- error: z32.string().max(2e3).optional(),
4191
- tokenShape: z32.string().max(500).optional(),
4192
- healed: z32.boolean().optional()
4366
+ var ReportCredentialFailureRequestSchema = z42.object({
4367
+ sessionId: z42.string(),
4368
+ error: z42.string().max(2e3).optional(),
4369
+ tokenShape: z42.string().max(500).optional(),
4370
+ healed: z42.boolean().optional()
4193
4371
  });
4194
- var ReportReviewSpawnFailureRequestSchema = z32.object({
4195
- sessionId: z32.string(),
4196
- reviewSessionId: z32.string(),
4197
- error: z32.string().max(2e3).optional()
4372
+ var ReportReviewSpawnFailureRequestSchema = z42.object({
4373
+ sessionId: z42.string(),
4374
+ reviewSessionId: z42.string(),
4375
+ error: z42.string().max(2e3).optional()
4198
4376
  });
4199
4377
  var ReportBuilderSpawnFailureRequestSchema = ReportReviewSpawnFailureRequestSchema.omit({
4200
4378
  reviewSessionId: true
4201
- }).extend({ buildSessionId: z32.string() });
4202
- var SpawnTaskSessionRequestSchema = z32.object({
4203
- taskId: z32.string(),
4204
- kind: z32.enum(["tui", "shell"])
4379
+ }).extend({ buildSessionId: z42.string() });
4380
+ var SpawnTaskSessionRequestSchema = z42.object({
4381
+ taskId: z42.string(),
4382
+ kind: z42.enum(["tui", "shell"])
4205
4383
  });
4206
- var StartCodeReviewRequestSchema = z32.object({
4207
- taskId: z32.string(),
4208
- force: z32.boolean().optional()
4384
+ var StartCodeReviewRequestSchema = z42.object({
4385
+ taskId: z42.string(),
4386
+ force: z42.boolean().optional()
4209
4387
  });
4210
- var StopCodeReviewRequestSchema = z32.object({
4211
- taskId: z32.string()
4388
+ var StopCodeReviewRequestSchema = z42.object({
4389
+ taskId: z42.string()
4212
4390
  });
4213
- var ReportSessionSpawnFailureRequestSchema = z32.object({
4214
- sessionId: z32.string(),
4215
- spawnedSessionId: z32.string(),
4216
- error: z32.string().max(2e3).optional()
4391
+ var ReportSessionSpawnFailureRequestSchema = z42.object({
4392
+ sessionId: z42.string(),
4393
+ spawnedSessionId: z42.string(),
4394
+ error: z42.string().max(2e3).optional()
4217
4395
  });
4218
- var RefreshGithubTokenResponseSchema = z32.object({
4219
- token: z32.string()
4396
+ var RefreshGithubTokenResponseSchema = z42.object({
4397
+ token: z42.string()
4220
4398
  });
4221
4399
  var PTY_FRAME_MAX_CHARS = 256 * 1024;
4222
4400
  var PTY_MAX_DIMENSION = 1e3;
4223
- var PtyOutputRequestSchema = z32.object({
4224
- sessionId: z32.string(),
4225
- data: z32.string().max(PTY_FRAME_MAX_CHARS),
4226
- cols: z32.number().int().positive().max(PTY_MAX_DIMENSION).optional(),
4227
- rows: z32.number().int().positive().max(PTY_MAX_DIMENSION).optional()
4401
+ var PtyOutputRequestSchema = z42.object({
4402
+ sessionId: z42.string(),
4403
+ data: z42.string().max(PTY_FRAME_MAX_CHARS),
4404
+ cols: z42.number().int().positive().max(PTY_MAX_DIMENSION).optional(),
4405
+ rows: z42.number().int().positive().max(PTY_MAX_DIMENSION).optional()
4228
4406
  });
4229
- var PtyEndedRequestSchema = z32.object({
4230
- sessionId: z32.string()
4407
+ var PtyEndedRequestSchema = z42.object({
4408
+ sessionId: z42.string()
4231
4409
  });
4232
- var PtyInputRequestSchema = z32.object({
4233
- sessionId: z32.string(),
4234
- data: z32.string().max(PTY_FRAME_MAX_CHARS)
4410
+ var PtyInputRequestSchema = z42.object({
4411
+ sessionId: z42.string(),
4412
+ data: z42.string().max(PTY_FRAME_MAX_CHARS)
4235
4413
  });
4236
- var PtyResizeRequestSchema = z32.object({
4237
- sessionId: z32.string(),
4238
- cols: z32.number().int().positive().max(PTY_MAX_DIMENSION),
4239
- rows: z32.number().int().positive().max(PTY_MAX_DIMENSION)
4414
+ var PtyResizeRequestSchema = z42.object({
4415
+ sessionId: z42.string(),
4416
+ cols: z42.number().int().positive().max(PTY_MAX_DIMENSION),
4417
+ rows: z42.number().int().positive().max(PTY_MAX_DIMENSION)
4240
4418
  });
4241
- var PtyAttachRequestSchema = z32.object({
4242
- sessionId: z32.string()
4419
+ var PtyAttachRequestSchema = z42.object({
4420
+ sessionId: z42.string()
4243
4421
  });
4244
- var ReportPtyStreamRequestSchema = z32.object({
4245
- sessionId: z32.string(),
4246
- port: z32.number().int().positive().max(65535).nullable()
4422
+ var ReportPtyStreamRequestSchema = z42.object({
4423
+ sessionId: z42.string(),
4424
+ port: z42.number().int().positive().max(65535).nullable()
4247
4425
  });
4248
- var ReportPtyInputRequestSchema = z32.object({
4249
- sessionId: z32.string()
4426
+ var ReportPtyInputRequestSchema = z42.object({
4427
+ sessionId: z42.string()
4250
4428
  });
4251
- var GetPtyStreamEndpointRequestSchema = z32.object({
4252
- sessionId: z32.string()
4429
+ var GetPtyStreamEndpointRequestSchema = z42.object({
4430
+ sessionId: z42.string()
4253
4431
  });
4254
- var PtyChatEventPayloadSchema = z32.discriminatedUnion("kind", [
4255
- z32.object({
4256
- kind: z32.literal("init"),
4257
- model: z32.string().max(200),
4258
- claudeSessionId: z32.string().max(100).optional()
4259
- }),
4260
- z32.object({
4261
- kind: z32.literal("user_text"),
4262
- text: z32.string().max(16384),
4263
- // Set by the SERVER (never the agent) when this prompt was injected by
4264
- // Conveyor rather than typed by a human — the routed message's `source`
4265
- // (`ci_success`, `review_trigger`, `automated_feedback`, …). The agent
4266
- // pastes automated messages into the TUI exactly like human prompts, so the
4267
- // CLI records both as plain transcript `user` records; without this the
4268
- // builder chat renders "All CI checks passed on your PR." as the human's
4269
- // own bubble. Absent ⇒ a genuine human prompt.
4270
- source: z32.string().max(60).optional()
4271
- }),
4272
- z32.object({ kind: z32.literal("assistant_text"), text: z32.string().max(16384) }),
4273
- z32.object({
4274
- kind: z32.literal("tool_use"),
4275
- name: z32.string().max(200),
4276
- // Compact preview: JSON.stringify(input) truncated agent-side. The cap
4277
- // matches the text events because AskUserQuestion payloads ride this field
4278
- // and the web lifts them into an interactive card — a tight cap forced
4279
- // option descriptions down to 80 chars, making them unreadable. Every
4280
- // other tool keeps a far smaller agent-side budget (`TOOL_INPUT_MAX` in
4281
- // `chat-record-mapper.ts`), so the ring does not grow for normal calls.
4282
- input: z32.string().max(16384),
4283
- // Transcript tool_use block id — lets the client pair the tool_result.
4284
- id: z32.string().max(100).optional()
4285
- }),
4286
- z32.object({
4287
- kind: z32.literal("tool_result"),
4288
- // tool_use block id this result answers (absent on malformed records).
4289
- toolUseId: z32.string().max(100).optional(),
4290
- // Compact output preview, truncated agent-side.
4291
- output: z32.string().max(2e3),
4292
- isError: z32.boolean().optional()
4293
- }),
4294
- z32.object({ kind: z32.literal("turn_end") })
4295
- ]);
4296
- var PtyChatEventRequestSchema = z32.object({
4297
- sessionId: z32.string(),
4298
- event: PtyChatEventPayloadSchema
4299
- });
4300
- var PtyChatAttachRequestSchema = z32.object({
4301
- sessionId: z32.string()
4302
- });
4303
- var CreatePRResponseSchema = z32.object({
4304
- prNumber: z32.number().int().positive(),
4305
- prUrl: z32.string().url(),
4432
+ var CreatePRResponseSchema = z42.object({
4433
+ prNumber: z42.number().int().positive(),
4434
+ prUrl: z42.string().url(),
4306
4435
  /** Advisory glossary-upkeep note derived from the PR's changed files matched
4307
4436
  * against tag contextPaths — rendered into the tool result, never stored. */
4308
- glossaryNote: z32.string().optional()
4437
+ glossaryNote: z42.string().optional()
4309
4438
  });
4310
- var PostToChatResponseSchema = z32.object({
4311
- messageId: z32.string()
4439
+ var PostToChatResponseSchema = z42.object({
4440
+ messageId: z42.string()
4312
4441
  });
4313
- var UpdateTaskStatusResponseSchema = z32.object({
4314
- taskId: z32.string(),
4315
- status: z32.string()
4442
+ var UpdateTaskStatusResponseSchema = z42.object({
4443
+ taskId: z42.string(),
4444
+ status: z42.string()
4316
4445
  });
4317
- var StoreSessionIdResponseSchema = z32.object({
4318
- success: z32.boolean()
4446
+ var StoreSessionIdResponseSchema = z42.object({
4447
+ success: z42.boolean()
4319
4448
  });
4320
- var HeartbeatResponseSchema = z32.object({
4321
- acknowledged: z32.boolean()
4449
+ var HeartbeatResponseSchema = z42.object({
4450
+ acknowledged: z42.boolean()
4322
4451
  });
4323
- var SessionStartResponseSchema = z32.object({
4324
- sessionId: z32.string(),
4325
- startedAt: z32.string()
4452
+ var SessionStartResponseSchema = z42.object({
4453
+ sessionId: z42.string(),
4454
+ startedAt: z42.string()
4326
4455
  });
4327
- var SessionStopResponseSchema = z32.object({
4328
- sessionId: z32.string(),
4329
- stoppedAt: z32.string()
4456
+ var SessionStopResponseSchema = z42.object({
4457
+ sessionId: z42.string(),
4458
+ stoppedAt: z42.string()
4330
4459
  });
4331
- var DeleteSubtaskResponseSchema = z32.object({
4332
- deleted: z32.boolean()
4460
+ var DeleteSubtaskResponseSchema = z42.object({
4461
+ deleted: z42.boolean()
4333
4462
  });
4334
- var ParkOnCheckResultRequestSchema = z42.object({
4335
- sessionId: z42.string(),
4336
- sha: z42.string().regex(/^[0-9a-f]{7,40}$/i).optional(),
4337
- prNumber: z42.number().int().positive().optional(),
4338
- timeoutMinutes: z42.number().int().min(1).max(MAX_CI_WAIT_TIMEOUT_MINUTES).optional()
4463
+ var ParkOnCheckResultRequestSchema = z52.object({
4464
+ sessionId: z52.string(),
4465
+ sha: z52.string().regex(/^[0-9a-f]{7,40}$/i).optional(),
4466
+ prNumber: z52.number().int().positive().optional(),
4467
+ timeoutMinutes: z52.number().int().min(1).max(MAX_CI_WAIT_TIMEOUT_MINUTES).optional()
4339
4468
  });
4340
4469
  var GIT_BRANCH_NAME_MAX = 255;
4341
4470
  var GIT_BRANCH_NAME_MESSAGE = "Invalid git branch name \u2014 use only letters, numbers, '.', '_', '/' and '-', starting with a letter or number, with no '..', '@{' or '//', and no trailing '/', '-', '.' or '.lock'";
@@ -4349,97 +4478,97 @@ function isValidGitBranchName(name) {
4349
4478
  if (name.endsWith(".") || name.endsWith(".lock")) return false;
4350
4479
  return true;
4351
4480
  }
4352
- var cardDescription2 = z52.string().max(CARD_DESCRIPTION_MAX, CARD_DESCRIPTION_LIMIT_MESSAGE).optional();
4353
- var ListAccessibleProjectsRequestSchema = z52.object({
4354
- pageSize: z52.number().int().positive().max(100).optional().default(100)
4481
+ var cardDescription2 = z62.string().max(CARD_DESCRIPTION_MAX, CARD_DESCRIPTION_LIMIT_MESSAGE).optional();
4482
+ var ListAccessibleProjectsRequestSchema = z62.object({
4483
+ pageSize: z62.number().int().positive().max(100).optional().default(100)
4355
4484
  });
4356
- var ListProjectTasksRequestSchema = z52.object({
4357
- projectId: z52.string(),
4358
- status: z52.string().optional(),
4485
+ var ListProjectTasksRequestSchema = z62.object({
4486
+ projectId: z62.string(),
4487
+ status: z62.string().optional(),
4359
4488
  // Card types to include. Omitted/empty → defaults to ["task"] in the handler
4360
4489
  // (mirrors searchProjectTasks) so listing doesn't surface incidents/suggestions
4361
4490
  // unless asked. Enum validation lives at the MCP tool layer.
4362
- typeFilters: z52.array(z52.string()).optional(),
4363
- assigneeId: z52.string().optional(),
4364
- unassigned: z52.boolean().optional(),
4491
+ typeFilters: z62.array(z62.string()).optional(),
4492
+ assigneeId: z62.string().optional(),
4493
+ unassigned: z62.boolean().optional(),
4365
4494
  // Scope to a sub-project board when provided. Unlike the board layer's `?? null`
4366
4495
  // semantics, agents default to seeing the whole project when omitted.
4367
- subProjectId: z52.string().nullable().optional(),
4496
+ subProjectId: z62.string().nullable().optional(),
4368
4497
  // Plain equality on the on-hold flag: true = only parked cards, false =
4369
4498
  // exclude them, omitted = both. Deliberately NOT the board's
4370
4499
  // includeOnHold/surfaceActiveWork bucketing — an agent sweeping a backlog
4371
4500
  // needs the raw column, not a column projection.
4372
- onHold: z52.boolean().optional(),
4373
- limit: z52.number().int().positive().optional().default(50)
4501
+ onHold: z62.boolean().optional(),
4502
+ limit: z62.number().int().positive().optional().default(50)
4374
4503
  }).refine((p) => !(p.unassigned && p.assigneeId), {
4375
4504
  message: "Pass either assigneeId or unassigned, not both"
4376
4505
  });
4377
- var GetProjectTaskRequestSchema = z52.object({
4378
- projectId: z52.string(),
4379
- taskId: z52.string()
4506
+ var GetProjectTaskRequestSchema = z62.object({
4507
+ projectId: z62.string(),
4508
+ taskId: z62.string()
4380
4509
  });
4381
- var SearchProjectTasksRequestSchema = z52.object({
4382
- projectId: z52.string(),
4510
+ var SearchProjectTasksRequestSchema = z62.object({
4511
+ projectId: z62.string(),
4383
4512
  // Tag names, matched case-insensitively against the project glossary.
4384
- tagNames: z52.array(z52.string()).optional(),
4513
+ tagNames: z62.array(z62.string()).optional(),
4385
4514
  // How to combine tagNames: "any" (default) = carries at least one,
4386
4515
  // "all" = carries every one.
4387
- tagMatch: z52.enum(["any", "all"]).optional(),
4516
+ tagMatch: z62.enum(["any", "all"]).optional(),
4388
4517
  // Expand each named tag to its descendants in the tag DAG before matching,
4389
4518
  // so a parent tag sweeps its whole area. Default false.
4390
- includeChildTags: z52.boolean().optional(),
4391
- searchQuery: z52.string().optional(),
4392
- statusFilters: z52.array(z52.string()).optional(),
4519
+ includeChildTags: z62.boolean().optional(),
4520
+ searchQuery: z62.string().optional(),
4521
+ statusFilters: z62.array(z62.string()).optional(),
4393
4522
  // Card types to include. Omitted/empty → defaults to ["task"] in the handler so
4394
4523
  // search doesn't surface incidents/suggestions unless asked. Enum validation lives
4395
4524
  // at the MCP tool layer (mirrors statusFilters).
4396
- typeFilters: z52.array(z52.string()).optional(),
4397
- assigneeId: z52.string().optional(),
4398
- unassigned: z52.boolean().optional(),
4525
+ typeFilters: z62.array(z62.string()).optional(),
4526
+ assigneeId: z62.string().optional(),
4527
+ unassigned: z62.boolean().optional(),
4399
4528
  // Scope to a sub-project board when provided. Unlike the board layer's `?? null`
4400
4529
  // semantics, agents default to seeing the whole project when omitted.
4401
- subProjectId: z52.string().nullable().optional(),
4402
- limit: z52.number().int().positive().optional().default(20)
4530
+ subProjectId: z62.string().nullable().optional(),
4531
+ limit: z62.number().int().positive().optional().default(20)
4403
4532
  }).refine((p) => !(p.unassigned && p.assigneeId), {
4404
4533
  message: "Pass either assigneeId or unassigned, not both"
4405
4534
  });
4406
- var ListProjectTagsRequestSchema = z52.object({
4407
- projectId: z52.string(),
4535
+ var ListProjectTagsRequestSchema = z62.object({
4536
+ projectId: z62.string(),
4408
4537
  /** "summary" (default) omits inline context links; "full" includes them. */
4409
- detail: z52.enum(["summary", "full"]).optional()
4538
+ detail: z62.enum(["summary", "full"]).optional()
4410
4539
  });
4411
- var GetProjectTagRequestSchema = z52.object({
4412
- projectId: z52.string(),
4540
+ var GetProjectTagRequestSchema = z62.object({
4541
+ projectId: z62.string(),
4413
4542
  /** Tag id or exact (case-insensitive) tag name. */
4414
- tag: z52.string().min(1).max(100)
4543
+ tag: z62.string().min(1).max(100)
4415
4544
  });
4416
- var ListProjectTagAttachmentsRequestSchema = z52.object({
4417
- projectId: z52.string(),
4545
+ var ListProjectTagAttachmentsRequestSchema = z62.object({
4546
+ projectId: z62.string(),
4418
4547
  /** Tag id or exact (case-insensitive) tag name. */
4419
- tag: z52.string().min(1).max(100),
4420
- limit: z52.number().int().min(1).max(60).optional(),
4421
- offset: z52.number().int().min(0).optional()
4548
+ tag: z62.string().min(1).max(100),
4549
+ limit: z62.number().int().min(1).max(60).optional(),
4550
+ offset: z62.number().int().min(0).optional()
4422
4551
  });
4423
- var SetProjectFileTagsRequestSchema = z52.object({
4424
- projectId: z52.string(),
4425
- taskId: z52.string(),
4426
- fileId: z52.string(),
4427
- tags: z52.array(z52.string().min(1).max(MAX_FILE_TAG_LENGTH)).max(MAX_FILE_TAGS2),
4428
- requestingUserId: z52.string().optional()
4552
+ var SetProjectFileTagsRequestSchema = z62.object({
4553
+ projectId: z62.string(),
4554
+ taskId: z62.string(),
4555
+ fileId: z62.string(),
4556
+ tags: z62.array(z62.string().min(1).max(MAX_FILE_TAG_LENGTH)).max(MAX_FILE_TAGS2),
4557
+ requestingUserId: z62.string().optional()
4429
4558
  });
4430
- var GetProjectSummaryRequestSchema = z52.object({
4431
- projectId: z52.string()
4559
+ var GetProjectSummaryRequestSchema = z62.object({
4560
+ projectId: z62.string()
4432
4561
  });
4433
- var GetProjectOnboardingStatusRequestSchema = z52.object({
4434
- projectId: z52.string()
4562
+ var GetProjectOnboardingStatusRequestSchema = z62.object({
4563
+ projectId: z62.string()
4435
4564
  });
4436
- var GetProjectOnboardingStepRequestSchema = z52.object({
4437
- projectId: z52.string()
4565
+ var GetProjectOnboardingStepRequestSchema = z62.object({
4566
+ projectId: z62.string()
4438
4567
  });
4439
- var GetProjectConnectUrlsRequestSchema = z52.object({
4440
- projectId: z52.string()
4568
+ var GetProjectConnectUrlsRequestSchema = z62.object({
4569
+ projectId: z62.string()
4441
4570
  });
4442
- var conveyorCapabilitySchema = z52.enum([
4571
+ var conveyorCapabilitySchema = z62.enum([
4443
4572
  "read",
4444
4573
  "create",
4445
4574
  "update",
@@ -4447,604 +4576,621 @@ var conveyorCapabilitySchema = z52.enum([
4447
4576
  "files",
4448
4577
  "build"
4449
4578
  ]);
4450
- var GetConnectionContextRequestSchema = z52.object({
4451
- projectId: z52.string(),
4579
+ var GetConnectionContextRequestSchema = z62.object({
4580
+ projectId: z62.string(),
4452
4581
  // Optional board scope (CONVEYOR_SUBPROJECT_ID). Validated to belong to the
4453
4582
  // project in the handler; an invalid/foreign id is reported, not silently
4454
4583
  // dropped, so a mis-scoped connection is never presented as board-specific.
4455
- subProjectId: z52.string().nullable().optional()
4584
+ subProjectId: z62.string().nullable().optional()
4456
4585
  });
4457
- var VerifyConnectionRequestSchema = z52.object({
4458
- projectId: z52.string(),
4459
- subProjectId: z52.string().nullable().optional(),
4460
- intendedActions: z52.array(conveyorCapabilitySchema).optional()
4586
+ var VerifyConnectionRequestSchema = z62.object({
4587
+ projectId: z62.string(),
4588
+ subProjectId: z62.string().nullable().optional(),
4589
+ intendedActions: z62.array(conveyorCapabilitySchema).optional()
4461
4590
  });
4462
- var ListAccessibleSubprojectsRequestSchema = z52.object({
4463
- projectId: z52.string()
4591
+ var ListAccessibleSubprojectsRequestSchema = z62.object({
4592
+ projectId: z62.string()
4464
4593
  });
4465
- var CreateProjectTaskRequestSchema = z52.object({
4466
- projectId: z52.string(),
4467
- title: z52.string().min(1),
4594
+ var CreateProjectTaskRequestSchema = z62.object({
4595
+ projectId: z62.string(),
4596
+ title: z62.string().min(1),
4468
4597
  description: cardDescription2,
4469
- plan: z52.string().optional(),
4470
- status: z52.string().optional(),
4598
+ plan: z62.string().optional(),
4599
+ status: z62.string().optional(),
4471
4600
  // Assign to a sub-project board. Validated to belong to `projectId` in the handler.
4472
- subProjectId: z52.string().nullable().optional(),
4473
- requestingUserId: z52.string().optional()
4601
+ subProjectId: z62.string().nullable().optional(),
4602
+ // Priority value. Resolved to the project's configured Priority row in the
4603
+ // handler, which rejects an unconfigured value before the card is written.
4604
+ priorityValue: z62.number().int().positive().optional(),
4605
+ requestingUserId: z62.string().optional()
4474
4606
  });
4475
- var SetProjectTaskParentRequestSchema = z52.object({
4476
- projectId: z52.string(),
4607
+ var SetProjectTaskParentRequestSchema = z62.object({
4608
+ projectId: z62.string(),
4477
4609
  /** Card to move — id or slug. */
4478
- taskId: z52.string().min(1),
4610
+ taskId: z62.string().min(1),
4479
4611
  /** New parent (id or slug), or null to detach. */
4480
- parentTaskId: z52.string().min(1).nullable(),
4481
- ordinal: z52.number().int().nonnegative().optional(),
4482
- followParentStatus: z52.boolean().optional(),
4483
- requestingUserId: z52.string().optional()
4612
+ parentTaskId: z62.string().min(1).nullable(),
4613
+ ordinal: z62.number().int().nonnegative().optional(),
4614
+ followParentStatus: z62.boolean().optional(),
4615
+ requestingUserId: z62.string().optional()
4484
4616
  }).strict();
4485
- var UpdateProjectTaskRequestSchema = z52.object({
4486
- projectId: z52.string(),
4487
- taskId: z52.string(),
4488
- title: z52.string().optional(),
4617
+ var UpdateProjectTaskRequestSchema = z62.object({
4618
+ projectId: z62.string(),
4619
+ taskId: z62.string(),
4620
+ title: z62.string().optional(),
4489
4621
  description: cardDescription2,
4490
- plan: z52.string().optional(),
4622
+ plan: z62.string().optional(),
4491
4623
  // Enum validation lives at the MCP tool layer (mirrors createProjectTask);
4492
4624
  // the handler routes through the shared updateStatus core (InProgress
4493
4625
  // dependency check + cleanup/board/Slack side effects), not the stricter
4494
4626
  // card-type-validating path the Socket.IO updateTaskStatus mutation uses.
4495
- status: z52.string().optional(),
4627
+ status: z62.string().optional(),
4496
4628
  // Canonical risk level, or null to clear. Resolved to the project's
4497
4629
  // configured Risk row (by rank) in the handler.
4498
4630
  risk: riskLevelSchema.nullable().optional(),
4499
4631
  // Story-point value, or null to clear. Resolved to the project's configured
4500
4632
  // StoryPoint row in the handler, which rejects an unconfigured value.
4501
- storyPointValue: z52.number().int().positive().nullable().optional(),
4502
- assignedUserId: z52.string().nullish(),
4633
+ storyPointValue: z62.number().int().positive().nullable().optional(),
4634
+ // Priority value, or null to clear. Resolved to the project's configured
4635
+ // Priority row in the handler, which rejects an unconfigured value.
4636
+ priorityValue: z62.number().int().positive().nullable().optional(),
4637
+ assignedUserId: z62.string().nullish(),
4503
4638
  // Move to a different sub-project board, or null to move to the parent board.
4504
4639
  // Validated to belong to `projectId` in the handler.
4505
- subProjectId: z52.string().nullable().optional(),
4640
+ subProjectId: z62.string().nullable().optional(),
4506
4641
  // Record the task's ACTUAL working branch (e.g. a locally-driven pack's
4507
4642
  // branch, so identification never mints a competing name and pack-child
4508
4643
  // merge handling matches reality), or null to detach. Guarded in the
4509
4644
  // handler: the ref must exist on origin and no live workspace may be bound
4510
4645
  // to a different branch.
4511
- githubBranch: z52.string().min(1).max(GIT_BRANCH_NAME_MAX).refine(isValidGitBranchName, { message: GIT_BRANCH_NAME_MESSAGE }).nullable().optional(),
4646
+ githubBranch: z62.string().min(1).max(GIT_BRANCH_NAME_MAX).refine(isValidGitBranchName, { message: GIT_BRANCH_NAME_MESSAGE }).nullable().optional(),
4512
4647
  // Park the card on hold (true) or return it to the active board (false).
4513
4648
  // The handler mirrors the web path's two side effects: a board re-bucket
4514
4649
  // event, and demotion to Open when an active-work card is parked.
4515
- onHold: z52.boolean().optional(),
4516
- requestingUserId: z52.string().optional()
4650
+ onHold: z62.boolean().optional(),
4651
+ requestingUserId: z62.string().optional()
4517
4652
  }).strict().refine(
4518
- (v) => v.title !== void 0 || v.description !== void 0 || v.plan !== void 0 || v.status !== void 0 || v.risk !== void 0 || v.storyPointValue !== void 0 || v.assignedUserId !== void 0 || v.subProjectId !== void 0 || v.githubBranch !== void 0 || v.onHold !== void 0,
4653
+ (v) => v.title !== void 0 || v.description !== void 0 || v.plan !== void 0 || v.status !== void 0 || v.risk !== void 0 || v.storyPointValue !== void 0 || v.priorityValue !== void 0 || v.assignedUserId !== void 0 || v.subProjectId !== void 0 || v.githubBranch !== void 0 || v.onHold !== void 0,
4519
4654
  {
4520
- message: "update_task requires at least one field to change (title, description, plan, status, risk, storyPointValue, assignedUserId, subProjectId, githubBranch, or onHold)"
4655
+ message: "update_task requires at least one field to change (title, description, plan, status, risk, storyPointValue, priorityValue, assignedUserId, subProjectId, githubBranch, or onHold)"
4521
4656
  }
4522
4657
  );
4523
- var TransitionProjectTaskStatusRequestSchema = z52.object({
4524
- projectId: z52.string(),
4525
- taskId: z52.string(),
4526
- toStatus: z52.string(),
4527
- expectedFromStatus: z52.string().optional(),
4658
+ var TransitionProjectTaskStatusRequestSchema = z62.object({
4659
+ projectId: z62.string(),
4660
+ taskId: z62.string(),
4661
+ toStatus: z62.string(),
4662
+ expectedFromStatus: z62.string().optional(),
4528
4663
  // Optional raise-only risk to attempt alongside the transition
4529
4664
  // (approve → low, request_changes → medium by default).
4530
4665
  risk: riskLevelSchema.optional(),
4531
- requestingUserId: z52.string().optional()
4532
- });
4533
- var MoveProjectCardRequestSchema = z52.object({
4534
- projectId: z52.string(),
4535
- taskId: z52.string(),
4536
- destinationProjectId: z52.string(),
4537
- requestingUserId: z52.string().optional()
4538
- });
4539
- var PostToProjectTaskChatRequestSchema = z52.object({
4540
- projectId: z52.string(),
4541
- taskId: z52.string(),
4542
- content: z52.string(),
4543
- requestingUserId: z52.string().optional()
4544
- });
4545
- var GetProjectTaskCliRequestSchema = z52.object({
4546
- projectId: z52.string(),
4547
- taskId: z52.string(),
4548
- limit: z52.number().int().positive().optional().default(50),
4549
- source: z52.string().optional()
4550
- });
4551
- var GetProjectTaskSessionsRequestSchema = z52.object({
4552
- projectId: z52.string(),
4553
- taskId: z52.string()
4554
- });
4555
- var QueryProjectGcpLogsRequestSchema = z52.object({
4556
- projectId: z52.string(),
4557
- env: z52.enum(["prod", "dev", "claudespace"]).optional(),
4558
- severity: z52.enum(["DEBUG", "INFO", "NOTICE", "WARNING", "ERROR", "CRITICAL", "ALERT", "EMERGENCY"]).optional(),
4559
- services: z52.array(z52.string().min(1).max(200)).max(25).optional(),
4560
- sqlInstances: z52.array(z52.string().min(1).max(200)).max(25).optional(),
4561
- allServices: z52.boolean().optional(),
4562
- search: z52.string().max(256).optional(),
4563
- filter: z52.string().max(1e3).optional(),
4564
- startTime: z52.string().optional(),
4565
- endTime: z52.string().optional(),
4566
- limit: z52.number().int().min(1).max(200).optional().default(50),
4567
- pageToken: z52.string().max(4096).optional()
4568
- });
4569
- var QueryProjectGrafanaLogsRequestSchema = z52.object({
4570
- projectId: z52.string(),
4571
- env: z52.enum(["prod", "dev"]).optional(),
4572
- services: z52.array(z52.string().min(1).max(200)).max(25).optional(),
4573
- level: z52.enum(["debug", "info", "warn", "error", "fatal"]).optional(),
4574
- search: z52.string().max(256).optional(),
4575
- logql: z52.string().max(2e3).optional(),
4576
- startTime: z52.string().optional(),
4577
- endTime: z52.string().optional(),
4578
- limit: z52.number().int().min(1).max(200).optional().default(50)
4579
- });
4580
- var driveFileNameSchema = z52.string().min(1).max(255).regex(/^[^/\\\r\n]+$/, "File names cannot contain slashes or line breaks");
4666
+ requestingUserId: z62.string().optional()
4667
+ });
4668
+ var MoveProjectCardRequestSchema = z62.object({
4669
+ projectId: z62.string(),
4670
+ taskId: z62.string(),
4671
+ destinationProjectId: z62.string(),
4672
+ requestingUserId: z62.string().optional()
4673
+ });
4674
+ var PostToProjectTaskChatRequestSchema = z62.object({
4675
+ projectId: z62.string(),
4676
+ taskId: z62.string(),
4677
+ content: z62.string(),
4678
+ requestingUserId: z62.string().optional()
4679
+ });
4680
+ var GetProjectTaskCliRequestSchema = z62.object({
4681
+ projectId: z62.string(),
4682
+ taskId: z62.string(),
4683
+ limit: z62.number().int().positive().optional().default(50),
4684
+ source: z62.string().optional()
4685
+ });
4686
+ var GetProjectTaskSessionsRequestSchema = z62.object({
4687
+ projectId: z62.string(),
4688
+ taskId: z62.string()
4689
+ });
4690
+ var QueryProjectGcpLogsRequestSchema = z62.object({
4691
+ projectId: z62.string(),
4692
+ env: z62.enum(["prod", "dev", "claudespace"]).optional(),
4693
+ severity: z62.enum(["DEBUG", "INFO", "NOTICE", "WARNING", "ERROR", "CRITICAL", "ALERT", "EMERGENCY"]).optional(),
4694
+ services: z62.array(z62.string().min(1).max(200)).max(25).optional(),
4695
+ sqlInstances: z62.array(z62.string().min(1).max(200)).max(25).optional(),
4696
+ allServices: z62.boolean().optional(),
4697
+ search: z62.string().max(256).optional(),
4698
+ filter: z62.string().max(1e3).optional(),
4699
+ startTime: z62.string().optional(),
4700
+ endTime: z62.string().optional(),
4701
+ limit: z62.number().int().min(1).max(200).optional().default(50),
4702
+ pageToken: z62.string().max(4096).optional()
4703
+ });
4704
+ var QueryProjectGrafanaLogsRequestSchema = z62.object({
4705
+ projectId: z62.string(),
4706
+ env: z62.enum(["prod", "dev"]).optional(),
4707
+ services: z62.array(z62.string().min(1).max(200)).max(25).optional(),
4708
+ level: z62.enum(["debug", "info", "warn", "error", "fatal"]).optional(),
4709
+ search: z62.string().max(256).optional(),
4710
+ logql: z62.string().max(2e3).optional(),
4711
+ startTime: z62.string().optional(),
4712
+ endTime: z62.string().optional(),
4713
+ limit: z62.number().int().min(1).max(200).optional().default(50)
4714
+ });
4715
+ var driveFileNameSchema = z62.string().min(1).max(255).regex(/^[^/\\\r\n]+$/, "File names cannot contain slashes or line breaks");
4581
4716
  var DRIVE_MAX_CONTENT_CHARS = 1e6;
4582
- var ListProjectDriveFilesRequestSchema = z52.object({
4583
- projectId: z52.string(),
4584
- folderId: z52.string().max(200).optional(),
4585
- search: z52.string().max(200).optional(),
4586
- limit: z52.number().int().min(1).max(200).optional()
4587
- });
4588
- var ReadProjectDriveFileRequestSchema = z52.object({
4589
- projectId: z52.string(),
4590
- fileId: z52.string().min(1).max(200)
4591
- });
4592
- var CreateProjectDriveFileRequestSchema = z52.object({
4593
- projectId: z52.string(),
4717
+ var ListProjectDriveFilesRequestSchema = z62.object({
4718
+ projectId: z62.string(),
4719
+ folderId: z62.string().max(200).optional(),
4720
+ search: z62.string().max(200).optional(),
4721
+ limit: z62.number().int().min(1).max(200).optional()
4722
+ });
4723
+ var ReadProjectDriveFileRequestSchema = z62.object({
4724
+ projectId: z62.string(),
4725
+ fileId: z62.string().min(1).max(200)
4726
+ });
4727
+ var CreateProjectDriveFileRequestSchema = z62.object({
4728
+ projectId: z62.string(),
4594
4729
  name: driveFileNameSchema,
4595
- content: z52.string().max(DRIVE_MAX_CONTENT_CHARS),
4596
- mimeType: z52.string().max(200).optional(),
4597
- folderId: z52.string().max(200).optional()
4598
- });
4599
- var UpdateProjectDriveFileRequestSchema = z52.object({
4600
- projectId: z52.string(),
4601
- fileId: z52.string().min(1).max(200),
4602
- content: z52.string().max(DRIVE_MAX_CONTENT_CHARS),
4603
- mimeType: z52.string().max(200).optional()
4604
- });
4605
- var DeleteProjectDriveFileRequestSchema = z52.object({
4606
- projectId: z52.string(),
4607
- fileId: z52.string().min(1).max(200)
4608
- });
4609
- var CreateProjectDriveFolderRequestSchema = z52.object({
4610
- projectId: z52.string(),
4730
+ content: z62.string().max(DRIVE_MAX_CONTENT_CHARS),
4731
+ mimeType: z62.string().max(200).optional(),
4732
+ folderId: z62.string().max(200).optional()
4733
+ });
4734
+ var UpdateProjectDriveFileRequestSchema = z62.object({
4735
+ projectId: z62.string(),
4736
+ fileId: z62.string().min(1).max(200),
4737
+ content: z62.string().max(DRIVE_MAX_CONTENT_CHARS),
4738
+ mimeType: z62.string().max(200).optional()
4739
+ });
4740
+ var DeleteProjectDriveFileRequestSchema = z62.object({
4741
+ projectId: z62.string(),
4742
+ fileId: z62.string().min(1).max(200)
4743
+ });
4744
+ var CreateProjectDriveFolderRequestSchema = z62.object({
4745
+ projectId: z62.string(),
4611
4746
  name: driveFileNameSchema,
4612
- folderId: z52.string().max(200).optional()
4747
+ folderId: z62.string().max(200).optional()
4613
4748
  });
4614
- var StartProjectBuildRequestSchema = z52.object({
4615
- projectId: z52.string(),
4616
- taskId: z52.string(),
4617
- requestingUserId: z52.string().optional()
4749
+ var StartProjectBuildRequestSchema = z62.object({
4750
+ projectId: z62.string(),
4751
+ taskId: z62.string(),
4752
+ requestingUserId: z62.string().optional()
4618
4753
  });
4619
- var StopProjectBuildRequestSchema = z52.object({
4620
- projectId: z52.string(),
4621
- taskId: z52.string(),
4622
- requestingUserId: z52.string().optional()
4754
+ var StopProjectBuildRequestSchema = z62.object({
4755
+ projectId: z62.string(),
4756
+ taskId: z62.string(),
4757
+ requestingUserId: z62.string().optional()
4623
4758
  });
4624
- var StartProjectWorkspaceRequestSchema = z52.object({
4625
- projectId: z52.string(),
4626
- requestingUserId: z52.string().optional()
4759
+ var StartProjectWorkspaceRequestSchema = z62.object({
4760
+ projectId: z62.string(),
4761
+ requestingUserId: z62.string().optional()
4627
4762
  });
4628
- var StopProjectWorkspaceRequestSchema = z52.object({
4629
- projectId: z52.string(),
4630
- destroy: z52.boolean().optional(),
4631
- requestingUserId: z52.string().optional()
4763
+ var StopProjectWorkspaceRequestSchema = z62.object({
4764
+ projectId: z62.string(),
4765
+ destroy: z62.boolean().optional(),
4766
+ requestingUserId: z62.string().optional()
4632
4767
  });
4633
- var ListMyLiveSessionsRequestSchema = z52.object({
4634
- projectId: z52.string(),
4768
+ var ListMyLiveSessionsRequestSchema = z62.object({
4769
+ projectId: z62.string(),
4635
4770
  /** Admin-only: list another member's sessions instead of the caller's. */
4636
- targetUserId: z52.string().optional()
4771
+ targetUserId: z62.string().optional()
4637
4772
  });
4638
- var ListProjectSessionGroupsRequestSchema = z52.object({
4639
- projectId: z52.string()
4773
+ var ListProjectSessionGroupsRequestSchema = z62.object({
4774
+ projectId: z62.string()
4640
4775
  });
4641
- var ListMyLiveSessionsAcrossProjectsRequestSchema = z52.object({});
4642
- var ListSessionGroupsAcrossProjectsRequestSchema = z52.object({});
4643
- var GetProjectAvailableTuisRequestSchema = z52.object({
4644
- projectId: z52.string()
4776
+ var ListMyLiveSessionsAcrossProjectsRequestSchema = z62.object({});
4777
+ var ListSessionGroupsAcrossProjectsRequestSchema = z62.object({});
4778
+ var GetProjectAvailableTuisRequestSchema = z62.object({
4779
+ projectId: z62.string()
4645
4780
  });
4646
- var StartAdhocSessionRequestSchema = z52.object({
4647
- projectId: z52.string(),
4648
- label: z52.string().max(200).optional(),
4781
+ var StartAdhocSessionRequestSchema = z62.object({
4782
+ projectId: z62.string(),
4783
+ label: z62.string().max(200).optional(),
4649
4784
  /** Coding-agent key to launch under — validated pick-time (ownership + TUI availability) in the handler. */
4650
- codingAgentKeyId: z52.string().optional(),
4785
+ codingAgentKeyId: z62.string().optional(),
4651
4786
  /** Model override (Claude model id) — overrides the launch key's own model. */
4652
- model: z52.string().max(200).optional(),
4787
+ model: z62.string().max(200).optional(),
4653
4788
  /**
4654
4789
  * Session role. Constrained: other task-less modes fall through to the pm
4655
4790
  * runner in the pod entrypoint, and "review" would crash without a task.
4656
4791
  */
4657
- mode: z52.enum(["adhoc", "pm"]).optional(),
4792
+ mode: z62.enum(["adhoc", "pm"]).optional(),
4658
4793
  /** Base branch to check out (defaults to the project's dev branch). */
4659
- branch: z52.string().max(300).optional(),
4794
+ branch: z62.string().max(300).optional(),
4660
4795
  /**
4661
4796
  * Server-assembled instructions the pod's TUI auto-submits once on first boot
4662
4797
  * (headless kickoff). Used by the onboarding "Set it up for me" flow to seed a
4663
4798
  * setup-driver prompt; the session stays watchable/interactive in the Sessions
4664
4799
  * view. `ensureAdhocWorkspace` persists it and clears it after first submit.
4665
4800
  */
4666
- initialPrompt: z52.string().max(2e4).optional(),
4667
- requestingUserId: z52.string().optional()
4668
- });
4669
- var StopAdhocSessionRequestSchema = z52.object({
4670
- projectId: z52.string(),
4671
- workspaceId: z52.string(),
4672
- destroy: z52.boolean().optional(),
4673
- requestingUserId: z52.string().optional()
4674
- });
4675
- var ResumeAdhocSessionRequestSchema = z52.object({
4676
- projectId: z52.string(),
4677
- workspaceId: z52.string(),
4678
- requestingUserId: z52.string().optional()
4679
- });
4680
- var RefreshCodingAgentKeyUsageRequestSchema = z52.object({
4681
- projectId: z52.string(),
4682
- keyId: z52.string().optional(),
4683
- requestingUserId: z52.string().optional()
4684
- });
4685
- var ListKeysToProbeRequestSchema = z52.object({
4686
- sessionId: z52.string()
4687
- });
4688
- var CreateProjectReleaseRequestSchema = z52.object({
4689
- projectId: z52.string(),
4690
- taskIds: z52.array(z52.string()).optional(),
4691
- requestingUserId: z52.string().optional()
4692
- });
4693
- var AddTasksToProjectReleaseRequestSchema = z52.object({
4694
- projectId: z52.string(),
4695
- taskIds: z52.array(z52.string()).min(1),
4696
- requestingUserId: z52.string().optional()
4697
- });
4698
- var ApproveProjectMergePRRequestSchema = z52.object({
4699
- projectId: z52.string(),
4700
- childTaskId: z52.string(),
4701
- requestingUserId: z52.string().optional()
4702
- });
4703
- var ListProjectSubtasksRequestSchema = z52.object({
4704
- projectId: z52.string(),
4705
- taskId: z52.string()
4706
- });
4707
- var CreateProjectSubtaskRequestSchema = z52.object({
4708
- projectId: z52.string(),
4709
- parentTaskId: z52.string(),
4710
- title: z52.string().min(1),
4801
+ initialPrompt: z62.string().max(2e4).optional(),
4802
+ requestingUserId: z62.string().optional()
4803
+ });
4804
+ var StopAdhocSessionRequestSchema = z62.object({
4805
+ projectId: z62.string(),
4806
+ workspaceId: z62.string(),
4807
+ destroy: z62.boolean().optional(),
4808
+ requestingUserId: z62.string().optional()
4809
+ });
4810
+ var ResumeAdhocSessionRequestSchema = z62.object({
4811
+ projectId: z62.string(),
4812
+ workspaceId: z62.string(),
4813
+ requestingUserId: z62.string().optional()
4814
+ });
4815
+ var RefreshCodingAgentKeyUsageRequestSchema = z62.object({
4816
+ projectId: z62.string(),
4817
+ keyId: z62.string().optional(),
4818
+ requestingUserId: z62.string().optional()
4819
+ });
4820
+ var ListKeysToProbeRequestSchema = z62.object({
4821
+ sessionId: z62.string()
4822
+ });
4823
+ var CreateProjectReleaseRequestSchema = z62.object({
4824
+ projectId: z62.string(),
4825
+ taskIds: z62.array(z62.string()).optional(),
4826
+ requestingUserId: z62.string().optional()
4827
+ });
4828
+ var AddTasksToProjectReleaseRequestSchema = z62.object({
4829
+ projectId: z62.string(),
4830
+ taskIds: z62.array(z62.string()).min(1),
4831
+ requestingUserId: z62.string().optional()
4832
+ });
4833
+ var ApproveProjectMergePRRequestSchema = z62.object({
4834
+ projectId: z62.string(),
4835
+ childTaskId: z62.string(),
4836
+ requestingUserId: z62.string().optional()
4837
+ });
4838
+ var ListProjectSubtasksRequestSchema = z62.object({
4839
+ projectId: z62.string(),
4840
+ taskId: z62.string()
4841
+ });
4842
+ var CreateProjectSubtaskRequestSchema = z62.object({
4843
+ projectId: z62.string(),
4844
+ parentTaskId: z62.string(),
4845
+ title: z62.string().min(1),
4711
4846
  description: cardDescription2,
4712
- plan: z52.string().optional(),
4713
- ordinal: z52.number().int().nonnegative().optional(),
4714
- storyPointValue: z52.number().int().positive().optional(),
4715
- followParentStatus: z52.boolean().optional(),
4847
+ plan: z62.string().optional(),
4848
+ ordinal: z62.number().int().nonnegative().optional(),
4849
+ storyPointValue: z62.number().int().positive().optional(),
4850
+ followParentStatus: z62.boolean().optional(),
4716
4851
  /** Sibling subtask ids or slugs this subtask blocks on (explicit dependency
4717
4852
  * metadata — preferred over encoding order in plan text / ordinal). */
4718
- dependsOn: z52.array(z52.string().min(1)).max(32).optional(),
4719
- requestingUserId: z52.string().optional()
4853
+ dependsOn: z62.array(z62.string().min(1)).max(32).optional(),
4854
+ requestingUserId: z62.string().optional()
4720
4855
  });
4721
- var UpdateProjectSubtaskRequestSchema = z52.object({
4722
- projectId: z52.string(),
4723
- subtaskId: z52.string(),
4724
- title: z52.string().optional(),
4856
+ var UpdateProjectSubtaskRequestSchema = z62.object({
4857
+ projectId: z62.string(),
4858
+ subtaskId: z62.string(),
4859
+ title: z62.string().optional(),
4725
4860
  description: cardDescription2,
4726
- plan: z52.string().optional(),
4727
- status: z52.string().optional(),
4728
- ordinal: z52.number().int().nonnegative().optional(),
4729
- storyPointValue: z52.number().int().positive().optional(),
4730
- followParentStatus: z52.boolean().optional(),
4861
+ plan: z62.string().optional(),
4862
+ status: z62.string().optional(),
4863
+ ordinal: z62.number().int().nonnegative().optional(),
4864
+ storyPointValue: z62.number().int().positive().optional(),
4865
+ followParentStatus: z62.boolean().optional(),
4731
4866
  /** Replace-set of sibling subtask ids/slugs this subtask blocks on ([] clears).
4732
4867
  * Mirrors the in-pod updateSubtask semantics. */
4733
- dependsOn: z52.array(z52.string().min(1)).max(32).optional(),
4734
- requestingUserId: z52.string().optional()
4735
- });
4736
- var DeleteProjectSubtaskRequestSchema = z52.object({
4737
- projectId: z52.string(),
4738
- subtaskId: z52.string(),
4739
- requestingUserId: z52.string().optional()
4740
- });
4741
- var GetProjectTaskChatRequestSchema = z52.object({
4742
- projectId: z52.string(),
4743
- taskId: z52.string(),
4744
- limit: z52.number().int().positive().optional().default(20)
4745
- });
4746
- var AddProjectTaskDependencyRequestSchema = z52.object({
4747
- projectId: z52.string(),
4748
- taskId: z52.string(),
4749
- dependsOnSlugOrId: z52.string(),
4750
- requestingUserId: z52.string().optional()
4751
- });
4752
- var RemoveProjectTaskDependencyRequestSchema = z52.object({
4753
- projectId: z52.string(),
4754
- taskId: z52.string(),
4755
- dependsOnSlugOrId: z52.string(),
4756
- requestingUserId: z52.string().optional()
4757
- });
4758
- var VoteProjectSuggestionRequestSchema = z52.object({
4759
- projectId: z52.string(),
4760
- suggestionId: z52.string(),
4761
- value: z52.union([z52.literal(1), z52.literal(-1)]),
4762
- requestingUserId: z52.string().optional()
4763
- });
4764
- var GetProjectTaskDependenciesRequestSchema = z52.object({
4765
- projectId: z52.string(),
4766
- taskId: z52.string()
4767
- });
4768
- var ListProjectTaskFilesRequestSchema = z52.object({
4769
- projectId: z52.string(),
4770
- taskId: z52.string()
4771
- });
4772
- var GetProjectAttachmentRequestSchema = z52.object({
4773
- projectId: z52.string(),
4774
- taskId: z52.string(),
4775
- fileId: z52.string(),
4776
- /** Byte offset into text content (paging large logs/JSON). Default 0. */
4777
- offset: z52.number().int().nonnegative().optional(),
4778
- /** Max bytes of text content to return from `offset`. Server default applies. */
4779
- maxBytes: z52.number().int().positive().optional()
4780
- });
4781
- var DeleteProjectTaskFileRequestSchema = z52.object({
4782
- projectId: z52.string(),
4783
- taskId: z52.string(),
4784
- fileId: z52.string(),
4785
- requestingUserId: z52.string().optional()
4786
- });
4787
- var RequestProjectFileUploadRequestSchema = z52.object({
4788
- projectId: z52.string(),
4789
- taskId: z52.string(),
4790
- fileName: z52.string().min(1).max(255),
4791
- mimeType: z52.string().min(1).max(128),
4792
- fileSize: z52.number().int().positive().max(MAX_FILE_SIZE_BYTES2),
4793
- requestingUserId: z52.string().optional()
4794
- });
4795
- var ConfirmProjectFileUploadRequestSchema = z52.object({
4796
- projectId: z52.string(),
4797
- taskId: z52.string(),
4798
- fileId: z52.string(),
4799
- /** When set, the attachment is also posted to the task chat with this text. */
4800
- comment: z52.string().max(2e3).optional(),
4801
- /** Glossary tag names (or ids) this file is an example of. */
4802
- tags: z52.array(z52.string().min(1).max(MAX_FILE_TAG_LENGTH)).max(MAX_FILE_TAGS2).optional(),
4803
- requestingUserId: z52.string().optional()
4804
- });
4805
- var CreateProjectPullRequestRequestSchema = z52.object({
4806
- projectId: z52.string(),
4807
- taskId: z52.string(),
4808
- title: z52.string().min(1),
4809
- body: z52.string(),
4810
- head: z52.string().optional(),
4811
- base: z52.string().optional(),
4812
- requestingUserId: z52.string().optional()
4813
- });
4814
- var ListProjectMembersRequestSchema = z52.object({
4815
- projectId: z52.string()
4816
- });
4817
- var AddProjectTaskReviewerRequestSchema = z52.object({
4818
- projectId: z52.string(),
4819
- taskId: z52.string(),
4820
- userId: z52.string(),
4821
- requestingUserId: z52.string().optional()
4822
- });
4823
- var RemoveProjectTaskReviewerRequestSchema = z52.object({
4824
- projectId: z52.string(),
4825
- taskId: z52.string(),
4826
- userId: z52.string(),
4827
- requestingUserId: z52.string().optional()
4828
- });
4829
- var ListProjectManualTestsRequestSchema = z52.object({
4830
- projectId: z52.string(),
4831
- taskId: z52.string()
4832
- });
4833
- var QueryProjectManualTestsRequestSchema = z52.object({
4834
- projectId: z52.string(),
4835
- cardStatuses: z52.array(z52.string()).optional(),
4836
- testStatuses: z52.array(z52.enum(["open", "approved", "rejected"])).optional()
4837
- });
4838
- var SetProjectManualTestsRequestSchema = z52.object({
4839
- projectId: z52.string(),
4840
- taskId: z52.string(),
4868
+ dependsOn: z62.array(z62.string().min(1)).max(32).optional(),
4869
+ requestingUserId: z62.string().optional()
4870
+ });
4871
+ var DeleteProjectSubtaskRequestSchema = z62.object({
4872
+ projectId: z62.string(),
4873
+ subtaskId: z62.string(),
4874
+ requestingUserId: z62.string().optional()
4875
+ });
4876
+ var GetProjectTaskChatRequestSchema = z62.object({
4877
+ projectId: z62.string(),
4878
+ taskId: z62.string(),
4879
+ limit: z62.number().int().positive().optional().default(20)
4880
+ });
4881
+ var AddProjectTaskDependencyRequestSchema = z62.object({
4882
+ projectId: z62.string(),
4883
+ taskId: z62.string(),
4884
+ dependsOnSlugOrId: z62.string(),
4885
+ requestingUserId: z62.string().optional()
4886
+ });
4887
+ var RemoveProjectTaskDependencyRequestSchema = z62.object({
4888
+ projectId: z62.string(),
4889
+ taskId: z62.string(),
4890
+ dependsOnSlugOrId: z62.string(),
4891
+ requestingUserId: z62.string().optional()
4892
+ });
4893
+ var VoteProjectSuggestionRequestSchema = z62.object({
4894
+ projectId: z62.string(),
4895
+ suggestionId: z62.string(),
4896
+ value: z62.union([z62.literal(1), z62.literal(-1)]),
4897
+ requestingUserId: z62.string().optional()
4898
+ });
4899
+ var GetProjectTaskDependenciesRequestSchema = z62.object({
4900
+ projectId: z62.string(),
4901
+ taskId: z62.string()
4902
+ });
4903
+ var CreateProjectPullRequestRequestSchema = z62.object({
4904
+ projectId: z62.string(),
4905
+ taskId: z62.string(),
4906
+ title: z62.string().min(1),
4907
+ body: z62.string(),
4908
+ head: z62.string().optional(),
4909
+ base: z62.string().optional(),
4910
+ requestingUserId: z62.string().optional()
4911
+ });
4912
+ var ListProjectMembersRequestSchema = z62.object({
4913
+ projectId: z62.string()
4914
+ });
4915
+ var AddProjectTaskReviewerRequestSchema = z62.object({
4916
+ projectId: z62.string(),
4917
+ taskId: z62.string(),
4918
+ userId: z62.string(),
4919
+ requestingUserId: z62.string().optional()
4920
+ });
4921
+ var RemoveProjectTaskReviewerRequestSchema = z62.object({
4922
+ projectId: z62.string(),
4923
+ taskId: z62.string(),
4924
+ userId: z62.string(),
4925
+ requestingUserId: z62.string().optional()
4926
+ });
4927
+ var ListProjectManualTestsRequestSchema = z62.object({
4928
+ projectId: z62.string(),
4929
+ taskId: z62.string()
4930
+ });
4931
+ var QueryProjectManualTestsRequestSchema = z62.object({
4932
+ projectId: z62.string(),
4933
+ cardStatuses: z62.array(z62.string()).optional(),
4934
+ testStatuses: z62.array(z62.enum(["open", "approved", "rejected"])).optional()
4935
+ });
4936
+ var SetProjectManualTestsRequestSchema = z62.object({
4937
+ projectId: z62.string(),
4938
+ taskId: z62.string(),
4841
4939
  items: ManualTestItemsSchema,
4842
- requestingUserId: z52.string().optional()
4843
- });
4844
- var EditProjectManualTestRequestSchema = z52.object({
4845
- projectId: z52.string(),
4846
- taskId: z52.string(),
4847
- title: z52.string().min(1),
4848
- newTitle: z52.string().min(1),
4849
- requestingUserId: z52.string().optional()
4850
- });
4851
- var RemoveProjectManualTestRequestSchema = z52.object({
4852
- projectId: z52.string(),
4853
- taskId: z52.string(),
4854
- title: z52.string().min(1),
4855
- requestingUserId: z52.string().optional()
4856
- });
4857
- var ApproveProjectManualTestRequestSchema = z52.object({
4858
- projectId: z52.string(),
4859
- taskId: z52.string(),
4860
- title: z52.string().min(1),
4861
- requestingUserId: z52.string().optional()
4862
- });
4863
- var RejectProjectManualTestRequestSchema = z52.object({
4864
- projectId: z52.string(),
4865
- taskId: z52.string(),
4866
- title: z52.string().min(1),
4867
- reason: z52.string().min(1).max(2e3),
4868
- requestingUserId: z52.string().optional()
4869
- });
4870
- var CreateProjectSuggestionRequestSchema = z52.object({
4871
- projectId: z52.string(),
4872
- title: z52.string().min(1),
4940
+ requestingUserId: z62.string().optional()
4941
+ });
4942
+ var EditProjectManualTestRequestSchema = z62.object({
4943
+ projectId: z62.string(),
4944
+ taskId: z62.string(),
4945
+ title: z62.string().min(1),
4946
+ newTitle: z62.string().min(1),
4947
+ requestingUserId: z62.string().optional()
4948
+ });
4949
+ var RemoveProjectManualTestRequestSchema = z62.object({
4950
+ projectId: z62.string(),
4951
+ taskId: z62.string(),
4952
+ title: z62.string().min(1),
4953
+ requestingUserId: z62.string().optional()
4954
+ });
4955
+ var ApproveProjectManualTestRequestSchema = z62.object({
4956
+ projectId: z62.string(),
4957
+ taskId: z62.string(),
4958
+ title: z62.string().min(1),
4959
+ requestingUserId: z62.string().optional()
4960
+ });
4961
+ var RejectProjectManualTestRequestSchema = z62.object({
4962
+ projectId: z62.string(),
4963
+ taskId: z62.string(),
4964
+ title: z62.string().min(1),
4965
+ reason: z62.string().min(1).max(2e3),
4966
+ requestingUserId: z62.string().optional()
4967
+ });
4968
+ var CreateProjectSuggestionRequestSchema = z62.object({
4969
+ projectId: z62.string(),
4970
+ title: z62.string().min(1),
4873
4971
  description: cardDescription2,
4874
- tagNames: z52.array(z52.string()).optional(),
4875
- requestingUserId: z52.string().optional()
4972
+ tagNames: z62.array(z62.string()).optional(),
4973
+ requestingUserId: z62.string().optional()
4876
4974
  });
4877
- var ListProjectChannelsRequestSchema = z62.object({
4878
- projectId: z62.string()
4975
+ var ListProjectChannelsRequestSchema = z72.object({
4976
+ projectId: z72.string()
4879
4977
  });
4880
4978
  var READ_CHANNEL_MESSAGES_MAX_LIMIT = 50;
4881
- var ReadChannelMessagesRequestSchema = z62.object({
4882
- projectId: z62.string(),
4883
- channelId: z62.string().min(1).max(200),
4884
- limit: z62.number().int().min(1).max(READ_CHANNEL_MESSAGES_MAX_LIMIT).optional(),
4979
+ var ReadChannelMessagesRequestSchema = z72.object({
4980
+ projectId: z72.string(),
4981
+ channelId: z72.string().min(1).max(200),
4982
+ limit: z72.number().int().min(1).max(READ_CHANNEL_MESSAGES_MAX_LIMIT).optional(),
4885
4983
  /** Provider-native cursor: return messages OLDER than this one. */
4886
- before: z62.string().max(100).optional(),
4984
+ before: z72.string().max(100).optional(),
4887
4985
  /** Provider-native cursor: return messages NEWER than this one. */
4888
- after: z62.string().max(100).optional(),
4986
+ after: z72.string().max(100).optional(),
4889
4987
  /**
4890
4988
  * Read one thread instead of the channel surface. Slack calls this a
4891
4989
  * `thread_ts`; on Discord it is the thread channel's id. One field for both,
4892
4990
  * because a caller holding a `threadTs` from a previous read should not have
4893
4991
  * to know which provider produced it.
4894
4992
  */
4895
- threadTs: z62.string().max(100).optional()
4993
+ threadTs: z72.string().max(100).optional()
4896
4994
  });
4897
4995
  var POST_CHANNEL_MESSAGE_MAX_CHARS = 1800;
4898
- var PostChannelMessageRequestSchema = z62.object({
4899
- projectId: z62.string(),
4900
- channelId: z62.string().min(1).max(200),
4901
- text: z62.string().min(1).max(POST_CHANNEL_MESSAGE_MAX_CHARS),
4996
+ var PostChannelMessageRequestSchema = z72.object({
4997
+ projectId: z72.string(),
4998
+ channelId: z72.string().min(1).max(200),
4999
+ text: z72.string().min(1).max(POST_CHANNEL_MESSAGE_MAX_CHARS),
4902
5000
  /** Reply inside a thread rather than to the channel. */
4903
- threadTs: z62.string().max(100).optional()
5001
+ threadTs: z72.string().max(100).optional()
4904
5002
  });
4905
5003
  var GET_ANALYTICS_SUMMARY_MAX_RANGE_DAYS = 90;
4906
- var GetProjectAnalyticsSummaryRequestSchema = z62.object({
4907
- projectId: z62.string(),
4908
- rangeDays: z62.number().int().min(1).max(GET_ANALYTICS_SUMMARY_MAX_RANGE_DAYS).optional(),
4909
- campaign: z62.string().max(200).optional()
5004
+ var GetProjectAnalyticsSummaryRequestSchema = z72.object({
5005
+ projectId: z72.string(),
5006
+ rangeDays: z72.number().int().min(1).max(GET_ANALYTICS_SUMMARY_MAX_RANGE_DAYS).optional(),
5007
+ campaign: z72.string().max(200).optional()
4910
5008
  });
4911
- var RequestWorkspaceRecycleRequestSchema = z72.object({
4912
- sessionId: z72.string(),
4913
- reason: z72.string().max(2e3)
5009
+ var ListProjectTaskFilesRequestSchema = z82.object({
5010
+ projectId: z82.string(),
5011
+ taskId: z82.string()
4914
5012
  });
4915
- var ReportApiOutageRequestSchema = z72.object({
4916
- sessionId: z72.string(),
4917
- detail: z72.string().max(2e3),
4918
- attempts: z72.number().int().min(0).max(100)
5013
+ var GetProjectAttachmentRequestSchema = z82.object({
5014
+ projectId: z82.string(),
5015
+ taskId: z82.string(),
5016
+ fileId: z82.string(),
5017
+ /** Byte offset into text content (paging large logs/JSON). Default 0. */
5018
+ offset: z82.number().int().nonnegative().optional(),
5019
+ /** Max bytes of text content to return from `offset`. Server default applies. */
5020
+ maxBytes: z82.number().int().positive().optional()
5021
+ });
5022
+ var DeleteProjectTaskFileRequestSchema = z82.object({
5023
+ projectId: z82.string(),
5024
+ taskId: z82.string(),
5025
+ fileId: z82.string(),
5026
+ requestingUserId: z82.string().optional()
5027
+ });
5028
+ var SetProjectTaskFileShowcaseRequestSchema = z82.object({
5029
+ projectId: z82.string(),
5030
+ taskId: z82.string(),
5031
+ fileId: z82.string(),
5032
+ showcase: z82.boolean(),
5033
+ requestingUserId: z82.string().optional()
5034
+ });
5035
+ var RequestProjectFileUploadRequestSchema = z82.object({
5036
+ projectId: z82.string(),
5037
+ taskId: z82.string(),
5038
+ fileName: z82.string().min(1).max(255),
5039
+ mimeType: z82.string().min(1).max(128),
5040
+ fileSize: z82.number().int().positive().max(MAX_FILE_SIZE_BYTES2),
5041
+ requestingUserId: z82.string().optional()
5042
+ });
5043
+ var ConfirmProjectFileUploadRequestSchema = z82.object({
5044
+ projectId: z82.string(),
5045
+ taskId: z82.string(),
5046
+ fileId: z82.string(),
5047
+ /** When set, the attachment is also posted to the task chat with this text. */
5048
+ comment: z82.string().max(2e3).optional(),
5049
+ /** Glossary tag names (or ids) this file is an example of. */
5050
+ tags: z82.array(z82.string().min(1).max(MAX_FILE_TAG_LENGTH)).max(MAX_FILE_TAGS2).optional(),
5051
+ /** The card's showcase (its deliverable); always posts to chat, even with no `comment`. */
5052
+ showcase: z82.boolean().optional(),
5053
+ /** Id of an older file on the same card this upload replaces. */
5054
+ supersedes: z82.string().min(1).max(64).optional(),
5055
+ requestingUserId: z82.string().optional()
5056
+ });
5057
+ var RequestWorkspaceRecycleRequestSchema = z92.object({
5058
+ sessionId: z92.string(),
5059
+ reason: z92.string().max(2e3)
5060
+ });
5061
+ var ReportApiOutageRequestSchema = z92.object({
5062
+ sessionId: z92.string(),
5063
+ detail: z92.string().max(2e3),
5064
+ attempts: z92.number().int().min(0).max(100)
4919
5065
  });
4920
5066
  var CONTEXT_LINK_LOCATOR_MAX2 = 300;
4921
5067
  var TAG_DESCRIPTION_MAX = CARD_DESCRIPTION_MAX;
4922
5068
  var TAG_OVERVIEW_MAX = 32e3;
4923
5069
  var TAG_REASON_MAX = 500;
4924
- var ProjectTagContextPathSchema = z82.object({
4925
- type: z82.enum(["rule", "doc", "file", "folder"]),
4926
- path: z82.string().min(1).max(500),
4927
- label: z82.string().max(100).optional(),
5070
+ var ProjectTagContextPathSchema = z10.object({
5071
+ type: z10.enum(["rule", "doc", "file", "folder"]),
5072
+ path: z10.string().min(1).max(500),
5073
+ label: z10.string().max(100).optional(),
4928
5074
  /** Verified-link tether — text that must keep existing in the file. */
4929
- locator: z82.string().min(1).max(CONTEXT_LINK_LOCATOR_MAX2).regex(/^[^\r\n]*$/, "Locator cannot contain line breaks").optional(),
5075
+ locator: z10.string().min(1).max(CONTEXT_LINK_LOCATOR_MAX2).regex(/^[^\r\n]*$/, "Locator cannot contain line breaks").optional(),
4930
5076
  /** test = must appear in a real test/describe title; code = any substring. */
4931
- locatorType: z82.enum(["test", "code"]).optional()
5077
+ locatorType: z10.enum(["test", "code"]).optional()
4932
5078
  }).refine((link) => link.locator === void 0 === (link.locatorType === void 0), {
4933
5079
  message: "locator and locatorType must be provided together"
4934
5080
  }).refine((link) => link.locator === void 0 || link.type !== "folder", {
4935
5081
  message: "folder links cannot carry a locator"
4936
5082
  });
4937
- var hexColor = z82.string().regex(/^#[0-9a-fA-F]{6}$/, "Expected #RRGGBB hex color");
4938
- var overviewPathSchema = z82.string().min(1).max(500).regex(/^[^\r\n]*$/, "Overview path cannot contain line breaks");
4939
- var CreateProjectTagRequestSchema = z82.object({
4940
- projectId: z82.string(),
4941
- name: z82.string().min(1).max(50),
5083
+ var hexColor = z10.string().regex(/^#[0-9a-fA-F]{6}$/, "Expected #RRGGBB hex color");
5084
+ var overviewPathSchema = z10.string().min(1).max(500).regex(/^[^\r\n]*$/, "Overview path cannot contain line breaks");
5085
+ var CreateProjectTagRequestSchema = z10.object({
5086
+ projectId: z10.string(),
5087
+ name: z10.string().min(1).max(50),
4942
5088
  color: hexColor.optional(),
4943
- description: z82.string().max(TAG_DESCRIPTION_MAX).optional(),
4944
- overview: z82.string().max(TAG_OVERVIEW_MAX).optional(),
5089
+ description: z10.string().max(TAG_DESCRIPTION_MAX).optional(),
5090
+ overview: z10.string().max(TAG_OVERVIEW_MAX).optional(),
4945
5091
  /** Source the overview from this repo file (stored overview stays as the pending fallback). */
4946
5092
  overviewPath: overviewPathSchema.optional(),
4947
- contextPaths: z82.array(ProjectTagContextPathSchema).max(20).optional(),
5093
+ contextPaths: z10.array(ProjectTagContextPathSchema).max(20).optional(),
4948
5094
  /** Parents to link at create time (multi-parent DAG). */
4949
- parentTagIds: z82.array(z82.string()).max(25).optional(),
4950
- requestingUserId: z82.string().optional()
5095
+ parentTagIds: z10.array(z10.string()).max(25).optional(),
5096
+ requestingUserId: z10.string().optional()
4951
5097
  });
4952
- var UpdateProjectTagRequestSchema = z82.object({
4953
- projectId: z82.string(),
4954
- tagId: z82.string(),
4955
- name: z82.string().min(1).max(50).optional(),
5098
+ var UpdateProjectTagRequestSchema = z10.object({
5099
+ projectId: z10.string(),
5100
+ tagId: z10.string(),
5101
+ name: z10.string().min(1).max(50).optional(),
4956
5102
  color: hexColor.optional(),
4957
- description: z82.string().max(TAG_DESCRIPTION_MAX).optional(),
5103
+ description: z10.string().max(TAG_DESCRIPTION_MAX).optional(),
4958
5104
  /** Full markdown glossary body; null clears it. Rejected while overviewPath is set. */
4959
- overview: z82.string().max(TAG_OVERVIEW_MAX).nullable().optional(),
5105
+ overview: z10.string().max(TAG_OVERVIEW_MAX).nullable().optional(),
4960
5106
  /** Repo file to source the overview from; null clears back to the stored overview. */
4961
5107
  overviewPath: overviewPathSchema.nullable().optional(),
4962
5108
  /** Full replacement of the tag's context links when provided. */
4963
- contextPaths: z82.array(ProjectTagContextPathSchema).max(20).optional(),
5109
+ contextPaths: z10.array(ProjectTagContextPathSchema).max(20).optional(),
4964
5110
  /** Full-set replacement of the tag's parent tags (multi-parent DAG). */
4965
- parentTagIds: z82.array(z82.string()).max(25).optional(),
5111
+ parentTagIds: z10.array(z10.string()).max(25).optional(),
4966
5112
  /** One-line revision provenance, recorded in the tag's history. */
4967
- reason: z82.string().max(TAG_REASON_MAX).optional(),
5113
+ reason: z10.string().max(TAG_REASON_MAX).optional(),
4968
5114
  /** Card the caller was working in — stamped into the revision history. */
4969
- taskId: z82.string().optional(),
4970
- requestingUserId: z82.string().optional()
5115
+ taskId: z10.string().optional(),
5116
+ requestingUserId: z10.string().optional()
4971
5117
  });
4972
- var PostToProjectChatRequestSchema = z82.object({
4973
- projectId: z82.string(),
4974
- content: z82.string().min(1).max(2e4),
4975
- requestingUserId: z82.string().optional(),
5118
+ var PostToProjectChatRequestSchema = z10.object({
5119
+ projectId: z10.string(),
5120
+ content: z10.string().min(1).max(2e4),
5121
+ requestingUserId: z10.string().optional(),
4976
5122
  /** Marks the post so the server can persist it beyond chat (tag-audit summaries land in tag history). */
4977
- kind: z82.enum(["tag_audit_summary"]).optional()
5123
+ kind: z10.enum(["tag_audit_summary"]).optional()
4978
5124
  });
4979
- var StartTagAuditRequestSchema = z82.object({
4980
- projectId: z82.string(),
4981
- requestingUserId: z82.string().optional()
5125
+ var StartTagAuditRequestSchema = z10.object({
5126
+ projectId: z10.string(),
5127
+ requestingUserId: z10.string().optional()
4982
5128
  });
4983
- var StartTaskAuditRequestSchema = z82.object({
4984
- projectId: z82.string(),
4985
- taskIds: z82.array(z82.string()).min(1).max(20),
4986
- requestingUserId: z82.string().optional()
5129
+ var StartTaskAuditRequestSchema = z10.object({
5130
+ projectId: z10.string(),
5131
+ taskIds: z10.array(z10.string()).min(1).max(20),
5132
+ requestingUserId: z10.string().optional()
4987
5133
  });
4988
- var GetActiveAuditSessionsRequestSchema = z82.object({
4989
- projectId: z82.string()
5134
+ var GetActiveAuditSessionsRequestSchema = z10.object({
5135
+ projectId: z10.string()
4990
5136
  });
4991
- var ReportTaskAuditResultRequestSchema = z82.object({
4992
- projectId: z82.string(),
4993
- taskId: z82.string(),
4994
- summary: z82.string(),
4995
- turnGrades: z82.array(
4996
- z82.object({
4997
- turnIndex: z82.number(),
4998
- phase: z82.enum(["planning", "building", "human"]),
4999
- grade: z82.enum(["correct", "neutral", "blunder"]),
5000
- reasoning: z82.string(),
5001
- eventType: z82.string(),
5002
- eventSummary: z82.string()
5137
+ var ReportTaskAuditResultRequestSchema = z10.object({
5138
+ projectId: z10.string(),
5139
+ taskId: z10.string(),
5140
+ summary: z10.string(),
5141
+ turnGrades: z10.array(
5142
+ z10.object({
5143
+ turnIndex: z10.number(),
5144
+ phase: z10.enum(["planning", "building", "human"]),
5145
+ grade: z10.enum(["correct", "neutral", "blunder"]),
5146
+ reasoning: z10.string(),
5147
+ eventType: z10.string(),
5148
+ eventSummary: z10.string()
5003
5149
  })
5004
5150
  ),
5005
- planningAccuracy: z82.number().nullable(),
5006
- buildingAccuracy: z82.number().nullable(),
5007
- humanAccuracy: z82.number().nullable(),
5008
- planningCorrect: z82.number(),
5009
- planningNeutral: z82.number(),
5010
- planningBlunder: z82.number(),
5011
- buildingCorrect: z82.number(),
5012
- buildingNeutral: z82.number(),
5013
- buildingBlunder: z82.number(),
5014
- humanCorrect: z82.number(),
5015
- humanNeutral: z82.number(),
5016
- humanBlunder: z82.number(),
5017
- humanEvaluations: z82.array(
5018
- z82.object({
5019
- messageIndex: z82.number(),
5020
- rating: z82.union([z82.literal(-1), z82.literal(0), z82.literal(1)]),
5021
- reasoning: z82.string()
5151
+ planningAccuracy: z10.number().nullable(),
5152
+ buildingAccuracy: z10.number().nullable(),
5153
+ humanAccuracy: z10.number().nullable(),
5154
+ planningCorrect: z10.number(),
5155
+ planningNeutral: z10.number(),
5156
+ planningBlunder: z10.number(),
5157
+ buildingCorrect: z10.number(),
5158
+ buildingNeutral: z10.number(),
5159
+ buildingBlunder: z10.number(),
5160
+ humanCorrect: z10.number(),
5161
+ humanNeutral: z10.number(),
5162
+ humanBlunder: z10.number(),
5163
+ humanEvaluations: z10.array(
5164
+ z10.object({
5165
+ messageIndex: z10.number(),
5166
+ rating: z10.union([z10.literal(-1), z10.literal(0), z10.literal(1)]),
5167
+ reasoning: z10.string()
5022
5168
  })
5023
5169
  ).optional(),
5024
- suggestionIds: z82.array(z82.string()),
5025
- auditCostUsd: z82.number().nullable(),
5026
- model: z82.string().nullable(),
5170
+ suggestionIds: z10.array(z10.string()),
5171
+ auditCostUsd: z10.number().nullable(),
5172
+ model: z10.string().nullable(),
5027
5173
  /** When set, the audit is marked failed with this message instead. */
5028
- error: z82.string().optional()
5174
+ error: z10.string().optional()
5029
5175
  });
5030
- var GetTaskAuditsRequestSchema = z82.object({
5031
- projectId: z82.string(),
5032
- limit: z82.number().int().positive().max(200).optional().default(50)
5176
+ var GetTaskAuditsRequestSchema = z10.object({
5177
+ projectId: z10.string(),
5178
+ limit: z10.number().int().positive().max(200).optional().default(50)
5033
5179
  });
5034
- var GetTaskAuditRequestSchema = z82.object({
5035
- projectId: z82.string(),
5036
- auditId: z82.string()
5180
+ var GetTaskAuditRequestSchema = z10.object({
5181
+ projectId: z10.string(),
5182
+ auditId: z10.string()
5037
5183
  });
5038
- var GetTaskAuditAggregatesRequestSchema = z82.object({
5039
- projectId: z82.string()
5184
+ var GetTaskAuditAggregatesRequestSchema = z10.object({
5185
+ projectId: z10.string()
5040
5186
  });
5041
- var DeleteTaskAuditRequestSchema = z82.object({
5042
- projectId: z82.string(),
5043
- auditId: z82.string(),
5044
- requestingUserId: z82.string().optional()
5187
+ var DeleteTaskAuditRequestSchema = z10.object({
5188
+ projectId: z10.string(),
5189
+ auditId: z10.string(),
5190
+ requestingUserId: z10.string().optional()
5045
5191
  });
5046
- var MarkInitialPromptSubmittedRequestSchema = z82.object({
5047
- sessionId: z82.string()
5192
+ var MarkInitialPromptSubmittedRequestSchema = z10.object({
5193
+ sessionId: z10.string()
5048
5194
  });
5049
5195
  var DECISION_STATUS_LABELS = ["Open", "Decided", "Cancelled"];
5050
5196
  var DECISION_OPTION_KINDS = ["current", "planned", "proposed"];
@@ -5059,165 +5205,165 @@ var DECISION_DEADLINE_MIN_HOURS = 1;
5059
5205
  var DECISION_DEADLINE_MAX_DAYS = 30;
5060
5206
  var DECISION_DEADLINE_MAX_HOURS = DECISION_DEADLINE_MAX_DAYS * 24;
5061
5207
  var DECISION_LIST_MAX_LIMIT = 200;
5062
- var decisionIdSchema = z92.string().cuid("Invalid decision ID");
5063
- var optionInputSchema = z92.object({
5064
- label: z92.string().min(1, "Option label is required").max(DECISION_OPTION_LABEL_MAX),
5065
- description: z92.string().min(1, "Describe the option as GIVEN / WHEN / THEN"),
5066
- kind: z92.enum(DECISION_OPTION_KINDS).optional()
5208
+ var decisionIdSchema = z11.string().cuid("Invalid decision ID");
5209
+ var optionInputSchema = z11.object({
5210
+ label: z11.string().min(1, "Option label is required").max(DECISION_OPTION_LABEL_MAX),
5211
+ description: z11.string().min(1, "Describe the option as GIVEN / WHEN / THEN"),
5212
+ kind: z11.enum(DECISION_OPTION_KINDS).optional()
5067
5213
  });
5068
- var optionsArraySchema = z92.array(optionInputSchema).min(DECISION_OPTIONS_MIN, `A decision needs at least ${DECISION_OPTIONS_MIN} options`).max(
5214
+ var optionsArraySchema = z11.array(optionInputSchema).min(DECISION_OPTIONS_MIN, `A decision needs at least ${DECISION_OPTIONS_MIN} options`).max(
5069
5215
  DECISION_OPTIONS_MAX,
5070
5216
  `A decision takes at most ${DECISION_OPTIONS_MAX} options \u2014 more than that means the question is not framed yet`
5071
5217
  );
5072
- var CreateDecisionRequestSchema = z92.object({
5073
- projectId: z92.string().cuid("Invalid project ID"),
5218
+ var CreateDecisionRequestSchema = z11.object({
5219
+ projectId: z11.string().cuid("Invalid project ID"),
5074
5220
  /** The question, as one plain sentence. */
5075
- title: z92.string().min(1, "A decision needs a question").max(DECISION_QUESTION_MAX),
5076
- description: z92.string().max(CARD_DESCRIPTION_MAX).optional(),
5077
- context: z92.string().min(1, "Context is required \u2014 say why this is being asked now"),
5221
+ title: z11.string().min(1, "A decision needs a question").max(DECISION_QUESTION_MAX),
5222
+ description: z11.string().max(CARD_DESCRIPTION_MAX).optional(),
5223
+ context: z11.string().min(1, "Context is required \u2014 say why this is being asked now"),
5078
5224
  options: optionsArraySchema,
5079
5225
  /** 1-based position of the option that wins on silence. */
5080
- defaultOptionOrdinal: z92.number().int().min(1).max(DECISION_OPTIONS_MAX),
5081
- deadlineHours: z92.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional(),
5226
+ defaultOptionOrdinal: z11.number().int().min(1).max(DECISION_OPTIONS_MAX),
5227
+ deadlineHours: z11.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional(),
5082
5228
  /** Cards this decision blocks, by cuid or slug. */
5083
- impactedCardRefs: z92.array(z92.string().min(1)).max(50).optional(),
5084
- tagNames: z92.array(z92.string().min(1)).max(10).optional(),
5085
- raisedByTaskId: z92.string().min(1).optional(),
5086
- raisedByPrNumber: z92.number().int().positive().optional()
5229
+ impactedCardRefs: z11.array(z11.string().min(1)).max(50).optional(),
5230
+ tagNames: z11.array(z11.string().min(1)).max(10).optional(),
5231
+ raisedByTaskId: z11.string().min(1).optional(),
5232
+ raisedByPrNumber: z11.number().int().positive().optional()
5087
5233
  });
5088
- var VoteDecisionRequestSchema = z92.object({
5234
+ var VoteDecisionRequestSchema = z11.object({
5089
5235
  decisionId: decisionIdSchema,
5090
- optionId: z92.string().cuid("Invalid option ID"),
5091
- reason: z92.string().max(DECISION_VOTE_REASON_MAX).optional(),
5092
- source: z92.enum(DECISION_VOTE_SOURCES).optional()
5236
+ optionId: z11.string().cuid("Invalid option ID"),
5237
+ reason: z11.string().max(DECISION_VOTE_REASON_MAX).optional(),
5238
+ source: z11.enum(DECISION_VOTE_SOURCES).optional()
5093
5239
  });
5094
- var RemoveDecisionVoteRequestSchema = z92.object({
5240
+ var RemoveDecisionVoteRequestSchema = z11.object({
5095
5241
  decisionId: decisionIdSchema
5096
5242
  });
5097
- var ResolveDecisionRequestSchema = z92.object({
5243
+ var ResolveDecisionRequestSchema = z11.object({
5098
5244
  decisionId: decisionIdSchema,
5099
- chosenOptionId: z92.string().cuid("Invalid option ID"),
5100
- resolution: z92.string().min(1, "A resolution is required \u2014 say what was decided").max(DECISION_RESOLUTION_MAX),
5101
- resolutionNotes: z92.string().optional()
5245
+ chosenOptionId: z11.string().cuid("Invalid option ID"),
5246
+ resolution: z11.string().min(1, "A resolution is required \u2014 say what was decided").max(DECISION_RESOLUTION_MAX),
5247
+ resolutionNotes: z11.string().optional()
5102
5248
  });
5103
- var CancelDecisionRequestSchema = z92.object({
5249
+ var CancelDecisionRequestSchema = z11.object({
5104
5250
  decisionId: decisionIdSchema,
5105
5251
  /** Why it is being dropped. Posted to the decision thread. */
5106
- reason: z92.string().max(DECISION_RESOLUTION_MAX).optional()
5252
+ reason: z11.string().max(DECISION_RESOLUTION_MAX).optional()
5107
5253
  });
5108
- var BulkDecisionIdsRequestSchema = z92.object({
5109
- projectId: z92.string().cuid("Invalid project ID"),
5110
- decisionIds: z92.array(z92.string().cuid()).min(1).max(200)
5254
+ var BulkDecisionIdsRequestSchema = z11.object({
5255
+ projectId: z11.string().cuid("Invalid project ID"),
5256
+ decisionIds: z11.array(z11.string().cuid()).min(1).max(200)
5111
5257
  });
5112
- var ReopenDecisionRequestSchema = z92.object({
5258
+ var ReopenDecisionRequestSchema = z11.object({
5113
5259
  decisionId: decisionIdSchema,
5114
- deadlineHours: z92.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional()
5260
+ deadlineHours: z11.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional()
5115
5261
  });
5116
- var UpdateDecisionRequestSchema = z92.object({
5262
+ var UpdateDecisionRequestSchema = z11.object({
5117
5263
  decisionId: decisionIdSchema,
5118
- title: z92.string().min(1).max(200).optional(),
5119
- description: z92.string().max(CARD_DESCRIPTION_MAX).optional(),
5120
- context: z92.string().min(1).optional(),
5121
- deadlineAt: z92.string().datetime().optional(),
5264
+ title: z11.string().min(1).max(200).optional(),
5265
+ description: z11.string().max(CARD_DESCRIPTION_MAX).optional(),
5266
+ context: z11.string().min(1).optional(),
5267
+ deadlineAt: z11.string().datetime().optional(),
5122
5268
  /** Only accepted while the decision has zero votes. */
5123
5269
  options: optionsArraySchema.optional(),
5124
- defaultOptionOrdinal: z92.number().int().min(1).max(DECISION_OPTIONS_MAX).optional(),
5125
- addImpactedCardRefs: z92.array(z92.string().min(1)).max(50).optional(),
5126
- removeImpactedCardIds: z92.array(z92.string().min(1)).max(50).optional()
5270
+ defaultOptionOrdinal: z11.number().int().min(1).max(DECISION_OPTIONS_MAX).optional(),
5271
+ addImpactedCardRefs: z11.array(z11.string().min(1)).max(50).optional(),
5272
+ removeImpactedCardIds: z11.array(z11.string().min(1)).max(50).optional()
5127
5273
  });
5128
- var GetDecisionRequestSchema = z92.object({
5274
+ var GetDecisionRequestSchema = z11.object({
5129
5275
  /** cuid or slug. A slug needs `projectId` to resolve unambiguously. */
5130
- decisionId: z92.string().min(1),
5131
- projectId: z92.string().cuid().optional()
5276
+ decisionId: z11.string().min(1),
5277
+ projectId: z11.string().cuid().optional()
5132
5278
  });
5133
- var ListDecisionsRequestSchema = z92.object({
5134
- projectId: z92.string().cuid("Invalid project ID"),
5135
- status: z92.enum(DECISION_STATUS_LABELS).optional(),
5279
+ var ListDecisionsRequestSchema = z11.object({
5280
+ projectId: z11.string().cuid("Invalid project ID"),
5281
+ status: z11.enum(DECISION_STATUS_LABELS).optional(),
5136
5282
  /** Tag name, not id — an agent knows the tag it is working under. */
5137
- tag: z92.string().min(1).optional(),
5283
+ tag: z11.string().min(1).optional(),
5138
5284
  /** Decisions that this card is blocked by (cuid or slug). */
5139
- cardId: z92.string().min(1).optional(),
5140
- query: z92.string().min(1).optional(),
5141
- limit: z92.number().int().min(1).max(DECISION_LIST_MAX_LIMIT).optional()
5142
- });
5143
- var optionInput = z10.object({
5144
- label: z10.string().min(1).max(DECISION_OPTION_LABEL_MAX),
5145
- description: z10.string().min(1),
5146
- kind: z10.enum(DECISION_OPTION_KINDS).optional()
5147
- });
5148
- var optionsInput = z10.array(optionInput).min(DECISION_OPTIONS_MIN).max(DECISION_OPTIONS_MAX);
5149
- var deadlineHours = z10.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional();
5150
- var CreateProjectDecisionRequestSchema = z10.object({
5151
- projectId: z10.string(),
5152
- question: z10.string().min(1).max(200),
5153
- summary: z10.string().max(CARD_DESCRIPTION_MAX).optional(),
5154
- context: z10.string().min(1),
5285
+ cardId: z11.string().min(1).optional(),
5286
+ query: z11.string().min(1).optional(),
5287
+ limit: z11.number().int().min(1).max(DECISION_LIST_MAX_LIMIT).optional()
5288
+ });
5289
+ var optionInput = z12.object({
5290
+ label: z12.string().min(1).max(DECISION_OPTION_LABEL_MAX),
5291
+ description: z12.string().min(1),
5292
+ kind: z12.enum(DECISION_OPTION_KINDS).optional()
5293
+ });
5294
+ var optionsInput = z12.array(optionInput).min(DECISION_OPTIONS_MIN).max(DECISION_OPTIONS_MAX);
5295
+ var deadlineHours = z12.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional();
5296
+ var CreateProjectDecisionRequestSchema = z12.object({
5297
+ projectId: z12.string(),
5298
+ question: z12.string().min(1).max(200),
5299
+ summary: z12.string().max(CARD_DESCRIPTION_MAX).optional(),
5300
+ context: z12.string().min(1),
5155
5301
  options: optionsInput,
5156
- defaultOption: z10.number().int().min(1).max(DECISION_OPTIONS_MAX),
5302
+ defaultOption: z12.number().int().min(1).max(DECISION_OPTIONS_MAX),
5157
5303
  deadlineHours,
5158
- impactedCards: z10.array(z10.string().min(1)).max(50).optional(),
5304
+ impactedCards: z12.array(z12.string().min(1)).max(50).optional(),
5159
5305
  /**
5160
5306
  * Pod surface only: also block the card this session is working on. The
5161
5307
  * session's task id is resolved SERVER-side from `sessionId` — a
5162
5308
  * client-supplied card id would let a pod block any card in the project.
5163
5309
  */
5164
- includeCurrentCard: z10.boolean().optional(),
5165
- sessionId: z10.string().optional(),
5166
- tagNames: z10.array(z10.string().min(1)).max(10).optional(),
5167
- raisedByPr: z10.number().int().positive().optional(),
5310
+ includeCurrentCard: z12.boolean().optional(),
5311
+ sessionId: z12.string().optional(),
5312
+ tagNames: z12.array(z12.string().min(1)).max(10).optional(),
5313
+ raisedByPr: z12.number().int().positive().optional(),
5168
5314
  /** Slug or id of the card that raised the question. A link back, not a block. */
5169
- raisedByCard: z10.string().min(1).optional(),
5315
+ raisedByCard: z12.string().min(1).optional(),
5170
5316
  /** Absolute deadline (ISO 8601). Wins over `deadlineHours` when both are sent. */
5171
- deadlineAt: z10.string().datetime({ offset: true }).optional(),
5172
- requestingUserId: z10.string().optional()
5317
+ deadlineAt: z12.string().datetime({ offset: true }).optional(),
5318
+ requestingUserId: z12.string().optional()
5173
5319
  });
5174
- var ListProjectDecisionsRequestSchema = z10.object({
5175
- projectId: z10.string(),
5176
- status: z10.enum(DECISION_STATUS_LABELS).optional(),
5177
- tag: z10.string().min(1).optional(),
5178
- card: z10.string().min(1).optional(),
5179
- query: z10.string().min(1).optional(),
5180
- limit: z10.number().int().min(1).max(DECISION_LIST_MAX_LIMIT).optional(),
5181
- requestingUserId: z10.string().optional()
5320
+ var ListProjectDecisionsRequestSchema = z12.object({
5321
+ projectId: z12.string(),
5322
+ status: z12.enum(DECISION_STATUS_LABELS).optional(),
5323
+ tag: z12.string().min(1).optional(),
5324
+ card: z12.string().min(1).optional(),
5325
+ query: z12.string().min(1).optional(),
5326
+ limit: z12.number().int().min(1).max(DECISION_LIST_MAX_LIMIT).optional(),
5327
+ requestingUserId: z12.string().optional()
5182
5328
  });
5183
- var GetProjectDecisionRequestSchema = z10.object({
5184
- projectId: z10.string(),
5185
- decision: z10.string().min(1),
5186
- requestingUserId: z10.string().optional()
5329
+ var GetProjectDecisionRequestSchema = z12.object({
5330
+ projectId: z12.string(),
5331
+ decision: z12.string().min(1),
5332
+ requestingUserId: z12.string().optional()
5187
5333
  });
5188
- var VoteProjectDecisionRequestSchema = z10.object({
5189
- projectId: z10.string(),
5190
- decision: z10.string().min(1),
5334
+ var VoteProjectDecisionRequestSchema = z12.object({
5335
+ projectId: z12.string(),
5336
+ decision: z12.string().min(1),
5191
5337
  /** An option id, or its 1-based position. */
5192
- option: z10.string().min(1),
5193
- reason: z10.string().max(CARD_DESCRIPTION_MAX).optional(),
5194
- requestingUserId: z10.string().optional()
5338
+ option: z12.string().min(1),
5339
+ reason: z12.string().max(CARD_DESCRIPTION_MAX).optional(),
5340
+ requestingUserId: z12.string().optional()
5195
5341
  });
5196
- var ResolveProjectDecisionRequestSchema = z10.object({
5197
- projectId: z10.string(),
5198
- decision: z10.string().min(1),
5199
- option: z10.string().min(1),
5200
- resolution: z10.string().min(1).max(DECISION_RESOLUTION_MAX),
5201
- notes: z10.string().optional(),
5202
- requestingUserId: z10.string().optional()
5342
+ var ResolveProjectDecisionRequestSchema = z12.object({
5343
+ projectId: z12.string(),
5344
+ decision: z12.string().min(1),
5345
+ option: z12.string().min(1),
5346
+ resolution: z12.string().min(1).max(DECISION_RESOLUTION_MAX),
5347
+ notes: z12.string().optional(),
5348
+ requestingUserId: z12.string().optional()
5203
5349
  });
5204
- var UpdateProjectDecisionRequestSchema = z10.object({
5205
- projectId: z10.string(),
5206
- decision: z10.string().min(1),
5207
- question: z10.string().min(1).max(200).optional(),
5208
- summary: z10.string().max(CARD_DESCRIPTION_MAX).optional(),
5209
- context: z10.string().min(1).optional(),
5350
+ var UpdateProjectDecisionRequestSchema = z12.object({
5351
+ projectId: z12.string(),
5352
+ decision: z12.string().min(1),
5353
+ question: z12.string().min(1).max(200).optional(),
5354
+ summary: z12.string().max(CARD_DESCRIPTION_MAX).optional(),
5355
+ context: z12.string().min(1).optional(),
5210
5356
  /** Accepted only while nobody has voted. */
5211
5357
  options: optionsInput.optional(),
5212
- defaultOption: z10.number().int().min(1).max(DECISION_OPTIONS_MAX).optional(),
5213
- tagNames: z10.array(z10.string().min(1)).max(10).optional(),
5358
+ defaultOption: z12.number().int().min(1).max(DECISION_OPTIONS_MAX).optional(),
5359
+ tagNames: z12.array(z12.string().min(1)).max(10).optional(),
5214
5360
  deadlineHours,
5215
5361
  /** Absolute deadline (ISO 8601). Wins over `deadlineHours` when both are sent. */
5216
- deadlineAt: z10.string().datetime({ offset: true }).optional(),
5217
- addImpactedCards: z10.array(z10.string().min(1)).max(50).optional(),
5218
- removeImpactedCards: z10.array(z10.string().min(1)).max(50).optional(),
5219
- status: z10.enum(["Cancelled", "Open"]).optional(),
5220
- requestingUserId: z10.string().optional()
5362
+ deadlineAt: z12.string().datetime({ offset: true }).optional(),
5363
+ addImpactedCards: z12.array(z12.string().min(1)).max(50).optional(),
5364
+ removeImpactedCards: z12.array(z12.string().min(1)).max(50).optional(),
5365
+ status: z12.enum(["Cancelled", "Open"]).optional(),
5366
+ requestingUserId: z12.string().optional()
5221
5367
  });
5222
5368
  var EVALUATE_MAX_QUESTIONS = 32;
5223
5369
  var EVALUATE_MAX_ITEMS = 100;
@@ -5225,29 +5371,29 @@ var EVALUATE_ITEM_MAX_CHARS = 8e3;
5225
5371
  var EVALUATE_REQUEST_MAX_CHARS = 4e5;
5226
5372
  var TEXT_MAX = 1e3;
5227
5373
  var QUESTION_KEY = /^[A-Za-z0-9_-]{1,64}$/;
5228
- var EvaluateQuestionSchema = z11.object({
5229
- key: z11.string().regex(QUESTION_KEY, "key must be 1-64 letters, digits, _ or -"),
5230
- type: z11.enum(["noul", "choice", "score"]),
5231
- instructions: z11.string().min(1).max(4e3),
5232
- options: z11.array(
5233
- z11.object({
5234
- key: z11.string().min(1).max(200),
5235
- description: z11.string().min(1).max(TEXT_MAX)
5374
+ var EvaluateQuestionSchema = z13.object({
5375
+ key: z13.string().regex(QUESTION_KEY, "key must be 1-64 letters, digits, _ or -"),
5376
+ type: z13.enum(["noul", "choice", "score"]),
5377
+ instructions: z13.string().min(1).max(4e3),
5378
+ options: z13.array(
5379
+ z13.object({
5380
+ key: z13.string().min(1).max(200),
5381
+ description: z13.string().min(1).max(TEXT_MAX)
5236
5382
  })
5237
5383
  ).optional(),
5238
- levels: z11.array(z11.string().min(1).max(TEXT_MAX)).optional()
5384
+ levels: z13.array(z13.string().min(1).max(TEXT_MAX)).optional()
5239
5385
  }).superRefine((q, ctx) => {
5240
5386
  if (q.type === "choice") {
5241
5387
  const n = q.options?.length ?? 0;
5242
5388
  if (n < 2 || n > 255) {
5243
5389
  ctx.addIssue({
5244
- code: z11.ZodIssueCode.custom,
5390
+ code: z13.ZodIssueCode.custom,
5245
5391
  path: ["options"],
5246
5392
  message: "a choice question needs 2-255 options"
5247
5393
  });
5248
5394
  } else if (new Set(q.options?.map((o) => o.key)).size !== n) {
5249
5395
  ctx.addIssue({
5250
- code: z11.ZodIssueCode.custom,
5396
+ code: z13.ZodIssueCode.custom,
5251
5397
  path: ["options"],
5252
5398
  message: "option keys must be unique"
5253
5399
  });
@@ -5257,36 +5403,36 @@ var EvaluateQuestionSchema = z11.object({
5257
5403
  const n = q.levels?.length ?? 0;
5258
5404
  if (n < 2 || n > 10) {
5259
5405
  ctx.addIssue({
5260
- code: z11.ZodIssueCode.custom,
5406
+ code: z13.ZodIssueCode.custom,
5261
5407
  path: ["levels"],
5262
5408
  message: "a score question needs 2-10 levels"
5263
5409
  });
5264
5410
  }
5265
5411
  }
5266
5412
  });
5267
- var EvaluateQuestionsRequestSchema = z11.object({
5268
- projectId: z11.string(),
5269
- state: z11.string().max(JEV_STATE_MAX_CHARS).optional(),
5270
- items: z11.array(z11.string().max(EVALUATE_ITEM_MAX_CHARS)).max(EVALUATE_MAX_ITEMS).optional(),
5271
- questions: z11.array(EvaluateQuestionSchema).min(1).max(EVALUATE_MAX_QUESTIONS)
5413
+ var EvaluateQuestionsRequestSchema = z13.object({
5414
+ projectId: z13.string(),
5415
+ state: z13.string().max(JEV_STATE_MAX_CHARS).optional(),
5416
+ items: z13.array(z13.string().max(EVALUATE_ITEM_MAX_CHARS)).max(EVALUATE_MAX_ITEMS).optional(),
5417
+ questions: z13.array(EvaluateQuestionSchema).min(1).max(EVALUATE_MAX_QUESTIONS)
5272
5418
  }).superRefine((req, ctx) => {
5273
5419
  if (req.state === void 0 && (!req.items || req.items.length === 0)) {
5274
5420
  ctx.addIssue({
5275
- code: z11.ZodIssueCode.custom,
5421
+ code: z13.ZodIssueCode.custom,
5276
5422
  path: ["state"],
5277
5423
  message: "pass state, or a non-empty items array"
5278
5424
  });
5279
5425
  }
5280
5426
  if (JSON.stringify(req).length > EVALUATE_REQUEST_MAX_CHARS) {
5281
5427
  ctx.addIssue({
5282
- code: z11.ZodIssueCode.custom,
5428
+ code: z13.ZodIssueCode.custom,
5283
5429
  path: [],
5284
5430
  message: `the request is over ${EVALUATE_REQUEST_MAX_CHARS} characters; split the items across calls`
5285
5431
  });
5286
5432
  }
5287
5433
  if (new Set(req.questions.map((q) => q.key)).size !== req.questions.length) {
5288
5434
  ctx.addIssue({
5289
- code: z11.ZodIssueCode.custom,
5435
+ code: z13.ZodIssueCode.custom,
5290
5436
  path: ["questions"],
5291
5437
  message: "question keys must be unique"
5292
5438
  });
@@ -5324,129 +5470,129 @@ var MEETING_TITLE_MAX = 200;
5324
5470
  var MEETING_OCCURRED_AT_MIN_YEAR = 2e3;
5325
5471
  var MEETING_OCCURRED_AT_MAX_FUTURE_MS = 48 * 60 * 60 * 1e3;
5326
5472
  var OCCURRED_AT_RANGE_MESSAGE = `occurredAt must be a real date: no earlier than ${MEETING_OCCURRED_AT_MIN_YEAR}, and no more than 48 hours in the future.`;
5327
- var MeetingOccurredAtSchema = z12.string().datetime().refine((value) => {
5473
+ var MeetingOccurredAtSchema = z14.string().datetime().refine((value) => {
5328
5474
  const ms = Date.parse(value);
5329
5475
  if (Number.isNaN(ms)) return false;
5330
5476
  if (ms > Date.now() + MEETING_OCCURRED_AT_MAX_FUTURE_MS) return false;
5331
5477
  return new Date(ms).getUTCFullYear() >= MEETING_OCCURRED_AT_MIN_YEAR;
5332
5478
  }, OCCURRED_AT_RANGE_MESSAGE);
5333
- var CreateMeetingFromTranscriptRequestSchema = z12.object({
5334
- projectId: z12.string().cuid(),
5335
- rawText: z12.string().min(1).max(MEETING_TRANSCRIPT_MAX_CHARS),
5336
- title: z12.string().min(1).max(MEETING_TITLE_MAX).optional(),
5479
+ var CreateMeetingFromTranscriptRequestSchema = z14.object({
5480
+ projectId: z14.string().cuid(),
5481
+ rawText: z14.string().min(1).max(MEETING_TRANSCRIPT_MAX_CHARS),
5482
+ title: z14.string().min(1).max(MEETING_TITLE_MAX).optional(),
5337
5483
  /** ISO 8601. Defaults to now when the source carries no date. */
5338
5484
  occurredAt: MeetingOccurredAtSchema.optional(),
5339
5485
  /** Override auto-detection. Rarely needed; detection handles the three formats. */
5340
- format: z12.enum(["text", "vtt", "srt"]).optional(),
5341
- source: z12.enum(["manual", "slack"]).optional()
5486
+ format: z14.enum(["text", "vtt", "srt"]).optional(),
5487
+ source: z14.enum(["manual", "slack"]).optional()
5342
5488
  });
5343
- var GetMeetingRequestSchema = z12.object({
5344
- projectId: z12.string().cuid(),
5345
- meetingId: z12.string().cuid()
5489
+ var GetMeetingRequestSchema = z14.object({
5490
+ projectId: z14.string().cuid(),
5491
+ meetingId: z14.string().cuid()
5346
5492
  });
5347
- var UpdateMeetingRequestSchema = z12.object({
5348
- projectId: z12.string().cuid(),
5349
- meetingId: z12.string().cuid(),
5350
- title: z12.string().min(1).max(MEETING_TITLE_MAX).optional(),
5493
+ var UpdateMeetingRequestSchema = z14.object({
5494
+ projectId: z14.string().cuid(),
5495
+ meetingId: z14.string().cuid(),
5496
+ title: z14.string().min(1).max(MEETING_TITLE_MAX).optional(),
5351
5497
  occurredAt: MeetingOccurredAtSchema.optional()
5352
5498
  });
5353
- var RegenerateMeetingSummaryRequestSchema = z12.object({
5354
- projectId: z12.string().cuid(),
5355
- meetingId: z12.string().cuid()
5499
+ var RegenerateMeetingSummaryRequestSchema = z14.object({
5500
+ projectId: z14.string().cuid(),
5501
+ meetingId: z14.string().cuid()
5356
5502
  });
5357
- var DeleteMeetingRequestSchema = z12.object({
5358
- projectId: z12.string().cuid(),
5359
- meetingId: z12.string().cuid()
5503
+ var DeleteMeetingRequestSchema = z14.object({
5504
+ projectId: z14.string().cuid(),
5505
+ meetingId: z14.string().cuid()
5360
5506
  });
5361
- var checklistTitle = z12.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX);
5362
- var ListMeetingChecklistRequestSchema = z12.object({
5363
- projectId: z12.string().cuid(),
5364
- meetingId: z12.string().cuid()
5507
+ var checklistTitle = z14.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX);
5508
+ var ListMeetingChecklistRequestSchema = z14.object({
5509
+ projectId: z14.string().cuid(),
5510
+ meetingId: z14.string().cuid()
5365
5511
  });
5366
- var AddMeetingChecklistItemsRequestSchema = z12.object({
5367
- projectId: z12.string().cuid(),
5368
- meetingId: z12.string().cuid(),
5369
- items: z12.array(z12.object({ title: checklistTitle })).min(1).max(50)
5512
+ var AddMeetingChecklistItemsRequestSchema = z14.object({
5513
+ projectId: z14.string().cuid(),
5514
+ meetingId: z14.string().cuid(),
5515
+ items: z14.array(z14.object({ title: checklistTitle })).min(1).max(50)
5370
5516
  });
5371
- var UpdateMeetingChecklistItemRequestSchema = z12.object({
5372
- projectId: z12.string().cuid(),
5373
- meetingId: z12.string().cuid(),
5374
- itemId: z12.string().cuid(),
5517
+ var UpdateMeetingChecklistItemRequestSchema = z14.object({
5518
+ projectId: z14.string().cuid(),
5519
+ meetingId: z14.string().cuid(),
5520
+ itemId: z14.string().cuid(),
5375
5521
  title: checklistTitle.optional(),
5376
- ordinal: z12.number().int().min(0).optional(),
5522
+ ordinal: z14.number().int().min(0).optional(),
5377
5523
  /** Explicit null clears the link; undefined leaves it alone. */
5378
- linkedTaskId: z12.string().cuid().nullable().optional()
5524
+ linkedTaskId: z14.string().cuid().nullable().optional()
5379
5525
  }).refine(
5380
5526
  (v) => v.title !== void 0 || v.ordinal !== void 0 || v.linkedTaskId !== void 0,
5381
5527
  "Pass at least one of title, ordinal, or linkedTaskId."
5382
5528
  );
5383
- var DeleteMeetingChecklistItemRequestSchema = z12.object({
5384
- projectId: z12.string().cuid(),
5385
- meetingId: z12.string().cuid(),
5386
- itemId: z12.string().cuid()
5387
- });
5388
- var SetMeetingChecklistItemCheckedRequestSchema = z12.object({
5389
- projectId: z12.string().cuid(),
5390
- meetingId: z12.string().cuid(),
5391
- itemId: z12.string().cuid(),
5392
- checked: z12.boolean(),
5529
+ var DeleteMeetingChecklistItemRequestSchema = z14.object({
5530
+ projectId: z14.string().cuid(),
5531
+ meetingId: z14.string().cuid(),
5532
+ itemId: z14.string().cuid()
5533
+ });
5534
+ var SetMeetingChecklistItemCheckedRequestSchema = z14.object({
5535
+ projectId: z14.string().cuid(),
5536
+ meetingId: z14.string().cuid(),
5537
+ itemId: z14.string().cuid(),
5538
+ checked: z14.boolean(),
5393
5539
  /** Attach the card in the same call that ticks the item. */
5394
- linkedTaskId: z12.string().cuid().nullable().optional()
5540
+ linkedTaskId: z14.string().cuid().nullable().optional()
5395
5541
  });
5396
- var ListMeetingsRequestSchema = z12.object({
5397
- projectId: z12.string().cuid(),
5398
- limit: z12.number().int().min(1).max(50).optional(),
5399
- search: z12.string().max(200).optional()
5542
+ var ListMeetingsRequestSchema = z14.object({
5543
+ projectId: z14.string().cuid(),
5544
+ limit: z14.number().int().min(1).max(50).optional(),
5545
+ search: z14.string().max(200).optional()
5400
5546
  });
5401
- var ReadMeetingTranscriptRequestSchema = z12.object({
5402
- projectId: z12.string().cuid(),
5403
- meetingId: z12.string().cuid(),
5404
- offset: z12.number().int().min(0).optional(),
5405
- limit: z12.number().int().min(1).max(500).optional()
5547
+ var ReadMeetingTranscriptRequestSchema = z14.object({
5548
+ projectId: z14.string().cuid(),
5549
+ meetingId: z14.string().cuid(),
5550
+ offset: z14.number().int().min(0).optional(),
5551
+ limit: z14.number().int().min(1).max(500).optional()
5406
5552
  });
5407
5553
  var MEETING_SUMMARY_MAX_CHARS = 5e4;
5408
- var AddProjectMeetingChecklistItemsRequestSchema = z12.object({
5409
- projectId: z12.string().cuid(),
5410
- meetingId: z12.string().cuid(),
5411
- items: z12.array(z12.object({ title: z12.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX) })).min(1).max(50),
5412
- requestingUserId: z12.string().optional()
5413
- });
5414
- var CheckProjectMeetingChecklistItemRequestSchema = z12.object({
5415
- projectId: z12.string().cuid(),
5416
- meetingId: z12.string().cuid(),
5417
- title: z12.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX),
5418
- checked: z12.boolean(),
5554
+ var AddProjectMeetingChecklistItemsRequestSchema = z14.object({
5555
+ projectId: z14.string().cuid(),
5556
+ meetingId: z14.string().cuid(),
5557
+ items: z14.array(z14.object({ title: z14.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX) })).min(1).max(50),
5558
+ requestingUserId: z14.string().optional()
5559
+ });
5560
+ var CheckProjectMeetingChecklistItemRequestSchema = z14.object({
5561
+ projectId: z14.string().cuid(),
5562
+ meetingId: z14.string().cuid(),
5563
+ title: z14.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX),
5564
+ checked: z14.boolean(),
5419
5565
  /** Card id or slug. Resolved server-side and required to be in the project. */
5420
- linkedTask: z12.string().min(1).optional(),
5421
- requestingUserId: z12.string().optional()
5422
- });
5423
- var EditProjectMeetingChecklistItemRequestSchema = z12.object({
5424
- projectId: z12.string().cuid(),
5425
- meetingId: z12.string().cuid(),
5426
- title: z12.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX),
5427
- newTitle: z12.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX),
5428
- requestingUserId: z12.string().optional()
5429
- });
5430
- var RemoveProjectMeetingChecklistItemRequestSchema = z12.object({
5431
- projectId: z12.string().cuid(),
5432
- meetingId: z12.string().cuid(),
5433
- title: z12.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX),
5434
- requestingUserId: z12.string().optional()
5435
- });
5436
- var CreateProjectMeetingRequestSchema = z12.object({
5437
- projectId: z12.string().cuid(),
5438
- rawText: z12.string().min(1).max(MEETING_TRANSCRIPT_MAX_CHARS),
5439
- title: z12.string().min(1).max(MEETING_TITLE_MAX).optional(),
5566
+ linkedTask: z14.string().min(1).optional(),
5567
+ requestingUserId: z14.string().optional()
5568
+ });
5569
+ var EditProjectMeetingChecklistItemRequestSchema = z14.object({
5570
+ projectId: z14.string().cuid(),
5571
+ meetingId: z14.string().cuid(),
5572
+ title: z14.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX),
5573
+ newTitle: z14.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX),
5574
+ requestingUserId: z14.string().optional()
5575
+ });
5576
+ var RemoveProjectMeetingChecklistItemRequestSchema = z14.object({
5577
+ projectId: z14.string().cuid(),
5578
+ meetingId: z14.string().cuid(),
5579
+ title: z14.string().min(1).max(MEETING_CHECKLIST_TITLE_MAX),
5580
+ requestingUserId: z14.string().optional()
5581
+ });
5582
+ var CreateProjectMeetingRequestSchema = z14.object({
5583
+ projectId: z14.string().cuid(),
5584
+ rawText: z14.string().min(1).max(MEETING_TRANSCRIPT_MAX_CHARS),
5585
+ title: z14.string().min(1).max(MEETING_TITLE_MAX).optional(),
5440
5586
  occurredAt: MeetingOccurredAtSchema.optional(),
5441
- requestingUserId: z12.string().optional()
5587
+ requestingUserId: z14.string().optional()
5442
5588
  });
5443
- var UpdateProjectMeetingRequestSchema = z12.object({
5444
- projectId: z12.string().cuid(),
5445
- meetingId: z12.string().cuid(),
5446
- title: z12.string().min(1).max(MEETING_TITLE_MAX).optional(),
5589
+ var UpdateProjectMeetingRequestSchema = z14.object({
5590
+ projectId: z14.string().cuid(),
5591
+ meetingId: z14.string().cuid(),
5592
+ title: z14.string().min(1).max(MEETING_TITLE_MAX).optional(),
5447
5593
  occurredAt: MeetingOccurredAtSchema.optional(),
5448
- summary: z12.string().min(1).max(MEETING_SUMMARY_MAX_CHARS).optional(),
5449
- requestingUserId: z12.string().optional()
5594
+ summary: z14.string().min(1).max(MEETING_SUMMARY_MAX_CHARS).optional(),
5595
+ requestingUserId: z14.string().optional()
5450
5596
  }).refine(
5451
5597
  (v) => v.title !== void 0 || v.occurredAt !== void 0 || v.summary !== void 0,
5452
5598
  "Pass at least one of title, occurredAt, or summary."
@@ -5471,8 +5617,8 @@ function anthropicEntry(model, label, inputPerMillion, outputPerMillion, opts =
5471
5617
  var ANTHROPIC_CATALOG = [
5472
5618
  anthropicEntry(DEFAULT_OPUS_MODEL, "Opus 5.5 Latest", 4, 20),
5473
5619
  anthropicEntry(PREVIOUS_OPUS_MODEL, "Opus 5", 5, 25),
5474
- anthropicEntry(DEFAULT_SONNET_MODEL, "Sonnet 5 Latest", 3, 15),
5475
- anthropicEntry(PREVIOUS_SONNET_MODEL, "Sonnet 4.6", 3, 15),
5620
+ anthropicEntry(DEFAULT_SONNET_MODEL, "Sonnet 5.5 Latest", 2, 10),
5621
+ anthropicEntry(PREVIOUS_SONNET_MODEL, "Sonnet 5", 2, 10),
5476
5622
  // The Haiku line (4.5 and older) predates the tuning surface and 400s on it.
5477
5623
  anthropicEntry(DEFAULT_HAIKU_MODEL, "Haiku 4.5", 1, 5, { supportsEffort: false }),
5478
5624
  anthropicEntry(FABLE_MODEL, "Fable 5.1", 10, 50)
@@ -5480,6 +5626,11 @@ var ANTHROPIC_CATALOG = [
5480
5626
  var CLAUDESPACE_WORKLOAD_LABEL = "rc-workload";
5481
5627
  var CLAUDESPACE_WORKLOAD_VALUE = "claudespace";
5482
5628
  var CONVEYOR_POD_SELECTOR = `${CLAUDESPACE_WORKLOAD_LABEL}=${CLAUDESPACE_WORKLOAD_VALUE}`;
5629
+ var PERSONAL_LOCAL_REGISTRY_NAMESPACE = "conveyor-system";
5630
+ var PERSONAL_LOCAL_REGISTRY_NAME = "conveyor-registry";
5631
+ var PERSONAL_LOCAL_REGISTRY_PORT = 5e3;
5632
+ var PERSONAL_LOCAL_REGISTRY_HOST = `${PERSONAL_LOCAL_REGISTRY_NAME}.${PERSONAL_LOCAL_REGISTRY_NAMESPACE}.svc.cluster.local:${PERSONAL_LOCAL_REGISTRY_PORT}`;
5633
+ var PERSONAL_LOCAL_REGISTRY_NODE_ENDPOINT = `http://127.0.0.1:${PERSONAL_LOCAL_REGISTRY_PORT}`;
5483
5634
  var MS_PER_DAY = 24 * 60 * 60 * 1e3;
5484
5635
  var POSTGRES_ENV = {
5485
5636
  POSTGRES_HOST_AUTH_METHOD: "trust",
@@ -5660,14 +5811,19 @@ var CATALOG = {
5660
5811
  lgtm: {
5661
5812
  name: "lgtm",
5662
5813
  image: "grafana/otel-lgtm:0.11.6",
5663
- // The otel-lgtm image's own CMD is ["/otel-lgtm/run-all.sh"] (WORKDIR
5664
- // /otel-lgtm). Declaring it explicitly makes lgtm a command-based service so
5665
- // the lazy start-file gate wraps it like the others — otherwise it launches
5666
- // via image CMD at boot and can't be parked (which is why warm-booting it at
5667
- // a minimal request OOMKilled it). getSidecarSpecs strips this command for a
5668
- // baked lgtm image, so it only applies to the stock image whose launcher is
5669
- // exactly this path.
5670
- command: ["/otel-lgtm/run-all.sh"],
5814
+ // Runs the image's own launcher (/otel-lgtm/run-all.sh) after capping
5815
+ // Tempo's retention. The image ships Tempo with the 14-day default, and its
5816
+ // blocks live on the container's writable layer, which counts against the
5817
+ // 1Gi ephemeral-storage limit below; overrunning it evicts the whole pod.
5818
+ // At 100% sampling a busy dev stack writes up to ~2 GB of traces a day, so
5819
+ // keep 3h (plus 10m before a retired block leaves disk). The grep keeps it
5820
+ // idempotent, and a failed append still starts the stack. lgtm has no bake,
5821
+ // so no baked image ever strips this command.
5822
+ command: [
5823
+ "sh",
5824
+ "-c",
5825
+ "grep -q '^compactor:' /otel-lgtm/tempo-config.yaml || printf '\\ncompactor:\\n compaction:\\n block_retention: 3h\\n compacted_block_retention: 10m\\n' >> /otel-lgtm/tempo-config.yaml; exec /otel-lgtm/run-all.sh"
5826
+ ],
5671
5827
  ports: [
5672
5828
  // OTLP gRPC + HTTP — agents and user code emit telemetry here.
5673
5829
  4317,
@@ -5893,7 +6049,7 @@ function registerChecklistTools(server2, conn2) {
5893
6049
  }
5894
6050
 
5895
6051
  // src/tools/workspace.ts
5896
- import { z as z13 } from "zod";
6052
+ import { z as z15 } from "zod/v3";
5897
6053
 
5898
6054
  // src/workspace-ssh-tunnel.ts
5899
6055
  import net from "net";
@@ -6013,8 +6169,8 @@ function registerAttachInfoTool(server2, conn2) {
6013
6169
  "workspace_attach_info",
6014
6170
  "Return SSH/SFTP attach metadata for a running task Claudespace, plus hosted preview URLs and configured preview ports. Optionally installs an OpenSSH public key for this attach session.",
6015
6171
  {
6016
- taskId: z13.string().describe("The task ID"),
6017
- sshPublicKey: z13.string().optional().describe("Optional OpenSSH public key to install into the workspace")
6172
+ taskId: z15.string().describe("The task ID"),
6173
+ sshPublicKey: z15.string().optional().describe("Optional OpenSSH public key to install into the workspace")
6018
6174
  },
6019
6175
  async ({ taskId, sshPublicKey }) => {
6020
6176
  const info = await conn2.getWorkspaceAttachInfo(taskId, sshPublicKey);
@@ -6027,7 +6183,7 @@ function registerPreviewUrlsTool(server2, conn2) {
6027
6183
  "workspace_preview_urls",
6028
6184
  "Return the hosted preview URLs and preview ports for a running task Claudespace. This mirrors the web UI preview link metadata.",
6029
6185
  {
6030
- taskId: z13.string().describe("The task ID")
6186
+ taskId: z15.string().describe("The task ID")
6031
6187
  },
6032
6188
  async ({ taskId }) => {
6033
6189
  const info = await conn2.getWorkspaceAttachInfo(taskId);
@@ -6057,10 +6213,10 @@ function registerStartTunnelTool(server2, conn2, startTunnel) {
6057
6213
  "workspace_start_tunnel",
6058
6214
  "Start a local loopback tunnel through the MCP server to a running task Claudespace port. Use port 2222 for SSH/SFTP, or one of previewPorts for app access.",
6059
6215
  {
6060
- taskId: z13.string().describe("The task ID"),
6061
- port: z13.number().optional().describe("Remote Claudespace port. Defaults to SSH port 2222."),
6062
- preferredLocalPort: z13.number().optional().describe("Preferred local loopback port. If omitted, the OS chooses one."),
6063
- sshPublicKey: z13.string().optional().describe("Optional OpenSSH public key to install before opening the tunnel")
6216
+ taskId: z15.string().describe("The task ID"),
6217
+ port: z15.number().optional().describe("Remote Claudespace port. Defaults to SSH port 2222."),
6218
+ preferredLocalPort: z15.number().optional().describe("Preferred local loopback port. If omitted, the OS chooses one."),
6219
+ sshPublicKey: z15.string().optional().describe("Optional OpenSSH public key to install before opening the tunnel")
6064
6220
  },
6065
6221
  async ({ taskId, port, preferredLocalPort, sshPublicKey }) => {
6066
6222
  const info = await conn2.getWorkspaceAttachInfo(taskId, sshPublicKey);
@@ -6120,7 +6276,7 @@ function registerStopTunnelTool(server2) {
6120
6276
  "workspace_stop_tunnel",
6121
6277
  "Stop a local workspace tunnel previously opened by workspace_start_tunnel.",
6122
6278
  {
6123
- tunnelId: z13.string().describe("Tunnel id returned by workspace_start_tunnel")
6279
+ tunnelId: z15.string().describe("Tunnel id returned by workspace_start_tunnel")
6124
6280
  },
6125
6281
  async ({ tunnelId }) => {
6126
6282
  const tunnel = activeTunnels.get(tunnelId);