@rallycry/conveyor-mcp 5.0.9 → 5.0.11
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/{chunk-UPLS63HM.js → chunk-UOLE5JY2.js} +8 -0
- package/dist/cli.js +116 -16
- package/dist/{connection-YYBLNxYn.d.ts → connection-FbRjUB2k.d.ts} +12 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/tunnel-cli.js +1 -1
- package/dist/tunnel.d.ts +1 -1
- package/dist/wait-cli.js +1 -1
- package/dist/wait-runner.d.ts +1 -1
- package/dist/wait.d.ts +1 -1
- package/package.json +1 -1
|
@@ -875,6 +875,14 @@ var ConveyorConnection = class {
|
|
|
875
875
|
subtaskId
|
|
876
876
|
});
|
|
877
877
|
}
|
|
878
|
+
// ── Incidents ───────────────────────────────────────────────────────
|
|
879
|
+
updateIncident(params) {
|
|
880
|
+
const { projectId, ...rest } = params;
|
|
881
|
+
return this.call("updateProjectIncident", {
|
|
882
|
+
projectId: this.resolveProjectId(projectId),
|
|
883
|
+
...rest
|
|
884
|
+
});
|
|
885
|
+
}
|
|
878
886
|
// ── Dependencies ────────────────────────────────────────────────────
|
|
879
887
|
getDependencies(taskId, projectId) {
|
|
880
888
|
return this.call("getProjectTaskDependencies", {
|
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-
|
|
7
|
+
} from "./chunk-UOLE5JY2.js";
|
|
8
8
|
|
|
9
9
|
// src/cli.ts
|
|
10
10
|
import { createRequire } from "module";
|
|
@@ -72,7 +72,7 @@ function registerProjectTools(server2, conn2) {
|
|
|
72
72
|
// src/tools/connection.ts
|
|
73
73
|
import { z as z4 } from "zod";
|
|
74
74
|
|
|
75
|
-
// ../shared/dist/chunk-
|
|
75
|
+
// ../shared/dist/chunk-3D2OVVIS.js
|
|
76
76
|
import { z as z2 } from "zod";
|
|
77
77
|
import { z as z22 } from "zod";
|
|
78
78
|
var DEFAULT_SONNET_MODEL = "claude-sonnet-5";
|
|
@@ -81,6 +81,15 @@ var DEFAULT_HAIKU_MODEL = "claude-haiku-4-5-20251001";
|
|
|
81
81
|
var FABLE_MODEL = "claude-fable-5-1";
|
|
82
82
|
var PREVIOUS_SONNET_MODEL = "claude-sonnet-4-6";
|
|
83
83
|
var PREVIOUS_OPUS_MODEL = "claude-opus-5";
|
|
84
|
+
function formatModelId(provider, model) {
|
|
85
|
+
return `${provider}/${model}`;
|
|
86
|
+
}
|
|
87
|
+
var JEV_MODEL = "jev-1.13.0";
|
|
88
|
+
var JEV_MODEL_ID = formatModelId("typesafe", JEV_MODEL);
|
|
89
|
+
var JEV_ZEN_MODEL = "jev-1.13";
|
|
90
|
+
var JEV_ZEN_MODEL_ID = formatModelId("zen", JEV_ZEN_MODEL);
|
|
91
|
+
var JEV_INPUT_PRICE_PER_TOKEN = 0.042 / 1e6;
|
|
92
|
+
var JEV_STATE_MAX_CHARS = 1e5;
|
|
84
93
|
var PTY_STREAM_PORT_BASE = 7420;
|
|
85
94
|
var PTY_STREAM_PORT_ATTEMPTS = 8;
|
|
86
95
|
var PREVIEW_PORT_DENY_LIST = [
|
|
@@ -2131,6 +2140,88 @@ var logsContracts = [
|
|
|
2131
2140
|
queryGcpLogsContract,
|
|
2132
2141
|
queryGrafanaLogsContract
|
|
2133
2142
|
];
|
|
2143
|
+
var DETECTORS = ["partner", "player", "internal", "monitor", "agent", "unknown"];
|
|
2144
|
+
var LINK_KINDS = ["deployment", "origin", "fix"];
|
|
2145
|
+
var ATTRIBUTIONS = ["suspected", "confirmed"];
|
|
2146
|
+
var TIMESTAMP_HINT = "ISO 8601 timestamp; pass an empty string to clear it back to unknown. Never substitute card creation or closure time.";
|
|
2147
|
+
var DESCRIPTION = "Record an incident's outcome and attribution: impact, environment, who detected it, when the failure started, when it was detected, and when service was actually restored (alert clearance alone is not recovery). Optionally link a deployment, the origin task whose change caused it, or a fix task; attribution is 'suspected' until confirmed. remove_link_id soft-removes a wrong link (reason required). Every change is audited. Read the current record with get_task (field `incident`).";
|
|
2148
|
+
var updateIncidentContract = defineToolContract({
|
|
2149
|
+
name: "update_incident",
|
|
2150
|
+
agent: {
|
|
2151
|
+
description: DESCRIPTION,
|
|
2152
|
+
fields: {
|
|
2153
|
+
incident_slug_or_id: f.optional(
|
|
2154
|
+
f.string({
|
|
2155
|
+
desc: "Incident card slug or ID. Omit when this session's card is the incident."
|
|
2156
|
+
})
|
|
2157
|
+
),
|
|
2158
|
+
impact: f.optional(f.string({ desc: "Who/what was affected and how badly" })),
|
|
2159
|
+
environment: f.optional(f.string({ desc: "Affected environment, e.g. prod, staging, test" })),
|
|
2160
|
+
detected_by: f.optional(f.enum(DETECTORS, { desc: "Who first noticed the failure" })),
|
|
2161
|
+
failure_started_at: f.optional(
|
|
2162
|
+
f.string({ desc: `When the failure began. ${TIMESTAMP_HINT}` })
|
|
2163
|
+
),
|
|
2164
|
+
detected_at: f.optional(f.string({ desc: `When it was first detected. ${TIMESTAMP_HINT}` })),
|
|
2165
|
+
service_restored_at: f.optional(
|
|
2166
|
+
f.string({ desc: `When service was observed restored. ${TIMESTAMP_HINT}` })
|
|
2167
|
+
),
|
|
2168
|
+
synthetic: f.optional(
|
|
2169
|
+
f.boolean({ desc: "True for probe/acceptance incidents (excluded from delivery metrics)" })
|
|
2170
|
+
),
|
|
2171
|
+
link_kind: f.optional(f.enum(LINK_KINDS, { desc: "Add or update a link of this kind" })),
|
|
2172
|
+
link_task_slug_or_id: f.optional(
|
|
2173
|
+
f.string({ desc: "Origin or fix task slug/ID (link_kind origin|fix)" })
|
|
2174
|
+
),
|
|
2175
|
+
link_deployment_id: f.optional(f.string({ desc: "Deployment ID (link_kind deployment)" })),
|
|
2176
|
+
attribution: f.optional(
|
|
2177
|
+
f.enum(ATTRIBUTIONS, { desc: "Deployment/origin attribution; defaults to suspected" })
|
|
2178
|
+
),
|
|
2179
|
+
required_immediate_intervention: f.optional(
|
|
2180
|
+
f.boolean({
|
|
2181
|
+
desc: "Deployment links: did the failure need a rollback, hotfix, or fix-forward?"
|
|
2182
|
+
})
|
|
2183
|
+
),
|
|
2184
|
+
link_note: f.optional(f.string({ desc: "Short evidence note for the link" })),
|
|
2185
|
+
remove_link_id: f.optional(f.string({ desc: "ID of an existing link to remove" })),
|
|
2186
|
+
reason: f.optional(f.string({ desc: "Why this changed (kept in the audit history)" }))
|
|
2187
|
+
}
|
|
2188
|
+
},
|
|
2189
|
+
mcp: {
|
|
2190
|
+
description: `${DESCRIPTION} Pass projectId to target a specific project; otherwise the configured default project is used.`,
|
|
2191
|
+
fields: {
|
|
2192
|
+
projectId: mcpProjectId,
|
|
2193
|
+
taskId: f.string({ desc: "The incident card ID or slug" }),
|
|
2194
|
+
impact: f.optional(f.string({ desc: "Who/what was affected and how badly" })),
|
|
2195
|
+
environment: f.optional(f.string({ desc: "Affected environment, e.g. prod, staging, test" })),
|
|
2196
|
+
detectedBy: f.optional(f.enum(DETECTORS, { desc: "Who first noticed the failure" })),
|
|
2197
|
+
failureStartedAt: f.optional(f.string({ desc: `When the failure began. ${TIMESTAMP_HINT}` })),
|
|
2198
|
+
detectedAt: f.optional(f.string({ desc: `When it was first detected. ${TIMESTAMP_HINT}` })),
|
|
2199
|
+
serviceRestoredAt: f.optional(
|
|
2200
|
+
f.string({ desc: `When service was observed restored. ${TIMESTAMP_HINT}` })
|
|
2201
|
+
),
|
|
2202
|
+
synthetic: f.optional(
|
|
2203
|
+
f.boolean({ desc: "True for probe/acceptance incidents (excluded from delivery metrics)" })
|
|
2204
|
+
),
|
|
2205
|
+
linkKind: f.optional(f.enum(LINK_KINDS, { desc: "Add or update a link of this kind" })),
|
|
2206
|
+
linkTaskSlugOrId: f.optional(
|
|
2207
|
+
f.string({ desc: "Origin or fix task slug/ID (linkKind origin|fix)" })
|
|
2208
|
+
),
|
|
2209
|
+
linkDeploymentId: f.optional(f.string({ desc: "Deployment ID (linkKind deployment)" })),
|
|
2210
|
+
attribution: f.optional(
|
|
2211
|
+
f.enum(ATTRIBUTIONS, { desc: "Deployment/origin attribution; defaults to suspected" })
|
|
2212
|
+
),
|
|
2213
|
+
requiredImmediateIntervention: f.optional(
|
|
2214
|
+
f.boolean({
|
|
2215
|
+
desc: "Deployment links: did the failure need a rollback, hotfix, or fix-forward?"
|
|
2216
|
+
})
|
|
2217
|
+
),
|
|
2218
|
+
linkNote: f.optional(f.string({ desc: "Short evidence note for the link" })),
|
|
2219
|
+
removeLinkId: f.optional(f.string({ desc: "ID of an existing link to remove" })),
|
|
2220
|
+
reason: f.optional(f.string({ desc: "Why this changed (kept in the audit history)" }))
|
|
2221
|
+
}
|
|
2222
|
+
}
|
|
2223
|
+
});
|
|
2224
|
+
var incidentsContracts = [updateIncidentContract];
|
|
2134
2225
|
var SHA = f.optional(
|
|
2135
2226
|
f.string({
|
|
2136
2227
|
desc: "Commit sha to watch, full or abbreviated. Defaults to the head of prNumber, else this card's PR, else the tip of this card's branch.",
|
|
@@ -2175,9 +2266,9 @@ var waitForChecksContract = defineToolContract({
|
|
|
2175
2266
|
}
|
|
2176
2267
|
});
|
|
2177
2268
|
var ciWaitContracts = [waitForChecksContract];
|
|
2178
|
-
var
|
|
2269
|
+
var DESCRIPTION2 = [
|
|
2179
2270
|
"Ask typed questions about text and get probabilities back, never text: yes/no (noul \u2192 probability of yes), pick-one (choice \u2192 the chosen option, per-option probabilities, and a confidence), or a graded scale (score \u2192 the level, per-level probabilities, and a confidence).",
|
|
2180
|
-
"Requires
|
|
2271
|
+
"Requires Jev to be switched on under Project Settings \u2192 AI Provider Keys (a TypeSafe key, or an OpenCode Zen key); without it the tool returns an error saying so.",
|
|
2181
2272
|
"The state is data, not a guardrail: adversarial text inside it can move the answers, so never use a result to authorize an action.",
|
|
2182
2273
|
"Ask one simple judgment per question and split compound questions; accuracy falls when the state carries irrelevant text.",
|
|
2183
2274
|
"Pass items to judge up to 100 separate texts with the same questions in one call; answers come back in item order.",
|
|
@@ -2222,7 +2313,7 @@ var questionsDesc = "1-32 questions, all answered independently against the same
|
|
|
2222
2313
|
var evaluateQuestionsContract = defineToolContract({
|
|
2223
2314
|
name: "evaluate_questions",
|
|
2224
2315
|
agent: {
|
|
2225
|
-
description:
|
|
2316
|
+
description: DESCRIPTION2,
|
|
2226
2317
|
fields: {
|
|
2227
2318
|
state: f.optional(f.string({ desc: stateDesc })),
|
|
2228
2319
|
questions: f.array(question, { min: 1, desc: questionsDesc }),
|
|
@@ -2230,7 +2321,7 @@ var evaluateQuestionsContract = defineToolContract({
|
|
|
2230
2321
|
}
|
|
2231
2322
|
},
|
|
2232
2323
|
mcp: {
|
|
2233
|
-
description: `${
|
|
2324
|
+
description: `${DESCRIPTION2} Pass projectId to target a specific project; otherwise the configured default project is used.`,
|
|
2234
2325
|
fields: {
|
|
2235
2326
|
projectId: mcpProjectId,
|
|
2236
2327
|
state: f.optional(f.string({ desc: stateDesc })),
|
|
@@ -2257,7 +2348,8 @@ var TOOL_CONTRACTS = Object.fromEntries(
|
|
|
2257
2348
|
...meetingsContracts,
|
|
2258
2349
|
...logsContracts,
|
|
2259
2350
|
...ciWaitContracts,
|
|
2260
|
-
...evaluateContracts
|
|
2351
|
+
...evaluateContracts,
|
|
2352
|
+
...incidentsContracts
|
|
2261
2353
|
].map((contract) => [contract.name, contract])
|
|
2262
2354
|
);
|
|
2263
2355
|
|
|
@@ -3404,6 +3496,14 @@ function registerDependencyTools(server2, conn2) {
|
|
|
3404
3496
|
registerRemoveDependency(server2, conn2);
|
|
3405
3497
|
}
|
|
3406
3498
|
|
|
3499
|
+
// src/tools/incidents.ts
|
|
3500
|
+
function registerIncidentTools(server2, conn2) {
|
|
3501
|
+
registerContractTool(server2, updateIncidentContract, async (params) => {
|
|
3502
|
+
const record = await conn2.updateIncident(params);
|
|
3503
|
+
return { content: [{ type: "text", text: JSON.stringify(record, null, 2) }] };
|
|
3504
|
+
});
|
|
3505
|
+
}
|
|
3506
|
+
|
|
3407
3507
|
// src/tools/suggestions.ts
|
|
3408
3508
|
function registerSuggestionTools(server2, conn2) {
|
|
3409
3509
|
registerContractTool(server2, createSuggestionContract, async (params) => {
|
|
@@ -3665,7 +3765,9 @@ var KnownAgentEventSchema = z23.discriminatedUnion("type", [
|
|
|
3665
3765
|
startCommandRunning: z23.boolean().optional(),
|
|
3666
3766
|
startCommandConfigured: z23.boolean().optional(),
|
|
3667
3767
|
// Sanitized server-side by sanitizeSessionPreviewPorts — stays unknown.
|
|
3668
|
-
previewPorts: z23.unknown().optional()
|
|
3768
|
+
previewPorts: z23.unknown().optional(),
|
|
3769
|
+
// Sanitized server-side by sanitizeSessionPreviewLinks — stays unknown.
|
|
3770
|
+
previewLinks: z23.unknown().optional()
|
|
3669
3771
|
}).passthrough(),
|
|
3670
3772
|
z23.object({ type: z23.literal("setup_error"), message: z23.string() }).passthrough(),
|
|
3671
3773
|
z23.object({ type: z23.literal("start_command_started") }).passthrough(),
|
|
@@ -4143,6 +4245,9 @@ var ReportPtyStreamRequestSchema = z32.object({
|
|
|
4143
4245
|
sessionId: z32.string(),
|
|
4144
4246
|
port: z32.number().int().positive().max(65535).nullable()
|
|
4145
4247
|
});
|
|
4248
|
+
var ReportPtyInputRequestSchema = z32.object({
|
|
4249
|
+
sessionId: z32.string()
|
|
4250
|
+
});
|
|
4146
4251
|
var GetPtyStreamEndpointRequestSchema = z32.object({
|
|
4147
4252
|
sessionId: z32.string()
|
|
4148
4253
|
});
|
|
@@ -5114,13 +5219,6 @@ var UpdateProjectDecisionRequestSchema = z10.object({
|
|
|
5114
5219
|
status: z10.enum(["Cancelled", "Open"]).optional(),
|
|
5115
5220
|
requestingUserId: z10.string().optional()
|
|
5116
5221
|
});
|
|
5117
|
-
function formatModelId(provider, model) {
|
|
5118
|
-
return `${provider}/${model}`;
|
|
5119
|
-
}
|
|
5120
|
-
var JEV_MODEL = "jev-1.13.0";
|
|
5121
|
-
var JEV_MODEL_ID = formatModelId("typesafe", JEV_MODEL);
|
|
5122
|
-
var JEV_INPUT_PRICE_PER_TOKEN = 0.042 / 1e6;
|
|
5123
|
-
var JEV_STATE_MAX_CHARS = 1e5;
|
|
5124
5222
|
var EVALUATE_MAX_QUESTIONS = 32;
|
|
5125
5223
|
var EVALUATE_MAX_ITEMS = 100;
|
|
5126
5224
|
var EVALUATE_ITEM_MAX_CHARS = 8e3;
|
|
@@ -5942,7 +6040,8 @@ function registerPreviewUrlsTool(server2, conn2) {
|
|
|
5942
6040
|
taskId: info.taskId,
|
|
5943
6041
|
sessionId: info.sessionId,
|
|
5944
6042
|
previewPorts: info.previewPorts,
|
|
5945
|
-
previewUrls: info.previewUrls
|
|
6043
|
+
previewUrls: info.previewUrls,
|
|
6044
|
+
previewLinks: info.previewLinks ?? []
|
|
5946
6045
|
},
|
|
5947
6046
|
null,
|
|
5948
6047
|
2
|
|
@@ -6309,6 +6408,7 @@ function registerAllTools(server2, conn2) {
|
|
|
6309
6408
|
registerPullRequestTools(server2, conn2);
|
|
6310
6409
|
registerSubtaskTools(server2, conn2);
|
|
6311
6410
|
registerDependencyTools(server2, conn2);
|
|
6411
|
+
registerIncidentTools(server2, conn2);
|
|
6312
6412
|
registerSuggestionTools(server2, conn2);
|
|
6313
6413
|
registerChecklistTools(server2, conn2);
|
|
6314
6414
|
registerWorkspaceTools(server2, conn2);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { io, Socket } from 'socket.io-client';
|
|
2
|
-
import { ListProjectTagsDetail, ListedProjectTag, ListDriveFilesResponse, ReadDriveFileResponse, DriveFileDTO, DeleteDriveFileResponse, ProjectIntegrationsSummary, GaAnalyticsSummaryDTO, ProjectChannelDTO, ReadChannelMessagesResponse, PostChannelMessageResponse, CreateProjectDecisionRequest, CreateProjectDecisionResponse, EvaluateQuestionsRequest, EvaluateQuestionsResponse, ListProjectDecisionsRequest, ProjectDecisionRow, ProjectDecisionDetail, VoteProjectDecisionRequest, ResolveProjectDecisionRequest, UpdateProjectDecisionRequest, ListMeetingsResponse, MeetingForAgent, ReadMeetingTranscriptResponse, MeetingChecklistItemForAgent, DeletedTaskFile, SetManualTestsResult } from '@project/shared';
|
|
2
|
+
import { ListProjectTagsDetail, ListedProjectTag, ListDriveFilesResponse, ReadDriveFileResponse, DriveFileDTO, DeleteDriveFileResponse, ProjectIntegrationsSummary, GaAnalyticsSummaryDTO, ProjectChannelDTO, ReadChannelMessagesResponse, PostChannelMessageResponse, CreateProjectDecisionRequest, CreateProjectDecisionResponse, EvaluateQuestionsRequest, EvaluateQuestionsResponse, ListProjectDecisionsRequest, ProjectDecisionRow, ProjectDecisionDetail, VoteProjectDecisionRequest, ResolveProjectDecisionRequest, UpdateProjectDecisionRequest, ListMeetingsResponse, MeetingForAgent, ReadMeetingTranscriptResponse, MeetingChecklistItemForAgent, DeletedTaskFile, UpdateIncidentInput, SetManualTestsResult } from '@project/shared';
|
|
3
3
|
|
|
4
4
|
interface ConveyorMcpConfig {
|
|
5
5
|
apiUrl: string;
|
|
@@ -173,6 +173,13 @@ interface WorkspaceAttachInfo {
|
|
|
173
173
|
label: string;
|
|
174
174
|
}>;
|
|
175
175
|
previewUrls: Record<string, string>;
|
|
176
|
+
/** Project-declared named entry points; absent from older APIs. */
|
|
177
|
+
previewLinks?: Array<{
|
|
178
|
+
label: string;
|
|
179
|
+
port: number;
|
|
180
|
+
path: string;
|
|
181
|
+
url: string;
|
|
182
|
+
}>;
|
|
176
183
|
ssh?: {
|
|
177
184
|
remotePort: number;
|
|
178
185
|
preferredLocalPort: number;
|
|
@@ -881,6 +888,10 @@ declare class ConveyorConnection {
|
|
|
881
888
|
deleteSubtask(subtaskId: string, projectId?: string): Promise<{
|
|
882
889
|
deleted: boolean;
|
|
883
890
|
}>;
|
|
891
|
+
updateIncident(params: UpdateIncidentInput & {
|
|
892
|
+
projectId?: string;
|
|
893
|
+
taskId: string;
|
|
894
|
+
}): Promise<unknown>;
|
|
884
895
|
getDependencies(taskId: string, projectId?: string): Promise<unknown[]>;
|
|
885
896
|
addDependency(params: {
|
|
886
897
|
projectId?: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ActivePtySession, d as ConveyorConnection, e as ConveyorMcpConfig, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-
|
|
1
|
+
export { A as ActivePtySession, d as ConveyorConnection, e as ConveyorMcpConfig, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-FbRjUB2k.js';
|
|
2
2
|
export { AttachTunnelOptions, ResolvedPtySession, RunTunnelOptions, TunnelConnection, TunnelHandle, TunnelSession, TunnelTty, WaitForPtySessionOptions, attachTunnel, runTunnel, waitForPtySession } from './tunnel.js';
|
|
3
3
|
import 'socket.io-client';
|
|
4
4
|
import '@project/shared';
|
package/dist/index.js
CHANGED
package/dist/tunnel-cli.js
CHANGED
package/dist/tunnel.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as ActivePtySession, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-
|
|
1
|
+
import { A as ActivePtySession, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-FbRjUB2k.js';
|
|
2
2
|
import 'socket.io-client';
|
|
3
3
|
import '@project/shared';
|
|
4
4
|
|
package/dist/wait-cli.js
CHANGED
package/dist/wait-runner.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as CardCollectionPage, a as CardCollectionDelta } from './connection-
|
|
1
|
+
import { C as CardCollectionPage, a as CardCollectionDelta } from './connection-FbRjUB2k.js';
|
|
2
2
|
import { WaitFilter, WaitResult } from './wait.js';
|
|
3
3
|
import 'socket.io-client';
|
|
4
4
|
import '@project/shared';
|
package/dist/wait.d.ts
CHANGED