feat: serverless worker create form wired to CreateWorkerDeployment API#3236
Draft
rossnelson wants to merge 9 commits intoworker-insightsfrom
Draft
feat: serverless worker create form wired to CreateWorkerDeployment API#3236rossnelson wants to merge 9 commits intoworker-insightsfrom
rossnelson wants to merge 9 commits intoworker-insightsfrom
Conversation
Brings in net-new files only — types, mocked service layer, form components, pages, and routes for create/edit/detail/delete flows. No existing files touched yet.
Additive-only changes: new worker API types (ListWorkers, DescribeWorker, WorkerStatus, WorkerHostInfo), new route path types, and all i18n strings for serverless worker CRUD flows.
- Route files at /workers/deployments/[namespace]/workers/deployments/serverless/{create,[id],[id]/edit}
- Route helpers: routeForServerlessWorkerCreate, routeForServerlessWorker, routeForServerlessWorkerEdit
- New Holocene components: RadioCard, Timeline, TimelineStep
- i18n strings for serverless worker detail page
- Fix HeartBeat usage in serverless-worker-status (no color prop)
- Map form fields to API: name→deploymentName, lambdaArn/iamRoleArn/region→computeConfig.provider.detailJson, minInstances/maxInstances→computeConfig.scaler - Replace per-field blur validation with single Validate Connection button - Add min/max instances scaling fields (hidden behind toggle) - Add ComputeProvider, ComputeScaler, CreateWorkerDeploymentRequest types
- Drop region from createSchema and form UI
- Extract region from lambdaArn.split(':')[3] in create page
- Move validation to onUpdate handler (validates on submit, not separate button)
- Clean up unused imports (regions, ValidationState, validateRegion)
- Refactor deployments.svelte page layout and routing - Slim down serverless-worker-service to remove mock validation stubs - Add CapabilityGuard component and deployments empty state - Update types index and layout for serverless deployments route - Update deployments i18n strings - Update server go.mod/go.sum dependencies
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
| localFilters = [ | ||
| createFilter({ | ||
| attribute, | ||
| type: 'Keyword', |
Contributor
There was a problem hiding this comment.
⚠️ Type 'string | null' is not assignable to type 'string | undefined'.
| createFilter({ | ||
| attribute, | ||
| parenthesis: localFilters.length ? ')' : '', | ||
| type: 'Keyword', |
Contributor
There was a problem hiding this comment.
⚠️ Type 'string | null' is not assignable to type 'string | undefined'.
| }; | ||
|
|
||
| const superform = superForm(initialData, { | ||
| SPA: true, |
Contributor
There was a problem hiding this comment.
⚠️ Type 'ClientValidationAdapter<{ name: string; lambdaArn: string; iamRoleArn: string; minInstances?: number | undefined; maxInstances?: number | undefined; }, { name: string; lambdaArn: string; iamRoleArn: string; minInstances?: number | undefined; maxInstances?: number | undefined; }>' is not assignable to type 'ClientValidationAdapter<Partial<{ name: string; lambdaArn: string; iamRoleArn: string; region: string; minInstances: undefined; maxInstances: undefined; }>, Record<string, unknown>> | ValidatorsOption<...> | undefined'.
| ? String($form.minInstances) | ||
| : ''} | ||
| oninput={(e) => { | ||
| const val = (e.currentTarget as HTMLInputElement).value; |
Contributor
There was a problem hiding this comment.
⚠️ Type 'number | undefined' is not assignable to type 'undefined'.
| ? String($form.maxInstances) | ||
| : ''} | ||
| oninput={(e) => { | ||
| const val = (e.currentTarget as HTMLInputElement).value; |
Contributor
There was a problem hiding this comment.
⚠️ Type 'number | undefined' is not assignable to type 'undefined'.
|
|
||
| if (!filter || filter.value !== value) { | ||
| const newFilter: SearchAttributeFilter = createFilter({ | ||
| attribute, |
Contributor
There was a problem hiding this comment.
⚠️ Type 'string | null | undefined' is not assignable to type 'string | undefined'.
| /> | ||
| </div> | ||
| </div> | ||
| <CodecServerErrorBanner /> |
Contributor
There was a problem hiding this comment.
⚠️ Type 'WorkflowExecution | null' is not assignable to type 'WorkflowExecution'.
| {translate('workers.back-to-workers')} | ||
| </Link> | ||
| <span class="text-secondary">|</span> | ||
| <Link |
Contributor
There was a problem hiding this comment.
⚠️ Type 'string | undefined' is not assignable to type 'string'.
| </td> | ||
| <td> | ||
| <Link | ||
| class="inline-flex items-center gap-1" |
Contributor
There was a problem hiding this comment.
⚠️ Type 'string | undefined' is not assignable to type 'string'.
Contributor
|
On xl screens the setup guide stays as a sticky card in the right column. Below xl a ghost button in the page title opens it in a right-side drawer. The guide component is now pure content — Card and sticky are applied at the callsite.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/workers/deployments/serverless/CreateWorkerDeploymentAPI: name →deploymentName, lambdaArn/iamRoleArn →computeConfig.provider.detailJson, min/maxInstances →computeConfig.scalerarn:aws:lambda:<region>:...)onUpdatehandler) instead of a separate "Validate Connection" button — errors surface inline under the respective fieldsComputeProvider,ComputeScaler,CreateWorkerDeploymentRequesttypesTest plan
CreateWorkerDeploymentwith correct payload (region extracted from ARN)