chore: remove coder/preview dependency from codersdk (#17939)

This commit is contained in:
Steven Masley
2025-05-20 10:45:12 -05:00
committed by GitHub
parent e76d58f2b6
commit a123900fe8
11 changed files with 292 additions and 87 deletions

View File

@ -226,7 +226,7 @@ func (pr *ParameterResolver) resolveWithInput(resolved []codersdk.WorkspaceBuild
if p != nil {
continue
}
// Parameter has not been resolved yet, so CLI needs to determine if user should input it.
// PreviewParameter has not been resolved yet, so CLI needs to determine if user should input it.
firstTimeUse := pr.isFirstTimeUse(tvp.Name)
promptParameterOption := pr.isLastBuildParameterInvalidOption(tvp)

View File

@ -12,6 +12,7 @@ import (
"time"
"github.com/google/uuid"
"github.com/hashicorp/hcl/v2"
"golang.org/x/xerrors"
"tailscale.com/tailcfg"
@ -24,6 +25,7 @@ import (
"github.com/coder/coder/v2/codersdk"
"github.com/coder/coder/v2/provisionersdk/proto"
"github.com/coder/coder/v2/tailnet"
previewtypes "github.com/coder/preview/types"
)
// List is a helper function to reduce boilerplate when converting slices of
@ -764,3 +766,83 @@ func Chat(chat database.Chat) codersdk.Chat {
func Chats(chats []database.Chat) []codersdk.Chat {
return List(chats, Chat)
}
func PreviewParameter(param previewtypes.Parameter) codersdk.PreviewParameter {
return codersdk.PreviewParameter{
PreviewParameterData: codersdk.PreviewParameterData{
Name: param.Name,
DisplayName: param.DisplayName,
Description: param.Description,
Type: codersdk.OptionType(param.Type),
FormType: codersdk.ParameterFormType(param.FormType),
Styling: codersdk.PreviewParameterStyling{
Placeholder: param.Styling.Placeholder,
Disabled: param.Styling.Disabled,
Label: param.Styling.Label,
},
Mutable: param.Mutable,
DefaultValue: PreviewHCLString(param.DefaultValue),
Icon: param.Icon,
Options: List(param.Options, PreviewParameterOption),
Validations: List(param.Validations, PreviewParameterValidation),
Required: param.Required,
Order: param.Order,
Ephemeral: param.Ephemeral,
},
Value: PreviewHCLString(param.Value),
Diagnostics: PreviewDiagnostics(param.Diagnostics),
}
}
func HCLDiagnostics(d hcl.Diagnostics) []codersdk.FriendlyDiagnostic {
return PreviewDiagnostics(previewtypes.Diagnostics(d))
}
func PreviewDiagnostics(d previewtypes.Diagnostics) []codersdk.FriendlyDiagnostic {
f := d.FriendlyDiagnostics()
return List(f, func(f previewtypes.FriendlyDiagnostic) codersdk.FriendlyDiagnostic {
return codersdk.FriendlyDiagnostic{
Severity: codersdk.DiagnosticSeverityString(f.Severity),
Summary: f.Summary,
Detail: f.Detail,
Extra: codersdk.DiagnosticExtra{
Code: f.Extra.Code,
},
}
})
}
func PreviewHCLString(h previewtypes.HCLString) codersdk.NullHCLString {
n := h.NullHCLString()
return codersdk.NullHCLString{
Value: n.Value,
Valid: n.Valid,
}
}
func PreviewParameterOption(o *previewtypes.ParameterOption) codersdk.PreviewParameterOption {
if o == nil {
// This should never be sent
return codersdk.PreviewParameterOption{}
}
return codersdk.PreviewParameterOption{
Name: o.Name,
Description: o.Description,
Value: PreviewHCLString(o.Value),
Icon: o.Icon,
}
}
func PreviewParameterValidation(v *previewtypes.ParameterValidation) codersdk.PreviewParameterValidation {
if v == nil {
// This should never be sent
return codersdk.PreviewParameterValidation{}
}
return codersdk.PreviewParameterValidation{
Error: v.Error,
Regex: v.Regex,
Min: v.Min,
Max: v.Max,
Monotonic: v.Monotonic,
}
}

View File

@ -13,6 +13,7 @@ import (
"golang.org/x/xerrors"
"github.com/coder/coder/v2/coderd/database"
"github.com/coder/coder/v2/coderd/database/db2sdk"
"github.com/coder/coder/v2/coderd/database/dbauthz"
"github.com/coder/coder/v2/coderd/files"
"github.com/coder/coder/v2/coderd/httpapi"
@ -286,10 +287,10 @@ func (api *API) handleParameterWebsocket(rw http.ResponseWriter, r *http.Request
result, diagnostics := render(ctx, map[string]string{})
response := codersdk.DynamicParametersResponse{
ID: -1, // Always start with -1.
Diagnostics: previewtypes.Diagnostics(diagnostics),
Diagnostics: db2sdk.HCLDiagnostics(diagnostics),
}
if result != nil {
response.Parameters = result.Parameters
response.Parameters = db2sdk.List(result.Parameters, db2sdk.PreviewParameter)
}
err = stream.Send(response)
if err != nil {
@ -314,10 +315,10 @@ func (api *API) handleParameterWebsocket(rw http.ResponseWriter, r *http.Request
result, diagnostics := render(ctx, update.Inputs)
response := codersdk.DynamicParametersResponse{
ID: update.ID,
Diagnostics: previewtypes.Diagnostics(diagnostics),
Diagnostics: db2sdk.HCLDiagnostics(diagnostics),
}
if result != nil {
response.Parameters = result.Parameters
response.Parameters = db2sdk.List(result.Parameters, db2sdk.PreviewParameter)
}
err = stream.Send(response)
if err != nil {

View File

@ -68,8 +68,8 @@ func TestDynamicParametersOwnerSSHPublicKey(t *testing.T) {
require.Equal(t, -1, preview.ID)
require.Empty(t, preview.Diagnostics)
require.Equal(t, "public_key", preview.Parameters[0].Name)
require.True(t, preview.Parameters[0].Value.Valid())
require.Equal(t, sshKey.PublicKey, preview.Parameters[0].Value.Value.AsString())
require.True(t, preview.Parameters[0].Value.Valid)
require.Equal(t, sshKey.PublicKey, preview.Parameters[0].Value.Value)
}
func TestDynamicParametersWithTerraformValues(t *testing.T) {
@ -103,8 +103,8 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
require.Len(t, preview.Parameters, 1)
require.Equal(t, "jetbrains_ide", preview.Parameters[0].Name)
require.True(t, preview.Parameters[0].Value.Valid())
require.Equal(t, "CL", preview.Parameters[0].Value.AsString())
require.True(t, preview.Parameters[0].Value.Valid)
require.Equal(t, "CL", preview.Parameters[0].Value.Value)
})
// OldProvisioners use the static parameters in the dynamic param flow
@ -154,8 +154,8 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
require.Contains(t, preview.Diagnostics[0].Summary, "required metadata to support dynamic parameters")
require.Len(t, preview.Parameters, 1)
require.Equal(t, "jetbrains_ide", preview.Parameters[0].Name)
require.True(t, preview.Parameters[0].Value.Valid())
require.Equal(t, defaultValue, preview.Parameters[0].Value.AsString())
require.True(t, preview.Parameters[0].Value.Valid)
require.Equal(t, defaultValue, preview.Parameters[0].Value.Value)
// Test some inputs
for _, exp := range []string{defaultValue, "GO", "Invalid", defaultValue} {
@ -182,8 +182,8 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
require.Len(t, preview.Parameters[0].Diagnostics, 0)
}
require.Equal(t, "jetbrains_ide", preview.Parameters[0].Name)
require.True(t, preview.Parameters[0].Value.Valid())
require.Equal(t, exp, preview.Parameters[0].Value.AsString())
require.True(t, preview.Parameters[0].Value.Valid)
require.Equal(t, exp, preview.Parameters[0].Value.Value)
}
})

View File

@ -7,17 +7,121 @@ import (
"github.com/google/uuid"
"github.com/coder/coder/v2/codersdk/wsjson"
previewtypes "github.com/coder/preview/types"
"github.com/coder/websocket"
)
// FriendlyDiagnostic is included to guarantee it is generated in the output
// types. This is used as the type override for `previewtypes.Diagnostic`.
type FriendlyDiagnostic = previewtypes.FriendlyDiagnostic
type ParameterFormType string
// NullHCLString is included to guarantee it is generated in the output
// types. This is used as the type override for `previewtypes.HCLString`.
type NullHCLString = previewtypes.NullHCLString
const (
ParameterFormTypeDefault ParameterFormType = ""
ParameterFormTypeRadio ParameterFormType = "radio"
ParameterFormTypeSlider ParameterFormType = "slider"
ParameterFormTypeInput ParameterFormType = "input"
ParameterFormTypeDropdown ParameterFormType = "dropdown"
ParameterFormTypeCheckbox ParameterFormType = "checkbox"
ParameterFormTypeSwitch ParameterFormType = "switch"
ParameterFormTypeMultiSelect ParameterFormType = "multi-select"
ParameterFormTypeTagSelect ParameterFormType = "tag-select"
ParameterFormTypeTextArea ParameterFormType = "textarea"
ParameterFormTypeError ParameterFormType = "error"
)
type OptionType string
const (
OptionTypeString OptionType = "string"
OptionTypeNumber OptionType = "number"
OptionTypeBoolean OptionType = "bool"
OptionTypeListString OptionType = "list(string)"
)
type DiagnosticSeverityString string
const (
DiagnosticSeverityError DiagnosticSeverityString = "error"
DiagnosticSeverityWarning DiagnosticSeverityString = "warning"
)
// FriendlyDiagnostic == previewtypes.FriendlyDiagnostic
// Copied to avoid import deps
type FriendlyDiagnostic struct {
Severity DiagnosticSeverityString `json:"severity"`
Summary string `json:"summary"`
Detail string `json:"detail"`
Extra DiagnosticExtra `json:"extra"`
}
type DiagnosticExtra struct {
Code string `json:"code"`
}
// NullHCLString == `previewtypes.NullHCLString`.
type NullHCLString struct {
Value string `json:"value"`
Valid bool `json:"valid"`
}
type PreviewParameter struct {
PreviewParameterData
Value NullHCLString `json:"value"`
Diagnostics []FriendlyDiagnostic `json:"diagnostics"`
}
type PreviewParameterData struct {
Name string `json:"name"`
DisplayName string `json:"display_name"`
Description string `json:"description"`
Type OptionType `json:"type"`
FormType ParameterFormType `json:"form_type"`
Styling PreviewParameterStyling `json:"styling"`
Mutable bool `json:"mutable"`
DefaultValue NullHCLString `json:"default_value"`
Icon string `json:"icon"`
Options []PreviewParameterOption `json:"options"`
Validations []PreviewParameterValidation `json:"validations"`
Required bool `json:"required"`
// legacy_variable_name was removed (= 14)
Order int64 `json:"order"`
Ephemeral bool `json:"ephemeral"`
}
type PreviewParameterStyling struct {
Placeholder *string `json:"placeholder,omitempty"`
Disabled *bool `json:"disabled,omitempty"`
Label *string `json:"label,omitempty"`
}
type PreviewParameterOption struct {
Name string `json:"name"`
Description string `json:"description"`
Value NullHCLString `json:"value"`
Icon string `json:"icon"`
}
type PreviewParameterValidation struct {
Error string `json:"validation_error"`
// All validation attributes are optional.
Regex *string `json:"validation_regex"`
Min *int64 `json:"validation_min"`
Max *int64 `json:"validation_max"`
Monotonic *string `json:"validation_monotonic"`
}
type DynamicParametersRequest struct {
// ID identifies the request. The response contains the same
// ID so that the client can match it to the request.
ID int `json:"id"`
Inputs map[string]string `json:"inputs"`
}
type DynamicParametersResponse struct {
ID int `json:"id"`
Diagnostics []FriendlyDiagnostic `json:"diagnostics"`
Parameters []PreviewParameter `json:"parameters"`
// TODO: Workspace tags
}
func (c *Client) TemplateVersionDynamicParameters(ctx context.Context, userID, version uuid.UUID) (*wsjson.Stream[DynamicParametersResponse, DynamicParametersRequest], error) {
conn, err := c.Dial(ctx, fmt.Sprintf("/api/v2/users/%s/templateversions/%s/parameters", userID, version), nil)

View File

@ -9,8 +9,6 @@ import (
"time"
"github.com/google/uuid"
previewtypes "github.com/coder/preview/types"
)
type TemplateVersionWarning string
@ -125,20 +123,6 @@ func (c *Client) CancelTemplateVersion(ctx context.Context, version uuid.UUID) e
return nil
}
type DynamicParametersRequest struct {
// ID identifies the request. The response contains the same
// ID so that the client can match it to the request.
ID int `json:"id"`
Inputs map[string]string `json:"inputs"`
}
type DynamicParametersResponse struct {
ID int `json:"id"`
Diagnostics previewtypes.Diagnostics `json:"diagnostics"`
Parameters []previewtypes.Parameter `json:"parameters"`
// TODO: Workspace tags
}
// TemplateVersionParameters returns parameters a template version exposes.
func (c *Client) TemplateVersionRichParameters(ctx context.Context, version uuid.UUID) ([]TemplateVersionParameter, error) {
res, err := c.Request(ctx, http.MethodGet, fmt.Sprintf("/api/v2/templateversions/%s/rich-parameters", version), nil)

View File

@ -70,8 +70,8 @@ func TestDynamicParametersOwnerGroups(t *testing.T) {
require.Equal(t, -1, preview.ID)
require.Empty(t, preview.Diagnostics)
require.Equal(t, "group", preview.Parameters[0].Name)
require.True(t, preview.Parameters[0].Value.Valid())
require.Equal(t, database.EveryoneGroup, preview.Parameters[0].Value.Value.AsString())
require.True(t, preview.Parameters[0].Value.Valid)
require.Equal(t, database.EveryoneGroup, preview.Parameters[0].Value.Value)
// Send a new value, and see it reflected
err = stream.Send(codersdk.DynamicParametersRequest{
@ -83,8 +83,8 @@ func TestDynamicParametersOwnerGroups(t *testing.T) {
require.Equal(t, 1, preview.ID)
require.Empty(t, preview.Diagnostics)
require.Equal(t, "group", preview.Parameters[0].Name)
require.True(t, preview.Parameters[0].Value.Valid())
require.Equal(t, group.Name, preview.Parameters[0].Value.Value.AsString())
require.True(t, preview.Parameters[0].Value.Valid)
require.Equal(t, group.Name, preview.Parameters[0].Value.Value)
// Back to default
err = stream.Send(codersdk.DynamicParametersRequest{
@ -96,6 +96,6 @@ func TestDynamicParametersOwnerGroups(t *testing.T) {
require.Equal(t, 3, preview.ID)
require.Empty(t, preview.Diagnostics)
require.Equal(t, "group", preview.Parameters[0].Name)
require.True(t, preview.Parameters[0].Value.Valid())
require.Equal(t, database.EveryoneGroup, preview.Parameters[0].Value.Value.AsString())
require.True(t, preview.Parameters[0].Value.Valid)
require.Equal(t, database.EveryoneGroup, preview.Parameters[0].Value.Value)
}

8
go.mod
View File

@ -96,12 +96,12 @@ require (
github.com/chromedp/chromedp v0.13.3
github.com/cli/safeexec v1.0.1
github.com/coder/flog v1.1.0
github.com/coder/guts v1.3.1-0.20250428170043-ad369017e95b
github.com/coder/guts v1.5.0
github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0
github.com/coder/quartz v0.1.3
github.com/coder/retry v1.5.1
github.com/coder/serpent v0.10.0
github.com/coder/terraform-provider-coder/v2 v2.4.1
github.com/coder/terraform-provider-coder/v2 v2.4.2
github.com/coder/websocket v1.8.13
github.com/coder/wgtunnel v0.1.13-0.20240522110300-ade90dfb2da0
github.com/coreos/go-oidc/v3 v3.14.1
@ -204,7 +204,7 @@ require (
golang.org/x/sys v0.33.0
golang.org/x/term v0.32.0
golang.org/x/text v0.25.0 // indirect
golang.org/x/tools v0.32.0
golang.org/x/tools v0.33.0
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da
google.golang.org/api v0.231.0
google.golang.org/grpc v1.72.0
@ -485,7 +485,7 @@ require (
require (
github.com/anthropics/anthropic-sdk-go v0.2.0-beta.3
github.com/coder/preview v0.0.2-0.20250516233606-a1da43489319
github.com/coder/preview v0.0.2-0.20250520134327-ac391431027d
github.com/fsnotify/fsnotify v1.9.0
github.com/kylecarbs/aisdk-go v0.0.8
github.com/mark3labs/mcp-go v0.28.0

16
go.sum
View File

@ -905,14 +905,14 @@ github.com/coder/go-httpstat v0.0.0-20230801153223-321c88088322 h1:m0lPZjlQ7vdVp
github.com/coder/go-httpstat v0.0.0-20230801153223-321c88088322/go.mod h1:rOLFDDVKVFiDqZFXoteXc97YXx7kFi9kYqR+2ETPkLQ=
github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136 h1:0RgB61LcNs24WOxc3PBvygSNTQurm0PYPujJjLLOzs0=
github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136/go.mod h1:VkD1P761nykiq75dz+4iFqIQIZka189tx1BQLOp0Skc=
github.com/coder/guts v1.3.1-0.20250428170043-ad369017e95b h1:tfLKcE2s6D7YpFk7MUUCDE0Xbbmac+k2GqO8KMjv/Ug=
github.com/coder/guts v1.3.1-0.20250428170043-ad369017e95b/go.mod h1:31NO4z6MVTOD4WaCLqE/hUAHGgNok9sRbuMc/LZFopI=
github.com/coder/guts v1.5.0 h1:a94apf7xMf5jDdg1bIHzncbRiTn3+BvBZgrFSDbUnyI=
github.com/coder/guts v1.5.0/go.mod h1:0Sbv5Kp83u1Nl7MIQiV2zmacJ3o02I341bkWkjWXSUQ=
github.com/coder/pq v1.10.5-0.20240813183442-0c420cb5a048 h1:3jzYUlGH7ZELIH4XggXhnTnP05FCYiAFeQpoN+gNR5I=
github.com/coder/pq v1.10.5-0.20240813183442-0c420cb5a048/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0 h1:3A0ES21Ke+FxEM8CXx9n47SZOKOpgSE1bbJzlE4qPVs=
github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0/go.mod h1:5UuS2Ts+nTToAMeOjNlnHFkPahrtDkmpydBen/3wgZc=
github.com/coder/preview v0.0.2-0.20250516233606-a1da43489319 h1:flPwcvOZ9RwENDYcLOnfYEClbKWfFvpQCddODdSS6Co=
github.com/coder/preview v0.0.2-0.20250516233606-a1da43489319/go.mod h1:GfkwIv5gQLpL01qeGU1/YoxoFtt5trzCqnWZLo77clU=
github.com/coder/preview v0.0.2-0.20250520134327-ac391431027d h1:MxAAuqcno5hMM45Ihl3KAjVOXbyZyt/+tjSiq9XMTC0=
github.com/coder/preview v0.0.2-0.20250520134327-ac391431027d/go.mod h1:9bwyhQSVDjcxAWuFFaG6/qBqhaiW5oqF5PEQMhevKLs=
github.com/coder/quartz v0.1.3 h1:hA2nI8uUA2fNN9uhXv2I4xZD4aHkA7oH3g2t03v4xf8=
github.com/coder/quartz v0.1.3/go.mod h1:vsiCc+AHViMKH2CQpGIpFgdHIEQsxwm8yCscqKmzbRA=
github.com/coder/retry v1.5.1 h1:iWu8YnD8YqHs3XwqrqsjoBTAVqT9ml6z9ViJ2wlMiqc=
@ -925,8 +925,8 @@ github.com/coder/tailscale v1.1.1-0.20250422090654-5090e715905e h1:nope/SZfoLB9M
github.com/coder/tailscale v1.1.1-0.20250422090654-5090e715905e/go.mod h1:1ggFFdHTRjPRu9Yc1yA7nVHBYB50w9Ce7VIXNqcW6Ko=
github.com/coder/terraform-config-inspect v0.0.0-20250107175719-6d06d90c630e h1:JNLPDi2P73laR1oAclY6jWzAbucf70ASAvf5mh2cME0=
github.com/coder/terraform-config-inspect v0.0.0-20250107175719-6d06d90c630e/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI=
github.com/coder/terraform-provider-coder/v2 v2.4.1 h1:+HxLJVENJ+kvGhibQ0jbr8Evi6M857d9691ytxNbv90=
github.com/coder/terraform-provider-coder/v2 v2.4.1/go.mod h1:2kaBpn5k9ZWtgKq5k4JbkVZG9DzEqR4mJSmpdshcO+s=
github.com/coder/terraform-provider-coder/v2 v2.4.2 h1:41SJkgwgiA555kwQzGIQcNS3bCm12sVMUmBSa5zGr+A=
github.com/coder/terraform-provider-coder/v2 v2.4.2/go.mod h1:2kaBpn5k9ZWtgKq5k4JbkVZG9DzEqR4mJSmpdshcO+s=
github.com/coder/trivy v0.0.0-20250409153844-e6b004bc465a h1:yryP7e+IQUAArlycH4hQrjXQ64eRNbxsV5/wuVXHgME=
github.com/coder/trivy v0.0.0-20250409153844-e6b004bc465a/go.mod h1:dDvq9axp3kZsT63gY2Znd1iwzfqDq3kXbQnccIrjRYY=
github.com/coder/websocket v1.8.13 h1:f3QZdXy7uGVz+4uCJy2nTZyM0yTBj8yANEHhqlXZ9FE=
@ -2412,8 +2412,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU=
golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s=
golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc=
golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

View File

@ -349,7 +349,7 @@ export interface ConvertLoginRequest {
// From codersdk/chat.go
export interface CreateChatMessageRequest {
readonly model: string;
// embedded anonymous struct, please fix by naming it
// external type "github.com/kylecarbs/aisdk-go.Message", to include this type the package must be explicitly included in the parsing
readonly message: unknown;
readonly thinking: boolean;
}
@ -741,6 +741,19 @@ export interface DeploymentValues {
readonly address?: string;
}
// From codersdk/parameters.go
export interface DiagnosticExtra {
readonly code: string;
}
// From codersdk/parameters.go
export type DiagnosticSeverityString = "error" | "warning";
export const DiagnosticSeverityStrings: DiagnosticSeverityString[] = [
"error",
"warning",
];
// From codersdk/workspaceagents.go
export type DisplayApp =
| "port_forwarding_helper"
@ -757,16 +770,16 @@ export const DisplayApps: DisplayApp[] = [
"web_terminal",
];
// From codersdk/templateversions.go
// From codersdk/parameters.go
export interface DynamicParametersRequest {
readonly id: number;
readonly inputs: Record<string, string>;
}
// From codersdk/templateversions.go
// From codersdk/parameters.go
export interface DynamicParametersResponse {
readonly id: number;
readonly diagnostics: PreviewDiagnostics;
readonly diagnostics: readonly FriendlyDiagnostic[];
readonly parameters: readonly PreviewParameter[];
}
@ -969,10 +982,10 @@ export const FormatZip = "zip";
// From codersdk/parameters.go
export interface FriendlyDiagnostic {
readonly severity: PreviewDiagnosticSeverityString;
readonly severity: DiagnosticSeverityString;
readonly summary: string;
readonly detail: string;
readonly extra: PreviewDiagnosticExtra;
readonly extra: DiagnosticExtra;
}
// From codersdk/apikey.go
@ -1596,6 +1609,16 @@ export interface OIDCConfig {
readonly skip_issuer_checks: boolean;
}
// From codersdk/parameters.go
export type OptionType = "bool" | "list(string)" | "number" | "string";
export const OptionTypes: OptionType[] = [
"bool",
"list(string)",
"number",
"string",
];
// From codersdk/organizations.go
export interface Organization extends MinimalOrganization {
readonly description: string;
@ -1663,6 +1686,34 @@ export interface Pagination {
readonly offset?: number;
}
// From codersdk/parameters.go
export type ParameterFormType =
| "checkbox"
| ""
| "dropdown"
| "error"
| "input"
| "multi-select"
| "radio"
| "slider"
| "switch"
| "tag-select"
| "textarea";
export const ParameterFormTypes: ParameterFormType[] = [
"checkbox",
"",
"dropdown",
"error",
"input",
"multi-select",
"radio",
"slider",
"switch",
"tag-select",
"textarea",
];
// From codersdk/idpsync.go
export interface PatchGroupIDPSyncConfigRequest {
readonly field: string;
@ -1778,33 +1829,19 @@ export interface PresetParameter {
readonly Value: string;
}
// From types/diagnostics.go
export interface PreviewDiagnosticExtra {
readonly code: string;
// empty interface{} type, falling back to unknown
readonly Wrapped: unknown;
}
// From types/diagnostics.go
export type PreviewDiagnosticSeverityString = string;
// From types/diagnostics.go
export type PreviewDiagnostics = readonly FriendlyDiagnostic[];
// From types/parameter.go
// From codersdk/parameters.go
export interface PreviewParameter extends PreviewParameterData {
readonly value: NullHCLString;
readonly diagnostics: PreviewDiagnostics;
readonly diagnostics: readonly FriendlyDiagnostic[];
}
// From types/parameter.go
// From codersdk/parameters.go
export interface PreviewParameterData {
readonly name: string;
readonly display_name: string;
readonly description: string;
readonly type: PreviewParameterType;
// this is likely an enum in an external package "github.com/coder/terraform-provider-coder/v2/provider.ParameterFormType"
readonly form_type: string;
readonly type: OptionType;
readonly form_type: ParameterFormType;
readonly styling: PreviewParameterStyling;
readonly mutable: boolean;
readonly default_value: NullHCLString;
@ -1816,7 +1853,7 @@ export interface PreviewParameterData {
readonly ephemeral: boolean;
}
// From types/parameter.go
// From codersdk/parameters.go
export interface PreviewParameterOption {
readonly name: string;
readonly description: string;
@ -1824,17 +1861,14 @@ export interface PreviewParameterOption {
readonly icon: string;
}
// From types/parameter.go
// From codersdk/parameters.go
export interface PreviewParameterStyling {
readonly placeholder?: string;
readonly disabled?: boolean;
readonly label?: string;
}
// From types/enum.go
export type PreviewParameterType = string;
// From types/parameter.go
// From codersdk/parameters.go
export interface PreviewParameterValidation {
readonly validation_error: string;
readonly validation_regex: string | null;

View File

@ -1,5 +1,5 @@
import type * as TypesGen from "api/typesGenerated";
import type { PreviewDiagnostics, PreviewParameter } from "api/typesGenerated";
import type { FriendlyDiagnostic, PreviewParameter } from "api/typesGenerated";
import { Alert } from "components/Alert/Alert";
import { ErrorAlert } from "components/Alert/ErrorAlert";
import { Avatar } from "components/Avatar/Avatar";
@ -51,7 +51,7 @@ export interface CreateWorkspacePageViewExperimentalProps {
creatingWorkspace: boolean;
defaultName?: string | null;
defaultOwner: TypesGen.User;
diagnostics: PreviewDiagnostics;
diagnostics: readonly FriendlyDiagnostic[];
disabledParams?: string[];
error: unknown;
externalAuth: TypesGen.TemplateVersionExternalAuth[];