rivet-design 0.21.10 → 0.23.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 +5 -1
- package/README.npm.md +5 -1
- package/bin/rivet.js +10 -0
- package/dist/agent-variants/PreviewRuntime.d.ts.map +1 -1
- package/dist/agent-variants/PreviewRuntime.js +3 -5
- package/dist/agent-variants/PreviewRuntime.js.map +1 -1
- package/dist/agent-variants/SessionStore.d.ts +14 -23
- package/dist/agent-variants/SessionStore.d.ts.map +1 -1
- package/dist/agent-variants/SessionStore.js +84 -356
- package/dist/agent-variants/SessionStore.js.map +1 -1
- package/dist/agent-variants/VariantWorkspaceManager.d.ts.map +1 -1
- package/dist/agent-variants/VariantWorkspaceManager.js +8 -14
- package/dist/agent-variants/VariantWorkspaceManager.js.map +1 -1
- package/dist/agent-variants/WorkspaceProvisioning.d.ts.map +1 -1
- package/dist/agent-variants/WorkspaceProvisioning.js +20 -18
- package/dist/agent-variants/WorkspaceProvisioning.js.map +1 -1
- package/dist/agent-variants/WorktreeOrchestrator.d.ts +2 -4
- package/dist/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
- package/dist/agent-variants/WorktreeOrchestrator.js +54 -88
- package/dist/agent-variants/WorktreeOrchestrator.js.map +1 -1
- package/dist/agent-variants/WorktreeOrchestrator.testHelpers.d.ts.map +1 -1
- package/dist/agent-variants/WorktreeOrchestrator.testHelpers.js +0 -12
- package/dist/agent-variants/WorktreeOrchestrator.testHelpers.js.map +1 -1
- package/dist/agent-variants/contextAssets.d.ts.map +1 -1
- package/dist/agent-variants/contextAssets.js +2 -8
- package/dist/agent-variants/contextAssets.js.map +1 -1
- package/dist/agent-variants/contracts.d.ts +946 -2463
- package/dist/agent-variants/contracts.d.ts.map +1 -1
- package/dist/agent-variants/contracts.js +2 -84
- package/dist/agent-variants/contracts.js.map +1 -1
- package/dist/agent-variants/directionBriefs.d.ts +7 -0
- package/dist/agent-variants/directionBriefs.d.ts.map +1 -0
- package/dist/agent-variants/directionBriefs.js +51 -0
- package/dist/agent-variants/directionBriefs.js.map +1 -0
- package/dist/agent-variants/index.d.ts +1 -1
- package/dist/agent-variants/index.d.ts.map +1 -1
- package/dist/agent-variants/runPlan.d.ts +0 -1
- package/dist/agent-variants/runPlan.d.ts.map +1 -1
- package/dist/agent-variants/runPlan.js +0 -4
- package/dist/agent-variants/runPlan.js.map +1 -1
- package/dist/agent-variants/sourceContext.d.ts +0 -2
- package/dist/agent-variants/sourceContext.d.ts.map +1 -1
- package/dist/agent-variants/sourceContext.js +1 -35
- package/dist/agent-variants/sourceContext.js.map +1 -1
- package/dist/agent-variants/staticPreviewFiles.d.ts.map +1 -1
- package/dist/agent-variants/staticPreviewFiles.js +7 -6
- package/dist/agent-variants/staticPreviewFiles.js.map +1 -1
- package/dist/agent-variants/staticPreviewRefinements.d.ts.map +1 -1
- package/dist/agent-variants/staticPreviewRefinements.js +3 -3
- package/dist/agent-variants/staticPreviewRefinements.js.map +1 -1
- package/dist/agent-variants/variantContext.d.ts.map +1 -1
- package/dist/agent-variants/variantContext.js +2 -8
- package/dist/agent-variants/variantContext.js.map +1 -1
- package/dist/agent-variants/variantWorkspaceFiles.d.ts +0 -1
- package/dist/agent-variants/variantWorkspaceFiles.d.ts.map +1 -1
- package/dist/agent-variants/variantWorkspaceFiles.js +5 -10
- package/dist/agent-variants/variantWorkspaceFiles.js.map +1 -1
- package/dist/agent-variants/variantsTelemetry.d.ts +0 -3
- package/dist/agent-variants/variantsTelemetry.d.ts.map +1 -1
- package/dist/agent-variants/variantsTelemetry.js.map +1 -1
- package/dist/agent-variants/workItemInput.d.ts +5950 -0
- package/dist/agent-variants/workItemInput.d.ts.map +1 -0
- package/dist/agent-variants/workItemInput.js +76 -0
- package/dist/agent-variants/workItemInput.js.map +1 -0
- package/dist/agent-variants/workItemPreviewRoutes.js +2 -2
- package/dist/agent-variants/workItemPreviewRoutes.js.map +1 -1
- package/dist/cli/commands/context.d.ts +3 -1
- package/dist/cli/commands/context.d.ts.map +1 -1
- package/dist/cli/commands/context.js +38 -1
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contextRequest.d.ts +1 -0
- package/dist/cli/commands/contextRequest.d.ts.map +1 -1
- package/dist/cli/commands/contextRequest.js +65 -5
- package/dist/cli/commands/contextRequest.js.map +1 -1
- package/dist/cli/commands/guidanceReferences.d.ts +1 -0
- package/dist/cli/commands/guidanceReferences.d.ts.map +1 -1
- package/dist/cli/commands/guidanceReferences.js +5 -4
- package/dist/cli/commands/guidanceReferences.js.map +1 -1
- package/dist/cli/commands/guidanceVerifierPackage.d.ts +9 -0
- package/dist/cli/commands/guidanceVerifierPackage.d.ts.map +1 -0
- package/dist/cli/commands/guidanceVerifierPackage.js +41 -0
- package/dist/cli/commands/guidanceVerifierPackage.js.map +1 -0
- package/dist/cli/commands/mcpServe.d.ts +1 -0
- package/dist/cli/commands/mcpServe.d.ts.map +1 -1
- package/dist/cli/commands/mcpServe.js +457 -326
- package/dist/cli/commands/mcpServe.js.map +1 -1
- package/dist/cli/commands/variants.js +2 -2
- package/dist/cli/commands/variants.js.map +1 -1
- package/dist/cli/handoff.d.ts +5 -0
- package/dist/cli/handoff.d.ts.map +1 -1
- package/dist/cli/handoff.js +13 -10
- package/dist/cli/handoff.js.map +1 -1
- package/dist/cli/handoffStore.d.ts +0 -1
- package/dist/cli/handoffStore.d.ts.map +1 -1
- package/dist/cli/handoffStore.js +1 -11
- package/dist/cli/handoffStore.js.map +1 -1
- package/dist/cli/router.d.ts +3 -1
- package/dist/cli/router.d.ts.map +1 -1
- package/dist/cli/router.js +4 -3
- package/dist/cli/router.js.map +1 -1
- package/dist/config/flags.d.ts +0 -3
- package/dist/config/flags.d.ts.map +1 -1
- package/dist/config/flags.js +0 -1
- package/dist/config/flags.js.map +1 -1
- package/dist/config/proxy.d.ts +3 -0
- package/dist/config/proxy.d.ts.map +1 -1
- package/dist/config/proxy.js +7 -5
- package/dist/config/proxy.js.map +1 -1
- package/dist/hosts/workerDefaults.d.ts +0 -1
- package/dist/hosts/workerDefaults.d.ts.map +1 -1
- package/dist/hosts/workerDefaults.js +1 -2
- package/dist/hosts/workerDefaults.js.map +1 -1
- package/dist/index-core.d.ts +1 -2
- package/dist/index-core.d.ts.map +1 -1
- package/dist/index-core.js +1 -3
- package/dist/index-core.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -7
- package/dist/index.js.map +1 -1
- package/dist/install/agentSkill.d.ts +16 -0
- package/dist/install/agentSkill.d.ts.map +1 -0
- package/dist/install/agentSkill.js +54 -0
- package/dist/install/agentSkill.js.map +1 -0
- package/dist/install/allowlists.d.ts +3 -1
- package/dist/install/allowlists.d.ts.map +1 -1
- package/dist/install/allowlists.js +89 -27
- package/dist/install/allowlists.js.map +1 -1
- package/dist/install/automaticCliUpdate.d.ts.map +1 -1
- package/dist/install/automaticCliUpdate.js +6 -11
- package/dist/install/automaticCliUpdate.js.map +1 -1
- package/dist/install/channelCli.d.ts.map +1 -1
- package/dist/install/channelCli.js +2 -37
- package/dist/install/channelCli.js.map +1 -1
- package/dist/install/channelManager.d.ts +2 -1
- package/dist/install/channelManager.d.ts.map +1 -1
- package/dist/install/channelManager.js +23 -20
- package/dist/install/channelManager.js.map +1 -1
- package/dist/install/codexSkill.d.ts +1 -8
- package/dist/install/codexSkill.d.ts.map +1 -1
- package/dist/install/codexSkill.js +9 -50
- package/dist/install/codexSkill.js.map +1 -1
- package/dist/install/cursorSkill.d.ts +6 -0
- package/dist/install/cursorSkill.d.ts.map +1 -0
- package/dist/install/cursorSkill.js +36 -0
- package/dist/install/cursorSkill.js.map +1 -0
- package/dist/install/globalBootstrap.d.ts +3 -2
- package/dist/install/globalBootstrap.d.ts.map +1 -1
- package/dist/install/globalBootstrap.js +9 -41
- package/dist/install/globalBootstrap.js.map +1 -1
- package/dist/install/harnesses.d.ts +27 -0
- package/dist/install/harnesses.d.ts.map +1 -1
- package/dist/install/harnesses.js +174 -76
- package/dist/install/harnesses.js.map +1 -1
- package/dist/library/importFiles.d.ts.map +1 -1
- package/dist/library/importFiles.js +3 -3
- package/dist/library/importFiles.js.map +1 -1
- package/dist/mcp/changeBatchClassification.d.ts +1 -11
- package/dist/mcp/changeBatchClassification.d.ts.map +1 -1
- package/dist/mcp/changeBatchClassification.js +0 -38
- package/dist/mcp/changeBatchClassification.js.map +1 -1
- package/dist/prototype-host.js +2 -1
- package/dist/prototype-host.js.map +1 -1
- package/dist/routes/agentVariants.d.ts.map +1 -1
- package/dist/routes/agentVariants.js +5 -11
- package/dist/routes/agentVariants.js.map +1 -1
- package/dist/routes/library/guidance.d.ts.map +1 -1
- package/dist/routes/library/guidance.js +7 -0
- package/dist/routes/library/guidance.js.map +1 -1
- package/dist/routes/library/staticPreview.d.ts.map +1 -1
- package/dist/routes/library/staticPreview.js +9 -7
- package/dist/routes/library/staticPreview.js.map +1 -1
- package/dist/routes/prototypeHost.d.ts.map +1 -1
- package/dist/routes/prototypeHost.js +3 -3
- package/dist/routes/prototypeHost.js.map +1 -1
- package/dist/routes/staticPreviewPolicy.d.ts.map +1 -1
- package/dist/routes/staticPreviewPolicy.js +2 -10
- package/dist/routes/staticPreviewPolicy.js.map +1 -1
- package/dist/routes/variantRequestSchema.d.ts +4 -4
- package/dist/server.d.ts +0 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -3
- package/dist/server.js.map +1 -1
- package/dist/services/AuthService.d.ts +4 -10
- package/dist/services/AuthService.d.ts.map +1 -1
- package/dist/services/AuthService.js +3 -118
- package/dist/services/AuthService.js.map +1 -1
- package/dist/services/BundleStore.d.ts.map +1 -1
- package/dist/services/BundleStore.js +4 -8
- package/dist/services/BundleStore.js.map +1 -1
- package/dist/services/DependencyPreparationService.d.ts.map +1 -1
- package/dist/services/DependencyPreparationService.js +4 -3
- package/dist/services/DependencyPreparationService.js.map +1 -1
- package/dist/services/GuidanceVerifierRunner.d.ts +15 -0
- package/dist/services/GuidanceVerifierRunner.d.ts.map +1 -0
- package/dist/services/GuidanceVerifierRunner.js +373 -0
- package/dist/services/GuidanceVerifierRunner.js.map +1 -0
- package/dist/services/HubDiscovery.d.ts +2 -2
- package/dist/services/IntegrationsClient.d.ts +3 -3
- package/dist/services/MCPOnboardingTelemetry.d.ts +0 -2
- package/dist/services/MCPOnboardingTelemetry.d.ts.map +1 -1
- package/dist/services/MCPOnboardingTelemetry.js +1 -78
- package/dist/services/MCPOnboardingTelemetry.js.map +1 -1
- package/dist/services/OperatingSystemServices.d.ts +5 -0
- package/dist/services/OperatingSystemServices.d.ts.map +1 -1
- package/dist/services/OperatingSystemServices.js +20 -7
- package/dist/services/OperatingSystemServices.js.map +1 -1
- package/dist/services/ProjectImport.d.ts.map +1 -1
- package/dist/services/ProjectImport.js +2 -1
- package/dist/services/ProjectImport.js.map +1 -1
- package/dist/services/ProjectPackageManager.d.ts +0 -1
- package/dist/services/ProjectPackageManager.d.ts.map +1 -1
- package/dist/services/ProjectPackageManager.js +5 -12
- package/dist/services/ProjectPackageManager.js.map +1 -1
- package/dist/services/ProjectRegistry.d.ts +2 -2
- package/dist/services/PrototypeBuildService.d.ts.map +1 -1
- package/dist/services/PrototypeBuildService.js +10 -6
- package/dist/services/PrototypeBuildService.js.map +1 -1
- package/dist/services/TelemetryService.d.ts +1 -9
- package/dist/services/TelemetryService.d.ts.map +1 -1
- package/dist/services/TelemetryService.js +0 -28
- package/dist/services/TelemetryService.js.map +1 -1
- package/dist/services/VariantGenerationService.d.ts +1 -9
- package/dist/services/VariantGenerationService.d.ts.map +1 -1
- package/dist/services/VariantGenerationService.js +16 -140
- package/dist/services/VariantGenerationService.js.map +1 -1
- package/dist/services/VariantHistoryService.js +5 -8
- package/dist/services/VariantHistoryService.js.map +1 -1
- package/dist/services/VariantRunService.d.ts +0 -6
- package/dist/services/VariantRunService.d.ts.map +1 -1
- package/dist/services/VariantRunService.js +1 -28
- package/dist/services/VariantRunService.js.map +1 -1
- package/dist/services/VariantsRuntime.d.ts.map +1 -1
- package/dist/services/VariantsRuntime.js +0 -1
- package/dist/services/VariantsRuntime.js.map +1 -1
- package/dist/services/WorktreeManager.d.ts.map +1 -1
- package/dist/services/WorktreeManager.js +4 -4
- package/dist/services/WorktreeManager.js.map +1 -1
- package/dist/services/accessTokenRefresh.d.ts +0 -3
- package/dist/services/accessTokenRefresh.d.ts.map +1 -1
- package/dist/services/accessTokenRefresh.js +1 -33
- package/dist/services/accessTokenRefresh.js.map +1 -1
- package/dist/services/guidanceDelivery.d.ts +0 -5
- package/dist/services/guidanceDelivery.d.ts.map +1 -1
- package/dist/services/guidanceDelivery.js +1 -20
- package/dist/services/guidanceDelivery.js.map +1 -1
- package/dist/services/guidanceReferences.d.ts.map +1 -1
- package/dist/services/guidanceReferences.js +2 -76
- package/dist/services/guidanceReferences.js.map +1 -1
- package/dist/services/packageManagerProcess.d.ts +20 -0
- package/dist/services/packageManagerProcess.d.ts.map +1 -0
- package/dist/services/packageManagerProcess.js +55 -0
- package/dist/services/packageManagerProcess.js.map +1 -0
- package/dist/services/profiles/DesignProfiles.d.ts +31 -16
- package/dist/services/profiles/DesignProfiles.d.ts.map +1 -1
- package/dist/services/profiles/DesignProfiles.js +71 -17
- package/dist/services/profiles/DesignProfiles.js.map +1 -1
- package/dist/services/profiles/ProfilePlanning.d.ts +5 -5
- package/dist/services/profiles/ReferenceReader.d.ts +2 -2
- package/dist/services/profiles/profileContext.d.ts +1 -1
- package/dist/services/referenceImages.d.ts.map +1 -1
- package/dist/services/referenceImages.js +4 -4
- package/dist/services/referenceImages.js.map +1 -1
- package/dist/services/retainedTextFiles.d.ts +8 -0
- package/dist/services/retainedTextFiles.d.ts.map +1 -0
- package/dist/services/retainedTextFiles.js +95 -0
- package/dist/services/retainedTextFiles.js.map +1 -0
- package/dist/services/staticProjectTarget.d.ts +0 -1
- package/dist/services/staticProjectTarget.d.ts.map +1 -1
- package/dist/services/staticProjectTarget.js +4 -10
- package/dist/services/staticProjectTarget.js.map +1 -1
- package/dist/services/templates/designCatalog.d.ts +0 -4
- package/dist/services/templates/designCatalog.d.ts.map +1 -1
- package/dist/services/templates/designCatalog.js +1 -27
- package/dist/services/templates/designCatalog.js.map +1 -1
- package/dist/storage/library/ProjectPreviewCache.d.ts +2 -2
- package/dist/storage/profiles/ProfilePlans.d.ts +18 -18
- package/dist/storage/profiles/ProfileRecords.d.ts +52 -3
- package/dist/storage/profiles/ProfileRecords.d.ts.map +1 -1
- package/dist/storage/profiles/ProfileRecords.js +74 -17
- package/dist/storage/profiles/ProfileRecords.js.map +1 -1
- package/dist/storage/profiles/guidanceVerifier.d.ts +3 -0
- package/dist/storage/profiles/guidanceVerifier.d.ts.map +1 -0
- package/dist/storage/profiles/guidanceVerifier.js +30 -0
- package/dist/storage/profiles/guidanceVerifier.js.map +1 -0
- package/dist/storage/profiles/migrations.d.ts +2 -2
- package/dist/storage/profiles/migrations.d.ts.map +1 -1
- package/dist/storage/profiles/migrations.js +3 -0
- package/dist/storage/profiles/migrations.js.map +1 -1
- package/dist/storage/profiles/planSchema.d.ts +5 -5
- package/dist/storage/profiles/schema.d.ts +28 -1
- package/dist/storage/profiles/schema.d.ts.map +1 -1
- package/dist/storage/profiles/schema.js +1 -0
- package/dist/storage/profiles/schema.js.map +1 -1
- package/dist/types/change-types.d.ts +0 -25
- package/dist/types/change-types.d.ts.map +1 -1
- package/dist/types/cosmos-profile.d.ts +12 -12
- package/dist/types/cosmos.d.ts +20 -20
- package/dist/types/design-profile.d.ts +16 -16
- package/dist/types/guidance-references.d.ts +16 -0
- package/dist/types/guidance-references.d.ts.map +1 -1
- package/dist/types/guidance-references.js +44 -30
- package/dist/types/guidance-references.js.map +1 -1
- package/dist/types/guidance-verifier.d.ts +265 -0
- package/dist/types/guidance-verifier.d.ts.map +1 -0
- package/dist/types/guidance-verifier.js +71 -0
- package/dist/types/guidance-verifier.js.map +1 -0
- package/dist/types/guidance.d.ts +436 -21
- package/dist/types/guidance.d.ts.map +1 -1
- package/dist/types/guidance.js +13 -2
- package/dist/types/guidance.js.map +1 -1
- package/dist/types/reference-connectors.d.ts +20 -20
- package/dist/types/reference-onboarding.d.ts +48 -48
- package/dist/types/variant-reference.d.ts +4 -4
- package/dist/types/x-bookmarks.d.ts +10 -10
- package/dist/utils/pathContainment.d.ts +15 -0
- package/dist/utils/pathContainment.d.ts.map +1 -0
- package/dist/utils/pathContainment.js +46 -0
- package/dist/utils/pathContainment.js.map +1 -0
- package/dist/utils/skillWriter.d.ts +5 -2
- package/dist/utils/skillWriter.d.ts.map +1 -1
- package/dist/utils/skillWriter.js +93 -34
- package/dist/utils/skillWriter.js.map +1 -1
- package/dist/utils/skills/cli-guidance.d.ts +1 -1
- package/dist/utils/skills/cli-guidance.d.ts.map +1 -1
- package/dist/utils/skills/cli-guidance.js +19 -6
- package/dist/utils/skills/cli-guidance.js.map +1 -1
- package/dist/utils/skills/codex-skill.d.ts +1 -1
- package/dist/utils/skills/codex-skill.d.ts.map +1 -1
- package/dist/utils/skills/codex-skill.js +1 -1
- package/package.json +2 -3
- package/src/ui/dist/assets/{LibraryEntry-CnaaBqt0.js → LibraryEntry-B9ZkJUtN.js} +8 -8
- package/src/ui/dist/assets/main-CXP-A-qy.css +1 -0
- package/src/ui/dist/assets/{main-CPmhttJP.js → main-Dls3YqrM.js} +143 -143
- package/src/ui/dist/index.html +2 -2
- package/dist/agent-variants/directionAuthoring.d.ts +0 -27
- package/dist/agent-variants/directionAuthoring.d.ts.map +0 -1
- package/dist/agent-variants/directionAuthoring.js +0 -380
- package/dist/agent-variants/directionAuthoring.js.map +0 -1
- package/dist/services/ComponentSearchService.d.ts +0 -13
- package/dist/services/ComponentSearchService.d.ts.map +0 -1
- package/dist/services/ComponentSearchService.js +0 -167
- package/dist/services/ComponentSearchService.js.map +0 -1
- package/dist/types/style-manipulation-types.d.ts +0 -63
- package/dist/types/style-manipulation-types.d.ts.map +0 -1
- package/dist/types/style-manipulation-types.js +0 -68
- package/dist/types/style-manipulation-types.js.map +0 -1
- package/dist/types/token-types.d.ts +0 -24
- package/dist/types/token-types.d.ts.map +0 -1
- package/dist/types/token-types.js +0 -3
- package/dist/types/token-types.js.map +0 -1
- package/src/ui/dist/assets/main-vcYlLdli.css +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SessionStore = exports.buildImageRefs = exports.
|
|
3
|
+
exports.SessionStore = exports.buildImageRefs = exports.SCAFFOLD_LEASE_TTL_MS = exports.DEFAULT_LEASE_TTL_MS = void 0;
|
|
4
4
|
const preview_routes_1 = require("../types/preview-routes");
|
|
5
5
|
const variant_reference_1 = require("../types/variant-reference");
|
|
6
6
|
const crypto_1 = require("crypto");
|
|
@@ -9,6 +9,7 @@ const contracts_1 = require("./contracts");
|
|
|
9
9
|
const briefContent_1 = require("./briefContent");
|
|
10
10
|
const runLabel_1 = require("./runLabel");
|
|
11
11
|
const runPlan_1 = require("./runPlan");
|
|
12
|
+
const workItemInput_1 = require("./workItemInput");
|
|
12
13
|
const MAX_SUBTITLE_WORDS = 10;
|
|
13
14
|
const MAX_RELEVANT_FILES = 12;
|
|
14
15
|
const capSubtitleWords = (text) => {
|
|
@@ -22,11 +23,10 @@ exports.DEFAULT_LEASE_TTL_MS = 20 * 60 * 1000;
|
|
|
22
23
|
exports.SCAFFOLD_LEASE_TTL_MS = 30 * 60 * 1000;
|
|
23
24
|
const SYSTEM_CLOCK = { now: () => Date.now() };
|
|
24
25
|
function isAdoptedVariant(item) {
|
|
25
|
-
return Boolean(item.input.adoptedFrom);
|
|
26
|
+
return (0, workItemInput_1.isVariantWorkItem)(item) && Boolean(item.input.adoptedFrom);
|
|
26
27
|
}
|
|
27
28
|
function isForkedStaticPreviewVariant(item) {
|
|
28
|
-
return
|
|
29
|
-
Boolean(item.input.sourceVariantId));
|
|
29
|
+
return item.kind === 'static_preview' && Boolean(item.input.sourceVariantId);
|
|
30
30
|
}
|
|
31
31
|
function fingerprint(parts) {
|
|
32
32
|
return parts.map((p) => (p === undefined ? '∅' : String(p))).join('|');
|
|
@@ -46,32 +46,8 @@ function descriptorFor(item) {
|
|
|
46
46
|
output_schema: outputSchemaFor(item.kind),
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
|
-
exports.SOURCE_PLAN_OUTPUT_SCHEMA = {
|
|
50
|
-
actions: "Required Array<{ id, kind: 'extract_design_system'|'describe_motion', sourceIds, reason }> — actions selected after inspecting raw input.userContext and the prompt. Use only kinds listed in input.availableActions. May be empty when no source warrants enrichment.",
|
|
51
|
-
metadata: "Required Array<{ id, kind: 'design_system'|'motion_guidance', sourceIds, actionId?, producedBy, data }> — additive metadata produced from the reported actions. Every action MUST produce its matching metadata kind (extract_design_system -> design_system, describe_motion -> motion_guidance). For URL-backed design_system, call capture_design_evidence({ sessionId, url }) before report_source_plan and set data.evidenceStatus. For design_system, data may include designMarkdown; otherwise Rivet synthesizes DESIGN.md from the structured observations. For motion_guidance, data may include motionMarkdown plus notes/timings. Raw userContext remains authoritative; metadata is additive shared guidance.",
|
|
52
|
-
bindings: "Optional Array<{ kind:'global', sourceIds, actionIds, metadataIds? } | { kind:'slot', slotIndex, sourceIds, actionIds, metadataIds? }> — omit for the default global context behavior.",
|
|
53
|
-
executionPlan: "{ mode: 'static_preview' | 'vite_app', confidence: low|medium|high, reason, assetPlan?: Array<{source, destination, referenceAs}>, runtimeRequirements?, userQuestion? } — choose vite_app for large local assets, model-viewer, Three.js, route structure, package deps, files under public/, or when a full app scaffold materially improves the requested result; assetPlan.source must live under the approved asset root. Choose static_preview only when a single HTML/CSS/JS file can preserve the full requested scope and visual fidelity.",
|
|
54
|
-
};
|
|
55
|
-
exports.SOURCE_PLAN_ACTION_OPTIONS = [
|
|
56
|
-
{
|
|
57
|
-
kind: 'extract_design_system',
|
|
58
|
-
sourceTransports: ['url', 'file', 'text'],
|
|
59
|
-
capability: 'extract_inspiration_context',
|
|
60
|
-
produces: 'design_system',
|
|
61
|
-
instructions: 'Inspect visual references natively and use the existing inspiration/design-context extraction path to produce reusable design_system metadata.',
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
kind: 'describe_motion',
|
|
65
|
-
sourceTransports: ['url', 'file'],
|
|
66
|
-
capability: 'rivet_describe_motion',
|
|
67
|
-
produces: 'motion_guidance',
|
|
68
|
-
instructions: 'Inspect interaction references natively and use the Rivet Describe Motion protocol to produce motion_guidance metadata.',
|
|
69
|
-
},
|
|
70
|
-
];
|
|
71
49
|
function outputSchemaFor(kind) {
|
|
72
50
|
switch (kind) {
|
|
73
|
-
case 'source_plan':
|
|
74
|
-
return exports.SOURCE_PLAN_OUTPUT_SCHEMA;
|
|
75
51
|
case 'brief':
|
|
76
52
|
return { briefs: 'Array<{briefId, label, body, visualReferenceUrl?}>' };
|
|
77
53
|
case 'scaffold_base':
|
|
@@ -148,126 +124,6 @@ const buildImageRefs = (artifacts) => {
|
|
|
148
124
|
return refs;
|
|
149
125
|
};
|
|
150
126
|
exports.buildImageRefs = buildImageRefs;
|
|
151
|
-
const requiresSourcePlan = (projectContext) => projectContext.kind === 'fresh' && Boolean(projectContext.variantContext);
|
|
152
|
-
const listSection = (title, items) => {
|
|
153
|
-
if (items.length === 0)
|
|
154
|
-
return [];
|
|
155
|
-
return [`## ${title}`, '', ...items.map((item) => `- ${item}`), ''];
|
|
156
|
-
};
|
|
157
|
-
const hasSharedSource = (sourceIds, candidateSourceIds) => candidateSourceIds.some((sourceId) => sourceIds.includes(sourceId));
|
|
158
|
-
const buildMotionGuidanceMarkdown = (sourceIds, metadata) => {
|
|
159
|
-
const matchingMotion = metadata.filter((entry) => entry.kind === 'motion_guidance' &&
|
|
160
|
-
hasSharedSource(sourceIds, entry.sourceIds));
|
|
161
|
-
if (matchingMotion.length === 0)
|
|
162
|
-
return [];
|
|
163
|
-
const lines = ['## Motion Guidance', ''];
|
|
164
|
-
for (const entry of matchingMotion) {
|
|
165
|
-
if (entry.data.motionMarkdown) {
|
|
166
|
-
lines.push(entry.data.motionMarkdown.trim(), '');
|
|
167
|
-
continue;
|
|
168
|
-
}
|
|
169
|
-
lines.push(...entry.data.notes.map((item) => `- ${item}`));
|
|
170
|
-
if (entry.data.timings && entry.data.timings.length > 0) {
|
|
171
|
-
lines.push('', '### Timings', '');
|
|
172
|
-
lines.push(...entry.data.timings.map((item) => `- ${item}`));
|
|
173
|
-
}
|
|
174
|
-
lines.push('');
|
|
175
|
-
}
|
|
176
|
-
return lines;
|
|
177
|
-
};
|
|
178
|
-
const buildDesignMarkdownFromMetadata = (entry, metadata) => {
|
|
179
|
-
if (entry.data.designMarkdown) {
|
|
180
|
-
return entry.data.designMarkdown;
|
|
181
|
-
}
|
|
182
|
-
const sourceRoleLines = entry.data.sourceRoles.map((role) => role.rationale
|
|
183
|
-
? `${role.role}: ${role.sourceId} (${role.rationale})`
|
|
184
|
-
: `${role.role}: ${role.sourceId}`);
|
|
185
|
-
const lines = [
|
|
186
|
-
'# Design System',
|
|
187
|
-
'',
|
|
188
|
-
...listSection('Source Findings', entry.data.sourceFindings),
|
|
189
|
-
...listSection('Section Inventory', entry.data.sectionInventory),
|
|
190
|
-
...listSection('Visual Observations', entry.data.visualObservations),
|
|
191
|
-
...listSection('Source Roles', sourceRoleLines),
|
|
192
|
-
...buildMotionGuidanceMarkdown(entry.sourceIds, metadata),
|
|
193
|
-
...listSection('Quality Bar', entry.data.qualityBar),
|
|
194
|
-
...(entry.data.risks ? listSection('Risks', entry.data.risks) : []),
|
|
195
|
-
];
|
|
196
|
-
return `${lines.join('\n').trim()}\n`;
|
|
197
|
-
};
|
|
198
|
-
const designContextsFromActionMetadata = (metadata) => {
|
|
199
|
-
if (!metadata)
|
|
200
|
-
return [];
|
|
201
|
-
return metadata
|
|
202
|
-
.filter((entry) => entry.kind === 'design_system')
|
|
203
|
-
.map((entry, index) => ({
|
|
204
|
-
label: index === 0 ? 'Design system' : `Design system ${index + 1}`,
|
|
205
|
-
markdown: buildDesignMarkdownFromMetadata(entry, metadata),
|
|
206
|
-
}));
|
|
207
|
-
};
|
|
208
|
-
const mergeVariantContext = (args) => {
|
|
209
|
-
if (!args.bundle)
|
|
210
|
-
return undefined;
|
|
211
|
-
const metadata = args.sourcePlan.metadata;
|
|
212
|
-
const metadataByActionId = new Map();
|
|
213
|
-
for (const entry of metadata) {
|
|
214
|
-
if (!entry.actionId)
|
|
215
|
-
continue;
|
|
216
|
-
const ids = metadataByActionId.get(entry.actionId) ?? [];
|
|
217
|
-
ids.push(entry.id);
|
|
218
|
-
metadataByActionId.set(entry.actionId, ids);
|
|
219
|
-
}
|
|
220
|
-
const actions = args.sourcePlan.actions.map((action) => ({
|
|
221
|
-
...action,
|
|
222
|
-
outputMetadataIds: action.outputMetadataIds ?? metadataByActionId.get(action.id),
|
|
223
|
-
}));
|
|
224
|
-
return {
|
|
225
|
-
...args.bundle,
|
|
226
|
-
sessionId: args.sessionId,
|
|
227
|
-
rivetActions: actions,
|
|
228
|
-
rivetMetadata: metadata,
|
|
229
|
-
...(args.sourcePlan.bindings ? { bindings: args.sourcePlan.bindings } : {}),
|
|
230
|
-
executionPlan: args.sourcePlan.executionPlan,
|
|
231
|
-
};
|
|
232
|
-
};
|
|
233
|
-
const METADATA_KIND_BY_ACTION_KIND = {
|
|
234
|
-
extract_design_system: 'design_system',
|
|
235
|
-
describe_motion: 'motion_guidance',
|
|
236
|
-
};
|
|
237
|
-
const validateActionMetadataOutputs = (args) => {
|
|
238
|
-
const actions = args.sourcePlan.actions;
|
|
239
|
-
const metadata = args.sourcePlan.metadata;
|
|
240
|
-
if (actions.length === 0 && metadata.length > 0) {
|
|
241
|
-
throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_INVALID', 'source_plan reported metadata without any actions; metadata must be produced by a reported action');
|
|
242
|
-
}
|
|
243
|
-
const sourceIds = new Set(args.bundle?.userContext.map((source) => source.id) ?? []);
|
|
244
|
-
for (const entry of metadata) {
|
|
245
|
-
const unknownSourceIds = entry.sourceIds.filter((sourceId) => sourceIds.size > 0 && !sourceIds.has(sourceId));
|
|
246
|
-
if (unknownSourceIds.length > 0) {
|
|
247
|
-
throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_INVALID', `source_plan metadata ${entry.id} references unknown sourceIds: ${unknownSourceIds.join(', ')}`);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
if (actions.length === 0)
|
|
251
|
-
return;
|
|
252
|
-
const metadataById = new Map(metadata.map((entry) => [entry.id, entry]));
|
|
253
|
-
for (const action of actions) {
|
|
254
|
-
const unknownSourceIds = action.sourceIds.filter((sourceId) => sourceIds.size > 0 && !sourceIds.has(sourceId));
|
|
255
|
-
if (unknownSourceIds.length > 0) {
|
|
256
|
-
throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_INVALID', `source_plan action ${action.id} references unknown sourceIds: ${unknownSourceIds.join(', ')}`);
|
|
257
|
-
}
|
|
258
|
-
const expectedMetadataKind = METADATA_KIND_BY_ACTION_KIND[action.kind];
|
|
259
|
-
const linkedMetadata = [
|
|
260
|
-
...metadata.filter((entry) => entry.actionId === action.id),
|
|
261
|
-
...(action.outputMetadataIds ?? [])
|
|
262
|
-
.map((id) => metadataById.get(id))
|
|
263
|
-
.filter((entry) => Boolean(entry)),
|
|
264
|
-
];
|
|
265
|
-
const hasExpectedMetadata = linkedMetadata.some((entry) => entry.kind === expectedMetadataKind);
|
|
266
|
-
if (!hasExpectedMetadata) {
|
|
267
|
-
throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_INVALID', `source_plan action ${action.id} (${action.kind}) must produce ${expectedMetadataKind} metadata`);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
127
|
const collectSlotBoundIds = (bindings) => {
|
|
272
128
|
const sourceIds = new Set();
|
|
273
129
|
const actionIds = new Set();
|
|
@@ -341,44 +197,16 @@ class SessionStore {
|
|
|
341
197
|
kind: 'existing',
|
|
342
198
|
};
|
|
343
199
|
const count = clampCount(args.count);
|
|
344
|
-
const
|
|
345
|
-
|
|
346
|
-
:
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
kind: 'source_plan',
|
|
352
|
-
status: 'pending',
|
|
353
|
-
attempt: 0,
|
|
354
|
-
dependsOn: [],
|
|
355
|
-
input: {
|
|
356
|
-
prompt: args.prompt,
|
|
357
|
-
guidance: args.guidance ?? [],
|
|
358
|
-
count,
|
|
359
|
-
target: args.target,
|
|
360
|
-
...(bundle
|
|
361
|
-
? {
|
|
362
|
-
contextBundlePath: bundle.contextBundlePath,
|
|
363
|
-
userContext: bundle.userContext,
|
|
364
|
-
availableActions: exports.SOURCE_PLAN_ACTION_OPTIONS,
|
|
365
|
-
variantSlotCount: count,
|
|
366
|
-
}
|
|
367
|
-
: {}),
|
|
368
|
-
projectContext,
|
|
369
|
-
},
|
|
370
|
-
acceptedReports: [],
|
|
371
|
-
}
|
|
372
|
-
: createBriefWorkItem({
|
|
373
|
-
prompt: args.prompt,
|
|
374
|
-
guidance: args.guidance ?? [],
|
|
375
|
-
count,
|
|
376
|
-
target: args.target,
|
|
377
|
-
projectContext,
|
|
378
|
-
});
|
|
200
|
+
const initialItem = createBriefWorkItem({
|
|
201
|
+
prompt: args.prompt,
|
|
202
|
+
guidance: args.guidance ?? [],
|
|
203
|
+
count,
|
|
204
|
+
target: args.target,
|
|
205
|
+
projectContext,
|
|
206
|
+
});
|
|
379
207
|
const record = {
|
|
380
208
|
sessionId,
|
|
381
|
-
stage:
|
|
209
|
+
stage: 'awaiting_briefs',
|
|
382
210
|
prompt: args.prompt,
|
|
383
211
|
guidance: args.guidance ?? [],
|
|
384
212
|
runLabel: args.runLabel?.trim() || undefined,
|
|
@@ -395,17 +223,11 @@ class SessionStore {
|
|
|
395
223
|
createdAt: this.clock.now(),
|
|
396
224
|
};
|
|
397
225
|
this.sessions.set(sessionId, record);
|
|
398
|
-
return
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
}
|
|
404
|
-
: {
|
|
405
|
-
sessionId,
|
|
406
|
-
stage: 'awaiting_briefs',
|
|
407
|
-
briefWorkItem: initialItem,
|
|
408
|
-
};
|
|
226
|
+
return {
|
|
227
|
+
sessionId,
|
|
228
|
+
stage: 'awaiting_briefs',
|
|
229
|
+
briefWorkItem: initialItem,
|
|
230
|
+
};
|
|
409
231
|
}
|
|
410
232
|
reportBriefs(args) {
|
|
411
233
|
const session = this.requireSession(args.sessionId);
|
|
@@ -452,83 +274,6 @@ class SessionStore {
|
|
|
452
274
|
session.acceptedFingerprints.set(fp, result);
|
|
453
275
|
return result;
|
|
454
276
|
}
|
|
455
|
-
reportSourcePlan(args) {
|
|
456
|
-
const session = this.requireSession(args.sessionId);
|
|
457
|
-
const fp = fingerprint([
|
|
458
|
-
'reportSourcePlan',
|
|
459
|
-
args.sessionId,
|
|
460
|
-
args.workItemId,
|
|
461
|
-
args.leaseId,
|
|
462
|
-
args.attempt,
|
|
463
|
-
'succeeded',
|
|
464
|
-
]);
|
|
465
|
-
const cached = session.acceptedFingerprints.get(fp);
|
|
466
|
-
if (cached)
|
|
467
|
-
return cached;
|
|
468
|
-
this.assertStage(session, ['awaiting_source_plan']);
|
|
469
|
-
const item = this.requireWorkItem(session, args.workItemId);
|
|
470
|
-
if (item.kind !== 'source_plan') {
|
|
471
|
-
throw new errors_1.AgentVariantsError('INVALID_STAGE_ACTION', `Work item ${args.workItemId} is not a source_plan item`);
|
|
472
|
-
}
|
|
473
|
-
this.validatePlanningReport(item, args.leaseId, args.attempt);
|
|
474
|
-
const { executionPlan, actions, metadata, bindings } = args.sourcePlan;
|
|
475
|
-
validateActionMetadataOutputs({
|
|
476
|
-
bundle: session.projectContext.kind === 'fresh'
|
|
477
|
-
? session.projectContext.variantContext
|
|
478
|
-
: undefined,
|
|
479
|
-
sourcePlan: args.sourcePlan,
|
|
480
|
-
});
|
|
481
|
-
if (session.projectContext.kind === 'fresh') {
|
|
482
|
-
const projectDesignContexts = designContextsFromActionMetadata(metadata);
|
|
483
|
-
session.projectContext = {
|
|
484
|
-
...session.projectContext,
|
|
485
|
-
...(projectDesignContexts.length > 0
|
|
486
|
-
? {
|
|
487
|
-
designContext: projectDesignContexts.map((entry) => ({
|
|
488
|
-
kind: 'markdown',
|
|
489
|
-
label: entry.label,
|
|
490
|
-
content: entry.markdown,
|
|
491
|
-
})),
|
|
492
|
-
}
|
|
493
|
-
: {}),
|
|
494
|
-
executionPlan,
|
|
495
|
-
};
|
|
496
|
-
}
|
|
497
|
-
const updatedContext = mergeVariantContext({
|
|
498
|
-
bundle: session.projectContext.kind === 'fresh'
|
|
499
|
-
? session.projectContext.variantContext
|
|
500
|
-
: undefined,
|
|
501
|
-
sessionId: session.sessionId,
|
|
502
|
-
sourcePlan: args.sourcePlan,
|
|
503
|
-
});
|
|
504
|
-
if (updatedContext && session.projectContext.kind === 'fresh') {
|
|
505
|
-
session.projectContext = {
|
|
506
|
-
...session.projectContext,
|
|
507
|
-
variantContext: updatedContext,
|
|
508
|
-
};
|
|
509
|
-
}
|
|
510
|
-
item.status = 'succeeded';
|
|
511
|
-
item.output = {
|
|
512
|
-
actions,
|
|
513
|
-
metadata,
|
|
514
|
-
...(bindings ? { bindings } : {}),
|
|
515
|
-
executionPlan,
|
|
516
|
-
};
|
|
517
|
-
item.lease = undefined;
|
|
518
|
-
const briefItem = createBriefWorkItem({
|
|
519
|
-
prompt: session.prompt,
|
|
520
|
-
guidance: session.guidance,
|
|
521
|
-
count: session.count,
|
|
522
|
-
target: session.target,
|
|
523
|
-
projectContext: session.projectContext,
|
|
524
|
-
});
|
|
525
|
-
session.workItems.set(briefItem.id, briefItem);
|
|
526
|
-
session.workItemOrder.push(briefItem.id);
|
|
527
|
-
session.stage = 'awaiting_briefs';
|
|
528
|
-
const result = { briefWorkItem: briefItem };
|
|
529
|
-
session.acceptedFingerprints.set(fp, result);
|
|
530
|
-
return result;
|
|
531
|
-
}
|
|
532
277
|
approve(args) {
|
|
533
278
|
const session = this.requireSession(args.sessionId);
|
|
534
279
|
this.assertStage(session, ['awaiting_approval']);
|
|
@@ -657,7 +402,6 @@ class SessionStore {
|
|
|
657
402
|
requestWork(args) {
|
|
658
403
|
const session = this.requireSession(args.sessionId);
|
|
659
404
|
this.assertStage(session, [
|
|
660
|
-
'awaiting_source_plan',
|
|
661
405
|
'work_items_ready',
|
|
662
406
|
'waiting_for_results',
|
|
663
407
|
]);
|
|
@@ -698,10 +442,7 @@ class SessionStore {
|
|
|
698
442
|
};
|
|
699
443
|
item.status = 'running';
|
|
700
444
|
}
|
|
701
|
-
session.stage =
|
|
702
|
-
session.stage === 'awaiting_source_plan'
|
|
703
|
-
? 'awaiting_source_plan'
|
|
704
|
-
: 'waiting_for_results';
|
|
445
|
+
session.stage = 'waiting_for_results';
|
|
705
446
|
return {
|
|
706
447
|
leaseId,
|
|
707
448
|
leaseTtlMs: Math.max(...issued.map((i) => leaseTtlForKind(i.kind))),
|
|
@@ -762,12 +503,13 @@ class SessionStore {
|
|
|
762
503
|
item.error = args.error;
|
|
763
504
|
if (args.runtime)
|
|
764
505
|
item.runtime = args.runtime;
|
|
765
|
-
if (args.status === 'succeeded' &&
|
|
766
|
-
|
|
506
|
+
if (args.status === 'succeeded' &&
|
|
507
|
+
(args.title || args.description) &&
|
|
508
|
+
(0, workItemInput_1.isVariantWorkItem)(item)) {
|
|
767
509
|
if (args.title)
|
|
768
|
-
input.briefLabel = args.title.trim().slice(0, 80);
|
|
510
|
+
item.input.briefLabel = args.title.trim().slice(0, 80);
|
|
769
511
|
if (args.description)
|
|
770
|
-
input.briefBody = args.description.trim();
|
|
512
|
+
item.input.briefBody = args.description.trim();
|
|
771
513
|
}
|
|
772
514
|
item.acceptedReports.push(fp);
|
|
773
515
|
item.lease = undefined;
|
|
@@ -797,8 +539,8 @@ class SessionStore {
|
|
|
797
539
|
item.lease = undefined;
|
|
798
540
|
item.output = undefined;
|
|
799
541
|
item.error = undefined;
|
|
800
|
-
|
|
801
|
-
|
|
542
|
+
if ((0, workItemInput_1.isVariantWorkItem)(item))
|
|
543
|
+
item.input = { ...item.input, qaRetry: args.qaRetry };
|
|
802
544
|
const result = {
|
|
803
545
|
stage: session.stage,
|
|
804
546
|
progress: this.progressOf(session),
|
|
@@ -818,8 +560,7 @@ class SessionStore {
|
|
|
818
560
|
const activeRefinement = [...session.workItems.values()].find((item) => {
|
|
819
561
|
if (item.kind !== 'refine_variant')
|
|
820
562
|
return false;
|
|
821
|
-
|
|
822
|
-
return input.variantId === args.variantId && item.status === 'pending';
|
|
563
|
+
return (item.input.variantId === args.variantId && item.status === 'pending');
|
|
823
564
|
});
|
|
824
565
|
if (activeRefinement) {
|
|
825
566
|
throw new errors_1.AgentVariantsError('PENDING_CHANGE_CONFLICT', 'A refinement is already queued for this variant');
|
|
@@ -847,7 +588,7 @@ class SessionStore {
|
|
|
847
588
|
...(args.currentHtml ? { currentHtml: args.currentHtml } : {}),
|
|
848
589
|
...(args.targetElement ? { targetElement: args.targetElement } : {}),
|
|
849
590
|
...(args.requestId ? { requestId: args.requestId } : {}),
|
|
850
|
-
projectContext: targetInput.projectContext
|
|
591
|
+
projectContext: targetInput.projectContext,
|
|
851
592
|
...(targetInput.context ? { context: targetInput.context } : {}),
|
|
852
593
|
...(relevantFiles.length > 0 ? { relevantFiles } : {}),
|
|
853
594
|
},
|
|
@@ -870,8 +611,7 @@ class SessionStore {
|
|
|
870
611
|
const activeRefinement = [...session.workItems.values()].find((item) => {
|
|
871
612
|
if (item.kind !== 'refine_variant')
|
|
872
613
|
return false;
|
|
873
|
-
|
|
874
|
-
return (input.variantId === args.sourceVariantId &&
|
|
614
|
+
return (item.input.variantId === args.sourceVariantId &&
|
|
875
615
|
(item.status === 'pending' || item.status === 'running'));
|
|
876
616
|
});
|
|
877
617
|
if (activeRefinement) {
|
|
@@ -946,7 +686,7 @@ class SessionStore {
|
|
|
946
686
|
...(args.targetElement ? { targetElement: args.targetElement } : {}),
|
|
947
687
|
...(args.requestId ? { requestId: args.requestId } : {}),
|
|
948
688
|
...(args.fidelity ? { fidelity: args.fidelity } : {}),
|
|
949
|
-
projectContext: sourceInput.projectContext
|
|
689
|
+
projectContext: sourceInput.projectContext,
|
|
950
690
|
...(context ? { context } : {}),
|
|
951
691
|
...(relevantFiles.length > 0 ? { relevantFiles } : {}),
|
|
952
692
|
},
|
|
@@ -984,16 +724,15 @@ class SessionStore {
|
|
|
984
724
|
const activeRefinement = [...session.workItems.values()].find((item) => {
|
|
985
725
|
if (item.kind !== 'refine_variant')
|
|
986
726
|
return false;
|
|
987
|
-
|
|
988
|
-
return (input.variantId === args.sourceVariantId &&
|
|
727
|
+
return (item.input.variantId === args.sourceVariantId &&
|
|
989
728
|
(item.status === 'pending' || item.status === 'running'));
|
|
990
729
|
});
|
|
991
730
|
if (activeRefinement) {
|
|
992
731
|
throw new errors_1.AgentVariantsError('PENDING_CHANGE_CONFLICT', 'Cannot vary a variant while an in-place refinement is pending or running');
|
|
993
732
|
}
|
|
994
733
|
}
|
|
995
|
-
const sourceInput = (source
|
|
996
|
-
const relevantFiles = mergeRelevantFiles(sourceInput
|
|
734
|
+
const sourceInput = source && (0, workItemInput_1.isVariantWorkItem)(source) ? source.input : undefined;
|
|
735
|
+
const relevantFiles = mergeRelevantFiles(sourceInput?.relevantFiles, args.relevantFiles);
|
|
997
736
|
const createdWorkItemIds = [];
|
|
998
737
|
for (const [batchSlotIndex, brief] of args.briefs.entries()) {
|
|
999
738
|
const context = resolveVariantWorkItemContext({
|
|
@@ -1015,7 +754,7 @@ class SessionStore {
|
|
|
1015
754
|
briefId: brief.briefId,
|
|
1016
755
|
briefLabel: brief.label,
|
|
1017
756
|
briefBody: brief.body,
|
|
1018
|
-
references: (0, variant_reference_1.mergeVariantReferences)(sourceInput
|
|
757
|
+
references: (0, variant_reference_1.mergeVariantReferences)(sourceInput?.references, context?.references),
|
|
1019
758
|
instruction: args.instruction,
|
|
1020
759
|
guidance: args.guidance ?? [],
|
|
1021
760
|
...(brief.notes ? { briefNotes: brief.notes } : {}),
|
|
@@ -1024,10 +763,10 @@ class SessionStore {
|
|
|
1024
763
|
...(args.sourceVariantId
|
|
1025
764
|
? { sourceVariantId: args.sourceVariantId }
|
|
1026
765
|
: {}),
|
|
1027
|
-
...(
|
|
766
|
+
...(sourceInput?.briefLabel
|
|
1028
767
|
? { sourceLabel: sourceInput.briefLabel }
|
|
1029
768
|
: {}),
|
|
1030
|
-
...(
|
|
769
|
+
...(sourceInput?.briefBody
|
|
1031
770
|
? { sourceBody: sourceInput.briefBody }
|
|
1032
771
|
: {}),
|
|
1033
772
|
target: session.target,
|
|
@@ -1053,10 +792,9 @@ class SessionStore {
|
|
|
1053
792
|
}
|
|
1054
793
|
const existing = this.findAdoptedVariant(session, args.source);
|
|
1055
794
|
if (existing) {
|
|
1056
|
-
const input = existing.input;
|
|
1057
795
|
return {
|
|
1058
796
|
workItemId: existing.id,
|
|
1059
|
-
briefId: input.briefId ?? '',
|
|
797
|
+
briefId: existing.input.briefId ?? '',
|
|
1060
798
|
created: false,
|
|
1061
799
|
};
|
|
1062
800
|
}
|
|
@@ -1121,10 +859,9 @@ class SessionStore {
|
|
|
1121
859
|
}
|
|
1122
860
|
findAdoptedVariant(session, source) {
|
|
1123
861
|
for (const item of session.workItems.values()) {
|
|
1124
|
-
if (item.removed)
|
|
862
|
+
if (item.removed || !(0, workItemInput_1.isVariantWorkItem)(item))
|
|
1125
863
|
continue;
|
|
1126
|
-
const adoptedFrom = item.input
|
|
1127
|
-
.adoptedFrom;
|
|
864
|
+
const { adoptedFrom } = item.input;
|
|
1128
865
|
if (adoptedFrom &&
|
|
1129
866
|
adoptedFrom.sessionId === source.sessionId &&
|
|
1130
867
|
adoptedFrom.variantId === source.variantId) {
|
|
@@ -1136,43 +873,38 @@ class SessionStore {
|
|
|
1136
873
|
assignVariantPreviewRoutes(args) {
|
|
1137
874
|
const session = this.requireSession(args.sessionId);
|
|
1138
875
|
const source = args.sourceVariantId
|
|
1139
|
-
? this.requireWorkItem(session, args.sourceVariantId)
|
|
876
|
+
? this.requireWorkItem(session, args.sourceVariantId)
|
|
1140
877
|
: undefined;
|
|
1141
|
-
const merged = (0, preview_routes_1.mergePreviewRoutes)(args.previewRoutes, source
|
|
878
|
+
const merged = (0, preview_routes_1.mergePreviewRoutes)(args.previewRoutes, source && (0, workItemInput_1.isVariantWorkItem)(source)
|
|
879
|
+
? source.input.previewRoutes
|
|
880
|
+
: undefined);
|
|
1142
881
|
if (!merged.length)
|
|
1143
882
|
return;
|
|
1144
883
|
const previewRoutes = preview_routes_1.previewRoutesSchema.parse(merged);
|
|
1145
884
|
for (const workItemId of args.workItemIds) {
|
|
1146
885
|
const item = this.requireWorkItem(session, workItemId);
|
|
1147
|
-
|
|
1148
|
-
...item.input,
|
|
1149
|
-
previewRoutes: [...previewRoutes],
|
|
1150
|
-
};
|
|
886
|
+
if ((0, workItemInput_1.isVariantWorkItem)(item))
|
|
887
|
+
item.input = { ...item.input, previewRoutes: [...previewRoutes] };
|
|
1151
888
|
}
|
|
1152
889
|
}
|
|
1153
890
|
assignVariantRequestId(sessionId, workItemIds, requestId) {
|
|
1154
891
|
const session = this.requireSession(sessionId);
|
|
1155
892
|
for (const id of workItemIds) {
|
|
1156
893
|
const item = session.workItems.get(id);
|
|
1157
|
-
if (
|
|
1158
|
-
|
|
1159
|
-
const input = (item.input ?? {});
|
|
1160
|
-
item.input = { ...input, requestId };
|
|
894
|
+
if (item && (0, workItemInput_1.isVariantWorkItem)(item))
|
|
895
|
+
item.input = { ...item.input, requestId };
|
|
1161
896
|
}
|
|
1162
897
|
}
|
|
1163
898
|
getPendingRefinement(sessionId, variantId) {
|
|
1164
|
-
return [...this.requireSession(sessionId).workItems.values()].find((item) =>
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
const input = item.input;
|
|
1168
|
-
return input.variantId === variantId && item.status === 'pending';
|
|
1169
|
-
});
|
|
899
|
+
return [...this.requireSession(sessionId).workItems.values()].find((item) => item.kind === 'refine_variant' &&
|
|
900
|
+
item.input.variantId === variantId &&
|
|
901
|
+
item.status === 'pending');
|
|
1170
902
|
}
|
|
1171
903
|
appendPendingRefineVariantInstruction(args) {
|
|
1172
904
|
const refineItem = this.getPendingRefinement(args.sessionId, args.variantId);
|
|
1173
905
|
if (!refineItem)
|
|
1174
906
|
return false;
|
|
1175
|
-
const input = refineItem
|
|
907
|
+
const { input } = refineItem;
|
|
1176
908
|
input.guidance = args.guidance ?? [];
|
|
1177
909
|
input.requestId = args.requestId;
|
|
1178
910
|
input.instruction =
|
|
@@ -1192,7 +924,7 @@ class SessionStore {
|
|
|
1192
924
|
const runningRefinement = [...session.workItems.values()].find((item) => {
|
|
1193
925
|
if (item.kind !== 'refine_variant')
|
|
1194
926
|
return false;
|
|
1195
|
-
const input = item
|
|
927
|
+
const { input } = item;
|
|
1196
928
|
return input.variantId === args.variantId && item.status === 'running';
|
|
1197
929
|
});
|
|
1198
930
|
if (runningRefinement) {
|
|
@@ -1201,7 +933,7 @@ class SessionStore {
|
|
|
1201
933
|
const refineItem = [...session.workItems.values()].find((item) => {
|
|
1202
934
|
if (item.kind !== 'refine_variant')
|
|
1203
935
|
return false;
|
|
1204
|
-
const input = item
|
|
936
|
+
const { input } = item;
|
|
1205
937
|
return input.variantId === args.variantId && item.status === 'pending';
|
|
1206
938
|
});
|
|
1207
939
|
if (!refineItem) {
|
|
@@ -1299,7 +1031,7 @@ class SessionStore {
|
|
|
1299
1031
|
for (const other of session.workItems.values()) {
|
|
1300
1032
|
if (other.kind !== 'refine_variant')
|
|
1301
1033
|
continue;
|
|
1302
|
-
const input = other
|
|
1034
|
+
const { input } = other;
|
|
1303
1035
|
if (input.variantId !== item.id)
|
|
1304
1036
|
continue;
|
|
1305
1037
|
if (other.status === 'pending' || other.status === 'running') {
|
|
@@ -1318,8 +1050,8 @@ class SessionStore {
|
|
|
1318
1050
|
renameWorkItem(args) {
|
|
1319
1051
|
const session = this.requireSession(args.sessionId);
|
|
1320
1052
|
const item = this.requireWorkItem(session, args.workItemId);
|
|
1321
|
-
|
|
1322
|
-
|
|
1053
|
+
if ((0, workItemInput_1.isVariantWorkItem)(item))
|
|
1054
|
+
item.input.briefLabel = args.label;
|
|
1323
1055
|
return {
|
|
1324
1056
|
workItemId: item.id,
|
|
1325
1057
|
label: args.label,
|
|
@@ -1332,9 +1064,9 @@ class SessionStore {
|
|
|
1332
1064
|
const workItemIds = [];
|
|
1333
1065
|
for (const id of session.workItemOrder) {
|
|
1334
1066
|
const item = session.workItems.get(id);
|
|
1335
|
-
if (!item || item.removed)
|
|
1067
|
+
if (!item || item.removed || !(0, workItemInput_1.isVariantWorkItem)(item))
|
|
1336
1068
|
continue;
|
|
1337
|
-
const input = item
|
|
1069
|
+
const { input } = item;
|
|
1338
1070
|
if (input.requestId !== args.requestId)
|
|
1339
1071
|
continue;
|
|
1340
1072
|
const effective = input.runLabel ?? sessionFallback;
|
|
@@ -1401,12 +1133,7 @@ class SessionStore {
|
|
|
1401
1133
|
const { lease } = item;
|
|
1402
1134
|
if (!lease || item.status !== 'running')
|
|
1403
1135
|
return [];
|
|
1404
|
-
const
|
|
1405
|
-
? item.input
|
|
1406
|
-
: {};
|
|
1407
|
-
const variantId = item.kind === 'refine_variant' && typeof input.variantId === 'string'
|
|
1408
|
-
? input.variantId
|
|
1409
|
-
: item.id;
|
|
1136
|
+
const variantId = (item.kind === 'refine_variant' && item.input.variantId) || item.id;
|
|
1410
1137
|
return {
|
|
1411
1138
|
workId: item.id,
|
|
1412
1139
|
variantId,
|
|
@@ -1432,14 +1159,25 @@ class SessionStore {
|
|
|
1432
1159
|
hasSession(sessionId) {
|
|
1433
1160
|
return this.sessions.has(sessionId);
|
|
1434
1161
|
}
|
|
1435
|
-
|
|
1162
|
+
getVariantWorkItemInput(sessionId, workItemId) {
|
|
1436
1163
|
const session = this.requireSession(sessionId);
|
|
1437
1164
|
const item = this.requireWorkItem(session, workItemId);
|
|
1438
|
-
return item
|
|
1165
|
+
return (0, workItemInput_1.isVariantWorkItem)(item)
|
|
1166
|
+
? (0, workItemInput_1.parseVariantWorkItemInput)(item)
|
|
1167
|
+
: undefined;
|
|
1168
|
+
}
|
|
1169
|
+
requireVariantWorkItemInput(args) {
|
|
1170
|
+
const session = this.requireSession(args.sessionId);
|
|
1171
|
+
const item = this.requireWorkItem(session, args.workItemId);
|
|
1172
|
+
const kind = args.kinds.find((candidate) => candidate === item.kind);
|
|
1173
|
+
if (!kind) {
|
|
1174
|
+
throw new errors_1.AgentVariantsError('WORK_ITEM_NOT_FOUND', `Work item ${item.id} is a ${item.kind} work item, not ${args.kinds.join(' or ')}`);
|
|
1175
|
+
}
|
|
1176
|
+
return (0, workItemInput_1.parseVariantWorkItemInput)({ id: item.id, kind, input: item.input });
|
|
1439
1177
|
}
|
|
1440
1178
|
getWorkItemIdsForRequest(sessionId, requestId) {
|
|
1441
1179
|
return [...this.requireSession(sessionId).workItems.values()]
|
|
1442
|
-
.filter((item) => item.input.requestId === requestId)
|
|
1180
|
+
.filter((item) => (0, workItemInput_1.isVariantWorkItem)(item) && item.input.requestId === requestId)
|
|
1443
1181
|
.map((item) => item.id);
|
|
1444
1182
|
}
|
|
1445
1183
|
getWorkItemOutput(sessionId, workItemId) {
|
|
@@ -1463,7 +1201,7 @@ class SessionStore {
|
|
|
1463
1201
|
}
|
|
1464
1202
|
isVaryForkWorkItem(sessionId, workItemId) {
|
|
1465
1203
|
const item = this.sessions.get(sessionId)?.workItems.get(workItemId);
|
|
1466
|
-
return Boolean(item && item.input.sourceVariantId);
|
|
1204
|
+
return Boolean(item && (0, workItemInput_1.isVariantWorkItem)(item) && item.input.sourceVariantId);
|
|
1467
1205
|
}
|
|
1468
1206
|
isWorkItemAborted(sessionId, workItemId) {
|
|
1469
1207
|
const session = this.sessions.get(sessionId);
|
|
@@ -1551,8 +1289,7 @@ class SessionStore {
|
|
|
1551
1289
|
return out;
|
|
1552
1290
|
}
|
|
1553
1291
|
hasLeasableCodeGenForStaticPreview(session, staticPreview) {
|
|
1554
|
-
|
|
1555
|
-
if (!staticInput.briefId)
|
|
1292
|
+
if (!(0, workItemInput_1.isVariantWorkItem)(staticPreview) || !staticPreview.input.briefId)
|
|
1556
1293
|
return false;
|
|
1557
1294
|
for (const candidate of session.workItems.values()) {
|
|
1558
1295
|
if (candidate.kind !== 'code_gen')
|
|
@@ -1561,8 +1298,7 @@ class SessionStore {
|
|
|
1561
1298
|
continue;
|
|
1562
1299
|
if (!this.dependenciesMet(session, candidate))
|
|
1563
1300
|
continue;
|
|
1564
|
-
|
|
1565
|
-
if (codeInput.briefId === staticInput.briefId)
|
|
1301
|
+
if (candidate.input.briefId === staticPreview.input.briefId)
|
|
1566
1302
|
return true;
|
|
1567
1303
|
}
|
|
1568
1304
|
return false;
|
|
@@ -1646,11 +1382,6 @@ class SessionStore {
|
|
|
1646
1382
|
};
|
|
1647
1383
|
}
|
|
1648
1384
|
progressOf(session) {
|
|
1649
|
-
if (session.stage === 'awaiting_source_plan') {
|
|
1650
|
-
const planItems = [...session.workItems.values()].filter((item) => item.kind === 'source_plan');
|
|
1651
|
-
const ready = planItems.filter((item) => item.status === 'succeeded').length;
|
|
1652
|
-
return { ready, total: planItems.length };
|
|
1653
|
-
}
|
|
1654
1385
|
const items = this.terminalItems(session);
|
|
1655
1386
|
const ready = items.filter((i) => i.status === 'succeeded').length;
|
|
1656
1387
|
return { ready, total: items.length };
|
|
@@ -1661,14 +1392,11 @@ class SessionStore {
|
|
|
1661
1392
|
successCount: items.filter((i) => i.status === 'succeeded').length,
|
|
1662
1393
|
failureCount: items.filter((i) => i.status === 'failed').length,
|
|
1663
1394
|
cancelledCount: items.filter((i) => i.status === 'cancelled').length,
|
|
1664
|
-
variants: items.map((i) => {
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
label: input.briefLabel,
|
|
1670
|
-
};
|
|
1671
|
-
}),
|
|
1395
|
+
variants: items.map((i) => ({
|
|
1396
|
+
workItemId: i.id,
|
|
1397
|
+
status: i.status,
|
|
1398
|
+
label: (0, workItemInput_1.isVariantWorkItem)(i) ? i.input.briefLabel : undefined,
|
|
1399
|
+
})),
|
|
1672
1400
|
};
|
|
1673
1401
|
}
|
|
1674
1402
|
refinementSnapshotPriority(item) {
|
|
@@ -1684,7 +1412,7 @@ class SessionStore {
|
|
|
1684
1412
|
for (const item of session.workItems.values()) {
|
|
1685
1413
|
if (item.kind !== 'refine_variant')
|
|
1686
1414
|
continue;
|
|
1687
|
-
const input = item
|
|
1415
|
+
const { input } = item;
|
|
1688
1416
|
if (!input.variantId)
|
|
1689
1417
|
continue;
|
|
1690
1418
|
const existing = refinementsByVariantId.get(input.variantId);
|
|
@@ -1698,14 +1426,14 @@ class SessionStore {
|
|
|
1698
1426
|
.map((id) => session.workItems.get(id))
|
|
1699
1427
|
.filter((i) => !!i &&
|
|
1700
1428
|
!i.removed &&
|
|
1429
|
+
(0, workItemInput_1.isVariantWorkItem)(i) &&
|
|
1701
1430
|
(i.kind === kind ||
|
|
1702
1431
|
isAdoptedVariant(i) ||
|
|
1703
1432
|
isForkedStaticPreviewVariant(i)))
|
|
1704
1433
|
.map((item) => {
|
|
1705
|
-
const input = item
|
|
1434
|
+
const { input } = item;
|
|
1706
1435
|
const refineItem = refinementsByVariantId.get(item.id);
|
|
1707
|
-
const refineRequestId = refineItem?.input
|
|
1708
|
-
?.requestId;
|
|
1436
|
+
const refineRequestId = refineItem?.input.requestId;
|
|
1709
1437
|
return {
|
|
1710
1438
|
workItemId: item.id,
|
|
1711
1439
|
...(input.previewRoutes
|