rivet-design 0.10.8 → 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/index.d.ts +47 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +277 -123
- package/dist/index.js.map +1 -1
- package/dist/mcp/agent-variants/SessionStore.d.ts +28 -4
- package/dist/mcp/agent-variants/SessionStore.d.ts.map +1 -1
- package/dist/mcp/agent-variants/SessionStore.js +356 -123
- package/dist/mcp/agent-variants/SessionStore.js.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts +84 -4
- package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.js +744 -145
- package/dist/mcp/agent-variants/WorktreeOrchestrator.js.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.d.ts +8 -3
- package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.d.ts.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.js +8 -3
- package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.js.map +1 -1
- package/dist/mcp/agent-variants/contracts.d.ts +7984 -1625
- package/dist/mcp/agent-variants/contracts.d.ts.map +1 -1
- package/dist/mcp/agent-variants/contracts.js +312 -154
- 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 +167 -0
- package/dist/mcp/agent-variants/designCritique.d.ts.map +1 -0
- package/dist/mcp/agent-variants/designCritique.js +717 -0
- package/dist/mcp/agent-variants/designCritique.js.map +1 -0
- package/dist/mcp/agent-variants/diffQa.d.ts +7 -0
- package/dist/mcp/agent-variants/diffQa.d.ts.map +1 -0
- package/dist/mcp/agent-variants/diffQa.js +67 -0
- package/dist/mcp/agent-variants/diffQa.js.map +1 -0
- package/dist/mcp/agent-variants/index.d.ts +3 -3
- package/dist/mcp/agent-variants/index.d.ts.map +1 -1
- package/dist/mcp/agent-variants/index.js +2 -1
- package/dist/mcp/agent-variants/index.js.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 +140 -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 +216 -15
- 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/auth/httpOAuthProvider.d.ts +103 -0
- package/dist/mcp/auth/httpOAuthProvider.d.ts.map +1 -0
- package/dist/mcp/auth/httpOAuthProvider.js +454 -0
- package/dist/mcp/auth/httpOAuthProvider.js.map +1 -0
- package/dist/mcp/auth/tools.d.ts +2 -0
- package/dist/mcp/auth/tools.d.ts.map +1 -1
- package/dist/mcp/auth/tools.js +12 -5
- package/dist/mcp/auth/tools.js.map +1 -1
- package/dist/mcp/httpServer.d.ts +36 -0
- package/dist/mcp/httpServer.d.ts.map +1 -0
- package/dist/mcp/httpServer.js +307 -0
- package/dist/mcp/httpServer.js.map +1 -0
- package/dist/mcp/server.d.ts +17 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +41 -19
- 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 +5 -2
- package/dist/proxy-middleware/proxy-config.js.map +1 -1
- package/dist/routes/agentVariants.d.ts.map +1 -1
- package/dist/routes/agentVariants.js +6 -4
- package/dist/routes/agentVariants.js.map +1 -1
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +2 -1
- package/dist/routes/mcp.js.map +1 -1
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +13 -5
- package/dist/server.js.map +1 -1
- package/dist/services/AuthService.d.ts +1 -0
- package/dist/services/AuthService.d.ts.map +1 -1
- package/dist/services/AuthService.js +11 -1
- package/dist/services/AuthService.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/ConfigManager.d.ts +5 -0
- package/dist/services/ConfigManager.d.ts.map +1 -1
- package/dist/services/ConfigManager.js +25 -3
- package/dist/services/ConfigManager.js.map +1 -1
- package/dist/services/DevServerRuntimeService.d.ts +119 -0
- package/dist/services/DevServerRuntimeService.d.ts.map +1 -0
- package/dist/services/DevServerRuntimeService.js +657 -0
- package/dist/services/DevServerRuntimeService.js.map +1 -0
- package/dist/services/GatewayClient.d.ts +25 -0
- package/dist/services/GatewayClient.d.ts.map +1 -1
- package/dist/services/GatewayClient.js +70 -11
- package/dist/services/GatewayClient.js.map +1 -1
- 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/RequestAuthContext.d.ts +7 -1
- package/dist/services/RequestAuthContext.d.ts.map +1 -1
- package/dist/services/RequestAuthContext.js +15 -2
- package/dist/services/RequestAuthContext.js.map +1 -1
- package/dist/services/SessionBridgeService.d.ts +1 -0
- package/dist/services/SessionBridgeService.d.ts.map +1 -1
- package/dist/services/SessionBridgeService.js +16 -1
- package/dist/services/SessionBridgeService.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/services/createAgentVariantsOrchestrator.d.ts.map +1 -1
- package/dist/services/createAgentVariantsOrchestrator.js +7 -0
- package/dist/services/createAgentVariantsOrchestrator.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 +21 -15
- package/dist/utils/skills/shared-variants-protocol.js.map +1 -1
- package/dist/utils/variantSessionStart.d.ts +3 -0
- package/dist/utils/variantSessionStart.d.ts.map +1 -0
- package/dist/utils/variantSessionStart.js +7 -0
- package/dist/utils/variantSessionStart.js.map +1 -0
- package/package.json +2 -1
- package/src/ui/dist/assets/{main-WqlDU4Ou.js → main-Cw6Pd8ye.js} +204 -204
- 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-auZA25j4.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',
|
|
@@ -41,49 +41,16 @@ exports.WORK_ITEM_STATUSES = [
|
|
|
41
41
|
'cancelled',
|
|
42
42
|
];
|
|
43
43
|
// --- Project context ------------------------------------------------------
|
|
44
|
-
exports.projectContextExisting = v3_1.z.object({
|
|
45
|
-
kind: v3_1.z.literal('existing'),
|
|
46
|
-
});
|
|
47
44
|
const DESIGN_CONTEXT_MARKDOWN_MAX_LENGTH = 50_000;
|
|
48
45
|
const DESIGN_CONTEXT_SLUG_MAX_LENGTH = 120;
|
|
49
46
|
const SOURCE_URL_MAX_LENGTH = 2_048;
|
|
50
|
-
const SOURCE_ARTIFACT_LABEL_MAX_LENGTH = 80;
|
|
51
|
-
const SOURCE_ARTIFACT_CONTENT_MAX_LENGTH = 8_000;
|
|
52
47
|
const SOURCE_FINDING_MAX_LENGTH = 400;
|
|
53
48
|
const SOURCE_LIST_MAX_ITEMS = 24;
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
'asset_source',
|
|
60
|
-
'content_reference',
|
|
61
|
-
'other',
|
|
62
|
-
]);
|
|
63
|
-
exports.sourceIntentConfidenceSchema = v3_1.z.enum(['low', 'medium', 'high']);
|
|
64
|
-
/**
|
|
65
|
-
* One classified source in the agent's `sourceIntent`. Identified by exactly
|
|
66
|
-
* one of:
|
|
67
|
-
* - `url`: an inspiration URL the user provided
|
|
68
|
-
* - `imageRef`: a stable per-session reference of the form `image:<index>`
|
|
69
|
-
* pointing at an image-kind entry in `sourceArtifacts` (visualBrief or
|
|
70
|
-
* screenshotNotes). Indexed over image-kind artifacts only, so the ref
|
|
71
|
-
* survives reordering of text-only artifacts.
|
|
72
|
-
*/
|
|
73
|
-
exports.sourceIntentEntrySchema = v3_1.z
|
|
74
|
-
.object({
|
|
75
|
-
url: v3_1.z.string().min(1).max(SOURCE_URL_MAX_LENGTH).optional(),
|
|
76
|
-
imageRef: v3_1.z.string().min(1).max(64).optional(),
|
|
77
|
-
role: exports.sourceIntentRoleSchema,
|
|
78
|
-
confidence: exports.sourceIntentConfidenceSchema,
|
|
79
|
-
reason: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH),
|
|
80
|
-
})
|
|
81
|
-
.refine((entry) => Boolean(entry.url) !== Boolean(entry.imageRef), {
|
|
82
|
-
message: 'sourceIntent entry must specify exactly one of `url` or `imageRef`.',
|
|
83
|
-
});
|
|
84
|
-
exports.sourceIntentArtifactSchema = v3_1.z.object({
|
|
85
|
-
sources: v3_1.z.array(exports.sourceIntentEntrySchema).min(1).max(SOURCE_LIST_MAX_ITEMS),
|
|
86
|
-
});
|
|
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 --------------------------------------------------------
|
|
87
54
|
exports.designContextEntrySchema = v3_1.z.discriminatedUnion('kind', [
|
|
88
55
|
v3_1.z.object({
|
|
89
56
|
kind: v3_1.z.literal('slug'),
|
|
@@ -95,69 +62,232 @@ exports.designContextEntrySchema = v3_1.z.discriminatedUnion('kind', [
|
|
|
95
62
|
label: v3_1.z.string().min(1).max(60),
|
|
96
63
|
}),
|
|
97
64
|
]);
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
'motionBrief',
|
|
104
|
-
]);
|
|
105
|
-
exports.sourceArtifactInputSchema = v3_1.z.object({
|
|
106
|
-
kind: exports.sourceArtifactKindSchema,
|
|
107
|
-
label: v3_1.z.string().min(1).max(SOURCE_ARTIFACT_LABEL_MAX_LENGTH),
|
|
108
|
-
content: v3_1.z.string().min(1).max(SOURCE_ARTIFACT_CONTENT_MAX_LENGTH),
|
|
109
|
-
});
|
|
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
|
+
*/
|
|
110
70
|
exports.sourceRoleSchema = v3_1.z.enum([
|
|
111
71
|
'primary',
|
|
112
72
|
'inspiration',
|
|
113
73
|
'competitor',
|
|
114
74
|
]);
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
.min(1)
|
|
128
|
-
.max(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
.
|
|
132
|
-
.max(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
.max(
|
|
141
|
-
.optional(),
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
.
|
|
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
|
+
})
|
|
145
159
|
.optional(),
|
|
146
160
|
});
|
|
147
|
-
exports.
|
|
148
|
-
|
|
149
|
-
|
|
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))
|
|
150
172
|
.max(SOURCE_LIST_MAX_ITEMS)
|
|
151
173
|
.optional(),
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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))
|
|
155
193
|
.max(SOURCE_LIST_MAX_ITEMS)
|
|
156
194
|
.optional(),
|
|
157
|
-
artifact: exports.sourceContextArtifactSchema.optional(),
|
|
158
|
-
sourceIntent: exports.sourceIntentArtifactSchema.optional(),
|
|
159
|
-
designDecision: v3_1.z.enum(['let_rivet_choose', 'go_custom']).optional(),
|
|
160
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
|
+
]);
|
|
161
291
|
// --- Execution capability planning ---------------------------------------
|
|
162
292
|
exports.executionModeSchema = v3_1.z.enum(['static_preview', 'vite_app']);
|
|
163
293
|
exports.executionConfidenceSchema = v3_1.z.enum(['low', 'medium', 'high']);
|
|
@@ -187,6 +317,30 @@ exports.executionCapabilityPlanSchema = v3_1.z.object({
|
|
|
187
317
|
.optional(),
|
|
188
318
|
userQuestion: v3_1.z.string().min(1).max(SOURCE_FINDING_MAX_LENGTH).optional(),
|
|
189
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
|
+
});
|
|
333
|
+
exports.projectContextExisting = v3_1.z.object({
|
|
334
|
+
kind: v3_1.z.literal('existing'),
|
|
335
|
+
/** Absolute project path requested for this existing-project run. Present
|
|
336
|
+
* when callers target a nested project inside a larger git worktree. */
|
|
337
|
+
projectPath: v3_1.z.string().min(1).optional(),
|
|
338
|
+
/** Optional design context supplied by agents/benchmarks for existing
|
|
339
|
+
* project runs with visual references. Surfaced as DesignMD artifacts and
|
|
340
|
+
* available to QA gates, but does not trigger a source-plan stage. */
|
|
341
|
+
designContext: v3_1.z.array(exports.designContextEntrySchema).optional(),
|
|
342
|
+
variantContext: exports.variantContextBundleSchema.optional(),
|
|
343
|
+
});
|
|
190
344
|
exports.projectContextFresh = v3_1.z.object({
|
|
191
345
|
kind: v3_1.z.literal('fresh'),
|
|
192
346
|
/** Where the generated subproject's files live (e.g.
|
|
@@ -206,7 +360,7 @@ exports.projectContextFresh = v3_1.z.object({
|
|
|
206
360
|
* markdown; markdown entries are written directly as `DESIGN.md`. The
|
|
207
361
|
* order matches code-gen variant slot order. */
|
|
208
362
|
designContext: v3_1.z.array(exports.designContextEntrySchema).optional(),
|
|
209
|
-
|
|
363
|
+
variantContext: exports.variantContextBundleSchema.optional(),
|
|
210
364
|
/** Agent-supplied execution plan from `report_source_plan`. Drives the
|
|
211
365
|
* generation routing decision at approve() time: `static_preview` keeps
|
|
212
366
|
* the lightweight HTML-only path; `vite_app` provisions a real Vite
|
|
@@ -217,6 +371,16 @@ exports.projectContextSchema = v3_1.z.discriminatedUnion('kind', [
|
|
|
217
371
|
exports.projectContextExisting,
|
|
218
372
|
exports.projectContextFresh,
|
|
219
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
|
+
]);
|
|
220
384
|
// --- Variant session artifacts -------------------------------------------
|
|
221
385
|
/**
|
|
222
386
|
* Kinds of supporting artifact a variants session can surface to the UI.
|
|
@@ -256,12 +420,21 @@ exports.briefSchema = v3_1.z.object({
|
|
|
256
420
|
visualReferenceUrl: v3_1.z
|
|
257
421
|
.string()
|
|
258
422
|
.url()
|
|
259
|
-
.refine((url) => (0,
|
|
423
|
+
.refine((url) => (0, sourceContext_1.validateInspirationUrl)(url).ok, {
|
|
260
424
|
message: 'visualReferenceUrl must be an HTTP(S) URL that does not target local or private networks',
|
|
261
425
|
})
|
|
262
426
|
.optional()
|
|
263
427
|
.describe('Optional HTTP(S) inspiration URL. Subject to SSRF guard — must not resolve to local or private network targets.'),
|
|
264
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
|
+
});
|
|
265
438
|
// --- Tool I/O — propose_variants ------------------------------------------
|
|
266
439
|
/**
|
|
267
440
|
* Inclusive bounds for the number of variants a single propose_variants run
|
|
@@ -290,7 +463,7 @@ exports.proposeVariantsInput = {
|
|
|
290
463
|
.max(exports.VARIANT_COUNT_MAX)
|
|
291
464
|
.optional(),
|
|
292
465
|
target: exports.targetSchema.optional(),
|
|
293
|
-
projectContext: exports.
|
|
466
|
+
projectContext: exports.projectContextInputSchema.optional(),
|
|
294
467
|
runLabel: exports.runLabelSchema,
|
|
295
468
|
};
|
|
296
469
|
// --- Tool I/O — report_variant_briefs -------------------------------------
|
|
@@ -300,38 +473,25 @@ exports.reportVariantBriefsInput = {
|
|
|
300
473
|
attempt: v3_1.z.number().int().nonnegative(),
|
|
301
474
|
leaseId: v3_1.z.string().optional(),
|
|
302
475
|
briefs: v3_1.z.array(exports.briefSchema).min(1).max(8),
|
|
476
|
+
bindings: v3_1.z.array(exports.variantContextBindingSchema).max(8).optional(),
|
|
303
477
|
};
|
|
304
478
|
// --- Tool I/O — report_source_plan ----------------------------------------
|
|
305
479
|
/**
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
310
|
-
*
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
imageRef: v3_1.z.string().min(1).max(64).optional(),
|
|
316
|
-
label: v3_1.z.string().min(1).max(60),
|
|
317
|
-
markdown: v3_1.z.string().min(1).max(DESIGN_CONTEXT_MARKDOWN_MAX_LENGTH),
|
|
318
|
-
})
|
|
319
|
-
.refine((entry) => Boolean(entry.url) !== Boolean(entry.imageRef), {
|
|
320
|
-
message: 'designContexts entry must specify exactly one of `url` or `imageRef`.',
|
|
321
|
-
});
|
|
322
|
-
/**
|
|
323
|
-
* Consolidated planning artifact reported by the agent in a single tool call.
|
|
324
|
-
* Combines URL/role classification, research findings, browser-extracted
|
|
325
|
-
* DESIGN.md per design_source URL, and the static_preview vs vite_app
|
|
326
|
-
* execution decision. Replaces the prior `report_source_intent` +
|
|
327
|
-
* `report_source_context` round-trips so source-grounded sessions only need
|
|
328
|
-
* 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.
|
|
329
489
|
*/
|
|
330
490
|
exports.sourcePlanArtifactSchema = v3_1.z.object({
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
.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)
|
|
335
495
|
.max(SOURCE_LIST_MAX_ITEMS)
|
|
336
496
|
.optional(),
|
|
337
497
|
executionPlan: exports.executionCapabilityPlanSchema,
|
|
@@ -407,32 +567,6 @@ exports.reportVariantCompleteInput = {
|
|
|
407
567
|
tokensOut: v3_1.z.number().int().nonnegative().optional(),
|
|
408
568
|
model: v3_1.z.string().optional(),
|
|
409
569
|
};
|
|
410
|
-
// --- Tool I/O — extract_inspiration_context ------------------------------
|
|
411
|
-
/**
|
|
412
|
-
* Stateless inspiration-extraction kickoff. Agents call this before
|
|
413
|
-
* `start_variants(mode='zero_to_one')` when the user provides inspiration
|
|
414
|
-
* URLs or other source artifacts, then pass the returned `designContext`
|
|
415
|
-
* (and optional `sourceContext` echo) into `start_variants`.
|
|
416
|
-
*/
|
|
417
|
-
exports.extractInspirationContextInput = {
|
|
418
|
-
prompt: v3_1.z.string().min(1),
|
|
419
|
-
count: v3_1.z.number().int().min(exports.VARIANT_COUNT_MIN).max(exports.VARIANT_COUNT_MAX),
|
|
420
|
-
urls: v3_1.z
|
|
421
|
-
.array(v3_1.z.string().min(1).max(SOURCE_URL_MAX_LENGTH))
|
|
422
|
-
.max(SOURCE_LIST_MAX_ITEMS)
|
|
423
|
-
.optional(),
|
|
424
|
-
preserveBrand: v3_1.z.boolean().optional(),
|
|
425
|
-
sourceArtifacts: v3_1.z
|
|
426
|
-
.array(exports.sourceArtifactInputSchema)
|
|
427
|
-
.max(SOURCE_LIST_MAX_ITEMS)
|
|
428
|
-
.optional(),
|
|
429
|
-
/** When true, bypass any cache entry and force a fresh fetch + extract. */
|
|
430
|
-
forceRefresh: v3_1.z.boolean().optional(),
|
|
431
|
-
/** Caller-supplied correlation id, echoed into telemetry so this stateless
|
|
432
|
-
* extraction can be tied to the subsequent `start_variants` call (which
|
|
433
|
-
* accepts the same field) even though no session exists yet. */
|
|
434
|
-
clientRequestId: v3_1.z.string().optional(),
|
|
435
|
-
};
|
|
436
570
|
// --- Tool I/O — cancel_variants -------------------------------------------
|
|
437
571
|
exports.cancelVariantsInput = {
|
|
438
572
|
sessionId: v3_1.z.string().min(1),
|
|
@@ -488,14 +622,20 @@ exports.startVariantsInput = {
|
|
|
488
622
|
* server's current working directory. Used to detect framework and
|
|
489
623
|
* auto-open the visual editor without a separate detect_project call. */
|
|
490
624
|
projectPath: v3_1.z.string().optional(),
|
|
491
|
-
/**
|
|
492
|
-
*
|
|
493
|
-
*
|
|
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. */
|
|
494
628
|
designContext: v3_1.z.array(exports.designContextEntrySchema).optional(),
|
|
495
|
-
/**
|
|
496
|
-
*
|
|
497
|
-
*
|
|
498
|
-
|
|
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(),
|
|
499
639
|
clientRequestId: v3_1.z.string().optional(),
|
|
500
640
|
};
|
|
501
641
|
// --- Tool I/O — list_past_variants / get_variant ------------------------
|
|
@@ -512,6 +652,24 @@ exports.listPastVariantsInput = {
|
|
|
512
652
|
limit: v3_1.z.number().int().min(1).max(500).optional(),
|
|
513
653
|
status: exports.variantHistoryStatusSchema.optional(),
|
|
514
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
|
+
};
|
|
515
673
|
exports.getVariantInput = {
|
|
516
674
|
projectPath: v3_1.z.string().optional(),
|
|
517
675
|
sessionId: v3_1.z.string().min(1),
|