rivet-design 0.10.9 → 0.11.0
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 +6 -4
- package/dist/mcp/agent-variants/SessionStore.d.ts.map +1 -1
- package/dist/mcp/agent-variants/SessionStore.js +314 -123
- package/dist/mcp/agent-variants/SessionStore.js.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts +9 -2
- package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.js +60 -42
- package/dist/mcp/agent-variants/WorktreeOrchestrator.js.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.d.ts +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.d.ts.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.js +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.js.map +1 -1
- package/dist/mcp/agent-variants/contracts.d.ts +7712 -2283
- package/dist/mcp/agent-variants/contracts.d.ts.map +1 -1
- package/dist/mcp/agent-variants/contracts.js +302 -152
- package/dist/mcp/agent-variants/contracts.js.map +1 -1
- package/dist/mcp/agent-variants/createZeroToOneTool.d.ts +2 -3
- package/dist/mcp/agent-variants/createZeroToOneTool.d.ts.map +1 -1
- package/dist/mcp/agent-variants/createZeroToOneTool.js +49 -39
- package/dist/mcp/agent-variants/createZeroToOneTool.js.map +1 -1
- package/dist/mcp/agent-variants/designCritique.d.ts +7 -3
- package/dist/mcp/agent-variants/designCritique.d.ts.map +1 -1
- package/dist/mcp/agent-variants/designCritique.js +12 -5
- package/dist/mcp/agent-variants/designCritique.js.map +1 -1
- package/dist/mcp/agent-variants/index.d.ts +1 -1
- package/dist/mcp/agent-variants/index.d.ts.map +1 -1
- package/dist/mcp/agent-variants/pinterestSourceContext.d.ts +4 -2
- package/dist/mcp/agent-variants/pinterestSourceContext.d.ts.map +1 -1
- package/dist/mcp/agent-variants/pinterestSourceContext.js +7 -6
- package/dist/mcp/agent-variants/pinterestSourceContext.js.map +1 -1
- package/dist/mcp/agent-variants/previewQa.d.ts +6 -4
- package/dist/mcp/agent-variants/previewQa.d.ts.map +1 -1
- package/dist/mcp/agent-variants/previewQa.js +133 -13
- package/dist/mcp/agent-variants/previewQa.js.map +1 -1
- package/dist/mcp/agent-variants/sourceContext.d.ts +20 -5
- package/dist/mcp/agent-variants/sourceContext.d.ts.map +1 -1
- package/dist/mcp/agent-variants/sourceContext.js +99 -115
- package/dist/mcp/agent-variants/sourceContext.js.map +1 -1
- package/dist/mcp/agent-variants/tools.d.ts +7 -0
- package/dist/mcp/agent-variants/tools.d.ts.map +1 -1
- package/dist/mcp/agent-variants/tools.js +209 -16
- package/dist/mcp/agent-variants/tools.js.map +1 -1
- package/dist/mcp/agent-variants/variantContext.d.ts +19 -0
- package/dist/mcp/agent-variants/variantContext.d.ts.map +1 -0
- package/dist/mcp/agent-variants/variantContext.js +355 -0
- package/dist/mcp/agent-variants/variantContext.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +4 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/routes/agentVariants.js +4 -3
- package/dist/routes/agentVariants.js.map +1 -1
- package/dist/services/BrowserAgentClient.d.ts +54 -0
- package/dist/services/BrowserAgentClient.d.ts.map +1 -0
- package/dist/services/BrowserAgentClient.js +126 -0
- package/dist/services/BrowserAgentClient.js.map +1 -0
- package/dist/services/InlineVariantGenerationService.d.ts +2 -0
- package/dist/services/InlineVariantGenerationService.d.ts.map +1 -1
- package/dist/services/InlineVariantGenerationService.js +70 -3
- package/dist/services/InlineVariantGenerationService.js.map +1 -1
- package/dist/services/VariantRunService.d.ts +1 -0
- package/dist/services/VariantRunService.d.ts.map +1 -1
- package/dist/services/VariantRunService.js +1 -0
- package/dist/services/VariantRunService.js.map +1 -1
- package/dist/services/VariantsRuntime.d.ts.map +1 -1
- package/dist/services/VariantsRuntime.js +1 -0
- package/dist/services/VariantsRuntime.js.map +1 -1
- package/dist/services/WorktreeManager.d.ts +1 -8
- package/dist/services/WorktreeManager.d.ts.map +1 -1
- package/dist/services/WorktreeManager.js +1 -28
- package/dist/services/WorktreeManager.js.map +1 -1
- package/dist/utils/skills/describe-motion-protocol.d.ts +2 -3
- package/dist/utils/skills/describe-motion-protocol.d.ts.map +1 -1
- package/dist/utils/skills/describe-motion-protocol.js +50 -35
- package/dist/utils/skills/describe-motion-protocol.js.map +1 -1
- package/dist/utils/skills/shared-variants-protocol.d.ts +1 -1
- package/dist/utils/skills/shared-variants-protocol.d.ts.map +1 -1
- package/dist/utils/skills/shared-variants-protocol.js +16 -13
- package/dist/utils/skills/shared-variants-protocol.js.map +1 -1
- package/package.json +2 -1
- package/src/ui/dist/assets/{main-Cwwhwfjq.js → main-Cw6Pd8ye.js} +56 -56
- package/src/ui/dist/assets/main-DkCj7b2K.css +1 -0
- package/src/ui/dist/index.html +2 -2
- package/dist/mcp/agent-variants/designContextStore.d.ts +0 -160
- package/dist/mcp/agent-variants/designContextStore.d.ts.map +0 -1
- package/dist/mcp/agent-variants/designContextStore.js +0 -295
- package/dist/mcp/agent-variants/designContextStore.js.map +0 -1
- package/dist/mcp/agent-variants/inspirationDesignContext.d.ts +0 -440
- package/dist/mcp/agent-variants/inspirationDesignContext.d.ts.map +0 -1
- package/dist/mcp/agent-variants/inspirationDesignContext.js +0 -2467
- package/dist/mcp/agent-variants/inspirationDesignContext.js.map +0 -1
- package/src/ui/dist/assets/main-Do6whVIm.css +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ERROR_CODES = exports.getVariantInput = exports.listPastVariantsInput = exports.variantHistoryStatusSchema = exports.startVariantsInput = exports.startVariantsBriefContent = exports.startVariantsMode = exports.cancelVariantInput = exports.cancelVariantsInput = exports.
|
|
3
|
+
exports.ERROR_CODES = exports.getVariantInput = exports.captureDesignEvidenceInput = exports.listPastVariantsInput = exports.variantHistoryStatusSchema = exports.startVariantsInput = exports.startVariantsBriefContent = exports.startVariantsMode = exports.cancelVariantInput = exports.cancelVariantsInput = exports.reportVariantCompleteInput = exports.reportVariantCompleteStatus = exports.continueVariantsInput = exports.continueVariantsAction = exports.commitVariantInput = exports.approveVariantBriefsInput = exports.reportSourcePlanInput = exports.sourcePlanArtifactSchema = exports.reportVariantBriefsInput = exports.proposeVariantsInput = exports.runLabelSchema = exports.VARIANT_COUNT_MAX = exports.VARIANT_COUNT_MIN = exports.variantWorkItemContextSchema = exports.briefSchema = exports.targetSchema = exports.VARIANT_ARTIFACT_KINDS = exports.projectContextInputSchema = exports.projectContextSchema = exports.projectContextFresh = exports.projectContextExisting = exports.variantContextBundleSchema = exports.executionCapabilityPlanSchema = exports.assetPlanEntrySchema = exports.executionConfidenceSchema = exports.executionModeSchema = exports.variantContextBindingSchema = exports.rivetMetadataSchema = exports.sourcePlanActionOptionSchema = exports.rivetContextActionSchema = exports.rivetContextActionKindSchema = exports.storedUserContextSourceRecordSchema = exports.rawUserContextSourceSchema = exports.rawUserContextInputSchema = exports.sourceRoleSchema = exports.designContextEntrySchema = exports.WORK_ITEM_STATUSES = exports.WORK_ITEM_KINDS = exports.TERMINAL_STAGES = exports.STAGES = void 0;
|
|
4
4
|
const v3_1 = require("zod/v3");
|
|
5
5
|
const errors_1 = require("./errors");
|
|
6
6
|
Object.defineProperty(exports, "ERROR_CODES", { enumerable: true, get: function () { return errors_1.ERROR_CODES; } });
|
|
7
|
-
const
|
|
7
|
+
const sourceContext_1 = require("./sourceContext");
|
|
8
8
|
// --- Stages ---------------------------------------------------------------
|
|
9
9
|
exports.STAGES = [
|
|
10
10
|
'awaiting_source_plan',
|
|
@@ -44,43 +44,13 @@ exports.WORK_ITEM_STATUSES = [
|
|
|
44
44
|
const DESIGN_CONTEXT_MARKDOWN_MAX_LENGTH = 50_000;
|
|
45
45
|
const DESIGN_CONTEXT_SLUG_MAX_LENGTH = 120;
|
|
46
46
|
const SOURCE_URL_MAX_LENGTH = 2_048;
|
|
47
|
-
const SOURCE_ARTIFACT_LABEL_MAX_LENGTH = 80;
|
|
48
|
-
const SOURCE_ARTIFACT_CONTENT_MAX_LENGTH = 8_000;
|
|
49
47
|
const SOURCE_FINDING_MAX_LENGTH = 400;
|
|
50
48
|
const SOURCE_LIST_MAX_ITEMS = 24;
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
'asset_source',
|
|
57
|
-
'content_reference',
|
|
58
|
-
'other',
|
|
59
|
-
]);
|
|
60
|
-
exports.sourceIntentConfidenceSchema = v3_1.z.enum(['low', 'medium', 'high']);
|
|
61
|
-
/**
|
|
62
|
-
* One classified source in the agent's `sourceIntent`. Identified by exactly
|
|
63
|
-
* one of:
|
|
64
|
-
* - `url`: an inspiration URL the user provided
|
|
65
|
-
* - `imageRef`: a stable per-session reference of the form `image:<index>`
|
|
66
|
-
* pointing at an image-kind entry in `sourceArtifacts` (visualBrief or
|
|
67
|
-
* screenshotNotes). Indexed over image-kind artifacts only, so the ref
|
|
68
|
-
* survives reordering of text-only artifacts.
|
|
69
|
-
*/
|
|
70
|
-
exports.sourceIntentEntrySchema = v3_1.z
|
|
71
|
-
.object({
|
|
72
|
-
url: v3_1.z.string().min(1).max(SOURCE_URL_MAX_LENGTH).optional(),
|
|
73
|
-
imageRef: v3_1.z.string().min(1).max(64).optional(),
|
|
74
|
-
role: exports.sourceIntentRoleSchema,
|
|
75
|
-
confidence: exports.sourceIntentConfidenceSchema,
|
|
76
|
-
reason: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH),
|
|
77
|
-
})
|
|
78
|
-
.refine((entry) => Boolean(entry.url) !== Boolean(entry.imageRef), {
|
|
79
|
-
message: 'sourceIntent entry must specify exactly one of `url` or `imageRef`.',
|
|
80
|
-
});
|
|
81
|
-
exports.sourceIntentArtifactSchema = v3_1.z.object({
|
|
82
|
-
sources: v3_1.z.array(exports.sourceIntentEntrySchema).min(1).max(SOURCE_LIST_MAX_ITEMS),
|
|
83
|
-
});
|
|
49
|
+
const USER_CONTEXT_LABEL_MAX_LENGTH = 80;
|
|
50
|
+
const USER_CONTEXT_TEXT_MAX_LENGTH = 50_000;
|
|
51
|
+
const USER_CONTEXT_PATH_MAX_LENGTH = 2_048;
|
|
52
|
+
const USER_CONTEXT_UPLOAD_DATA_URL_MAX_LENGTH = 70_000_000;
|
|
53
|
+
// --- Design context --------------------------------------------------------
|
|
84
54
|
exports.designContextEntrySchema = v3_1.z.discriminatedUnion('kind', [
|
|
85
55
|
v3_1.z.object({
|
|
86
56
|
kind: v3_1.z.literal('slug'),
|
|
@@ -92,69 +62,232 @@ exports.designContextEntrySchema = v3_1.z.discriminatedUnion('kind', [
|
|
|
92
62
|
label: v3_1.z.string().min(1).max(60),
|
|
93
63
|
}),
|
|
94
64
|
]);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
'motionBrief',
|
|
101
|
-
]);
|
|
102
|
-
exports.sourceArtifactInputSchema = v3_1.z.object({
|
|
103
|
-
kind: exports.sourceArtifactKindSchema,
|
|
104
|
-
label: v3_1.z.string().min(1).max(SOURCE_ARTIFACT_LABEL_MAX_LENGTH),
|
|
105
|
-
content: v3_1.z.string().min(1).max(SOURCE_ARTIFACT_CONTENT_MAX_LENGTH),
|
|
106
|
-
});
|
|
65
|
+
/**
|
|
66
|
+
* Role a raw source plays in `design_system` action metadata. Retained because
|
|
67
|
+
* `rivetMetadataSchema` references it; the legacy summary-first
|
|
68
|
+
* `sourceContext`/`sourceIntent` intake shapes that also used it are gone.
|
|
69
|
+
*/
|
|
107
70
|
exports.sourceRoleSchema = v3_1.z.enum([
|
|
108
71
|
'primary',
|
|
109
72
|
'inspiration',
|
|
110
73
|
'competitor',
|
|
111
74
|
]);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
.min(1)
|
|
125
|
-
.max(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
.
|
|
129
|
-
.max(
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
.max(
|
|
138
|
-
.optional(),
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
.
|
|
75
|
+
// --- Native user context ---------------------------------------------------
|
|
76
|
+
exports.rawUserContextInputSchema = v3_1.z.discriminatedUnion('transport', [
|
|
77
|
+
v3_1.z.object({
|
|
78
|
+
transport: v3_1.z.literal('url'),
|
|
79
|
+
url: v3_1.z.string().min(1).max(SOURCE_URL_MAX_LENGTH),
|
|
80
|
+
label: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
81
|
+
userIntent: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
82
|
+
}),
|
|
83
|
+
v3_1.z.object({
|
|
84
|
+
transport: v3_1.z.literal('file_path'),
|
|
85
|
+
path: v3_1.z.string().min(1).max(USER_CONTEXT_PATH_MAX_LENGTH),
|
|
86
|
+
mimeType: v3_1.z.string().min(1).max(120).optional(),
|
|
87
|
+
label: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
88
|
+
userIntent: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
89
|
+
}),
|
|
90
|
+
v3_1.z.object({
|
|
91
|
+
transport: v3_1.z.literal('upload'),
|
|
92
|
+
dataUrl: v3_1.z.string().min(1).max(USER_CONTEXT_UPLOAD_DATA_URL_MAX_LENGTH),
|
|
93
|
+
filename: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
94
|
+
label: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
95
|
+
userIntent: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
96
|
+
}),
|
|
97
|
+
v3_1.z.object({
|
|
98
|
+
transport: v3_1.z.literal('directory_path'),
|
|
99
|
+
path: v3_1.z.string().min(1).max(USER_CONTEXT_PATH_MAX_LENGTH),
|
|
100
|
+
label: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
101
|
+
userIntent: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
102
|
+
}),
|
|
103
|
+
v3_1.z.object({
|
|
104
|
+
transport: v3_1.z.literal('text'),
|
|
105
|
+
content: v3_1.z.string().min(1).max(USER_CONTEXT_TEXT_MAX_LENGTH),
|
|
106
|
+
label: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
107
|
+
userIntent: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
108
|
+
}),
|
|
109
|
+
]);
|
|
110
|
+
exports.rawUserContextSourceSchema = v3_1.z.discriminatedUnion('transport', [
|
|
111
|
+
v3_1.z.object({
|
|
112
|
+
id: v3_1.z.string().min(1),
|
|
113
|
+
transport: v3_1.z.literal('prompt'),
|
|
114
|
+
path: v3_1.z.string().min(1).max(USER_CONTEXT_PATH_MAX_LENGTH),
|
|
115
|
+
}),
|
|
116
|
+
v3_1.z.object({
|
|
117
|
+
id: v3_1.z.string().min(1),
|
|
118
|
+
transport: v3_1.z.literal('url'),
|
|
119
|
+
url: v3_1.z.string().min(1).max(SOURCE_URL_MAX_LENGTH),
|
|
120
|
+
label: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
121
|
+
userIntent: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
122
|
+
}),
|
|
123
|
+
v3_1.z.object({
|
|
124
|
+
id: v3_1.z.string().min(1),
|
|
125
|
+
transport: v3_1.z.literal('file'),
|
|
126
|
+
path: v3_1.z.string().min(1).max(USER_CONTEXT_PATH_MAX_LENGTH),
|
|
127
|
+
mimeType: v3_1.z.string().min(1).max(120).optional(),
|
|
128
|
+
originalFilename: v3_1.z
|
|
129
|
+
.string()
|
|
130
|
+
.min(1)
|
|
131
|
+
.max(USER_CONTEXT_LABEL_MAX_LENGTH)
|
|
132
|
+
.optional(),
|
|
133
|
+
label: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
134
|
+
userIntent: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
135
|
+
}),
|
|
136
|
+
v3_1.z.object({
|
|
137
|
+
id: v3_1.z.string().min(1),
|
|
138
|
+
transport: v3_1.z.literal('directory'),
|
|
139
|
+
path: v3_1.z.string().min(1).max(USER_CONTEXT_PATH_MAX_LENGTH),
|
|
140
|
+
label: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
141
|
+
userIntent: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
142
|
+
}),
|
|
143
|
+
v3_1.z.object({
|
|
144
|
+
id: v3_1.z.string().min(1),
|
|
145
|
+
transport: v3_1.z.literal('text'),
|
|
146
|
+
path: v3_1.z.string().min(1).max(USER_CONTEXT_PATH_MAX_LENGTH),
|
|
147
|
+
label: v3_1.z.string().min(1).max(USER_CONTEXT_LABEL_MAX_LENGTH).optional(),
|
|
148
|
+
userIntent: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
149
|
+
}),
|
|
150
|
+
]);
|
|
151
|
+
exports.storedUserContextSourceRecordSchema = v3_1.z.object({
|
|
152
|
+
source: exports.rawUserContextSourceSchema,
|
|
153
|
+
storage: v3_1.z
|
|
154
|
+
.object({
|
|
155
|
+
sizeBytes: v3_1.z.number().int().nonnegative().optional(),
|
|
156
|
+
sha256: v3_1.z.string().min(1).optional(),
|
|
157
|
+
originalFilename: v3_1.z.string().min(1).optional(),
|
|
158
|
+
})
|
|
142
159
|
.optional(),
|
|
143
160
|
});
|
|
144
|
-
exports.
|
|
145
|
-
|
|
146
|
-
|
|
161
|
+
exports.rivetContextActionKindSchema = v3_1.z.enum([
|
|
162
|
+
'extract_design_system',
|
|
163
|
+
'describe_motion',
|
|
164
|
+
]);
|
|
165
|
+
exports.rivetContextActionSchema = v3_1.z.object({
|
|
166
|
+
id: v3_1.z.string().min(1),
|
|
167
|
+
kind: exports.rivetContextActionKindSchema,
|
|
168
|
+
sourceIds: v3_1.z.array(v3_1.z.string().min(1)).max(SOURCE_LIST_MAX_ITEMS),
|
|
169
|
+
reason: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH),
|
|
170
|
+
outputMetadataIds: v3_1.z
|
|
171
|
+
.array(v3_1.z.string().min(1))
|
|
147
172
|
.max(SOURCE_LIST_MAX_ITEMS)
|
|
148
173
|
.optional(),
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
174
|
+
});
|
|
175
|
+
exports.sourcePlanActionOptionSchema = v3_1.z.object({
|
|
176
|
+
kind: exports.rivetContextActionKindSchema,
|
|
177
|
+
sourceTransports: v3_1.z
|
|
178
|
+
.array(v3_1.z.enum(['prompt', 'url', 'file', 'directory', 'text']))
|
|
179
|
+
.min(1)
|
|
180
|
+
.max(SOURCE_LIST_MAX_ITEMS),
|
|
181
|
+
capability: v3_1.z.enum(['extract_inspiration_context', 'rivet_describe_motion']),
|
|
182
|
+
produces: v3_1.z.enum(['design_system', 'motion_guidance']),
|
|
183
|
+
instructions: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH),
|
|
184
|
+
});
|
|
185
|
+
const rivetMetadataBaseSchema = v3_1.z.object({
|
|
186
|
+
id: v3_1.z.string().min(1),
|
|
187
|
+
sourceIds: v3_1.z.array(v3_1.z.string().min(1)).max(SOURCE_LIST_MAX_ITEMS),
|
|
188
|
+
actionId: v3_1.z.string().min(1).optional(),
|
|
189
|
+
producedBy: v3_1.z.enum(['rivet', 'agent', 'browser', 'skill']),
|
|
190
|
+
path: v3_1.z.string().min(1).max(USER_CONTEXT_PATH_MAX_LENGTH).optional(),
|
|
191
|
+
warnings: v3_1.z
|
|
192
|
+
.array(v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH))
|
|
152
193
|
.max(SOURCE_LIST_MAX_ITEMS)
|
|
153
194
|
.optional(),
|
|
154
|
-
artifact: exports.sourceContextArtifactSchema.optional(),
|
|
155
|
-
sourceIntent: exports.sourceIntentArtifactSchema.optional(),
|
|
156
|
-
designDecision: v3_1.z.enum(['let_rivet_choose', 'go_custom']).optional(),
|
|
157
195
|
});
|
|
196
|
+
exports.rivetMetadataSchema = v3_1.z.discriminatedUnion('kind', [
|
|
197
|
+
rivetMetadataBaseSchema.extend({
|
|
198
|
+
kind: v3_1.z.literal('design_system'),
|
|
199
|
+
data: v3_1.z.object({
|
|
200
|
+
designMarkdown: v3_1.z
|
|
201
|
+
.string()
|
|
202
|
+
.min(1)
|
|
203
|
+
.max(DESIGN_CONTEXT_MARKDOWN_MAX_LENGTH)
|
|
204
|
+
.optional(),
|
|
205
|
+
/**
|
|
206
|
+
* Provenance for the design system: `captured` = derived from rendered
|
|
207
|
+
* browser evidence (e.g. `capture_design_evidence`); `partial` = some
|
|
208
|
+
* evidence, gaps filled by inference; `inferred` = no rendered evidence
|
|
209
|
+
* (static fetch / native inspection only). Keeps DESIGN.md honest about
|
|
210
|
+
* extracted-vs-guessed values.
|
|
211
|
+
*/
|
|
212
|
+
evidenceStatus: v3_1.z.enum(['captured', 'partial', 'inferred']).optional(),
|
|
213
|
+
sourceFindings: v3_1.z
|
|
214
|
+
.array(v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH))
|
|
215
|
+
.min(1)
|
|
216
|
+
.max(SOURCE_LIST_MAX_ITEMS),
|
|
217
|
+
sectionInventory: v3_1.z
|
|
218
|
+
.array(v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH))
|
|
219
|
+
.min(1)
|
|
220
|
+
.max(SOURCE_LIST_MAX_ITEMS),
|
|
221
|
+
visualObservations: v3_1.z
|
|
222
|
+
.array(v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH))
|
|
223
|
+
.min(1)
|
|
224
|
+
.max(SOURCE_LIST_MAX_ITEMS),
|
|
225
|
+
sourceRoles: v3_1.z
|
|
226
|
+
.array(v3_1.z.object({
|
|
227
|
+
sourceId: v3_1.z.string().min(1),
|
|
228
|
+
role: exports.sourceRoleSchema,
|
|
229
|
+
rationale: v3_1.z
|
|
230
|
+
.string()
|
|
231
|
+
.min(1)
|
|
232
|
+
.max(SOURCE_FINDING_MAX_LENGTH)
|
|
233
|
+
.optional(),
|
|
234
|
+
}))
|
|
235
|
+
.min(1)
|
|
236
|
+
.max(SOURCE_LIST_MAX_ITEMS),
|
|
237
|
+
qualityBar: v3_1.z
|
|
238
|
+
.array(v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH))
|
|
239
|
+
.min(1)
|
|
240
|
+
.max(SOURCE_LIST_MAX_ITEMS),
|
|
241
|
+
risks: v3_1.z
|
|
242
|
+
.array(v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH))
|
|
243
|
+
.max(SOURCE_LIST_MAX_ITEMS)
|
|
244
|
+
.optional(),
|
|
245
|
+
}),
|
|
246
|
+
}),
|
|
247
|
+
rivetMetadataBaseSchema.extend({
|
|
248
|
+
kind: v3_1.z.literal('motion_guidance'),
|
|
249
|
+
data: v3_1.z.object({
|
|
250
|
+
motionMarkdown: v3_1.z
|
|
251
|
+
.string()
|
|
252
|
+
.min(1)
|
|
253
|
+
.max(DESIGN_CONTEXT_MARKDOWN_MAX_LENGTH)
|
|
254
|
+
.optional(),
|
|
255
|
+
notes: v3_1.z
|
|
256
|
+
.array(v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH))
|
|
257
|
+
.min(1)
|
|
258
|
+
.max(SOURCE_LIST_MAX_ITEMS),
|
|
259
|
+
timings: v3_1.z
|
|
260
|
+
.array(v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH))
|
|
261
|
+
.max(SOURCE_LIST_MAX_ITEMS)
|
|
262
|
+
.optional(),
|
|
263
|
+
}),
|
|
264
|
+
}),
|
|
265
|
+
]);
|
|
266
|
+
exports.variantContextBindingSchema = v3_1.z.discriminatedUnion('kind', [
|
|
267
|
+
v3_1.z.object({
|
|
268
|
+
kind: v3_1.z.literal('global'),
|
|
269
|
+
sourceIds: v3_1.z.array(v3_1.z.string().min(1)).max(SOURCE_LIST_MAX_ITEMS),
|
|
270
|
+
actionIds: v3_1.z.array(v3_1.z.string().min(1)).max(SOURCE_LIST_MAX_ITEMS),
|
|
271
|
+
metadataIds: v3_1.z
|
|
272
|
+
.array(v3_1.z.string().min(1))
|
|
273
|
+
.max(SOURCE_LIST_MAX_ITEMS)
|
|
274
|
+
.optional(),
|
|
275
|
+
}),
|
|
276
|
+
v3_1.z.object({
|
|
277
|
+
kind: v3_1.z.literal('slot'),
|
|
278
|
+
slotIndex: v3_1.z
|
|
279
|
+
.number()
|
|
280
|
+
.int()
|
|
281
|
+
.nonnegative()
|
|
282
|
+
.max(SOURCE_LIST_MAX_ITEMS - 1),
|
|
283
|
+
sourceIds: v3_1.z.array(v3_1.z.string().min(1)).max(SOURCE_LIST_MAX_ITEMS),
|
|
284
|
+
actionIds: v3_1.z.array(v3_1.z.string().min(1)).max(SOURCE_LIST_MAX_ITEMS),
|
|
285
|
+
metadataIds: v3_1.z
|
|
286
|
+
.array(v3_1.z.string().min(1))
|
|
287
|
+
.max(SOURCE_LIST_MAX_ITEMS)
|
|
288
|
+
.optional(),
|
|
289
|
+
}),
|
|
290
|
+
]);
|
|
158
291
|
// --- Execution capability planning ---------------------------------------
|
|
159
292
|
exports.executionModeSchema = v3_1.z.enum(['static_preview', 'vite_app']);
|
|
160
293
|
exports.executionConfidenceSchema = v3_1.z.enum(['low', 'medium', 'high']);
|
|
@@ -184,6 +317,19 @@ exports.executionCapabilityPlanSchema = v3_1.z.object({
|
|
|
184
317
|
.optional(),
|
|
185
318
|
userQuestion: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
186
319
|
});
|
|
320
|
+
exports.variantContextBundleSchema = v3_1.z.object({
|
|
321
|
+
version: v3_1.z.literal(1),
|
|
322
|
+
sessionId: v3_1.z.string().min(1),
|
|
323
|
+
contextBundlePath: v3_1.z.string().min(1).max(USER_CONTEXT_PATH_MAX_LENGTH),
|
|
324
|
+
userContext: v3_1.z
|
|
325
|
+
.array(exports.rawUserContextSourceSchema)
|
|
326
|
+
.min(1)
|
|
327
|
+
.max(SOURCE_LIST_MAX_ITEMS + 1),
|
|
328
|
+
rivetActions: v3_1.z.array(exports.rivetContextActionSchema).max(SOURCE_LIST_MAX_ITEMS),
|
|
329
|
+
rivetMetadata: v3_1.z.array(exports.rivetMetadataSchema).max(SOURCE_LIST_MAX_ITEMS),
|
|
330
|
+
bindings: v3_1.z.array(exports.variantContextBindingSchema).optional(),
|
|
331
|
+
executionPlan: exports.executionCapabilityPlanSchema.optional(),
|
|
332
|
+
});
|
|
187
333
|
exports.projectContextExisting = v3_1.z.object({
|
|
188
334
|
kind: v3_1.z.literal('existing'),
|
|
189
335
|
/** Absolute project path requested for this existing-project run. Present
|
|
@@ -193,7 +339,7 @@ exports.projectContextExisting = v3_1.z.object({
|
|
|
193
339
|
* project runs with visual references. Surfaced as DesignMD artifacts and
|
|
194
340
|
* available to QA gates, but does not trigger a source-plan stage. */
|
|
195
341
|
designContext: v3_1.z.array(exports.designContextEntrySchema).optional(),
|
|
196
|
-
|
|
342
|
+
variantContext: exports.variantContextBundleSchema.optional(),
|
|
197
343
|
});
|
|
198
344
|
exports.projectContextFresh = v3_1.z.object({
|
|
199
345
|
kind: v3_1.z.literal('fresh'),
|
|
@@ -214,7 +360,7 @@ exports.projectContextFresh = v3_1.z.object({
|
|
|
214
360
|
* markdown; markdown entries are written directly as `DESIGN.md`. The
|
|
215
361
|
* order matches code-gen variant slot order. */
|
|
216
362
|
designContext: v3_1.z.array(exports.designContextEntrySchema).optional(),
|
|
217
|
-
|
|
363
|
+
variantContext: exports.variantContextBundleSchema.optional(),
|
|
218
364
|
/** Agent-supplied execution plan from `report_source_plan`. Drives the
|
|
219
365
|
* generation routing decision at approve() time: `static_preview` keeps
|
|
220
366
|
* the lightweight HTML-only path; `vite_app` provisions a real Vite
|
|
@@ -225,6 +371,16 @@ exports.projectContextSchema = v3_1.z.discriminatedUnion('kind', [
|
|
|
225
371
|
exports.projectContextExisting,
|
|
226
372
|
exports.projectContextFresh,
|
|
227
373
|
]);
|
|
374
|
+
const projectContextExistingInput = exports.projectContextExisting.omit({
|
|
375
|
+
variantContext: true,
|
|
376
|
+
});
|
|
377
|
+
const projectContextFreshInput = exports.projectContextFresh.omit({
|
|
378
|
+
variantContext: true,
|
|
379
|
+
});
|
|
380
|
+
exports.projectContextInputSchema = v3_1.z.discriminatedUnion('kind', [
|
|
381
|
+
projectContextExistingInput,
|
|
382
|
+
projectContextFreshInput,
|
|
383
|
+
]);
|
|
228
384
|
// --- Variant session artifacts -------------------------------------------
|
|
229
385
|
/**
|
|
230
386
|
* Kinds of supporting artifact a variants session can surface to the UI.
|
|
@@ -264,12 +420,21 @@ exports.briefSchema = v3_1.z.object({
|
|
|
264
420
|
visualReferenceUrl: v3_1.z
|
|
265
421
|
.string()
|
|
266
422
|
.url()
|
|
267
|
-
.refine((url) => (0,
|
|
423
|
+
.refine((url) => (0, sourceContext_1.validateInspirationUrl)(url).ok, {
|
|
268
424
|
message: 'visualReferenceUrl must be an HTTP(S) URL that does not target local or private networks',
|
|
269
425
|
})
|
|
270
426
|
.optional()
|
|
271
427
|
.describe('Optional HTTP(S) inspiration URL. Subject to SSRF guard — must not resolve to local or private network targets.'),
|
|
272
428
|
});
|
|
429
|
+
exports.variantWorkItemContextSchema = v3_1.z.object({
|
|
430
|
+
contextBundlePath: v3_1.z.string().min(1).max(USER_CONTEXT_PATH_MAX_LENGTH),
|
|
431
|
+
userContext: v3_1.z
|
|
432
|
+
.array(exports.rawUserContextSourceSchema)
|
|
433
|
+
.max(SOURCE_LIST_MAX_ITEMS + 1),
|
|
434
|
+
rivetMetadata: v3_1.z.array(exports.rivetMetadataSchema).max(SOURCE_LIST_MAX_ITEMS),
|
|
435
|
+
brief: exports.briefSchema,
|
|
436
|
+
executionMode: exports.executionModeSchema.optional(),
|
|
437
|
+
});
|
|
273
438
|
// --- Tool I/O — propose_variants ------------------------------------------
|
|
274
439
|
/**
|
|
275
440
|
* Inclusive bounds for the number of variants a single propose_variants run
|
|
@@ -298,7 +463,7 @@ exports.proposeVariantsInput = {
|
|
|
298
463
|
.max(exports.VARIANT_COUNT_MAX)
|
|
299
464
|
.optional(),
|
|
300
465
|
target: exports.targetSchema.optional(),
|
|
301
|
-
projectContext: exports.
|
|
466
|
+
projectContext: exports.projectContextInputSchema.optional(),
|
|
302
467
|
runLabel: exports.runLabelSchema,
|
|
303
468
|
};
|
|
304
469
|
// --- Tool I/O — report_variant_briefs -------------------------------------
|
|
@@ -308,38 +473,25 @@ exports.reportVariantBriefsInput = {
|
|
|
308
473
|
attempt: v3_1.z.number().int().nonnegative(),
|
|
309
474
|
leaseId: v3_1.z.string().optional(),
|
|
310
475
|
briefs: v3_1.z.array(exports.briefSchema).min(1).max(8),
|
|
476
|
+
bindings: v3_1.z.array(exports.variantContextBindingSchema).max(8).optional(),
|
|
311
477
|
};
|
|
312
478
|
// --- Tool I/O — report_source_plan ----------------------------------------
|
|
313
479
|
/**
|
|
314
|
-
*
|
|
315
|
-
*
|
|
316
|
-
*
|
|
317
|
-
*
|
|
318
|
-
*
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
imageRef: v3_1.z.string().min(1).max(64).optional(),
|
|
324
|
-
label: v3_1.z.string().min(1).max(60),
|
|
325
|
-
markdown: v3_1.z.string().min(1).max(DESIGN_CONTEXT_MARKDOWN_MAX_LENGTH),
|
|
326
|
-
})
|
|
327
|
-
.refine((entry) => Boolean(entry.url) !== Boolean(entry.imageRef), {
|
|
328
|
-
message: 'designContexts entry must specify exactly one of `url` or `imageRef`.',
|
|
329
|
-
});
|
|
330
|
-
/**
|
|
331
|
-
* Consolidated planning artifact reported by the agent in a single tool call.
|
|
332
|
-
* Combines URL/role classification, research findings, browser-extracted
|
|
333
|
-
* DESIGN.md per design_source URL, and the static_preview vs vite_app
|
|
334
|
-
* execution decision. Replaces the prior `report_source_intent` +
|
|
335
|
-
* `report_source_context` round-trips so source-grounded sessions only need
|
|
336
|
-
* one planning hop before briefs.
|
|
480
|
+
* Canonical planning artifact reported by the agent in a single tool call.
|
|
481
|
+
* The agent inspects raw `userContext` natively, selects Rivet actions from
|
|
482
|
+
* `input.availableActions`, and reports the additive metadata those actions
|
|
483
|
+
* produce plus the static_preview vs vite_app execution decision. `actions`
|
|
484
|
+
* and `metadata` are required (each reported action must produce its matching
|
|
485
|
+
* metadata kind); `bindings` is optional and scopes context per variant slot.
|
|
486
|
+
* The legacy summary-first fields (`sourceIntent`, `sourceContext`,
|
|
487
|
+
* `designContexts`) are intentionally absent — derived guidance now comes
|
|
488
|
+
* from action metadata.
|
|
337
489
|
*/
|
|
338
490
|
exports.sourcePlanArtifactSchema = v3_1.z.object({
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
.array(
|
|
491
|
+
actions: v3_1.z.array(exports.rivetContextActionSchema).max(SOURCE_LIST_MAX_ITEMS),
|
|
492
|
+
metadata: v3_1.z.array(exports.rivetMetadataSchema).max(SOURCE_LIST_MAX_ITEMS),
|
|
493
|
+
bindings: v3_1.z
|
|
494
|
+
.array(exports.variantContextBindingSchema)
|
|
343
495
|
.max(SOURCE_LIST_MAX_ITEMS)
|
|
344
496
|
.optional(),
|
|
345
497
|
executionPlan: exports.executionCapabilityPlanSchema,
|
|
@@ -415,32 +567,6 @@ exports.reportVariantCompleteInput = {
|
|
|
415
567
|
tokensOut: v3_1.z.number().int().nonnegative().optional(),
|
|
416
568
|
model: v3_1.z.string().optional(),
|
|
417
569
|
};
|
|
418
|
-
// --- Tool I/O — extract_inspiration_context ------------------------------
|
|
419
|
-
/**
|
|
420
|
-
* Stateless inspiration-extraction kickoff. Agents call this before
|
|
421
|
-
* `start_variants(mode='zero_to_one')` when the user provides inspiration
|
|
422
|
-
* URLs or other source artifacts, then pass the returned `designContext`
|
|
423
|
-
* (and optional `sourceContext` echo) into `start_variants`.
|
|
424
|
-
*/
|
|
425
|
-
exports.extractInspirationContextInput = {
|
|
426
|
-
prompt: v3_1.z.string().min(1),
|
|
427
|
-
count: v3_1.z.number().int().min(exports.VARIANT_COUNT_MIN).max(exports.VARIANT_COUNT_MAX),
|
|
428
|
-
urls: v3_1.z
|
|
429
|
-
.array(v3_1.z.string().min(1).max(SOURCE_URL_MAX_LENGTH))
|
|
430
|
-
.max(SOURCE_LIST_MAX_ITEMS)
|
|
431
|
-
.optional(),
|
|
432
|
-
preserveBrand: v3_1.z.boolean().optional(),
|
|
433
|
-
sourceArtifacts: v3_1.z
|
|
434
|
-
.array(exports.sourceArtifactInputSchema)
|
|
435
|
-
.max(SOURCE_LIST_MAX_ITEMS)
|
|
436
|
-
.optional(),
|
|
437
|
-
/** When true, bypass any cache entry and force a fresh fetch + extract. */
|
|
438
|
-
forceRefresh: v3_1.z.boolean().optional(),
|
|
439
|
-
/** Caller-supplied correlation id, echoed into telemetry so this stateless
|
|
440
|
-
* extraction can be tied to the subsequent `start_variants` call (which
|
|
441
|
-
* accepts the same field) even though no session exists yet. */
|
|
442
|
-
clientRequestId: v3_1.z.string().optional(),
|
|
443
|
-
};
|
|
444
570
|
// --- Tool I/O — cancel_variants -------------------------------------------
|
|
445
571
|
exports.cancelVariantsInput = {
|
|
446
572
|
sessionId: v3_1.z.string().min(1),
|
|
@@ -496,14 +622,20 @@ exports.startVariantsInput = {
|
|
|
496
622
|
* server's current working directory. Used to detect framework and
|
|
497
623
|
* auto-open the visual editor without a separate detect_project call. */
|
|
498
624
|
projectPath: v3_1.z.string().optional(),
|
|
499
|
-
/**
|
|
500
|
-
*
|
|
501
|
-
*
|
|
625
|
+
/** Per-variant-slot design context (slug entries resolve bundled catalog
|
|
626
|
+
* markdown; markdown entries are written directly as DESIGN.md). Slot order
|
|
627
|
+
* matches variant order. */
|
|
502
628
|
designContext: v3_1.z.array(exports.designContextEntrySchema).optional(),
|
|
503
|
-
/**
|
|
504
|
-
*
|
|
505
|
-
*
|
|
506
|
-
|
|
629
|
+
/** Optional raw sources attached by the caller — inspiration URLs, local
|
|
630
|
+
* images/videos, uploaded image data URLs, directories, or pasted text.
|
|
631
|
+
* Rivet stores these as
|
|
632
|
+
* read-only user context (the variant context bundle) and, for fresh
|
|
633
|
+
* source-grounded runs, lets source planning decide what metadata actions
|
|
634
|
+
* to derive. The sole source-intake field. */
|
|
635
|
+
userContext: v3_1.z
|
|
636
|
+
.array(exports.rawUserContextInputSchema)
|
|
637
|
+
.max(SOURCE_LIST_MAX_ITEMS)
|
|
638
|
+
.optional(),
|
|
507
639
|
clientRequestId: v3_1.z.string().optional(),
|
|
508
640
|
};
|
|
509
641
|
// --- Tool I/O — list_past_variants / get_variant ------------------------
|
|
@@ -520,6 +652,24 @@ exports.listPastVariantsInput = {
|
|
|
520
652
|
limit: v3_1.z.number().int().min(1).max(500).optional(),
|
|
521
653
|
status: exports.variantHistoryStatusSchema.optional(),
|
|
522
654
|
};
|
|
655
|
+
// --- Tool I/O — capture_design_evidence ----------------------------------
|
|
656
|
+
// Renders a reference URL on a remote browser (via the proxy / browser agent)
|
|
657
|
+
// and returns DESIGN.md-shaped markdown derived from rendered DOM + resolved
|
|
658
|
+
// computed styles. The source-plan agent calls this for URL sources before
|
|
659
|
+
// reporting design_system, so the system is extracted rather than inferred.
|
|
660
|
+
exports.captureDesignEvidenceInput = {
|
|
661
|
+
/** Correlation only; safe to omit. */
|
|
662
|
+
sessionId: v3_1.z.string().min(1).optional(),
|
|
663
|
+
/** The reference URL to render. */
|
|
664
|
+
url: v3_1.z.string().url(),
|
|
665
|
+
/** Optional viewport override; defaults to desktop 1440x1000. */
|
|
666
|
+
viewport: v3_1.z
|
|
667
|
+
.object({
|
|
668
|
+
width: v3_1.z.number().int().min(320).max(3840),
|
|
669
|
+
height: v3_1.z.number().int().min(320).max(2160),
|
|
670
|
+
})
|
|
671
|
+
.optional(),
|
|
672
|
+
};
|
|
523
673
|
exports.getVariantInput = {
|
|
524
674
|
projectPath: v3_1.z.string().optional(),
|
|
525
675
|
sessionId: v3_1.z.string().min(1),
|