@rallycry/conveyor-agent 11.0.26 → 11.0.28

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.
@@ -1446,8 +1446,9 @@ ${q.question}${q.options.length ? "\n" + q.options.map((o) => `- ${o.label}: ${o
1446
1446
  }
1447
1447
  };
1448
1448
 
1449
- // ../shared/dist/chunk-U3HGG5NX.js
1449
+ // ../shared/dist/chunk-ZSXAYKD4.js
1450
1450
  import { z } from "zod";
1451
+ import { z as z2 } from "zod";
1451
1452
  var DEFAULT_SONNET_MODEL = "claude-sonnet-5";
1452
1453
  var DEFAULT_OPUS_MODEL = "claude-opus-5-5";
1453
1454
  var DEFAULT_HAIKU_MODEL = "claude-haiku-4-5-20251001";
@@ -1565,6 +1566,12 @@ var projectCheckpointSettingsSchema = z.object({
1565
1566
  var CARD_DESCRIPTION_MAX = 255;
1566
1567
  var CARD_DESCRIPTION_LIMIT_MESSAGE = `Card descriptions are capped at ${CARD_DESCRIPTION_MAX} characters \u2014 write 1-2 plain sentences a non-engineer can read; put technical detail in the plan or card chat.`;
1567
1568
  var CARD_DESCRIPTION_FIELD_HINT = `max ${CARD_DESCRIPTION_MAX} chars, 1-2 plain sentences a non-engineer can read \u2014 put technical detail in the plan`;
1569
+ var MAX_MANUAL_TESTS_PER_TASK = 5;
1570
+ var MAX_MANUAL_TEST_TITLE_LENGTH = 200;
1571
+ var ManualTestItemsSchema = z2.array(z2.object({ title: z2.string().min(1).max(MAX_MANUAL_TEST_TITLE_LENGTH) })).min(1).max(MAX_MANUAL_TESTS_PER_TASK);
1572
+ function describeManualTestRejection(item) {
1573
+ return item.reason === "cap" ? `Rejected "${item.title}": the card already holds ${MAX_MANUAL_TESTS_PER_TASK} manual tests. Use remove_manual_test or edit_manual_test to consolidate.` : `Rejected "${item.title}": names an automated step (lint, tests, CI, shell); manual tests describe what a person does in the app.`;
1574
+ }
1568
1575
  var DEFAULT_CI_WAIT_TIMEOUT_MINUTES = 45;
1569
1576
  var MAX_CI_WAIT_TIMEOUT_MINUTES = 180;
1570
1577
  var SEVERITY_ENUM = [
@@ -1699,9 +1706,9 @@ async function runQueryGrafanaLogs(port, params, now = Date.now) {
1699
1706
  }
1700
1707
 
1701
1708
  // ../shared/dist/index.js
1702
- import { z as z2 } from "zod";
1703
- import { z as z22 } from "zod";
1704
1709
  import { z as z3 } from "zod";
1710
+ import { z as z22 } from "zod";
1711
+ import { z as z32 } from "zod";
1705
1712
  import { z as z4 } from "zod";
1706
1713
  import { z as z5 } from "zod";
1707
1714
  import { z as z6 } from "zod";
@@ -1736,7 +1743,7 @@ var ACHIEVEMENT_RARITIES = [
1736
1743
  { key: "pack", name: "Pack", color: "#9c27b0", iconPath: "/storypoints/pack.svg" }
1737
1744
  ];
1738
1745
  var RISK_LEVELS = ["critical", "high", "medium", "low"];
1739
- var riskLevelSchema = z2.enum(RISK_LEVELS);
1746
+ var riskLevelSchema = z3.enum(RISK_LEVELS);
1740
1747
  var DEFAULT_RISK_LEVELS = [
1741
1748
  {
1742
1749
  level: "critical",
@@ -1785,8 +1792,41 @@ var IDENTIFIED_WORK_STATUSES = ["Open", ...ACTIVE_WORK_STATUSES];
1785
1792
  var DEFAULT_TASK_STATUS_COLOR = "#a8a29e";
1786
1793
  var DEFAULT_TASK_STATUS_COLOR_INT = Number.parseInt(DEFAULT_TASK_STATUS_COLOR.slice(1), 16);
1787
1794
  var MAX_FILE_SIZE_BYTES = 25 * 1024 * 1024;
1795
+ function isCapabilityServableMime(mimeType) {
1796
+ const base = mimeType.split(";")[0]?.trim().toLowerCase() ?? "";
1797
+ return base.startsWith("image/") || base.startsWith("video/");
1798
+ }
1788
1799
  var MAX_FILE_TAGS = 5;
1789
1800
  var MAX_FILE_TAG_LENGTH = 100;
1801
+ var ALLOWED_FILE_MIME_TYPES = [
1802
+ "image/png",
1803
+ "image/jpeg",
1804
+ "image/gif",
1805
+ "image/webp",
1806
+ "application/json",
1807
+ "text/csv",
1808
+ "text/plain",
1809
+ "text/markdown",
1810
+ "text/vnd.mermaid",
1811
+ "application/pdf",
1812
+ // Reports (conveyor-consensus and friends) are single-file, no-JS HTML. Safe
1813
+ // to store because the DOWNLOAD route serves these under a sandbox CSP with
1814
+ // an opaque origin — see SANDBOXED_MIME in services/file/routes.ts.
1815
+ "text/html",
1816
+ // Office documents: the OOXML trio only (legacy .doc/.xls/.ppt stay out).
1817
+ // Served inline like PDFs; browsers download them and nothing renders
1818
+ // in-origin, so they need no SANDBOXED_MIME entry.
1819
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
1820
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
1821
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation"
1822
+ ];
1823
+ var ALLOWED_FILE_ACCEPT = [
1824
+ ...ALLOWED_FILE_MIME_TYPES,
1825
+ // Extensions too: a mime-only `accept` filters the OS picker by its own mime
1826
+ // registry, which greys out .md/.mmd (and Office files on a machine without
1827
+ // Office) even though the upload would succeed.
1828
+ ".png,.jpg,.jpeg,.gif,.webp,.json,.csv,.txt,.md,.mmd,.pdf,.html,.docx,.xlsx,.pptx"
1829
+ ].join(",");
1790
1830
  var EMBED_THRESHOLD_IMAGES = 5 * 1024 * 1024;
1791
1831
  var EMBED_THRESHOLD_TEXT = 2 * 1024 * 1024;
1792
1832
  var IDLE_HEARTBEAT_MS = 90 * 1e3;
@@ -1950,29 +1990,29 @@ var AgentEventSchema = z22.union([
1950
1990
  KnownAgentEventSchema,
1951
1991
  z22.object({ type: z22.string().min(1) }).catchall(z22.unknown())
1952
1992
  ]);
1953
- var cardDescription = z3.string().max(CARD_DESCRIPTION_MAX, CARD_DESCRIPTION_LIMIT_MESSAGE).optional();
1954
- var AgentHeartbeatSchema = z3.object({
1955
- sessionId: z3.string().optional(),
1956
- timestamp: z3.string(),
1957
- status: z3.enum(["active", "idle", "building"]),
1958
- currentAction: z3.string().optional(),
1993
+ var cardDescription = z32.string().max(CARD_DESCRIPTION_MAX, CARD_DESCRIPTION_LIMIT_MESSAGE).optional();
1994
+ var AgentHeartbeatSchema = z32.object({
1995
+ sessionId: z32.string().optional(),
1996
+ timestamp: z32.string(),
1997
+ status: z32.enum(["active", "idle", "building"]),
1998
+ currentAction: z32.string().optional(),
1959
1999
  /** Sender-observed main event-loop lag (ms) — see AgentHeartbeat.loopLagMs. */
1960
- loopLagMs: z3.number().nonnegative().optional()
1961
- });
1962
- var CreatePRInputSchema = z3.object({
1963
- title: z3.string().min(1),
1964
- body: z3.string(),
1965
- head: z3.string().optional(),
1966
- base: z3.string().optional()
1967
- });
1968
- var PostToChatInputSchema = z3.object({
1969
- message: z3.string().min(1),
1970
- type: z3.enum(["message", "question", "update"]).optional().default("message"),
1971
- milestone: z3.enum(["plan_ready", "implementation_complete", "blocked"]).optional()
1972
- });
1973
- var GetTaskContextRequestSchema = z3.object({
1974
- sessionId: z3.string(),
1975
- includeHistory: z3.boolean().optional().default(false),
2000
+ loopLagMs: z32.number().nonnegative().optional()
2001
+ });
2002
+ var CreatePRInputSchema = z32.object({
2003
+ title: z32.string().min(1),
2004
+ body: z32.string(),
2005
+ head: z32.string().optional(),
2006
+ base: z32.string().optional()
2007
+ });
2008
+ var PostToChatInputSchema = z32.object({
2009
+ message: z32.string().min(1),
2010
+ type: z32.enum(["message", "question", "update"]).optional().default("message"),
2011
+ milestone: z32.enum(["plan_ready", "implementation_complete", "blocked"]).optional()
2012
+ });
2013
+ var GetTaskContextRequestSchema = z32.object({
2014
+ sessionId: z32.string(),
2015
+ includeHistory: z32.boolean().optional().default(false),
1976
2016
  /**
1977
2017
  * Read the plan-revised marker WITHOUT consuming it. Bookkeeping fetches
1978
2018
  * (the session-identity check, the branch refresh) pass true so they cannot
@@ -1980,277 +2020,283 @@ var GetTaskContextRequestSchema = z3.object({
1980
2020
  * Defaults to false — consuming — so a pod running an older agent build still
1981
2021
  * clears the marker instead of showing the notice on every boot forever.
1982
2022
  */
1983
- peekPlanRevision: z3.boolean().optional().default(false)
2023
+ peekPlanRevision: z32.boolean().optional().default(false)
1984
2024
  });
1985
- var GetChatMessagesRequestSchema = z3.object({
1986
- sessionId: z3.string(),
1987
- limit: z3.number().int().positive().optional().default(50),
1988
- offset: z3.number().int().nonnegative().optional().default(0),
2025
+ var GetChatMessagesRequestSchema = z32.object({
2026
+ sessionId: z32.string(),
2027
+ limit: z32.number().int().positive().optional().default(50),
2028
+ offset: z32.number().int().nonnegative().optional().default(0),
1989
2029
  /** Task id or slug to read chat from. Omit for the session's own task. Only
1990
2030
  * the session's own task or one of its children resolves — anything else is
1991
2031
  * an error, never a silent fallback to the caller's own chat. */
1992
- taskId: z3.string().optional()
2032
+ taskId: z32.string().optional()
2033
+ });
2034
+ var GetTaskFilesRequestSchema = z32.object({
2035
+ sessionId: z32.string(),
2036
+ taskId: z32.string().optional()
1993
2037
  });
1994
- var GetTaskFilesRequestSchema = z3.object({
1995
- sessionId: z3.string()
2038
+ var GetTaskFileRequestSchema = z32.object({
2039
+ sessionId: z32.string(),
2040
+ fileId: z32.string(),
2041
+ taskId: z32.string().optional()
1996
2042
  });
1997
- var GetTaskFileRequestSchema = z3.object({
1998
- sessionId: z3.string(),
1999
- fileId: z3.string()
2043
+ var DeleteTaskFileRequestSchema = z32.object({
2044
+ sessionId: z32.string(),
2045
+ fileId: z32.string()
2000
2046
  });
2001
- var GetTaskRequestSchema = z3.object({
2002
- sessionId: z3.string(),
2003
- taskSlugOrId: z3.string()
2047
+ var GetTaskRequestSchema = z32.object({
2048
+ sessionId: z32.string(),
2049
+ taskSlugOrId: z32.string()
2004
2050
  });
2005
- var GetCliHistoryRequestSchema = z3.object({
2006
- sessionId: z3.string(),
2007
- limit: z3.number().int().positive().optional().default(100),
2008
- source: z3.enum(["agent", "application"]).optional(),
2051
+ var GetCliHistoryRequestSchema = z32.object({
2052
+ sessionId: z32.string(),
2053
+ limit: z32.number().int().positive().optional().default(100),
2054
+ source: z32.enum(["agent", "application"]).optional(),
2009
2055
  /** Task id or slug to read logs from. Omit for the session's own task. Only
2010
2056
  * the session's own task or one of its children resolves — anything else is
2011
2057
  * an error, never a silent fallback to the caller's own logs. */
2012
- taskId: z3.string().optional()
2058
+ taskId: z32.string().optional()
2013
2059
  });
2014
- var ListSubtasksRequestSchema = z3.object({
2015
- sessionId: z3.string(),
2060
+ var ListSubtasksRequestSchema = z32.object({
2061
+ sessionId: z32.string(),
2016
2062
  /** "compact" returns the slim orchestration view (ListSubtasksCompactResponse:
2017
2063
  * per-child status, agent, story points, PR state, dependencies); "full" (default — wire-compat with older
2018
2064
  * agents) returns the verbose SubtaskSummaryDTO[] including description/plan. */
2019
- view: z3.enum(["compact", "full"]).optional()
2020
- });
2021
- var GetDependenciesRequestSchema = z3.object({
2022
- sessionId: z3.string()
2023
- });
2024
- var GetSuggestionsRequestSchema = z3.object({
2025
- sessionId: z3.string(),
2026
- status: z3.string().optional(),
2027
- limit: z3.number().int().min(1).max(100).optional()
2028
- });
2029
- var ListManualTestsRequestSchema = z3.object({
2030
- sessionId: z3.string()
2031
- });
2032
- var QueryManualTestsRequestSchema = z3.object({
2033
- sessionId: z3.string(),
2034
- cardStatuses: z3.array(z3.string()).optional(),
2035
- testStatuses: z3.array(z3.enum(["open", "approved", "rejected"])).optional()
2036
- });
2037
- var CreatePullRequestRequestSchema = CreatePRInputSchema.extend({ sessionId: z3.string() });
2038
- var RequestFileUploadRequestSchema = z3.object({
2039
- sessionId: z3.string(),
2040
- fileName: z3.string().min(1).max(255),
2041
- mimeType: z3.string().min(1).max(128),
2042
- fileSize: z3.number().int().positive().max(MAX_FILE_SIZE_BYTES)
2043
- });
2044
- var ConfirmFileUploadRequestSchema = z3.object({
2045
- sessionId: z3.string(),
2046
- fileId: z3.string(),
2047
- title: z3.string().max(500).optional(),
2065
+ view: z32.enum(["compact", "full"]).optional()
2066
+ });
2067
+ var GetDependenciesRequestSchema = z32.object({
2068
+ sessionId: z32.string()
2069
+ });
2070
+ var GetSuggestionsRequestSchema = z32.object({
2071
+ sessionId: z32.string(),
2072
+ status: z32.string().optional(),
2073
+ limit: z32.number().int().min(1).max(100).optional()
2074
+ });
2075
+ var ListManualTestsRequestSchema = z32.object({
2076
+ sessionId: z32.string()
2077
+ });
2078
+ var QueryManualTestsRequestSchema = z32.object({
2079
+ sessionId: z32.string(),
2080
+ cardStatuses: z32.array(z32.string()).optional(),
2081
+ testStatuses: z32.array(z32.enum(["open", "approved", "rejected"])).optional()
2082
+ });
2083
+ var CreatePullRequestRequestSchema = CreatePRInputSchema.extend({ sessionId: z32.string() });
2084
+ var RequestFileUploadRequestSchema = z32.object({
2085
+ sessionId: z32.string(),
2086
+ fileName: z32.string().min(1).max(255),
2087
+ mimeType: z32.string().min(1).max(128),
2088
+ fileSize: z32.number().int().positive().max(MAX_FILE_SIZE_BYTES)
2089
+ });
2090
+ var ConfirmFileUploadRequestSchema = z32.object({
2091
+ sessionId: z32.string(),
2092
+ fileId: z32.string(),
2093
+ title: z32.string().max(500).optional(),
2048
2094
  /** Glossary tag names (or ids) this file is an example of. */
2049
- tags: z3.array(z3.string().min(1).max(MAX_FILE_TAG_LENGTH)).max(MAX_FILE_TAGS).optional()
2050
- });
2051
- var UpdateTaskStatusRequestSchema = z3.object({
2052
- sessionId: z3.string(),
2053
- status: z3.string(),
2054
- force: z3.boolean().optional().default(false)
2055
- });
2056
- var StoreSessionIdRequestSchema = z3.object({
2057
- sessionId: z3.string(),
2058
- sdkSessionId: z3.string()
2059
- });
2060
- var SetManualTestsRequestSchema = z3.object({
2061
- sessionId: z3.string(),
2062
- items: z3.array(z3.object({ title: z3.string().min(1) })).min(1)
2063
- });
2064
- var EditManualTestRequestSchema = z3.object({
2065
- sessionId: z3.string(),
2066
- title: z3.string().min(1),
2067
- newTitle: z3.string().min(1)
2068
- });
2069
- var RemoveManualTestRequestSchema = z3.object({
2070
- sessionId: z3.string(),
2071
- title: z3.string().min(1)
2072
- });
2073
- var ApproveManualTestRequestSchema = z3.object({
2074
- sessionId: z3.string(),
2075
- title: z3.string().min(1)
2076
- });
2077
- var RejectManualTestRequestSchema = z3.object({
2078
- sessionId: z3.string(),
2079
- title: z3.string().min(1),
2080
- reason: z3.string().min(1).max(2e3)
2081
- });
2082
- var SessionStartRequestSchema = z3.object({
2083
- sessionId: z3.string(),
2084
- agentVersion: z3.string(),
2085
- capabilities: z3.array(z3.string())
2086
- });
2087
- var SessionStopRequestSchema = z3.object({
2088
- sessionId: z3.string(),
2089
- reason: z3.string().optional()
2090
- });
2091
- var EndReviewSessionRequestSchema = z3.object({
2092
- sessionId: z3.string(),
2093
- reason: z3.enum(["approved", "changes_requested", "finished"]).optional()
2094
- });
2095
- var ConnectAgentRequestSchema = z3.object({
2096
- sessionId: z3.string()
2097
- });
2098
- var ReportAgentStatusRequestSchema = z3.object({
2099
- sessionId: z3.string(),
2100
- status: z3.string(),
2095
+ tags: z32.array(z32.string().min(1).max(MAX_FILE_TAG_LENGTH)).max(MAX_FILE_TAGS).optional()
2096
+ });
2097
+ var UpdateTaskStatusRequestSchema = z32.object({
2098
+ sessionId: z32.string(),
2099
+ status: z32.string(),
2100
+ force: z32.boolean().optional().default(false)
2101
+ });
2102
+ var StoreSessionIdRequestSchema = z32.object({
2103
+ sessionId: z32.string(),
2104
+ sdkSessionId: z32.string()
2105
+ });
2106
+ var SetManualTestsRequestSchema = z32.object({
2107
+ sessionId: z32.string(),
2108
+ items: ManualTestItemsSchema
2109
+ });
2110
+ var EditManualTestRequestSchema = z32.object({
2111
+ sessionId: z32.string(),
2112
+ title: z32.string().min(1),
2113
+ newTitle: z32.string().min(1)
2114
+ });
2115
+ var RemoveManualTestRequestSchema = z32.object({
2116
+ sessionId: z32.string(),
2117
+ title: z32.string().min(1)
2118
+ });
2119
+ var ApproveManualTestRequestSchema = z32.object({
2120
+ sessionId: z32.string(),
2121
+ title: z32.string().min(1)
2122
+ });
2123
+ var RejectManualTestRequestSchema = z32.object({
2124
+ sessionId: z32.string(),
2125
+ title: z32.string().min(1),
2126
+ reason: z32.string().min(1).max(2e3)
2127
+ });
2128
+ var SessionStartRequestSchema = z32.object({
2129
+ sessionId: z32.string(),
2130
+ agentVersion: z32.string(),
2131
+ capabilities: z32.array(z32.string())
2132
+ });
2133
+ var SessionStopRequestSchema = z32.object({
2134
+ sessionId: z32.string(),
2135
+ reason: z32.string().optional()
2136
+ });
2137
+ var EndReviewSessionRequestSchema = z32.object({
2138
+ sessionId: z32.string(),
2139
+ reason: z32.enum(["approved", "changes_requested", "finished"]).optional()
2140
+ });
2141
+ var ConnectAgentRequestSchema = z32.object({
2142
+ sessionId: z32.string()
2143
+ });
2144
+ var ReportAgentStatusRequestSchema = z32.object({
2145
+ sessionId: z32.string(),
2146
+ status: z32.string(),
2101
2147
  /** Why the agent reports this status (e.g. "user_question" while an AskUserQuestion questionnaire is pending in the TUI). */
2102
- reason: z3.string().optional(),
2148
+ reason: z32.string().optional(),
2103
2149
  /**
2104
2150
  * The pending question text, sent only alongside `reason: "user_question"`
2105
2151
  * so the server can surface it in the user-question notification body (and
2106
2152
  * thus the Attention feed) instead of a generic string. Optional: older
2107
2153
  * agents omit it and the server falls back to the generic wording.
2108
2154
  */
2109
- questionText: z3.string().optional()
2155
+ questionText: z32.string().optional()
2110
2156
  });
2111
- var NotifyAgentVersionRequestSchema = z3.object({
2112
- sessionId: z3.string(),
2113
- agentVersion: z3.string()
2157
+ var NotifyAgentVersionRequestSchema = z32.object({
2158
+ sessionId: z32.string(),
2159
+ agentVersion: z32.string()
2114
2160
  });
2115
- var DiscoveredPortSchema = z3.object({
2116
- port: z3.number().int().min(1).max(65535),
2117
- label: z3.string().min(1).max(64).optional(),
2118
- protocol: z3.enum(["http", "tcp"]).optional(),
2119
- detectedAt: z3.string()
2161
+ var DiscoveredPortSchema = z32.object({
2162
+ port: z32.number().int().min(1).max(65535),
2163
+ label: z32.string().min(1).max(64).optional(),
2164
+ protocol: z32.enum(["http", "tcp"]).optional(),
2165
+ detectedAt: z32.string()
2120
2166
  });
2121
- var ReportDiscoveredPortsRequestSchema = z3.object({
2122
- sessionId: z3.string(),
2123
- ports: z3.array(DiscoveredPortSchema).max(64)
2167
+ var ReportDiscoveredPortsRequestSchema = z32.object({
2168
+ sessionId: z32.string(),
2169
+ ports: z32.array(DiscoveredPortSchema).max(64)
2124
2170
  });
2125
- var ReportBootMilestoneRequestSchema = z3.object({
2126
- sessionId: z3.string(),
2127
- key: z3.string().max(64)
2171
+ var ReportBootMilestoneRequestSchema = z32.object({
2172
+ sessionId: z32.string(),
2173
+ key: z32.string().max(64)
2128
2174
  });
2129
- var CreateSubtaskRequestSchema = z3.object({
2130
- sessionId: z3.string(),
2131
- title: z3.string().min(1),
2175
+ var CreateSubtaskRequestSchema = z32.object({
2176
+ sessionId: z32.string(),
2177
+ title: z32.string().min(1),
2132
2178
  description: cardDescription,
2133
- plan: z3.string().optional(),
2134
- storyPointValue: z3.number().int().positive().optional(),
2135
- ordinal: z3.number().int().nonnegative().optional(),
2136
- followParentStatus: z3.boolean().optional(),
2179
+ plan: z32.string().optional(),
2180
+ storyPointValue: z32.number().int().positive().optional(),
2181
+ ordinal: z32.number().int().nonnegative().optional(),
2182
+ followParentStatus: z32.boolean().optional(),
2137
2183
  /** Sibling subtask ids or slugs this subtask blocks on (explicit dependency
2138
2184
  * metadata — preferred over encoding order in plan text / ordinal). */
2139
- dependsOn: z3.array(z3.string().min(1)).max(32).optional(),
2185
+ dependsOn: z32.array(z32.string().min(1)).max(32).optional(),
2140
2186
  /** Glossary tag names to assign to the child. Unmatched names come back in
2141
2187
  * the response rather than failing the create. */
2142
- tags: z3.array(z3.string().min(1)).max(10).optional()
2188
+ tags: z32.array(z32.string().min(1)).max(10).optional()
2143
2189
  });
2144
- var UpdateSubtaskRequestSchema = z3.object({
2145
- sessionId: z3.string(),
2146
- subtaskId: z3.string(),
2147
- title: z3.string().min(1).optional(),
2190
+ var UpdateSubtaskRequestSchema = z32.object({
2191
+ sessionId: z32.string(),
2192
+ subtaskId: z32.string(),
2193
+ title: z32.string().min(1).optional(),
2148
2194
  description: cardDescription,
2149
- plan: z3.string().optional(),
2195
+ plan: z32.string().optional(),
2150
2196
  /** Orchestration statuses only ("Planning" | "Open") — the pack parent's
2151
2197
  * sanctioned promotion path. Execution statuses stay with the build
2152
2198
  * pipeline / force_update_task_status. Enforced server-side. */
2153
- status: z3.string().optional(),
2199
+ status: z32.string().optional(),
2154
2200
  /** Assign a project agent to the child — accepts the agent's id or exact
2155
2201
  * name; resolved against the parent task's project server-side. */
2156
- agentIdOrName: z3.string().min(1).optional(),
2157
- storyPointValue: z3.number().int().positive().optional(),
2158
- followParentStatus: z3.boolean().optional(),
2202
+ agentIdOrName: z32.string().min(1).optional(),
2203
+ storyPointValue: z32.number().int().positive().optional(),
2204
+ followParentStatus: z32.boolean().optional(),
2159
2205
  /** Replace this subtask's dependency edges with these sibling ids/slugs.
2160
2206
  * Empty array clears all. Omit to leave dependencies unchanged. */
2161
- dependsOn: z3.array(z3.string().min(1)).max(32).optional()
2207
+ dependsOn: z32.array(z32.string().min(1)).max(32).optional()
2162
2208
  });
2163
- var DeleteSubtaskRequestSchema = z3.object({
2164
- sessionId: z3.string(),
2165
- subtaskId: z3.string()
2209
+ var DeleteSubtaskRequestSchema = z32.object({
2210
+ sessionId: z32.string(),
2211
+ subtaskId: z32.string()
2166
2212
  });
2167
- var SetSubtaskParentRequestSchema = z3.object({
2168
- sessionId: z3.string(),
2169
- taskId: z3.string().min(1),
2170
- detach: z3.boolean().optional(),
2171
- ordinal: z3.number().int().nonnegative().optional(),
2172
- followParentStatus: z3.boolean().optional()
2213
+ var SetSubtaskParentRequestSchema = z32.object({
2214
+ sessionId: z32.string(),
2215
+ taskId: z32.string().min(1),
2216
+ detach: z32.boolean().optional(),
2217
+ ordinal: z32.number().int().nonnegative().optional(),
2218
+ followParentStatus: z32.boolean().optional()
2173
2219
  });
2174
- var GetTaskPropertiesRequestSchema = z3.object({
2175
- sessionId: z3.string()
2220
+ var GetTaskPropertiesRequestSchema = z32.object({
2221
+ sessionId: z32.string()
2176
2222
  });
2177
- var UpdateTaskFieldsRequestSchema = z3.object({
2178
- sessionId: z3.string(),
2179
- plan: z3.string().optional(),
2223
+ var UpdateTaskFieldsRequestSchema = z32.object({
2224
+ sessionId: z32.string(),
2225
+ plan: z32.string().optional(),
2180
2226
  description: cardDescription
2181
2227
  });
2182
- var UpdateTaskPropertiesRequestSchema = z3.object({
2183
- sessionId: z3.string(),
2184
- title: z3.string().optional(),
2185
- storyPointValue: z3.number().int().positive().optional(),
2186
- tagIds: z3.array(z3.string()).optional(),
2187
- tagNames: z3.array(z3.string()).optional(),
2188
- githubPRUrl: z3.string().url().optional(),
2189
- githubBranch: z3.string().optional(),
2228
+ var UpdateTaskPropertiesRequestSchema = z32.object({
2229
+ sessionId: z32.string(),
2230
+ title: z32.string().optional(),
2231
+ storyPointValue: z32.number().int().positive().optional(),
2232
+ tagIds: z32.array(z32.string()).optional(),
2233
+ tagNames: z32.array(z32.string()).optional(),
2234
+ githubPRUrl: z32.string().url().optional(),
2235
+ githubBranch: z32.string().optional(),
2190
2236
  // Canonical risk level, or null to clear — same semantics as the headless
2191
2237
  // update_task boundary (resolved to the project's Risk row in the handler).
2192
2238
  risk: riskLevelSchema.nullable().optional()
2193
2239
  });
2194
- var ListIconsRequestSchema = z3.object({
2195
- sessionId: z3.string()
2240
+ var ListIconsRequestSchema = z32.object({
2241
+ sessionId: z32.string()
2196
2242
  });
2197
- var GenerateTaskIconRequestSchema = z3.object({
2198
- sessionId: z3.string(),
2199
- prompt: z3.string().min(1),
2200
- aspectRatio: z3.string().optional()
2243
+ var GenerateTaskIconRequestSchema = z32.object({
2244
+ sessionId: z32.string(),
2245
+ prompt: z32.string().min(1),
2246
+ aspectRatio: z32.string().optional()
2201
2247
  });
2202
- var SearchFaIconsRequestSchema = z3.object({
2203
- sessionId: z3.string(),
2204
- query: z3.string().min(1),
2205
- first: z3.number().int().positive().optional()
2248
+ var SearchFaIconsRequestSchema = z32.object({
2249
+ sessionId: z32.string(),
2250
+ query: z32.string().min(1),
2251
+ first: z32.number().int().positive().optional()
2206
2252
  });
2207
- var PickFaIconRequestSchema = z3.object({
2208
- sessionId: z3.string(),
2209
- fontAwesomeId: z3.string().min(1),
2210
- fontAwesomeStyle: z3.string().optional()
2253
+ var PickFaIconRequestSchema = z32.object({
2254
+ sessionId: z32.string(),
2255
+ fontAwesomeId: z32.string().min(1),
2256
+ fontAwesomeStyle: z32.string().optional()
2211
2257
  });
2212
- var CreateFollowUpTaskRequestSchema = z3.object({
2213
- sessionId: z3.string(),
2214
- title: z3.string().min(1),
2258
+ var CreateFollowUpTaskRequestSchema = z32.object({
2259
+ sessionId: z32.string(),
2260
+ title: z32.string().min(1),
2215
2261
  description: cardDescription,
2216
- plan: z3.string().optional(),
2217
- storyPointValue: z3.number().int().positive().optional()
2262
+ plan: z32.string().optional(),
2263
+ storyPointValue: z32.number().int().positive().optional()
2218
2264
  });
2219
- var AddDependencyRequestSchema = z3.object({
2220
- sessionId: z3.string(),
2221
- dependsOnSlugOrId: z3.string()
2265
+ var AddDependencyRequestSchema = z32.object({
2266
+ sessionId: z32.string(),
2267
+ dependsOnSlugOrId: z32.string()
2222
2268
  });
2223
- var RemoveDependencyRequestSchema = z3.object({
2224
- sessionId: z3.string(),
2225
- dependsOnSlugOrId: z3.string()
2269
+ var RemoveDependencyRequestSchema = z32.object({
2270
+ sessionId: z32.string(),
2271
+ dependsOnSlugOrId: z32.string()
2226
2272
  });
2227
- var CreateSuggestionRequestSchema = z3.object({
2228
- sessionId: z3.string(),
2229
- title: z3.string().min(1),
2273
+ var CreateSuggestionRequestSchema = z32.object({
2274
+ sessionId: z32.string(),
2275
+ title: z32.string().min(1),
2230
2276
  description: cardDescription,
2231
- tagNames: z3.array(z3.string()).optional()
2277
+ tagNames: z32.array(z32.string()).optional()
2232
2278
  });
2233
- var VoteSuggestionRequestSchema = z3.object({
2234
- sessionId: z3.string(),
2235
- suggestionId: z3.string(),
2236
- value: z3.union([z3.literal(1), z3.literal(-1)])
2279
+ var VoteSuggestionRequestSchema = z32.object({
2280
+ sessionId: z32.string(),
2281
+ suggestionId: z32.string(),
2282
+ value: z32.union([z32.literal(1), z32.literal(-1)])
2237
2283
  });
2238
- var TriggerIdentificationRequestSchema = z3.object({
2239
- sessionId: z3.string()
2284
+ var TriggerIdentificationRequestSchema = z32.object({
2285
+ sessionId: z32.string()
2240
2286
  });
2241
- var HandoffToImplementerRequestSchema = z3.object({
2242
- sessionId: z3.string(),
2287
+ var HandoffToImplementerRequestSchema = z32.object({
2288
+ sessionId: z32.string(),
2243
2289
  // Optional difficulty sizing — sets the task's story points before resolving
2244
2290
  // the matched implementer agent. Omit to hand off using the task's current
2245
2291
  // story points (or the project's default task agent when unsized).
2246
- storyPoints: z3.number().int().positive().optional(),
2292
+ storyPoints: z32.number().int().positive().optional(),
2247
2293
  // Optional kickoff note posted to the task chat alongside the handoff notice.
2248
- message: z3.string().optional()
2294
+ message: z32.string().optional()
2249
2295
  });
2250
- var SubmitCodeReviewResultRequestSchema = z3.object({
2251
- sessionId: z3.string(),
2252
- approved: z3.boolean(),
2253
- content: z3.string(),
2296
+ var SubmitCodeReviewResultRequestSchema = z32.object({
2297
+ sessionId: z32.string(),
2298
+ approved: z32.boolean(),
2299
+ content: z32.string(),
2254
2300
  // Canonical risk level the reviewer assigned to this change. Required on every
2255
2301
  // verdict — the reviewer must judge it. Applied authoritatively server-side
2256
2302
  // (may raise OR lower an already-set value; the reviewer has that authority).
@@ -2258,165 +2304,165 @@ var SubmitCodeReviewResultRequestSchema = z3.object({
2258
2304
  // The commit SHA the reviewer actually reviewed. When present, the verdict is
2259
2305
  // rejected unless the task is still at this SHA (guards against a late
2260
2306
  // old-SHA verdict overwriting a newer review cycle).
2261
- reviewedSha: z3.string().optional()
2262
- });
2263
- var CycleCodingAgentKeyRequestSchema = z3.object({
2264
- sessionId: z3.string(),
2265
- rateLimitType: z3.string(),
2266
- resetsAt: z3.string().optional()
2267
- });
2268
- var PostChildChatMessageRequestSchema = z3.object({
2269
- sessionId: z3.string(),
2270
- childTaskId: z3.string(),
2271
- message: z3.string().min(1)
2272
- });
2273
- var UpdateChildStatusRequestSchema = z3.object({
2274
- sessionId: z3.string(),
2275
- childTaskId: z3.string(),
2276
- status: z3.string()
2277
- });
2278
- var GetAgentStatusRequestSchema = z3.object({
2279
- taskId: z3.string()
2280
- });
2281
- var GetUiCliHistoryRequestSchema = z3.object({
2282
- taskId: z3.string()
2283
- });
2284
- var GetActivePtySessionRequestSchema = z3.object({
2285
- taskId: z3.string()
2286
- });
2287
- var ListActivePtySessionsRequestSchema = z3.object({
2288
- taskId: z3.string()
2289
- });
2290
- var SendSoftStopRequestSchema = z3.object({
2291
- taskId: z3.string()
2292
- });
2293
- var StopTaskSessionRequestSchema = z3.object({
2294
- taskId: z3.string(),
2295
- sessionId: z3.string()
2296
- });
2297
- var FlushTaskQueueRequestSchema = z3.object({
2298
- taskId: z3.string(),
2299
- softStop: z3.boolean().optional()
2300
- });
2301
- var CancelTaskQueuedMessageRequestSchema = z3.object({
2302
- taskId: z3.string(),
2303
- messageId: z3.string()
2304
- });
2305
- var FlushSingleQueuedMessageRequestSchema = z3.object({
2306
- taskId: z3.string(),
2307
- messageId: z3.string(),
2308
- softStop: z3.boolean().optional()
2309
- });
2310
- var AnswerAgentQuestionRequestSchema = z3.object({
2311
- taskId: z3.string(),
2312
- requestId: z3.string(),
2313
- answers: z3.record(z3.string(), z3.string())
2314
- });
2315
- var ClearAgentTodosRequestSchema = z3.object({
2316
- taskId: z3.string()
2317
- });
2318
- var AgentQuestionOptionSchema = z3.object({
2319
- label: z3.string(),
2320
- description: z3.string(),
2321
- preview: z3.string().optional()
2322
- });
2323
- var AgentQuestionSchema = z3.object({
2324
- question: z3.string(),
2325
- header: z3.string(),
2326
- options: z3.array(AgentQuestionOptionSchema),
2327
- multiSelect: z3.boolean().optional()
2328
- });
2329
- var AskUserQuestionRequestSchema = z3.object({
2330
- sessionId: z3.string(),
2331
- question: z3.string().min(1),
2332
- requestId: z3.string().min(1),
2333
- questions: z3.array(AgentQuestionSchema).min(1)
2334
- });
2335
- var PostAgentMessageRequestSchema = z3.object({
2336
- sessionId: z3.string().min(1),
2337
- content: z3.string(),
2338
- milestone: z3.enum(["plan_ready", "implementation_complete", "blocked"]).optional()
2339
- });
2340
- var EmitAgentEventRequestSchema = z3.object({
2341
- sessionId: z3.string(),
2342
- events: z3.array(AgentEventSchema).max(500)
2343
- });
2344
- var RefreshGithubTokenRequestSchema = z3.object({
2345
- sessionId: z3.string(),
2346
- forceFresh: z3.boolean().optional()
2347
- });
2348
- var ReportCredentialFailureRequestSchema = z3.object({
2349
- sessionId: z3.string(),
2350
- error: z3.string().max(2e3).optional(),
2351
- tokenShape: z3.string().max(500).optional(),
2352
- healed: z3.boolean().optional()
2353
- });
2354
- var ReportReviewSpawnFailureRequestSchema = z3.object({
2355
- sessionId: z3.string(),
2356
- reviewSessionId: z3.string(),
2357
- error: z3.string().max(2e3).optional()
2307
+ reviewedSha: z32.string().optional()
2308
+ });
2309
+ var CycleCodingAgentKeyRequestSchema = z32.object({
2310
+ sessionId: z32.string(),
2311
+ rateLimitType: z32.string(),
2312
+ resetsAt: z32.string().optional()
2313
+ });
2314
+ var PostChildChatMessageRequestSchema = z32.object({
2315
+ sessionId: z32.string(),
2316
+ childTaskId: z32.string(),
2317
+ message: z32.string().min(1)
2318
+ });
2319
+ var UpdateChildStatusRequestSchema = z32.object({
2320
+ sessionId: z32.string(),
2321
+ childTaskId: z32.string(),
2322
+ status: z32.string()
2323
+ });
2324
+ var GetAgentStatusRequestSchema = z32.object({
2325
+ taskId: z32.string()
2326
+ });
2327
+ var GetUiCliHistoryRequestSchema = z32.object({
2328
+ taskId: z32.string()
2329
+ });
2330
+ var GetActivePtySessionRequestSchema = z32.object({
2331
+ taskId: z32.string()
2332
+ });
2333
+ var ListActivePtySessionsRequestSchema = z32.object({
2334
+ taskId: z32.string()
2335
+ });
2336
+ var SendSoftStopRequestSchema = z32.object({
2337
+ taskId: z32.string()
2338
+ });
2339
+ var StopTaskSessionRequestSchema = z32.object({
2340
+ taskId: z32.string(),
2341
+ sessionId: z32.string()
2342
+ });
2343
+ var FlushTaskQueueRequestSchema = z32.object({
2344
+ taskId: z32.string(),
2345
+ softStop: z32.boolean().optional()
2346
+ });
2347
+ var CancelTaskQueuedMessageRequestSchema = z32.object({
2348
+ taskId: z32.string(),
2349
+ messageId: z32.string()
2350
+ });
2351
+ var FlushSingleQueuedMessageRequestSchema = z32.object({
2352
+ taskId: z32.string(),
2353
+ messageId: z32.string(),
2354
+ softStop: z32.boolean().optional()
2355
+ });
2356
+ var AnswerAgentQuestionRequestSchema = z32.object({
2357
+ taskId: z32.string(),
2358
+ requestId: z32.string(),
2359
+ answers: z32.record(z32.string(), z32.string())
2360
+ });
2361
+ var ClearAgentTodosRequestSchema = z32.object({
2362
+ taskId: z32.string()
2363
+ });
2364
+ var AgentQuestionOptionSchema = z32.object({
2365
+ label: z32.string(),
2366
+ description: z32.string(),
2367
+ preview: z32.string().optional()
2368
+ });
2369
+ var AgentQuestionSchema = z32.object({
2370
+ question: z32.string(),
2371
+ header: z32.string(),
2372
+ options: z32.array(AgentQuestionOptionSchema),
2373
+ multiSelect: z32.boolean().optional()
2374
+ });
2375
+ var AskUserQuestionRequestSchema = z32.object({
2376
+ sessionId: z32.string(),
2377
+ question: z32.string().min(1),
2378
+ requestId: z32.string().min(1),
2379
+ questions: z32.array(AgentQuestionSchema).min(1)
2380
+ });
2381
+ var PostAgentMessageRequestSchema = z32.object({
2382
+ sessionId: z32.string().min(1),
2383
+ content: z32.string(),
2384
+ milestone: z32.enum(["plan_ready", "implementation_complete", "blocked"]).optional()
2385
+ });
2386
+ var EmitAgentEventRequestSchema = z32.object({
2387
+ sessionId: z32.string(),
2388
+ events: z32.array(AgentEventSchema).max(500)
2389
+ });
2390
+ var RefreshGithubTokenRequestSchema = z32.object({
2391
+ sessionId: z32.string(),
2392
+ forceFresh: z32.boolean().optional()
2393
+ });
2394
+ var ReportCredentialFailureRequestSchema = z32.object({
2395
+ sessionId: z32.string(),
2396
+ error: z32.string().max(2e3).optional(),
2397
+ tokenShape: z32.string().max(500).optional(),
2398
+ healed: z32.boolean().optional()
2399
+ });
2400
+ var ReportReviewSpawnFailureRequestSchema = z32.object({
2401
+ sessionId: z32.string(),
2402
+ reviewSessionId: z32.string(),
2403
+ error: z32.string().max(2e3).optional()
2358
2404
  });
2359
2405
  var ReportBuilderSpawnFailureRequestSchema = ReportReviewSpawnFailureRequestSchema.omit({
2360
2406
  reviewSessionId: true
2361
- }).extend({ buildSessionId: z3.string() });
2362
- var SpawnTaskSessionRequestSchema = z3.object({
2363
- taskId: z3.string(),
2364
- kind: z3.enum(["tui", "shell"])
2407
+ }).extend({ buildSessionId: z32.string() });
2408
+ var SpawnTaskSessionRequestSchema = z32.object({
2409
+ taskId: z32.string(),
2410
+ kind: z32.enum(["tui", "shell"])
2365
2411
  });
2366
- var StartCodeReviewRequestSchema = z3.object({
2367
- taskId: z3.string(),
2368
- force: z3.boolean().optional()
2412
+ var StartCodeReviewRequestSchema = z32.object({
2413
+ taskId: z32.string(),
2414
+ force: z32.boolean().optional()
2369
2415
  });
2370
- var StopCodeReviewRequestSchema = z3.object({
2371
- taskId: z3.string()
2416
+ var StopCodeReviewRequestSchema = z32.object({
2417
+ taskId: z32.string()
2372
2418
  });
2373
- var ReportSessionSpawnFailureRequestSchema = z3.object({
2374
- sessionId: z3.string(),
2375
- spawnedSessionId: z3.string(),
2376
- error: z3.string().max(2e3).optional()
2419
+ var ReportSessionSpawnFailureRequestSchema = z32.object({
2420
+ sessionId: z32.string(),
2421
+ spawnedSessionId: z32.string(),
2422
+ error: z32.string().max(2e3).optional()
2377
2423
  });
2378
- var RefreshGithubTokenResponseSchema = z3.object({
2379
- token: z3.string()
2424
+ var RefreshGithubTokenResponseSchema = z32.object({
2425
+ token: z32.string()
2380
2426
  });
2381
2427
  var PTY_FRAME_MAX_CHARS = 256 * 1024;
2382
2428
  var PTY_MAX_DIMENSION = 1e3;
2383
- var PtyOutputRequestSchema = z3.object({
2384
- sessionId: z3.string(),
2385
- data: z3.string().max(PTY_FRAME_MAX_CHARS),
2386
- cols: z3.number().int().positive().max(PTY_MAX_DIMENSION).optional(),
2387
- rows: z3.number().int().positive().max(PTY_MAX_DIMENSION).optional()
2388
- });
2389
- var PtyEndedRequestSchema = z3.object({
2390
- sessionId: z3.string()
2391
- });
2392
- var PtyInputRequestSchema = z3.object({
2393
- sessionId: z3.string(),
2394
- data: z3.string().max(PTY_FRAME_MAX_CHARS)
2395
- });
2396
- var PtyResizeRequestSchema = z3.object({
2397
- sessionId: z3.string(),
2398
- cols: z3.number().int().positive().max(PTY_MAX_DIMENSION),
2399
- rows: z3.number().int().positive().max(PTY_MAX_DIMENSION)
2400
- });
2401
- var PtyAttachRequestSchema = z3.object({
2402
- sessionId: z3.string()
2403
- });
2404
- var ReportPtyStreamRequestSchema = z3.object({
2405
- sessionId: z3.string(),
2406
- port: z3.number().int().positive().max(65535).nullable()
2407
- });
2408
- var GetPtyStreamEndpointRequestSchema = z3.object({
2409
- sessionId: z3.string()
2410
- });
2411
- var PtyChatEventPayloadSchema = z3.discriminatedUnion("kind", [
2412
- z3.object({
2413
- kind: z3.literal("init"),
2414
- model: z3.string().max(200),
2415
- claudeSessionId: z3.string().max(100).optional()
2429
+ var PtyOutputRequestSchema = z32.object({
2430
+ sessionId: z32.string(),
2431
+ data: z32.string().max(PTY_FRAME_MAX_CHARS),
2432
+ cols: z32.number().int().positive().max(PTY_MAX_DIMENSION).optional(),
2433
+ rows: z32.number().int().positive().max(PTY_MAX_DIMENSION).optional()
2434
+ });
2435
+ var PtyEndedRequestSchema = z32.object({
2436
+ sessionId: z32.string()
2437
+ });
2438
+ var PtyInputRequestSchema = z32.object({
2439
+ sessionId: z32.string(),
2440
+ data: z32.string().max(PTY_FRAME_MAX_CHARS)
2441
+ });
2442
+ var PtyResizeRequestSchema = z32.object({
2443
+ sessionId: z32.string(),
2444
+ cols: z32.number().int().positive().max(PTY_MAX_DIMENSION),
2445
+ rows: z32.number().int().positive().max(PTY_MAX_DIMENSION)
2446
+ });
2447
+ var PtyAttachRequestSchema = z32.object({
2448
+ sessionId: z32.string()
2449
+ });
2450
+ var ReportPtyStreamRequestSchema = z32.object({
2451
+ sessionId: z32.string(),
2452
+ port: z32.number().int().positive().max(65535).nullable()
2453
+ });
2454
+ var GetPtyStreamEndpointRequestSchema = z32.object({
2455
+ sessionId: z32.string()
2456
+ });
2457
+ var PtyChatEventPayloadSchema = z32.discriminatedUnion("kind", [
2458
+ z32.object({
2459
+ kind: z32.literal("init"),
2460
+ model: z32.string().max(200),
2461
+ claudeSessionId: z32.string().max(100).optional()
2416
2462
  }),
2417
- z3.object({
2418
- kind: z3.literal("user_text"),
2419
- text: z3.string().max(16384),
2463
+ z32.object({
2464
+ kind: z32.literal("user_text"),
2465
+ text: z32.string().max(16384),
2420
2466
  // Set by the SERVER (never the agent) when this prompt was injected by
2421
2467
  // Conveyor rather than typed by a human — the routed message's `source`
2422
2468
  // (`ci_success`, `review_trigger`, `automated_feedback`, …). The agent
@@ -2424,69 +2470,69 @@ var PtyChatEventPayloadSchema = z3.discriminatedUnion("kind", [
2424
2470
  // CLI records both as plain transcript `user` records; without this the
2425
2471
  // builder chat renders "All CI checks passed on your PR." as the human's
2426
2472
  // own bubble. Absent ⇒ a genuine human prompt.
2427
- source: z3.string().max(60).optional()
2473
+ source: z32.string().max(60).optional()
2428
2474
  }),
2429
- z3.object({ kind: z3.literal("assistant_text"), text: z3.string().max(16384) }),
2430
- z3.object({
2431
- kind: z3.literal("tool_use"),
2432
- name: z3.string().max(200),
2475
+ z32.object({ kind: z32.literal("assistant_text"), text: z32.string().max(16384) }),
2476
+ z32.object({
2477
+ kind: z32.literal("tool_use"),
2478
+ name: z32.string().max(200),
2433
2479
  // Compact preview: JSON.stringify(input) truncated agent-side. The cap
2434
2480
  // matches the text events because AskUserQuestion payloads ride this field
2435
2481
  // and the web lifts them into an interactive card — a tight cap forced
2436
2482
  // option descriptions down to 80 chars, making them unreadable. Every
2437
2483
  // other tool keeps a far smaller agent-side budget (`TOOL_INPUT_MAX` in
2438
2484
  // `chat-record-mapper.ts`), so the ring does not grow for normal calls.
2439
- input: z3.string().max(16384),
2485
+ input: z32.string().max(16384),
2440
2486
  // Transcript tool_use block id — lets the client pair the tool_result.
2441
- id: z3.string().max(100).optional()
2487
+ id: z32.string().max(100).optional()
2442
2488
  }),
2443
- z3.object({
2444
- kind: z3.literal("tool_result"),
2489
+ z32.object({
2490
+ kind: z32.literal("tool_result"),
2445
2491
  // tool_use block id this result answers (absent on malformed records).
2446
- toolUseId: z3.string().max(100).optional(),
2492
+ toolUseId: z32.string().max(100).optional(),
2447
2493
  // Compact output preview, truncated agent-side.
2448
- output: z3.string().max(2e3),
2449
- isError: z3.boolean().optional()
2494
+ output: z32.string().max(2e3),
2495
+ isError: z32.boolean().optional()
2450
2496
  }),
2451
- z3.object({ kind: z3.literal("turn_end") })
2497
+ z32.object({ kind: z32.literal("turn_end") })
2452
2498
  ]);
2453
- var PtyChatEventRequestSchema = z3.object({
2454
- sessionId: z3.string(),
2499
+ var PtyChatEventRequestSchema = z32.object({
2500
+ sessionId: z32.string(),
2455
2501
  event: PtyChatEventPayloadSchema
2456
2502
  });
2457
- var PtyChatAttachRequestSchema = z3.object({
2458
- sessionId: z3.string()
2503
+ var PtyChatAttachRequestSchema = z32.object({
2504
+ sessionId: z32.string()
2459
2505
  });
2460
- var CreatePRResponseSchema = z3.object({
2461
- prNumber: z3.number().int().positive(),
2462
- prUrl: z3.string().url(),
2506
+ var CreatePRResponseSchema = z32.object({
2507
+ prNumber: z32.number().int().positive(),
2508
+ prUrl: z32.string().url(),
2463
2509
  /** Advisory glossary-upkeep note derived from the PR's changed files matched
2464
2510
  * against tag contextPaths — rendered into the tool result, never stored. */
2465
- glossaryNote: z3.string().optional()
2511
+ glossaryNote: z32.string().optional()
2466
2512
  });
2467
- var PostToChatResponseSchema = z3.object({
2468
- messageId: z3.string()
2513
+ var PostToChatResponseSchema = z32.object({
2514
+ messageId: z32.string()
2469
2515
  });
2470
- var UpdateTaskStatusResponseSchema = z3.object({
2471
- taskId: z3.string(),
2472
- status: z3.string()
2516
+ var UpdateTaskStatusResponseSchema = z32.object({
2517
+ taskId: z32.string(),
2518
+ status: z32.string()
2473
2519
  });
2474
- var StoreSessionIdResponseSchema = z3.object({
2475
- success: z3.boolean()
2520
+ var StoreSessionIdResponseSchema = z32.object({
2521
+ success: z32.boolean()
2476
2522
  });
2477
- var HeartbeatResponseSchema = z3.object({
2478
- acknowledged: z3.boolean()
2523
+ var HeartbeatResponseSchema = z32.object({
2524
+ acknowledged: z32.boolean()
2479
2525
  });
2480
- var SessionStartResponseSchema = z3.object({
2481
- sessionId: z3.string(),
2482
- startedAt: z3.string()
2526
+ var SessionStartResponseSchema = z32.object({
2527
+ sessionId: z32.string(),
2528
+ startedAt: z32.string()
2483
2529
  });
2484
- var SessionStopResponseSchema = z3.object({
2485
- sessionId: z3.string(),
2486
- stoppedAt: z3.string()
2530
+ var SessionStopResponseSchema = z32.object({
2531
+ sessionId: z32.string(),
2532
+ stoppedAt: z32.string()
2487
2533
  });
2488
- var DeleteSubtaskResponseSchema = z3.object({
2489
- deleted: z3.boolean()
2534
+ var DeleteSubtaskResponseSchema = z32.object({
2535
+ deleted: z32.boolean()
2490
2536
  });
2491
2537
  var ParkOnCheckResultRequestSchema = z4.object({
2492
2538
  sessionId: z4.string(),
@@ -2522,6 +2568,11 @@ var ListProjectTasksRequestSchema = z5.object({
2522
2568
  // Scope to a sub-project board when provided. Unlike the board layer's `?? null`
2523
2569
  // semantics, agents default to seeing the whole project when omitted.
2524
2570
  subProjectId: z5.string().nullable().optional(),
2571
+ // Plain equality on the on-hold flag: true = only parked cards, false =
2572
+ // exclude them, omitted = both. Deliberately NOT the board's
2573
+ // includeOnHold/surfaceActiveWork bucketing — an agent sweeping a backlog
2574
+ // needs the raw column, not a column projection.
2575
+ onHold: z5.boolean().optional(),
2525
2576
  limit: z5.number().int().positive().optional().default(50)
2526
2577
  }).refine((p) => !(p.unassigned && p.assigneeId), {
2527
2578
  message: "Pass either assigneeId or unassigned, not both"
@@ -2556,7 +2607,9 @@ var SearchProjectTasksRequestSchema = z5.object({
2556
2607
  message: "Pass either assigneeId or unassigned, not both"
2557
2608
  });
2558
2609
  var ListProjectTagsRequestSchema = z5.object({
2559
- projectId: z5.string()
2610
+ projectId: z5.string(),
2611
+ /** "summary" (default) omits inline context links; "full" includes them. */
2612
+ detail: z5.enum(["summary", "full"]).optional()
2560
2613
  });
2561
2614
  var GetProjectTagRequestSchema = z5.object({
2562
2615
  projectId: z5.string(),
@@ -2659,11 +2712,15 @@ var UpdateProjectTaskRequestSchema = z5.object({
2659
2712
  // handler: the ref must exist on origin and no live workspace may be bound
2660
2713
  // to a different branch.
2661
2714
  githubBranch: z5.string().min(1).max(GIT_BRANCH_NAME_MAX).refine(isValidGitBranchName, { message: GIT_BRANCH_NAME_MESSAGE }).nullable().optional(),
2715
+ // Park the card on hold (true) or return it to the active board (false).
2716
+ // The handler mirrors the web path's two side effects: a board re-bucket
2717
+ // event, and demotion to Open when an active-work card is parked.
2718
+ onHold: z5.boolean().optional(),
2662
2719
  requestingUserId: z5.string().optional()
2663
2720
  }).strict().refine(
2664
- (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,
2721
+ (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,
2665
2722
  {
2666
- message: "update_task requires at least one field to change (title, description, plan, status, risk, storyPointValue, assignedUserId, subProjectId, or githubBranch)"
2723
+ message: "update_task requires at least one field to change (title, description, plan, status, risk, storyPointValue, assignedUserId, subProjectId, githubBranch, or onHold)"
2667
2724
  }
2668
2725
  );
2669
2726
  var TransitionProjectTaskStatusRequestSchema = z5.object({
@@ -2924,6 +2981,12 @@ var GetProjectAttachmentRequestSchema = z5.object({
2924
2981
  /** Max bytes of text content to return from `offset`. Server default applies. */
2925
2982
  maxBytes: z5.number().int().positive().optional()
2926
2983
  });
2984
+ var DeleteProjectTaskFileRequestSchema = z5.object({
2985
+ projectId: z5.string(),
2986
+ taskId: z5.string(),
2987
+ fileId: z5.string(),
2988
+ requestingUserId: z5.string().optional()
2989
+ });
2927
2990
  var RequestProjectFileUploadRequestSchema = z5.object({
2928
2991
  projectId: z5.string(),
2929
2992
  taskId: z5.string(),
@@ -2978,7 +3041,7 @@ var QueryProjectManualTestsRequestSchema = z5.object({
2978
3041
  var SetProjectManualTestsRequestSchema = z5.object({
2979
3042
  projectId: z5.string(),
2980
3043
  taskId: z5.string(),
2981
- items: z5.array(z5.object({ title: z5.string().min(1) })).min(1),
3044
+ items: ManualTestItemsSchema,
2982
3045
  requestingUserId: z5.string().optional()
2983
3046
  });
2984
3047
  var EditProjectManualTestRequestSchema = z5.object({
@@ -3057,42 +3120,6 @@ var ReportApiOutageRequestSchema = z7.object({
3057
3120
  detail: z7.string().max(2e3),
3058
3121
  attempts: z7.number().int().min(0).max(100)
3059
3122
  });
3060
- var SHA_PATTERN = /^[0-9a-f]{40}$/i;
3061
- var ReviewGuideFileReferenceSchema = z8.object({
3062
- path: z8.string().min(1).max(500),
3063
- startLine: z8.number().int().positive().max(1e6).optional(),
3064
- endLine: z8.number().int().positive().max(1e6).optional(),
3065
- hunkHeader: z8.string().min(1).max(300).optional()
3066
- }).strict().superRefine((value, ctx) => {
3067
- if (value.endLine !== void 0 && value.startLine === void 0) {
3068
- ctx.addIssue({
3069
- code: "custom",
3070
- path: ["startLine"],
3071
- message: "startLine is required when endLine is set"
3072
- });
3073
- }
3074
- if (value.startLine !== void 0 && value.endLine !== void 0 && value.endLine < value.startLine) {
3075
- ctx.addIssue({
3076
- code: "custom",
3077
- path: ["endLine"],
3078
- message: "endLine must be greater than or equal to startLine"
3079
- });
3080
- }
3081
- });
3082
- var ReviewGuideSectionSchema = z8.object({
3083
- title: z8.string().min(1).max(160),
3084
- explanation: z8.string().min(1).max(2e3),
3085
- classification: z8.enum(["core", "supporting"]).optional(),
3086
- files: z8.array(ReviewGuideFileReferenceSchema).min(1).max(20)
3087
- }).strict();
3088
- var ReviewGuideContentSchema = z8.object({
3089
- overview: z8.string().min(1).max(3e3),
3090
- sections: z8.array(ReviewGuideSectionSchema).min(1).max(12)
3091
- }).strict();
3092
- var PublishReviewGuideRequestSchema = ReviewGuideContentSchema.extend({
3093
- sessionId: z8.string().min(1),
3094
- reviewedSha: z8.string().regex(SHA_PATTERN, "reviewedSha must be a 40-character commit SHA")
3095
- }).strict();
3096
3123
  var CONTEXT_LINK_LOCATOR_MAX = 300;
3097
3124
  var TEST_TITLE = /\b(?:it|test|describe)(?:\.\w+)?\s*\(\s*(['"`])((?:(?!\1)[\s\S])*)\1/g;
