rivet-design 0.9.1 → 0.9.3
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/mcp/agent-variants/SessionStore.d.ts +63 -2
- package/dist/mcp/agent-variants/SessionStore.d.ts.map +1 -1
- package/dist/mcp/agent-variants/SessionStore.js +331 -71
- package/dist/mcp/agent-variants/SessionStore.js.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts +197 -8
- package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.js +805 -46
- package/dist/mcp/agent-variants/WorktreeOrchestrator.js.map +1 -1
- package/dist/mcp/agent-variants/contracts.d.ts +1101 -9
- package/dist/mcp/agent-variants/contracts.d.ts.map +1 -1
- package/dist/mcp/agent-variants/contracts.js +131 -5
- package/dist/mcp/agent-variants/contracts.js.map +1 -1
- package/dist/mcp/agent-variants/createZeroToOneTool.d.ts +205 -0
- package/dist/mcp/agent-variants/createZeroToOneTool.d.ts.map +1 -0
- package/dist/mcp/agent-variants/createZeroToOneTool.js +295 -0
- package/dist/mcp/agent-variants/createZeroToOneTool.js.map +1 -0
- package/dist/mcp/agent-variants/designContextStore.d.ts +160 -0
- package/dist/mcp/agent-variants/designContextStore.d.ts.map +1 -0
- package/dist/mcp/agent-variants/designContextStore.js +295 -0
- package/dist/mcp/agent-variants/designContextStore.js.map +1 -0
- package/dist/mcp/agent-variants/elementRefToTarget.d.ts +21 -0
- package/dist/mcp/agent-variants/elementRefToTarget.d.ts.map +1 -0
- package/dist/mcp/agent-variants/elementRefToTarget.js +47 -0
- package/dist/mcp/agent-variants/elementRefToTarget.js.map +1 -0
- package/dist/mcp/agent-variants/errors.d.ts +1 -1
- package/dist/mcp/agent-variants/errors.d.ts.map +1 -1
- package/dist/mcp/agent-variants/errors.js +6 -0
- package/dist/mcp/agent-variants/errors.js.map +1 -1
- package/dist/mcp/agent-variants/index.d.ts +4 -1
- package/dist/mcp/agent-variants/index.d.ts.map +1 -1
- package/dist/mcp/agent-variants/index.js +7 -1
- package/dist/mcp/agent-variants/index.js.map +1 -1
- package/dist/mcp/agent-variants/inspirationDesignContext.d.ts +430 -0
- package/dist/mcp/agent-variants/inspirationDesignContext.d.ts.map +1 -0
- package/dist/mcp/agent-variants/inspirationDesignContext.js +2379 -0
- package/dist/mcp/agent-variants/inspirationDesignContext.js.map +1 -0
- package/dist/mcp/agent-variants/pendingChangesAdapter.d.ts.map +1 -1
- package/dist/mcp/agent-variants/pendingChangesAdapter.js +10 -7
- package/dist/mcp/agent-variants/pendingChangesAdapter.js.map +1 -1
- package/dist/mcp/agent-variants/sourceContext.d.ts +7 -0
- package/dist/mcp/agent-variants/sourceContext.d.ts.map +1 -0
- package/dist/mcp/agent-variants/sourceContext.js +158 -0
- package/dist/mcp/agent-variants/sourceContext.js.map +1 -0
- package/dist/mcp/agent-variants/tools.d.ts +14 -0
- package/dist/mcp/agent-variants/tools.d.ts.map +1 -1
- package/dist/mcp/agent-variants/tools.js +330 -15
- package/dist/mcp/agent-variants/tools.js.map +1 -1
- package/dist/mcp/changeBatchClassification.d.ts +30 -0
- package/dist/mcp/changeBatchClassification.d.ts.map +1 -0
- package/dist/mcp/changeBatchClassification.js +65 -0
- package/dist/mcp/changeBatchClassification.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +237 -39
- package/dist/mcp/server.js.map +1 -1
- package/dist/proxy-middleware/proxy-config.d.ts.map +1 -1
- package/dist/proxy-middleware/proxy-config.js +1 -15
- package/dist/proxy-middleware/proxy-config.js.map +1 -1
- package/dist/routes/agentVariants.d.ts +3 -1
- package/dist/routes/agentVariants.d.ts.map +1 -1
- package/dist/routes/agentVariants.js +131 -13
- package/dist/routes/agentVariants.js.map +1 -1
- package/dist/routes/mcp.d.ts +7 -1
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +139 -16
- package/dist/routes/mcp.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/services/SessionBridgeService.d.ts +22 -0
- package/dist/services/SessionBridgeService.d.ts.map +1 -1
- package/dist/services/SessionBridgeService.js +61 -0
- package/dist/services/SessionBridgeService.js.map +1 -1
- package/dist/services/TelemetryService.d.ts +121 -0
- package/dist/services/TelemetryService.d.ts.map +1 -1
- package/dist/services/TelemetryService.js +155 -0
- package/dist/services/TelemetryService.js.map +1 -1
- package/dist/services/WorktreeManager.d.ts +57 -5
- package/dist/services/WorktreeManager.d.ts.map +1 -1
- package/dist/services/WorktreeManager.js +205 -13
- package/dist/services/WorktreeManager.js.map +1 -1
- package/dist/services/templates/designCatalog.d.ts +27 -0
- package/dist/services/templates/designCatalog.d.ts.map +1 -0
- package/dist/services/templates/designCatalog.js +141 -0
- package/dist/services/templates/designCatalog.js.map +1 -0
- package/dist/services/templates/designmd/airbnb.md +545 -0
- package/dist/services/templates/designmd/airtable.md +554 -0
- package/dist/services/templates/designmd/apple.md +562 -0
- package/dist/services/templates/designmd/binance.md +634 -0
- package/dist/services/templates/designmd/bmw-m.md +503 -0
- package/dist/services/templates/designmd/bmw.md +544 -0
- package/dist/services/templates/designmd/bugatti.md +454 -0
- package/dist/services/templates/designmd/cal.md +542 -0
- package/dist/services/templates/designmd/claude.md +589 -0
- package/dist/services/templates/designmd/clay.md +541 -0
- package/dist/services/templates/designmd/cohere.md +451 -0
- package/dist/services/templates/designmd/cursor.md +537 -0
- package/dist/services/templates/designmd/expo.md +526 -0
- package/dist/services/templates/designmd/figma.md +578 -0
- package/dist/services/templates/designmd/framer.md +544 -0
- package/dist/services/templates/designmd/hp.md +670 -0
- package/dist/services/templates/designmd/linear.app.md +548 -0
- package/dist/services/templates/designmd/mintlify.md +852 -0
- package/dist/services/templates/designmd/miro.md +825 -0
- package/dist/services/templates/designmd/notion.md +821 -0
- package/dist/services/templates/designmd/raycast.md +669 -0
- package/dist/services/templates/designmd/resend.md +585 -0
- package/dist/services/templates/designmd/sentry.md +262 -0
- package/dist/services/templates/designmd/shopify.md +350 -0
- package/dist/services/templates/designmd/spotify.md +246 -0
- package/dist/services/templates/designmd/stripe.md +322 -0
- package/dist/services/templates/designmd/supabase.md +255 -0
- package/dist/services/templates/designmd/superhuman.md +252 -0
- package/dist/services/templates/designmd/uber.md +295 -0
- package/dist/services/templates/designmd/vercel.md +310 -0
- package/dist/services/templates/viteReactTs.d.ts +42 -0
- package/dist/services/templates/viteReactTs.d.ts.map +1 -0
- package/dist/services/templates/viteReactTs.js +267 -0
- package/dist/services/templates/viteReactTs.js.map +1 -0
- package/dist/types/change-request-types.d.ts +15 -3
- package/dist/types/change-request-types.d.ts.map +1 -1
- package/dist/utils/skills/claude-skill.d.ts +2 -2
- package/dist/utils/skills/claude-skill.d.ts.map +1 -1
- package/dist/utils/skills/claude-skill.js +19 -98
- package/dist/utils/skills/claude-skill.js.map +1 -1
- package/dist/utils/skills/cursor-rules.d.ts +2 -2
- package/dist/utils/skills/cursor-rules.d.ts.map +1 -1
- package/dist/utils/skills/cursor-rules.js +15 -80
- package/dist/utils/skills/cursor-rules.js.map +1 -1
- package/dist/utils/skills/shared-variants-protocol.d.ts +23 -0
- package/dist/utils/skills/shared-variants-protocol.d.ts.map +1 -0
- package/dist/utils/skills/shared-variants-protocol.js +131 -0
- package/dist/utils/skills/shared-variants-protocol.js.map +1 -0
- package/package.json +4 -3
- package/src/ui/dist/assets/main-C9jfEp80.css +1 -0
- package/src/ui/dist/assets/main-DejhsBWR.js +382 -0
- package/src/ui/dist/index.html +2 -2
- package/src/ui/dist/assets/main-Bv0LuxKz.js +0 -382
- package/src/ui/dist/assets/main-BzmseUDd.css +0 -1
|
@@ -1,11 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.registerAgentVariantsTools = registerAgentVariantsTools;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const os_1 = __importDefault(require("os"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
4
10
|
const contracts_1 = require("./contracts");
|
|
5
11
|
const errors_1 = require("./errors");
|
|
12
|
+
const createZeroToOneTool_1 = require("./createZeroToOneTool");
|
|
13
|
+
const viteReactTs_1 = require("../../services/templates/viteReactTs");
|
|
14
|
+
const ProjectDetectionService_1 = require("../../services/ProjectDetectionService");
|
|
15
|
+
/**
|
|
16
|
+
* Reject caller-supplied fresh destinations at the generic variants boundary.
|
|
17
|
+
* Fresh projects must go through `create_zero_to_one_project`, where the
|
|
18
|
+
* server derives the destination path before delegating to the orchestrator.
|
|
19
|
+
*/
|
|
20
|
+
const validateFreshProjectInput = (args) => {
|
|
21
|
+
if (args.projectContext?.kind !== 'fresh')
|
|
22
|
+
return null;
|
|
23
|
+
return {
|
|
24
|
+
stage: 'failed',
|
|
25
|
+
errorCode: 'SCHEMA_VALIDATION_FAILED',
|
|
26
|
+
message: 'Fresh-project sessions must be started with create_zero_to_one_project so Rivet derives and validates the destination path.',
|
|
27
|
+
};
|
|
28
|
+
};
|
|
6
29
|
function registerAgentVariantsTools(mcp, deps) {
|
|
7
|
-
mcp.tool('propose_variants', 'START HERE for
|
|
30
|
+
mcp.tool('propose_variants', 'START HERE for "create variants", "show me N options for X", or "explore approaches to X" in an existing project. For brand-new projects or "build from scratch", call create_zero_to_one_project instead so Rivet derives the destination path. DO NOT generate variants natively (Task tool, parallel tool calls, or your own creative process). Returns { sessionId, briefWorkItem }. Protocol: 1) call this tool, 2) run the brief work item with your own LLM to generate N briefs, 3) call report_variant_briefs, 3.5) AUTO-OPEN the Rivet editor — call detect_project + open_visual_editor if not already open; the user needs the iframe up to see variants render, do NOT wait for them to ask, 4) SHOW the briefs to the user IN CHAT as a numbered list and ask "look good or want adjustments?" — DO NOT ask which one to pick, 5) wait for user feedback (affirmative → proceed; tweak → bodyOverride or re-brief), 6) call approve_variant_briefs({sessionId, briefIds: [all], confirmedByUser: true}) only after explicit user confirmation, 7) call continue_variants(action="request_work") to lease all items in parallel, 8) run all code-gens IN PARALLEL in their own worktreePath, calling report_variant_complete per item, 9) DO NOT print diffs — instead tell the user the variants are ready and to use the chip at the bottom-center of the Rivet iframe to cycle and commit, 10) watch_for_changes or poll get_pending_changes; when the user clicks the check, call commit_variant with confirmedByUser: true, 11) apply via git apply.', contracts_1.proposeVariantsInput, async (args) => {
|
|
8
31
|
try {
|
|
32
|
+
const failure = validateFreshProjectInput(args);
|
|
33
|
+
if (failure)
|
|
34
|
+
return jsonResponse(failure);
|
|
9
35
|
const result = deps.orchestrator.propose({
|
|
10
36
|
sessionId: args.sessionId,
|
|
11
37
|
prompt: args.prompt,
|
|
@@ -13,6 +39,23 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
13
39
|
target: args.target,
|
|
14
40
|
projectContext: args.projectContext,
|
|
15
41
|
});
|
|
42
|
+
if (result.stage === 'awaiting_source_research') {
|
|
43
|
+
const out = {
|
|
44
|
+
sessionId: result.sessionId,
|
|
45
|
+
stage: 'awaiting_source_research',
|
|
46
|
+
sourceResearchWorkItem: {
|
|
47
|
+
id: result.sourceResearchWorkItem.id,
|
|
48
|
+
kind: 'source_research',
|
|
49
|
+
attempt: result.sourceResearchWorkItem.attempt,
|
|
50
|
+
input: result.sourceResearchWorkItem.input,
|
|
51
|
+
output_schema: {
|
|
52
|
+
sourceContext: 'sourceFindings, sectionInventory, visualObservations, sourceRoles, qualityBar, screenshotReferences?',
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
nextAction: 'continue_variants',
|
|
56
|
+
};
|
|
57
|
+
return jsonResponse(out);
|
|
58
|
+
}
|
|
16
59
|
const out = {
|
|
17
60
|
sessionId: result.sessionId,
|
|
18
61
|
stage: 'awaiting_briefs',
|
|
@@ -21,7 +64,7 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
21
64
|
kind: 'brief',
|
|
22
65
|
attempt: result.briefWorkItem.attempt,
|
|
23
66
|
input: result.briefWorkItem.input,
|
|
24
|
-
output_schema: { briefs: 'Array<{briefId, label, body}>' },
|
|
67
|
+
output_schema: { briefs: 'Array<{briefId, label: "≤4-word title", body: "ONE sentence ≤20 words"}>' },
|
|
25
68
|
},
|
|
26
69
|
nextAction: 'report_variant_briefs',
|
|
27
70
|
};
|
|
@@ -31,7 +74,7 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
31
74
|
return errorResponse(err);
|
|
32
75
|
}
|
|
33
76
|
});
|
|
34
|
-
mcp.tool('report_variant_briefs', '
|
|
77
|
+
mcp.tool('report_variant_briefs', 'Report drafted briefs from the leased brief work item. Each brief: label ≤ 4 words, body = exactly ONE sentence ≤ 20 words — a single evocative descriptor, no bullets, no lists, no multi-clause run-ons. Body is shown directly to the user in the variants panel so it must be concise and immediately scannable. On success, transitions to awaiting_approval.', contracts_1.reportVariantBriefsInput, async (args) => {
|
|
35
78
|
try {
|
|
36
79
|
const result = deps.orchestrator.reportBriefs({
|
|
37
80
|
sessionId: args.sessionId,
|
|
@@ -43,6 +86,7 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
43
86
|
const out = {
|
|
44
87
|
stage: 'awaiting_approval',
|
|
45
88
|
briefs: result.briefs,
|
|
89
|
+
approvalPrompt: buildApprovalPrompt(result.briefs),
|
|
46
90
|
nextAction: 'continue_variants',
|
|
47
91
|
};
|
|
48
92
|
return jsonResponse(out);
|
|
@@ -51,8 +95,34 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
51
95
|
return errorResponse(err);
|
|
52
96
|
}
|
|
53
97
|
});
|
|
54
|
-
mcp.tool('
|
|
98
|
+
mcp.tool('report_source_context', 'Report completed source research for a leased source_research work item. Requires the leaseId and attempt from continue_variants(action="request_work"). This unlocks the brief work item for source-grounded fresh-project sessions.', contracts_1.reportSourceContextInput, async (args) => {
|
|
99
|
+
try {
|
|
100
|
+
const result = deps.orchestrator.reportSourceContext({
|
|
101
|
+
sessionId: args.sessionId,
|
|
102
|
+
workItemId: args.workItemId,
|
|
103
|
+
leaseId: args.leaseId,
|
|
104
|
+
attempt: args.attempt,
|
|
105
|
+
sourceContext: args.sourceContext,
|
|
106
|
+
});
|
|
107
|
+
return jsonResponse({
|
|
108
|
+
stage: 'awaiting_briefs',
|
|
109
|
+
briefWorkItem: {
|
|
110
|
+
id: result.briefWorkItem.id,
|
|
111
|
+
kind: 'brief',
|
|
112
|
+
attempt: result.briefWorkItem.attempt,
|
|
113
|
+
input: result.briefWorkItem.input,
|
|
114
|
+
output_schema: { briefs: 'Array<{briefId, label: "≤4-word title", body: "ONE sentence ≤20 words"}>' },
|
|
115
|
+
},
|
|
116
|
+
nextAction: 'report_variant_briefs',
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
return errorResponse(err);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
mcp.tool('approve_variant_briefs', 'Call AFTER showing the briefs to the user in chat and getting an affirmative ("looks good", "yep", "go") OR refined selections from them. Set confirmedByUser=true when the user approves. Only use bypassRequestedByUser=true (with bypassReason) if the user explicitly asks to bypass confirmation. Provide briefIds for ALL the briefs the user wants generated (typically all of them). Each approved brief gets a parallel code-gen work item — Rivet provisions one isolated worktree per item. Advance via continue_variants(action="request_work") to lease and run them in parallel. For tweak-with-feedback, use the selections form with bodyOverride per brief.', contracts_1.approveVariantBriefsInput, async (args) => {
|
|
55
124
|
try {
|
|
125
|
+
assertExplicitUserConfirmation('approve_variant_briefs', args, 'approve variant briefs');
|
|
56
126
|
const selections = args.selections ??
|
|
57
127
|
(args.briefIds ?? []).map((briefId) => ({ briefId }));
|
|
58
128
|
if (selections.length === 0) {
|
|
@@ -75,8 +145,9 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
75
145
|
return errorResponse(err);
|
|
76
146
|
}
|
|
77
147
|
});
|
|
78
|
-
mcp.tool('commit_variant', "Call AFTER all variants have been generated AND you've shown each variant's diff/changes to the user in chat AND the user has picked one. Pass the variantId (the workItemId of the chosen variant). Rivet looks up that variant's captured diff and enqueues it onto the existing pending-changes channel — call get_pending_changes next to retrieve and apply. Idempotent on (sessionId, variantId).", contracts_1.commitVariantInput, async (args) => {
|
|
148
|
+
mcp.tool('commit_variant', "Call AFTER all variants have been generated AND you've shown each variant's diff/changes to the user in chat AND the user has picked one. Set confirmedByUser=true when the user confirms the pick. Only use bypassRequestedByUser=true (with bypassReason) if the user explicitly asks to bypass confirmation. Pass the variantId (the workItemId of the chosen variant). Rivet looks up that variant's captured diff and enqueues it onto the existing pending-changes channel — call get_pending_changes next to retrieve and apply. Idempotent on (sessionId, variantId).", contracts_1.commitVariantInput, async (args) => {
|
|
79
149
|
try {
|
|
150
|
+
assertExplicitUserConfirmation('commit_variant', args, 'commit a variant');
|
|
80
151
|
const result = await deps.orchestrator.commitVariant({
|
|
81
152
|
sessionId: args.sessionId,
|
|
82
153
|
variantId: args.variantId,
|
|
@@ -86,6 +157,8 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
86
157
|
enqueued: result.enqueued,
|
|
87
158
|
duplicate: result.duplicate,
|
|
88
159
|
changedFilesCount: result.changedFilesCount,
|
|
160
|
+
payloadKind: result.payloadKind,
|
|
161
|
+
destinationPath: result.destinationPath,
|
|
89
162
|
};
|
|
90
163
|
return jsonResponse(out);
|
|
91
164
|
}
|
|
@@ -93,7 +166,7 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
93
166
|
return errorResponse(err);
|
|
94
167
|
}
|
|
95
168
|
});
|
|
96
|
-
mcp.tool('continue_variants', 'Long-poll/state-pump the variants flow. action=check returns immediately; action=wait blocks up to ~5min for
|
|
169
|
+
mcp.tool('continue_variants', 'Long-poll/state-pump the variants flow. action=check returns immediately; action=wait blocks up to ~5min for state changes; action=request_work leases ready work items (source_research, static_preview, or code_gen depending on stage). static_preview is for fresh zero-to-one sessions and should return {html, css?, js?} so Rivet can show fast visual previews before Vite/code generation finishes.', contracts_1.continueVariantsInput, async (args) => {
|
|
97
170
|
try {
|
|
98
171
|
const stage = deps.orchestrator.getStage(args.sessionId);
|
|
99
172
|
if (stage === 'awaiting_briefs') {
|
|
@@ -102,13 +175,21 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
102
175
|
throw new errors_1.AgentVariantsError('INVALID_STAGE_ACTION', 'Run the brief work item and call report_variant_briefs before continue_variants');
|
|
103
176
|
}
|
|
104
177
|
if (stage === 'awaiting_approval') {
|
|
178
|
+
const briefs = deps.orchestrator.getBriefs(args.sessionId);
|
|
105
179
|
return jsonResponse({
|
|
106
180
|
stage: 'awaiting_approval',
|
|
107
|
-
briefs
|
|
181
|
+
briefs,
|
|
182
|
+
approvalPrompt: buildApprovalPrompt(briefs),
|
|
108
183
|
});
|
|
109
184
|
}
|
|
110
|
-
if (
|
|
111
|
-
|
|
185
|
+
if (args.action === 'request_work' &&
|
|
186
|
+
(stage === 'awaiting_source_research' ||
|
|
187
|
+
stage === 'work_items_ready' ||
|
|
188
|
+
stage === 'waiting_for_results')) {
|
|
189
|
+
// SessionStore.requestWork accepts both stages and expires stale
|
|
190
|
+
// leases before issuing new ones, so this also recycles wedged
|
|
191
|
+
// variants whose leases expired while the session was already in
|
|
192
|
+
// waiting_for_results.
|
|
112
193
|
const lease = deps.orchestrator.requestWork({
|
|
113
194
|
sessionId: args.sessionId,
|
|
114
195
|
leaseOwner: deps.leaseOwner(),
|
|
@@ -127,17 +208,34 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
127
208
|
progress: deps.orchestrator.getProgress(args.sessionId),
|
|
128
209
|
});
|
|
129
210
|
}
|
|
211
|
+
if (stage === 'awaiting_source_research') {
|
|
212
|
+
return jsonResponse({
|
|
213
|
+
stage: 'awaiting_source_research',
|
|
214
|
+
progress: deps.orchestrator.getProgress(args.sessionId),
|
|
215
|
+
});
|
|
216
|
+
}
|
|
130
217
|
// Terminal stages
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
218
|
+
{
|
|
219
|
+
const summary = deps.orchestrator.getSummary(args.sessionId);
|
|
220
|
+
const variants = deps.orchestrator.getVariants(args.sessionId);
|
|
221
|
+
const previewUrls = variants
|
|
222
|
+
.filter((v) => v.preview?.kind === 'static_artifact')
|
|
223
|
+
.map((v) => ({
|
|
224
|
+
label: v.label,
|
|
225
|
+
url: v.preview.url,
|
|
226
|
+
}));
|
|
227
|
+
return jsonResponse({
|
|
228
|
+
stage,
|
|
229
|
+
summary,
|
|
230
|
+
...(previewUrls.length > 0 ? { previewUrls } : {}),
|
|
231
|
+
});
|
|
232
|
+
}
|
|
135
233
|
}
|
|
136
234
|
catch (err) {
|
|
137
235
|
return errorResponse(err);
|
|
138
236
|
}
|
|
139
237
|
});
|
|
140
|
-
mcp.tool('report_variant_complete', "Agent reports per-
|
|
238
|
+
mcp.tool('report_variant_complete', "Agent reports per-work-item status: running (heartbeat), succeeded, failed, or cancelled. Requires a valid leaseId and matching attempt obtained from continue_variants(action='request_work'). For benchmark instrumentation, agents can optionally include tokensIn, tokensOut, and model in the call so Rivet can record cost per variant.", contracts_1.reportVariantCompleteInput, async (args) => {
|
|
141
239
|
try {
|
|
142
240
|
const result = await deps.orchestrator.reportComplete({
|
|
143
241
|
sessionId: args.sessionId,
|
|
@@ -147,15 +245,27 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
147
245
|
status: args.status,
|
|
148
246
|
output: args.output,
|
|
149
247
|
error: args.error,
|
|
248
|
+
tokensIn: args.tokensIn,
|
|
249
|
+
tokensOut: args.tokensOut,
|
|
250
|
+
model: args.model,
|
|
150
251
|
});
|
|
151
252
|
let out;
|
|
152
253
|
if (result.stage === 'ready' ||
|
|
153
254
|
result.stage === 'degraded' ||
|
|
154
255
|
result.stage === 'failed' ||
|
|
155
256
|
result.stage === 'cancelled') {
|
|
257
|
+
const summary = result.summary ?? deps.orchestrator.getSummary(args.sessionId);
|
|
258
|
+
const variants = deps.orchestrator.getVariants(args.sessionId);
|
|
259
|
+
const previewUrls = variants
|
|
260
|
+
.filter((v) => v.preview?.kind === 'static_artifact')
|
|
261
|
+
.map((v) => ({
|
|
262
|
+
label: v.label,
|
|
263
|
+
url: v.preview.url,
|
|
264
|
+
}));
|
|
156
265
|
out = {
|
|
157
266
|
stage: result.stage,
|
|
158
|
-
summary
|
|
267
|
+
summary,
|
|
268
|
+
...(previewUrls.length > 0 ? { previewUrls } : {}),
|
|
159
269
|
};
|
|
160
270
|
}
|
|
161
271
|
else {
|
|
@@ -186,6 +296,39 @@ function registerAgentVariantsTools(mcp, deps) {
|
|
|
186
296
|
return errorResponse(err);
|
|
187
297
|
}
|
|
188
298
|
});
|
|
299
|
+
mcp.tool('start_variants', 'Unified one-call kickoff for variants exploration (host-agnostic — Claude Code, Cursor, Codex). Collapses propose_variants → report_variant_briefs → approve_variant_briefs → detect_project → open_visual_editor → continue_variants(request_work) into a single call. Response includes sessionId, an active leaseId covering every variant, and a worktreePath per variant — start code-gen immediately. After this call: 1) for each variant in the response, edit files inside its worktreePath; the FIRST LINE of your output stream MUST be a ≤4-word label (UI renders it as the card title), then the variant code, 2) call report_variant_complete per variant with the leaseId from the response. No detect_project, no open_visual_editor, no continue_variants needed — the response already opened the editor (URL in visualEditor.url when present) and issued the lease. The user picks/cancels variants visually in the iframe — no in-chat approval gate. Supports mode="existing" (uses projectPath or cwd; spawns code_gen items) and mode="zero_to_one" (server derives destinationPath under destinationParent or ~; spawns static_preview items). For source-grounded fresh (inspiration URLs, custom design context), use create_zero_to_one_project instead — its multi-step source-research flow cannot collapse into one call. detect_project and open_visual_editor remain available as standalone tools for the Visual Editor flow (point-and-click changes without variants).', contracts_1.startVariantsInput, async (args) => {
|
|
300
|
+
try {
|
|
301
|
+
if (args.mode === 'zero_to_one') {
|
|
302
|
+
const out = await handleStartVariantsZeroToOne(args, deps);
|
|
303
|
+
return jsonResponse(out);
|
|
304
|
+
}
|
|
305
|
+
const out = await handleStartVariantsExisting(args, deps);
|
|
306
|
+
return jsonResponse(out);
|
|
307
|
+
}
|
|
308
|
+
catch (err) {
|
|
309
|
+
return errorResponse(err);
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
mcp.tool('cancel_variant', 'Cancel a single variant within an in-flight session without affecting its siblings. Called by the Rivet UI when the user clicks the cancel button on a variant card. Marks the variant cancelled and releases its lease; sibling variants continue. Idempotent on terminal states (already cancelled / succeeded / failed returns alreadyTerminal=true with the actual finalStatus). Per-variant worktree teardown happens at session commit/cancel time. Distinct from cancel_variants (plural), which kills the entire session.', contracts_1.cancelVariantInput, async (args) => {
|
|
313
|
+
try {
|
|
314
|
+
const result = await deps.orchestrator.cancelVariant({
|
|
315
|
+
sessionId: args.sessionId,
|
|
316
|
+
variantId: args.variantId,
|
|
317
|
+
reason: args.reason,
|
|
318
|
+
});
|
|
319
|
+
const out = {
|
|
320
|
+
sessionId: result.sessionId,
|
|
321
|
+
variantId: result.variantId,
|
|
322
|
+
finalStatus: result.finalStatus,
|
|
323
|
+
sessionStage: result.sessionStage,
|
|
324
|
+
alreadyTerminal: result.alreadyTerminal,
|
|
325
|
+
};
|
|
326
|
+
return jsonResponse(out);
|
|
327
|
+
}
|
|
328
|
+
catch (err) {
|
|
329
|
+
return errorResponse(err);
|
|
330
|
+
}
|
|
331
|
+
});
|
|
189
332
|
}
|
|
190
333
|
// --- Helpers --------------------------------------------------------------
|
|
191
334
|
// Return type is left implicit so the MCP SDK's overload selection picks the
|
|
@@ -218,4 +361,176 @@ function errorResponse(err) {
|
|
|
218
361
|
isError: true,
|
|
219
362
|
};
|
|
220
363
|
}
|
|
364
|
+
function assertExplicitUserConfirmation(toolName, confirmation, actionLabel) {
|
|
365
|
+
if (confirmation.confirmedByUser) {
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
if (confirmation.bypassRequestedByUser &&
|
|
369
|
+
confirmation.bypassReason?.trim().length) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
throw new errors_1.AgentVariantsError('MISSING_REQUIRED_INPUT', `${toolName} requires explicit user confirmation to ${actionLabel}. Set confirmedByUser=true after user confirmation, or set bypassRequestedByUser=true with bypassReason when the user explicitly asks to bypass.`);
|
|
373
|
+
}
|
|
374
|
+
function buildApprovalPrompt(briefs) {
|
|
375
|
+
const formattedBriefs = briefs
|
|
376
|
+
.map((brief, index) => `${index + 1}. name: ${brief.label}\n description: ${brief.body}`)
|
|
377
|
+
.join('\n');
|
|
378
|
+
return (`Review these variant briefs:\n${formattedBriefs}\n\n` +
|
|
379
|
+
'Do these look good, or do you want any adjustments before I proceed?');
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Handle the zero-to-one branch of `start_variants`. Mirrors the
|
|
383
|
+
* destination-derivation, framework validation, and visual-editor
|
|
384
|
+
* auto-open behavior of `create_zero_to_one_project`, but skips the
|
|
385
|
+
* source-research / inspiration-extraction path. Source-grounded fresh
|
|
386
|
+
* projects must continue to use `create_zero_to_one_project`.
|
|
387
|
+
*/
|
|
388
|
+
async function handleStartVariantsZeroToOne(args, deps) {
|
|
389
|
+
const framework = args.framework ?? 'vite';
|
|
390
|
+
if (framework !== 'vite') {
|
|
391
|
+
return {
|
|
392
|
+
stage: 'failed',
|
|
393
|
+
errorCode: 'UNSUPPORTED_FRAMEWORK',
|
|
394
|
+
message: `start_variants(mode='zero_to_one') only supports framework='vite'; got '${framework}'.`,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
const homedir = deps.homedir ?? os_1.default.homedir;
|
|
398
|
+
const destinationParent = args.destinationParent ?? homedir();
|
|
399
|
+
if (!path_1.default.isAbsolute(destinationParent)) {
|
|
400
|
+
return {
|
|
401
|
+
stage: 'failed',
|
|
402
|
+
errorCode: 'SCHEMA_VALIDATION_FAILED',
|
|
403
|
+
message: `destinationParent must be absolute; got '${destinationParent}'.`,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
const slug = (0, createZeroToOneTool_1.slugifyPrompt)(args.prompt);
|
|
407
|
+
const destinationPath = path_1.default.join(destinationParent, slug);
|
|
408
|
+
if (!(0, viteReactTs_1.isDestinationEmpty)(destinationPath)) {
|
|
409
|
+
return {
|
|
410
|
+
stage: 'failed',
|
|
411
|
+
errorCode: 'DESTINATION_NOT_EMPTY',
|
|
412
|
+
message: `Destination '${destinationPath}' is not empty.`,
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
fs_1.default.mkdirSync(destinationParent, { recursive: true });
|
|
416
|
+
const projectContext = {
|
|
417
|
+
kind: 'fresh',
|
|
418
|
+
workspacePath: destinationPath,
|
|
419
|
+
framework: 'vite',
|
|
420
|
+
};
|
|
421
|
+
const visualEditor = deps.ensureVisualEditorOpen
|
|
422
|
+
? await deps.ensureVisualEditorOpen({
|
|
423
|
+
projectPath: destinationPath,
|
|
424
|
+
framework: 'vite',
|
|
425
|
+
})
|
|
426
|
+
: undefined;
|
|
427
|
+
const result = await deps.orchestrator.startUnified({
|
|
428
|
+
prompt: args.prompt,
|
|
429
|
+
count: args.count,
|
|
430
|
+
target: args.target,
|
|
431
|
+
projectContext,
|
|
432
|
+
leaseOwner: deps.leaseOwner(),
|
|
433
|
+
});
|
|
434
|
+
return assembleStartVariantsResponse({
|
|
435
|
+
mode: 'zero_to_one',
|
|
436
|
+
result,
|
|
437
|
+
destinationPath,
|
|
438
|
+
visualEditor,
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Handle the existing-project branch of `start_variants`. Detects the
|
|
443
|
+
* project's framework server-side (cwd or the provided projectPath) so
|
|
444
|
+
* the agent doesn't need a separate detect_project call, auto-opens the
|
|
445
|
+
* visual editor on the resolved projectPath, and leases all variant
|
|
446
|
+
* work items so they're ready to code in the same response.
|
|
447
|
+
*/
|
|
448
|
+
async function handleStartVariantsExisting(args, deps) {
|
|
449
|
+
const projectPath = args.projectPath ?? process.cwd();
|
|
450
|
+
if (!path_1.default.isAbsolute(projectPath)) {
|
|
451
|
+
return {
|
|
452
|
+
stage: 'failed',
|
|
453
|
+
errorCode: 'SCHEMA_VALIDATION_FAILED',
|
|
454
|
+
message: `projectPath must be absolute; got '${projectPath}'.`,
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
let framework;
|
|
458
|
+
try {
|
|
459
|
+
framework = new ProjectDetectionService_1.ProjectDetectionService().detectFramework(projectPath);
|
|
460
|
+
}
|
|
461
|
+
catch (err) {
|
|
462
|
+
const msg = err instanceof Error ? err.message : 'Unknown detection error';
|
|
463
|
+
return {
|
|
464
|
+
stage: 'failed',
|
|
465
|
+
errorCode: 'SCHEMA_VALIDATION_FAILED',
|
|
466
|
+
message: `Could not detect project at '${projectPath}': ${msg}. Ensure it has a package.json, or pass projectPath explicitly.`,
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
// ensureVisualEditorOpen is typed for framework='vite' (matches the
|
|
470
|
+
// zero-to-one entry point), but it works against any projectPath. For
|
|
471
|
+
// existing projects with non-vite frameworks, the agent can still open
|
|
472
|
+
// the editor itself via the standalone open_visual_editor tool.
|
|
473
|
+
const visualEditor = deps.ensureVisualEditorOpen && framework === 'vite'
|
|
474
|
+
? await deps.ensureVisualEditorOpen({
|
|
475
|
+
projectPath,
|
|
476
|
+
framework: 'vite',
|
|
477
|
+
})
|
|
478
|
+
: undefined;
|
|
479
|
+
const result = await deps.orchestrator.startUnified({
|
|
480
|
+
prompt: args.prompt,
|
|
481
|
+
count: args.count,
|
|
482
|
+
target: args.target,
|
|
483
|
+
leaseOwner: deps.leaseOwner(),
|
|
484
|
+
});
|
|
485
|
+
return assembleStartVariantsResponse({
|
|
486
|
+
mode: 'existing',
|
|
487
|
+
result,
|
|
488
|
+
project: { projectPath, framework },
|
|
489
|
+
visualEditor,
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Build the StartVariantsOutput from a startUnified result + the lease
|
|
494
|
+
* info it surfaced. Pairs each variant in the original `variants` list
|
|
495
|
+
* with its `leasedWorkItems[]` entry from requestWork so the agent sees
|
|
496
|
+
* one consistent per-variant object with everything it needs.
|
|
497
|
+
*/
|
|
498
|
+
function assembleStartVariantsResponse(args) {
|
|
499
|
+
const { result } = args;
|
|
500
|
+
if (result.leaseId === undefined ||
|
|
501
|
+
result.leaseTtlMs === undefined ||
|
|
502
|
+
result.leasedWorkItems === undefined) {
|
|
503
|
+
return {
|
|
504
|
+
stage: 'failed',
|
|
505
|
+
errorCode: 'INVALID_STAGE_ACTION',
|
|
506
|
+
message: 'start_variants expected a lease to be issued by startUnified but none was returned.',
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
const itemById = new Map(result.leasedWorkItems.map((item) => [item.id, item]));
|
|
510
|
+
const variants = [];
|
|
511
|
+
for (const v of result.variants) {
|
|
512
|
+
const workItem = itemById.get(v.variantId);
|
|
513
|
+
if (!workItem) {
|
|
514
|
+
return {
|
|
515
|
+
stage: 'failed',
|
|
516
|
+
errorCode: 'INVALID_STAGE_ACTION',
|
|
517
|
+
message: `start_variants leased fewer items than variants — missing workItem for ${v.variantId}.`,
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
variants.push({ ...v, workItem });
|
|
521
|
+
}
|
|
522
|
+
return {
|
|
523
|
+
sessionId: result.sessionId,
|
|
524
|
+
stage: 'work_items_ready',
|
|
525
|
+
mode: args.mode,
|
|
526
|
+
leaseId: result.leaseId,
|
|
527
|
+
leaseTtlMs: result.leaseTtlMs,
|
|
528
|
+
variants,
|
|
529
|
+
scaffoldBaseWorkItemId: result.scaffoldBaseWorkItemId,
|
|
530
|
+
...(args.destinationPath ? { destinationPath: args.destinationPath } : {}),
|
|
531
|
+
...(args.visualEditor ? { visualEditor: args.visualEditor } : {}),
|
|
532
|
+
...(args.project ? { project: args.project } : {}),
|
|
533
|
+
nextAction: 'report_variant_complete',
|
|
534
|
+
};
|
|
535
|
+
}
|
|
221
536
|
//# sourceMappingURL=tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/mcp/agent-variants/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/mcp/agent-variants/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ChangeItem, ChangeRequest } from '../types/change-request-types';
|
|
2
|
+
export type ImageContent = {
|
|
3
|
+
type: 'image';
|
|
4
|
+
data: string;
|
|
5
|
+
mimeType: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Extract base64 images from comment/chat changes into separate MCP image
|
|
9
|
+
* content items. Returns the changes with `images` stripped (replaced by
|
|
10
|
+
* `imageCount`) and an array of image content items to append to the tool
|
|
11
|
+
* response. All other fields on the change item — including the optional
|
|
12
|
+
* `variantRequest` marker on comments — pass through untouched.
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractImages(changes: ChangeItem[]): {
|
|
15
|
+
changes: unknown[];
|
|
16
|
+
imageContent: ImageContent[];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Returns true when an intent's pending batch is a single CommentChangeItem
|
|
20
|
+
* carrying `variantRequest`. Such batches are routed through the variants
|
|
21
|
+
* lifecycle instead of `beginApplyingRun`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isSingleVariantRequestBatch(intent: ChangeRequest): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Returns true when a batch contains at least one item with `variantRequest`
|
|
26
|
+
* but is NOT a clean single-item variant-request batch. UI gating should make
|
|
27
|
+
* this unreachable; the server boundary still rejects defensively.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isMixedVariantBatch(intent: ChangeRequest): boolean;
|
|
30
|
+
//# sourceMappingURL=changeBatchClassification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeBatchClassification.d.ts","sourceRoot":"","sources":["../../src/mcp/changeBatchClassification.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACd,MAAM,+BAA+B,CAAC;AAIvC,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;IACpD,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,YAAY,EAAE,YAAY,EAAE,CAAC;CAC9B,CAmCA;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAI1E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAKlE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractImages = extractImages;
|
|
4
|
+
exports.isSingleVariantRequestBatch = isSingleVariantRequestBatch;
|
|
5
|
+
exports.isMixedVariantBatch = isMixedVariantBatch;
|
|
6
|
+
const index_core_1 = require("../index-core");
|
|
7
|
+
const log = (0, index_core_1.createLogger)('ChangeBatchClassification');
|
|
8
|
+
/**
|
|
9
|
+
* Extract base64 images from comment/chat changes into separate MCP image
|
|
10
|
+
* content items. Returns the changes with `images` stripped (replaced by
|
|
11
|
+
* `imageCount`) and an array of image content items to append to the tool
|
|
12
|
+
* response. All other fields on the change item — including the optional
|
|
13
|
+
* `variantRequest` marker on comments — pass through untouched.
|
|
14
|
+
*/
|
|
15
|
+
function extractImages(changes) {
|
|
16
|
+
const imageContent = [];
|
|
17
|
+
const strippedChanges = changes.map((change) => {
|
|
18
|
+
if ((change.kind === 'comment' || change.kind === 'chat') &&
|
|
19
|
+
change.images?.length) {
|
|
20
|
+
let extractedCount = 0;
|
|
21
|
+
for (const img of change.images) {
|
|
22
|
+
const match = img.match(/^data:([^;]+);base64,(.+)$/s);
|
|
23
|
+
if (match) {
|
|
24
|
+
imageContent.push({
|
|
25
|
+
type: 'image',
|
|
26
|
+
data: match[2],
|
|
27
|
+
mimeType: match[1],
|
|
28
|
+
});
|
|
29
|
+
extractedCount++;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const preview = img.slice(0, 80);
|
|
33
|
+
log.warn(`Failed to extract image from ${change.kind} change: not a valid data URI (starts with "${preview}")`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const { images: _images, ...rest } = change;
|
|
37
|
+
void _images;
|
|
38
|
+
return { ...rest, imageCount: extractedCount };
|
|
39
|
+
}
|
|
40
|
+
return change;
|
|
41
|
+
});
|
|
42
|
+
return { changes: strippedChanges, imageContent };
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Returns true when an intent's pending batch is a single CommentChangeItem
|
|
46
|
+
* carrying `variantRequest`. Such batches are routed through the variants
|
|
47
|
+
* lifecycle instead of `beginApplyingRun`.
|
|
48
|
+
*/
|
|
49
|
+
function isSingleVariantRequestBatch(intent) {
|
|
50
|
+
if (intent.changes.length !== 1)
|
|
51
|
+
return false;
|
|
52
|
+
const item = intent.changes[0];
|
|
53
|
+
return item.kind === 'comment' && Boolean(item.variantRequest);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Returns true when a batch contains at least one item with `variantRequest`
|
|
57
|
+
* but is NOT a clean single-item variant-request batch. UI gating should make
|
|
58
|
+
* this unreachable; the server boundary still rejects defensively.
|
|
59
|
+
*/
|
|
60
|
+
function isMixedVariantBatch(intent) {
|
|
61
|
+
if (intent.changes.length <= 1)
|
|
62
|
+
return false;
|
|
63
|
+
return intent.changes.some((c) => c.kind === 'comment' && Boolean(c.variantRequest));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=changeBatchClassification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeBatchClassification.js","sourceRoot":"","sources":["../../src/mcp/changeBatchClassification.ts"],"names":[],"mappings":";;AAiBA,sCAsCC;AAOD,kEAIC;AAOD,kDAKC;AA9ED,8CAA6C;AAM7C,MAAM,GAAG,GAAG,IAAA,yBAAY,EAAC,2BAA2B,CAAC,CAAC;AAItD;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,OAAqB;IAIjD,MAAM,YAAY,GAAmB,EAAE,CAAC;IAExC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7C,IACE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;YACrD,MAAM,CAAC,MAAM,EAAE,MAAM,EACrB,CAAC;YACD,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACvD,IAAI,KAAK,EAAE,CAAC;oBACV,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;wBACd,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;qBACnB,CAAC,CAAC;oBACH,cAAc,EAAE,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjC,GAAG,CAAC,IAAI,CACN,gCAAgC,MAAM,CAAC,IAAI,+CAA+C,OAAO,IAAI,CACtG,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAEpC,CAAC;YACF,KAAK,OAAO,CAAC;YACb,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,MAAqB;IAC/D,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,MAAqB;IACvD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CACzD,CAAC;AACJ,CAAC"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AA+cA,eAAO,MAAM,cAAc,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,IAAI,CA0tCrE,CAAC"}
|