rivet-design 0.25.0 → 0.26.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/README.md +2 -2
- package/README.npm.md +2 -2
- package/dist/agent-variants/PreviewRuntime.d.ts +1 -20
- package/dist/agent-variants/PreviewRuntime.js +1 -102
- package/dist/agent-variants/SessionStore.d.ts +1 -8
- package/dist/agent-variants/SessionStore.js +2 -32
- package/dist/agent-variants/WorkspaceInventory.d.ts +0 -3
- package/dist/agent-variants/WorkspaceInventory.js +5 -28
- package/dist/agent-variants/WorktreeOrchestrator.d.ts +1 -30
- package/dist/agent-variants/WorktreeOrchestrator.js +4 -643
- package/dist/agent-variants/WorktreeOrchestrator.testHelpers.d.ts +0 -7
- package/dist/agent-variants/WorktreeOrchestrator.testHelpers.js +0 -34
- package/dist/agent-variants/contracts.d.ts +0 -60
- package/dist/agent-variants/contracts.js +1 -8
- package/dist/agent-variants/index.d.ts +1 -1
- package/dist/agent-variants/runPlan.d.ts +0 -2
- package/dist/agent-variants/runPlan.js +0 -3
- package/dist/agent-variants/variant-project-runtime.d.ts +0 -2
- package/dist/agent-variants/variantWorkspaceFiles.d.ts +0 -3
- package/dist/agent-variants/variantWorkspaceFiles.js +1 -59
- package/dist/agent-variants/variantsTelemetry.d.ts +0 -8
- package/dist/cli/commands/mcpServe.d.ts +2 -2
- package/dist/cli/commands/mcpServe.js +1 -0
- package/dist/cli/commands/variants.js +2 -43
- package/dist/cli/router.js +3 -2
- package/dist/config/flags.d.ts +0 -3
- package/dist/config/flags.js +0 -1
- package/dist/config/pluginMetrics.js +0 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +20 -8
- package/dist/install/mcpRegistration.js +1 -0
- package/dist/mcp/explorationTools.js +0 -17
- package/dist/routes/account.js +4 -2
- package/dist/routes/agentVariants.js +1 -89
- package/dist/routes/library/browserAccess.d.ts +3 -1
- package/dist/routes/library/browserAccess.js +5 -3
- package/dist/routes/library/index.js +1 -0
- package/dist/services/AuthService.js +2 -2
- package/dist/services/ConfigManager.d.ts +18 -1
- package/dist/services/ConfigManager.js +91 -4
- package/dist/services/SessionBridgeService.d.ts +0 -2
- package/dist/services/SessionBridgeService.js +0 -26
- package/dist/services/TelemetryService.d.ts +4 -15
- package/dist/services/TelemetryService.js +29 -33
- package/dist/services/VariantRunService.d.ts +0 -5
- package/dist/services/VariantRunService.js +0 -3
- package/dist/services/WorktreeManager.d.ts +0 -3
- package/dist/services/WorktreeManager.js +7 -54
- package/dist/services/createAgentVariantsOrchestrator.js +0 -1
- package/dist/services/profiles/DesignProfiles.js +4 -3
- package/dist/utils/skills/claude-skill.d.ts +1 -1
- package/dist/utils/skills/claude-skill.js +1 -1
- package/dist/utils/skills/cli-guidance.d.ts +1 -1
- package/dist/utils/skills/cli-guidance.js +6 -8
- package/dist/utils/skills/cursor-rules.d.ts +1 -1
- package/dist/utils/skills/cursor-rules.js +1 -1
- package/package.json +3 -3
- package/src/ui/dist/assets/{LibraryEntry-BJl_pPMq.js → LibraryEntry-CFkd6v_O.js} +9 -9
- package/src/ui/dist/assets/main-B_jie9r3.js +439 -0
- package/src/ui/dist/index.html +1 -1
- package/dist/agent-variants/createProjectArtifacts.d.ts +0 -61
- package/dist/agent-variants/createProjectArtifacts.js +0 -113
- package/src/ui/dist/assets/main-D1832qVC.js +0 -439
|
@@ -24,20 +24,13 @@ export declare class FakeWorktreeManager implements WorktreeManagerLike {
|
|
|
24
24
|
startDevServer(worktreePath: string, port: number, cmd: string, args: string[], env: Record<string, string>): Promise<never>;
|
|
25
25
|
stopDevServer(): Promise<void>;
|
|
26
26
|
getProjectCwdInWorktree(worktreePath: string): Promise<string>;
|
|
27
|
-
applyDiffToProjectImpl: (diff: string, projectPath: string) => Promise<void>;
|
|
28
|
-
applyDiffToProject(diff: string, projectPath: string): Promise<void>;
|
|
29
27
|
}
|
|
30
28
|
export declare const ENV: ProjectEnvironment;
|
|
31
29
|
export interface OrchestratorHarness {
|
|
32
30
|
installCalls: Array<{
|
|
33
31
|
worktreePath: string;
|
|
34
32
|
}>;
|
|
35
|
-
materializeCalls: Array<{
|
|
36
|
-
source: string;
|
|
37
|
-
destination: string;
|
|
38
|
-
}>;
|
|
39
33
|
installResult: Promise<void>;
|
|
40
|
-
materializeResult: Promise<void>;
|
|
41
34
|
destinationExists: boolean;
|
|
42
35
|
telemetryEvents: Array<{
|
|
43
36
|
event: string;
|
|
@@ -96,14 +96,6 @@ class FakeWorktreeManager {
|
|
|
96
96
|
});
|
|
97
97
|
return worktreePath;
|
|
98
98
|
}
|
|
99
|
-
applyDiffToProjectImpl = async () => undefined;
|
|
100
|
-
async applyDiffToProject(diff, projectPath) {
|
|
101
|
-
this.calls.push({
|
|
102
|
-
method: 'applyDiffToProject',
|
|
103
|
-
args: [diff, projectPath],
|
|
104
|
-
});
|
|
105
|
-
return this.applyDiffToProjectImpl(diff, projectPath);
|
|
106
|
-
}
|
|
107
99
|
}
|
|
108
100
|
exports.FakeWorktreeManager = FakeWorktreeManager;
|
|
109
101
|
exports.ENV = {
|
|
@@ -124,9 +116,7 @@ function buildOrchestrator(opts = {}) {
|
|
|
124
116
|
const worktreeManager = new FakeWorktreeManager();
|
|
125
117
|
const harness = {
|
|
126
118
|
installCalls: [],
|
|
127
|
-
materializeCalls: [],
|
|
128
119
|
installResult: Promise.resolve(),
|
|
129
|
-
materializeResult: Promise.resolve(),
|
|
130
120
|
destinationExists: opts.destinationExists ?? false,
|
|
131
121
|
telemetryEvents: [],
|
|
132
122
|
switchPreviewPortCalls: [],
|
|
@@ -143,26 +133,10 @@ function buildOrchestrator(opts = {}) {
|
|
|
143
133
|
harness.installCalls.push({ worktreePath });
|
|
144
134
|
return harness.installResult;
|
|
145
135
|
},
|
|
146
|
-
materializeProject: async (source, destination) => {
|
|
147
|
-
harness.materializeCalls.push({ source, destination });
|
|
148
|
-
return harness.materializeResult;
|
|
149
|
-
},
|
|
150
136
|
previewQaRunner: opts.previewQaRunner ?? exports.passingQaRunner,
|
|
151
137
|
switchPreviewPort: (port) => {
|
|
152
138
|
harness.switchPreviewPortCalls.push(port);
|
|
153
139
|
},
|
|
154
|
-
startStaticPreviewServer: async () => {
|
|
155
|
-
const stub = {
|
|
156
|
-
killed: false,
|
|
157
|
-
exitCode: 0,
|
|
158
|
-
pid: undefined,
|
|
159
|
-
kill: () => true,
|
|
160
|
-
on: () => stub,
|
|
161
|
-
once: () => stub,
|
|
162
|
-
off: () => stub,
|
|
163
|
-
};
|
|
164
|
-
return stub;
|
|
165
|
-
},
|
|
166
140
|
telemetry: {
|
|
167
141
|
track: (event, properties) => harness.telemetryEvents.push({ event, properties }),
|
|
168
142
|
trackAgentVariantsSourceContextQuality: (properties) => harness.telemetryEvents.push({
|
|
@@ -221,14 +195,6 @@ function buildOrchestrator(opts = {}) {
|
|
|
221
195
|
event: 'agent_variants.round_completed',
|
|
222
196
|
properties,
|
|
223
197
|
}),
|
|
224
|
-
trackAgentVariantsCommitFailed: (properties) => harness.telemetryEvents.push({
|
|
225
|
-
event: 'agent_variants.commit_failed',
|
|
226
|
-
properties,
|
|
227
|
-
}),
|
|
228
|
-
trackAgentVariantsNewProjectMaterialized: (properties) => harness.telemetryEvents.push({
|
|
229
|
-
event: 'agent_variants.new_project_materialized',
|
|
230
|
-
properties,
|
|
231
|
-
}),
|
|
232
198
|
},
|
|
233
199
|
});
|
|
234
200
|
builtOrchestrators.push(orchestrator);
|
|
@@ -7996,10 +7996,6 @@ export interface ActiveVariantActions {
|
|
|
7996
7996
|
enabled: boolean;
|
|
7997
7997
|
reason?: string;
|
|
7998
7998
|
};
|
|
7999
|
-
commit?: {
|
|
8000
|
-
enabled: boolean;
|
|
8001
|
-
reason?: string;
|
|
8002
|
-
};
|
|
8003
7999
|
}
|
|
8004
8000
|
export interface SavedVariantPreview {
|
|
8005
8001
|
source: {
|
|
@@ -10629,32 +10625,6 @@ export type ReportVariantBriefsInput = {
|
|
|
10629
10625
|
briefs: Brief[];
|
|
10630
10626
|
bindings?: VariantContextBinding[];
|
|
10631
10627
|
};
|
|
10632
|
-
export declare const commitVariantInput: {
|
|
10633
|
-
sessionId: z.ZodString;
|
|
10634
|
-
variantId: z.ZodString;
|
|
10635
|
-
confirmedByUser: z.ZodOptional<z.ZodBoolean>;
|
|
10636
|
-
bypassRequestedByUser: z.ZodOptional<z.ZodBoolean>;
|
|
10637
|
-
bypassReason: z.ZodOptional<z.ZodString>;
|
|
10638
|
-
};
|
|
10639
|
-
export type CommitVariantInput = {
|
|
10640
|
-
sessionId: string;
|
|
10641
|
-
variantId: string;
|
|
10642
|
-
confirmedByUser?: boolean;
|
|
10643
|
-
bypassRequestedByUser?: boolean;
|
|
10644
|
-
bypassReason?: string;
|
|
10645
|
-
};
|
|
10646
|
-
export type CommitVariantOutput = {
|
|
10647
|
-
stage: Stage;
|
|
10648
|
-
enqueued: boolean;
|
|
10649
|
-
duplicate: boolean;
|
|
10650
|
-
changedFilesCount: number;
|
|
10651
|
-
payloadKind?: 'diff' | 'diff-applied' | 'project-created';
|
|
10652
|
-
destinationPath?: string;
|
|
10653
|
-
} | {
|
|
10654
|
-
stage: 'failed';
|
|
10655
|
-
errorCode: ErrorCode;
|
|
10656
|
-
message: string;
|
|
10657
|
-
};
|
|
10658
10628
|
export declare const continueVariantsAction: z.ZodOptional<z.ZodEnum<["check", "wait", "request_work", "refine_variant"]>>;
|
|
10659
10629
|
export declare const continueVariantsInput: {
|
|
10660
10630
|
sessionId: z.ZodString;
|
|
@@ -11133,35 +11103,5 @@ export type GetVariantOutput = {
|
|
|
11133
11103
|
errorCode: ErrorCode;
|
|
11134
11104
|
message: string;
|
|
11135
11105
|
};
|
|
11136
|
-
export type VariantPickPayload = {
|
|
11137
|
-
kind: 'diff';
|
|
11138
|
-
diff: string;
|
|
11139
|
-
target?: Target;
|
|
11140
|
-
changedFilesCount: number;
|
|
11141
|
-
} | {
|
|
11142
|
-
kind: 'diff-applied';
|
|
11143
|
-
diff: string;
|
|
11144
|
-
target?: Target;
|
|
11145
|
-
changedFilesCount: number;
|
|
11146
|
-
note: string;
|
|
11147
|
-
} | {
|
|
11148
|
-
kind: 'new-project';
|
|
11149
|
-
destinationPath: string;
|
|
11150
|
-
sourceWorktreePath: string;
|
|
11151
|
-
changedFilesCount: number;
|
|
11152
|
-
} | {
|
|
11153
|
-
kind: 'project-created';
|
|
11154
|
-
destinationPath: string;
|
|
11155
|
-
changedFilesCount: number;
|
|
11156
|
-
note: string;
|
|
11157
|
-
};
|
|
11158
|
-
export interface VariantPickEnvelope {
|
|
11159
|
-
sourceSessionId: string;
|
|
11160
|
-
variantId: string;
|
|
11161
|
-
variantLabel: string;
|
|
11162
|
-
destinationPath: string;
|
|
11163
|
-
changedFilesCount: number;
|
|
11164
|
-
payload: VariantPickPayload;
|
|
11165
|
-
}
|
|
11166
11106
|
export { ERROR_CODES, type ErrorCode };
|
|
11167
11107
|
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ERROR_CODES = exports.getVariantInput = exports.captureDesignEvidenceInput = exports.listPastVariantsInput = exports.variantHistoryStatusSchema = exports.startVariantsBriefContent = exports.cancelVariantsInput = exports.reportWorkItemInput = exports.reportVariantCompleteStatus = exports.continueVariantsInput = exports.continueVariantsAction = exports.
|
|
3
|
+
exports.ERROR_CODES = exports.getVariantInput = exports.captureDesignEvidenceInput = exports.listPastVariantsInput = exports.variantHistoryStatusSchema = exports.startVariantsBriefContent = exports.cancelVariantsInput = exports.reportWorkItemInput = exports.reportVariantCompleteStatus = exports.continueVariantsInput = exports.continueVariantsAction = exports.reportVariantBriefsInput = exports.proposeVariantsInput = exports.runLabelSchema = exports.DEFAULT_VARIANT_COUNT = exports.VARIANT_COUNT_MAX = exports.VARIANT_COUNT_MIN = exports.variantWorkItemContextSchema = exports.briefSchema = exports.targetSchema = exports.isWorkerFidelity = exports.VARIANT_EXECUTION_MODES = exports.projectContextInputSchema = exports.projectContextSchema = exports.projectContextFresh = exports.projectContextExisting = exports.variantContextBundleSchema = exports.executionCapabilityPlanSchema = exports.assetPlanEntrySchema = exports.executionConfidenceSchema = exports.executionModeSchema = exports.variantContextBindingSchema = exports.rivetMetadataSchema = exports.rivetContextActionSchema = exports.rivetContextActionKindSchema = exports.storedUserContextSourceRecordSchema = exports.stagedContextAssetSchema = exports.contextAssetInputSchema = exports.rawUserContextSourceSchema = exports.rawUserContextInputSchema = exports.sourceRoleSchema = exports.designContextEntrySchema = exports.CONTEXT_ASSET_MAX_ITEMS = exports.WORK_ITEM_STATUSES = exports.WORK_ITEM_KINDS = exports.TERMINAL_STAGES = exports.STAGES = void 0;
|
|
4
4
|
const variant_reference_1 = require("../types/variant-reference");
|
|
5
5
|
const v3_1 = require("zod/v3");
|
|
6
6
|
const errors_1 = require("./errors");
|
|
@@ -446,13 +446,6 @@ exports.reportVariantBriefsInput = {
|
|
|
446
446
|
.max(exports.VARIANT_COUNT_MAX)
|
|
447
447
|
.optional(),
|
|
448
448
|
};
|
|
449
|
-
exports.commitVariantInput = {
|
|
450
|
-
sessionId: v3_1.z.string().min(1),
|
|
451
|
-
variantId: v3_1.z.string().min(1),
|
|
452
|
-
confirmedByUser: v3_1.z.boolean().optional(),
|
|
453
|
-
bypassRequestedByUser: v3_1.z.boolean().optional(),
|
|
454
|
-
bypassReason: v3_1.z.string().min(1).optional(),
|
|
455
|
-
};
|
|
456
449
|
exports.continueVariantsAction = v3_1.z
|
|
457
450
|
.enum(['check', 'wait', 'request_work', 'refine_variant'])
|
|
458
451
|
.optional();
|
|
@@ -5,5 +5,5 @@ export type { ActiveSnapshot, DroppedRefinement, OrchestratorDeps, PreviewQaRunn
|
|
|
5
5
|
export { slugifyPrompt } from './generatedDestination';
|
|
6
6
|
export { AgentVariantsError, ERROR_CODES, type ErrorCode } from './errors';
|
|
7
7
|
export { DEFAULT_VARIANT_COUNT, VARIANT_COUNT_MIN, VARIANT_COUNT_MAX, } from './contracts';
|
|
8
|
-
export type { Brief, CancelVariantsInput, CancelVariantsOutput, ContinueVariantsInput, ContinueVariantsOutput, LeaseRecord, LeasedWorkItemDescriptor, ProjectContext, ProposeVariantsInput, ProposeVariantsOutput, RawUserContextInput, RawUserContextSource, ReportVariantBriefsInput, ReportVariantBriefsOutput, RivetContextAction, RivetMetadata, ReportVariantCompleteInput, ReportVariantCompleteOutput, Stage, Target, TerminalSummary, VariantContextBinding, VariantContextBundle,
|
|
8
|
+
export type { Brief, CancelVariantsInput, CancelVariantsOutput, ContinueVariantsInput, ContinueVariantsOutput, LeaseRecord, LeasedWorkItemDescriptor, ProjectContext, ProposeVariantsInput, ProposeVariantsOutput, RawUserContextInput, RawUserContextSource, ReportVariantBriefsInput, ReportVariantBriefsOutput, RivetContextAction, RivetMetadata, ReportVariantCompleteInput, ReportVariantCompleteOutput, Stage, Target, TerminalSummary, VariantContextBinding, VariantContextBundle, VariantWorkItemContext, VisualEditorAttachment, WorkItem, WorkItemKind, WorkItemStatus, } from './contracts';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -10,12 +10,10 @@ export type VariantRunPlan = {
|
|
|
10
10
|
};
|
|
11
11
|
export type RunTopology = 'code_gen' | 'static_preview';
|
|
12
12
|
export type RunProvision = 'git_worktree' | 'template_worktree' | 'none';
|
|
13
|
-
export type RunCommit = 'apply_diff' | 'write_static_site' | 'materialize_project';
|
|
14
13
|
export type RunPreview = 'static_artifact' | 'dev_server';
|
|
15
14
|
export interface RunPlanPolicy {
|
|
16
15
|
topology: RunTopology;
|
|
17
16
|
provision: RunProvision;
|
|
18
|
-
commit: RunCommit;
|
|
19
17
|
needsScaffoldBase: boolean;
|
|
20
18
|
preview?: RunPreview;
|
|
21
19
|
}
|
|
@@ -15,7 +15,6 @@ function runPlanPolicy(plan) {
|
|
|
15
15
|
return {
|
|
16
16
|
topology: 'code_gen',
|
|
17
17
|
provision: 'git_worktree',
|
|
18
|
-
commit: 'apply_diff',
|
|
19
18
|
needsScaffoldBase: false,
|
|
20
19
|
};
|
|
21
20
|
}
|
|
@@ -23,7 +22,6 @@ function runPlanPolicy(plan) {
|
|
|
23
22
|
return {
|
|
24
23
|
topology: 'static_preview',
|
|
25
24
|
provision: 'none',
|
|
26
|
-
commit: 'write_static_site',
|
|
27
25
|
needsScaffoldBase: false,
|
|
28
26
|
preview: 'static_artifact',
|
|
29
27
|
};
|
|
@@ -31,7 +29,6 @@ function runPlanPolicy(plan) {
|
|
|
31
29
|
return {
|
|
32
30
|
topology: 'code_gen',
|
|
33
31
|
provision: 'template_worktree',
|
|
34
|
-
commit: 'materialize_project',
|
|
35
32
|
needsScaffoldBase: true,
|
|
36
33
|
preview: 'dev_server',
|
|
37
34
|
};
|
|
@@ -7,7 +7,6 @@ export interface WorktreeManagerLike {
|
|
|
7
7
|
forkWorktreesFrom?(sourceWorktreePath: string, sessionId: string, count: number, instanceKeyPrefix?: string): Promise<string[]>;
|
|
8
8
|
getDiff(worktreePath: string): Promise<string>;
|
|
9
9
|
getGitRoot?(): Promise<string>;
|
|
10
|
-
applyDiffToProject?(diff: string, projectPath: string): Promise<void>;
|
|
11
10
|
cleanupSession(sessionId: string, freshDestinationParent?: string): Promise<void>;
|
|
12
11
|
getFreePort(): Promise<number>;
|
|
13
12
|
findFreePortFrom(startPort: number): Promise<number>;
|
|
@@ -16,7 +15,6 @@ export interface WorktreeManagerLike {
|
|
|
16
15
|
stopDevServer(proc: ChildProcess, timeoutMs?: number): Promise<void>;
|
|
17
16
|
getProjectCwdInWorktree(worktreePath: string): Promise<string>;
|
|
18
17
|
createFreshWorktrees?(sessionId: string, count: number, template: TemplateBundle, designContext: ReadonlyArray<DesignContextEntry | undefined> | undefined, destinationParent: string): Promise<string[]>;
|
|
19
|
-
moveWorktreeToHistory?(srcWorktreePath: string, historyDir: string, folderName: string): string;
|
|
20
18
|
}
|
|
21
19
|
type DevServerProjectEnvironment = {
|
|
22
20
|
projectPath: string;
|
|
@@ -36,8 +36,5 @@ export declare const buildServeRecipeFromResolved: (snapshotRoot: string, dev: {
|
|
|
36
36
|
}, port: number) => DevServerRecipe;
|
|
37
37
|
export declare const canInstallWithoutTouchingHost: (cwd: string) => boolean;
|
|
38
38
|
export declare const assertDevScriptExists: (cwd: string, scriptName: string) => void;
|
|
39
|
-
export declare function areSameVolume(a: string, b: string): boolean;
|
|
40
|
-
export declare function resolveNodeModulesSymlink(worktreePath: string): Promise<boolean>;
|
|
41
|
-
export declare const defaultMaterializeProject: (sourceWorktreePath: string, destinationPath: string) => Promise<void>;
|
|
42
39
|
export declare function synthesizeUnifiedBriefBody(prompt: string, index: number, total: number): string;
|
|
43
40
|
//# sourceMappingURL=variantWorkspaceFiles.d.ts.map
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.assertDevScriptExists = exports.canInstallWithoutTouchingHost = exports.buildServeRecipeFromResolved = exports.defaultInstallDependencies = exports.STATIC_PREVIEW_HISTORY_FILE_EXTENSIONS = exports.STATIC_PREVIEW_HISTORY_EXCLUDE = exports.MATERIALIZE_EXCLUDE = exports.ALLOWED_INERT_ASSET_EXTENSIONS = void 0;
|
|
7
7
|
exports.estimateOutputBytes = estimateOutputBytes;
|
|
8
8
|
exports.normalizeOutput = normalizeOutput;
|
|
9
9
|
exports.resolveAssetWithinBase = resolveAssetWithinBase;
|
|
@@ -13,16 +13,12 @@ exports.buildStaticPreviewDocument = buildStaticPreviewDocument;
|
|
|
13
13
|
exports.countDiffFiles = countDiffFiles;
|
|
14
14
|
exports.countWorktreeFiles = countWorktreeFiles;
|
|
15
15
|
exports.copyStaticPreviewDirectory = copyStaticPreviewDirectory;
|
|
16
|
-
exports.areSameVolume = areSameVolume;
|
|
17
|
-
exports.resolveNodeModulesSymlink = resolveNodeModulesSymlink;
|
|
18
16
|
exports.synthesizeUnifiedBriefBody = synthesizeUnifiedBriefBody;
|
|
19
17
|
const fs_1 = __importDefault(require("fs"));
|
|
20
18
|
const path_1 = __importDefault(require("path"));
|
|
21
|
-
const simple_git_1 = require("simple-git");
|
|
22
19
|
const DependencyPreparationService_1 = require("../services/DependencyPreparationService");
|
|
23
20
|
const devServerError_1 = require("../utils/devServerError");
|
|
24
21
|
const logger_1 = require("../utils/logger");
|
|
25
|
-
const errnoCode_1 = require("../utils/errnoCode");
|
|
26
22
|
const pathContainment_1 = require("../utils/pathContainment");
|
|
27
23
|
const log = (0, logger_1.createLogger)('VariantWorkspaceFiles');
|
|
28
24
|
const FALLBACK_DIRECTION_FOCI = [
|
|
@@ -357,60 +353,6 @@ const assertDevScriptExists = (cwd, scriptName) => {
|
|
|
357
353
|
});
|
|
358
354
|
};
|
|
359
355
|
exports.assertDevScriptExists = assertDevScriptExists;
|
|
360
|
-
function areSameVolume(a, b) {
|
|
361
|
-
try {
|
|
362
|
-
const statA = fs_1.default.statSync(a);
|
|
363
|
-
const parentB = fs_1.default.existsSync(b) ? b : path_1.default.dirname(b);
|
|
364
|
-
const statB = fs_1.default.statSync(parentB);
|
|
365
|
-
return statA.dev === statB.dev;
|
|
366
|
-
}
|
|
367
|
-
catch {
|
|
368
|
-
return false;
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
async function resolveNodeModulesSymlink(worktreePath) {
|
|
372
|
-
const nodeModulesPath = path_1.default.join(worktreePath, 'node_modules');
|
|
373
|
-
try {
|
|
374
|
-
if (!(await fs_1.default.promises.lstat(nodeModulesPath)).isSymbolicLink())
|
|
375
|
-
return false;
|
|
376
|
-
await fs_1.default.promises.rm(nodeModulesPath, { force: true });
|
|
377
|
-
return true;
|
|
378
|
-
}
|
|
379
|
-
catch (error) {
|
|
380
|
-
if ((0, errnoCode_1.errnoCode)(error) === 'ENOENT')
|
|
381
|
-
return true;
|
|
382
|
-
throw error;
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
const defaultMaterializeProject = async (sourceWorktreePath, destinationPath) => {
|
|
386
|
-
await fs_1.default.promises.mkdir(destinationPath, { recursive: true });
|
|
387
|
-
await fs_1.default.promises.cp(sourceWorktreePath, destinationPath, {
|
|
388
|
-
recursive: true,
|
|
389
|
-
filter: (sourcePath) => {
|
|
390
|
-
const rel = path_1.default.relative(sourceWorktreePath, sourcePath);
|
|
391
|
-
if (!rel)
|
|
392
|
-
return true;
|
|
393
|
-
const top = rel.split(path_1.default.sep)[0];
|
|
394
|
-
return !exports.MATERIALIZE_EXCLUDE.has(top);
|
|
395
|
-
},
|
|
396
|
-
});
|
|
397
|
-
const git = (0, simple_git_1.simpleGit)(destinationPath);
|
|
398
|
-
await git.raw(['init']);
|
|
399
|
-
await git.raw(['add', '-A']);
|
|
400
|
-
await git
|
|
401
|
-
.raw([
|
|
402
|
-
'-c',
|
|
403
|
-
'user.name=Rivet',
|
|
404
|
-
'-c',
|
|
405
|
-
'user.email=hello@tryrivet.design',
|
|
406
|
-
'commit',
|
|
407
|
-
'--no-gpg-sign',
|
|
408
|
-
'-m',
|
|
409
|
-
'Initial commit (created with Rivet)',
|
|
410
|
-
])
|
|
411
|
-
.catch(() => { });
|
|
412
|
-
};
|
|
413
|
-
exports.defaultMaterializeProject = defaultMaterializeProject;
|
|
414
356
|
function synthesizeUnifiedBriefBody(prompt, index, total) {
|
|
415
357
|
const trimmed = prompt.trim().replace(/\s+/g, ' ').slice(0, 200);
|
|
416
358
|
const intent = trimmed.length > 0 ? trimmed : 'Create this variant';
|
|
@@ -14,7 +14,6 @@ export interface VariantsTelemetry {
|
|
|
14
14
|
trackAgentVariantsRefinementFailed?: (data: MCPVariantsTelemetryMetadata) => void;
|
|
15
15
|
trackAgentVariantsRoundStarted?: (data: MCPVariantsTelemetryMetadata) => void;
|
|
16
16
|
trackAgentVariantsRoundCompleted?: (data: MCPVariantsTelemetryMetadata) => void;
|
|
17
|
-
trackAgentVariantsCommitFailed?: (data: MCPVariantsTelemetryMetadata) => void;
|
|
18
17
|
trackAgentVariantsScaffoldStarted?: (data: {
|
|
19
18
|
sessionId: string;
|
|
20
19
|
variantCount: number;
|
|
@@ -79,13 +78,6 @@ export interface VariantsTelemetry {
|
|
|
79
78
|
signal?: string | null;
|
|
80
79
|
missingDeps?: boolean;
|
|
81
80
|
}) => void;
|
|
82
|
-
trackAgentVariantsNewProjectMaterialized?: (data: {
|
|
83
|
-
sessionId: string;
|
|
84
|
-
variantId: string;
|
|
85
|
-
destinationPath: string;
|
|
86
|
-
changedFilesCount: number;
|
|
87
|
-
durationMs: number;
|
|
88
|
-
}) => void;
|
|
89
81
|
trackAgentVariantsSourceContextQuality?: (data: {
|
|
90
82
|
sessionId: string;
|
|
91
83
|
sourceUrlCount: number;
|
|
@@ -5,12 +5,12 @@ type McpServeOptions = {
|
|
|
5
5
|
projectPath?: string;
|
|
6
6
|
handoffArgs?: string[];
|
|
7
7
|
noTelemetry?: boolean;
|
|
8
|
-
telemetry?: Pick<TelemetryService, 'track' | 'trackCliCommandCompleted' | 'trackMCPToolExecuted' | 'trackMCPToolFailed' | 'shutdown'>;
|
|
8
|
+
telemetry?: Pick<TelemetryService, 'track' | 'trackCliCommandCompleted' | 'trackMCPToolExecuted' | 'trackMCPToolFailed' | 'reportInstallRefActivations' | 'shutdown'>;
|
|
9
9
|
};
|
|
10
10
|
export declare const isStaleAttachError: (envelope: CliEnvelope) => boolean;
|
|
11
11
|
export declare const buildMcpServer: (options?: McpServeOptions) => Promise<{
|
|
12
12
|
mcp: import("@modelcontextprotocol/sdk/server/mcp.js").McpServer;
|
|
13
|
-
telemetry: Pick<TelemetryService, "track" | "trackCliCommandCompleted" | "trackMCPToolExecuted" | "trackMCPToolFailed" | "shutdown"> | null;
|
|
13
|
+
telemetry: Pick<TelemetryService, "reportInstallRefActivations" | "track" | "trackCliCommandCompleted" | "trackMCPToolExecuted" | "trackMCPToolFailed" | "shutdown"> | null;
|
|
14
14
|
}>;
|
|
15
15
|
export declare const handleMcpServe: (rest: string[], io: CliIO) => Promise<CliCommandResult>;
|
|
16
16
|
export {};
|
|
@@ -58,7 +58,6 @@ const errorMessage_1 = require("../../utils/errorMessage");
|
|
|
58
58
|
const START_COMMAND = 'variants.start';
|
|
59
59
|
const STATUS_COMMAND = 'variants.status';
|
|
60
60
|
const CANCEL_COMMAND = 'variants.cancel';
|
|
61
|
-
const COMMIT_COMMAND = 'variants.commit';
|
|
62
61
|
const COMPLETE_COMMAND = 'variants.complete';
|
|
63
62
|
const GET_COMMAND = 'variants.get';
|
|
64
63
|
const LIST_COMMAND = 'variants.list';
|
|
@@ -102,9 +101,6 @@ const CONTEXT_IMAGE_MIME_BY_EXTENSION = new Map([
|
|
|
102
101
|
const MAX_REFERENCE_PAGES = 3;
|
|
103
102
|
const MAX_REFERENCE_VIDEOS = 2;
|
|
104
103
|
const REFERENCE_VIDEO_EXTENSIONS = new Set(['.mp4', '.mov', '.webm', '.m4v']);
|
|
105
|
-
const COMMIT_FLAG_SPEC = {
|
|
106
|
-
session: { takesValue: true },
|
|
107
|
-
};
|
|
108
104
|
const COMPLETE_FLAG_SPEC = {
|
|
109
105
|
session: { takesValue: true },
|
|
110
106
|
status: { takesValue: true },
|
|
@@ -698,44 +694,10 @@ const handleVariantsCancel = async (args) => {
|
|
|
698
694
|
};
|
|
699
695
|
const resolveActiveSessionId = async (attached) => {
|
|
700
696
|
const response = await (0, client_1.requestServer)(attached, '/api/variants/active');
|
|
701
|
-
if (response.status !== 200 || response.body.active !== true)
|
|
697
|
+
if (response.status !== 200 || response.body.active !== true)
|
|
702
698
|
return null;
|
|
703
|
-
}
|
|
704
699
|
return response.body.sessionId ?? null;
|
|
705
700
|
};
|
|
706
|
-
const handleVariantsCommit = async (args) => {
|
|
707
|
-
const context = (0, shared_1.parseCommandContext)(COMMIT_COMMAND, args, COMMIT_FLAG_SPEC);
|
|
708
|
-
if ((0, shared_1.isCommandResult)(context)) {
|
|
709
|
-
return context;
|
|
710
|
-
}
|
|
711
|
-
const variantId = context.flags.positionals[0];
|
|
712
|
-
if (!variantId) {
|
|
713
|
-
return (0, envelope_1.errorResult)(COMMIT_COMMAND, 'USAGE_ERROR', 'Usage: rivet variants commit <variantId> [--session <sessionId>]');
|
|
714
|
-
}
|
|
715
|
-
const attached = await (0, shared_1.attachOrUnavailable)(COMMIT_COMMAND, context.projectPath);
|
|
716
|
-
if (!(0, shared_1.isAttached)(attached)) {
|
|
717
|
-
return attached;
|
|
718
|
-
}
|
|
719
|
-
try {
|
|
720
|
-
const sessionId = (0, flags_1.stringFlag)(context.flags, 'session') ??
|
|
721
|
-
(await resolveActiveSessionId(attached));
|
|
722
|
-
if (!sessionId) {
|
|
723
|
-
return (0, envelope_1.errorResult)(COMMIT_COMMAND, 'OPERATION_FAILED', 'No active variants session. Pass --session <sessionId> for a past session.');
|
|
724
|
-
}
|
|
725
|
-
const response = await (0, client_1.requestServer)(attached, `/api/variants/${encodeURIComponent(sessionId)}/commit`, { method: 'POST', body: { variantId } });
|
|
726
|
-
if (response.status !== 200) {
|
|
727
|
-
return (0, shared_1.serverErrorResult)(COMMIT_COMMAND, response.status, response.body);
|
|
728
|
-
}
|
|
729
|
-
return (0, envelope_1.okResult)(COMMIT_COMMAND, {
|
|
730
|
-
sessionId,
|
|
731
|
-
variantId,
|
|
732
|
-
result: response.body,
|
|
733
|
-
});
|
|
734
|
-
}
|
|
735
|
-
catch (error) {
|
|
736
|
-
return (0, shared_1.transportErrorResult)(COMMIT_COMMAND, error);
|
|
737
|
-
}
|
|
738
|
-
};
|
|
739
701
|
const handleVariantsComplete = async (args) => {
|
|
740
702
|
const context = (0, shared_1.parseCommandContext)(COMPLETE_COMMAND, args, COMPLETE_FLAG_SPEC);
|
|
741
703
|
if ((0, shared_1.isCommandResult)(context)) {
|
|
@@ -939,9 +901,6 @@ const handleVariants = async (args, options = {}) => {
|
|
|
939
901
|
if (action === 'cancel') {
|
|
940
902
|
return handleVariantsCancel(rest);
|
|
941
903
|
}
|
|
942
|
-
if (action === 'commit') {
|
|
943
|
-
return handleVariantsCommit(rest);
|
|
944
|
-
}
|
|
945
904
|
if (action === 'complete') {
|
|
946
905
|
return handleVariantsComplete(rest);
|
|
947
906
|
}
|
|
@@ -951,7 +910,7 @@ const handleVariants = async (args, options = {}) => {
|
|
|
951
910
|
if (action === 'list') {
|
|
952
911
|
return handleVariantsList(rest);
|
|
953
912
|
}
|
|
954
|
-
return (0, envelope_1.errorResult)('variants', 'USAGE_ERROR', 'Usage: rivet variants <start|status|cancel|
|
|
913
|
+
return (0, envelope_1.errorResult)('variants', 'USAGE_ERROR', 'Usage: rivet variants <start|status|cancel|complete|get|list> [options]');
|
|
955
914
|
};
|
|
956
915
|
exports.handleVariants = handleVariants;
|
|
957
916
|
//# sourceMappingURL=variants.js.map
|
package/dist/cli/router.js
CHANGED
|
@@ -79,8 +79,8 @@ const COMMAND_USAGE = {
|
|
|
79
79
|
'Block until a work id settles; exits 5 on timeout.',
|
|
80
80
|
],
|
|
81
81
|
variants: [
|
|
82
|
-
'rivet variants <start|status|cancel|
|
|
83
|
-
'start: --instruction <text> [--count N] [--element <selector>] [--fresh] [--target <sessionId>:<variantId>] [--worker-provider claude|codex|cursor] [--worker-model <id>] · get <projectId>/<sessionId>:<variantId> [--detail] · cancel <sessionId> ·
|
|
82
|
+
'rivet variants <start|status|cancel|complete|get|list> [options]',
|
|
83
|
+
'start: --instruction <text> [--count N] [--element <selector>] [--fresh] [--target <sessionId>:<variantId>] [--worker-provider claude|codex|cursor] [--worker-model <id>] · get <projectId>/<sessionId>:<variantId> [--detail] · cancel <sessionId> · list [--history]',
|
|
84
84
|
],
|
|
85
85
|
evidence: [
|
|
86
86
|
'rivet evidence capture --url <url> [--screenshot] [--width N --height N]',
|
|
@@ -311,6 +311,7 @@ const runCliControlCommand = async (args, io = io_1.processCliIO) => {
|
|
|
311
311
|
...(0, telemetry_1.browserMetadataForEnvelope)(result.envelope),
|
|
312
312
|
...(0, handoff_1.callerTelemetryFieldsFromArgs)(rest),
|
|
313
313
|
});
|
|
314
|
+
telemetry.reportInstallRefActivations();
|
|
314
315
|
await telemetry.shutdown(result.envelope.command === 'variants.get'
|
|
315
316
|
? VARIANT_LOOKUP_TELEMETRY_TIMEOUT_MS
|
|
316
317
|
: undefined);
|
package/dist/config/flags.d.ts
CHANGED
package/dist/config/flags.js
CHANGED
|
@@ -11,7 +11,6 @@ exports.FLAG_DEFINITIONS = {
|
|
|
11
11
|
share: { default: false },
|
|
12
12
|
deployPrototype: { default: false },
|
|
13
13
|
canvasShare: { default: false },
|
|
14
|
-
variantSend: { default: false },
|
|
15
14
|
generativeControls: { default: false },
|
|
16
15
|
refineMode: { default: false },
|
|
17
16
|
inspectorUndoRedo: { default: false },
|
|
@@ -16,7 +16,6 @@ const metricProperties = zod_1.z.object({
|
|
|
16
16
|
'variants.get',
|
|
17
17
|
'variants.list',
|
|
18
18
|
'variants.complete',
|
|
19
|
-
'variants.commit',
|
|
20
19
|
'variants.cancel',
|
|
21
20
|
'reference.fetch',
|
|
22
21
|
'evidence.capture',
|
|
@@ -27,7 +26,6 @@ const metricProperties = zod_1.z.object({
|
|
|
27
26
|
'rivet_login',
|
|
28
27
|
'rivet_explore_designs',
|
|
29
28
|
'rivet_get_exploration',
|
|
30
|
-
'rivet_apply_design',
|
|
31
29
|
'rivet_cancel_exploration',
|
|
32
30
|
'rivet_complete_variant_work',
|
|
33
31
|
'rivet_get_design_context',
|
|
@@ -216,8 +214,6 @@ const PRODUCT_EVENTS = new Set([
|
|
|
216
214
|
'agent_variants.preview_started',
|
|
217
215
|
'agent_variants.preview_ready',
|
|
218
216
|
'agent_variants.preview_failed',
|
|
219
|
-
'agent_variants.committed',
|
|
220
|
-
'agent_variants.commit_failed',
|
|
221
217
|
]);
|
|
222
218
|
const pluginMetricProperties = (event, properties) => {
|
|
223
219
|
if (!PRODUCT_EVENTS.has(event))
|
package/dist/index.d.ts
CHANGED
|
@@ -73,7 +73,7 @@ export declare const authCommandOptionsForArgs: (args: string[]) => {
|
|
|
73
73
|
noBrowser: boolean;
|
|
74
74
|
noTelemetry: boolean;
|
|
75
75
|
};
|
|
76
|
-
export declare const rememberInstallRef: (args: string[]) => string[];
|
|
76
|
+
export declare const rememberInstallRef: (args: string[], downloadType?: string) => string[];
|
|
77
77
|
export declare const authFailureReasonForError: (error: string | undefined) => "oauth_failed" | "timeout";
|
|
78
78
|
export declare const main: (args?: string[]) => Promise<void>;
|
|
79
79
|
export declare const parseArgs: (args: string[]) => CLIOptions;
|
package/dist/index.js
CHANGED
|
@@ -238,14 +238,19 @@ const authCommandOptionsForArgs = (args) => ({
|
|
|
238
238
|
noTelemetry: args.includes('--no-telemetry'),
|
|
239
239
|
});
|
|
240
240
|
exports.authCommandOptionsForArgs = authCommandOptionsForArgs;
|
|
241
|
-
const rememberInstallRef = (args) => {
|
|
241
|
+
const rememberInstallRef = (args, downloadType) => {
|
|
242
242
|
const { installRef, remainingArgs } = (0, installRef_1.extractInstallRef)(args);
|
|
243
243
|
if (installRef) {
|
|
244
|
-
(0, ConfigManager_1.getConfigManager)().setInstallRef(installRef);
|
|
244
|
+
(0, ConfigManager_1.getConfigManager)().setInstallRef(installRef, downloadType);
|
|
245
245
|
}
|
|
246
246
|
return remainingArgs;
|
|
247
247
|
};
|
|
248
248
|
exports.rememberInstallRef = rememberInstallRef;
|
|
249
|
+
const reportInstallRefActivations = async () => {
|
|
250
|
+
const telemetry = new TelemetryService_1.TelemetryService({ source: 'cli' });
|
|
251
|
+
telemetry.reportInstallRefActivations();
|
|
252
|
+
await telemetry.shutdown();
|
|
253
|
+
};
|
|
249
254
|
const discardInstallRefForValidatedSession = () => {
|
|
250
255
|
const configManager = (0, ConfigManager_1.getConfigManager)();
|
|
251
256
|
const installRef = configManager.getInstallRef();
|
|
@@ -803,7 +808,8 @@ const promptPostInstall = async () => {
|
|
|
803
808
|
}
|
|
804
809
|
};
|
|
805
810
|
const handleInstall = async (installArgs) => {
|
|
806
|
-
const
|
|
811
|
+
const { installRef, remainingArgs } = (0, installRef_1.extractInstallRef)(installArgs);
|
|
812
|
+
const parsed = (0, flags_1.parseFlags)(remainingArgs, {
|
|
807
813
|
mcp: { takesValue: false },
|
|
808
814
|
'no-mcp': { takesValue: false },
|
|
809
815
|
'no-telemetry': { takesValue: false },
|
|
@@ -852,7 +858,9 @@ const handleInstall = async (installArgs) => {
|
|
|
852
858
|
(0, harnesses_1.reportInstallConfirmation)(selection, installArgs);
|
|
853
859
|
return;
|
|
854
860
|
}
|
|
855
|
-
(0, exports.rememberInstallRef)(installArgs);
|
|
861
|
+
(0, exports.rememberInstallRef)(installArgs, selection.targetIds.join(','));
|
|
862
|
+
if (installRef)
|
|
863
|
+
await reportInstallRefActivations();
|
|
856
864
|
const bootstrap = (0, globalBootstrap_1.bootstrapGlobalInstall)(installArgs);
|
|
857
865
|
if (bootstrap.action === 'reexeced') {
|
|
858
866
|
process.exit(bootstrap.exitCode);
|
|
@@ -877,6 +885,10 @@ const handleLogin = async (options = {}) => {
|
|
|
877
885
|
enabled: !options.noTelemetry,
|
|
878
886
|
source: 'cli',
|
|
879
887
|
});
|
|
888
|
+
const finishTelemetry = async () => {
|
|
889
|
+
telemetry.reportInstallRefActivations();
|
|
890
|
+
await telemetry.shutdown();
|
|
891
|
+
};
|
|
880
892
|
let authAttemptId = '';
|
|
881
893
|
let authStartedAt = 0;
|
|
882
894
|
const startAuthAttempt = () => {
|
|
@@ -906,7 +918,7 @@ const handleLogin = async (options = {}) => {
|
|
|
906
918
|
outcome: 'already_authenticated',
|
|
907
919
|
durationMs: Date.now() - authStartedAt,
|
|
908
920
|
});
|
|
909
|
-
await
|
|
921
|
+
await finishTelemetry();
|
|
910
922
|
console.log(`✅ Already signed in as ${configManager.getEmail()}`);
|
|
911
923
|
console.log(`\n${nextStepHint}`);
|
|
912
924
|
return;
|
|
@@ -934,7 +946,7 @@ const handleLogin = async (options = {}) => {
|
|
|
934
946
|
outcome: 'authenticated',
|
|
935
947
|
durationMs: Date.now() - authStartedAt,
|
|
936
948
|
});
|
|
937
|
-
await
|
|
949
|
+
await finishTelemetry();
|
|
938
950
|
console.log(`✅ Logged in as ${resumed.user.email}`);
|
|
939
951
|
console.log(`\n${nextStepHint}`);
|
|
940
952
|
return;
|
|
@@ -983,7 +995,7 @@ const handleLogin = async (options = {}) => {
|
|
|
983
995
|
outcome: 'authenticated',
|
|
984
996
|
durationMs: Date.now() - authStartedAt,
|
|
985
997
|
});
|
|
986
|
-
await
|
|
998
|
+
await finishTelemetry();
|
|
987
999
|
console.log(`✅ Logged in as ${loginResult.user?.email}`);
|
|
988
1000
|
console.log(`\n${nextStepHint}`);
|
|
989
1001
|
return;
|
|
@@ -996,7 +1008,7 @@ const handleLogin = async (options = {}) => {
|
|
|
996
1008
|
failureReason: (0, exports.authFailureReasonForError)(loginResult.error),
|
|
997
1009
|
durationMs: Date.now() - authStartedAt,
|
|
998
1010
|
});
|
|
999
|
-
await
|
|
1011
|
+
await finishTelemetry();
|
|
1000
1012
|
console.log(`❌ Login failed: ${loginResult.error || loginResult.message}`);
|
|
1001
1013
|
if (options.exitOnFailure ?? true) {
|
|
1002
1014
|
process.exit(1);
|
|
@@ -88,6 +88,7 @@ const verifyMcpServeInvocation = (spawnSync = childProcess.spawnSync) => {
|
|
|
88
88
|
env: {
|
|
89
89
|
...(0, subprocessEnvironment_1.subprocessEnvironment)('rivetRuntime'),
|
|
90
90
|
RIVET_LOG_LEVEL: 'SILENT',
|
|
91
|
+
RIVET_AUTO_UPDATE_DISABLED: '1',
|
|
91
92
|
},
|
|
92
93
|
input: `${input}\n`,
|
|
93
94
|
timeout: MCP_SERVE_VERIFICATION_TIMEOUT_MS,
|