3098
3125
  function extractTestTitles(content) {
@@ -3108,130 +3135,130 @@ function locatorMatchesContent(content, locatorType, locator) {
3108
3135
  var TAG_DESCRIPTION_MAX = CARD_DESCRIPTION_MAX;
3109
3136
  var TAG_OVERVIEW_MAX = 32e3;
3110
3137
  var TAG_REASON_MAX = 500;
3111
- var ProjectTagContextPathSchema = z9.object({
3112
- type: z9.enum(["rule", "doc", "file", "folder"]),
3113
- path: z9.string().min(1).max(500),
3114
- label: z9.string().max(100).optional(),
3138
+ var ProjectTagContextPathSchema = z8.object({
3139
+ type: z8.enum(["rule", "doc", "file", "folder"]),
3140
+ path: z8.string().min(1).max(500),
3141
+ label: z8.string().max(100).optional(),
3115
3142
  /** Verified-link tether — text that must keep existing in the file. */
3116
- locator: z9.string().min(1).max(CONTEXT_LINK_LOCATOR_MAX).regex(/^[^\r\n]*$/, "Locator cannot contain line breaks").optional(),
3143
+ locator: z8.string().min(1).max(CONTEXT_LINK_LOCATOR_MAX).regex(/^[^\r\n]*$/, "Locator cannot contain line breaks").optional(),
3117
3144
  /** test = must appear in a real test/describe title; code = any substring. */
3118
- locatorType: z9.enum(["test", "code"]).optional()
3145
+ locatorType: z8.enum(["test", "code"]).optional()
3119
3146
  }).refine((link) => link.locator === void 0 === (link.locatorType === void 0), {
3120
3147
  message: "locator and locatorType must be provided together"
3121
3148
  }).refine((link) => link.locator === void 0 || link.type !== "folder", {
3122
3149
  message: "folder links cannot carry a locator"
3123
3150
  });
3124
- var hexColor = z9.string().regex(/^#[0-9a-fA-F]{6}$/, "Expected #RRGGBB hex color");
3125
- var overviewPathSchema = z9.string().min(1).max(500).regex(/^[^\r\n]*$/, "Overview path cannot contain line breaks");
3126
- var CreateProjectTagRequestSchema = z9.object({
3127
- projectId: z9.string(),
3128
- name: z9.string().min(1).max(50),
3151
+ var hexColor = z8.string().regex(/^#[0-9a-fA-F]{6}$/, "Expected #RRGGBB hex color");
3152
+ var overviewPathSchema = z8.string().min(1).max(500).regex(/^[^\r\n]*$/, "Overview path cannot contain line breaks");
3153
+ var CreateProjectTagRequestSchema = z8.object({
3154
+ projectId: z8.string(),
3155
+ name: z8.string().min(1).max(50),
3129
3156
  color: hexColor.optional(),
3130
- description: z9.string().max(TAG_DESCRIPTION_MAX).optional(),
3131
- overview: z9.string().max(TAG_OVERVIEW_MAX).optional(),
3157
+ description: z8.string().max(TAG_DESCRIPTION_MAX).optional(),
3158
+ overview: z8.string().max(TAG_OVERVIEW_MAX).optional(),
3132
3159
  /** Source the overview from this repo file (stored overview stays as the pending fallback). */
3133
3160
  overviewPath: overviewPathSchema.optional(),
3134
- contextPaths: z9.array(ProjectTagContextPathSchema).max(20).optional(),
3161
+ contextPaths: z8.array(ProjectTagContextPathSchema).max(20).optional(),
3135
3162
  /** Parents to link at create time (multi-parent DAG). */
3136
- parentTagIds: z9.array(z9.string()).max(25).optional(),
3137
- requestingUserId: z9.string().optional()
3163
+ parentTagIds: z8.array(z8.string()).max(25).optional(),
3164
+ requestingUserId: z8.string().optional()
3138
3165
  });
3139
- var UpdateProjectTagRequestSchema = z9.object({
3140
- projectId: z9.string(),
3141
- tagId: z9.string(),
3142
- name: z9.string().min(1).max(50).optional(),
3166
+ var UpdateProjectTagRequestSchema = z8.object({
3167
+ projectId: z8.string(),
3168
+ tagId: z8.string(),
3169
+ name: z8.string().min(1).max(50).optional(),
3143
3170
  color: hexColor.optional(),
3144
- description: z9.string().max(TAG_DESCRIPTION_MAX).optional(),
3171
+ description: z8.string().max(TAG_DESCRIPTION_MAX).optional(),
3145
3172
  /** Full markdown glossary body; null clears it. Rejected while overviewPath is set. */
3146
- overview: z9.string().max(TAG_OVERVIEW_MAX).nullable().optional(),
3173
+ overview: z8.string().max(TAG_OVERVIEW_MAX).nullable().optional(),
3147
3174
  /** Repo file to source the overview from; null clears back to the stored overview. */
3148
3175
  overviewPath: overviewPathSchema.nullable().optional(),
3149
3176
  /** Full replacement of the tag's context links when provided. */
3150
- contextPaths: z9.array(ProjectTagContextPathSchema).max(20).optional(),
3177
+ contextPaths: z8.array(ProjectTagContextPathSchema).max(20).optional(),
3151
3178
  /** Full-set replacement of the tag's parent tags (multi-parent DAG). */
3152
- parentTagIds: z9.array(z9.string()).max(25).optional(),
3179
+ parentTagIds: z8.array(z8.string()).max(25).optional(),
3153
3180
  /** One-line revision provenance, recorded in the tag's history. */
3154
- reason: z9.string().max(TAG_REASON_MAX).optional(),
3181
+ reason: z8.string().max(TAG_REASON_MAX).optional(),
3155
3182
  /** Card the caller was working in — stamped into the revision history. */
3156
- taskId: z9.string().optional(),
3157
- requestingUserId: z9.string().optional()
3183
+ taskId: z8.string().optional(),
3184
+ requestingUserId: z8.string().optional()
3158
3185
  });
3159
- var PostToProjectChatRequestSchema = z9.object({
3160
- projectId: z9.string(),
3161
- content: z9.string().min(1).max(2e4),
3162
- requestingUserId: z9.string().optional(),
3186
+ var PostToProjectChatRequestSchema = z8.object({
3187
+ projectId: z8.string(),
3188
+ content: z8.string().min(1).max(2e4),
3189
+ requestingUserId: z8.string().optional(),
3163
3190
  /** Marks the post so the server can persist it beyond chat (tag-audit summaries land in tag history). */
3164
- kind: z9.enum(["tag_audit_summary"]).optional()
3165
- });
3166
- var StartTagAuditRequestSchema = z9.object({
3167
- projectId: z9.string(),
3168
- requestingUserId: z9.string().optional()
3169
- });
3170
- var StartTaskAuditRequestSchema = z9.object({
3171
- projectId: z9.string(),
3172
- taskIds: z9.array(z9.string()).min(1).max(20),
3173
- requestingUserId: z9.string().optional()
3174
- });
3175
- var GetActiveAuditSessionsRequestSchema = z9.object({
3176
- projectId: z9.string()
3177
- });
3178
- var ReportTaskAuditResultRequestSchema = z9.object({
3179
- projectId: z9.string(),
3180
- taskId: z9.string(),
3181
- summary: z9.string(),
3182
- turnGrades: z9.array(
3183
- z9.object({
3184
- turnIndex: z9.number(),
3185
- phase: z9.enum(["planning", "building", "human"]),
3186
- grade: z9.enum(["correct", "neutral", "blunder"]),
3187
- reasoning: z9.string(),
3188
- eventType: z9.string(),
3189
- eventSummary: z9.string()
3191
+ kind: z8.enum(["tag_audit_summary"]).optional()
3192
+ });
3193
+ var StartTagAuditRequestSchema = z8.object({
3194
+ projectId: z8.string(),
3195
+ requestingUserId: z8.string().optional()
3196
+ });
3197
+ var StartTaskAuditRequestSchema = z8.object({
3198
+ projectId: z8.string(),
3199
+ taskIds: z8.array(z8.string()).min(1).max(20),
3200
+ requestingUserId: z8.string().optional()
3201
+ });
3202
+ var GetActiveAuditSessionsRequestSchema = z8.object({
3203
+ projectId: z8.string()
3204
+ });
3205
+ var ReportTaskAuditResultRequestSchema = z8.object({
3206
+ projectId: z8.string(),
3207
+ taskId: z8.string(),
3208
+ summary: z8.string(),
3209
+ turnGrades: z8.array(
3210
+ z8.object({
3211
+ turnIndex: z8.number(),
3212
+ phase: z8.enum(["planning", "building", "human"]),
3213
+ grade: z8.enum(["correct", "neutral", "blunder"]),
3214
+ reasoning: z8.string(),
3215
+ eventType: z8.string(),
3216
+ eventSummary: z8.string()
3190
3217
  })
3191
3218
  ),
3192
- planningAccuracy: z9.number().nullable(),
3193
- buildingAccuracy: z9.number().nullable(),
3194
- humanAccuracy: z9.number().nullable(),
3195
- planningCorrect: z9.number(),
3196
- planningNeutral: z9.number(),
3197
- planningBlunder: z9.number(),
3198
- buildingCorrect: z9.number(),
3199
- buildingNeutral: z9.number(),
3200
- buildingBlunder: z9.number(),
3201
- humanCorrect: z9.number(),
3202
- humanNeutral: z9.number(),
3203
- humanBlunder: z9.number(),
3204
- humanEvaluations: z9.array(
3205
- z9.object({
3206
- messageIndex: z9.number(),
3207
- rating: z9.union([z9.literal(-1), z9.literal(0), z9.literal(1)]),
3208
- reasoning: z9.string()
3219
+ planningAccuracy: z8.number().nullable(),
3220
+ buildingAccuracy: z8.number().nullable(),
3221
+ humanAccuracy: z8.number().nullable(),
3222
+ planningCorrect: z8.number(),
3223
+ planningNeutral: z8.number(),
3224
+ planningBlunder: z8.number(),
3225
+ buildingCorrect: z8.number(),
3226
+ buildingNeutral: z8.number(),
3227
+ buildingBlunder: z8.number(),
3228
+ humanCorrect: z8.number(),
3229
+ humanNeutral: z8.number(),
3230
+ humanBlunder: z8.number(),
3231
+ humanEvaluations: z8.array(
3232
+ z8.object({
3233
+ messageIndex: z8.number(),
3234
+ rating: z8.union([z8.literal(-1), z8.literal(0), z8.literal(1)]),
3235
+ reasoning: z8.string()
3209
3236
  })
3210
3237
  ).optional(),
3211
- suggestionIds: z9.array(z9.string()),
3212
- auditCostUsd: z9.number().nullable(),
3213
- model: z9.string().nullable(),
3238
+ suggestionIds: z8.array(z8.string()),
3239
+ auditCostUsd: z8.number().nullable(),
3240
+ model: z8.string().nullable(),
3214
3241
  /** When set, the audit is marked failed with this message instead. */
3215
- error: z9.string().optional()
3242
+ error: z8.string().optional()
3216
3243
  });
3217
- var GetTaskAuditsRequestSchema = z9.object({
3218
- projectId: z9.string(),
3219
- limit: z9.number().int().positive().max(200).optional().default(50)
3244
+ var GetTaskAuditsRequestSchema = z8.object({
3245
+ projectId: z8.string(),
3246
+ limit: z8.number().int().positive().max(200).optional().default(50)
3220
3247
  });
3221
- var GetTaskAuditRequestSchema = z9.object({
3222
- projectId: z9.string(),
3223
- auditId: z9.string()
3248
+ var GetTaskAuditRequestSchema = z8.object({
3249
+ projectId: z8.string(),
3250
+ auditId: z8.string()
3224
3251
  });
3225
- var GetTaskAuditAggregatesRequestSchema = z9.object({
3226
- projectId: z9.string()
3252
+ var GetTaskAuditAggregatesRequestSchema = z8.object({
3253
+ projectId: z8.string()
3227
3254
  });
3228
- var DeleteTaskAuditRequestSchema = z9.object({
3229
- projectId: z9.string(),
3230
- auditId: z9.string(),
3231
- requestingUserId: z9.string().optional()
3255
+ var DeleteTaskAuditRequestSchema = z8.object({
3256
+ projectId: z8.string(),
3257
+ auditId: z8.string(),
3258
+ requestingUserId: z8.string().optional()
3232
3259
  });
3233
- var MarkInitialPromptSubmittedRequestSchema = z9.object({
3234
- sessionId: z9.string()
3260
+ var MarkInitialPromptSubmittedRequestSchema = z8.object({
3261
+ sessionId: z8.string()
3235
3262
  });
3236
3263
  var CRITICAL_AUTOMATED_SOURCES = /* @__PURE__ */ new Set([
3237
3264
  "ci_failure",
@@ -3261,166 +3288,272 @@ var DECISION_DEADLINE_MIN_HOURS = 1;
3261
3288
  var DECISION_DEADLINE_MAX_DAYS = 30;
3262
3289
  var DECISION_DEADLINE_MAX_HOURS = DECISION_DEADLINE_MAX_DAYS * 24;
3263
3290
  var DECISION_LIST_MAX_LIMIT = 200;
3264
- var decisionIdSchema = z10.string().cuid("Invalid decision ID");
3265
- var optionInputSchema = z10.object({
3266
- label: z10.string().min(1, "Option label is required").max(DECISION_OPTION_LABEL_MAX),
3267
- description: z10.string().min(1, "Describe the option as GIVEN / WHEN / THEN"),
3268
- kind: z10.enum(DECISION_OPTION_KINDS).optional()
3291
+ var decisionIdSchema = z9.string().cuid("Invalid decision ID");
3292
+ var optionInputSchema = z9.object({
3293
+ label: z9.string().min(1, "Option label is required").max(DECISION_OPTION_LABEL_MAX),
3294
+ description: z9.string().min(1, "Describe the option as GIVEN / WHEN / THEN"),
3295
+ kind: z9.enum(DECISION_OPTION_KINDS).optional()
3269
3296
  });
3270
- var optionsArraySchema = z10.array(optionInputSchema).min(DECISION_OPTIONS_MIN, `A decision needs at least ${DECISION_OPTIONS_MIN} options`).max(
3297
+ var optionsArraySchema = z9.array(optionInputSchema).min(DECISION_OPTIONS_MIN, `A decision needs at least ${DECISION_OPTIONS_MIN} options`).max(
3271
3298
  DECISION_OPTIONS_MAX,
3272
3299
  `A decision takes at most ${DECISION_OPTIONS_MAX} options \u2014 more than that means the question is not framed yet`
3273
3300
  );
3274
- var CreateDecisionRequestSchema = z10.object({
3275
- projectId: z10.string().cuid("Invalid project ID"),
3301
+ var CreateDecisionRequestSchema = z9.object({
3302
+ projectId: z9.string().cuid("Invalid project ID"),
3276
3303
  /** The question, as one plain sentence. */
3277
- title: z10.string().min(1, "A decision needs a question").max(DECISION_QUESTION_MAX),
3278
- description: z10.string().max(CARD_DESCRIPTION_MAX).optional(),
3279
- context: z10.string().min(1, "Context is required \u2014 say why this is being asked now"),
3304
+ title: z9.string().min(1, "A decision needs a question").max(DECISION_QUESTION_MAX),
3305
+ description: z9.string().max(CARD_DESCRIPTION_MAX).optional(),
3306
+ context: z9.string().min(1, "Context is required \u2014 say why this is being asked now"),
3280
3307
  options: optionsArraySchema,
3281
3308
  /** 1-based position of the option that wins on silence. */
3282
- defaultOptionOrdinal: z10.number().int().min(1).max(DECISION_OPTIONS_MAX),
3283
- deadlineHours: z10.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional(),
3309
+ defaultOptionOrdinal: z9.number().int().min(1).max(DECISION_OPTIONS_MAX),
3310
+ deadlineHours: z9.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional(),
3284
3311
  /** Cards this decision blocks, by cuid or slug. */
3285
- impactedCardRefs: z10.array(z10.string().min(1)).max(50).optional(),
3286
- tagNames: z10.array(z10.string().min(1)).max(10).optional(),
3287
- raisedByTaskId: z10.string().min(1).optional(),
3288
- raisedByPrNumber: z10.number().int().positive().optional()
3312
+ impactedCardRefs: z9.array(z9.string().min(1)).max(50).optional(),
3313
+ tagNames: z9.array(z9.string().min(1)).max(10).optional(),
3314
+ raisedByTaskId: z9.string().min(1).optional(),
3315
+ raisedByPrNumber: z9.number().int().positive().optional()
3289
3316
  });
3290
- var VoteDecisionRequestSchema = z10.object({
3317
+ var VoteDecisionRequestSchema = z9.object({
3291
3318
  decisionId: decisionIdSchema,
3292
- optionId: z10.string().cuid("Invalid option ID"),
3293
- reason: z10.string().max(DECISION_VOTE_REASON_MAX).optional(),
3294
- source: z10.enum(DECISION_VOTE_SOURCES).optional()
3319
+ optionId: z9.string().cuid("Invalid option ID"),
3320
+ reason: z9.string().max(DECISION_VOTE_REASON_MAX).optional(),
3321
+ source: z9.enum(DECISION_VOTE_SOURCES).optional()
3295
3322
  });
3296
- var RemoveDecisionVoteRequestSchema = z10.object({
3323
+ var RemoveDecisionVoteRequestSchema = z9.object({
3297
3324
  decisionId: decisionIdSchema
3298
3325
  });
3299
- var ResolveDecisionRequestSchema = z10.object({
3326
+ var ResolveDecisionRequestSchema = z9.object({
3300
3327
  decisionId: decisionIdSchema,
3301
- chosenOptionId: z10.string().cuid("Invalid option ID"),
3302
- resolution: z10.string().min(1, "A resolution is required \u2014 say what was decided").max(DECISION_RESOLUTION_MAX),
3303
- resolutionNotes: z10.string().optional()
3328
+ chosenOptionId: z9.string().cuid("Invalid option ID"),
3329
+ resolution: z9.string().min(1, "A resolution is required \u2014 say what was decided").max(DECISION_RESOLUTION_MAX),
3330
+ resolutionNotes: z9.string().optional()
3304
3331
  });
3305
- var CancelDecisionRequestSchema = z10.object({
3332
+ var CancelDecisionRequestSchema = z9.object({
3306
3333
  decisionId: decisionIdSchema,
3307
3334
  /** Why it is being dropped. Posted to the decision thread. */
3308
- reason: z10.string().max(DECISION_RESOLUTION_MAX).optional()
3335
+ reason: z9.string().max(DECISION_RESOLUTION_MAX).optional()
3309
3336
  });
3310
- var BulkDecisionIdsRequestSchema = z10.object({
3311
- projectId: z10.string().cuid("Invalid project ID"),
3312
- decisionIds: z10.array(z10.string().cuid()).min(1).max(200)
3337
+ var BulkDecisionIdsRequestSchema = z9.object({
3338
+ projectId: z9.string().cuid("Invalid project ID"),
3339
+ decisionIds: z9.array(z9.string().cuid()).min(1).max(200)
3313
3340
  });
3314
- var ReopenDecisionRequestSchema = z10.object({
3341
+ var ReopenDecisionRequestSchema = z9.object({
3315
3342
  decisionId: decisionIdSchema,
3316
- deadlineHours: z10.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional()
3343
+ deadlineHours: z9.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional()
3317
3344
  });
3318
- var UpdateDecisionRequestSchema = z10.object({
3345
+ var UpdateDecisionRequestSchema = z9.object({
3319
3346
  decisionId: decisionIdSchema,
3320
- title: z10.string().min(1).max(200).optional(),
3321
- description: z10.string().max(CARD_DESCRIPTION_MAX).optional(),
3322
- context: z10.string().min(1).optional(),
3323
- deadlineAt: z10.string().datetime().optional(),
3347
+ title: z9.string().min(1).max(200).optional(),
3348
+ description: z9.string().max(CARD_DESCRIPTION_MAX).optional(),
3349
+ context: z9.string().min(1).optional(),
3350
+ deadlineAt: z9.string().datetime().optional(),
3324
3351
  /** Only accepted while the decision has zero votes. */
3325
3352
  options: optionsArraySchema.optional(),
3326
- defaultOptionOrdinal: z10.number().int().min(1).max(DECISION_OPTIONS_MAX).optional(),
3327
- addImpactedCardRefs: z10.array(z10.string().min(1)).max(50).optional(),
3328
- removeImpactedCardIds: z10.array(z10.string().min(1)).max(50).optional()
3353
+ defaultOptionOrdinal: z9.number().int().min(1).max(DECISION_OPTIONS_MAX).optional(),
3354
+ addImpactedCardRefs: z9.array(z9.string().min(1)).max(50).optional(),
3355
+ removeImpactedCardIds: z9.array(z9.string().min(1)).max(50).optional()
3329
3356
  });
3330
- var GetDecisionRequestSchema = z10.object({
3357
+ var GetDecisionRequestSchema = z9.object({
3331
3358
  /** cuid or slug. A slug needs `projectId` to resolve unambiguously. */
3332
- decisionId: z10.string().min(1),
3333
- projectId: z10.string().cuid().optional()
3359
+ decisionId: z9.string().min(1),
3360
+ projectId: z9.string().cuid().optional()
3334
3361
  });
3335
- var ListDecisionsRequestSchema = z10.object({
3336
- projectId: z10.string().cuid("Invalid project ID"),
3337
- status: z10.enum(DECISION_STATUS_LABELS).optional(),
3362
+ var ListDecisionsRequestSchema = z9.object({
3363
+ projectId: z9.string().cuid("Invalid project ID"),
3364
+ status: z9.enum(DECISION_STATUS_LABELS).optional(),
3338
3365
  /** Tag name, not id — an agent knows the tag it is working under. */
3339
- tag: z10.string().min(1).optional(),
3366
+ tag: z9.string().min(1).optional(),
3340
3367
  /** Decisions that this card is blocked by (cuid or slug). */
3341
- cardId: z10.string().min(1).optional(),
3342
- query: z10.string().min(1).optional(),
3343
- limit: z10.number().int().min(1).max(DECISION_LIST_MAX_LIMIT).optional()
3368
+ cardId: z9.string().min(1).optional(),
3369
+ query: z9.string().min(1).optional(),
3370
+ limit: z9.number().int().min(1).max(DECISION_LIST_MAX_LIMIT).optional()
3344
3371
  });
3345
- var optionInput = z11.object({
3346
- label: z11.string().min(1).max(DECISION_OPTION_LABEL_MAX),
3347
- description: z11.string().min(1),
3348
- kind: z11.enum(DECISION_OPTION_KINDS).optional()
3372
+ var optionInput = z10.object({
3373
+ label: z10.string().min(1).max(DECISION_OPTION_LABEL_MAX),
3374
+ description: z10.string().min(1),
3375
+ kind: z10.enum(DECISION_OPTION_KINDS).optional()
3349
3376
  });
3350
- var optionsInput = z11.array(optionInput).min(DECISION_OPTIONS_MIN).max(DECISION_OPTIONS_MAX);
3351
- var deadlineHours = z11.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional();
3352
- var CreateProjectDecisionRequestSchema = z11.object({
3353
- projectId: z11.string(),
3354
- question: z11.string().min(1).max(200),
3355
- summary: z11.string().max(CARD_DESCRIPTION_MAX).optional(),
3356
- context: z11.string().min(1),
3377
+ var optionsInput = z10.array(optionInput).min(DECISION_OPTIONS_MIN).max(DECISION_OPTIONS_MAX);
3378
+ var deadlineHours = z10.number().min(DECISION_DEADLINE_MIN_HOURS).max(DECISION_DEADLINE_MAX_HOURS).optional();
3379
+ var CreateProjectDecisionRequestSchema = z10.object({
3380
+ projectId: z10.string(),
3381
+ question: z10.string().min(1).max(200),
3382
+ summary: z10.string().max(CARD_DESCRIPTION_MAX).optional(),
3383
+ context: z10.string().min(1),
3357
3384
  options: optionsInput,
3358
- defaultOption: z11.number().int().min(1).max(DECISION_OPTIONS_MAX),
3385
+ defaultOption: z10.number().int().min(1).max(DECISION_OPTIONS_MAX),
3359
3386
  deadlineHours,
3360
- impactedCards: z11.array(z11.string().min(1)).max(50).optional(),
3387
+ impactedCards: z10.array(z10.string().min(1)).max(50).optional(),
3361
3388
  /**
3362
3389
  * Pod surface only: also block the card this session is working on. The
3363
3390
  * session's task id is resolved SERVER-side from `sessionId` — a
3364
3391
  * client-supplied card id would let a pod block any card in the project.
3365
3392
  */
3366
- includeCurrentCard: z11.boolean().optional(),
3367
- sessionId: z11.string().optional(),
3368
- tagNames: z11.array(z11.string().min(1)).max(10).optional(),
3369
- raisedByPr: z11.number().int().positive().optional(),
3393
+ includeCurrentCard: z10.boolean().optional(),
3394
+ sessionId: z10.string().optional(),
3395
+ tagNames: z10.array(z10.string().min(1)).max(10).optional(),
3396
+ raisedByPr: z10.number().int().positive().optional(),
3370
3397
  /** Slug or id of the card that raised the question. A link back, not a block. */
3371
- raisedByCard: z11.string().min(1).optional(),
3398
+ raisedByCard: z10.string().min(1).optional(),
3372
3399
  /** Absolute deadline (ISO 8601). Wins over `deadlineHours` when both are sent. */
3373
- deadlineAt: z11.string().datetime({ offset: true }).optional(),
3374
- requestingUserId: z11.string().optional()
3375
- });
3376
- var ListProjectDecisionsRequestSchema = z11.object({
3377
- projectId: z11.string(),
3378
- status: z11.enum(DECISION_STATUS_LABELS).optional(),
3379
- tag: z11.string().min(1).optional(),
3380
- card: z11.string().min(1).optional(),
3381
- query: z11.string().min(1).optional(),
3382
- limit: z11.number().int().min(1).max(DECISION_LIST_MAX_LIMIT).optional(),
3383
- requestingUserId: z11.string().optional()
3384
- });
3385
- var GetProjectDecisionRequestSchema = z11.object({
3386
- projectId: z11.string(),
3387
- decision: z11.string().min(1),
3388
- requestingUserId: z11.string().optional()
3400
+ deadlineAt: z10.string().datetime({ offset: true }).optional(),
3401
+ requestingUserId: z10.string().optional()
3389
3402
  });
3390
- var VoteProjectDecisionRequestSchema = z11.object({
3391
- projectId: z11.string(),
3392
- decision: z11.string().min(1),
3393
- /** An option id, or its 1-based position. */
3394
- option: z11.string().min(1),
3395
- reason: z11.string().max(CARD_DESCRIPTION_MAX).optional(),
3396
- requestingUserId: z11.string().optional()
3403
+ var ListProjectDecisionsRequestSchema = z10.object({
3404
+ projectId: z10.string(),
3405
+ status: z10.enum(DECISION_STATUS_LABELS).optional(),
3406
+ tag: z10.string().min(1).optional(),
3407
+ card: z10.string().min(1).optional(),
3408
+ query: z10.string().min(1).optional(),
3409
+ limit: z10.number().int().min(1).max(DECISION_LIST_MAX_LIMIT).optional(),
3410
+ requestingUserId: z10.string().optional()
3397
3411
  });
3398
- var ResolveProjectDecisionRequestSchema = z11.object({
3399
- projectId: z11.string(),
3400
- decision: z11.string().min(1),
3401
- option: z11.string().min(1),
3402
- resolution: z11.string().min(1).max(DECISION_RESOLUTION_MAX),
3403
- notes: z11.string().optional(),
3404
- requestingUserId: z11.string().optional()
3412
+ var GetProjectDecisionRequestSchema = z10.object({
3413
+ projectId: z10.string(),
3414
+ decision: z10.string().min(1),
3415
+ requestingUserId: z10.string().optional()
3405
3416
  });
3406
- var UpdateProjectDecisionRequestSchema = z11.object({
3407
- projectId: z11.string(),
3408
- decision: z11.string().min(1),
3409
- question: z11.string().min(1).max(200).optional(),
3410
- summary: z11.string().max(CARD_DESCRIPTION_MAX).optional(),
3411
- context: z11.string().min(1).optional(),
3417
+ var VoteProjectDecisionRequestSchema = z10.object({
3418
+ projectId: z10.string(),
3419
+ decision: z10.string().min(1),
3420
+ /** An option id, or its 1-based position. */
3421
+ option: z10.string().min(1),
3422
+ reason: z10.string().max(CARD_DESCRIPTION_MAX).optional(),
3423
+ requestingUserId: z10.string().optional()
3424
+ });
3425
+ var ResolveProjectDecisionRequestSchema = z10.object({
3426
+ projectId: z10.string(),
3427
+ decision: z10.string().min(1),
3428
+ option: z10.string().min(1),
3429
+ resolution: z10.string().min(1).max(DECISION_RESOLUTION_MAX),
3430
+ notes: z10.string().optional(),
3431
+ requestingUserId: z10.string().optional()
3432
+ });
3433
+ var UpdateProjectDecisionRequestSchema = z10.object({
3434
+ projectId: z10.string(),
3435
+ decision: z10.string().min(1),
3436
+ question: z10.string().min(1).max(200).optional(),
3437
+ summary: z10.string().max(CARD_DESCRIPTION_MAX).optional(),
3438
+ context: z10.string().min(1).optional(),
3412
3439
  /** Accepted only while nobody has voted. */
3413
3440
  options: optionsInput.optional(),
3414
- defaultOption: z11.number().int().min(1).max(DECISION_OPTIONS_MAX).optional(),
3415
- tagNames: z11.array(z11.string().min(1)).max(10).optional(),
3441
+ defaultOption: z10.number().int().min(1).max(DECISION_OPTIONS_MAX).optional(),
3442
+ tagNames: z10.array(z10.string().min(1)).max(10).optional(),
3416
3443
  deadlineHours,
3417
3444
  /** Absolute deadline (ISO 8601). Wins over `deadlineHours` when both are sent. */
3418
- deadlineAt: z11.string().datetime({ offset: true }).optional(),
3419
- addImpactedCards: z11.array(z11.string().min(1)).max(50).optional(),
3420
- removeImpactedCards: z11.array(z11.string().min(1)).max(50).optional(),
3421
- status: z11.enum(["Cancelled", "Open"]).optional(),
3422
- requestingUserId: z11.string().optional()
3445
+ deadlineAt: z10.string().datetime({ offset: true }).optional(),
3446
+ addImpactedCards: z10.array(z10.string().min(1)).max(50).optional(),
3447
+ removeImpactedCards: z10.array(z10.string().min(1)).max(50).optional(),
3448
+ status: z10.enum(["Cancelled", "Open"]).optional(),
3449
+ requestingUserId: z10.string().optional()
3450
+ });
3451
+ function formatModelId(provider, model) {
3452
+ return `${provider}/${model}`;
3453
+ }
3454
+ var JEV_MODEL = "jev-1.13.0";
3455
+ var JEV_MODEL_ID = formatModelId("typesafe", JEV_MODEL);
3456
+ var JEV_INPUT_PRICE_PER_TOKEN = 0.042 / 1e6;
3457
+ var JEV_STATE_MAX_CHARS = 1e5;
3458
+ var EVALUATE_MAX_QUESTIONS = 32;
3459
+ var EVALUATE_MAX_ITEMS = 100;
3460
+ var EVALUATE_ITEM_MAX_CHARS = 8e3;
3461
+ var EVALUATE_REQUEST_MAX_CHARS = 4e5;
3462
+ var TEXT_MAX = 1e3;
3463
+ var QUESTION_KEY = /^[A-Za-z0-9_-]{1,64}$/;
3464
+ var EvaluateQuestionSchema = z11.object({
3465
+ key: z11.string().regex(QUESTION_KEY, "key must be 1-64 letters, digits, _ or -"),
3466
+ type: z11.enum(["noul", "choice", "score"]),
3467
+ instructions: z11.string().min(1).max(4e3),
3468
+ options: z11.array(
3469
+ z11.object({
3470
+ key: z11.string().min(1).max(200),
3471
+ description: z11.string().min(1).max(TEXT_MAX)
3472
+ })
3473
+ ).optional(),
3474
+ levels: z11.array(z11.string().min(1).max(TEXT_MAX)).optional()
3475
+ }).superRefine((q, ctx) => {
3476
+ if (q.type === "choice") {
3477
+ const n = q.options?.length ?? 0;
3478
+ if (n < 2 || n > 255) {
3479
+ ctx.addIssue({
3480
+ code: z11.ZodIssueCode.custom,
3481
+ path: ["options"],
3482
+ message: "a choice question needs 2-255 options"
3483
+ });
3484
+ } else if (new Set(q.options?.map((o) => o.key)).size !== n) {
3485
+ ctx.addIssue({
3486
+ code: z11.ZodIssueCode.custom,
3487
+ path: ["options"],
3488
+ message: "option keys must be unique"
3489
+ });
3490
+ }
3491
+ }
3492
+ if (q.type === "score") {
3493
+ const n = q.levels?.length ?? 0;
3494
+ if (n < 2 || n > 10) {
3495
+ ctx.addIssue({
3496
+ code: z11.ZodIssueCode.custom,
3497
+ path: ["levels"],
3498
+ message: "a score question needs 2-10 levels"
3499
+ });
3500
+ }
3501
+ }
3423
3502
  });
3503
+ var EvaluateQuestionsRequestSchema = z11.object({
3504
+ projectId: z11.string(),
3505
+ state: z11.string().max(JEV_STATE_MAX_CHARS).optional(),
3506
+ items: z11.array(z11.string().max(EVALUATE_ITEM_MAX_CHARS)).max(EVALUATE_MAX_ITEMS).optional(),
3507
+ questions: z11.array(EvaluateQuestionSchema).min(1).max(EVALUATE_MAX_QUESTIONS)
3508
+ }).superRefine((req, ctx) => {
3509
+ if (req.state === void 0 && (!req.items || req.items.length === 0)) {
3510
+ ctx.addIssue({
3511
+ code: z11.ZodIssueCode.custom,
3512
+ path: ["state"],
3513
+ message: "pass state, or a non-empty items array"
3514
+ });
3515
+ }
3516
+ if (JSON.stringify(req).length > EVALUATE_REQUEST_MAX_CHARS) {
3517
+ ctx.addIssue({
3518
+ code: z11.ZodIssueCode.custom,
3519
+ path: [],
3520
+ message: `the request is over ${EVALUATE_REQUEST_MAX_CHARS} characters; split the items across calls`
3521
+ });
3522
+ }
3523
+ if (new Set(req.questions.map((q) => q.key)).size !== req.questions.length) {
3524
+ ctx.addIssue({
3525
+ code: z11.ZodIssueCode.custom,
3526
+ path: ["questions"],
3527
+ message: "question keys must be unique"
3528
+ });
3529
+ }
3530
+ });
3531
+ var round3 = (n) => Math.round(n * 1e3) / 1e3;
3532
+ function compactAnswer(answer) {
3533
+ switch (answer.type) {
3534
+ case "noul":
3535
+ return round3(answer.noul);
3536
+ case "choice":
3537
+ return {
3538
+ choice: answer.choice,
3539
+ p: round3(answer.probabilities[answer.choice] ?? 0),
3540
+ confidence: round3(answer.confidence)
3541
+ };
3542
+ case "score":
3543
+ return { score: answer.score, confidence: round3(answer.confidence) };
3544
+ }
3545
+ }
3546
+ function formatEvaluateQuestionsResult(res) {
3547
+ const results = res.results.map(
3548
+ (r) => "error" in r ? { index: r.index, error: r.error } : {
3549
+ index: r.index,
3550
+ answers: Object.fromEntries(
3551
+ Object.entries(r.answers).map(([key, a]) => [key, compactAnswer(a)])
3552
+ )
3553
+ }
3554
+ );
3555
+ return JSON.stringify({ model: res.model, results });
3556
+ }
3424
3557
  var MEETING_CHECKLIST_TITLE_MAX = 300;
3425
3558
  var MEETING_TRANSCRIPT_MAX_CHARS = 2e6;
3426
3559
  var MEETING_TITLE_MAX = 200;
@@ -3558,9 +3691,6 @@ var AGENT_STATUS_REASON_USER_QUESTION = "user_question";
3558
3691
  var TASK_CHAT_HISTORY_LIMIT = 20;
3559
3692
  var PM_CHAT_HISTORY_LIMIT = 40;
3560
3693
  var AGENT_CHAT_HISTORY_FETCH_LIMIT = Math.max(TASK_CHAT_HISTORY_LIMIT, PM_CHAT_HISTORY_LIMIT) + 10;
3561
- function formatModelId(provider, model) {
3562
- return `${provider}/${model}`;
3563
- }
3564
3694
  function anthropicEntry(model, label, inputPerMillion, outputPerMillion, opts = {}) {
3565
3695
  return {
3566
3696
  provider: "anthropic",
@@ -3590,7 +3720,7 @@ function isCodexReasoningEffort(value) {
3590
3720
  return typeof value === "string" && CODEX_REASONING_EFFORTS.includes(value);
3591
3721
  }
3592
3722
  var HUMAN_PROSE_WRITING_STYLE = `## Writing style for humans
3593
- When you write prose a person will read \u2014 chat messages, plan updates, PR titles and bodies, PR review guides (the \`publish_review_guide\` overview and section explanations), review comments \u2014 follow these rules (based on ASD-STE100 Simplified Technical English):
3723
+ When you write prose a person will read \u2014 chat messages, plan updates, PR titles and bodies, review comments \u2014 follow these rules (based on ASD-STE100 Simplified Technical English):
3594
3724
  - Use active voice. Say who does what ("The API rejects the request", not "the request is rejected").
3595
3725
  - Use simple tenses ("we received", not "we have received").
3596
3726
  - One instruction or fact per sentence. Keep sentences under ~20 words.
@@ -5053,6 +5183,9 @@ export {
5053
5183
  encodePtyStreamFrame,
5054
5184
  PtyStreamFrameReader,
5055
5185
  CARD_DESCRIPTION_FIELD_HINT,
5186
+ MAX_MANUAL_TESTS_PER_TASK,
5187
+ MAX_MANUAL_TEST_TITLE_LENGTH,
5188
+ describeManualTestRejection,
5056
5189
  DEFAULT_CI_WAIT_TIMEOUT_MINUTES,
5057
5190
  MAX_CI_WAIT_TIMEOUT_MINUTES,
5058
5191
  SEVERITY_ENUM,
@@ -5061,8 +5194,8 @@ export {
5061
5194
  EXTERNAL_AGENT_MESSAGE_SOURCE,
5062
5195
  TUI_KINDS,
5063
5196
  MAX_FILE_SIZE_BYTES,
5197
+ isCapabilityServableMime,
5064
5198
  RUNNER_MODES,
5065
- ReviewGuideContentSchema,
5066
5199
  CONTEXT_LINK_LOCATOR_MAX,
5067
5200
  isPlaceholderLocator,
5068
5201
  locatorMatchesContent,
@@ -5070,6 +5203,7 @@ export {
5070
5203
  TAG_OVERVIEW_MAX,
5071
5204
  TAG_REASON_MAX,
5072
5205
  CRITICAL_AUTOMATED_SOURCES,
5206
+ formatEvaluateQuestionsResult,
5073
5207
  AGENT_STATUS_REASON_USER_QUESTION,
5074
5208
  TASK_CHAT_HISTORY_LIMIT,
5075
5209
  PM_CHAT_HISTORY_LIMIT,