From d87ff4b66ce08336940b9d00cc6db622a013a7c1 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Tue, 26 Nov 2024 15:41:25 -0600 Subject: [PATCH 01/20] chore: add typescript type overrides --- scripts/apitypings/main.go | 1141 +---------------- scripts/apitypings/main_test.go | 23 +- .../testdata/overrides/overrides.go | 7 + .../testdata/overrides/overrides.ts | 6 + 4 files changed, 99 insertions(+), 1078 deletions(-) create mode 100644 scripts/apitypings/testdata/overrides/overrides.go create mode 100644 scripts/apitypings/testdata/overrides/overrides.ts diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index 8153743775564..f35f753ed67eb 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -1,1108 +1,97 @@ package main import ( - "bytes" - "context" "fmt" - "go/types" - "os" - "path" - "path/filepath" - "reflect" - "regexp" - "sort" - "strings" - "text/template" + "log" - "github.com/fatih/structtag" - "golang.org/x/exp/slices" - "golang.org/x/text/cases" - "golang.org/x/text/language" - "golang.org/x/tools/go/packages" - "golang.org/x/xerrors" + "github.com/coder/gots" + "github.com/coder/gots/config" - "cdr.dev/slog" - "cdr.dev/slog/sloggers/sloghuman" - "github.com/coder/coder/v2/coderd/util/slice" -) - -var ( - // baseDirs are the directories to introspect for types to generate. - baseDirs = [...]string{"./codersdk", "./codersdk/healthsdk"} - // externalTypes are types that are not in the baseDirs, but we want to - // support. These are usually types that are used in the baseDirs. - // Do not include things like "Database", as that would break the idea - // of splitting db and api types. - // Only include dirs that are client facing packages. - externalTypePkgs = [...]string{ - "./coderd/healthcheck/health", - // CLI option types: - "github.com/coder/serpent", - } - indent = "\t" + // Must import the packages we are trying to convert + // And include the ones we are referencing + //_ "github.com/coder/coder/coderd/healthcheck/health" + //_ "github.com/coder/coder/codersdk/health" + _ "github.com/coder/coder/v2/codersdk" + _ "github.com/coder/serpent" ) func main() { - ctx := context.Background() - log := slog.Make(sloghuman.Sink(os.Stderr)) - - external := []*Generator{} - for _, dir := range externalTypePkgs { - extGen, err := ParseDirectory(ctx, log, dir) - if err != nil { - log.Fatal(ctx, fmt.Sprintf("parse external directory %s: %s", dir, err.Error())) - } - extGen.onlyOptIn = true - external = append(external, extGen) - } - - _, _ = fmt.Print("// Code generated by 'make site/src/api/typesGenerated.ts'. DO NOT EDIT.\n\n") - - for _, baseDir := range baseDirs { - _, _ = fmt.Printf("// The code below is generated from %s.\n\n", strings.TrimPrefix(baseDir, "./")) - output, err := Generate(baseDir, external...) - if err != nil { - log.Fatal(ctx, err.Error()) - } - - // Just cat the output to a file to capture it - _, _ = fmt.Print(output, "\n\n") - } - - for i, ext := range external { - var ts *TypescriptTypes - for { - var err error - start := len(ext.allowList) - ts, err = ext.generateAll() - if err != nil { - log.Fatal(ctx, fmt.Sprintf("generate external: %s", err.Error())) - } - if len(ext.allowList) != start { - // This is so dumb, but basically the allowList can grow, and if - // it does, we need to regenerate. - continue - } - break - } - - dir := externalTypePkgs[i] - _, _ = fmt.Printf("// The code below is generated from %s.\n\n", strings.TrimPrefix(dir, "./")) - _, _ = fmt.Print(ts.String(), "\n\n") - } -} - -func Generate(directory string, externals ...*Generator) (string, error) { - ctx := context.Background() - log := slog.Make(sloghuman.Sink(os.Stderr)) - gen, err := GenerateFromDirectory(ctx, log, directory, externals...) - if err != nil { - return "", err - } - - // Just cat the output to a file to capture it - return gen.cachedResult.String(), nil -} - -// TypescriptTypes holds all the code blocks created. -type TypescriptTypes struct { - // Each entry is the type name, and it's typescript code block. - Types map[string]string - Enums map[string]string - Generics map[string]string -} - -// String just combines all the codeblocks. -func (t TypescriptTypes) String() string { - var s strings.Builder - - sortedTypes := make([]string, 0, len(t.Types)) - sortedEnums := make([]string, 0, len(t.Enums)) - sortedGenerics := make([]string, 0, len(t.Generics)) - - for k := range t.Types { - sortedTypes = append(sortedTypes, k) - } - for k := range t.Enums { - sortedEnums = append(sortedEnums, k) - } - for k := range t.Generics { - sortedGenerics = append(sortedGenerics, k) - } - - sort.Strings(sortedTypes) - sort.Strings(sortedEnums) - sort.Strings(sortedGenerics) - - for _, k := range sortedTypes { - v := t.Types[k] - _, _ = s.WriteString(v) - _, _ = s.WriteRune('\n') - } - - for _, k := range sortedEnums { - v := t.Enums[k] - _, _ = s.WriteString(v) - _, _ = s.WriteRune('\n') - } - - for _, k := range sortedGenerics { - v := t.Generics[k] - _, _ = s.WriteString(v) - _, _ = s.WriteRune('\n') - } - - return strings.TrimRight(s.String(), "\n") -} - -func ParseDirectory(ctx context.Context, log slog.Logger, directory string, externals ...*Generator) (*Generator, error) { - g := &Generator{ - log: log, - builtins: make(map[string]string), - externals: externals, - } - err := g.parsePackage(ctx, directory) + gen, err := gots.NewGolangParser() if err != nil { - return nil, xerrors.Errorf("parse package %q: %w", directory, err) + log.Fatalf("new convert: %v", err) } - return g, nil -} - -// GenerateFromDirectory will return all the typescript code blocks for a directory -func GenerateFromDirectory(ctx context.Context, log slog.Logger, directory string, externals ...*Generator) (*Generator, error) { - g, err := ParseDirectory(ctx, log, directory, externals...) - if err != nil { - return nil, err - } - - codeBlocks, err := g.generateAll() - if err != nil { - return nil, xerrors.Errorf("generate package %q: %w", directory, err) + generateDirectories := []string{ + "github.com/coder/coder/v2/codersdk", + //"github.com/coder/coder/codersdk/health", } - g.cachedResult = codeBlocks - - return g, nil -} - -type Generator struct { - // Package we are scanning. - pkg *packages.Package - log slog.Logger - - // allowList if set only generates types in the allow list. - // This is kinda a hack to get around the fact that external types - // only should generate referenced types, and multiple packages can - // reference the same external types. - onlyOptIn bool - allowList []string - - // externals are other packages referenced. Optional - externals []*Generator - - // builtins is kinda a hack to get around the fact that using builtin - // generic constraints is common. We want to support them even though - // they are external to our package. - // It is also a string because the builtins are not proper go types. Meaning - // if you inspect the types, they are not "correct". Things like "comparable" - // cannot be implemented in go. So they are a first class thing that we just - // have to make a static string for ¯\_(ツ)_/¯ - builtins map[string]string - - cachedResult *TypescriptTypes -} - -// parsePackage takes a list of patterns such as a directory, and parses them. -func (g *Generator) parsePackage(ctx context.Context, patterns ...string) error { - cfg := &packages.Config{ - // Just accept the fact we need these flags for what we want. Feel free to add - // more, it'll just increase the time it takes to parse. - Mode: packages.NeedTypes | packages.NeedName | packages.NeedTypesInfo | - packages.NeedTypesSizes | packages.NeedSyntax, - Tests: false, - Context: ctx, - } - - pkgs, err := packages.Load(cfg, patterns...) - if err != nil { - return xerrors.Errorf("load package: %w", err) - } - - // Only support 1 package for now. We can expand it if we need later, we - // just need to hook up multiple packages in the generator. - if len(pkgs) != 1 { - return xerrors.Errorf("expected 1 package, found %d", len(pkgs)) - } - - g.pkg = pkgs[0] - return nil -} - -// generateAll will generate for all types found in the pkg -func (g *Generator) generateAll() (*TypescriptTypes, error) { - m := &Maps{ - Structs: make(map[string]string), - Generics: make(map[string]string), - Enums: make(map[string]types.Object), - EnumConsts: make(map[string][]*types.Const), - IgnoredTypes: make(map[string]struct{}), - AllowedTypes: make(map[string]struct{}), - } - - for _, a := range g.allowList { - m.AllowedTypes[strings.TrimSpace(a)] = struct{}{} - } - - // Look for comments that indicate to ignore a type for typescript generation. - ignoreRegex := regexp.MustCompile("@typescript-ignore[:]?(?P.*)") - for _, file := range g.pkg.Syntax { - for _, comment := range file.Comments { - for _, line := range comment.List { - text := line.Text - matches := ignoreRegex.FindStringSubmatch(text) - ignored := ignoreRegex.SubexpIndex("ignored_types") - if len(matches) >= ignored && matches[ignored] != "" { - arr := strings.Split(matches[ignored], ",") - for _, s := range arr { - m.IgnoredTypes[strings.TrimSpace(s)] = struct{}{} - } - } - } - } - } - - // This allows opt-in generation, instead of opt-out. - allowRegex := regexp.MustCompile("@typescript-generate[:]?(?P.*)") - for _, file := range g.pkg.Syntax { - for _, comment := range file.Comments { - for _, line := range comment.List { - text := line.Text - matches := allowRegex.FindStringSubmatch(text) - allowed := allowRegex.SubexpIndex("allowed_types") - if len(matches) >= allowed && matches[allowed] != "" { - arr := strings.Split(matches[allowed], ",") - for _, s := range arr { - m.AllowedTypes[strings.TrimSpace(s)] = struct{}{} - } - } - } - } - } - - for _, n := range g.pkg.Types.Scope().Names() { - obj := g.pkg.Types.Scope().Lookup(n) - err := g.generateOne(m, obj) + for _, dir := range generateDirectories { + err = gen.Include(dir, true) if err != nil { - return nil, xerrors.Errorf("%q: %w", n, err) - } - } - - // Add the builtins - for n, value := range g.builtins { - if value != "" { - m.Generics[n] = value + log.Fatalf("include generate package %q: %v", dir, err) } } - // Write all enums - enumCodeBlocks := make(map[string]string) - for name, v := range m.Enums { - var values []string - for _, elem := range m.EnumConsts[name] { - // TODO: If we have non string constants, we need to handle that - // here. - values = append(values, elem.Val().String()) - } - sort.Strings(values) - var s strings.Builder - _, _ = s.WriteString(g.posLine(v)) - joined := strings.Join(values, " | ") - if joined == "" { - // It's possible an enum has no values. - joined = "never" - } - _, _ = s.WriteString(fmt.Sprintf("export type %s = %s\n", - name, joined, - )) - - var pluralName string - if strings.HasSuffix(name, "s") { - pluralName = name + "es" - } else { - pluralName = name + "s" - } - - // Generate array used for enumerating all possible values. - _, _ = s.WriteString(fmt.Sprintf("export const %s: %s[] = [%s]\n", - pluralName, name, strings.Join(values, ", "), - )) - - enumCodeBlocks[name] = s.String() - } - - return &TypescriptTypes{ - Types: m.Structs, - Enums: enumCodeBlocks, - Generics: m.Generics, - }, nil -} - -type Maps struct { - Structs map[string]string - Generics map[string]string - Enums map[string]types.Object - EnumConsts map[string][]*types.Const - IgnoredTypes map[string]struct{} - AllowedTypes map[string]struct{} -} - -// objName prepends the package name of a type if it is outside of codersdk. -func objName(obj types.Object) string { - if pkgName := obj.Pkg().Name(); pkgName != "codersdk" && pkgName != "healthsdk" { - return cases.Title(language.English).String(pkgName) + obj.Name() - } - return obj.Name() -} - -func (g *Generator) generateOne(m *Maps, obj types.Object) error { - if obj == nil || obj.Type() == nil { - // This would be weird, but it is if the package does not have the type def. - return nil - } - - // Exclude ignored types - if _, ok := m.IgnoredTypes[obj.Name()]; ok { - return nil - } - - // If we have allowed types, only allow those to be generated. - if _, ok := m.AllowedTypes[obj.Name()]; (len(m.AllowedTypes) > 0 || g.onlyOptIn) && !ok { - // Allow constants to pass through, they are only included if the enum - // is allowed. - _, ok := obj.(*types.Const) - if !ok { - return nil - } - } - - objectName := objName(obj) - - switch obj := obj.(type) { - // All named types are type declarations - case *types.TypeName: - named, ok := obj.Type().(*types.Named) - if !ok { - panic("all typename should be named types") - } - switch underNamed := named.Underlying().(type) { - case *types.Struct: - // type struct - // Structs are obvious. - codeBlock, err := g.buildStruct(obj, underNamed) - if err != nil { - return xerrors.Errorf("generate %q: %w", objectName, err) - } - m.Structs[objectName] = codeBlock - case *types.Basic: - // type string - // These are enums. Store to expand later. - m.Enums[objectName] = obj - case *types.Map, *types.Array, *types.Slice: - // Declared maps that are not structs are still valid codersdk objects. - // Handle them custom by calling 'typescriptType' directly instead of - // iterating through each struct field. - // These types support no json/typescript tags. - // These are **NOT** enums, as a map in Go would never be used for an enum. - ts, err := g.typescriptType(obj.Type().Underlying()) - if err != nil { - return xerrors.Errorf("(map) generate %q: %w", objectName, err) - } - - var str strings.Builder - _, _ = str.WriteString(g.posLine(obj)) - if ts.AboveTypeLine != "" { - _, _ = str.WriteString(ts.AboveTypeLine) - _, _ = str.WriteRune('\n') - } - // Use similar output syntax to enums. - _, _ = str.WriteString(fmt.Sprintf("export type %s = %s\n", objectName, ts.ValueType)) - m.Structs[objectName] = str.String() - case *types.Interface: - // Interfaces are used as generics. Non-generic interfaces are - // not supported. - if underNamed.NumEmbeddeds() == 1 { - union, ok := underNamed.EmbeddedType(0).(*types.Union) - if !ok { - // If the underlying is not a union, but has 1 type. It's - // just that one type. - union = types.NewUnion([]*types.Term{ - // Set the tilde to true to support underlying. - // Doesn't actually affect our generation. - types.NewTerm(true, underNamed.EmbeddedType(0)), - }) - } - - block, err := g.buildUnion(obj, union) - if err != nil { - return xerrors.Errorf("generate union %q: %w", objectName, err) - } - m.Generics[objectName] = block - } - case *types.Signature: - // Ignore named functions. - default: - // If you hit this error, you added a new unsupported named type. - // The easiest way to solve this is add a new case above with - // your type and a TODO to implement it. - return xerrors.Errorf("unsupported named type %q", underNamed.String()) - } - case *types.Var: - // TODO: Are any enums var declarations? This is also codersdk.Me. - case *types.Const: - // We only care about named constant types, since they are enums - if named, ok := obj.Type().(*types.Named); ok { - enumObjName := objName(named.Obj()) - m.EnumConsts[enumObjName] = append(m.EnumConsts[enumObjName], obj) - } - case *types.Func: - // Noop - default: - _, _ = fmt.Println(objectName) + referencePackages := []string{ + "github.com/coder/serpent", + //"./coderd/healthcheck/health", } - return nil -} - -func (g *Generator) posLine(obj types.Object) string { - file := g.pkg.Fset.File(obj.Pos()) - // Do not use filepath, as that changes behavior based on OS - return fmt.Sprintf("// From %s\n", path.Join(obj.Pkg().Name(), filepath.Base(file.Name()))) -} - -// buildStruct just prints the typescript def for a type. -func (g *Generator) buildUnion(obj types.Object, st *types.Union) (string, error) { - var s strings.Builder - _, _ = s.WriteString(g.posLine(obj)) - - allTypes := make([]string, 0, st.Len()) - var optional bool - for i := 0; i < st.Len(); i++ { - term := st.Term(i) - scriptType, err := g.typescriptType(term.Type()) + for _, pkg := range referencePackages { + err = gen.Include(pkg, false) if err != nil { - return "", xerrors.Errorf("union %q for %q failed to get type: %w", st.String(), obj.Name(), err) + log.Fatalf("include reference package %q: %v", pkg, err) } - allTypes = append(allTypes, scriptType.ValueType) - optional = optional || scriptType.Optional - } - - if optional { - allTypes = append(allTypes, "null") } - allTypes = slice.Unique(allTypes) - - _, _ = s.WriteString(fmt.Sprintf("export type %s = %s\n", objName(obj), strings.Join(allTypes, " | "))) - - return s.String(), nil -} - -type structTemplateState struct { - PosLine string - Name string - Fields []string - Generics []string - Extends string - AboveLine string -} - -const structTemplate = `{{ .PosLine -}} -{{ if .AboveLine }}{{ .AboveLine }} -{{ end }}export interface {{ .Name }}{{ if .Generics }}<{{ join .Generics ", " }}>{{ end }}{{ if .Extends }} extends {{ .Extends }}{{ end }} { -{{ join .Fields "\n"}} -} -` - -// buildStruct just prints the typescript def for a type. -func (g *Generator) buildStruct(obj types.Object, st *types.Struct) (string, error) { - state := structTemplateState{} - tpl := template.New("struct") - tpl.Funcs(template.FuncMap{ - "join": strings.Join, - }) - tpl, err := tpl.Parse(structTemplate) + err = TypeMappings(gen) if err != nil { - return "", xerrors.Errorf("parse struct template: %w", err) - } - - state.PosLine = g.posLine(obj) - state.Name = objName(obj) - - // Handle named embedded structs in the codersdk package via extension. - var extends []string - extendedFields := make(map[int]bool) - for i := 0; i < st.NumFields(); i++ { - field := st.Field(i) - tag := reflect.StructTag(st.Tag(i)) - // Adding a json struct tag causes the json package to consider - // the field unembedded. - if field.Embedded() && tag.Get("json") == "" { - extendedFields[i] = true - extends = append(extends, field.Name()) - } - } - if len(extends) > 0 { - state.Extends = strings.Join(extends, ", ") + log.Fatalf("type mappings: %v", err) } - genericsUsed := make(map[string]string) - // For each field in the struct, we print 1 line of the typescript interface - for i := 0; i < st.NumFields(); i++ { - if extendedFields[i] { - continue - } - field := st.Field(i) - tag := reflect.StructTag(st.Tag(i)) - tags, err := structtag.Parse(string(tag)) - if err != nil { - panic("invalid struct tags on type " + obj.String()) - } - - if !field.Exported() { - continue - } - - // Use the json name if present - jsonTag, err := tags.Get("json") - var ( - jsonName string - jsonOptional bool - ) - if err == nil { - if jsonTag.Name == "-" { - // Completely ignore this field. - continue - } - jsonName = jsonTag.Name - if len(jsonTag.Options) > 0 && jsonTag.Options[0] == "omitempty" { - jsonOptional = true - } - } - if jsonName == "" { - jsonName = field.Name() - } - - // Infer the type. - tsType, err := g.typescriptType(field.Type()) - if err != nil { - return "", xerrors.Errorf("typescript type: %w", err) - } - - // If a `typescript:"string"` exists, we take this, and ignore what we - // inferred. - typescriptTag, err := tags.Get("typescript") - if err == nil { - if typescriptTag.Name == "-" { - // Completely ignore this field. - continue - } else if typescriptTag.Name != "" { - tsType = TypescriptType{ - ValueType: typescriptTag.Name, - } - } - - // If you specify `typescript:",notnull"` then mark the type as not - // optional. - if len(typescriptTag.Options) > 0 && typescriptTag.Options[0] == "notnull" { - tsType.Optional = false - } - } - - optional := "" - if jsonOptional || tsType.Optional { - optional = "?" - } - valueType := tsType.ValueType - if tsType.GenericValue != "" { - valueType = tsType.GenericValue - // This map we are building is just gathering all the generics used - // by our fields. We will use this map for our export type line. - // This isn't actually required since we can get it from the obj - // itself, but this ensures we actually use all the generic fields - // we place in the export line. If we are missing one from this map, - // that is a developer error. And we might as well catch it. - for name, constraint := range tsType.GenericTypes { - if _, ok := genericsUsed[name]; ok { - // Don't add a generic twice - // TODO: We should probably check that the generic mapping is - // not a different type. Like 'T' being referenced to 2 different - // constraints. I don't think this is possible though in valid - // go, so I'm going to ignore this for now. - continue - } - genericsUsed[name] = constraint - } - } - - if tsType.AboveTypeLine != "" { - // Just append these as fields. We should fix this later. - state.Fields = append(state.Fields, tsType.AboveTypeLine) - } - state.Fields = append(state.Fields, fmt.Sprintf("%sreadonly %s%s: %s;", indent, jsonName, optional, valueType)) - } - - // This is implemented to ensure the correct order of generics on the - // top level structure. Ordering of generic fields is important, and - // we want to match the same order as Golang. The gathering of generic types - // from our fields does not guarantee the order. - named, ok := obj.(*types.TypeName) - if !ok { - return "", xerrors.Errorf("generic param ordering undefined on %q", obj.Name()) - } - - namedType, ok := named.Type().(*types.Named) - if !ok { - return "", xerrors.Errorf("generic param %q unexpected type %q", obj.Name(), named.Type().String()) - } - - // Ensure proper generic param ordering - params := namedType.TypeParams() - for i := 0; i < params.Len(); i++ { - param := params.At(i) - name := param.String() - - constraint, ok := genericsUsed[param.String()] - if !ok { - // If this error is thrown, it is because you have defined a - // generic field on a structure, but did not use it in your - // fields. If this happens, remove the unused generic on - // the top level structure. We **technically** can implement - // this still, but it's not a case we need to support. - // Example: - // type Foo[A any] struct { - // Bar string - // } - return "", xerrors.Errorf("generic param %q missing on %q, fix your data structure", name, obj.Name()) - } - - state.Generics = append(state.Generics, fmt.Sprintf("%s extends %s", name, constraint)) - } - - data := bytes.NewBuffer(make([]byte, 0)) - err = tpl.Execute(data, state) + ts, err := gen.ToTypescript() if err != nil { - return "", xerrors.Errorf("execute struct template: %w", err) - } - return data.String(), nil -} - -type TypescriptType struct { - // GenericTypes is a map of generic name to actual constraint. - // We return these, so we can bubble them up if we are recursively traversing - // a nested structure. We duplicate these at the top level. - // Example: 'C = comparable'. - GenericTypes map[string]string - // GenericValue is the value using the Generic name, rather than the constraint. - // This is only useful if you can use the generic syntax. Things like maps - // don't currently support this, and will use the ValueType instead. - // Example: - // Given the Golang - // type Foo[C comparable] struct { - // Bar C - // } - // The field `Bar` will return: - // TypescriptType { - // ValueType: "comparable", - // GenericValue: "C", - // GenericTypes: map[string]string{ - // "C":"comparable" - // } - // } - GenericValue string - // ValueType is the typescript value type. This is the actual type or - // generic constraint. This can **always** be used without special handling. - ValueType string - // AboveTypeLine lets you put whatever text you want above the typescript - // type line. - AboveTypeLine string - // Optional indicates the value is an optional field in typescript. - Optional bool -} - -// typescriptType this function returns a typescript type for a given -// golang type. -// Eg: -// -// []byte returns "string" -func (g *Generator) typescriptType(ty types.Type) (TypescriptType, error) { - switch ty := ty.(type) { - case *types.Basic: - bs := ty - // All basic literals (string, bool, int, etc). - switch { - case bs.Info()&types.IsNumeric > 0: - return TypescriptType{ValueType: "number"}, nil - case bs.Info()&types.IsBoolean > 0: - return TypescriptType{ValueType: "boolean"}, nil - case bs.Kind() == types.Byte: - // TODO: @emyrk What is a byte for typescript? A string? A uint8? - return TypescriptType{ValueType: "number", AboveTypeLine: indentedComment("This is a byte in golang")}, nil - default: - return TypescriptType{ValueType: bs.Name()}, nil - } - case *types.Struct: - // This handles anonymous structs. This should never happen really. - // If you require this, either change your datastructures, or implement - // anonymous structs here. - // Such as: - // type Name struct { - // Embedded struct { - // Field string `json:"field"` - // } - // } - return TypescriptType{ - AboveTypeLine: indentedComment("Embedded anonymous struct, please fix by naming it"), - ValueType: "unknown", - }, nil - case *types.Map: - // map[string][string] -> Record - m := ty - keyType, err := g.typescriptType(m.Key()) - if err != nil { - return TypescriptType{}, xerrors.Errorf("map key: %w", err) - } - valueType, err := g.typescriptType(m.Elem()) - if err != nil { - return TypescriptType{}, xerrors.Errorf("map key: %w", err) - } - - aboveTypeLine := keyType.AboveTypeLine - if aboveTypeLine != "" && valueType.AboveTypeLine != "" { - aboveTypeLine = aboveTypeLine + "\n" - } - aboveTypeLine = aboveTypeLine + valueType.AboveTypeLine - - mergeGens := keyType.GenericTypes - for k, v := range valueType.GenericTypes { - mergeGens[k] = v - } - return TypescriptType{ - ValueType: fmt.Sprintf("Record<%s, %s>", keyType.ValueType, valueType.ValueType), - AboveTypeLine: aboveTypeLine, - GenericTypes: mergeGens, - }, nil - case *types.Slice, *types.Array: - // Slice/Arrays are pretty much the same. - type hasElem interface { - Elem() types.Type - } - - arr, _ := ty.(hasElem) - switch { - // When type checking here, just use the string. You can cast it - // to a types.Basic and get the kind if you want too :shrug: - case arr.Elem().String() == "byte": - // All byte arrays are strings on the typescript. - // Is this ok? - return TypescriptType{ValueType: "string"}, nil - default: - // By default, just do an array of the underlying type. - underlying, err := g.typescriptType(arr.Elem()) - if err != nil { - return TypescriptType{}, xerrors.Errorf("array: %w", err) - } - genValue := "" - - if underlying.GenericValue != "" { - genValue = "Readonly>" - } - return TypescriptType{ - ValueType: "Readonly>", - GenericValue: genValue, - AboveTypeLine: underlying.AboveTypeLine, - GenericTypes: underlying.GenericTypes, - }, nil - } - case *types.Named: - n := ty - - // These are external named types that we handle uniquely. - // This is unfortunate, but our current code assumes all defined - // types are enums, but these are really just basic primitives. - // We would need to add more logic to determine this, but for now - // just hard code them. - switch n.String() { - case "github.com/coder/serpent.Regexp": - return TypescriptType{ValueType: "string"}, nil - case "github.com/coder/serpent.HostPort": - // Custom marshal json to be a string - return TypescriptType{ValueType: "string"}, nil - case "github.com/coder/serpent.StringArray": - return TypescriptType{ValueType: "string[]"}, nil - case "github.com/coder/serpent.String": - return TypescriptType{ValueType: "string"}, nil - case "github.com/coder/serpent.YAMLConfigPath": - return TypescriptType{ValueType: "string"}, nil - case "github.com/coder/serpent.Strings": - return TypescriptType{ValueType: "string[]"}, nil - case "github.com/coder/serpent.Int64": - return TypescriptType{ValueType: "number"}, nil - case "github.com/coder/serpent.Bool": - return TypescriptType{ValueType: "boolean"}, nil - case "github.com/coder/serpent.Duration": - return TypescriptType{ValueType: "number"}, nil - case "net/netip.Addr": - return TypescriptType{ValueType: "string"}, nil - case "net/url.URL": - return TypescriptType{ValueType: "string"}, nil - case "time.Time": - // We really should come up with a standard for time. - return TypescriptType{ValueType: "string"}, nil - case "time.Duration": - return TypescriptType{ValueType: "number"}, nil - case "database/sql.NullTime": - return TypescriptType{ValueType: "string", Optional: true}, nil - case "github.com/coder/coder/v2/codersdk.NullTime": - return TypescriptType{ValueType: "string", Optional: true}, nil - case "github.com/google/uuid.NullUUID": - return TypescriptType{ValueType: "string", Optional: true}, nil - case "github.com/google/uuid.UUID": - return TypescriptType{ValueType: "string"}, nil - case "encoding/json.RawMessage": - return TypescriptType{ValueType: "Record"}, nil - case "github.com/coder/serpent.URL": - return TypescriptType{ValueType: "string"}, nil - // XXX: For some reason, the type generator generates these as `any` - // so explicitly specifying the correct generic TS type. - case "github.com/coder/coder/v2/codersdk.RegionsResponse[github.com/coder/coder/v2/codersdk.WorkspaceProxy]": - return TypescriptType{ValueType: "RegionsResponse"}, nil - case "github.com/coder/coder/v2/coderd/healthcheck/health.Message": - return TypescriptType{ValueType: "HealthMessage"}, nil - case "github.com/coder/coder/v2/coderd/healthcheck/health.Severity": - return TypescriptType{ValueType: "HealthSeverity"}, nil - case "github.com/coder/coder/v2/healthsdk.HealthSection": - return TypescriptType{ValueType: "HealthSection"}, nil - case "github.com/coder/coder/v2/codersdk.ProvisionerDaemon": - return TypescriptType{ValueType: "ProvisionerDaemon"}, nil - - // Some very unfortunate `any` types that leaked into the frontend. - case "tailscale.com/tailcfg.DERPNode", - "tailscale.com/derp.ServerInfoMessage", - "tailscale.com/tailcfg.DERPRegion", - "tailscale.com/net/netcheck.Report", - "github.com/spf13/pflag.Value": - return TypescriptType{AboveTypeLine: indentedComment("TODO: narrow this type"), ValueType: "any"}, nil - } - - // Some hard codes are a bit trickier. - //nolint:gocritic,revive // I prefer the switch for extensibility later. - switch { - // Struct is a generic, so the type has generic constraints in the string. - case regexp.MustCompile(`github\.com/coder/serpent.Struct\[.*\]`).MatchString(n.String()): - // The marshal json just marshals the underlying value. - str, ok := ty.Underlying().(*types.Struct) - if ok { - return g.typescriptType(str.Field(0).Type()) - } - } - - // Then see if the type is defined elsewhere. If it is, we can just - // put the objName as it will be defined in the typescript codeblock - // we generate. - objName := objName(n.Obj()) - genericName := "" - genericTypes := make(map[string]string) - - obj, objGen, local := g.lookupNamedReference(n) - if obj != nil { - if g.onlyOptIn && !slices.Contains(g.allowList, n.Obj().Name()) { - // This is kludgy, but if we are an external package, - // we need to also include dependencies. There is no - // good way to return all extra types we need to include, - // so just add them to the allow list and hope the caller notices - // the slice grew... - g.allowList = append(g.allowList, n.Obj().Name()) - } - if !local { - objGen.allowList = append(objGen.allowList, n.Obj().Name()) - g.log.Debug(context.Background(), "found external type", - "name", objName, - "ext_pkg", objGen.pkg.String(), - ) - } - // Sweet! Using other typescript types as fields. This could be an - // enum or another struct - if args := n.TypeArgs(); args != nil && args.Len() > 0 { - genericConstraints := make([]string, 0, args.Len()) - genericNames := make([]string, 0, args.Len()) - for i := 0; i < args.Len(); i++ { - genType, err := g.typescriptType(args.At(i)) - if err != nil { - return TypescriptType{}, xerrors.Errorf("generic field %q<%q>: %w", objName, args.At(i).String(), err) - } - - if param, ok := args.At(i).(*types.TypeParam); ok { - // Using a generic defined by the parent. - gname := param.Obj().Name() - genericNames = append(genericNames, gname) - genericTypes[gname] = genType.ValueType - } else { - // Defining a generic - genericNames = append(genericNames, genType.ValueType) - } - - genericConstraints = append(genericConstraints, genType.ValueType) - } - genericName = objName + fmt.Sprintf("<%s>", strings.Join(genericNames, ", ")) - objName += fmt.Sprintf("<%s>", strings.Join(genericConstraints, ", ")) - } - - cmt := "" - return TypescriptType{ - GenericTypes: genericTypes, - GenericValue: genericName, - ValueType: objName, - AboveTypeLine: cmt, - }, nil - } - - // If it's a struct, just use the name of the struct type - if _, ok := n.Underlying().(*types.Struct); ok { - // External structs cannot be introspected, as we only parse the codersdk - // package. You can handle your type manually in the switch list above, - // otherwise `unknown` will be used. An easy way to fix this is to pull - // your external type into codersdk, then it will be known by the - // generator. - return TypescriptType{ - AboveTypeLine: indentedComment(fmt.Sprintf("external type %q, using \"unknown\"", n.String())), - ValueType: "unknown", - }, nil - } - - // Defer to the underlying type. - ts, err := g.typescriptType(ty.Underlying()) - if err != nil { - return TypescriptType{}, xerrors.Errorf("named underlying: %w", err) - } - if ts.AboveTypeLine == "" { - // If no comment exists explaining where this type comes from, add one. - ts.AboveTypeLine = indentedComment(fmt.Sprintf("This is likely an enum in an external package (%q)", n.String())) - } - return ts, nil - case *types.Pointer: - // Dereference pointers. - pt := ty - resp, err := g.typescriptType(pt.Elem()) - if err != nil { - return TypescriptType{}, xerrors.Errorf("pointer: %w", err) - } - resp.Optional = true - return resp, nil - case *types.Interface: - // only handle the empty interface (interface{}) for now - intf := ty - if intf.Empty() { - // This field is 'interface{}'. We can't infer any type from 'interface{}' - // so just use "any" as the type. - return TypescriptType{ - AboveTypeLine: indentedComment("empty interface{} type, falling back to unknown"), - ValueType: "unknown", - }, nil - } - - // Interfaces are difficult to determine the JSON type, so just return - // an 'unknown'. - return TypescriptType{ - AboveTypeLine: indentedComment("interface type, falling back to unknown"), - ValueType: "unknown", - Optional: false, - }, nil - case *types.TypeParam: - _, ok := ty.Underlying().(*types.Interface) - if !ok { - // If it's not an interface, it is likely a usage of generics that - // we have not hit yet. Feel free to add support for it. - return TypescriptType{}, xerrors.New("type param must be an interface") - } - - generic := ty.Constraint() - // We don't mess with multiple packages, so just trim the package path - // from the name. - pkgPath := ty.Obj().Pkg().Path() - name := strings.TrimPrefix(generic.String(), pkgPath+".") - - referenced := g.pkg.Types.Scope().Lookup(name) - - if referenced == nil { - include, builtinString := g.isBuiltIn(name) - if !include { - // If we don't have the type constraint defined somewhere in the package, - // then we have to resort to using any. - return TypescriptType{ - AboveTypeLine: fmt.Sprintf("// %q is an external type, falling back to unknown", name), - GenericTypes: map[string]string{ - ty.Obj().Name(): "unknown", - }, - GenericValue: ty.Obj().Name(), - ValueType: "unknown", - Optional: false, - }, nil - } - // Include the builtin for this type to reference - g.builtins[name] = builtinString - } - - return TypescriptType{ - GenericTypes: map[string]string{ - ty.Obj().Name(): name, - }, - GenericValue: ty.Obj().Name(), - ValueType: name, - AboveTypeLine: "", - Optional: false, - }, nil + log.Fatalf("to typescript: %v", err) } - // These are all the other types we need to support. - // time.Time, uuid, etc. - return TypescriptType{}, xerrors.Errorf("unknown type: %s", ty.String()) -} + TsMutations(ts) -func (g *Generator) lookupNamedReference(n *types.Named) (obj types.Object, generator *Generator, local bool) { - pkgName := n.Obj().Pkg().Name() - - if obj := g.pkg.Types.Scope().Lookup(n.Obj().Name()); g.pkg.Name == pkgName && obj != nil { - return obj, g, true - } - - for _, ext := range g.externals { - if obj := ext.pkg.Types.Scope().Lookup(n.Obj().Name()); ext.pkg.Name == pkgName && obj != nil { - return obj, ext, false - } - } - - return nil, nil, false -} - -// isBuiltIn returns the string for a builtin type that we want to support -// if the name is a reserved builtin type. This is for types like 'comparable'. -// These types are not implemented in golang, so we just have to hardcode it. -func (Generator) isBuiltIn(name string) (bool, string) { - // Note: @emyrk If we use constraints like Ordered, we can pull those - // dynamically from their respective packages. This is a method on Generator - // so if someone wants to implement that, they can find the respective package - // and type. - switch name { - case "comparable": - // To be complete, we include "any". Kinda sucks :( - return true, "export type comparable = boolean | number | string | any" - case "any", "unknown": - // This is supported in typescript, we don't need to write anything - return true, "" - default: - return false, "" + output, err := ts.Serialize() + if err != nil { + log.Fatalf("serialize: %v", err) + } + fmt.Println(output) +} + +func TsMutations(ts *gots.Typescript) { + ts.ApplyMutations( + // Export all top level types + config.ExportTypes(), + // Readonly interface fields + config.ReadOnly(), + ) +} + +// TypeMappings is all the custom types for codersdk +func TypeMappings(gen *gots.GoParser) error { + gen.IncludeCustomDeclaration(config.StandardMappings()) + + err := gen.IncludeCustom(map[string]string{ + "github.com/coder/coder/v2/codersdk.NullTime": "string", + // Serpent fields + "github.com/coder/serpent.Regexp": "string", + "github.com/coder/serpent.StringArray": "string", + "github.com/coder/serpent.String": "string", + "github.com/coder/serpent.YAMLConfigPath": "string", + "github.com/coder/serpent.Strings": "[]string", + "github.com/coder/serpent.Int64": "int64", + "github.com/coder/serpent.Bool": "bool", + "github.com/coder/serpent.Duration": "int64", + "github.com/coder/serpent.URL": "string", + "encoding/json.RawMessage": "map[string]string", + }) + if err != nil { + return fmt.Errorf("include custom: %w", err) } -} -func indentedComment(comment string) string { - return fmt.Sprintf("%s// %s", indent, comment) + return nil } diff --git a/scripts/apitypings/main_test.go b/scripts/apitypings/main_test.go index 7dd5de6d19f1e..30759d2fdc906 100644 --- a/scripts/apitypings/main_test.go +++ b/scripts/apitypings/main_test.go @@ -8,12 +8,15 @@ package main import ( "flag" + "log" "os" "path/filepath" "strings" "testing" "github.com/stretchr/testify/require" + + "github.com/coder/gots" ) // updateGoldenFiles is a flag that can be set to update golden files. @@ -33,8 +36,24 @@ func TestGeneration(t *testing.T) { t.Run(f.Name(), func(t *testing.T) { t.Parallel() dir := filepath.Join(".", "testdata", f.Name()) - output, err := Generate("./" + dir) - require.NoErrorf(t, err, "generate %q", dir) + + gen, err := gots.NewGolangParser() + if err != nil { + log.Fatalf("new convert: %v", err) + } + err = gen.Include("./"+dir, true) + require.NoError(t, err) + + err = TypeMappings(gen) + require.NoError(t, err) + + ts, err := gen.ToTypescript() + require.NoError(t, err) + + TsMutations(ts) + + output, err := ts.Serialize() + require.NoError(t, err) golden := filepath.Join(dir, f.Name()+".ts") expected, err := os.ReadFile(golden) diff --git a/scripts/apitypings/testdata/overrides/overrides.go b/scripts/apitypings/testdata/overrides/overrides.go new file mode 100644 index 0000000000000..cf4a67241fb3d --- /dev/null +++ b/scripts/apitypings/testdata/overrides/overrides.go @@ -0,0 +1,7 @@ +package overrides + +import "encoding/json" + +type Overrides struct { + Field json.RawMessage +} diff --git a/scripts/apitypings/testdata/overrides/overrides.ts b/scripts/apitypings/testdata/overrides/overrides.ts new file mode 100644 index 0000000000000..e017e5fbb7d9b --- /dev/null +++ b/scripts/apitypings/testdata/overrides/overrides.ts @@ -0,0 +1,6 @@ +// Code generated by 'gots'. DO NOT EDIT. + +// From overrides/overrides.go +export interface Overrides { + readonly Field: Record; +} From f641ab6c5cd1143e384c8d777380011c69177f53 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Tue, 26 Nov 2024 16:16:18 -0600 Subject: [PATCH 02/20] chore: add enum list generation --- scripts/apitypings/README.md | 34 -- scripts/apitypings/go.mod | 138 ++++++ scripts/apitypings/go.sum | 459 ++++++++++++++++++ scripts/apitypings/main.go | 6 +- scripts/apitypings/testdata/enums/enums.ts | 9 +- .../testdata/genericmap/genericmap.ts | 15 +- .../apitypings/testdata/generics/generics.ts | 50 +- .../testdata/genericslice/genericslice.ts | 8 +- 8 files changed, 646 insertions(+), 73 deletions(-) create mode 100644 scripts/apitypings/go.mod create mode 100644 scripts/apitypings/go.sum diff --git a/scripts/apitypings/README.md b/scripts/apitypings/README.md index 6fe9c06f35269..d503ae5f56c5d 100644 --- a/scripts/apitypings/README.md +++ b/scripts/apitypings/README.md @@ -2,37 +2,3 @@ This main.go generates typescript types from the codersdk types in Go. -# Features - -- Supports Go types - - [x] Basics (string/int/etc) - - [x] Maps - - [x] Slices - - [x] Enums - - [x] Pointers - - [ ] External Types (uses `any` atm) - - Some custom external types are hardcoded in (eg: time.Time) - -## Type overrides - -```golang -type Foo struct { - // Force the typescript type to be a number - CreatedAt time.Duration `json:"created_at" typescript:"number"` -} -``` - -## Ignore Types - -Do not generate ignored types. - -```golang -// @typescript-ignore InternalType -type InternalType struct { - // ... -} -``` - -# Future Ideas - -- Use a yaml config for overriding certain types diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod new file mode 100644 index 0000000000000..50f6b53e3c626 --- /dev/null +++ b/scripts/apitypings/go.mod @@ -0,0 +1,138 @@ +module github.com/coder/coder/scripts/apitypings + +go 1.23.0 + +toolchain go1.23.3 + +require ( + github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5 + github.com/stretchr/testify v1.10.0 +) + +require ( + cdr.dev/slog v1.6.2-0.20241112041820-0ec81e6e67bb // indirect + github.com/DataDog/appsec-internal-go v1.8.0 // indirect + github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0 // indirect + github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.57.0 // indirect + github.com/DataDog/datadog-go/v5 v5.3.0 // indirect + github.com/DataDog/go-libddwaf/v3 v3.4.0 // indirect + github.com/DataDog/go-tuf v1.1.0-0.5.2 // indirect + github.com/DataDog/gostackparse v0.7.0 // indirect + github.com/DataDog/sketches-go v1.4.5 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/coder/coder/v2 v2.17.2 // indirect + github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0 // indirect + github.com/coder/serpent v0.10.0 // indirect + github.com/coder/terraform-provider-coder v1.0.2 // indirect + github.com/coreos/go-oidc/v3 v3.11.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/dlclark/regexp2 v1.11.4 // indirect + github.com/dop251/goja v0.0.0-20241024094426-79f3a7efcdbd // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4 // indirect + github.com/ebitengine/purego v0.6.0-alpha.5 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/fatih/structtag v1.2.0 // indirect + github.com/go-chi/chi/v5 v5.1.0 // indirect + github.com/go-jose/go-jose/v4 v4.0.2 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 // indirect + github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect + github.com/hashicorp/go-sockaddr v1.0.2 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/hcl/v2 v2.23.0 // indirect + github.com/hashicorp/logutils v1.0.0 // indirect + github.com/hashicorp/terraform-plugin-go v0.23.0 // indirect + github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect + github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/moby v27.3.1+incompatible // indirect + github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/outcaste-io/ristretto v0.2.3 // indirect + github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986 // indirect + github.com/pion/transport/v2 v2.2.10 // indirect + github.com/pion/udp v0.1.4 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.60.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/robfig/cron/v3 v3.0.1 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/ryanuber/go-glob v1.0.0 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.7.0 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tinylib/msgp v1.2.1 // indirect + github.com/valyala/fasthttp v1.56.0 // indirect + github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + github.com/zclconf/go-cty v1.15.0 // indirect + github.com/zeebo/errs v1.3.0 // indirect + go.nhat.io/otelsql v0.14.0 // indirect + go.opentelemetry.io/otel v1.30.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect + go.opentelemetry.io/otel/metric v1.30.0 // indirect + go.opentelemetry.io/otel/sdk v1.30.0 // indirect + go.opentelemetry.io/otel/trace v1.30.0 // indirect + go.opentelemetry.io/proto/otlp v1.3.1 // indirect + go.uber.org/atomic v1.11.0 // indirect + golang.org/x/crypto v0.29.0 // indirect + golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect + golang.org/x/mod v0.22.0 // indirect + golang.org/x/net v0.31.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.9.0 // indirect + golang.org/x/sys v0.27.0 // indirect + golang.org/x/term v0.26.0 // indirect + golang.org/x/text v0.20.0 // indirect + golang.org/x/time v0.8.0 // indirect + golang.org/x/tools v0.27.0 // indirect + golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect + google.golang.org/grpc v1.68.0 // indirect + google.golang.org/protobuf v1.35.2 // indirect + gopkg.in/DataDog/dd-trace-go.v1 v1.69.0 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + nhooyr.io/websocket v1.8.7 // indirect + storj.io/drpc v0.0.33 // indirect +) + +replace github.com/coder/coder/v2 => ../../ diff --git a/scripts/apitypings/go.sum b/scripts/apitypings/go.sum new file mode 100644 index 0000000000000..d44893cb744db --- /dev/null +++ b/scripts/apitypings/go.sum @@ -0,0 +1,459 @@ +cdr.dev/slog v1.6.2-0.20240126064726-20367d4aede6 h1:KHblWIE/KHOwQ6lEbMZt6YpcGve2FEZ1sDtrW1Am5UI= +cdr.dev/slog v1.6.2-0.20240126064726-20367d4aede6/go.mod h1:NaoTA7KwopCrnaSb0JXTC0PTp/O/Y83Lndnq0OEV3ZQ= +cdr.dev/slog v1.6.2-0.20241112041820-0ec81e6e67bb h1:4MKA8lBQLnCqj2myJCb5Lzoa65y0tABO4gHrxuMdsCQ= +cdr.dev/slog v1.6.2-0.20241112041820-0ec81e6e67bb/go.mod h1:NaoTA7KwopCrnaSb0JXTC0PTp/O/Y83Lndnq0OEV3ZQ= +github.com/DataDog/appsec-internal-go v1.8.0 h1:1Tfn3LEogntRqZtf88twSApOCAAO3V+NILYhuQIo4J4= +github.com/DataDog/appsec-internal-go v1.8.0/go.mod h1:wW0cRfWBo4C044jHGwYiyh5moQV2x0AhnwqMuiX7O/g= +github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0 h1:bUMSNsw1iofWiju9yc1f+kBd33E3hMJtq9GuU602Iy8= +github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0/go.mod h1:HzySONXnAgSmIQfL6gOv9hWprKJkx8CicuXuUbmgWfo= +github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.57.0 h1:LplNAmMgZvGU7kKA0+4c1xWOjz828xweW5TCi8Mw9Q0= +github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.57.0/go.mod h1:4Vo3SJ24uzfKHUHLoFa8t8o+LH+7TCQ7sPcZDtOpSP4= +github.com/DataDog/datadog-go/v5 v5.3.0 h1:2q2qjFOb3RwAZNU+ez27ZVDwErJv5/VpbBPprz7Z+s8= +github.com/DataDog/datadog-go/v5 v5.3.0/go.mod h1:XRDJk1pTc00gm+ZDiBKsjh7oOOtJfYfglVCmFb8C2+Q= +github.com/DataDog/go-libddwaf/v3 v3.4.0 h1:NJ2W2vhYaOm1OWr1LJCbdgp7ezG/XLJcQKBmjFwhSuM= +github.com/DataDog/go-libddwaf/v3 v3.4.0/go.mod h1:n98d9nZ1gzenRSk53wz8l6d34ikxS+hs62A31Fqmyi4= +github.com/DataDog/go-tuf v1.1.0-0.5.2 h1:4CagiIekonLSfL8GMHRHcHudo1fQnxELS9g4tiAupQ4= +github.com/DataDog/go-tuf v1.1.0-0.5.2/go.mod h1:zBcq6f654iVqmkk8n2Cx81E1JnNTMOAx1UEO/wZR+P0= +github.com/DataDog/gostackparse v0.7.0 h1:i7dLkXHvYzHV308hnkvVGDL3BR4FWl7IsXNPz/IGQh4= +github.com/DataDog/gostackparse v0.7.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM= +github.com/DataDog/sketches-go v1.4.5 h1:ki7VfeNz7IcNafq7yI/j5U/YCkO3LJiMDtXz9OMQbyE= +github.com/DataDog/sketches-go v1.4.5/go.mod h1:7Y8GN8Jf66DLyDhc94zuWA3uHEt/7ttt8jHOBWWrSOg= +github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= +github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/coder/coder/v2 v2.17.2 h1:vnxjwDWcx1jHcy7QjIgL1yPY8+vJSATyYeFASHoAOsM= +github.com/coder/coder/v2 v2.17.2/go.mod h1:5Fu0xCkdXPuFLwYq6ThyI4DAv4v//Sx5saM/M5CAU2w= +github.com/coder/gots v0.0.0-20241126191110-cc59e7097f9a h1:6yJMWlqTE7+t5CZnw6gfXnOHD7m1yKAaIWqB7JRZufk= +github.com/coder/gots v0.0.0-20241126191110-cc59e7097f9a/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/gots v0.0.0-20241126192025-fd7faba5b007 h1:KAfKbjk/COMhkvw0uNPp3fYT0tvXdbv8IM9r2TGeTRc= +github.com/coder/gots v0.0.0-20241126192025-fd7faba5b007/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/gots v0.0.0-20241126192300-ed5d358ea1cf h1:3x7Gdk86ylhPK28nOExq3shGvUi/4Dzikb7dK/PIUPs= +github.com/coder/gots v0.0.0-20241126192300-ed5d358ea1cf/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/gots v0.0.0-20241126193240-464680bcc869 h1:DtRj1BHK79GGTCeWwRxqi64hM82OsJACQ9TAD645roA= +github.com/coder/gots v0.0.0-20241126193240-464680bcc869/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/gots v0.0.0-20241126200430-7369df3c8ba5 h1:F5SCGjHLMTJ8Q6hAyuiFJ/qe40aWE2LiVuO3hfS1pHk= +github.com/coder/gots v0.0.0-20241126200430-7369df3c8ba5/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/gots v0.0.0-20241126200729-5c84314f6076 h1:26eXuamGop6AQdWPUvYqiBRBel7K1FBn065KiPlFDrs= +github.com/coder/gots v0.0.0-20241126200729-5c84314f6076/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/gots v0.0.0-20241126210358-f51cbf86cd54 h1:RugTqbH+Ky9o1lrWcus6r1ydw1Ce6NUvcB3a/JkJeFo= +github.com/coder/gots v0.0.0-20241126210358-f51cbf86cd54/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/gots v0.0.0-20241126213537-91cc19e817e5 h1:zBru83IE+s2sc3p11gm/xWKHPTOoNm7qsIjbgmQ38B4= +github.com/coder/gots v0.0.0-20241126213537-91cc19e817e5/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5 h1:f/mc6/A4owCKhJAjSGtWk/kvY6UVKmkE5feWzLeDWHc= +github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +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/serpent v0.8.0 h1:6OR+k6fekhSeEDmwwzBgnSjaa7FfGGrMlc3GoAEH9dg= +github.com/coder/serpent v0.8.0/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= +github.com/coder/serpent v0.10.0 h1:ofVk9FJXSek+SmL3yVE3GoArP83M+1tX+H7S4t8BSuM= +github.com/coder/serpent v0.10.0/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= +github.com/coder/terraform-provider-coder v1.0.2 h1:xKbnJF/XUxcUJlZoC3ZkNOj4PZvk5Stdkel2TCZluDQ= +github.com/coder/terraform-provider-coder v1.0.2/go.mod h1:1f3EjO+DA9QcIbM7sBSk/Ffw3u7kh6vXNBIQfV59yUk= +github.com/coreos/go-oidc/v3 v3.11.0 h1:Ia3MxdwpSw702YW0xgfmP1GVCMA9aEFWu12XUZ3/OtI= +github.com/coreos/go-oidc/v3 v3.11.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo= +github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dop251/goja v0.0.0-20241024094426-79f3a7efcdbd h1:QMSNEh9uQkDjyPwu/J541GgSH+4hw+0skJDIj9HJ3mE= +github.com/dop251/goja v0.0.0-20241024094426-79f3a7efcdbd/go.mod h1:MxLav0peU43GgvwVgNbLAj1s/bSGboKkhuULvq/7hx4= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4 h1:8EXxF+tCLqaVk8AOC29zl2mnhQjwyLxxOTuhUazWRsg= +github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4/go.mod h1:I5sHm0Y0T1u5YjlyqC5GVArM7aNZRUYtTjmJ8mPJFds= +github.com/ebitengine/purego v0.6.0-alpha.5 h1:EYID3JOAdmQ4SNZYJHu9V6IqOeRQDBYxqKAg9PyoHFY= +github.com/ebitengine/purego v0.6.0-alpha.5/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= +github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-jose/go-jose/v4 v4.0.2 h1:R3l3kkBds16bO7ZFAEEcofK0MkrAJt3jlJznWZG0nvk= +github.com/go-jose/go-jose/v4 v4.0.2/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b h1:h9U78+dx9a4BKdQkBBos92HalKpaGKHrp+3Uo6yTodo= +github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= +github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 h1:UpiO20jno/eV1eVZcxqWnUohyKRe1g8FPV/xH1s/2qs= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.1/go.mod h1:gKOamz3EwoIoJq7mlMIRBpVTAUn8qPCrEclOKKWhD3U= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= +github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM= +github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= +github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= +github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/terraform-plugin-go v0.23.0 h1:AALVuU1gD1kPb48aPQUjug9Ir/125t+AAurhqphJ2Co= +github.com/hashicorp/terraform-plugin-go v0.23.0/go.mod h1:1E3Cr9h2vMlahWMbsSEcNrOCxovCZhOOIXjFHbjc/lQ= +github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= +github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 h1:kJiWGx2kiQVo97Y5IOGR4EMcZ8DtMswHhUuFibsCQQE= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0/go.mod h1:sl/UoabMc37HA6ICVMmGO+/0wofkVIRxf+BMb/dnoIg= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= +github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/moby v27.3.1+incompatible h1:KQbXBjo7PavKpzIl7UkHT31y9lw/e71Uvrqhr4X+zMA= +github.com/moby/moby v27.3.1+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a h1:2MaM6YC3mGu54x+RKAA6JiFFHlHDY1UbkxqppT7wYOg= +github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a/go.mod h1:hxSnBBYLK21Vtq/PHd0S2FYCxBXzBua8ov5s1RobyRQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOvUOL9w0= +github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= +github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986 h1:jYi87L8j62qkXzaYHAQAhEapgukhenIMZRBKTNRLHJ4= +github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= +github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= +github.com/pion/transport/v2 v2.0.0/go.mod h1:HS2MEBJTwD+1ZI2eSXSvHJx/HnzQqRy2/LXxt6eVMHc= +github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q= +github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E= +github.com/pion/udp v0.1.4 h1:OowsTmu1Od3sD6i3fQUJxJn2fEvJO6L1TidgadtbTI8= +github.com/pion/udp v0.1.4/go.mod h1:G8LDo56HsFwC24LIcnT4YIDU5qcB6NepqqjP0keL2us= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.60.0 h1:+V9PAREWNvJMAuJ1x1BaWl9dewMW4YrHZQbx0sJNllA= +github.com/prometheus/common v0.60.0/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3 h1:4+LEVOB87y175cLJC/mbsgKmoDOjrBldtXvioEy96WY= +github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3/go.mod h1:vl5+MqJ1nBINuSsUI2mGgH79UweUT/B5Fy8857PqyyI= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= +github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tinylib/msgp v1.2.1 h1:6ypy2qcCznxpP4hpORzhtXyTqrBs7cfM9MCCWY8zsmU= +github.com/tinylib/msgp v1.2.1/go.mod h1:2vIGs3lcUo8izAATNobrCHevYZC/LMsJtw4JPiYPHro= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/valyala/fasthttp v1.56.0 h1:bEZdJev/6LCBlpdORfrLu/WOZXXxvrUQSiyniuaoW8U= +github.com/valyala/fasthttp v1.56.0/go.mod h1:sReBt3XZVnudxuLOx4J/fMrJVorWRiWY2koQKgABiVI= +github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= +github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= +github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs= +github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= +go.nhat.io/otelsql v0.14.0 h1:Mz4xo+WVQLAOPZy6abxjVzZzNe8xoOUh/tOMJoxo3oo= +go.nhat.io/otelsql v0.14.0/go.mod h1:iO9KfDBZO2WI6O7n+ippHe5OHdXQ5iiA2aIa3Kzywo8= +go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= +go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 h1:dIIDULZJpgdiHz5tXrTgKIMLkus6jEFa7x5SOKcyR7E= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0/go.mod h1:jlRVBe7+Z1wyxFSUs48L6OBQZ5JwH2Hg/Vbl+t9rAgI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= +go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= +go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= +go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE= +go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg= +go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= +go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= +golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= +golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= +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= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 h1:Df6WuGvthPzc+JiQ/G+m+sNX24kc0aTBqoDN/0yyykE= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f h1:C1QccEa9kUwvMgEUORqQD9S17QesQijxjZ84sO82mfo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= +google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/DataDog/dd-trace-go.v1 v1.69.0 h1:zSY6DDsFRMQDNQYKWCv/AEwJXoPpDf1FfMyw7I1B7M8= +gopkg.in/DataDog/dd-trace-go.v1 v1.69.0/go.mod h1:U9AOeBHNAL95JXcd/SPf4a7O5GNeF/yD13sJtli/yaU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= +nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +storj.io/drpc v0.0.33 h1:yCGZ26r66ZdMP0IcTYsj7WDAUIIjzXk6DJhbhvt9FHI= +storj.io/drpc v0.0.33/go.mod h1:vR804UNzhBa49NOJ6HeLjd2H3MakC1j5Gv8bsOQT6N4= diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index f35f753ed67eb..8b22e9ec9d695 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -64,10 +64,12 @@ func main() { func TsMutations(ts *gots.Typescript) { ts.ApplyMutations( + // Enum list generator + config.EnumLists, // Export all top level types - config.ExportTypes(), + config.ExportTypes, // Readonly interface fields - config.ReadOnly(), + config.ReadOnly, ) } diff --git a/scripts/apitypings/testdata/enums/enums.ts b/scripts/apitypings/testdata/enums/enums.ts index 580d59f188f4b..1cc4d05040a18 100644 --- a/scripts/apitypings/testdata/enums/enums.ts +++ b/scripts/apitypings/testdata/enums/enums.ts @@ -1,6 +1,9 @@ +// Code generated by 'gots'. DO NOT EDIT. + // From codersdk/enums.go -export type EnumSliceType = Readonly> +export type Enum = "bar" | "baz" | "foo" | "qux"; // From codersdk/enums.go -export type Enum = "bar" | "baz" | "foo" | "qux" -export const Enums: Enum[] = ["bar", "baz", "foo", "qux"] +export type EnumSliceType = Enum[]; + +export const Enums: Enum[] = ["bar", "baz", "foo", "qux"]; diff --git a/scripts/apitypings/testdata/genericmap/genericmap.ts b/scripts/apitypings/testdata/genericmap/genericmap.ts index 136774f775c9f..f7212396d3ae6 100644 --- a/scripts/apitypings/testdata/genericmap/genericmap.ts +++ b/scripts/apitypings/testdata/genericmap/genericmap.ts @@ -1,18 +1,19 @@ +// Code generated by 'gots'. DO NOT EDIT. + // From codersdk/genericmap.go export interface Buzz { - readonly foo: Foo; - readonly bazz: string; + readonly bazz: string; } +// From codersdk/genericmap.go +export type Custom = Foo | Buzz; + // From codersdk/genericmap.go export interface Foo { - readonly bar: string; + readonly bar: string; } // From codersdk/genericmap.go export interface FooBuzz { - readonly something: Readonly>; + readonly something: R[]; } - -// From codersdk/genericmap.go -export type Custom = Foo | Buzz diff --git a/scripts/apitypings/testdata/generics/generics.ts b/scripts/apitypings/testdata/generics/generics.ts index 29cef666a98a9..7867168e1a4b8 100644 --- a/scripts/apitypings/testdata/generics/generics.ts +++ b/scripts/apitypings/testdata/generics/generics.ts @@ -1,41 +1,43 @@ +// Code generated by 'gots'. DO NOT EDIT. + +export type Comparable = string | number | boolean; + // From codersdk/generics.go -export interface Complex { - readonly dynamic: Fields; - readonly order: FieldsDiffOrder; - readonly comparable: C; - readonly single: S; - readonly static: Static; +export interface Complex { + readonly dynamic: Fields; + readonly order: FieldsDiffOrder; + readonly comparable: C; + readonly single: S; + readonly static: Static; } // From codersdk/generics.go -export interface Dynamic { - readonly dynamic: Fields; - readonly comparable: boolean; -} +export type Custom = string | boolean | number | number | string[] | (number | null); // From codersdk/generics.go -export interface Fields { - readonly comparable: C; - readonly any: A; - readonly custom: T; - readonly again: T; - readonly single_constraint: S; +export interface Dynamic { + readonly dynamic: Fields; + readonly comparable: boolean; } // From codersdk/generics.go -export interface FieldsDiffOrder { - readonly Fields: Fields; +export interface Fields { + readonly comparable: C; + readonly any: A; + readonly custom: T; + readonly again: T; + readonly single_constraint: S; } // From codersdk/generics.go -export interface Static { - readonly static: Fields; +export interface FieldsDiffOrder { + readonly Fields: Fields; } // From codersdk/generics.go -export type Custom = string | boolean | number | Readonly> | null +export type Single = string; // From codersdk/generics.go -export type Single = string - -export type comparable = boolean | number | string | any +export interface Static { + readonly static: Fields; +} diff --git a/scripts/apitypings/testdata/genericslice/genericslice.ts b/scripts/apitypings/testdata/genericslice/genericslice.ts index dab656cabaca8..0eff66af29299 100644 --- a/scripts/apitypings/testdata/genericslice/genericslice.ts +++ b/scripts/apitypings/testdata/genericslice/genericslice.ts @@ -1,10 +1,12 @@ +// Code generated by 'gots'. DO NOT EDIT. + // From codersdk/genericslice.go export interface Bar { - readonly Bar: string; + readonly Bar: string; } // From codersdk/genericslice.go export interface Foo { - readonly Slice: Readonly>; - readonly TwoD: Readonly>>>; + readonly Slice: R[]; + readonly TwoD: R[][]; } From 16ac059eb3d00adcc5f09cf3e19cedae9f198acd Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Tue, 26 Nov 2024 16:33:24 -0600 Subject: [PATCH 03/20] update to account for json tagged embeds --- scripts/apitypings/README.md | 1 + scripts/apitypings/go.mod | 2 +- scripts/apitypings/go.sum | 2 ++ scripts/apitypings/main.go | 4 ++-- scripts/apitypings/testdata/genericmap/genericmap.ts | 1 + 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/apitypings/README.md b/scripts/apitypings/README.md index d503ae5f56c5d..b544368a3b750 100644 --- a/scripts/apitypings/README.md +++ b/scripts/apitypings/README.md @@ -2,3 +2,4 @@ This main.go generates typescript types from the codersdk types in Go. +Uses it's own `go.mod` to exclude goja deps from the main go.mod. diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod index 50f6b53e3c626..f58168b40158d 100644 --- a/scripts/apitypings/go.mod +++ b/scripts/apitypings/go.mod @@ -5,7 +5,7 @@ go 1.23.0 toolchain go1.23.3 require ( - github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5 + github.com/coder/gots v0.0.0-20241126222907-985a03a876f0 github.com/stretchr/testify v1.10.0 ) diff --git a/scripts/apitypings/go.sum b/scripts/apitypings/go.sum index d44893cb744db..bb2110bdec892 100644 --- a/scripts/apitypings/go.sum +++ b/scripts/apitypings/go.sum @@ -60,6 +60,8 @@ github.com/coder/gots v0.0.0-20241126213537-91cc19e817e5 h1:zBru83IE+s2sc3p11gm/ github.com/coder/gots v0.0.0-20241126213537-91cc19e817e5/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5 h1:f/mc6/A4owCKhJAjSGtWk/kvY6UVKmkE5feWzLeDWHc= github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/gots v0.0.0-20241126222907-985a03a876f0 h1:0jxONsMRoXchCdCcfcXlaVm1ciLkF6LLBDa7OgF4HJw= +github.com/coder/gots v0.0.0-20241126222907-985a03a876f0/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= 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/serpent v0.8.0 h1:6OR+k6fekhSeEDmwwzBgnSjaa7FfGGrMlc3GoAEH9dg= diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index 8b22e9ec9d695..d50e73f5927db 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -23,7 +23,7 @@ func main() { generateDirectories := []string{ "github.com/coder/coder/v2/codersdk", - //"github.com/coder/coder/codersdk/health", + "github.com/coder/coder/v2/codersdk/health", } for _, dir := range generateDirectories { err = gen.Include(dir, true) @@ -34,7 +34,7 @@ func main() { referencePackages := []string{ "github.com/coder/serpent", - //"./coderd/healthcheck/health", + "github.com/coder/coder/v2/coderd/healthcheck/health", } for _, pkg := range referencePackages { err = gen.Include(pkg, false) diff --git a/scripts/apitypings/testdata/genericmap/genericmap.ts b/scripts/apitypings/testdata/genericmap/genericmap.ts index f7212396d3ae6..b337f6ad88395 100644 --- a/scripts/apitypings/testdata/genericmap/genericmap.ts +++ b/scripts/apitypings/testdata/genericmap/genericmap.ts @@ -2,6 +2,7 @@ // From codersdk/genericmap.go export interface Buzz { + readonly foo: Foo; readonly bazz: string; } From f38bb71c7e510a2af57f06738d31f2b5973bb9da Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Tue, 26 Nov 2024 16:36:04 -0600 Subject: [PATCH 04/20] chore: first generate of the codersdk package --- Makefile | 3 ++- scripts/apitypings/go.mod | 22 +++++++++++----------- scripts/apitypings/go.sum | 11 +++++++++++ 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 7a91b70d768bb..75cdc8411e50b 100644 --- a/Makefile +++ b/Makefile @@ -640,7 +640,8 @@ vpn/vpn.pb.go: vpn/vpn.proto ./vpn/vpn.proto site/src/api/typesGenerated.ts: $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go') - go run ./scripts/apitypings/ > $@ + # -C sets the directory for the go run command + go run -C ./scripts/apitypings main.go > $@ ./scripts/pnpm_install.sh site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisionersdk/proto/provisioner.pb.go diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod index f58168b40158d..f86f0509ad1d6 100644 --- a/scripts/apitypings/go.mod +++ b/scripts/apitypings/go.mod @@ -63,7 +63,7 @@ require ( github.com/hashicorp/terraform-plugin-go v0.23.0 // indirect github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 // indirect - github.com/hashicorp/yamux v0.1.1 // indirect + github.com/hashicorp/yamux v0.1.2 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect @@ -85,7 +85,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.60.0 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3 // indirect github.com/rivo/uniseg v0.4.7 // indirect @@ -111,21 +111,21 @@ require ( go.opentelemetry.io/otel/trace v1.30.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect + golang.org/x/net v0.32.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.8.0 // indirect - golang.org/x/tools v0.27.0 // indirect + golang.org/x/tools v0.28.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/grpc v1.68.0 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/DataDog/dd-trace-go.v1 v1.69.0 // indirect diff --git a/scripts/apitypings/go.sum b/scripts/apitypings/go.sum index bb2110bdec892..c72274aee7181 100644 --- a/scripts/apitypings/go.sum +++ b/scripts/apitypings/go.sum @@ -173,6 +173,7 @@ github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 h1:kJiWGx2kiQVo97Y5IOGR4EMc github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0/go.mod h1:sl/UoabMc37HA6ICVMmGO+/0wofkVIRxf+BMb/dnoIg= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= @@ -245,6 +246,7 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.60.0 h1:+V9PAREWNvJMAuJ1x1BaWl9dewMW4YrHZQbx0sJNllA= github.com/prometheus/common v0.60.0/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3 h1:4+LEVOB87y175cLJC/mbsgKmoDOjrBldtXvioEy96WY= @@ -326,6 +328,7 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -344,6 +347,7 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= @@ -355,6 +359,7 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -381,6 +386,7 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -389,6 +395,7 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -400,6 +407,7 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= @@ -412,6 +420,7 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= +golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= 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= @@ -426,10 +435,12 @@ google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1: google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f/go.mod h1:Yo94eF2nj7igQt+TiJ49KxjIH8ndLYPZMIRSiRcEbg0= google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f h1:C1QccEa9kUwvMgEUORqQD9S17QesQijxjZ84sO82mfo= google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= From fe9c7d1439be3cb104deba01b78426c733094452 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Wed, 27 Nov 2024 07:21:57 -0600 Subject: [PATCH 05/20] chore: switch gots -> guts (package rename) --- scripts/apitypings/go.mod | 3 --- scripts/apitypings/main.go | 10 +++++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod index f86f0509ad1d6..f0f8f354356e4 100644 --- a/scripts/apitypings/go.mod +++ b/scripts/apitypings/go.mod @@ -2,10 +2,7 @@ module github.com/coder/coder/scripts/apitypings go 1.23.0 -toolchain go1.23.3 - require ( - github.com/coder/gots v0.0.0-20241126222907-985a03a876f0 github.com/stretchr/testify v1.10.0 ) diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index d50e73f5927db..79330477e1d0d 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -4,8 +4,8 @@ import ( "fmt" "log" - "github.com/coder/gots" - "github.com/coder/gots/config" + "github.com/coder/guts" + "github.com/coder/guts/config" // Must import the packages we are trying to convert // And include the ones we are referencing @@ -16,7 +16,7 @@ import ( ) func main() { - gen, err := gots.NewGolangParser() + gen, err := guts.NewGolangParser() if err != nil { log.Fatalf("new convert: %v", err) } @@ -62,7 +62,7 @@ func main() { fmt.Println(output) } -func TsMutations(ts *gots.Typescript) { +func TsMutations(ts *guts.Typescript) { ts.ApplyMutations( // Enum list generator config.EnumLists, @@ -74,7 +74,7 @@ func TsMutations(ts *gots.Typescript) { } // TypeMappings is all the custom types for codersdk -func TypeMappings(gen *gots.GoParser) error { +func TypeMappings(gen *guts.GoParser) error { gen.IncludeCustomDeclaration(config.StandardMappings()) err := gen.IncludeCustom(map[string]string{ From 6305d44fa3e451698d52f72c8e071c3ffe258083 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 12:50:16 -0600 Subject: [PATCH 06/20] chore: switch to guts for typescript types generation --- Makefile | 1 + scripts/apitypings/go.mod | 18 +- scripts/apitypings/go.sum | 5 + scripts/apitypings/main.go | 22 +- scripts/apitypings/main_test.go | 5 +- scripts/apitypings/typesgenerated.ts | 0 site/biome.json | 2 +- site/src/api/typesGenerated.ts | 2506 -------------------------- 8 files changed, 31 insertions(+), 2528 deletions(-) create mode 100644 scripts/apitypings/typesgenerated.ts delete mode 100644 site/src/api/typesGenerated.ts diff --git a/Makefile b/Makefile index 75cdc8411e50b..163d1ba16c991 100644 --- a/Makefile +++ b/Makefile @@ -642,6 +642,7 @@ vpn/vpn.pb.go: vpn/vpn.proto site/src/api/typesGenerated.ts: $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go') # -C sets the directory for the go run command go run -C ./scripts/apitypings main.go > $@ + (cd ./site && npx biome format --write ./src/api/typesGenerated.ts) ./scripts/pnpm_install.sh site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisionersdk/proto/provisioner.pb.go diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod index f0f8f354356e4..6421880845b16 100644 --- a/scripts/apitypings/go.mod +++ b/scripts/apitypings/go.mod @@ -1,8 +1,13 @@ module github.com/coder/coder/scripts/apitypings -go 1.23.0 +go 1.23.1 + +toolchain go1.23.3 require ( + github.com/coder/coder/v2 v2.17.2 + github.com/coder/guts v0.0.0-20241209140041-d9cf060de89e + github.com/coder/serpent v0.10.0 github.com/stretchr/testify v1.10.0 ) @@ -23,9 +28,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/coder/coder/v2 v2.17.2 // indirect github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0 // indirect - github.com/coder/serpent v0.10.0 // indirect github.com/coder/terraform-provider-coder v1.0.2 // indirect github.com/coreos/go-oidc/v3 v3.11.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -43,7 +46,7 @@ require ( github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect + github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -87,7 +90,6 @@ require ( github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/secure-systems-lab/go-securesystemslib v0.7.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect @@ -100,12 +102,12 @@ require ( github.com/zclconf/go-cty v1.15.0 // indirect github.com/zeebo/errs v1.3.0 // indirect go.nhat.io/otelsql v0.14.0 // indirect - go.opentelemetry.io/otel v1.30.0 // indirect + go.opentelemetry.io/otel v1.32.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.30.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect go.opentelemetry.io/otel/sdk v1.30.0 // indirect - go.opentelemetry.io/otel/trace v1.30.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect golang.org/x/crypto v0.30.0 // indirect diff --git a/scripts/apitypings/go.sum b/scripts/apitypings/go.sum index c72274aee7181..162061f8f81ff 100644 --- a/scripts/apitypings/go.sum +++ b/scripts/apitypings/go.sum @@ -62,6 +62,7 @@ github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5 h1:f/mc6/A4owCKhJAjSGtW github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= github.com/coder/gots v0.0.0-20241126222907-985a03a876f0 h1:0jxONsMRoXchCdCcfcXlaVm1ciLkF6LLBDa7OgF4HJw= github.com/coder/gots v0.0.0-20241126222907-985a03a876f0/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= +github.com/coder/guts v0.0.0-20241209140041-d9cf060de89e/go.mod h1:NpXPfboumDmFosCGHThTW2Ke4O4xn1hOSlKMD+TK4Oc= 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/serpent v0.8.0 h1:6OR+k6fekhSeEDmwwzBgnSjaa7FfGGrMlc3GoAEH9dg= @@ -132,6 +133,7 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b h1:h9U78+dx9a4BKdQkBBos92HalKpaGKHrp+3Uo6yTodo= github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -307,16 +309,19 @@ go.nhat.io/otelsql v0.14.0 h1:Mz4xo+WVQLAOPZy6abxjVzZzNe8xoOUh/tOMJoxo3oo= go.nhat.io/otelsql v0.14.0/go.mod h1:iO9KfDBZO2WI6O7n+ippHe5OHdXQ5iiA2aIa3Kzywo8= go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 h1:dIIDULZJpgdiHz5tXrTgKIMLkus6jEFa7x5SOKcyR7E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0/go.mod h1:jlRVBe7+Z1wyxFSUs48L6OBQZ5JwH2Hg/Vbl+t9rAgI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE= go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg= go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index 79330477e1d0d..ed2f934e078d2 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -21,23 +21,22 @@ func main() { log.Fatalf("new convert: %v", err) } - generateDirectories := []string{ - "github.com/coder/coder/v2/codersdk", - "github.com/coder/coder/v2/codersdk/health", + generateDirectories := map[string]string{ + "github.com/coder/coder/v2/codersdk": "", + "github.com/coder/coder/v2/coderd/healthcheck/health": "Health", } - for _, dir := range generateDirectories { - err = gen.Include(dir, true) + for dir, prefix := range generateDirectories { + err = gen.IncludeGenerateWithPrefix(dir, prefix) if err != nil { log.Fatalf("include generate package %q: %v", dir, err) } } - referencePackages := []string{ - "github.com/coder/serpent", - "github.com/coder/coder/v2/coderd/healthcheck/health", + referencePackages := map[string]string{ + "github.com/coder/serpent": "Serpent", } - for _, pkg := range referencePackages { - err = gen.Include(pkg, false) + for pkg, prefix := range referencePackages { + err = gen.IncludeReference(pkg, prefix) if err != nil { log.Fatalf("include reference package %q: %v", pkg, err) } @@ -70,6 +69,8 @@ func TsMutations(ts *guts.Typescript) { config.ExportTypes, // Readonly interface fields config.ReadOnly, + // Add ignore linter comments + config.BiomeLintIgnoreAnyTypeParameters, ) } @@ -89,6 +90,7 @@ func TypeMappings(gen *guts.GoParser) error { "github.com/coder/serpent.Bool": "bool", "github.com/coder/serpent.Duration": "int64", "github.com/coder/serpent.URL": "string", + "github.com/coder/serpent.HostPort": "string", "encoding/json.RawMessage": "map[string]string", }) if err != nil { diff --git a/scripts/apitypings/main_test.go b/scripts/apitypings/main_test.go index 30759d2fdc906..471da6fc37b37 100644 --- a/scripts/apitypings/main_test.go +++ b/scripts/apitypings/main_test.go @@ -14,9 +14,8 @@ import ( "strings" "testing" + "github.com/coder/guts" "github.com/stretchr/testify/require" - - "github.com/coder/gots" ) // updateGoldenFiles is a flag that can be set to update golden files. @@ -37,7 +36,7 @@ func TestGeneration(t *testing.T) { t.Parallel() dir := filepath.Join(".", "testdata", f.Name()) - gen, err := gots.NewGolangParser() + gen, err := guts.NewGolangParser() if err != nil { log.Fatalf("new convert: %v", err) } diff --git a/scripts/apitypings/typesgenerated.ts b/scripts/apitypings/typesgenerated.ts new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/site/biome.json b/site/biome.json index 76d68260d1028..ccf0b7ba0dc18 100644 --- a/site/biome.json +++ b/site/biome.json @@ -1,6 +1,6 @@ { "files": { - "ignore": ["**/*Generated.ts"] + "ignore": [] }, "linter": { "rules": { diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts deleted file mode 100644 index 1d722a6e75d7c..0000000000000 --- a/site/src/api/typesGenerated.ts +++ /dev/null @@ -1,2506 +0,0 @@ -// Code generated by 'make site/src/api/typesGenerated.ts'. DO NOT EDIT. - -// The code below is generated from codersdk. - -// From codersdk/templates.go -export interface ACLAvailable { - readonly users: Readonly>; - readonly groups: Readonly>; -} - -// From codersdk/apikey.go -export interface APIKey { - readonly id: string; - readonly user_id: string; - readonly last_used: string; - readonly expires_at: string; - readonly created_at: string; - readonly updated_at: string; - readonly login_type: LoginType; - readonly scope: APIKeyScope; - readonly token_name: string; - readonly lifetime_seconds: number; -} - -// From codersdk/apikey.go -export interface APIKeyWithOwner extends APIKey { - readonly username: string; -} - -// From codersdk/licenses.go -export interface AddLicenseRequest { - readonly license: string; -} - -// From codersdk/workspacebuilds.go -export interface AgentConnectionTiming { - readonly started_at: string; - readonly ended_at: string; - readonly stage: TimingStage; - readonly workspace_agent_id: string; - readonly workspace_agent_name: string; -} - -// From codersdk/workspacebuilds.go -export interface AgentScriptTiming { - readonly started_at: string; - readonly ended_at: string; - readonly exit_code: number; - readonly stage: TimingStage; - readonly status: string; - readonly display_name: string; - readonly workspace_agent_id: string; - readonly workspace_agent_name: string; -} - -// From codersdk/templates.go -export interface AgentStatsReportResponse { - readonly num_comms: number; - readonly rx_bytes: number; - readonly tx_bytes: number; -} - -// From codersdk/deployment.go -export interface AppHostResponse { - readonly host: string; -} - -// From codersdk/deployment.go -export interface AppearanceConfig { - readonly application_name: string; - readonly logo_url: string; - readonly docs_url: string; - readonly service_banner: BannerConfig; - readonly announcement_banners: Readonly>; - readonly support_links?: Readonly>; -} - -// From codersdk/templates.go -export interface ArchiveTemplateVersionsRequest { - readonly all: boolean; -} - -// From codersdk/templates.go -export interface ArchiveTemplateVersionsResponse { - readonly template_id: string; - readonly archived_ids: Readonly>; -} - -// From codersdk/roles.go -export interface AssignableRoles extends Role { - readonly assignable: boolean; - readonly built_in: boolean; -} - -// From codersdk/audit.go -export type AuditDiff = Record - -// From codersdk/audit.go -export interface AuditDiffField { - // empty interface{} type, falling back to unknown - readonly old?: unknown; - // empty interface{} type, falling back to unknown - readonly new?: unknown; - readonly secret: boolean; -} - -// From codersdk/audit.go -export interface AuditLog { - readonly id: string; - readonly request_id: string; - readonly time: string; - readonly ip: string; - readonly user_agent: string; - readonly resource_type: ResourceType; - readonly resource_id: string; - readonly resource_target: string; - readonly resource_icon: string; - readonly action: AuditAction; - readonly diff: AuditDiff; - readonly status_code: number; - readonly additional_fields: Record; - readonly description: string; - readonly resource_link: string; - readonly is_deleted: boolean; - readonly organization_id: string; - readonly organization?: MinimalOrganization; - readonly user?: User; -} - -// From codersdk/audit.go -export interface AuditLogResponse { - readonly audit_logs: Readonly>; - readonly count: number; -} - -// From codersdk/audit.go -export interface AuditLogsRequest extends Pagination { - readonly q?: string; -} - -// From codersdk/users.go -export interface AuthMethod { - readonly enabled: boolean; -} - -// From codersdk/users.go -export interface AuthMethods { - readonly terms_of_service_url?: string; - readonly password: AuthMethod; - readonly github: AuthMethod; - readonly oidc: OIDCAuthMethod; -} - -// From codersdk/authorization.go -export interface AuthorizationCheck { - readonly object: AuthorizationObject; - readonly action: RBACAction; -} - -// From codersdk/authorization.go -export interface AuthorizationObject { - readonly resource_type: RBACResource; - readonly owner_id?: string; - readonly organization_id?: string; - readonly resource_id?: string; - readonly any_org?: boolean; -} - -// From codersdk/authorization.go -export interface AuthorizationRequest { - readonly checks: Record; -} - -// From codersdk/authorization.go -export type AuthorizationResponse = Record - -// From codersdk/deployment.go -export interface AvailableExperiments { - readonly safe: Readonly>; -} - -// From codersdk/deployment.go -export interface BannerConfig { - readonly enabled: boolean; - readonly message?: string; - readonly background_color?: string; -} - -// From codersdk/deployment.go -export interface BuildInfoResponse { - readonly external_url: string; - readonly version: string; - readonly dashboard_url: string; - readonly telemetry: boolean; - readonly workspace_proxy: boolean; - readonly agent_api_version: string; - readonly provisioner_api_version: string; - readonly upgrade_message: string; - readonly deployment_id: string; -} - -// From codersdk/users.go -export interface ChangePasswordWithOneTimePasscodeRequest { - readonly email: string; - readonly password: string; - readonly one_time_passcode: string; -} - -// From codersdk/insights.go -export interface ConnectionLatency { - readonly p50: number; - readonly p95: number; -} - -// From codersdk/users.go -export interface ConvertLoginRequest { - readonly to_type: LoginType; - readonly password: string; -} - -// From codersdk/users.go -export interface CreateFirstUserRequest { - readonly email: string; - readonly username: string; - readonly name: string; - readonly password: string; - readonly trial: boolean; - readonly trial_info: CreateFirstUserTrialInfo; -} - -// From codersdk/users.go -export interface CreateFirstUserResponse { - readonly user_id: string; - readonly organization_id: string; -} - -// From codersdk/users.go -export interface CreateFirstUserTrialInfo { - readonly first_name: string; - readonly last_name: string; - readonly phone_number: string; - readonly job_title: string; - readonly company_name: string; - readonly country: string; - readonly developers: string; -} - -// From codersdk/groups.go -export interface CreateGroupRequest { - readonly name: string; - readonly display_name: string; - readonly avatar_url: string; - readonly quota_allowance: number; -} - -// From codersdk/organizations.go -export interface CreateOrganizationRequest { - readonly name: string; - readonly display_name?: string; - readonly description?: string; - readonly icon?: string; -} - -// From codersdk/provisionerdaemons.go -export interface CreateProvisionerKeyRequest { - readonly name: string; - readonly tags: Record; -} - -// From codersdk/provisionerdaemons.go -export interface CreateProvisionerKeyResponse { - readonly key: string; -} - -// From codersdk/organizations.go -export interface CreateTemplateRequest { - readonly name: string; - readonly display_name?: string; - readonly description?: string; - readonly icon?: string; - readonly template_version_id: string; - readonly default_ttl_ms?: number; - readonly activity_bump_ms?: number; - readonly autostop_requirement?: TemplateAutostopRequirement; - readonly autostart_requirement?: TemplateAutostartRequirement; - readonly allow_user_cancel_workspace_jobs?: boolean; - readonly allow_user_autostart?: boolean; - readonly allow_user_autostop?: boolean; - readonly failure_ttl_ms?: number; - readonly dormant_ttl_ms?: number; - readonly delete_ttl_ms?: number; - readonly disable_everyone_group_access: boolean; - readonly require_active_version: boolean; - readonly max_port_share_level?: WorkspaceAgentPortShareLevel; -} - -// From codersdk/templateversions.go -export interface CreateTemplateVersionDryRunRequest { - readonly workspace_name: string; - readonly rich_parameter_values: Readonly>; - readonly user_variable_values?: Readonly>; -} - -// From codersdk/organizations.go -export interface CreateTemplateVersionRequest { - readonly name?: string; - readonly message?: string; - readonly template_id?: string; - readonly storage_method: ProvisionerStorageMethod; - readonly file_id?: string; - readonly example_id?: string; - readonly provisioner: ProvisionerType; - readonly tags: Record; - readonly user_variable_values?: Readonly>; -} - -// From codersdk/audit.go -export interface CreateTestAuditLogRequest { - readonly action?: AuditAction; - readonly resource_type?: ResourceType; - readonly resource_id?: string; - readonly additional_fields?: Record; - readonly time?: string; - readonly build_reason?: BuildReason; - readonly organization_id?: string; -} - -// From codersdk/apikey.go -export interface CreateTokenRequest { - readonly lifetime: number; - readonly scope: APIKeyScope; - readonly token_name: string; -} - -// From codersdk/users.go -export interface CreateUserRequestWithOrgs { - readonly email: string; - readonly username: string; - readonly name: string; - readonly password: string; - readonly login_type: LoginType; - readonly user_status?: UserStatus; - readonly organization_ids: Readonly>; -} - -// From codersdk/workspaces.go -export interface CreateWorkspaceBuildRequest { - readonly template_version_id?: string; - readonly transition: WorkspaceTransition; - readonly dry_run?: boolean; - readonly state?: string; - readonly orphan?: boolean; - readonly rich_parameter_values?: Readonly>; - readonly log_level?: ProvisionerLogLevel; -} - -// From codersdk/workspaceproxy.go -export interface CreateWorkspaceProxyRequest { - readonly name: string; - readonly display_name: string; - readonly icon: string; -} - -// From codersdk/organizations.go -export interface CreateWorkspaceRequest { - readonly template_id?: string; - readonly template_version_id?: string; - readonly name: string; - readonly autostart_schedule?: string; - readonly ttl_ms?: number; - readonly rich_parameter_values?: Readonly>; - readonly automatic_updates?: AutomaticUpdates; -} - -// From codersdk/deployment.go -export interface CryptoKey { - readonly feature: CryptoKeyFeature; - readonly secret: string; - readonly deletes_at: string; - readonly sequence: number; - readonly starts_at: string; -} - -// From codersdk/roles.go -export interface CustomRoleRequest { - readonly name: string; - readonly display_name: string; - readonly site_permissions: Readonly>; - readonly organization_permissions: Readonly>; - readonly user_permissions: Readonly>; -} - -// From codersdk/deployment.go -export interface DAUEntry { - readonly date: string; - readonly amount: number; -} - -// From codersdk/deployment.go -export interface DAURequest { - readonly TZHourOffset: number; -} - -// From codersdk/deployment.go -export interface DAUsResponse { - readonly entries: Readonly>; - readonly tz_hour_offset: number; -} - -// From codersdk/deployment.go -export interface DERP { - readonly server: DERPServerConfig; - readonly config: DERPConfig; -} - -// From codersdk/deployment.go -export interface DERPConfig { - readonly block_direct: boolean; - readonly force_websockets: boolean; - readonly url: string; - readonly path: string; -} - -// From codersdk/workspaceagents.go -export interface DERPRegion { - readonly preferred: boolean; - readonly latency_ms: number; -} - -// From codersdk/deployment.go -export interface DERPServerConfig { - readonly enable: boolean; - readonly region_id: number; - readonly region_code: string; - readonly region_name: string; - readonly stun_addresses: string[]; - readonly relay_url: string; -} - -// From codersdk/deployment.go -export interface DangerousConfig { - readonly allow_path_app_sharing: boolean; - readonly allow_path_app_site_owner_access: boolean; - readonly allow_all_cors: boolean; -} - -// From codersdk/workspaceagentportshare.go -export interface DeleteWorkspaceAgentPortShareRequest { - readonly agent_name: string; - readonly port: number; -} - -// From codersdk/deployment.go -export interface DeploymentConfig { - readonly config?: DeploymentValues; - readonly options?: SerpentOptionSet; -} - -// From codersdk/deployment.go -export interface DeploymentStats { - readonly aggregated_from: string; - readonly collected_at: string; - readonly next_update_at: string; - readonly workspaces: WorkspaceDeploymentStats; - readonly session_count: SessionCountDeploymentStats; -} - -// From codersdk/deployment.go -export interface DeploymentValues { - readonly verbose?: boolean; - readonly access_url?: string; - readonly wildcard_access_url?: string; - readonly docs_url?: string; - readonly redirect_to_access_url?: boolean; - readonly http_address?: string; - readonly autobuild_poll_interval?: number; - readonly job_hang_detector_interval?: number; - readonly derp?: DERP; - readonly prometheus?: PrometheusConfig; - readonly pprof?: PprofConfig; - readonly proxy_trusted_headers?: string[]; - readonly proxy_trusted_origins?: string[]; - readonly cache_directory?: string; - readonly in_memory_database?: boolean; - readonly pg_connection_url?: string; - readonly pg_auth?: string; - readonly oauth2?: OAuth2Config; - readonly oidc?: OIDCConfig; - readonly telemetry?: TelemetryConfig; - readonly tls?: TLSConfig; - readonly trace?: TraceConfig; - readonly secure_auth_cookie?: boolean; - readonly strict_transport_security?: number; - readonly strict_transport_security_options?: string[]; - readonly ssh_keygen_algorithm?: string; - readonly metrics_cache_refresh_interval?: number; - readonly agent_stat_refresh_interval?: number; - readonly agent_fallback_troubleshooting_url?: string; - readonly browser_only?: boolean; - readonly scim_api_key?: string; - readonly external_token_encryption_keys?: string[]; - readonly provisioner?: ProvisionerConfig; - readonly rate_limit?: RateLimitConfig; - readonly experiments?: string[]; - readonly update_check?: boolean; - readonly swagger?: SwaggerConfig; - readonly logging?: LoggingConfig; - readonly dangerous?: DangerousConfig; - readonly disable_path_apps?: boolean; - readonly session_lifetime?: SessionLifetime; - readonly disable_password_auth?: boolean; - readonly support?: SupportConfig; - readonly external_auth?: Readonly>; - readonly config_ssh?: SSHConfig; - readonly wgtunnel_host?: string; - readonly disable_owner_workspace_exec?: boolean; - readonly proxy_health_status_interval?: number; - readonly enable_terraform_debug_mode?: boolean; - readonly user_quiet_hours_schedule?: UserQuietHoursScheduleConfig; - readonly web_terminal_renderer?: string; - readonly allow_workspace_renames?: boolean; - readonly healthcheck?: HealthcheckConfig; - readonly cli_upgrade_message?: string; - readonly terms_of_service_url?: string; - readonly notifications?: NotificationsConfig; - readonly additional_csp_policy?: string[]; - readonly config?: string; - readonly write_config?: boolean; - readonly address?: string; -} - -// From codersdk/deployment.go -export interface Entitlements { - readonly features: Record; - readonly warnings: Readonly>; - readonly errors: Readonly>; - readonly has_license: boolean; - readonly trial: boolean; - readonly require_telemetry: boolean; - readonly refreshed_at: string; -} - -// From codersdk/deployment.go -export type Experiments = Readonly> - -// From codersdk/externalauth.go -export interface ExternalAuth { - readonly authenticated: boolean; - readonly device: boolean; - readonly display_name: string; - readonly user?: ExternalAuthUser; - readonly app_installable: boolean; - readonly installations: Readonly>; - readonly app_install_url: string; -} - -// From codersdk/externalauth.go -export interface ExternalAuthAppInstallation { - readonly id: number; - readonly account: ExternalAuthUser; - readonly configure_url: string; -} - -// From codersdk/deployment.go -export interface ExternalAuthConfig { - readonly type: string; - readonly client_id: string; - readonly id: string; - readonly auth_url: string; - readonly token_url: string; - readonly validate_url: string; - readonly app_install_url: string; - readonly app_installations_url: string; - readonly no_refresh: boolean; - readonly scopes: Readonly>; - readonly device_flow: boolean; - readonly device_code_url: string; - readonly regex: string; - readonly display_name: string; - readonly display_icon: string; -} - -// From codersdk/externalauth.go -export interface ExternalAuthDevice { - readonly device_code: string; - readonly user_code: string; - readonly verification_uri: string; - readonly expires_in: number; - readonly interval: number; -} - -// From codersdk/externalauth.go -export interface ExternalAuthDeviceExchange { - readonly device_code: string; -} - -// From codersdk/externalauth.go -export interface ExternalAuthLink { - readonly provider_id: string; - readonly created_at: string; - readonly updated_at: string; - readonly has_refresh_token: boolean; - readonly expires: string; - readonly authenticated: boolean; - readonly validate_error: string; -} - -// From codersdk/externalauth.go -export interface ExternalAuthLinkProvider { - readonly id: string; - readonly type: string; - readonly device: boolean; - readonly display_name: string; - readonly display_icon: string; - readonly allow_refresh: boolean; - readonly allow_validate: boolean; -} - -// From codersdk/externalauth.go -export interface ExternalAuthUser { - readonly id: number; - readonly login: string; - readonly avatar_url: string; - readonly profile_url: string; - readonly name: string; -} - -// From codersdk/deployment.go -export interface Feature { - readonly entitlement: Entitlement; - readonly enabled: boolean; - readonly limit?: number; - readonly actual?: number; -} - -// From codersdk/apikey.go -export interface GenerateAPIKeyResponse { - readonly key: string; -} - -// From codersdk/users.go -export interface GetUsersResponse { - readonly users: Readonly>; - readonly count: number; -} - -// From codersdk/gitsshkey.go -export interface GitSSHKey { - readonly user_id: string; - readonly created_at: string; - readonly updated_at: string; - readonly public_key: string; -} - -// From codersdk/groups.go -export interface Group { - readonly id: string; - readonly name: string; - readonly display_name: string; - readonly organization_id: string; - readonly members: Readonly>; - readonly total_member_count: number; - readonly avatar_url: string; - readonly quota_allowance: number; - readonly source: GroupSource; - readonly organization_name: string; - readonly organization_display_name: string; -} - -// From codersdk/groups.go -export interface GroupArguments { - readonly Organization: string; - readonly HasMember: string; - readonly GroupIDs: Readonly>; -} - -// From codersdk/idpsync.go -export interface GroupSyncSettings { - readonly field: string; - readonly mapping: Record>>; - // external type "regexp.Regexp", using "unknown" - readonly regex_filter?: unknown; - readonly auto_create_missing_groups: boolean; - readonly legacy_group_name_mapping?: Record; -} - -// From codersdk/workspaceapps.go -export interface Healthcheck { - readonly url: string; - readonly interval: number; - readonly threshold: number; -} - -// From codersdk/deployment.go -export interface HealthcheckConfig { - readonly refresh: number; - readonly threshold_database: number; -} - -// From codersdk/workspaceagents.go -export interface IssueReconnectingPTYSignedTokenRequest { - readonly url: string; - readonly agentID: string; -} - -// From codersdk/workspaceagents.go -export interface IssueReconnectingPTYSignedTokenResponse { - readonly signed_token: string; -} - -// From codersdk/jfrog.go -export interface JFrogXrayScan { - readonly workspace_id: string; - readonly agent_id: string; - readonly critical: number; - readonly high: number; - readonly medium: number; - readonly results_url: string; -} - -// From codersdk/licenses.go -export interface License { - readonly id: number; - readonly uuid: string; - readonly uploaded_at: string; - // empty interface{} type, falling back to unknown - readonly claims: Record; -} - -// From codersdk/deployment.go -export interface LinkConfig { - readonly name: string; - readonly target: string; - readonly icon: string; -} - -// From codersdk/externalauth.go -export interface ListUserExternalAuthResponse { - readonly providers: Readonly>; - readonly links: Readonly>; -} - -// From codersdk/deployment.go -export interface LoggingConfig { - readonly log_filter: string[]; - readonly human: string; - readonly json: string; - readonly stackdriver: string; -} - -// From codersdk/users.go -export interface LoginWithPasswordRequest { - readonly email: string; - readonly password: string; -} - -// From codersdk/users.go -export interface LoginWithPasswordResponse { - readonly session_token: string; -} - -// From codersdk/provisionerdaemons.go -export interface MatchedProvisioners { - readonly count: number; - readonly available: number; - readonly most_recently_seen?: string; -} - -// From codersdk/organizations.go -export interface MinimalOrganization { - readonly id: string; - readonly name: string; - readonly display_name: string; - readonly icon: string; -} - -// From codersdk/users.go -export interface MinimalUser { - readonly id: string; - readonly username: string; - readonly avatar_url: string; -} - -// From codersdk/notifications.go -export interface NotificationMethodsResponse { - readonly available: Readonly>; - readonly default: string; -} - -// From codersdk/notifications.go -export interface NotificationPreference { - readonly id: string; - readonly disabled: boolean; - readonly updated_at: string; -} - -// From codersdk/notifications.go -export interface NotificationTemplate { - readonly id: string; - readonly name: string; - readonly title_template: string; - readonly body_template: string; - readonly actions: string; - readonly group: string; - readonly method: string; - readonly kind: string; -} - -// From codersdk/deployment.go -export interface NotificationsConfig { - readonly max_send_attempts: number; - readonly retry_interval: number; - readonly sync_interval: number; - readonly sync_buffer_size: number; - readonly lease_period: number; - readonly lease_count: number; - readonly fetch_interval: number; - readonly method: string; - readonly dispatch_timeout: number; - readonly email: NotificationsEmailConfig; - readonly webhook: NotificationsWebhookConfig; -} - -// From codersdk/deployment.go -export interface NotificationsEmailAuthConfig { - readonly identity: string; - readonly username: string; - readonly password: string; - readonly password_file: string; -} - -// From codersdk/deployment.go -export interface NotificationsEmailConfig { - readonly from: string; - readonly smarthost: string; - readonly hello: string; - readonly auth: NotificationsEmailAuthConfig; - readonly tls: NotificationsEmailTLSConfig; - readonly force_tls: boolean; -} - -// From codersdk/deployment.go -export interface NotificationsEmailTLSConfig { - readonly start_tls: boolean; - readonly server_name: string; - readonly insecure_skip_verify: boolean; - readonly ca_file: string; - readonly cert_file: string; - readonly key_file: string; -} - -// From codersdk/notifications.go -export interface NotificationsSettings { - readonly notifier_paused: boolean; -} - -// From codersdk/deployment.go -export interface NotificationsWebhookConfig { - readonly endpoint: string; -} - -// From codersdk/oauth2.go -export interface OAuth2AppEndpoints { - readonly authorization: string; - readonly token: string; - readonly device_authorization: string; -} - -// From codersdk/deployment.go -export interface OAuth2Config { - readonly github: OAuth2GithubConfig; -} - -// From codersdk/deployment.go -export interface OAuth2GithubConfig { - readonly client_id: string; - readonly client_secret: string; - readonly allowed_orgs: string[]; - readonly allowed_teams: string[]; - readonly allow_signups: boolean; - readonly allow_everyone: boolean; - readonly enterprise_base_url: string; -} - -// From codersdk/oauth2.go -export interface OAuth2ProviderApp { - readonly id: string; - readonly name: string; - readonly callback_url: string; - readonly icon: string; - readonly endpoints: OAuth2AppEndpoints; -} - -// From codersdk/oauth2.go -export interface OAuth2ProviderAppFilter { - readonly user_id?: string; -} - -// From codersdk/oauth2.go -export interface OAuth2ProviderAppSecret { - readonly id: string; - readonly last_used_at?: string; - readonly client_secret_truncated: string; -} - -// From codersdk/oauth2.go -export interface OAuth2ProviderAppSecretFull { - readonly id: string; - readonly client_secret_full: string; -} - -// From codersdk/users.go -export interface OAuthConversionResponse { - readonly state_string: string; - readonly expires_at: string; - readonly to_type: LoginType; - readonly user_id: string; -} - -// From codersdk/users.go -export interface OIDCAuthMethod extends AuthMethod { - readonly signInText: string; - readonly iconUrl: string; -} - -// From codersdk/deployment.go -export interface OIDCConfig { - readonly allow_signups: boolean; - readonly client_id: string; - readonly client_secret: string; - readonly client_key_file: string; - readonly client_cert_file: string; - readonly email_domain: string[]; - readonly issuer_url: string; - readonly scopes: string[]; - readonly ignore_email_verified: boolean; - readonly username_field: string; - readonly name_field: string; - readonly email_field: string; - readonly auth_url_params: Record; - readonly ignore_user_info: boolean; - readonly organization_field: string; - readonly organization_mapping: Record>>; - readonly organization_assign_default: boolean; - readonly group_auto_create: boolean; - readonly group_regex_filter: string; - readonly group_allow_list: string[]; - readonly groups_field: string; - readonly group_mapping: Record; - readonly user_role_field: string; - readonly user_role_mapping: Record>>; - readonly user_roles_default: string[]; - readonly sign_in_text: string; - readonly icon_url: string; - readonly signups_disabled_text: string; - readonly skip_issuer_checks: boolean; -} - -// From codersdk/organizations.go -export interface Organization extends MinimalOrganization { - readonly description: string; - readonly created_at: string; - readonly updated_at: string; - readonly is_default: boolean; -} - -// From codersdk/organizations.go -export interface OrganizationMember { - readonly user_id: string; - readonly organization_id: string; - readonly created_at: string; - readonly updated_at: string; - readonly roles: Readonly>; -} - -// From codersdk/organizations.go -export interface OrganizationMemberWithUserData extends OrganizationMember { - readonly username: string; - readonly name: string; - readonly avatar_url: string; - readonly email: string; - readonly global_roles: Readonly>; -} - -// From codersdk/idpsync.go -export interface OrganizationSyncSettings { - readonly field: string; - readonly mapping: Record>>; - readonly organization_assign_default: boolean; -} - -// From codersdk/pagination.go -export interface Pagination { - readonly after_id?: string; - readonly limit?: number; - readonly offset?: number; -} - -// From codersdk/groups.go -export interface PatchGroupRequest { - readonly add_users: Readonly>; - readonly remove_users: Readonly>; - readonly name: string; - readonly display_name?: string; - readonly avatar_url?: string; - readonly quota_allowance?: number; -} - -// From codersdk/templateversions.go -export interface PatchTemplateVersionRequest { - readonly name: string; - readonly message?: string; -} - -// From codersdk/workspaceproxy.go -export interface PatchWorkspaceProxy { - readonly id: string; - readonly name: string; - readonly display_name: string; - readonly icon: string; - readonly regenerate_token: boolean; -} - -// From codersdk/roles.go -export interface Permission { - readonly negate: boolean; - readonly resource_type: RBACResource; - readonly action: RBACAction; -} - -// From codersdk/oauth2.go -export interface PostOAuth2ProviderAppRequest { - readonly name: string; - readonly callback_url: string; - readonly icon: string; -} - -// From codersdk/workspaces.go -export interface PostWorkspaceUsageRequest { - readonly agent_id: string; - readonly app_name: UsageAppName; -} - -// From codersdk/deployment.go -export interface PprofConfig { - readonly enable: boolean; - readonly address: string; -} - -// From codersdk/deployment.go -export interface PrometheusConfig { - readonly enable: boolean; - readonly address: string; - readonly collect_agent_stats: boolean; - readonly collect_db_metrics: boolean; - readonly aggregate_agent_stats_by: string[]; -} - -// From codersdk/deployment.go -export interface ProvisionerConfig { - readonly daemons: number; - readonly daemon_types: string[]; - readonly daemon_poll_interval: number; - readonly daemon_poll_jitter: number; - readonly force_cancel_interval: number; - readonly daemon_psk: string; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerDaemon { - readonly id: string; - readonly organization_id: string; - readonly key_id: string; - readonly created_at: string; - readonly last_seen_at?: string; - readonly name: string; - readonly version: string; - readonly api_version: string; - readonly provisioners: Readonly>; - readonly tags: Record; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerJob { - readonly id: string; - readonly created_at: string; - readonly started_at?: string; - readonly completed_at?: string; - readonly canceled_at?: string; - readonly error?: string; - readonly error_code?: JobErrorCode; - readonly status: ProvisionerJobStatus; - readonly worker_id?: string; - readonly file_id: string; - readonly tags: Record; - readonly queue_position: number; - readonly queue_size: number; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerJobLog { - readonly id: number; - readonly created_at: string; - readonly log_source: LogSource; - readonly log_level: LogLevel; - readonly stage: string; - readonly output: string; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerKey { - readonly id: string; - readonly created_at: string; - readonly organization: string; - readonly name: string; - readonly tags: ProvisionerKeyTags; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerKeyDaemons { - readonly key: ProvisionerKey; - readonly daemons: Readonly>; -} - -// From codersdk/provisionerdaemons.go -export type ProvisionerKeyTags = Record - -// From codersdk/workspacebuilds.go -export interface ProvisionerTiming { - readonly job_id: string; - readonly started_at: string; - readonly ended_at: string; - readonly stage: TimingStage; - readonly source: string; - readonly action: string; - readonly resource: string; -} - -// From codersdk/workspaceproxy.go -export interface ProxyHealthReport { - readonly errors: Readonly>; - readonly warnings: Readonly>; -} - -// From codersdk/workspaces.go -export interface PutExtendWorkspaceRequest { - readonly deadline: string; -} - -// From codersdk/oauth2.go -export interface PutOAuth2ProviderAppRequest { - readonly name: string; - readonly callback_url: string; - readonly icon: string; -} - -// From codersdk/deployment.go -export interface RateLimitConfig { - readonly disable_all: boolean; - readonly api: number; -} - -// From codersdk/users.go -export interface ReducedUser extends MinimalUser { - readonly name: string; - readonly email: string; - readonly created_at: string; - readonly updated_at: string; - readonly last_seen_at: string; - readonly status: UserStatus; - readonly login_type: LoginType; - readonly theme_preference: string; -} - -// From codersdk/workspaceproxy.go -export interface Region { - readonly id: string; - readonly name: string; - readonly display_name: string; - readonly icon_url: string; - readonly healthy: boolean; - readonly path_app_url: string; - readonly wildcard_hostname: string; -} - -// From codersdk/workspaceproxy.go -export interface RegionsResponse { - readonly regions: Readonly>; -} - -// From codersdk/replicas.go -export interface Replica { - readonly id: string; - readonly hostname: string; - readonly created_at: string; - readonly relay_address: string; - readonly region_id: number; - readonly error: string; - readonly database_latency: number; -} - -// From codersdk/users.go -export interface RequestOneTimePasscodeRequest { - readonly email: string; -} - -// From codersdk/workspaces.go -export interface ResolveAutostartResponse { - readonly parameter_mismatch: boolean; -} - -// From codersdk/client.go -export interface Response { - readonly message: string; - readonly detail?: string; - readonly validations?: Readonly>; -} - -// From codersdk/roles.go -export interface Role { - readonly name: string; - readonly organization_id?: string; - readonly display_name: string; - readonly site_permissions: Readonly>; - readonly organization_permissions: Readonly>; - readonly user_permissions: Readonly>; -} - -// From codersdk/idpsync.go -export interface RoleSyncSettings { - readonly field: string; - readonly mapping: Record>>; -} - -// From codersdk/deployment.go -export interface SSHConfig { - readonly DeploymentName: string; - readonly SSHConfigOptions: string[]; -} - -// From codersdk/deployment.go -export interface SSHConfigResponse { - readonly hostname_prefix: string; - readonly ssh_config_options: Record; -} - -// From codersdk/serversentevents.go -export interface ServerSentEvent { - readonly type: ServerSentEventType; - // empty interface{} type, falling back to unknown - readonly data: unknown; -} - -// From codersdk/deployment.go -export interface ServiceBannerConfig { - readonly enabled: boolean; - readonly message?: string; - readonly background_color?: string; -} - -// From codersdk/deployment.go -export interface SessionCountDeploymentStats { - readonly vscode: number; - readonly ssh: number; - readonly jetbrains: number; - readonly reconnecting_pty: number; -} - -// From codersdk/deployment.go -export interface SessionLifetime { - readonly disable_expiry_refresh?: boolean; - readonly default_duration: number; - readonly default_token_lifetime?: number; - readonly max_token_lifetime?: number; -} - -// From codersdk/roles.go -export interface SlimRole { - readonly name: string; - readonly display_name: string; - readonly organization_id?: string; -} - -// From codersdk/deployment.go -export interface SupportConfig { - readonly links: Readonly>; -} - -// From codersdk/deployment.go -export interface SwaggerConfig { - readonly enable: boolean; -} - -// From codersdk/deployment.go -export interface TLSConfig { - readonly enable: boolean; - readonly address: string; - readonly redirect_http: boolean; - readonly cert_file: string[]; - readonly client_auth: string; - readonly client_ca_file: string; - readonly key_file: string[]; - readonly min_version: string; - readonly client_cert_file: string; - readonly client_key_file: string; - readonly supported_ciphers: string[]; - readonly allow_insecure_ciphers: boolean; -} - -// From codersdk/deployment.go -export interface TelemetryConfig { - readonly enable: boolean; - readonly trace: boolean; - readonly url: string; -} - -// From codersdk/templates.go -export interface Template { - readonly id: string; - readonly created_at: string; - readonly updated_at: string; - readonly organization_id: string; - readonly organization_name: string; - readonly organization_display_name: string; - readonly organization_icon: string; - readonly name: string; - readonly display_name: string; - readonly provisioner: ProvisionerType; - readonly active_version_id: string; - readonly active_user_count: number; - readonly build_time_stats: TemplateBuildTimeStats; - readonly description: string; - readonly deprecated: boolean; - readonly deprecation_message: string; - readonly icon: string; - readonly default_ttl_ms: number; - readonly activity_bump_ms: number; - readonly autostop_requirement: TemplateAutostopRequirement; - readonly autostart_requirement: TemplateAutostartRequirement; - readonly created_by_id: string; - readonly created_by_name: string; - readonly allow_user_autostart: boolean; - readonly allow_user_autostop: boolean; - readonly allow_user_cancel_workspace_jobs: boolean; - readonly failure_ttl_ms: number; - readonly time_til_dormant_ms: number; - readonly time_til_dormant_autodelete_ms: number; - readonly require_active_version: boolean; - readonly max_port_share_level: WorkspaceAgentPortShareLevel; -} - -// From codersdk/templates.go -export interface TemplateACL { - readonly users: Readonly>; - readonly group: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateAppUsage { - readonly template_ids: Readonly>; - readonly type: TemplateAppsType; - readonly display_name: string; - readonly slug: string; - readonly icon: string; - readonly seconds: number; - readonly times_used: number; -} - -// From codersdk/templates.go -export interface TemplateAutostartRequirement { - readonly days_of_week: Readonly>; -} - -// From codersdk/templates.go -export interface TemplateAutostopRequirement { - readonly days_of_week: Readonly>; - readonly weeks: number; -} - -// From codersdk/templates.go -export type TemplateBuildTimeStats = Record - -// From codersdk/templates.go -export interface TemplateExample { - readonly id: string; - readonly url: string; - readonly name: string; - readonly description: string; - readonly icon: string; - readonly tags: Readonly>; - readonly markdown: string; -} - -// From codersdk/organizations.go -export interface TemplateFilter { - readonly q?: string; -} - -// From codersdk/templates.go -export interface TemplateGroup extends Group { - readonly role: TemplateRole; -} - -// From codersdk/insights.go -export interface TemplateInsightsIntervalReport { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly interval: InsightsReportInterval; - readonly active_users: number; -} - -// From codersdk/insights.go -export interface TemplateInsightsReport { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly active_users: number; - readonly apps_usage: Readonly>; - readonly parameters_usage: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateInsightsRequest { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly interval: InsightsReportInterval; - readonly sections: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateInsightsResponse { - readonly report?: TemplateInsightsReport; - readonly interval_reports?: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateParameterUsage { - readonly template_ids: Readonly>; - readonly display_name: string; - readonly name: string; - readonly type: string; - readonly description: string; - readonly options?: Readonly>; - readonly values: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateParameterValue { - readonly value: string; - readonly count: number; -} - -// From codersdk/templates.go -export interface TemplateUser extends User { - readonly role: TemplateRole; -} - -// From codersdk/templateversions.go -export interface TemplateVersion { - readonly id: string; - readonly template_id?: string; - readonly organization_id?: string; - readonly created_at: string; - readonly updated_at: string; - readonly name: string; - readonly message: string; - readonly job: ProvisionerJob; - readonly readme: string; - readonly created_by: MinimalUser; - readonly archived: boolean; - readonly warnings?: Readonly>; - readonly matched_provisioners?: MatchedProvisioners; -} - -// From codersdk/templateversions.go -export interface TemplateVersionExternalAuth { - readonly id: string; - readonly type: string; - readonly display_name: string; - readonly display_icon: string; - readonly authenticate_url: string; - readonly authenticated: boolean; - readonly optional?: boolean; -} - -// From codersdk/templateversions.go -export interface TemplateVersionParameter { - readonly name: string; - readonly display_name?: string; - readonly description: string; - readonly description_plaintext: string; - readonly type: string; - readonly mutable: boolean; - readonly default_value: string; - readonly icon: string; - readonly options: Readonly>; - readonly validation_error?: string; - readonly validation_regex?: string; - readonly validation_min?: number; - readonly validation_max?: number; - readonly validation_monotonic?: ValidationMonotonicOrder; - readonly required: boolean; - readonly ephemeral: boolean; -} - -// From codersdk/templateversions.go -export interface TemplateVersionParameterOption { - readonly name: string; - readonly description: string; - readonly value: string; - readonly icon: string; -} - -// From codersdk/templateversions.go -export interface TemplateVersionVariable { - readonly name: string; - readonly description: string; - readonly type: string; - readonly value: string; - readonly default_value: string; - readonly required: boolean; - readonly sensitive: boolean; -} - -// From codersdk/templates.go -export interface TemplateVersionsByTemplateRequest extends Pagination { - readonly template_id: string; - readonly include_archived: boolean; -} - -// From codersdk/apikey.go -export interface TokenConfig { - readonly max_token_lifetime: number; -} - -// From codersdk/apikey.go -export interface TokensFilter { - readonly include_all: boolean; -} - -// From codersdk/deployment.go -export interface TraceConfig { - readonly enable: boolean; - readonly honeycomb_api_key: string; - readonly capture_logs: boolean; - readonly data_dog: boolean; -} - -// From codersdk/templates.go -export interface TransitionStats { - readonly P50?: number; - readonly P95?: number; -} - -// From codersdk/templates.go -export interface UpdateActiveTemplateVersion { - readonly id: string; -} - -// From codersdk/deployment.go -export interface UpdateAppearanceConfig { - readonly application_name: string; - readonly logo_url: string; - readonly service_banner: BannerConfig; - readonly announcement_banners: Readonly>; -} - -// From codersdk/updatecheck.go -export interface UpdateCheckResponse { - readonly current: boolean; - readonly version: string; - readonly url: string; -} - -// From codersdk/notifications.go -export interface UpdateNotificationTemplateMethod { - readonly method?: string; -} - -// From codersdk/organizations.go -export interface UpdateOrganizationRequest { - readonly name?: string; - readonly display_name?: string; - readonly description?: string; - readonly icon?: string; -} - -// From codersdk/users.go -export interface UpdateRoles { - readonly roles: Readonly>; -} - -// From codersdk/templates.go -export interface UpdateTemplateACL { - readonly user_perms?: Record; - readonly group_perms?: Record; -} - -// From codersdk/templates.go -export interface UpdateTemplateMeta { - readonly name?: string; - readonly display_name?: string; - readonly description?: string; - readonly icon?: string; - readonly default_ttl_ms?: number; - readonly activity_bump_ms?: number; - readonly autostop_requirement?: TemplateAutostopRequirement; - readonly autostart_requirement?: TemplateAutostartRequirement; - readonly allow_user_autostart?: boolean; - readonly allow_user_autostop?: boolean; - readonly allow_user_cancel_workspace_jobs?: boolean; - readonly failure_ttl_ms?: number; - readonly time_til_dormant_ms?: number; - readonly time_til_dormant_autodelete_ms?: number; - readonly update_workspace_last_used_at: boolean; - readonly update_workspace_dormant_at: boolean; - readonly require_active_version?: boolean; - readonly deprecation_message?: string; - readonly disable_everyone_group_access: boolean; - readonly max_port_share_level?: WorkspaceAgentPortShareLevel; -} - -// From codersdk/users.go -export interface UpdateUserAppearanceSettingsRequest { - readonly theme_preference: string; -} - -// From codersdk/notifications.go -export interface UpdateUserNotificationPreferences { - readonly template_disabled_map: Record; -} - -// From codersdk/users.go -export interface UpdateUserPasswordRequest { - readonly old_password: string; - readonly password: string; -} - -// From codersdk/users.go -export interface UpdateUserProfileRequest { - readonly username: string; - readonly name: string; -} - -// From codersdk/users.go -export interface UpdateUserQuietHoursScheduleRequest { - readonly schedule: string; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceAutomaticUpdatesRequest { - readonly automatic_updates: AutomaticUpdates; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceAutostartRequest { - readonly schedule?: string; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceDormancy { - readonly dormant: boolean; -} - -// From codersdk/workspaceproxy.go -export interface UpdateWorkspaceProxyResponse { - readonly proxy: WorkspaceProxy; - readonly proxy_token: string; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceRequest { - readonly name?: string; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceTTLRequest { - readonly ttl_ms?: number; -} - -// From codersdk/files.go -export interface UploadResponse { - readonly hash: string; -} - -// From codersdk/workspaceagentportshare.go -export interface UpsertWorkspaceAgentPortShareRequest { - readonly agent_name: string; - readonly port: number; - readonly share_level: WorkspaceAgentPortShareLevel; - readonly protocol: WorkspaceAgentPortShareProtocol; -} - -// From codersdk/users.go -export interface User extends ReducedUser { - readonly organization_ids: Readonly>; - readonly roles: Readonly>; -} - -// From codersdk/insights.go -export interface UserActivity { - readonly template_ids: Readonly>; - readonly user_id: string; - readonly username: string; - readonly avatar_url: string; - readonly seconds: number; -} - -// From codersdk/insights.go -export interface UserActivityInsightsReport { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly users: Readonly>; -} - -// From codersdk/insights.go -export interface UserActivityInsightsRequest { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; -} - -// From codersdk/insights.go -export interface UserActivityInsightsResponse { - readonly report: UserActivityInsightsReport; -} - -// From codersdk/insights.go -export interface UserLatency { - readonly template_ids: Readonly>; - readonly user_id: string; - readonly username: string; - readonly avatar_url: string; - readonly latency_ms: ConnectionLatency; -} - -// From codersdk/insights.go -export interface UserLatencyInsightsReport { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly users: Readonly>; -} - -// From codersdk/insights.go -export interface UserLatencyInsightsRequest { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; -} - -// From codersdk/insights.go -export interface UserLatencyInsightsResponse { - readonly report: UserLatencyInsightsReport; -} - -// From codersdk/users.go -export interface UserLoginType { - readonly login_type: LoginType; -} - -// From codersdk/users.go -export interface UserParameter { - readonly name: string; - readonly value: string; -} - -// From codersdk/deployment.go -export interface UserQuietHoursScheduleConfig { - readonly default_schedule: string; - readonly allow_user_custom: boolean; -} - -// From codersdk/users.go -export interface UserQuietHoursScheduleResponse { - readonly raw_schedule: string; - readonly user_set: boolean; - readonly user_can_set: boolean; - readonly time: string; - readonly timezone: string; - readonly next: string; -} - -// From codersdk/users.go -export interface UserRoles { - readonly roles: Readonly>; - readonly organization_roles: Record>>; -} - -// From codersdk/users.go -export interface UsersRequest extends Pagination { - readonly q?: string; -} - -// From codersdk/users.go -export interface ValidateUserPasswordRequest { - readonly password: string; -} - -// From codersdk/users.go -export interface ValidateUserPasswordResponse { - readonly valid: boolean; - readonly details: string; -} - -// From codersdk/client.go -export interface ValidationError { - readonly field: string; - readonly detail: string; -} - -// From codersdk/organizations.go -export interface VariableValue { - readonly name: string; - readonly value: string; -} - -// From codersdk/workspaces.go -export interface Workspace { - readonly id: string; - readonly created_at: string; - readonly updated_at: string; - readonly owner_id: string; - readonly owner_name: string; - readonly owner_avatar_url: string; - readonly organization_id: string; - readonly organization_name: string; - readonly template_id: string; - readonly template_name: string; - readonly template_display_name: string; - readonly template_icon: string; - readonly template_allow_user_cancel_workspace_jobs: boolean; - readonly template_active_version_id: string; - readonly template_require_active_version: boolean; - readonly latest_build: WorkspaceBuild; - readonly outdated: boolean; - readonly name: string; - readonly autostart_schedule?: string; - readonly ttl_ms?: number; - readonly last_used_at: string; - readonly deleting_at?: string; - readonly dormant_at?: string; - readonly health: WorkspaceHealth; - readonly automatic_updates: AutomaticUpdates; - readonly allow_renames: boolean; - readonly favorite: boolean; - readonly next_start_at?: string; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgent { - readonly id: string; - readonly created_at: string; - readonly updated_at: string; - readonly first_connected_at?: string; - readonly last_connected_at?: string; - readonly disconnected_at?: string; - readonly started_at?: string; - readonly ready_at?: string; - readonly status: WorkspaceAgentStatus; - readonly lifecycle_state: WorkspaceAgentLifecycle; - readonly name: string; - readonly resource_id: string; - readonly instance_id?: string; - readonly architecture: string; - readonly environment_variables: Record; - readonly operating_system: string; - readonly logs_length: number; - readonly logs_overflowed: boolean; - readonly directory?: string; - readonly expanded_directory?: string; - readonly version: string; - readonly api_version: string; - readonly apps: Readonly>; - readonly latency?: Record; - readonly connection_timeout_seconds: number; - readonly troubleshooting_url: string; - readonly subsystems: Readonly>; - readonly health: WorkspaceAgentHealth; - readonly display_apps: Readonly>; - readonly log_sources: Readonly>; - readonly scripts: Readonly>; - readonly startup_script_behavior: WorkspaceAgentStartupScriptBehavior; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentHealth { - readonly healthy: boolean; - readonly reason?: string; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentListeningPort { - readonly process_name: string; - readonly network: string; - readonly port: number; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentListeningPortsResponse { - readonly ports: Readonly>; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentLog { - readonly id: number; - readonly created_at: string; - readonly output: string; - readonly level: LogLevel; - readonly source_id: string; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentLogSource { - readonly workspace_agent_id: string; - readonly id: string; - readonly created_at: string; - readonly display_name: string; - readonly icon: string; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentMetadata { - readonly result: WorkspaceAgentMetadataResult; - readonly description: WorkspaceAgentMetadataDescription; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentMetadataDescription { - readonly display_name: string; - readonly key: string; - readonly script: string; - readonly interval: number; - readonly timeout: number; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentMetadataResult { - readonly collected_at: string; - readonly age: number; - readonly value: string; - readonly error: string; -} - -// From codersdk/workspaceagentportshare.go -export interface WorkspaceAgentPortShare { - readonly workspace_id: string; - readonly agent_name: string; - readonly port: number; - readonly share_level: WorkspaceAgentPortShareLevel; - readonly protocol: WorkspaceAgentPortShareProtocol; -} - -// From codersdk/workspaceagentportshare.go -export interface WorkspaceAgentPortShares { - readonly shares: Readonly>; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentScript { - readonly id: string; - readonly log_source_id: string; - readonly log_path: string; - readonly script: string; - readonly cron: string; - readonly run_on_start: boolean; - readonly run_on_stop: boolean; - readonly start_blocks_login: boolean; - readonly timeout: number; - readonly display_name: string; -} - -// From codersdk/workspaceapps.go -export interface WorkspaceApp { - readonly id: string; - readonly url: string; - readonly external: boolean; - readonly slug: string; - readonly display_name: string; - readonly command?: string; - readonly icon?: string; - readonly subdomain: boolean; - readonly subdomain_name?: string; - readonly sharing_level: WorkspaceAppSharingLevel; - readonly healthcheck: Healthcheck; - readonly health: WorkspaceAppHealth; - readonly hidden: boolean; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceBuild { - readonly id: string; - readonly created_at: string; - readonly updated_at: string; - readonly workspace_id: string; - readonly workspace_name: string; - readonly workspace_owner_id: string; - readonly workspace_owner_name: string; - readonly workspace_owner_avatar_url: string; - readonly template_version_id: string; - readonly template_version_name: string; - readonly build_number: number; - readonly transition: WorkspaceTransition; - readonly initiator_id: string; - readonly initiator_name: string; - readonly job: ProvisionerJob; - readonly reason: BuildReason; - readonly resources: Readonly>; - readonly deadline?: string; - readonly max_deadline?: string; - readonly status: WorkspaceStatus; - readonly daily_cost: number; - readonly matched_provisioners?: MatchedProvisioners; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceBuildParameter { - readonly name: string; - readonly value: string; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceBuildTimings { - readonly provisioner_timings: Readonly>; - readonly agent_script_timings: Readonly>; - readonly agent_connection_timings: Readonly>; -} - -// From codersdk/workspaces.go -export interface WorkspaceBuildsRequest extends Pagination { - readonly since?: string; -} - -// From codersdk/deployment.go -export interface WorkspaceConnectionLatencyMS { - readonly P50: number; - readonly P95: number; -} - -// From codersdk/deployment.go -export interface WorkspaceDeploymentStats { - readonly pending: number; - readonly building: number; - readonly running: number; - readonly failed: number; - readonly stopped: number; - readonly connection_latency_ms: WorkspaceConnectionLatencyMS; - readonly rx_bytes: number; - readonly tx_bytes: number; -} - -// From codersdk/workspaces.go -export interface WorkspaceFilter { - readonly q?: string; -} - -// From codersdk/workspaces.go -export interface WorkspaceHealth { - readonly healthy: boolean; - readonly failing_agents: Readonly>; -} - -// From codersdk/workspaces.go -export interface WorkspaceOptions { - readonly include_deleted?: boolean; -} - -// From codersdk/workspaceproxy.go -export interface WorkspaceProxy extends Region { - readonly derp_enabled: boolean; - readonly derp_only: boolean; - readonly status?: WorkspaceProxyStatus; - readonly created_at: string; - readonly updated_at: string; - readonly deleted: boolean; - readonly version: string; -} - -// From codersdk/deployment.go -export interface WorkspaceProxyBuildInfo { - readonly workspace_proxy: boolean; - readonly dashboard_url: string; -} - -// From codersdk/workspaceproxy.go -export interface WorkspaceProxyStatus { - readonly status: ProxyHealthStatus; - readonly report?: ProxyHealthReport; - readonly checked_at: string; -} - -// From codersdk/workspaces.go -export interface WorkspaceQuota { - readonly credits_consumed: number; - readonly budget: number; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceResource { - readonly id: string; - readonly created_at: string; - readonly job_id: string; - readonly workspace_transition: WorkspaceTransition; - readonly type: string; - readonly name: string; - readonly hide: boolean; - readonly icon: string; - readonly agents?: Readonly>; - readonly metadata?: Readonly>; - readonly daily_cost: number; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceResourceMetadata { - readonly key: string; - readonly value: string; - readonly sensitive: boolean; -} - -// From codersdk/workspaces.go -export interface WorkspacesRequest extends Pagination { - readonly q?: string; -} - -// From codersdk/workspaces.go -export interface WorkspacesResponse { - readonly workspaces: Readonly>; - readonly count: number; -} - -// From codersdk/apikey.go -export type APIKeyScope = "all" | "application_connect" -export const APIKeyScopes: APIKeyScope[] = ["all", "application_connect"] - -// From codersdk/workspaceagents.go -export type AgentSubsystem = "envbox" | "envbuilder" | "exectrace" -export const AgentSubsystems: AgentSubsystem[] = ["envbox", "envbuilder", "exectrace"] - -// From codersdk/audit.go -export type AuditAction = "create" | "delete" | "login" | "logout" | "register" | "request_password_reset" | "start" | "stop" | "write" -export const AuditActions: AuditAction[] = ["create", "delete", "login", "logout", "register", "request_password_reset", "start", "stop", "write"] - -// From codersdk/workspaces.go -export type AutomaticUpdates = "always" | "never" -export const AutomaticUpdateses: AutomaticUpdates[] = ["always", "never"] - -// From codersdk/workspacebuilds.go -export type BuildReason = "autostart" | "autostop" | "initiator" -export const BuildReasons: BuildReason[] = ["autostart", "autostop", "initiator"] - -// From codersdk/deployment.go -export type CryptoKeyFeature = "oidc_convert" | "tailnet_resume" | "workspace_apps_api_key" | "workspace_apps_token" -export const CryptoKeyFeatures: CryptoKeyFeature[] = ["oidc_convert", "tailnet_resume", "workspace_apps_api_key", "workspace_apps_token"] - -// From codersdk/workspaceagents.go -export type DisplayApp = "port_forwarding_helper" | "ssh_helper" | "vscode" | "vscode_insiders" | "web_terminal" -export const DisplayApps: DisplayApp[] = ["port_forwarding_helper", "ssh_helper", "vscode", "vscode_insiders", "web_terminal"] - -// From codersdk/externalauth.go -export type EnhancedExternalAuthProvider = "azure-devops" | "azure-devops-entra" | "bitbucket-cloud" | "bitbucket-server" | "gitea" | "github" | "gitlab" | "jfrog" | "slack" -export const EnhancedExternalAuthProviders: EnhancedExternalAuthProvider[] = ["azure-devops", "azure-devops-entra", "bitbucket-cloud", "bitbucket-server", "gitea", "github", "gitlab", "jfrog", "slack"] - -// From codersdk/deployment.go -export type Entitlement = "entitled" | "grace_period" | "not_entitled" -export const Entitlements: Entitlement[] = ["entitled", "grace_period", "not_entitled"] - -// From codersdk/deployment.go -export type Experiment = "auto-fill-parameters" | "example" | "notifications" | "workspace-usage" -export const Experiments: Experiment[] = ["auto-fill-parameters", "example", "notifications", "workspace-usage"] - -// From codersdk/deployment.go -export type FeatureName = "access_control" | "advanced_template_scheduling" | "appearance" | "audit_log" | "browser_only" | "control_shared_ports" | "custom_roles" | "external_provisioner_daemons" | "external_token_encryption" | "high_availability" | "multiple_external_auth" | "multiple_organizations" | "scim" | "template_rbac" | "user_limit" | "user_role_management" | "workspace_batch_actions" | "workspace_proxy" -export const FeatureNames: FeatureName[] = ["access_control", "advanced_template_scheduling", "appearance", "audit_log", "browser_only", "control_shared_ports", "custom_roles", "external_provisioner_daemons", "external_token_encryption", "high_availability", "multiple_external_auth", "multiple_organizations", "scim", "template_rbac", "user_limit", "user_role_management", "workspace_batch_actions", "workspace_proxy"] - -// From codersdk/deployment.go -export type FeatureSet = "" | "enterprise" | "premium" -export const FeatureSets: FeatureSet[] = ["", "enterprise", "premium"] - -// From codersdk/groups.go -export type GroupSource = "oidc" | "user" -export const GroupSources: GroupSource[] = ["oidc", "user"] - -// From codersdk/insights.go -export type InsightsReportInterval = "day" | "week" -export const InsightsReportIntervals: InsightsReportInterval[] = ["day", "week"] - -// From codersdk/provisionerdaemons.go -export type JobErrorCode = "REQUIRED_TEMPLATE_VARIABLES" -export const JobErrorCodes: JobErrorCode[] = ["REQUIRED_TEMPLATE_VARIABLES"] - -// From codersdk/provisionerdaemons.go -export type LogLevel = "debug" | "error" | "info" | "trace" | "warn" -export const LogLevels: LogLevel[] = ["debug", "error", "info", "trace", "warn"] - -// From codersdk/provisionerdaemons.go -export type LogSource = "provisioner" | "provisioner_daemon" -export const LogSources: LogSource[] = ["provisioner", "provisioner_daemon"] - -// From codersdk/apikey.go -export type LoginType = "" | "github" | "none" | "oidc" | "password" | "token" -export const LoginTypes: LoginType[] = ["", "github", "none", "oidc", "password", "token"] - -// From codersdk/oauth2.go -export type OAuth2ProviderGrantType = "authorization_code" | "refresh_token" -export const OAuth2ProviderGrantTypes: OAuth2ProviderGrantType[] = ["authorization_code", "refresh_token"] - -// From codersdk/oauth2.go -export type OAuth2ProviderResponseType = "code" -export const OAuth2ProviderResponseTypes: OAuth2ProviderResponseType[] = ["code"] - -// From codersdk/deployment.go -export type PostgresAuth = "awsiamrds" | "password" -export const PostgresAuths: PostgresAuth[] = ["awsiamrds", "password"] - -// From codersdk/provisionerdaemons.go -export type ProvisionerJobStatus = "canceled" | "canceling" | "failed" | "pending" | "running" | "succeeded" | "unknown" -export const ProvisionerJobStatuses: ProvisionerJobStatus[] = ["canceled", "canceling", "failed", "pending", "running", "succeeded", "unknown"] - -// From codersdk/workspaces.go -export type ProvisionerLogLevel = "debug" -export const ProvisionerLogLevels: ProvisionerLogLevel[] = ["debug"] - -// From codersdk/organizations.go -export type ProvisionerStorageMethod = "file" -export const ProvisionerStorageMethods: ProvisionerStorageMethod[] = ["file"] - -// From codersdk/organizations.go -export type ProvisionerType = "echo" | "terraform" -export const ProvisionerTypes: ProvisionerType[] = ["echo", "terraform"] - -// From codersdk/workspaceproxy.go -export type ProxyHealthStatus = "ok" | "unhealthy" | "unreachable" | "unregistered" -export const ProxyHealthStatuses: ProxyHealthStatus[] = ["ok", "unhealthy", "unreachable", "unregistered"] - -// From codersdk/rbacresources_gen.go -export type RBACAction = "application_connect" | "assign" | "create" | "delete" | "read" | "read_personal" | "ssh" | "start" | "stop" | "update" | "update_personal" | "use" | "view_insights" -export const RBACActions: RBACAction[] = ["application_connect", "assign", "create", "delete", "read", "read_personal", "ssh", "start", "stop", "update", "update_personal", "use", "view_insights"] - -// From codersdk/rbacresources_gen.go -export type RBACResource = "*" | "api_key" | "assign_org_role" | "assign_role" | "audit_log" | "crypto_key" | "debug_info" | "deployment_config" | "deployment_stats" | "file" | "group" | "group_member" | "idpsync_settings" | "license" | "notification_message" | "notification_preference" | "notification_template" | "oauth2_app" | "oauth2_app_code_token" | "oauth2_app_secret" | "organization" | "organization_member" | "provisioner_daemon" | "provisioner_keys" | "replicas" | "system" | "tailnet_coordinator" | "template" | "user" | "workspace" | "workspace_dormant" | "workspace_proxy" -export const RBACResources: RBACResource[] = ["*", "api_key", "assign_org_role", "assign_role", "audit_log", "crypto_key", "debug_info", "deployment_config", "deployment_stats", "file", "group", "group_member", "idpsync_settings", "license", "notification_message", "notification_preference", "notification_template", "oauth2_app", "oauth2_app_code_token", "oauth2_app_secret", "organization", "organization_member", "provisioner_daemon", "provisioner_keys", "replicas", "system", "tailnet_coordinator", "template", "user", "workspace", "workspace_dormant", "workspace_proxy"] - -// From codersdk/audit.go -export type ResourceType = "api_key" | "convert_login" | "custom_role" | "git_ssh_key" | "group" | "health_settings" | "license" | "notifications_settings" | "oauth2_provider_app" | "oauth2_provider_app_secret" | "organization" | "template" | "template_version" | "user" | "workspace" | "workspace_build" | "workspace_proxy" -export const ResourceTypes: ResourceType[] = ["api_key", "convert_login", "custom_role", "git_ssh_key", "group", "health_settings", "license", "notifications_settings", "oauth2_provider_app", "oauth2_provider_app_secret", "organization", "template", "template_version", "user", "workspace", "workspace_build", "workspace_proxy"] - -// From codersdk/serversentevents.go -export type ServerSentEventType = "data" | "error" | "ping" -export const ServerSentEventTypes: ServerSentEventType[] = ["data", "error", "ping"] - -// From codersdk/insights.go -export type TemplateAppsType = "app" | "builtin" -export const TemplateAppsTypes: TemplateAppsType[] = ["app", "builtin"] - -// From codersdk/insights.go -export type TemplateInsightsSection = "interval_reports" | "report" -export const TemplateInsightsSections: TemplateInsightsSection[] = ["interval_reports", "report"] - -// From codersdk/templates.go -export type TemplateRole = "" | "admin" | "use" -export const TemplateRoles: TemplateRole[] = ["", "admin", "use"] - -// From codersdk/templateversions.go -export type TemplateVersionWarning = "UNSUPPORTED_WORKSPACES" -export const TemplateVersionWarnings: TemplateVersionWarning[] = ["UNSUPPORTED_WORKSPACES"] - -// From codersdk/workspacebuilds.go -export type TimingStage = "apply" | "connect" | "cron" | "graph" | "init" | "plan" | "start" | "stop" -export const TimingStages: TimingStage[] = ["apply", "connect", "cron", "graph", "init", "plan", "start", "stop"] - -// From codersdk/workspaces.go -export type UsageAppName = "jetbrains" | "reconnecting-pty" | "ssh" | "vscode" -export const UsageAppNames: UsageAppName[] = ["jetbrains", "reconnecting-pty", "ssh", "vscode"] - -// From codersdk/users.go -export type UserStatus = "active" | "dormant" | "suspended" -export const UserStatuses: UserStatus[] = ["active", "dormant", "suspended"] - -// From codersdk/templateversions.go -export type ValidationMonotonicOrder = "decreasing" | "increasing" -export const ValidationMonotonicOrders: ValidationMonotonicOrder[] = ["decreasing", "increasing"] - -// From codersdk/workspaceagents.go -export type WorkspaceAgentLifecycle = "created" | "off" | "ready" | "shutdown_error" | "shutdown_timeout" | "shutting_down" | "start_error" | "start_timeout" | "starting" -export const WorkspaceAgentLifecycles: WorkspaceAgentLifecycle[] = ["created", "off", "ready", "shutdown_error", "shutdown_timeout", "shutting_down", "start_error", "start_timeout", "starting"] - -// From codersdk/workspaceagentportshare.go -export type WorkspaceAgentPortShareLevel = "authenticated" | "owner" | "public" -export const WorkspaceAgentPortShareLevels: WorkspaceAgentPortShareLevel[] = ["authenticated", "owner", "public"] - -// From codersdk/workspaceagentportshare.go -export type WorkspaceAgentPortShareProtocol = "http" | "https" -export const WorkspaceAgentPortShareProtocols: WorkspaceAgentPortShareProtocol[] = ["http", "https"] - -// From codersdk/workspaceagents.go -export type WorkspaceAgentStartupScriptBehavior = "blocking" | "non-blocking" -export const WorkspaceAgentStartupScriptBehaviors: WorkspaceAgentStartupScriptBehavior[] = ["blocking", "non-blocking"] - -// From codersdk/workspaceagents.go -export type WorkspaceAgentStatus = "connected" | "connecting" | "disconnected" | "timeout" -export const WorkspaceAgentStatuses: WorkspaceAgentStatus[] = ["connected", "connecting", "disconnected", "timeout"] - -// From codersdk/workspaceapps.go -export type WorkspaceAppHealth = "disabled" | "healthy" | "initializing" | "unhealthy" -export const WorkspaceAppHealths: WorkspaceAppHealth[] = ["disabled", "healthy", "initializing", "unhealthy"] - -// From codersdk/workspaceapps.go -export type WorkspaceAppSharingLevel = "authenticated" | "owner" | "public" -export const WorkspaceAppSharingLevels: WorkspaceAppSharingLevel[] = ["authenticated", "owner", "public"] - -// From codersdk/workspacebuilds.go -export type WorkspaceStatus = "canceled" | "canceling" | "deleted" | "deleting" | "failed" | "pending" | "running" | "starting" | "stopped" | "stopping" -export const WorkspaceStatuses: WorkspaceStatus[] = ["canceled", "canceling", "deleted", "deleting", "failed", "pending", "running", "starting", "stopped", "stopping"] - -// From codersdk/workspacebuilds.go -export type WorkspaceTransition = "delete" | "start" | "stop" -export const WorkspaceTransitions: WorkspaceTransition[] = ["delete", "start", "stop"] - -// From codersdk/workspaceproxy.go -export type RegionTypes = Region | WorkspaceProxy - -// The code below is generated from codersdk/healthsdk. - -// From healthsdk/healthsdk.go -export interface AccessURLReport extends BaseReport { - readonly healthy: boolean; - readonly access_url: string; - readonly reachable: boolean; - readonly status_code: number; - readonly healthz_response: string; -} - -// From healthsdk/healthsdk.go -export interface BaseReport { - readonly error?: string; - readonly severity: HealthSeverity; - readonly warnings: Readonly>; - readonly dismissed: boolean; -} - -// From healthsdk/healthsdk.go -export interface DERPHealthReport extends BaseReport { - readonly healthy: boolean; - readonly regions: Record; - // TODO: narrow this type - readonly netcheck?: any; - readonly netcheck_err?: string; - readonly netcheck_logs: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface DERPNodeReport { - readonly healthy: boolean; - readonly severity: HealthSeverity; - readonly warnings: Readonly>; - readonly error?: string; - // TODO: narrow this type - readonly node?: any; - // TODO: narrow this type - readonly node_info: any; - readonly can_exchange_messages: boolean; - readonly round_trip_ping: string; - readonly round_trip_ping_ms: number; - readonly uses_websocket: boolean; - readonly client_logs: Readonly>>>; - readonly client_errs: Readonly>>>; - readonly stun: STUNReport; -} - -// From healthsdk/healthsdk.go -export interface DERPRegionReport { - readonly healthy: boolean; - readonly severity: HealthSeverity; - readonly warnings: Readonly>; - readonly error?: string; - // TODO: narrow this type - readonly region?: any; - readonly node_reports: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface DatabaseReport extends BaseReport { - readonly healthy: boolean; - readonly reachable: boolean; - readonly latency: string; - readonly latency_ms: number; - readonly threshold_ms: number; -} - -// From healthsdk/healthsdk.go -export interface HealthSettings { - readonly dismissed_healthchecks: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface HealthcheckReport { - readonly time: string; - readonly healthy: boolean; - readonly severity: HealthSeverity; - readonly derp: DERPHealthReport; - readonly access_url: AccessURLReport; - readonly websocket: WebsocketReport; - readonly database: DatabaseReport; - readonly workspace_proxy: WorkspaceProxyReport; - readonly provisioner_daemons: ProvisionerDaemonsReport; - readonly coder_version: string; -} - -// From healthsdk/healthsdk.go -export interface ProvisionerDaemonsReport extends BaseReport { - readonly items: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface ProvisionerDaemonsReportItem { - readonly provisioner_daemon: ProvisionerDaemon; - readonly warnings: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface STUNReport { - readonly Enabled: boolean; - readonly CanSTUN: boolean; - readonly Error?: string; -} - -// From healthsdk/healthsdk.go -export interface UpdateHealthSettings { - readonly dismissed_healthchecks: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface WebsocketReport extends BaseReport { - readonly healthy: boolean; - readonly body: string; - readonly code: number; -} - -// From healthsdk/healthsdk.go -export interface WorkspaceProxyReport extends BaseReport { - readonly healthy: boolean; - readonly workspace_proxies: RegionsResponse; -} - -// From healthsdk/healthsdk.go -export type HealthSection = "AccessURL" | "DERP" | "Database" | "ProvisionerDaemons" | "Websocket" | "WorkspaceProxy" -export const HealthSections: HealthSection[] = ["AccessURL", "DERP", "Database", "ProvisionerDaemons", "Websocket", "WorkspaceProxy"] - -// The code below is generated from coderd/healthcheck/health. - -// From health/model.go -export interface HealthMessage { - readonly code: HealthCode; - readonly message: string; -} - -// From health/model.go -export type HealthCode = "EACS01" | "EACS02" | "EACS03" | "EACS04" | "EDB01" | "EDB02" | "EDERP01" | "EDERP02" | "EPD01" | "EPD02" | "EPD03" | "EUNKNOWN" | "EWP01" | "EWP02" | "EWP04" | "EWS01" | "EWS02" | "EWS03" -export const HealthCodes: HealthCode[] = ["EACS01", "EACS02", "EACS03", "EACS04", "EDB01", "EDB02", "EDERP01", "EDERP02", "EPD01", "EPD02", "EPD03", "EUNKNOWN", "EWP01", "EWP02", "EWP04", "EWS01", "EWS02", "EWS03"] - -// From health/model.go -export type HealthSeverity = "error" | "ok" | "warning" -export const HealthSeveritys: HealthSeverity[] = ["error", "ok", "warning"] - -// The code below is generated from github.com/coder/serpent. - -// From serpent/serpent.go -export type SerpentAnnotations = Record - -// From serpent/serpent.go -export interface SerpentGroup { - readonly parent?: SerpentGroup; - readonly name?: string; - readonly yaml?: string; - readonly description?: string; -} - -// From serpent/option.go -export interface SerpentOption { - readonly name?: string; - readonly description?: string; - readonly required?: boolean; - readonly flag?: string; - readonly flag_shorthand?: string; - readonly env?: string; - readonly yaml?: string; - readonly default?: string; - // TODO: narrow this type - readonly value?: any; - readonly annotations?: SerpentAnnotations; - readonly group?: SerpentGroup; - readonly use_instead?: Readonly>; - readonly hidden?: boolean; - readonly value_source?: SerpentValueSource; -} - -// From serpent/option.go -export type SerpentOptionSet = Readonly> - -// From serpent/option.go -export type SerpentValueSource = "" | "default" | "env" | "flag" | "yaml" -export const SerpentValueSources: SerpentValueSource[] = ["", "default", "env", "flag", "yaml"] - From 0de43fd638875dfe60ece0110bdc609aface4da2 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 12:56:55 -0600 Subject: [PATCH 07/20] go mod tidy --- scripts/apitypings/go.mod | 12 +- scripts/apitypings/go.sum | 250 ++++++++++++++++++++++++++------------ 2 files changed, 179 insertions(+), 83 deletions(-) diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod index 6421880845b16..e4c0a940b482d 100644 --- a/scripts/apitypings/go.mod +++ b/scripts/apitypings/go.mod @@ -6,7 +6,7 @@ toolchain go1.23.3 require ( github.com/coder/coder/v2 v2.17.2 - github.com/coder/guts v0.0.0-20241209140041-d9cf060de89e + github.com/coder/guts v0.0.0-20241209184738-ebb754154404 github.com/coder/serpent v0.10.0 github.com/stretchr/testify v1.10.0 ) @@ -46,7 +46,7 @@ require ( github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd // indirect + github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -65,7 +65,6 @@ require ( github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 // indirect github.com/hashicorp/yamux v0.1.2 // indirect github.com/klauspost/compress v1.17.9 // indirect - github.com/kr/pretty v0.3.1 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -102,12 +101,12 @@ require ( github.com/zclconf/go-cty v1.15.0 // indirect github.com/zeebo/errs v1.3.0 // indirect go.nhat.io/otelsql v0.14.0 // indirect - go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel v1.30.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/metric v1.30.0 // indirect go.opentelemetry.io/otel/sdk v1.30.0 // indirect - go.opentelemetry.io/otel/trace v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.30.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect golang.org/x/crypto v0.30.0 // indirect @@ -128,7 +127,6 @@ require ( google.golang.org/grpc v1.68.0 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/DataDog/dd-trace-go.v1 v1.69.0 // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect nhooyr.io/websocket v1.8.7 // indirect storj.io/drpc v0.0.33 // indirect diff --git a/scripts/apitypings/go.sum b/scripts/apitypings/go.sum index 162061f8f81ff..8afced69a1f8d 100644 --- a/scripts/apitypings/go.sum +++ b/scripts/apitypings/go.sum @@ -1,7 +1,15 @@ -cdr.dev/slog v1.6.2-0.20240126064726-20367d4aede6 h1:KHblWIE/KHOwQ6lEbMZt6YpcGve2FEZ1sDtrW1Am5UI= -cdr.dev/slog v1.6.2-0.20240126064726-20367d4aede6/go.mod h1:NaoTA7KwopCrnaSb0JXTC0PTp/O/Y83Lndnq0OEV3ZQ= cdr.dev/slog v1.6.2-0.20241112041820-0ec81e6e67bb h1:4MKA8lBQLnCqj2myJCb5Lzoa65y0tABO4gHrxuMdsCQ= cdr.dev/slog v1.6.2-0.20241112041820-0ec81e6e67bb/go.mod h1:NaoTA7KwopCrnaSb0JXTC0PTp/O/Y83Lndnq0OEV3ZQ= +cloud.google.com/go v0.110.7 h1:rJyC7nWRg2jWGZ4wSJ5nY65GTdYJkg0cd/uXb+ACI6o= +cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= +cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= +cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= +cloud.google.com/go/logging v1.12.0 h1:ex1igYcGFd4S/RZWOCU51StlIEuey5bjqwH9ZYjHibk= +cloud.google.com/go/logging v1.12.0/go.mod h1:wwYBt5HlYP1InnrtYI0wtwttpVU1rifnMT7RejksUAM= +cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc= +cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= +github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= +github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= github.com/DataDog/appsec-internal-go v1.8.0 h1:1Tfn3LEogntRqZtf88twSApOCAAO3V+NILYhuQIo4J4= github.com/DataDog/appsec-internal-go v1.8.0/go.mod h1:wW0cRfWBo4C044jHGwYiyh5moQV2x0AhnwqMuiX7O/g= github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0 h1:bUMSNsw1iofWiju9yc1f+kBd33E3hMJtq9GuU602Iy8= @@ -18,13 +26,18 @@ github.com/DataDog/gostackparse v0.7.0 h1:i7dLkXHvYzHV308hnkvVGDL3BR4FWl7IsXNPz/ github.com/DataDog/gostackparse v0.7.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM= github.com/DataDog/sketches-go v1.4.5 h1:ki7VfeNz7IcNafq7yI/j5U/YCkO3LJiMDtXz9OMQbyE= github.com/DataDog/sketches-go v1.4.5/go.mod h1:7Y8GN8Jf66DLyDhc94zuWA3uHEt/7ttt8jHOBWWrSOg= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/ProtonMail/go-crypto v1.1.0-alpha.2 h1:bkyFVUP+ROOARdgCiJzNQo2V2kiB97LyUpzH9P6Hrlg= +github.com/ProtonMail/go-crypto v1.1.0-alpha.2/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= @@ -34,50 +47,40 @@ github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bool64/shared v0.1.5 h1:fp3eUhBsrSjNCQPcSdQqZxxh9bBwrYiZ+zOKFkM0/2E= +github.com/bool64/shared v0.1.5/go.mod h1:081yz68YC9jeFB3+Bbmno2RFWvGKv1lPKkMP6MHJlPs= +github.com/bytedance/sonic v1.10.0 h1:qtNZduETEIWJVIyDl01BeNxur2rW9OwTQ/yBqFRkKEk= +github.com/bytedance/sonic v1.10.0/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/coder/coder/v2 v2.17.2 h1:vnxjwDWcx1jHcy7QjIgL1yPY8+vJSATyYeFASHoAOsM= -github.com/coder/coder/v2 v2.17.2/go.mod h1:5Fu0xCkdXPuFLwYq6ThyI4DAv4v//Sx5saM/M5CAU2w= -github.com/coder/gots v0.0.0-20241126191110-cc59e7097f9a h1:6yJMWlqTE7+t5CZnw6gfXnOHD7m1yKAaIWqB7JRZufk= -github.com/coder/gots v0.0.0-20241126191110-cc59e7097f9a/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/gots v0.0.0-20241126192025-fd7faba5b007 h1:KAfKbjk/COMhkvw0uNPp3fYT0tvXdbv8IM9r2TGeTRc= -github.com/coder/gots v0.0.0-20241126192025-fd7faba5b007/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/gots v0.0.0-20241126192300-ed5d358ea1cf h1:3x7Gdk86ylhPK28nOExq3shGvUi/4Dzikb7dK/PIUPs= -github.com/coder/gots v0.0.0-20241126192300-ed5d358ea1cf/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/gots v0.0.0-20241126193240-464680bcc869 h1:DtRj1BHK79GGTCeWwRxqi64hM82OsJACQ9TAD645roA= -github.com/coder/gots v0.0.0-20241126193240-464680bcc869/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/gots v0.0.0-20241126200430-7369df3c8ba5 h1:F5SCGjHLMTJ8Q6hAyuiFJ/qe40aWE2LiVuO3hfS1pHk= -github.com/coder/gots v0.0.0-20241126200430-7369df3c8ba5/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/gots v0.0.0-20241126200729-5c84314f6076 h1:26eXuamGop6AQdWPUvYqiBRBel7K1FBn065KiPlFDrs= -github.com/coder/gots v0.0.0-20241126200729-5c84314f6076/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/gots v0.0.0-20241126210358-f51cbf86cd54 h1:RugTqbH+Ky9o1lrWcus6r1ydw1Ce6NUvcB3a/JkJeFo= -github.com/coder/gots v0.0.0-20241126210358-f51cbf86cd54/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/gots v0.0.0-20241126213537-91cc19e817e5 h1:zBru83IE+s2sc3p11gm/xWKHPTOoNm7qsIjbgmQ38B4= -github.com/coder/gots v0.0.0-20241126213537-91cc19e817e5/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5 h1:f/mc6/A4owCKhJAjSGtWk/kvY6UVKmkE5feWzLeDWHc= -github.com/coder/gots v0.0.0-20241126221454-18fbabbd18c5/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/gots v0.0.0-20241126222907-985a03a876f0 h1:0jxONsMRoXchCdCcfcXlaVm1ciLkF6LLBDa7OgF4HJw= -github.com/coder/gots v0.0.0-20241126222907-985a03a876f0/go.mod h1:zH5CGux/eew1rvjjoKKQloiiQMTu2qdx7xIgmPzCRbg= -github.com/coder/guts v0.0.0-20241209140041-d9cf060de89e/go.mod h1:NpXPfboumDmFosCGHThTW2Ke4O4xn1hOSlKMD+TK4Oc= +github.com/charmbracelet/lipgloss v1.0.0 h1:O7VkGDvqEdGi93X+DeqsQ7PKHDgtQfF8j8/O2qFMQNg= +github.com/charmbracelet/lipgloss v1.0.0/go.mod h1:U5fy9Z+C38obMs+T+tJqst9VGzlOYGj4ri9reL3qUlo= +github.com/charmbracelet/x/ansi v0.4.5 h1:LqK4vwBNaXw2AyGIICa5/29Sbdq58GbGdFngSexTdRM= +github.com/charmbracelet/x/ansi v0.4.5/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= +github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0= +github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA= +github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo= +github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/coder/guts v0.0.0-20241209184738-ebb754154404 h1:oqnZZPOJNPNUO0YWQtVviriBPZCZVYPSQh0igMpWfsc= +github.com/coder/guts v0.0.0-20241209184738-ebb754154404/go.mod h1:VEiS5EvQZB30BVuAhK6QzbUEITxXIGz4771teg2fKGk= 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/serpent v0.8.0 h1:6OR+k6fekhSeEDmwwzBgnSjaa7FfGGrMlc3GoAEH9dg= -github.com/coder/serpent v0.8.0/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= github.com/coder/serpent v0.10.0 h1:ofVk9FJXSek+SmL3yVE3GoArP83M+1tX+H7S4t8BSuM= github.com/coder/serpent v0.10.0/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= github.com/coder/terraform-provider-coder v1.0.2 h1:xKbnJF/XUxcUJlZoC3ZkNOj4PZvk5Stdkel2TCZluDQ= github.com/coder/terraform-provider-coder v1.0.2/go.mod h1:1f3EjO+DA9QcIbM7sBSk/Ffw3u7kh6vXNBIQfV59yUk= github.com/coreos/go-oidc/v3 v3.11.0 h1:Ia3MxdwpSw702YW0xgfmP1GVCMA9aEFWu12XUZ3/OtI= github.com/coreos/go-oidc/v3 v3.11.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo= github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= @@ -96,8 +99,15 @@ github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= +github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-jose/go-jose/v4 v4.0.2 h1:R3l3kkBds16bO7ZFAEEcofK0MkrAJt3jlJznWZG0nvk= @@ -109,13 +119,29 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.23.0 h1:/PwmTwZhS0dPkav3cdK9kV1FsAmrL8sThn8IHr/sO+o= +github.com/go-playground/validator/v10 v10.23.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= +github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/gobwas/ws v1.4.0 h1:CTaoG1tojrh4ucGPcoJFiAQUAsEWekEWvLy7GsVNqGs= +github.com/gobwas/ws v1.4.0/go.mod h1:G3gNqMNtPppf5XUz7O4shetPpcZ1VJ7zt18dlUeakrc= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= @@ -131,17 +157,24 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b h1:h9U78+dx9a4BKdQkBBos92HalKpaGKHrp+3Uo6yTodo= github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= -github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU= +github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= @@ -149,6 +182,10 @@ github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= +github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 h1:UpiO20jno/eV1eVZcxqWnUohyKRe1g8FPV/xH1s/2qs= github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= github.com/hashicorp/go-secure-stdlib/strutil v0.1.1/go.mod h1:gKOamz3EwoIoJq7mlMIRBpVTAUn8qPCrEclOKKWhD3U= @@ -160,28 +197,43 @@ github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/C github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM= -github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= -github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hc-install v0.9.0 h1:2dIk8LcvANwtv3QZLckxcjyF5w8KVtiMxu6G6eLhghE= +github.com/hashicorp/hc-install v0.9.0/go.mod h1:+6vOP+mf3tuGgMApVYtmsnDoKWMDcFXeTxCACYZ8SFg= github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/terraform-exec v0.21.0 h1:uNkLAe95ey5Uux6KJdua6+cv8asgILFVWkd/RG0D2XQ= +github.com/hashicorp/terraform-exec v0.21.0/go.mod h1:1PPeMYou+KDUSSeRE9szMZ/oHf4fYUmB923Wzbq1ICg= +github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= +github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= github.com/hashicorp/terraform-plugin-go v0.23.0 h1:AALVuU1gD1kPb48aPQUjug9Ir/125t+AAurhqphJ2Co= github.com/hashicorp/terraform-plugin-go v0.23.0/go.mod h1:1E3Cr9h2vMlahWMbsSEcNrOCxovCZhOOIXjFHbjc/lQ= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 h1:kJiWGx2kiQVo97Y5IOGR4EMcZ8DtMswHhUuFibsCQQE= github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0/go.mod h1:sl/UoabMc37HA6ICVMmGO+/0wofkVIRxf+BMb/dnoIg= -github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= -github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= +github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= +github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= +github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= +github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= +github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02 h1:AgcIVYPa6XJnU3phs104wLj8l5GEththEw6+F79YsIY= +github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68= +github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= +github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -189,6 +241,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -205,6 +259,8 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= @@ -218,46 +274,57 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/moby/moby v27.3.1+incompatible h1:KQbXBjo7PavKpzIl7UkHT31y9lw/e71Uvrqhr4X+zMA= github.com/moby/moby v27.3.1+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a h1:2MaM6YC3mGu54x+RKAA6JiFFHlHDY1UbkxqppT7wYOg= github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a/go.mod h1:hxSnBBYLK21Vtq/PHd0S2FYCxBXzBua8ov5s1RobyRQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A= +github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOvUOL9w0= github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986 h1:jYi87L8j62qkXzaYHAQAhEapgukhenIMZRBKTNRLHJ4= github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= github.com/pion/transport/v2 v2.0.0/go.mod h1:HS2MEBJTwD+1ZI2eSXSvHJx/HnzQqRy2/LXxt6eVMHc= github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q= github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E= +github.com/pion/transport/v3 v3.0.7 h1:iRbMH05BzSNwhILHoBoAPxoB9xQgOaJk+591KC9P1o0= +github.com/pion/transport/v3 v3.0.7/go.mod h1:YleKiTZ4vqNxVwh77Z0zytYi7rXHl7j6uPLGhhz9rwo= github.com/pion/udp v0.1.4 h1:OowsTmu1Od3sD6i3fQUJxJn2fEvJO6L1TidgadtbTI8= github.com/pion/udp v0.1.4/go.mod h1:G8LDo56HsFwC24LIcnT4YIDU5qcB6NepqqjP0keL2us= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= -github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.60.0 h1:+V9PAREWNvJMAuJ1x1BaWl9dewMW4YrHZQbx0sJNllA= -github.com/prometheus/common v0.60.0/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3 h1:4+LEVOB87y175cLJC/mbsgKmoDOjrBldtXvioEy96WY= github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3/go.mod h1:vl5+MqJ1nBINuSsUI2mGgH79UweUT/B5Fy8857PqyyI= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -265,6 +332,8 @@ github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkB github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -273,6 +342,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -285,10 +356,19 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/swaggest/assertjson v1.9.0 h1:dKu0BfJkIxv/xe//mkCrK5yZbs79jL7OVf9Ija7o2xQ= +github.com/swaggest/assertjson v1.9.0/go.mod h1:b+ZKX2VRiUjxfUIal0HDN85W0nHPAYUbYH5WkkSsFsU= github.com/tinylib/msgp v1.2.1 h1:6ypy2qcCznxpP4hpORzhtXyTqrBs7cfM9MCCWY8zsmU= github.com/tinylib/msgp v1.2.1/go.mod h1:2vIGs3lcUo8izAATNobrCHevYZC/LMsJtw4JPiYPHro= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.56.0 h1:bEZdJev/6LCBlpdORfrLu/WOZXXxvrUQSiyniuaoW8U= github.com/valyala/fasthttp v1.56.0/go.mod h1:sReBt3XZVnudxuLOx4J/fMrJVorWRiWY2koQKgABiVI= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= @@ -299,40 +379,57 @@ github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21 github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= +github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs= github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= go.nhat.io/otelsql v0.14.0 h1:Mz4xo+WVQLAOPZy6abxjVzZzNe8xoOUh/tOMJoxo3oo= go.nhat.io/otelsql v0.14.0/go.mod h1:iO9KfDBZO2WI6O7n+ippHe5OHdXQ5iiA2aIa3Kzywo8= +go.opentelemetry.io/contrib v1.19.0 h1:rnYI7OEPMWFeM4QCqWQ3InMJ0arWMR1i0Cx9A5hcjYM= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= -go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 h1:dIIDULZJpgdiHz5tXrTgKIMLkus6jEFa7x5SOKcyR7E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0/go.mod h1:jlRVBe7+Z1wyxFSUs48L6OBQZ5JwH2Hg/Vbl+t9rAgI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.30.0 h1:IyFlqNsi8VT/nwYlLJfdM0y1gavxGpEvnf6FtVfZ6X4= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.30.0/go.mod h1:bxiX8eUeKoAEQmbq/ecUT8UqZwCjZW52yJrXJUSozsk= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0 h1:kn1BudCgwtE7PxLqcZkErpD8GKqLZ6BSzeW9QihQJeM= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0/go.mod h1:ljkUDtAMdleoi9tIG1R6dJUpVwDcYjw3J2Q6Q/SuiC0= go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= -go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE= go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg= +go.opentelemetry.io/otel/sdk/metric v1.30.0 h1:QJLT8Pe11jyHBHfSAgYH7kEmT24eX792jZO1bo4BXkM= +go.opentelemetry.io/otel/sdk/metric v1.30.0/go.mod h1:waS6P3YqFNzeP01kuo/MBBYqaoBJl7efRQHOaydhy1Y= go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= -go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.3.1-0.20240429205332-517bace7cc29 h1:w0QrHuh0hhUZ++UTQaBM2DMdrWQghZ/UsUb+Wb1+8YE= +go.uber.org/goleak v1.3.1-0.20240429205332-517bace7cc29/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +golang.org/x/arch v0.4.0 h1:A8WCeEWhLwPBKNbFi5Wv5UTCBx5zzubnXDlMOFAzFMc= +golang.org/x/arch v0.4.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= @@ -350,11 +447,8 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -362,8 +456,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -389,8 +482,7 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -398,8 +490,7 @@ golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -410,12 +501,9 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= -golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -423,8 +511,7 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= -golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= +golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= 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= @@ -435,26 +522,17 @@ golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6f google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 h1:Df6WuGvthPzc+JiQ/G+m+sNX24kc0aTBqoDN/0yyykE= -google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg= -google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= +google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f h1:M65LEviCfuZTfrfzwwEoxVtgvfkFkBUbFnRbxCXuXhU= google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f/go.mod h1:Yo94eF2nj7igQt+TiJ49KxjIH8ndLYPZMIRSiRcEbg0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f h1:C1QccEa9kUwvMgEUORqQD9S17QesQijxjZ84sO82mfo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= -google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= -google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/DataDog/dd-trace-go.v1 v1.69.0 h1:zSY6DDsFRMQDNQYKWCv/AEwJXoPpDf1FfMyw7I1B7M8= @@ -471,6 +549,26 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +lukechampine.com/uint128 v1.3.0 h1:cDdUVfRwDUDovz610ABgFD17nXD4/uDgVHl2sC3+sbo= +lukechampine.com/uint128 v1.3.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.41.0 h1:QoR1Sn3YWlmA1T4vLaKZfawdVtSiGx8H+cEojbC7v1Q= +modernc.org/cc/v3 v3.41.0/go.mod h1:Ni4zjJYJ04CDOhG7dn640WGfwBzfE0ecX8TyMB0Fv0Y= +modernc.org/ccgo/v3 v3.16.15 h1:KbDR3ZAVU+wiLyMESPtbtE/Add4elztFyfsWoNTgxS0= +modernc.org/ccgo/v3 v3.16.15/go.mod h1:yT7B+/E2m43tmMOT51GMoM98/MtHIcQQSleGnddkUNI= +modernc.org/libc v1.37.6 h1:orZH3c5wmhIQFTXF+Nt+eeauyd+ZIt2BX6ARe+kD+aw= +modernc.org/libc v1.37.6/go.mod h1:YAXkAZ8ktnkCKaN9sw/UDeUVkGYJ/YquGO4FTi5nmHE= +modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= +modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= +modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= +modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= +modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ= +modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0= +modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= +modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= +modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= storj.io/drpc v0.0.33 h1:yCGZ26r66ZdMP0IcTYsj7WDAUIIjzXk6DJhbhvt9FHI= From e495600fc5d5a3233caa23853efc4a38417b4062 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 13:00:06 -0600 Subject: [PATCH 08/20] biome lint ignore needs a reason --- scripts/apitypings/go.mod | 6 +- scripts/apitypings/go.sum | 2 - site/src/api/typesGenerated.ts | 2998 ++++++++++++++++++++++++++++++++ 3 files changed, 3002 insertions(+), 4 deletions(-) create mode 100644 site/src/api/typesGenerated.ts diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod index e4c0a940b482d..7590fa22eb08f 100644 --- a/scripts/apitypings/go.mod +++ b/scripts/apitypings/go.mod @@ -5,8 +5,8 @@ go 1.23.1 toolchain go1.23.3 require ( - github.com/coder/coder/v2 v2.17.2 - github.com/coder/guts v0.0.0-20241209184738-ebb754154404 + github.com/coder/coder/v2 v2.0.0-00010101000000-000000000000 + github.com/coder/guts v0.0.0-20241209185925-e72f1f13edf1 github.com/coder/serpent v0.10.0 github.com/stretchr/testify v1.10.0 ) @@ -133,3 +133,5 @@ require ( ) replace github.com/coder/coder/v2 => ../../ + +replace github.com/coder/guts => /home/steven/go/src/github.com/coder/guts diff --git a/scripts/apitypings/go.sum b/scripts/apitypings/go.sum index 8afced69a1f8d..57c51ac492042 100644 --- a/scripts/apitypings/go.sum +++ b/scripts/apitypings/go.sum @@ -66,8 +66,6 @@ github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/coder/guts v0.0.0-20241209184738-ebb754154404 h1:oqnZZPOJNPNUO0YWQtVviriBPZCZVYPSQh0igMpWfsc= -github.com/coder/guts v0.0.0-20241209184738-ebb754154404/go.mod h1:VEiS5EvQZB30BVuAhK6QzbUEITxXIGz4771teg2fKGk= 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/serpent v0.10.0 h1:ofVk9FJXSek+SmL3yVE3GoArP83M+1tX+H7S4t8BSuM= diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts new file mode 100644 index 0000000000000..75162f72edd76 --- /dev/null +++ b/site/src/api/typesGenerated.ts @@ -0,0 +1,2998 @@ +// Code generated by 'guts'. DO NOT EDIT. + +// From codersdk/templates.go +export interface ACLAvailable { + readonly users: ReducedUser[]; + readonly groups: Group[]; +} + +// From codersdk/apikey.go +export interface APIKey { + readonly id: string; + readonly user_id: string; + readonly last_used: string; + readonly expires_at: string; + readonly created_at: string; + readonly updated_at: string; + readonly login_type: LoginType; + readonly scope: APIKeyScope; + readonly token_name: string; + readonly lifetime_seconds: number; +} + +// From codersdk/apikey.go +export type APIKeyScope = "all" | "application_connect"; + +export const APIKeyScopes: APIKeyScope[] = ["all", "application_connect"]; + +// From codersdk/apikey.go +export interface APIKeyWithOwner extends APIKey { + readonly username: string; +} + +// From codersdk/licenses.go +export interface AddLicenseRequest { + readonly license: string; +} + +// From codersdk/workspacebuilds.go +export interface AgentConnectionTiming { + readonly started_at: string; + readonly ended_at: string; + readonly stage: TimingStage; + readonly workspace_agent_id: string; + readonly workspace_agent_name: string; +} + +// From codersdk/workspacebuilds.go +export interface AgentScriptTiming { + readonly started_at: string; + readonly ended_at: string; + readonly exit_code: number; + readonly stage: TimingStage; + readonly status: string; + readonly display_name: string; + readonly workspace_agent_id: string; + readonly workspace_agent_name: string; +} + +// From codersdk/templates.go +export interface AgentStatsReportResponse { + readonly num_comms: number; + readonly rx_bytes: number; + readonly tx_bytes: number; +} + +// From codersdk/workspaceagents.go +export type AgentSubsystem = "envbox" | "envbuilder" | "exectrace"; + +export const AgentSubsystems: AgentSubsystem[] = [ + "envbox", + "envbuilder", + "exectrace", +]; + +// From codersdk/deployment.go +export interface AppHostResponse { + readonly host: string; +} + +// From codersdk/deployment.go +export interface AppearanceConfig { + readonly application_name: string; + readonly logo_url: string; + readonly docs_url: string; + readonly service_banner: BannerConfig; + readonly announcement_banners: BannerConfig[]; + readonly support_links?: LinkConfig[]; +} + +// From codersdk/templates.go +export interface ArchiveTemplateVersionsRequest { + readonly all: boolean; +} + +// From codersdk/templates.go +export interface ArchiveTemplateVersionsResponse { + readonly template_id: string; + readonly archived_ids: string[]; +} + +// From codersdk/roles.go +export interface AssignableRoles extends Role { + readonly assignable: boolean; + readonly built_in: boolean; +} + +// From codersdk/audit.go +export type AuditAction = + | "create" + | "delete" + | "login" + | "logout" + | "register" + | "request_password_reset" + | "start" + | "stop" + | "write"; + +export const AuditActions: AuditAction[] = [ + "create", + "delete", + "login", + "logout", + "register", + "request_password_reset", + "start", + "stop", + "write", +]; + +// From codersdk/audit.go +export type AuditDiff = Record; + +// From codersdk/audit.go +export interface AuditDiffField { + // empty interface{} type, falling back to unknown + readonly old?: unknown; + // empty interface{} type, falling back to unknown + readonly new?: unknown; + readonly secret: boolean; +} + +// From codersdk/audit.go +export interface AuditLog { + readonly id: string; + readonly request_id: string; + readonly time: string; + readonly ip: string; + readonly user_agent: string; + readonly resource_type: ResourceType; + readonly resource_id: string; + readonly resource_target: string; + readonly resource_icon: string; + readonly action: AuditAction; + readonly diff: AuditDiff; + readonly status_code: number; + readonly additional_fields: Record; + readonly description: string; + readonly resource_link: string; + readonly is_deleted: boolean; + readonly organization_id: string; + readonly organization?: MinimalOrganization | null; + readonly user: User | null; +} + +// From codersdk/audit.go +export interface AuditLogResponse { + readonly audit_logs: AuditLog[]; + readonly count: number; +} + +// From codersdk/audit.go +export interface AuditLogsRequest extends Pagination { + readonly q?: string; +} + +// From codersdk/users.go +export interface AuthMethod { + readonly enabled: boolean; +} + +// From codersdk/users.go +export interface AuthMethods { + readonly terms_of_service_url?: string; + readonly password: AuthMethod; + readonly github: AuthMethod; + readonly oidc: OIDCAuthMethod; +} + +// From codersdk/authorization.go +export interface AuthorizationCheck { + readonly object: AuthorizationObject; + readonly action: RBACAction; +} + +// From codersdk/authorization.go +export interface AuthorizationObject { + readonly resource_type: RBACResource; + readonly owner_id?: string; + readonly organization_id?: string; + readonly resource_id?: string; + readonly any_org?: boolean; +} + +// From codersdk/authorization.go +export interface AuthorizationRequest { + readonly checks: Record; +} + +// From codersdk/authorization.go +export type AuthorizationResponse = Record; + +// From codersdk/workspaces.go +export type AutomaticUpdates = "always" | "never"; + +export const AutomaticUpdatess: AutomaticUpdates[] = ["always", "never"]; + +// From codersdk/deployment.go +export interface AvailableExperiments { + readonly safe: Experiment[]; +} + +// From codersdk/deployment.go +export interface BannerConfig { + readonly enabled: boolean; + readonly message?: string; + readonly background_color?: string; +} + +// From codersdk/deployment.go +export interface BuildInfoResponse { + readonly external_url: string; + readonly version: string; + readonly dashboard_url: string; + readonly telemetry: boolean; + readonly workspace_proxy: boolean; + readonly agent_api_version: string; + readonly provisioner_api_version: string; + readonly upgrade_message: string; + readonly deployment_id: string; +} + +// From codersdk/workspacebuilds.go +export type BuildReason = "autostart" | "autostop" | "initiator"; + +export const BuildReasons: BuildReason[] = [ + "autostart", + "autostop", + "initiator", +]; + +// From codersdk/client.go +export const BuildVersionHeader = "X-Coder-Build-Version"; + +// From codersdk/client.go +export const BypassRatelimitHeader = "X-Coder-Bypass-Ratelimit"; + +// From codersdk/client.go +export const CLITelemetryHeader = "Coder-CLI-Telemetry"; + +// From codersdk/users.go +export interface ChangePasswordWithOneTimePasscodeRequest { + readonly email: string; + readonly password: string; + readonly one_time_passcode: string; +} + +// From codersdk/insights.go +export interface ConnectionLatency { + readonly p50: number; + readonly p95: number; +} + +// From codersdk/files.go +export const ContentTypeTar = "application/x-tar"; + +// From codersdk/files.go +export const ContentTypeZip = "application/zip"; + +// From codersdk/users.go +export interface ConvertLoginRequest { + readonly to_type: LoginType; + readonly password: string; +} + +// From codersdk/users.go +export interface CreateFirstUserRequest { + readonly email: string; + readonly username: string; + readonly name: string; + readonly password: string; + readonly trial: boolean; + readonly trial_info: CreateFirstUserTrialInfo; +} + +// From codersdk/users.go +export interface CreateFirstUserResponse { + readonly user_id: string; + readonly organization_id: string; +} + +// From codersdk/users.go +export interface CreateFirstUserTrialInfo { + readonly first_name: string; + readonly last_name: string; + readonly phone_number: string; + readonly job_title: string; + readonly company_name: string; + readonly country: string; + readonly developers: string; +} + +// From codersdk/groups.go +export interface CreateGroupRequest { + readonly name: string; + readonly display_name: string; + readonly avatar_url: string; + readonly quota_allowance: number; +} + +// From codersdk/organizations.go +export interface CreateOrganizationRequest { + readonly name: string; + readonly display_name?: string; + readonly description?: string; + readonly icon?: string; +} + +// From codersdk/provisionerdaemons.go +export interface CreateProvisionerKeyRequest { + readonly name: string; + readonly tags: Record; +} + +// From codersdk/provisionerdaemons.go +export interface CreateProvisionerKeyResponse { + readonly key: string; +} + +// From codersdk/organizations.go +export interface CreateTemplateRequest { + readonly name: string; + readonly display_name?: string; + readonly description?: string; + readonly icon?: string; + readonly template_version_id: string; + readonly default_ttl_ms?: number | null; + readonly activity_bump_ms?: number | null; + readonly autostop_requirement?: TemplateAutostopRequirement | null; + readonly autostart_requirement?: TemplateAutostartRequirement | null; + readonly allow_user_cancel_workspace_jobs: boolean | null; + readonly allow_user_autostart: boolean | null; + readonly allow_user_autostop: boolean | null; + readonly failure_ttl_ms?: number | null; + readonly dormant_ttl_ms?: number | null; + readonly delete_ttl_ms?: number | null; + readonly disable_everyone_group_access: boolean; + readonly require_active_version: boolean; + readonly max_port_share_level: WorkspaceAgentPortShareLevel | null; +} + +// From codersdk/templateversions.go +export interface CreateTemplateVersionDryRunRequest { + readonly workspace_name: string; + readonly rich_parameter_values: WorkspaceBuildParameter[]; + readonly user_variable_values?: VariableValue[]; +} + +// From codersdk/organizations.go +export interface CreateTemplateVersionRequest { + readonly name?: string; + readonly message?: string; + readonly template_id?: string; + readonly storage_method: ProvisionerStorageMethod; + readonly file_id?: string; + readonly example_id?: string; + readonly provisioner: ProvisionerType; + readonly tags: Record; + readonly user_variable_values?: VariableValue[]; +} + +// From codersdk/audit.go +export interface CreateTestAuditLogRequest { + readonly action?: AuditAction; + readonly resource_type?: ResourceType; + readonly resource_id?: string; + readonly additional_fields?: Record; + readonly time?: string; + readonly build_reason?: BuildReason; + readonly organization_id?: string; +} + +// From codersdk/apikey.go +export interface CreateTokenRequest { + readonly lifetime: number; + readonly scope: APIKeyScope; + readonly token_name: string; +} + +// From codersdk/users.go +export interface CreateUserRequestWithOrgs { + readonly email: string; + readonly username: string; + readonly name: string; + readonly password: string; + readonly login_type: LoginType; + readonly user_status: UserStatus | null; + readonly organization_ids: string[]; +} + +// From codersdk/workspaces.go +export interface CreateWorkspaceBuildRequest { + readonly template_version_id?: string; + readonly transition: WorkspaceTransition; + readonly dry_run?: boolean; + readonly state?: string[]; + readonly orphan?: boolean; + readonly rich_parameter_values?: WorkspaceBuildParameter[]; + readonly log_level?: ProvisionerLogLevel; +} + +// From codersdk/workspaceproxy.go +export interface CreateWorkspaceProxyRequest { + readonly name: string; + readonly display_name: string; + readonly icon: string; +} + +// From codersdk/organizations.go +export interface CreateWorkspaceRequest { + readonly template_id?: string; + readonly template_version_id?: string; + readonly name: string; + readonly autostart_schedule: string | null; + readonly ttl_ms?: number | null; + readonly rich_parameter_values?: WorkspaceBuildParameter[]; + readonly automatic_updates?: AutomaticUpdates; +} + +// From codersdk/deployment.go +export interface CryptoKey { + readonly feature: CryptoKeyFeature; + readonly secret: string; + readonly deletes_at: string; + readonly sequence: number; + readonly starts_at: string; +} + +// From codersdk/deployment.go +export type CryptoKeyFeature = + | "oidc_convert" + | "tailnet_resume" + | "workspace_apps_api_key" + | "workspace_apps_token"; + +export const CryptoKeyFeatures: CryptoKeyFeature[] = [ + "oidc_convert", + "tailnet_resume", + "workspace_apps_api_key", + "workspace_apps_token", +]; + +// From codersdk/roles.go +export interface CustomRoleRequest { + readonly name: string; + readonly display_name: string; + readonly site_permissions: Permission[]; + readonly organization_permissions: Permission[]; + readonly user_permissions: Permission[]; +} + +// From codersdk/deployment.go +export interface DAUEntry { + readonly date: string; + readonly amount: number; +} + +// From codersdk/deployment.go +export interface DAURequest { + readonly TZHourOffset: number; +} + +// From codersdk/deployment.go +export interface DAUsResponse { + readonly entries: DAUEntry[]; + readonly tz_hour_offset: number; +} + +// From codersdk/deployment.go +export interface DERP { + readonly server: DERPServerConfig; + readonly config: DERPConfig; +} + +// From codersdk/deployment.go +export interface DERPConfig { + readonly block_direct: boolean; + readonly force_websockets: boolean; + readonly url: string; + readonly path: string; +} + +// From codersdk/workspaceagents.go +export interface DERPRegion { + readonly preferred: boolean; + readonly latency_ms: number; +} + +// From codersdk/deployment.go +export interface DERPServerConfig { + readonly enable: boolean; + readonly region_id: number; + readonly region_code: string; + readonly region_name: string; + readonly stun_addresses: string; + readonly relay_url: string; +} + +// From codersdk/deployment.go +export interface DangerousConfig { + readonly allow_path_app_sharing: boolean; + readonly allow_path_app_site_owner_access: boolean; + readonly allow_all_cors: boolean; +} + +// From codersdk/workspaceagentportshare.go +export interface DeleteWorkspaceAgentPortShareRequest { + readonly agent_name: string; + readonly port: number; +} + +// From codersdk/deployment.go +export interface DeploymentConfig { + readonly config?: DeploymentValues | null; + readonly options?: SerpentOptionSet; +} + +// From codersdk/deployment.go +export interface DeploymentStats { + readonly aggregated_from: string; + readonly collected_at: string; + readonly next_update_at: string; + readonly workspaces: WorkspaceDeploymentStats; + readonly session_count: SessionCountDeploymentStats; +} + +// From codersdk/deployment.go +export interface DeploymentValues { + readonly verbose?: boolean; + readonly access_url?: string; + readonly wildcard_access_url?: string; + readonly docs_url?: string; + readonly redirect_to_access_url?: boolean; + readonly http_address?: string; + readonly autobuild_poll_interval?: number; + readonly job_hang_detector_interval?: number; + readonly derp?: DERP; + readonly prometheus?: PrometheusConfig; + readonly pprof?: PprofConfig; + readonly proxy_trusted_headers?: string; + readonly proxy_trusted_origins?: string; + readonly cache_directory?: string; + readonly in_memory_database?: boolean; + readonly pg_connection_url?: string; + readonly pg_auth?: string; + readonly oauth2?: OAuth2Config; + readonly oidc?: OIDCConfig; + readonly telemetry?: TelemetryConfig; + readonly tls?: TLSConfig; + readonly trace?: TraceConfig; + readonly secure_auth_cookie?: boolean; + readonly strict_transport_security?: number; + readonly strict_transport_security_options?: string; + readonly ssh_keygen_algorithm?: string; + readonly metrics_cache_refresh_interval?: number; + readonly agent_stat_refresh_interval?: number; + readonly agent_fallback_troubleshooting_url?: string; + readonly browser_only?: boolean; + readonly scim_api_key?: string; + readonly external_token_encryption_keys?: string; + readonly provisioner?: ProvisionerConfig; + readonly rate_limit?: RateLimitConfig; + readonly experiments?: string; + readonly update_check?: boolean; + readonly swagger?: SwaggerConfig; + readonly logging?: LoggingConfig; + readonly dangerous?: DangerousConfig; + readonly disable_path_apps?: boolean; + readonly session_lifetime?: SessionLifetime; + readonly disable_password_auth?: boolean; + readonly support?: SupportConfig; + readonly external_auth?: SerpentStruct; + readonly config_ssh?: SSHConfig; + readonly wgtunnel_host?: string; + readonly disable_owner_workspace_exec?: boolean; + readonly proxy_health_status_interval?: number; + readonly enable_terraform_debug_mode?: boolean; + readonly user_quiet_hours_schedule?: UserQuietHoursScheduleConfig; + readonly web_terminal_renderer?: string; + readonly allow_workspace_renames?: boolean; + readonly healthcheck?: HealthcheckConfig; + readonly cli_upgrade_message?: string; + readonly terms_of_service_url?: string; + readonly notifications?: NotificationsConfig; + readonly additional_csp_policy?: string; + readonly config?: string; + readonly write_config?: boolean; + readonly address?: string; +} + +// From codersdk/workspaceagents.go +export type DisplayApp = + | "port_forwarding_helper" + | "ssh_helper" + | "vscode" + | "vscode_insiders" + | "web_terminal"; + +export const DisplayApps: DisplayApp[] = [ + "port_forwarding_helper", + "ssh_helper", + "vscode", + "vscode_insiders", + "web_terminal", +]; + +// From codersdk/externalauth.go +export type EnhancedExternalAuthProvider = + | "azure-devops" + | "azure-devops-entra" + | "bitbucket-cloud" + | "bitbucket-server" + | "github" + | "gitlab" + | "gitea" + | "jfrog" + | "slack"; + +export const EnhancedExternalAuthProviders: EnhancedExternalAuthProvider[] = [ + "azure-devops", + "azure-devops-entra", + "bitbucket-cloud", + "bitbucket-server", + "github", + "gitlab", + "gitea", + "jfrog", + "slack", +]; + +// From codersdk/deployment.go +export type Entitlement = "entitled" | "grace_period" | "not_entitled"; + +// From codersdk/deployment.go +export interface Entitlements { + readonly features: Record; + readonly warnings: string[]; + readonly errors: string[]; + readonly has_license: boolean; + readonly trial: boolean; + readonly require_telemetry: boolean; + readonly refreshed_at: string; +} + +// From codersdk/client.go +export const EntitlementsWarningHeader = "X-Coder-Entitlements-Warning"; + +// From codersdk/deployment.go +export type Experiment = + | "auto-fill-parameters" + | "example" + | "notifications" + | "workspace-usage"; + +// From codersdk/deployment.go +export type Experiments = Experiment[]; + +// From codersdk/externalauth.go +export interface ExternalAuth { + readonly authenticated: boolean; + readonly device: boolean; + readonly display_name: string; + readonly user: ExternalAuthUser | null; + readonly app_installable: boolean; + readonly installations: ExternalAuthAppInstallation[]; + readonly app_install_url: string; +} + +// From codersdk/externalauth.go +export interface ExternalAuthAppInstallation { + readonly id: number; + readonly account: ExternalAuthUser; + readonly configure_url: string; +} + +// From codersdk/deployment.go +export interface ExternalAuthConfig { + readonly type: string; + readonly client_id: string; + readonly id: string; + readonly auth_url: string; + readonly token_url: string; + readonly validate_url: string; + readonly app_install_url: string; + readonly app_installations_url: string; + readonly no_refresh: boolean; + readonly scopes: string[]; + readonly device_flow: boolean; + readonly device_code_url: string; + readonly regex: string; + readonly display_name: string; + readonly display_icon: string; +} + +// From codersdk/externalauth.go +export interface ExternalAuthDevice { + readonly device_code: string; + readonly user_code: string; + readonly verification_uri: string; + readonly expires_in: number; + readonly interval: number; +} + +// From codersdk/externalauth.go +export interface ExternalAuthDeviceExchange { + readonly device_code: string; +} + +// From codersdk/externalauth.go +export interface ExternalAuthLink { + readonly provider_id: string; + readonly created_at: string; + readonly updated_at: string; + readonly has_refresh_token: boolean; + readonly expires: string; + readonly authenticated: boolean; + readonly validate_error: string; +} + +// From codersdk/externalauth.go +export interface ExternalAuthLinkProvider { + readonly id: string; + readonly type: string; + readonly device: boolean; + readonly display_name: string; + readonly display_icon: string; + readonly allow_refresh: boolean; + readonly allow_validate: boolean; +} + +// From codersdk/externalauth.go +export interface ExternalAuthUser { + readonly id: number; + readonly login: string; + readonly avatar_url: string; + readonly profile_url: string; + readonly name: string; +} + +// From codersdk/deployment.go +export interface Feature { + readonly entitlement: Entitlement; + readonly enabled: boolean; + readonly limit?: number | null; + readonly actual?: number | null; +} + +// From codersdk/deployment.go +export type FeatureName = + | "access_control" + | "advanced_template_scheduling" + | "appearance" + | "audit_log" + | "browser_only" + | "control_shared_ports" + | "custom_roles" + | "external_provisioner_daemons" + | "external_token_encryption" + | "high_availability" + | "multiple_external_auth" + | "multiple_organizations" + | "scim" + | "template_rbac" + | "user_limit" + | "user_role_management" + | "workspace_batch_actions" + | "workspace_proxy"; + +export const FeatureNames: FeatureName[] = [ + "access_control", + "advanced_template_scheduling", + "appearance", + "audit_log", + "browser_only", + "control_shared_ports", + "custom_roles", + "external_provisioner_daemons", + "external_token_encryption", + "high_availability", + "multiple_external_auth", + "multiple_organizations", + "scim", + "template_rbac", + "user_limit", + "user_role_management", + "workspace_batch_actions", + "workspace_proxy", +]; + +// From codersdk/deployment.go +export type FeatureSet = "enterprise" | "" | "premium"; + +export const FeatureSets: FeatureSet[] = ["enterprise", "", "premium"]; + +// From codersdk/files.go +export const FormatZip = "zip"; + +// From codersdk/apikey.go +export interface GenerateAPIKeyResponse { + readonly key: string; +} + +// From codersdk/users.go +export interface GetUsersResponse { + readonly users: User[]; + readonly count: number; +} + +// From codersdk/gitsshkey.go +export interface GitSSHKey { + readonly user_id: string; + readonly created_at: string; + readonly updated_at: string; + readonly public_key: string; +} + +// From codersdk/groups.go +export interface Group { + readonly id: string; + readonly name: string; + readonly display_name: string; + readonly organization_id: string; + readonly members: ReducedUser[]; + readonly total_member_count: number; + readonly avatar_url: string; + readonly quota_allowance: number; + readonly source: GroupSource; + readonly organization_name: string; + readonly organization_display_name: string; +} + +// From codersdk/groups.go +export interface GroupArguments { + readonly Organization: string; + readonly HasMember: string; + readonly GroupIDs: string[]; +} + +// From codersdk/groups.go +export type GroupSource = "oidc" | "user"; + +export const GroupSources: GroupSource[] = ["oidc", "user"]; + +// From codersdk/idpsync.go +export interface GroupSyncSettings { + readonly field: string; + readonly mapping: Record; + readonly regex_filter: string | null; + readonly auto_create_missing_groups: boolean; + readonly legacy_group_name_mapping?: Record; +} + +// From health/model.go +export type HealthCode = + | "EACS03" + | "EACS02" + | "EACS04" + | "EACS01" + | "EDERP01" + | "EDERP02" + | "EDB01" + | "EDB02" + | "EPD03" + | "EPD02" + | "EPD01" + | "EWP02" + | "EWP04" + | "EWP01" + | "EUNKNOWN" + | "EWS01" + | "EWS02" + | "EWS03"; + +// From health/model.go +export const HealthCodeInterfaceSmallMTU = "EIF01"; + +// From health/model.go +export const HealthCodeSTUNMapVaryDest = "ESTUN02"; + +// From health/model.go +export const HealthCodeSTUNNoNodes = "ESTUN01"; + +export const HealthCodes: HealthCode[] = [ + "EACS03", + "EACS02", + "EACS04", + "EACS01", + "EDERP01", + "EDERP02", + "EDB01", + "EDB02", + "EPD03", + "EPD02", + "EPD01", + "EWP02", + "EWP04", + "EWP01", + "EUNKNOWN", + "EWS01", + "EWS02", + "EWS03", +]; + +// From health/model.go +export interface HealthMessage { + readonly code: HealthCode; + readonly message: string; +} + +// From health/model.go +export type HealthSeverity = "error" | "ok" | "warning"; + +export const HealthSeveritys: HealthSeverity[] = ["error", "ok", "warning"]; + +// From codersdk/workspaceapps.go +export interface Healthcheck { + readonly url: string; + readonly interval: number; + readonly threshold: number; +} + +// From codersdk/deployment.go +export interface HealthcheckConfig { + readonly refresh: number; + readonly threshold_database: number; +} + +// From codersdk/insights.go +export type InsightsReportInterval = "day" | "week"; + +export const InsightsReportIntervals: InsightsReportInterval[] = [ + "day", + "week", +]; + +// From codersdk/workspaceagents.go +export interface IssueReconnectingPTYSignedTokenRequest { + readonly url: string; + readonly agentID: string; +} + +// From codersdk/workspaceagents.go +export interface IssueReconnectingPTYSignedTokenResponse { + readonly signed_token: string; +} + +// From codersdk/jfrog.go +export interface JFrogXrayScan { + readonly workspace_id: string; + readonly agent_id: string; + readonly critical: number; + readonly high: number; + readonly medium: number; + readonly results_url: string; +} + +// From codersdk/provisionerdaemons.go +export type JobErrorCode = "REQUIRED_TEMPLATE_VARIABLES"; + +export const JobErrorCodes: JobErrorCode[] = ["REQUIRED_TEMPLATE_VARIABLES"]; + +// From codersdk/licenses.go +export interface License { + readonly id: number; + readonly uuid: string; + readonly uploaded_at: string; + // empty interface{} type, falling back to unknown + readonly claims: Record; +} + +// From codersdk/licenses.go +export const LicenseExpiryClaim = "license_expires"; + +// From codersdk/deployment.go +export interface LinkConfig { + readonly name: string; + readonly target: string; + readonly icon: string; +} + +// From codersdk/externalauth.go +export interface ListUserExternalAuthResponse { + readonly providers: ExternalAuthLinkProvider[]; + readonly links: ExternalAuthLink[]; +} + +// From codersdk/provisionerdaemons.go +export type LogLevel = "debug" | "error" | "info" | "trace" | "warn"; + +export const LogLevels: LogLevel[] = [ + "debug", + "error", + "info", + "trace", + "warn", +]; + +// From codersdk/provisionerdaemons.go +export type LogSource = "provisioner" | "provisioner_daemon"; + +export const LogSources: LogSource[] = ["provisioner", "provisioner_daemon"]; + +// From codersdk/deployment.go +export interface LoggingConfig { + readonly log_filter: string; + readonly human: string; + readonly json: string; + readonly stackdriver: string; +} + +// From codersdk/apikey.go +export type LoginType = "github" | "none" | "oidc" | "password" | "token" | ""; + +export const LoginTypes: LoginType[] = [ + "github", + "none", + "oidc", + "password", + "token", + "", +]; + +// From codersdk/users.go +export interface LoginWithPasswordRequest { + readonly email: string; + readonly password: string; +} + +// From codersdk/users.go +export interface LoginWithPasswordResponse { + readonly session_token: string; +} + +// From codersdk/provisionerdaemons.go +export interface MatchedProvisioners { + readonly count: number; + readonly available: number; + readonly most_recently_seen?: string; +} + +// From codersdk/organizations.go +export interface MinimalOrganization { + readonly id: string; + readonly name: string; + readonly display_name: string; + readonly icon: string; +} + +// From codersdk/users.go +export interface MinimalUser { + readonly id: string; + readonly username: string; + readonly avatar_url: string; +} + +// From codersdk/notifications.go +export interface NotificationMethodsResponse { + readonly available: string[]; + readonly default: string; +} + +// From codersdk/notifications.go +export interface NotificationPreference { + readonly id: string; + readonly disabled: boolean; + readonly updated_at: string; +} + +// From codersdk/notifications.go +export interface NotificationTemplate { + readonly id: string; + readonly name: string; + readonly title_template: string; + readonly body_template: string; + readonly actions: string; + readonly group: string; + readonly method: string; + readonly kind: string; +} + +// From codersdk/deployment.go +export interface NotificationsConfig { + readonly max_send_attempts: number; + readonly retry_interval: number; + readonly sync_interval: number; + readonly sync_buffer_size: number; + readonly lease_period: number; + readonly lease_count: number; + readonly fetch_interval: number; + readonly method: string; + readonly dispatch_timeout: number; + readonly email: NotificationsEmailConfig; + readonly webhook: NotificationsWebhookConfig; +} + +// From codersdk/deployment.go +export interface NotificationsEmailAuthConfig { + readonly identity: string; + readonly username: string; + readonly password: string; + readonly password_file: string; +} + +// From codersdk/deployment.go +export interface NotificationsEmailConfig { + readonly from: string; + readonly smarthost: string; + readonly hello: string; + readonly auth: NotificationsEmailAuthConfig; + readonly tls: NotificationsEmailTLSConfig; + readonly force_tls: boolean; +} + +// From codersdk/deployment.go +export interface NotificationsEmailTLSConfig { + readonly start_tls: boolean; + readonly server_name: string; + readonly insecure_skip_verify: boolean; + readonly ca_file: string; + readonly cert_file: string; + readonly key_file: string; +} + +// From codersdk/notifications.go +export interface NotificationsSettings { + readonly notifier_paused: boolean; +} + +// From codersdk/deployment.go +export interface NotificationsWebhookConfig { + readonly endpoint: string; +} + +// From codersdk/oauth2.go +export interface OAuth2AppEndpoints { + readonly authorization: string; + readonly token: string; + readonly device_authorization: string; +} + +// From codersdk/deployment.go +export interface OAuth2Config { + readonly github: OAuth2GithubConfig; +} + +// From codersdk/deployment.go +export interface OAuth2GithubConfig { + readonly client_id: string; + readonly client_secret: string; + readonly allowed_orgs: string; + readonly allowed_teams: string; + readonly allow_signups: boolean; + readonly allow_everyone: boolean; + readonly enterprise_base_url: string; +} + +// From codersdk/oauth2.go +export interface OAuth2ProviderApp { + readonly id: string; + readonly name: string; + readonly callback_url: string; + readonly icon: string; + readonly endpoints: OAuth2AppEndpoints; +} + +// From codersdk/oauth2.go +export interface OAuth2ProviderAppFilter { + readonly user_id?: string; +} + +// From codersdk/oauth2.go +export interface OAuth2ProviderAppSecret { + readonly id: string; + readonly last_used_at: string; + readonly client_secret_truncated: string; +} + +// From codersdk/oauth2.go +export interface OAuth2ProviderAppSecretFull { + readonly id: string; + readonly client_secret_full: string; +} + +// From codersdk/oauth2.go +export type OAuth2ProviderGrantType = "authorization_code" | "refresh_token"; + +export const OAuth2ProviderGrantTypes: OAuth2ProviderGrantType[] = [ + "authorization_code", + "refresh_token", +]; + +// From codersdk/oauth2.go +export type OAuth2ProviderResponseType = "code"; + +export const OAuth2ProviderResponseTypes: OAuth2ProviderResponseType[] = [ + "code", +]; + +// From codersdk/client.go +export const OAuth2RedirectCookie = "oauth_redirect"; + +// From codersdk/client.go +export const OAuth2StateCookie = "oauth_state"; + +// From codersdk/users.go +export interface OAuthConversionResponse { + readonly state_string: string; + readonly expires_at: string; + readonly to_type: LoginType; + readonly user_id: string; +} + +// From codersdk/users.go +export interface OIDCAuthMethod extends AuthMethod { + readonly signInText: string; + readonly iconUrl: string; +} + +// From codersdk/deployment.go +export interface OIDCConfig { + readonly allow_signups: boolean; + readonly client_id: string; + readonly client_secret: string; + readonly client_key_file: string; + readonly client_cert_file: string; + readonly email_domain: string; + readonly issuer_url: string; + readonly scopes: string; + readonly ignore_email_verified: boolean; + readonly username_field: string; + readonly name_field: string; + readonly email_field: string; + readonly auth_url_params: SerpentStruct>; + readonly ignore_user_info: boolean; + readonly organization_field: string; + readonly organization_mapping: SerpentStruct>; + readonly organization_assign_default: boolean; + readonly group_auto_create: boolean; + readonly group_regex_filter: string; + readonly group_allow_list: string; + readonly groups_field: string; + readonly group_mapping: SerpentStruct>; + readonly user_role_field: string; + readonly user_role_mapping: SerpentStruct>; + readonly user_roles_default: string; + readonly sign_in_text: string; + readonly icon_url: string; + readonly signups_disabled_text: string; + readonly skip_issuer_checks: boolean; +} + +// From codersdk/organizations.go +export interface Organization extends MinimalOrganization { + readonly description: string; + readonly created_at: string; + readonly updated_at: string; + readonly is_default: boolean; +} + +// From codersdk/organizations.go +export interface OrganizationMember { + readonly user_id: string; + readonly organization_id: string; + readonly created_at: string; + readonly updated_at: string; + readonly roles: SlimRole[]; +} + +// From codersdk/organizations.go +export interface OrganizationMemberWithUserData extends OrganizationMember { + readonly username: string; + readonly name: string; + readonly avatar_url: string; + readonly email: string; + readonly global_roles: SlimRole[]; +} + +// From codersdk/idpsync.go +export interface OrganizationSyncSettings { + readonly field: string; + readonly mapping: Record; + readonly organization_assign_default: boolean; +} + +// From codersdk/pagination.go +export interface Pagination { + readonly after_id?: string; + readonly limit?: number; + readonly offset?: number; +} + +// From codersdk/groups.go +export interface PatchGroupRequest { + readonly add_users: string[]; + readonly remove_users: string[]; + readonly name: string; + readonly display_name: string | null; + readonly avatar_url: string | null; + readonly quota_allowance: number | null; +} + +// From codersdk/templateversions.go +export interface PatchTemplateVersionRequest { + readonly name: string; + readonly message?: string | null; +} + +// From codersdk/workspaceproxy.go +export interface PatchWorkspaceProxy { + readonly id: string; + readonly name: string; + readonly display_name: string; + readonly icon: string; + readonly regenerate_token: boolean; +} + +// From codersdk/client.go +export const PathAppSessionTokenCookie = "coder_path_app_session_token"; + +// From codersdk/roles.go +export interface Permission { + readonly negate: boolean; + readonly resource_type: RBACResource; + readonly action: RBACAction; +} + +// From codersdk/oauth2.go +export interface PostOAuth2ProviderAppRequest { + readonly name: string; + readonly callback_url: string; + readonly icon: string; +} + +// From codersdk/workspaces.go +export interface PostWorkspaceUsageRequest { + readonly agent_id: string; + readonly app_name: UsageAppName; +} + +// From codersdk/deployment.go +export type PostgresAuth = "awsiamrds" | "password"; + +export const PostgresAuths: PostgresAuth[] = ["awsiamrds", "password"]; + +// From codersdk/deployment.go +export interface PprofConfig { + readonly enable: boolean; + readonly address: string; +} + +// From codersdk/deployment.go +export interface PrometheusConfig { + readonly enable: boolean; + readonly address: string; + readonly collect_agent_stats: boolean; + readonly collect_db_metrics: boolean; + readonly aggregate_agent_stats_by: string; +} + +// From codersdk/deployment.go +export interface ProvisionerConfig { + readonly daemons: number; + readonly daemon_types: string; + readonly daemon_poll_interval: number; + readonly daemon_poll_jitter: number; + readonly force_cancel_interval: number; + readonly daemon_psk: string; +} + +// From codersdk/provisionerdaemons.go +export interface ProvisionerDaemon { + readonly id: string; + readonly organization_id: string; + readonly key_id: string; + readonly created_at: string; + readonly last_seen_at?: string; + readonly name: string; + readonly version: string; + readonly api_version: string; + readonly provisioners: ProvisionerType[]; + readonly tags: Record; +} + +// From codersdk/client.go +export const ProvisionerDaemonKey = "Coder-Provisioner-Daemon-Key"; + +// From codersdk/client.go +export const ProvisionerDaemonPSK = "Coder-Provisioner-Daemon-PSK"; + +// From codersdk/provisionerdaemons.go +export interface ProvisionerJob { + readonly id: string; + readonly created_at: string; + readonly started_at?: string | null; + readonly completed_at?: string | null; + readonly canceled_at?: string | null; + readonly error?: string; + readonly error_code?: JobErrorCode; + readonly status: ProvisionerJobStatus; + readonly worker_id?: string | null; + readonly file_id: string; + readonly tags: Record; + readonly queue_position: number; + readonly queue_size: number; +} + +// From codersdk/provisionerdaemons.go +export interface ProvisionerJobLog { + readonly id: number; + readonly created_at: string; + readonly log_source: LogSource; + readonly log_level: LogLevel; + readonly stage: string; + readonly output: string; +} + +// From codersdk/provisionerdaemons.go +export type ProvisionerJobStatus = + | "canceled" + | "canceling" + | "failed" + | "pending" + | "running" + | "succeeded" + | "unknown"; + +export const ProvisionerJobStatuss: ProvisionerJobStatus[] = [ + "canceled", + "canceling", + "failed", + "pending", + "running", + "succeeded", + "unknown", +]; + +// From codersdk/provisionerdaemons.go +export interface ProvisionerKey { + readonly id: string; + readonly created_at: string; + readonly organization: string; + readonly name: string; + readonly tags: ProvisionerKeyTags; +} + +// From codersdk/provisionerdaemons.go +export interface ProvisionerKeyDaemons { + readonly key: ProvisionerKey; + readonly daemons: ProvisionerDaemon[]; +} + +// From codersdk/provisionerdaemons.go +export const ProvisionerKeyIDBuiltIn = "00000000-0000-0000-0000-000000000001"; + +// From codersdk/provisionerdaemons.go +export const ProvisionerKeyIDPSK = "00000000-0000-0000-0000-000000000003"; + +// From codersdk/provisionerdaemons.go +export const ProvisionerKeyIDUserAuth = "00000000-0000-0000-0000-000000000002"; + +// From codersdk/provisionerdaemons.go +export const ProvisionerKeyNameBuiltIn = "built-in"; + +// From codersdk/provisionerdaemons.go +export const ProvisionerKeyNamePSK = "psk"; + +// From codersdk/provisionerdaemons.go +export const ProvisionerKeyNameUserAuth = "user-auth"; + +// From codersdk/provisionerdaemons.go +export type ProvisionerKeyTags = Record; + +// From codersdk/workspaces.go +export type ProvisionerLogLevel = "debug"; + +export const ProvisionerLogLevels: ProvisionerLogLevel[] = ["debug"]; + +// From codersdk/organizations.go +export type ProvisionerStorageMethod = "file"; + +export const ProvisionerStorageMethods: ProvisionerStorageMethod[] = ["file"]; + +// From codersdk/workspacebuilds.go +export interface ProvisionerTiming { + readonly job_id: string; + readonly started_at: string; + readonly ended_at: string; + readonly stage: TimingStage; + readonly source: string; + readonly action: string; + readonly resource: string; +} + +// From codersdk/organizations.go +export type ProvisionerType = "echo" | "terraform"; + +export const ProvisionerTypes: ProvisionerType[] = ["echo", "terraform"]; + +// From codersdk/workspaceproxy.go +export interface ProxyHealthReport { + readonly errors: string[]; + readonly warnings: string[]; +} + +// From codersdk/workspaceproxy.go +export type ProxyHealthStatus = + | "ok" + | "unhealthy" + | "unreachable" + | "unregistered"; + +export const ProxyHealthStatuss: ProxyHealthStatus[] = [ + "ok", + "unhealthy", + "unreachable", + "unregistered", +]; + +// From codersdk/workspaces.go +export interface PutExtendWorkspaceRequest { + readonly deadline: string; +} + +// From codersdk/oauth2.go +export interface PutOAuth2ProviderAppRequest { + readonly name: string; + readonly callback_url: string; + readonly icon: string; +} + +// From codersdk/rbacresources_gen.go +export type RBACAction = + | "application_connect" + | "assign" + | "create" + | "delete" + | "read" + | "read_personal" + | "ssh" + | "update" + | "update_personal" + | "use" + | "view_insights" + | "start" + | "stop"; + +export const RBACActions: RBACAction[] = [ + "application_connect", + "assign", + "create", + "delete", + "read", + "read_personal", + "ssh", + "update", + "update_personal", + "use", + "view_insights", + "start", + "stop", +]; + +// From codersdk/rbacresources_gen.go +export type RBACResource = + | "api_key" + | "assign_org_role" + | "assign_role" + | "audit_log" + | "crypto_key" + | "debug_info" + | "deployment_config" + | "deployment_stats" + | "file" + | "group" + | "group_member" + | "idpsync_settings" + | "license" + | "notification_message" + | "notification_preference" + | "notification_template" + | "oauth2_app" + | "oauth2_app_code_token" + | "oauth2_app_secret" + | "organization" + | "organization_member" + | "provisioner_daemon" + | "provisioner_keys" + | "replicas" + | "system" + | "tailnet_coordinator" + | "template" + | "user" + | "*" + | "workspace" + | "workspace_dormant" + | "workspace_proxy"; + +export const RBACResources: RBACResource[] = [ + "api_key", + "assign_org_role", + "assign_role", + "audit_log", + "crypto_key", + "debug_info", + "deployment_config", + "deployment_stats", + "file", + "group", + "group_member", + "idpsync_settings", + "license", + "notification_message", + "notification_preference", + "notification_template", + "oauth2_app", + "oauth2_app_code_token", + "oauth2_app_secret", + "organization", + "organization_member", + "provisioner_daemon", + "provisioner_keys", + "replicas", + "system", + "tailnet_coordinator", + "template", + "user", + "*", + "workspace", + "workspace_dormant", + "workspace_proxy", +]; + +// From codersdk/deployment.go +export interface RateLimitConfig { + readonly disable_all: boolean; + readonly api: number; +} + +// From codersdk/users.go +export interface ReducedUser extends MinimalUser { + readonly name: string; + readonly email: string; + readonly created_at: string; + readonly updated_at: string; + readonly last_seen_at: string; + readonly status: UserStatus; + readonly login_type: LoginType; + readonly theme_preference: string; +} + +// From codersdk/workspaceproxy.go +export interface Region { + readonly id: string; + readonly name: string; + readonly display_name: string; + readonly icon_url: string; + readonly healthy: boolean; + readonly path_app_url: string; + readonly wildcard_hostname: string; +} + +// From codersdk/workspaceproxy.go +export type RegionTypes = Region | WorkspaceProxy; + +// From codersdk/workspaceproxy.go +export interface RegionsResponse { + readonly regions: R[]; +} + +// From codersdk/replicas.go +export interface Replica { + readonly id: string; + readonly hostname: string; + readonly created_at: string; + readonly relay_address: string; + readonly region_id: number; + readonly error: string; + readonly database_latency: number; +} + +// From codersdk/users.go +export interface RequestOneTimePasscodeRequest { + readonly email: string; +} + +// From codersdk/workspaces.go +export interface ResolveAutostartResponse { + readonly parameter_mismatch: boolean; +} + +// From codersdk/audit.go +export type ResourceType = + | "api_key" + | "convert_login" + | "custom_role" + | "git_ssh_key" + | "group" + | "health_settings" + | "license" + | "notifications_settings" + | "oauth2_provider_app" + | "oauth2_provider_app_secret" + | "organization" + | "template" + | "template_version" + | "user" + | "workspace" + | "workspace_build" + | "workspace_proxy"; + +// From codersdk/audit.go +export const ResourceTypeNotificationTemplate = "notification_template"; + +// From codersdk/audit.go +export const ResourceTypeOrganizationMember = "organization_member"; + +export const ResourceTypes: ResourceType[] = [ + "api_key", + "convert_login", + "custom_role", + "git_ssh_key", + "group", + "health_settings", + "license", + "notifications_settings", + "oauth2_provider_app", + "oauth2_provider_app_secret", + "organization", + "template", + "template_version", + "user", + "workspace", + "workspace_build", + "workspace_proxy", +]; + +// From codersdk/client.go +export interface Response { + readonly message: string; + readonly detail?: string; + readonly validations?: ValidationError[]; +} + +// From codersdk/roles.go +export interface Role { + readonly name: string; + readonly organization_id?: string; + readonly display_name: string; + readonly site_permissions: Permission[]; + readonly organization_permissions: Permission[]; + readonly user_permissions: Permission[]; +} + +// From codersdk/rbacroles.go +export const RoleAuditor = "auditor"; + +// From codersdk/rbacroles.go +export const RoleMember = "member"; + +// From codersdk/rbacroles.go +export const RoleOrganizationAdmin = "organization-admin"; + +// From codersdk/rbacroles.go +export const RoleOrganizationAuditor = "organization-auditor"; + +// From codersdk/rbacroles.go +export const RoleOrganizationMember = "organization-member"; + +// From codersdk/rbacroles.go +export const RoleOrganizationTemplateAdmin = "organization-template-admin"; + +// From codersdk/rbacroles.go +export const RoleOrganizationUserAdmin = "organization-user-admin"; + +// From codersdk/rbacroles.go +export const RoleOwner = "owner"; + +// From codersdk/idpsync.go +export interface RoleSyncSettings { + readonly field: string; + readonly mapping: Record; +} + +// From codersdk/rbacroles.go +export const RoleTemplateAdmin = "template-admin"; + +// From codersdk/rbacroles.go +export const RoleUserAdmin = "user-admin"; + +// From codersdk/deployment.go +export interface SSHConfig { + readonly DeploymentName: string; + readonly SSHConfigOptions: string; +} + +// From codersdk/deployment.go +export interface SSHConfigResponse { + readonly hostname_prefix: string; + readonly ssh_config_options: Record; +} + +// From serpent/serpent.go +export type SerpentAnnotations = Record; + +// From serpent/serpent.go +export interface SerpentGroup { + readonly parent?: SerpentGroup | null; + readonly name?: string; + readonly yaml?: string; + readonly description?: string; +} + +// From serpent/option.go +export interface SerpentOption { + readonly name?: string; + readonly description?: string; + readonly required?: boolean; + readonly flag?: string; + readonly flag_shorthand?: string; + readonly env?: string; + readonly yaml?: string; + readonly default?: string; + // interface type, falling back to unknown + // this is likely an enum in an external package "github.com/spf13/pflag.Value" + readonly value?: unknown; + readonly annotations?: SerpentAnnotations; + readonly group?: SerpentGroup | null; + readonly use_instead?: SerpentOption[]; + readonly hidden?: boolean; + readonly value_source?: SerpentValueSource; +} + +// From serpent/option.go +export type SerpentOptionSet = SerpentOption[]; + +// From serpent/values.go +// biome-ignore lint lint/complexity/noUselessTypeConstraint: golang does 'any' for generics, typescript does not like it +export interface SerpentStruct { + readonly Value: SerpentT; +} + +// From serpent/option.go +export type SerpentValueSource = string; + +// From codersdk/serversentevents.go +export interface ServerSentEvent { + readonly type: ServerSentEventType; + // empty interface{} type, falling back to unknown + readonly data: unknown; +} + +// From codersdk/serversentevents.go +export type ServerSentEventType = "data" | "error" | "ping"; + +export const ServerSentEventTypes: ServerSentEventType[] = [ + "data", + "error", + "ping", +]; + +// From codersdk/deployment.go +export interface ServiceBannerConfig { + readonly enabled: boolean; + readonly message?: string; + readonly background_color?: string; +} + +// From codersdk/deployment.go +export interface SessionCountDeploymentStats { + readonly vscode: number; + readonly ssh: number; + readonly jetbrains: number; + readonly reconnecting_pty: number; +} + +// From codersdk/deployment.go +export interface SessionLifetime { + readonly disable_expiry_refresh?: boolean; + readonly default_duration: number; + readonly default_token_lifetime?: number; + readonly max_token_lifetime?: number; +} + +// From codersdk/client.go +export const SessionTokenCookie = "coder_session_token"; + +// From codersdk/client.go +export const SessionTokenHeader = "Coder-Session-Token"; + +// From codersdk/client.go +export const SignedAppTokenCookie = "coder_signed_app_token"; + +// From codersdk/client.go +export const SignedAppTokenQueryParameter = "coder_signed_app_token_23db1dde"; + +// From codersdk/roles.go +export interface SlimRole { + readonly name: string; + readonly display_name: string; + readonly organization_id?: string; +} + +// From codersdk/client.go +export const SubdomainAppSessionTokenCookie = + "coder_subdomain_app_session_token"; + +// From codersdk/deployment.go +export interface SupportConfig { + readonly links: SerpentStruct; +} + +// From codersdk/deployment.go +export interface SwaggerConfig { + readonly enable: boolean; +} + +// From codersdk/deployment.go +export interface TLSConfig { + readonly enable: boolean; + readonly address: string; + readonly redirect_http: boolean; + readonly cert_file: string; + readonly client_auth: string; + readonly client_ca_file: string; + readonly key_file: string; + readonly min_version: string; + readonly client_cert_file: string; + readonly client_key_file: string; + readonly supported_ciphers: string; + readonly allow_insecure_ciphers: boolean; +} + +// From codersdk/deployment.go +export interface TelemetryConfig { + readonly enable: boolean; + readonly trace: boolean; + readonly url: string; +} + +// From codersdk/templates.go +export interface Template { + readonly id: string; + readonly created_at: string; + readonly updated_at: string; + readonly organization_id: string; + readonly organization_name: string; + readonly organization_display_name: string; + readonly organization_icon: string; + readonly name: string; + readonly display_name: string; + readonly provisioner: ProvisionerType; + readonly active_version_id: string; + readonly active_user_count: number; + readonly build_time_stats: TemplateBuildTimeStats; + readonly description: string; + readonly deprecated: boolean; + readonly deprecation_message: string; + readonly icon: string; + readonly default_ttl_ms: number; + readonly activity_bump_ms: number; + readonly autostop_requirement: TemplateAutostopRequirement; + readonly autostart_requirement: TemplateAutostartRequirement; + readonly created_by_id: string; + readonly created_by_name: string; + readonly allow_user_autostart: boolean; + readonly allow_user_autostop: boolean; + readonly allow_user_cancel_workspace_jobs: boolean; + readonly failure_ttl_ms: number; + readonly time_til_dormant_ms: number; + readonly time_til_dormant_autodelete_ms: number; + readonly require_active_version: boolean; + readonly max_port_share_level: WorkspaceAgentPortShareLevel; +} + +// From codersdk/templates.go +export interface TemplateACL { + readonly users: TemplateUser[]; + readonly group: TemplateGroup[]; +} + +// From codersdk/insights.go +export interface TemplateAppUsage { + readonly template_ids: string[]; + readonly type: TemplateAppsType; + readonly display_name: string; + readonly slug: string; + readonly icon: string; + readonly seconds: number; + readonly times_used: number; +} + +// From codersdk/insights.go +export type TemplateAppsType = "app" | "builtin"; + +export const TemplateAppsTypes: TemplateAppsType[] = ["app", "builtin"]; + +// From codersdk/templates.go +export interface TemplateAutostartRequirement { + readonly days_of_week: string[]; +} + +// From codersdk/templates.go +export interface TemplateAutostopRequirement { + readonly days_of_week: string[]; + readonly weeks: number; +} + +// From codersdk/templates.go +export type TemplateBuildTimeStats = Record< + WorkspaceTransition, + TransitionStats +>; + +// From codersdk/insights.go +export const TemplateBuiltinAppDisplayNameJetBrains = "JetBrains"; + +// From codersdk/insights.go +export const TemplateBuiltinAppDisplayNameSFTP = "SFTP"; + +// From codersdk/insights.go +export const TemplateBuiltinAppDisplayNameSSH = "SSH"; + +// From codersdk/insights.go +export const TemplateBuiltinAppDisplayNameVSCode = "Visual Studio Code"; + +// From codersdk/insights.go +export const TemplateBuiltinAppDisplayNameWebTerminal = "Web Terminal"; + +// From codersdk/templates.go +export interface TemplateExample { + readonly id: string; + readonly url: string; + readonly name: string; + readonly description: string; + readonly icon: string; + readonly tags: string[]; + readonly markdown: string; +} + +// From codersdk/organizations.go +export interface TemplateFilter { + readonly q?: string; +} + +// From codersdk/templates.go +export interface TemplateGroup extends Group { + readonly role: TemplateRole; +} + +// From codersdk/insights.go +export interface TemplateInsightsIntervalReport { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: string[]; + readonly interval: InsightsReportInterval; + readonly active_users: number; +} + +// From codersdk/insights.go +export interface TemplateInsightsReport { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: string[]; + readonly active_users: number; + readonly apps_usage: TemplateAppUsage[]; + readonly parameters_usage: TemplateParameterUsage[]; +} + +// From codersdk/insights.go +export interface TemplateInsightsRequest { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: string[]; + readonly interval: InsightsReportInterval; + readonly sections: TemplateInsightsSection[]; +} + +// From codersdk/insights.go +export interface TemplateInsightsResponse { + readonly report?: TemplateInsightsReport | null; + readonly interval_reports?: TemplateInsightsIntervalReport[]; +} + +// From codersdk/insights.go +export type TemplateInsightsSection = "interval_reports" | "report"; + +export const TemplateInsightsSections: TemplateInsightsSection[] = [ + "interval_reports", + "report", +]; + +// From codersdk/insights.go +export interface TemplateParameterUsage { + readonly template_ids: string[]; + readonly display_name: string; + readonly name: string; + readonly type: string; + readonly description: string; + readonly options?: TemplateVersionParameterOption[]; + readonly values: TemplateParameterValue[]; +} + +// From codersdk/insights.go +export interface TemplateParameterValue { + readonly value: string; + readonly count: number; +} + +// From codersdk/templates.go +export type TemplateRole = "admin" | "" | "use"; + +export const TemplateRoles: TemplateRole[] = ["admin", "", "use"]; + +// From codersdk/templates.go +export interface TemplateUser extends User { + readonly role: TemplateRole; +} + +// From codersdk/templateversions.go +export interface TemplateVersion { + readonly id: string; + readonly template_id?: string | null; + readonly organization_id?: string; + readonly created_at: string; + readonly updated_at: string; + readonly name: string; + readonly message: string; + readonly job: ProvisionerJob; + readonly readme: string; + readonly created_by: MinimalUser; + readonly archived: boolean; + readonly warnings?: TemplateVersionWarning[]; + readonly matched_provisioners?: MatchedProvisioners | null; +} + +// From codersdk/templateversions.go +export interface TemplateVersionExternalAuth { + readonly id: string; + readonly type: string; + readonly display_name: string; + readonly display_icon: string; + readonly authenticate_url: string; + readonly authenticated: boolean; + readonly optional?: boolean; +} + +// From codersdk/templateversions.go +export interface TemplateVersionParameter { + readonly name: string; + readonly display_name?: string; + readonly description: string; + readonly description_plaintext: string; + readonly type: string; + readonly mutable: boolean; + readonly default_value: string; + readonly icon: string; + readonly options: TemplateVersionParameterOption[]; + readonly validation_error?: string; + readonly validation_regex?: string; + readonly validation_min?: number | null; + readonly validation_max?: number | null; + readonly validation_monotonic?: ValidationMonotonicOrder; + readonly required: boolean; + readonly ephemeral: boolean; +} + +// From codersdk/templateversions.go +export interface TemplateVersionParameterOption { + readonly name: string; + readonly description: string; + readonly value: string; + readonly icon: string; +} + +// From codersdk/templateversions.go +export interface TemplateVersionVariable { + readonly name: string; + readonly description: string; + readonly type: string; + readonly value: string; + readonly default_value: string; + readonly required: boolean; + readonly sensitive: boolean; +} + +// From codersdk/templateversions.go +export type TemplateVersionWarning = "UNSUPPORTED_WORKSPACES"; + +export const TemplateVersionWarnings: TemplateVersionWarning[] = [ + "UNSUPPORTED_WORKSPACES", +]; + +// From codersdk/templates.go +export interface TemplateVersionsByTemplateRequest extends Pagination { + readonly template_id: string; + readonly include_archived: boolean; +} + +// From codersdk/workspacebuilds.go +export type TimingStage = + | "apply" + | "connect" + | "cron" + | "graph" + | "init" + | "plan" + | "start" + | "stop"; + +export const TimingStages: TimingStage[] = [ + "apply", + "connect", + "cron", + "graph", + "init", + "plan", + "start", + "stop", +]; + +// From codersdk/apikey.go +export interface TokenConfig { + readonly max_token_lifetime: number; +} + +// From codersdk/apikey.go +export interface TokensFilter { + readonly include_all: boolean; +} + +// From codersdk/deployment.go +export interface TraceConfig { + readonly enable: boolean; + readonly honeycomb_api_key: string; + readonly capture_logs: boolean; + readonly data_dog: boolean; +} + +// From codersdk/templates.go +export interface TransitionStats { + readonly P50: number | null; + readonly P95: number | null; +} + +// From codersdk/templates.go +export interface UpdateActiveTemplateVersion { + readonly id: string; +} + +// From codersdk/deployment.go +export interface UpdateAppearanceConfig { + readonly application_name: string; + readonly logo_url: string; + readonly service_banner: BannerConfig; + readonly announcement_banners: BannerConfig[]; +} + +// From codersdk/updatecheck.go +export interface UpdateCheckResponse { + readonly current: boolean; + readonly version: string; + readonly url: string; +} + +// From codersdk/notifications.go +export interface UpdateNotificationTemplateMethod { + readonly method?: string; +} + +// From codersdk/organizations.go +export interface UpdateOrganizationRequest { + readonly name?: string; + readonly display_name?: string; + readonly description?: string | null; + readonly icon?: string | null; +} + +// From codersdk/users.go +export interface UpdateRoles { + readonly roles: string[]; +} + +// From codersdk/templates.go +export interface UpdateTemplateACL { + readonly user_perms?: Record; + readonly group_perms?: Record; +} + +// From codersdk/templates.go +export interface UpdateTemplateMeta { + readonly name?: string; + readonly display_name?: string; + readonly description?: string; + readonly icon?: string; + readonly default_ttl_ms?: number; + readonly activity_bump_ms?: number; + readonly autostop_requirement?: TemplateAutostopRequirement | null; + readonly autostart_requirement?: TemplateAutostartRequirement | null; + readonly allow_user_autostart?: boolean; + readonly allow_user_autostop?: boolean; + readonly allow_user_cancel_workspace_jobs?: boolean; + readonly failure_ttl_ms?: number; + readonly time_til_dormant_ms?: number; + readonly time_til_dormant_autodelete_ms?: number; + readonly update_workspace_last_used_at: boolean; + readonly update_workspace_dormant_at: boolean; + readonly require_active_version?: boolean; + readonly deprecation_message: string | null; + readonly disable_everyone_group_access: boolean; + readonly max_port_share_level: WorkspaceAgentPortShareLevel | null; +} + +// From codersdk/users.go +export interface UpdateUserAppearanceSettingsRequest { + readonly theme_preference: string; +} + +// From codersdk/notifications.go +export interface UpdateUserNotificationPreferences { + readonly template_disabled_map: Record; +} + +// From codersdk/users.go +export interface UpdateUserPasswordRequest { + readonly old_password: string; + readonly password: string; +} + +// From codersdk/users.go +export interface UpdateUserProfileRequest { + readonly username: string; + readonly name: string; +} + +// From codersdk/users.go +export interface UpdateUserQuietHoursScheduleRequest { + readonly schedule: string; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceAutomaticUpdatesRequest { + readonly automatic_updates: AutomaticUpdates; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceAutostartRequest { + readonly schedule: string | null; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceDormancy { + readonly dormant: boolean; +} + +// From codersdk/workspaceproxy.go +export interface UpdateWorkspaceProxyResponse { + readonly proxy: WorkspaceProxy; + readonly proxy_token: string; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceRequest { + readonly name?: string; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceTTLRequest { + readonly ttl_ms: number | null; +} + +// From codersdk/files.go +export interface UploadResponse { + readonly hash: string; +} + +// From codersdk/workspaceagentportshare.go +export interface UpsertWorkspaceAgentPortShareRequest { + readonly agent_name: string; + readonly port: number; + readonly share_level: WorkspaceAgentPortShareLevel; + readonly protocol: WorkspaceAgentPortShareProtocol; +} + +// From codersdk/workspaces.go +export type UsageAppName = "jetbrains" | "reconnecting-pty" | "ssh" | "vscode"; + +export const UsageAppNames: UsageAppName[] = [ + "jetbrains", + "reconnecting-pty", + "ssh", + "vscode", +]; + +// From codersdk/users.go +export interface User extends ReducedUser { + readonly organization_ids: string[]; + readonly roles: SlimRole[]; +} + +// From codersdk/insights.go +export interface UserActivity { + readonly template_ids: string[]; + readonly user_id: string; + readonly username: string; + readonly avatar_url: string; + readonly seconds: number; +} + +// From codersdk/insights.go +export interface UserActivityInsightsReport { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: string[]; + readonly users: UserActivity[]; +} + +// From codersdk/insights.go +export interface UserActivityInsightsRequest { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: string[]; +} + +// From codersdk/insights.go +export interface UserActivityInsightsResponse { + readonly report: UserActivityInsightsReport; +} + +// From codersdk/insights.go +export interface UserLatency { + readonly template_ids: string[]; + readonly user_id: string; + readonly username: string; + readonly avatar_url: string; + readonly latency_ms: ConnectionLatency; +} + +// From codersdk/insights.go +export interface UserLatencyInsightsReport { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: string[]; + readonly users: UserLatency[]; +} + +// From codersdk/insights.go +export interface UserLatencyInsightsRequest { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: string[]; +} + +// From codersdk/insights.go +export interface UserLatencyInsightsResponse { + readonly report: UserLatencyInsightsReport; +} + +// From codersdk/users.go +export interface UserLoginType { + readonly login_type: LoginType; +} + +// From codersdk/users.go +export interface UserParameter { + readonly name: string; + readonly value: string; +} + +// From codersdk/deployment.go +export interface UserQuietHoursScheduleConfig { + readonly default_schedule: string; + readonly allow_user_custom: boolean; +} + +// From codersdk/users.go +export interface UserQuietHoursScheduleResponse { + readonly raw_schedule: string; + readonly user_set: boolean; + readonly user_can_set: boolean; + readonly time: string; + readonly timezone: string; + readonly next: string; +} + +// From codersdk/users.go +export interface UserRoles { + readonly roles: string[]; + readonly organization_roles: Record; +} + +// From codersdk/users.go +export type UserStatus = "active" | "dormant" | "suspended"; + +export const UserStatuss: UserStatus[] = ["active", "dormant", "suspended"]; + +// From codersdk/users.go +export interface UsersRequest extends Pagination { + readonly q?: string; +} + +// From codersdk/users.go +export interface ValidateUserPasswordRequest { + readonly password: string; +} + +// From codersdk/users.go +export interface ValidateUserPasswordResponse { + readonly valid: boolean; + readonly details: string; +} + +// From codersdk/client.go +export interface ValidationError { + readonly field: string; + readonly detail: string; +} + +// From codersdk/templateversions.go +export type ValidationMonotonicOrder = "decreasing" | "increasing"; + +export const ValidationMonotonicOrders: ValidationMonotonicOrder[] = [ + "decreasing", + "increasing", +]; + +// From codersdk/organizations.go +export interface VariableValue { + readonly name: string; + readonly value: string; +} + +// From codersdk/workspaces.go +export interface Workspace { + readonly id: string; + readonly created_at: string; + readonly updated_at: string; + readonly owner_id: string; + readonly owner_name: string; + readonly owner_avatar_url: string; + readonly organization_id: string; + readonly organization_name: string; + readonly template_id: string; + readonly template_name: string; + readonly template_display_name: string; + readonly template_icon: string; + readonly template_allow_user_cancel_workspace_jobs: boolean; + readonly template_active_version_id: string; + readonly template_require_active_version: boolean; + readonly latest_build: WorkspaceBuild; + readonly outdated: boolean; + readonly name: string; + readonly autostart_schedule?: string | null; + readonly ttl_ms?: number | null; + readonly last_used_at: string; + readonly deleting_at: string | null; + readonly dormant_at: string | null; + readonly health: WorkspaceHealth; + readonly automatic_updates: AutomaticUpdates; + readonly allow_renames: boolean; + readonly favorite: boolean; + readonly next_start_at: string | null; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgent { + readonly id: string; + readonly created_at: string; + readonly updated_at: string; + readonly first_connected_at?: string | null; + readonly last_connected_at?: string | null; + readonly disconnected_at?: string | null; + readonly started_at?: string | null; + readonly ready_at?: string | null; + readonly status: WorkspaceAgentStatus; + readonly lifecycle_state: WorkspaceAgentLifecycle; + readonly name: string; + readonly resource_id: string; + readonly instance_id?: string; + readonly architecture: string; + readonly environment_variables: Record; + readonly operating_system: string; + readonly logs_length: number; + readonly logs_overflowed: boolean; + readonly directory?: string; + readonly expanded_directory?: string; + readonly version: string; + readonly api_version: string; + readonly apps: WorkspaceApp[]; + readonly latency?: Record; + readonly connection_timeout_seconds: number; + readonly troubleshooting_url: string; + readonly subsystems: AgentSubsystem[]; + readonly health: WorkspaceAgentHealth; + readonly display_apps: DisplayApp[]; + readonly log_sources: WorkspaceAgentLogSource[]; + readonly scripts: WorkspaceAgentScript[]; + readonly startup_script_behavior: WorkspaceAgentStartupScriptBehavior; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentHealth { + readonly healthy: boolean; + readonly reason?: string; +} + +// From codersdk/workspaceagents.go +export type WorkspaceAgentLifecycle = + | "created" + | "off" + | "ready" + | "shutdown_error" + | "shutdown_timeout" + | "shutting_down" + | "start_error" + | "start_timeout" + | "starting"; + +export const WorkspaceAgentLifecycles: WorkspaceAgentLifecycle[] = [ + "created", + "off", + "ready", + "shutdown_error", + "shutdown_timeout", + "shutting_down", + "start_error", + "start_timeout", + "starting", +]; + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentListeningPort { + readonly process_name: string; + readonly network: string; + readonly port: number; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentListeningPortsResponse { + readonly ports: WorkspaceAgentListeningPort[]; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentLog { + readonly id: number; + readonly created_at: string; + readonly output: string; + readonly level: LogLevel; + readonly source_id: string; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentLogSource { + readonly workspace_agent_id: string; + readonly id: string; + readonly created_at: string; + readonly display_name: string; + readonly icon: string; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentMetadata { + readonly result: WorkspaceAgentMetadataResult; + readonly description: WorkspaceAgentMetadataDescription; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentMetadataDescription { + readonly display_name: string; + readonly key: string; + readonly script: string; + readonly interval: number; + readonly timeout: number; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentMetadataResult { + readonly collected_at: string; + readonly age: number; + readonly value: string; + readonly error: string; +} + +// From codersdk/workspaceagentportshare.go +export interface WorkspaceAgentPortShare { + readonly workspace_id: string; + readonly agent_name: string; + readonly port: number; + readonly share_level: WorkspaceAgentPortShareLevel; + readonly protocol: WorkspaceAgentPortShareProtocol; +} + +// From codersdk/workspaceagentportshare.go +export type WorkspaceAgentPortShareLevel = "authenticated" | "owner" | "public"; + +export const WorkspaceAgentPortShareLevels: WorkspaceAgentPortShareLevel[] = [ + "authenticated", + "owner", + "public", +]; + +// From codersdk/workspaceagentportshare.go +export type WorkspaceAgentPortShareProtocol = "http" | "https"; + +export const WorkspaceAgentPortShareProtocols: WorkspaceAgentPortShareProtocol[] = + ["http", "https"]; + +// From codersdk/workspaceagentportshare.go +export interface WorkspaceAgentPortShares { + readonly shares: WorkspaceAgentPortShare[]; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentScript { + readonly id: string; + readonly log_source_id: string; + readonly log_path: string; + readonly script: string; + readonly cron: string; + readonly run_on_start: boolean; + readonly run_on_stop: boolean; + readonly start_blocks_login: boolean; + readonly timeout: number; + readonly display_name: string; +} + +// From codersdk/workspaceagents.go +export type WorkspaceAgentStartupScriptBehavior = "blocking" | "non-blocking"; + +export const WorkspaceAgentStartupScriptBehaviors: WorkspaceAgentStartupScriptBehavior[] = + ["blocking", "non-blocking"]; + +// From codersdk/workspaceagents.go +export type WorkspaceAgentStatus = + | "connected" + | "connecting" + | "disconnected" + | "timeout"; + +export const WorkspaceAgentStatuss: WorkspaceAgentStatus[] = [ + "connected", + "connecting", + "disconnected", + "timeout", +]; + +// From codersdk/workspaceapps.go +export interface WorkspaceApp { + readonly id: string; + readonly url: string; + readonly external: boolean; + readonly slug: string; + readonly display_name: string; + readonly command?: string; + readonly icon?: string; + readonly subdomain: boolean; + readonly subdomain_name?: string; + readonly sharing_level: WorkspaceAppSharingLevel; + readonly healthcheck: Healthcheck; + readonly health: WorkspaceAppHealth; + readonly hidden: boolean; +} + +// From codersdk/workspaceapps.go +export type WorkspaceAppHealth = + | "disabled" + | "healthy" + | "initializing" + | "unhealthy"; + +export const WorkspaceAppHealths: WorkspaceAppHealth[] = [ + "disabled", + "healthy", + "initializing", + "unhealthy", +]; + +// From codersdk/workspaceapps.go +export type WorkspaceAppSharingLevel = "authenticated" | "owner" | "public"; + +export const WorkspaceAppSharingLevels: WorkspaceAppSharingLevel[] = [ + "authenticated", + "owner", + "public", +]; + +// From codersdk/workspacebuilds.go +export interface WorkspaceBuild { + readonly id: string; + readonly created_at: string; + readonly updated_at: string; + readonly workspace_id: string; + readonly workspace_name: string; + readonly workspace_owner_id: string; + readonly workspace_owner_name: string; + readonly workspace_owner_avatar_url: string; + readonly template_version_id: string; + readonly template_version_name: string; + readonly build_number: number; + readonly transition: WorkspaceTransition; + readonly initiator_id: string; + readonly initiator_name: string; + readonly job: ProvisionerJob; + readonly reason: BuildReason; + readonly resources: WorkspaceResource[]; + readonly deadline?: string; + readonly max_deadline?: string; + readonly status: WorkspaceStatus; + readonly daily_cost: number; + readonly matched_provisioners?: MatchedProvisioners | null; +} + +// From codersdk/workspacebuilds.go +export interface WorkspaceBuildParameter { + readonly name: string; + readonly value: string; +} + +// From codersdk/workspacebuilds.go +export interface WorkspaceBuildTimings { + readonly provisioner_timings: ProvisionerTiming[]; + readonly agent_script_timings: AgentScriptTiming[]; + readonly agent_connection_timings: AgentConnectionTiming[]; +} + +// From codersdk/workspaces.go +export interface WorkspaceBuildsRequest extends Pagination { + readonly since?: string; +} + +// From codersdk/deployment.go +export interface WorkspaceConnectionLatencyMS { + readonly P50: number; + readonly P95: number; +} + +// From codersdk/deployment.go +export interface WorkspaceDeploymentStats { + readonly pending: number; + readonly building: number; + readonly running: number; + readonly failed: number; + readonly stopped: number; + readonly connection_latency_ms: WorkspaceConnectionLatencyMS; + readonly rx_bytes: number; + readonly tx_bytes: number; +} + +// From codersdk/workspaces.go +export interface WorkspaceFilter { + readonly q?: string; +} + +// From codersdk/workspaces.go +export interface WorkspaceHealth { + readonly healthy: boolean; + readonly failing_agents: string[]; +} + +// From codersdk/workspaces.go +export interface WorkspaceOptions { + readonly include_deleted?: boolean; +} + +// From codersdk/workspaceproxy.go +export interface WorkspaceProxy extends Region { + readonly derp_enabled: boolean; + readonly derp_only: boolean; + readonly status?: WorkspaceProxyStatus; + readonly created_at: string; + readonly updated_at: string; + readonly deleted: boolean; + readonly version: string; +} + +// From codersdk/deployment.go +export interface WorkspaceProxyBuildInfo { + readonly workspace_proxy: boolean; + readonly dashboard_url: string; +} + +// From codersdk/workspaceproxy.go +export interface WorkspaceProxyStatus { + readonly status: ProxyHealthStatus; + readonly report?: ProxyHealthReport; + readonly checked_at: string; +} + +// From codersdk/workspaces.go +export interface WorkspaceQuota { + readonly credits_consumed: number; + readonly budget: number; +} + +// From codersdk/workspacebuilds.go +export interface WorkspaceResource { + readonly id: string; + readonly created_at: string; + readonly job_id: string; + readonly workspace_transition: WorkspaceTransition; + readonly type: string; + readonly name: string; + readonly hide: boolean; + readonly icon: string; + readonly agents?: WorkspaceAgent[]; + readonly metadata?: WorkspaceResourceMetadata[]; + readonly daily_cost: number; +} + +// From codersdk/workspacebuilds.go +export interface WorkspaceResourceMetadata { + readonly key: string; + readonly value: string; + readonly sensitive: boolean; +} + +// From codersdk/workspacebuilds.go +export type WorkspaceStatus = + | "canceled" + | "canceling" + | "deleted" + | "deleting" + | "failed" + | "pending" + | "running" + | "starting" + | "stopped" + | "stopping"; + +export const WorkspaceStatuss: WorkspaceStatus[] = [ + "canceled", + "canceling", + "deleted", + "deleting", + "failed", + "pending", + "running", + "starting", + "stopped", + "stopping", +]; + +// From codersdk/workspacebuilds.go +export type WorkspaceTransition = "delete" | "start" | "stop"; + +export const WorkspaceTransitions: WorkspaceTransition[] = [ + "delete", + "start", + "stop", +]; + +// From codersdk/workspaces.go +export interface WorkspacesRequest extends Pagination { + readonly q?: string; +} + +// From codersdk/workspaces.go +export interface WorkspacesResponse { + readonly workspaces: Workspace[]; + readonly count: number; +} + +// From codersdk/deployment.go +export const annotationEnterpriseKey = "enterprise"; + +// From codersdk/deployment.go +export const annotationExternalProxies = "external_workspace_proxies"; + +// From codersdk/deployment.go +export const annotationFormatDuration = "format_duration"; + +// From codersdk/deployment.go +export const annotationSecretKey = "secret"; + +// From codersdk/insights.go +export const insightsTimeLayout = "2006-01-02T15:04:05Z07:00"; + +// From codersdk/workspacedisplaystatus.go +export const unknownStatus = "Unknown"; From e46ba70cd7b3a7a18397f8f6177b8e9b8ac113e7 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 14:39:18 -0600 Subject: [PATCH 09/20] update readonly values --- scripts/apitypings/main.go | 58 + scripts/apitypings/main_test.go | 5 +- scripts/apitypings/testdata/enums/enums.ts | 2 +- .../testdata/genericmap/genericmap.ts | 4 +- .../apitypings/testdata/generics/generics.ts | 5 +- .../testdata/genericslice/genericslice.ts | 7 +- .../testdata/overrides/overrides.ts | 2 +- scripts/apitypings/typesgenerated.ts | 2505 +++++++++++++++++ site/src/api/typesGenerated.ts | 323 ++- 9 files changed, 2809 insertions(+), 102 deletions(-) diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index ed2f934e078d2..c0481df521683 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -5,6 +5,8 @@ import ( "log" "github.com/coder/guts" + "github.com/coder/guts/bindings" + "github.com/coder/guts/bindings/walk" "github.com/coder/guts/config" // Must import the packages we are trying to convert @@ -24,6 +26,7 @@ func main() { generateDirectories := map[string]string{ "github.com/coder/coder/v2/codersdk": "", "github.com/coder/coder/v2/coderd/healthcheck/health": "Health", + "github.com/coder/coder/v2/codersdk/healthsdk": "", } for dir, prefix := range generateDirectories { err = gen.IncludeGenerateWithPrefix(dir, prefix) @@ -63,6 +66,7 @@ func main() { func TsMutations(ts *guts.Typescript) { ts.ApplyMutations( + FixSerpentStruct, // Enum list generator config.EnumLists, // Export all top level types @@ -99,3 +103,57 @@ func TypeMappings(gen *guts.GoParser) error { return nil } + +// FixSerpentStruct fixes 'serpent.Struct', which defers to the underlying type. +func FixSerpentStruct(gen *guts.Typescript) { + gen.ForEach(func(key string, originalNode bindings.Node) { + // replace it with + // export type SerpentStruct = T + isInterface, ok := originalNode.(*bindings.Interface) + if ok && isInterface.Name.Ref() == "SerpentStruct" { + // TODO: Add a method to add comments here + gen.ReplaceNode("SerpentStruct", &bindings.Alias{ + Name: isInterface.Name, + Modifiers: nil, + Type: bindings.Reference(bindings.Identifier{ + Name: "T", + Package: isInterface.Name.Package, + Prefix: "", + }), + Parameters: []*bindings.TypeParameter{ + { + Name: bindings.Identifier{ + Name: "T", + Package: isInterface.Name.Package, + Prefix: "", + }, + Modifiers: nil, + Type: ptr(bindings.KeywordAny), + DefaultType: nil, + }, + }, + Source: isInterface.Source, + }) + } + }) +} + +type serpentStructVisitor struct { +} + +func (s *serpentStructVisitor) Visit(originalNode bindings.Node) walk.Visitor { + switch node := originalNode.(type) { + case *bindings.ReferenceType: + if node.Name.Name == "Struct" && node.Name.PkgName() == "github.com/coder/serpent" { + // We always expect an argument + arg := node.Arguments[0] + *node = *arg.(*bindings.ReferenceType) + //originalNode = node.Arguments[0] + } + } + return s +} + +func ptr[T any](v T) *T { + return &v +} diff --git a/scripts/apitypings/main_test.go b/scripts/apitypings/main_test.go index 471da6fc37b37..1d1855ec99243 100644 --- a/scripts/apitypings/main_test.go +++ b/scripts/apitypings/main_test.go @@ -14,8 +14,9 @@ import ( "strings" "testing" - "github.com/coder/guts" "github.com/stretchr/testify/require" + + "github.com/coder/guts" ) // updateGoldenFiles is a flag that can be set to update golden files. @@ -40,7 +41,7 @@ func TestGeneration(t *testing.T) { if err != nil { log.Fatalf("new convert: %v", err) } - err = gen.Include("./"+dir, true) + err = gen.IncludeGenerate("./" + dir) require.NoError(t, err) err = TypeMappings(gen) diff --git a/scripts/apitypings/testdata/enums/enums.ts b/scripts/apitypings/testdata/enums/enums.ts index 1cc4d05040a18..f996cb210196c 100644 --- a/scripts/apitypings/testdata/enums/enums.ts +++ b/scripts/apitypings/testdata/enums/enums.ts @@ -1,4 +1,4 @@ -// Code generated by 'gots'. DO NOT EDIT. +// Code generated by 'guts'. DO NOT EDIT. // From codersdk/enums.go export type Enum = "bar" | "baz" | "foo" | "qux"; diff --git a/scripts/apitypings/testdata/genericmap/genericmap.ts b/scripts/apitypings/testdata/genericmap/genericmap.ts index b337f6ad88395..fcd89ed877429 100644 --- a/scripts/apitypings/testdata/genericmap/genericmap.ts +++ b/scripts/apitypings/testdata/genericmap/genericmap.ts @@ -1,4 +1,4 @@ -// Code generated by 'gots'. DO NOT EDIT. +// Code generated by 'guts'. DO NOT EDIT. // From codersdk/genericmap.go export interface Buzz { @@ -16,5 +16,5 @@ export interface Foo { // From codersdk/genericmap.go export interface FooBuzz { - readonly something: R[]; + readonly something: readonly R[]; } diff --git a/scripts/apitypings/testdata/generics/generics.ts b/scripts/apitypings/testdata/generics/generics.ts index 7867168e1a4b8..a4d8c0676d595 100644 --- a/scripts/apitypings/testdata/generics/generics.ts +++ b/scripts/apitypings/testdata/generics/generics.ts @@ -1,4 +1,4 @@ -// Code generated by 'gots'. DO NOT EDIT. +// Code generated by 'guts'. DO NOT EDIT. export type Comparable = string | number | boolean; @@ -15,12 +15,14 @@ export interface Complex { readonly dynamic: Fields; readonly comparable: boolean; } // From codersdk/generics.go +// biome-ignore lint lint/complexity/noUselessTypeConstraint: golang does 'any' for generics, typescript does not like it export interface Fields { readonly comparable: C; readonly any: A; @@ -30,6 +32,7 @@ export interface Fields { readonly Fields: Fields; } diff --git a/scripts/apitypings/testdata/genericslice/genericslice.ts b/scripts/apitypings/testdata/genericslice/genericslice.ts index 0eff66af29299..f01872f225856 100644 --- a/scripts/apitypings/testdata/genericslice/genericslice.ts +++ b/scripts/apitypings/testdata/genericslice/genericslice.ts @@ -1,4 +1,4 @@ -// Code generated by 'gots'. DO NOT EDIT. +// Code generated by 'guts'. DO NOT EDIT. // From codersdk/genericslice.go export interface Bar { @@ -6,7 +6,8 @@ export interface Bar { } // From codersdk/genericslice.go +// biome-ignore lint lint/complexity/noUselessTypeConstraint: golang does 'any' for generics, typescript does not like it export interface Foo { - readonly Slice: R[]; - readonly TwoD: R[][]; + readonly Slice: readonly R[]; + readonly TwoD: readonly R[][]; } diff --git a/scripts/apitypings/testdata/overrides/overrides.ts b/scripts/apitypings/testdata/overrides/overrides.ts index e017e5fbb7d9b..9f22b602e8443 100644 --- a/scripts/apitypings/testdata/overrides/overrides.ts +++ b/scripts/apitypings/testdata/overrides/overrides.ts @@ -1,4 +1,4 @@ -// Code generated by 'gots'. DO NOT EDIT. +// Code generated by 'guts'. DO NOT EDIT. // From overrides/overrides.go export interface Overrides { diff --git a/scripts/apitypings/typesgenerated.ts b/scripts/apitypings/typesgenerated.ts index e69de29bb2d1d..8c68b5db76bd5 100644 --- a/scripts/apitypings/typesgenerated.ts +++ b/scripts/apitypings/typesgenerated.ts @@ -0,0 +1,2505 @@ +// Code generated by 'make site/src/api/typesGenerated.ts'. DO NOT EDIT. + +// The code below is generated from codersdk. + +// From codersdk/templates.go +export interface ACLAvailable { + readonly users: Readonly>; + readonly groups: Readonly>; +} + +// From codersdk/apikey.go +export interface APIKey { + readonly id: string; + readonly user_id: string; + readonly last_used: string; + readonly expires_at: string; + readonly created_at: string; + readonly updated_at: string; + readonly login_type: LoginType; + readonly scope: APIKeyScope; + readonly token_name: string; + readonly lifetime_seconds: number; +} + +// From codersdk/apikey.go +export interface APIKeyWithOwner extends APIKey { + readonly username: string; +} + +// From codersdk/licenses.go +export interface AddLicenseRequest { + readonly license: string; +} + +// From codersdk/workspacebuilds.go +export interface AgentConnectionTiming { + readonly started_at: string; + readonly ended_at: string; + readonly stage: TimingStage; + readonly workspace_agent_id: string; + readonly workspace_agent_name: string; +} + +// From codersdk/workspacebuilds.go +export interface AgentScriptTiming { + readonly started_at: string; + readonly ended_at: string; + readonly exit_code: number; + readonly stage: TimingStage; + readonly status: string; + readonly display_name: string; + readonly workspace_agent_id: string; + readonly workspace_agent_name: string; +} + +// From codersdk/templates.go +export interface AgentStatsReportResponse { + readonly num_comms: number; + readonly rx_bytes: number; + readonly tx_bytes: number; +} + +// From codersdk/deployment.go +export interface AppHostResponse { + readonly host: string; +} + +// From codersdk/deployment.go +export interface AppearanceConfig { + readonly application_name: string; + readonly logo_url: string; + readonly docs_url: string; + readonly service_banner: BannerConfig; + readonly announcement_banners: Readonly>; + readonly support_links?: Readonly>; +} + +// From codersdk/templates.go +export interface ArchiveTemplateVersionsRequest { + readonly all: boolean; +} + +// From codersdk/templates.go +export interface ArchiveTemplateVersionsResponse { + readonly template_id: string; + readonly archived_ids: Readonly>; +} + +// From codersdk/roles.go +export interface AssignableRoles extends Role { + readonly assignable: boolean; + readonly built_in: boolean; +} + +// From codersdk/audit.go +export type AuditDiff = Record + +// From codersdk/audit.go +export interface AuditDiffField { + // empty interface{} type, falling back to unknown + readonly old?: unknown; + // empty interface{} type, falling back to unknown + readonly new?: unknown; + readonly secret: boolean; +} + +// From codersdk/audit.go +export interface AuditLog { + readonly id: string; + readonly request_id: string; + readonly time: string; + readonly ip: string; + readonly user_agent: string; + readonly resource_type: ResourceType; + readonly resource_id: string; + readonly resource_target: string; + readonly resource_icon: string; + readonly action: AuditAction; + readonly diff: AuditDiff; + readonly status_code: number; + readonly additional_fields: Record; + readonly description: string; + readonly resource_link: string; + readonly is_deleted: boolean; + readonly organization_id: string; + readonly organization?: MinimalOrganization; + readonly user?: User; +} + +// From codersdk/audit.go +export interface AuditLogResponse { + readonly audit_logs: Readonly>; + readonly count: number; +} + +// From codersdk/audit.go +export interface AuditLogsRequest extends Pagination { + readonly q?: string; +} + +// From codersdk/users.go +export interface AuthMethod { + readonly enabled: boolean; +} + +// From codersdk/users.go +export interface AuthMethods { + readonly terms_of_service_url?: string; + readonly password: AuthMethod; + readonly github: AuthMethod; + readonly oidc: OIDCAuthMethod; +} + +// From codersdk/authorization.go +export interface AuthorizationCheck { + readonly object: AuthorizationObject; + readonly action: RBACAction; +} + +// From codersdk/authorization.go +export interface AuthorizationObject { + readonly resource_type: RBACResource; + readonly owner_id?: string; + readonly organization_id?: string; + readonly resource_id?: string; + readonly any_org?: boolean; +} + +// From codersdk/authorization.go +export interface AuthorizationRequest { + readonly checks: Record; +} + +// From codersdk/authorization.go +export type AuthorizationResponse = Record + +// From codersdk/deployment.go +export interface AvailableExperiments { + readonly safe: Readonly>; +} + +// From codersdk/deployment.go +export interface BannerConfig { + readonly enabled: boolean; + readonly message?: string; + readonly background_color?: string; +} + +// From codersdk/deployment.go +export interface BuildInfoResponse { + readonly external_url: string; + readonly version: string; + readonly dashboard_url: string; + readonly telemetry: boolean; + readonly workspace_proxy: boolean; + readonly agent_api_version: string; + readonly provisioner_api_version: string; + readonly upgrade_message: string; + readonly deployment_id: string; +} + +// From codersdk/users.go +export interface ChangePasswordWithOneTimePasscodeRequest { + readonly email: string; + readonly password: string; + readonly one_time_passcode: string; +} + +// From codersdk/insights.go +export interface ConnectionLatency { + readonly p50: number; + readonly p95: number; +} + +// From codersdk/users.go +export interface ConvertLoginRequest { + readonly to_type: LoginType; + readonly password: string; +} + +// From codersdk/users.go +export interface CreateFirstUserRequest { + readonly email: string; + readonly username: string; + readonly name: string; + readonly password: string; + readonly trial: boolean; + readonly trial_info: CreateFirstUserTrialInfo; +} + +// From codersdk/users.go +export interface CreateFirstUserResponse { + readonly user_id: string; + readonly organization_id: string; +} + +// From codersdk/users.go +export interface CreateFirstUserTrialInfo { + readonly first_name: string; + readonly last_name: string; + readonly phone_number: string; + readonly job_title: string; + readonly company_name: string; + readonly country: string; + readonly developers: string; +} + +// From codersdk/groups.go +export interface CreateGroupRequest { + readonly name: string; + readonly display_name: string; + readonly avatar_url: string; + readonly quota_allowance: number; +} + +// From codersdk/organizations.go +export interface CreateOrganizationRequest { + readonly name: string; + readonly display_name?: string; + readonly description?: string; + readonly icon?: string; +} + +// From codersdk/provisionerdaemons.go +export interface CreateProvisionerKeyRequest { + readonly name: string; + readonly tags: Record; +} + +// From codersdk/provisionerdaemons.go +export interface CreateProvisionerKeyResponse { + readonly key: string; +} + +// From codersdk/organizations.go +export interface CreateTemplateRequest { + readonly name: string; + readonly display_name?: string; + readonly description?: string; + readonly icon?: string; + readonly template_version_id: string; + readonly default_ttl_ms?: number; + readonly activity_bump_ms?: number; + readonly autostop_requirement?: TemplateAutostopRequirement; + readonly autostart_requirement?: TemplateAutostartRequirement; + readonly allow_user_cancel_workspace_jobs?: boolean; + readonly allow_user_autostart?: boolean; + readonly allow_user_autostop?: boolean; + readonly failure_ttl_ms?: number; + readonly dormant_ttl_ms?: number; + readonly delete_ttl_ms?: number; + readonly disable_everyone_group_access: boolean; + readonly require_active_version: boolean; + readonly max_port_share_level?: WorkspaceAgentPortShareLevel; +} + +// From codersdk/templateversions.go +export interface CreateTemplateVersionDryRunRequest { + readonly workspace_name: string; + readonly rich_parameter_values: Readonly>; + readonly user_variable_values?: Readonly>; +} + +// From codersdk/organizations.go +export interface CreateTemplateVersionRequest { + readonly name?: string; + readonly message?: string; + readonly template_id?: string; + readonly storage_method: ProvisionerStorageMethod; + readonly file_id?: string; + readonly example_id?: string; + readonly provisioner: ProvisionerType; + readonly tags: Record; + readonly user_variable_values?: Readonly>; +} + +// From codersdk/audit.go +export interface CreateTestAuditLogRequest { + readonly action?: AuditAction; + readonly resource_type?: ResourceType; + readonly resource_id?: string; + readonly additional_fields?: Record; + readonly time?: string; + readonly build_reason?: BuildReason; + readonly organization_id?: string; +} + +// From codersdk/apikey.go +export interface CreateTokenRequest { + readonly lifetime: number; + readonly scope: APIKeyScope; + readonly token_name: string; +} + +// From codersdk/users.go +export interface CreateUserRequestWithOrgs { + readonly email: string; + readonly username: string; + readonly name: string; + readonly password: string; + readonly login_type: LoginType; + readonly user_status?: UserStatus; + readonly organization_ids: Readonly>; +} + +// From codersdk/workspaces.go +export interface CreateWorkspaceBuildRequest { + readonly template_version_id?: string; + readonly transition: WorkspaceTransition; + readonly dry_run?: boolean; + readonly state?: string; + readonly orphan?: boolean; + readonly rich_parameter_values?: Readonly>; + readonly log_level?: ProvisionerLogLevel; +} + +// From codersdk/workspaceproxy.go +export interface CreateWorkspaceProxyRequest { + readonly name: string; + readonly display_name: string; + readonly icon: string; +} + +// From codersdk/organizations.go +export interface CreateWorkspaceRequest { + readonly template_id?: string; + readonly template_version_id?: string; + readonly name: string; + readonly autostart_schedule?: string; + readonly ttl_ms?: number; + readonly rich_parameter_values?: Readonly>; + readonly automatic_updates?: AutomaticUpdates; +} + +// From codersdk/deployment.go +export interface CryptoKey { + readonly feature: CryptoKeyFeature; + readonly secret: string; + readonly deletes_at: string; + readonly sequence: number; + readonly starts_at: string; +} + +// From codersdk/roles.go +export interface CustomRoleRequest { + readonly name: string; + readonly display_name: string; + readonly site_permissions: Readonly>; + readonly organization_permissions: Readonly>; + readonly user_permissions: Readonly>; +} + +// From codersdk/deployment.go +export interface DAUEntry { + readonly date: string; + readonly amount: number; +} + +// From codersdk/deployment.go +export interface DAURequest { + readonly TZHourOffset: number; +} + +// From codersdk/deployment.go +export interface DAUsResponse { + readonly entries: Readonly>; + readonly tz_hour_offset: number; +} + +// From codersdk/deployment.go +export interface DERP { + readonly server: DERPServerConfig; + readonly config: DERPConfig; +} + +// From codersdk/deployment.go +export interface DERPConfig { + readonly block_direct: boolean; + readonly force_websockets: boolean; + readonly url: string; + readonly path: string; +} + +// From codersdk/workspaceagents.go +export interface DERPRegion { + readonly preferred: boolean; + readonly latency_ms: number; +} + +// From codersdk/deployment.go +export interface DERPServerConfig { + readonly enable: boolean; + readonly region_id: number; + readonly region_code: string; + readonly region_name: string; + readonly stun_addresses: string[]; + readonly relay_url: string; +} + +// From codersdk/deployment.go +export interface DangerousConfig { + readonly allow_path_app_sharing: boolean; + readonly allow_path_app_site_owner_access: boolean; + readonly allow_all_cors: boolean; +} + +// From codersdk/workspaceagentportshare.go +export interface DeleteWorkspaceAgentPortShareRequest { + readonly agent_name: string; + readonly port: number; +} + +// From codersdk/deployment.go +export interface DeploymentConfig { + readonly config?: DeploymentValues; + readonly options?: SerpentOptionSet; +} + +// From codersdk/deployment.go +export interface DeploymentStats { + readonly aggregated_from: string; + readonly collected_at: string; + readonly next_update_at: string; + readonly workspaces: WorkspaceDeploymentStats; + readonly session_count: SessionCountDeploymentStats; +} + +// From codersdk/deployment.go +export interface DeploymentValues { + readonly verbose?: boolean; + readonly access_url?: string; + readonly wildcard_access_url?: string; + readonly docs_url?: string; + readonly redirect_to_access_url?: boolean; + readonly http_address?: string; + readonly autobuild_poll_interval?: number; + readonly job_hang_detector_interval?: number; + readonly derp?: DERP; + readonly prometheus?: PrometheusConfig; + readonly pprof?: PprofConfig; + readonly proxy_trusted_headers?: string[]; + readonly proxy_trusted_origins?: string[]; + readonly cache_directory?: string; + readonly in_memory_database?: boolean; + readonly pg_connection_url?: string; + readonly pg_auth?: string; + readonly oauth2?: OAuth2Config; + readonly oidc?: OIDCConfig; + readonly telemetry?: TelemetryConfig; + readonly tls?: TLSConfig; + readonly trace?: TraceConfig; + readonly secure_auth_cookie?: boolean; + readonly strict_transport_security?: number; + readonly strict_transport_security_options?: string[]; + readonly ssh_keygen_algorithm?: string; + readonly metrics_cache_refresh_interval?: number; + readonly agent_stat_refresh_interval?: number; + readonly agent_fallback_troubleshooting_url?: string; + readonly browser_only?: boolean; + readonly scim_api_key?: string; + readonly external_token_encryption_keys?: string[]; + readonly provisioner?: ProvisionerConfig; + readonly rate_limit?: RateLimitConfig; + readonly experiments?: string[]; + readonly update_check?: boolean; + readonly swagger?: SwaggerConfig; + readonly logging?: LoggingConfig; + readonly dangerous?: DangerousConfig; + readonly disable_path_apps?: boolean; + readonly session_lifetime?: SessionLifetime; + readonly disable_password_auth?: boolean; + readonly support?: SupportConfig; + readonly external_auth?: Readonly>; + readonly config_ssh?: SSHConfig; + readonly wgtunnel_host?: string; + readonly disable_owner_workspace_exec?: boolean; + readonly proxy_health_status_interval?: number; + readonly enable_terraform_debug_mode?: boolean; + readonly user_quiet_hours_schedule?: UserQuietHoursScheduleConfig; + readonly web_terminal_renderer?: string; + readonly allow_workspace_renames?: boolean; + readonly healthcheck?: HealthcheckConfig; + readonly cli_upgrade_message?: string; + readonly terms_of_service_url?: string; + readonly notifications?: NotificationsConfig; + readonly additional_csp_policy?: string[]; + readonly config?: string; + readonly write_config?: boolean; + readonly address?: string; +} + +// From codersdk/deployment.go +export interface Entitlements { + readonly features: Record; + readonly warnings: Readonly>; + readonly errors: Readonly>; + readonly has_license: boolean; + readonly trial: boolean; + readonly require_telemetry: boolean; + readonly refreshed_at: string; +} + +// From codersdk/deployment.go +export type Experiments = Readonly> + +// From codersdk/externalauth.go +export interface ExternalAuth { + readonly authenticated: boolean; + readonly device: boolean; + readonly display_name: string; + readonly user?: ExternalAuthUser; + readonly app_installable: boolean; + readonly installations: Readonly>; + readonly app_install_url: string; +} + +// From codersdk/externalauth.go +export interface ExternalAuthAppInstallation { + readonly id: number; + readonly account: ExternalAuthUser; + readonly configure_url: string; +} + +// From codersdk/deployment.go +export interface ExternalAuthConfig { + readonly type: string; + readonly client_id: string; + readonly id: string; + readonly auth_url: string; + readonly token_url: string; + readonly validate_url: string; + readonly app_install_url: string; + readonly app_installations_url: string; + readonly no_refresh: boolean; + readonly scopes: Readonly>; + readonly device_flow: boolean; + readonly device_code_url: string; + readonly regex: string; + readonly display_name: string; + readonly display_icon: string; +} + +// From codersdk/externalauth.go +export interface ExternalAuthDevice { + readonly device_code: string; + readonly user_code: string; + readonly verification_uri: string; + readonly expires_in: number; + readonly interval: number; +} + +// From codersdk/externalauth.go +export interface ExternalAuthDeviceExchange { + readonly device_code: string; +} + +// From codersdk/externalauth.go +export interface ExternalAuthLink { + readonly provider_id: string; + readonly created_at: string; + readonly updated_at: string; + readonly has_refresh_token: boolean; + readonly expires: string; + readonly authenticated: boolean; + readonly validate_error: string; +} + +// From codersdk/externalauth.go +export interface ExternalAuthLinkProvider { + readonly id: string; + readonly type: string; + readonly device: boolean; + readonly display_name: string; + readonly display_icon: string; + readonly allow_refresh: boolean; + readonly allow_validate: boolean; +} + +// From codersdk/externalauth.go +export interface ExternalAuthUser { + readonly id: number; + readonly login: string; + readonly avatar_url: string; + readonly profile_url: string; + readonly name: string; +} + +// From codersdk/deployment.go +export interface Feature { + readonly entitlement: Entitlement; + readonly enabled: boolean; + readonly limit?: number; + readonly actual?: number; +} + +// From codersdk/apikey.go +export interface GenerateAPIKeyResponse { + readonly key: string; +} + +// From codersdk/users.go +export interface GetUsersResponse { + readonly users: Readonly>; + readonly count: number; +} + +// From codersdk/gitsshkey.go +export interface GitSSHKey { + readonly user_id: string; + readonly created_at: string; + readonly updated_at: string; + readonly public_key: string; +} + +// From codersdk/groups.go +export interface Group { + readonly id: string; + readonly name: string; + readonly display_name: string; + readonly organization_id: string; + readonly members: Readonly>; + readonly total_member_count: number; + readonly avatar_url: string; + readonly quota_allowance: number; + readonly source: GroupSource; + readonly organization_name: string; + readonly organization_display_name: string; +} + +// From codersdk/groups.go +export interface GroupArguments { + readonly Organization: string; + readonly HasMember: string; + readonly GroupIDs: Readonly>; +} + +// From codersdk/idpsync.go +export interface GroupSyncSettings { + readonly field: string; + readonly mapping: Record>>; + // external type "regexp.Regexp", using "unknown" + readonly regex_filter?: unknown; + readonly auto_create_missing_groups: boolean; + readonly legacy_group_name_mapping?: Record; +} + +// From codersdk/workspaceapps.go +export interface Healthcheck { + readonly url: string; + readonly interval: number; + readonly threshold: number; +} + +// From codersdk/deployment.go +export interface HealthcheckConfig { + readonly refresh: number; + readonly threshold_database: number; +} + +// From codersdk/workspaceagents.go +export interface IssueReconnectingPTYSignedTokenRequest { + readonly url: string; + readonly agentID: string; +} + +// From codersdk/workspaceagents.go +export interface IssueReconnectingPTYSignedTokenResponse { + readonly signed_token: string; +} + +// From codersdk/jfrog.go +export interface JFrogXrayScan { + readonly workspace_id: string; + readonly agent_id: string; + readonly critical: number; + readonly high: number; + readonly medium: number; + readonly results_url: string; +} + +// From codersdk/licenses.go +export interface License { + readonly id: number; + readonly uuid: string; + readonly uploaded_at: string; + // empty interface{} type, falling back to unknown + readonly claims: Record; +} + +// From codersdk/deployment.go +export interface LinkConfig { + readonly name: string; + readonly target: string; + readonly icon: string; +} + +// From codersdk/externalauth.go +export interface ListUserExternalAuthResponse { + readonly providers: Readonly>; + readonly links: Readonly>; +} + +// From codersdk/deployment.go +export interface LoggingConfig { + readonly log_filter: string[]; + readonly human: string; + readonly json: string; + readonly stackdriver: string; +} + +// From codersdk/users.go +export interface LoginWithPasswordRequest { + readonly email: string; + readonly password: string; +} + +// From codersdk/users.go +export interface LoginWithPasswordResponse { + readonly session_token: string; +} + +// From codersdk/provisionerdaemons.go +export interface MatchedProvisioners { + readonly count: number; + readonly available: number; + readonly most_recently_seen?: string; +} + +// From codersdk/organizations.go +export interface MinimalOrganization { + readonly id: string; + readonly name: string; + readonly display_name: string; + readonly icon: string; +} + +// From codersdk/users.go +export interface MinimalUser { + readonly id: string; + readonly username: string; + readonly avatar_url: string; +} + +// From codersdk/notifications.go +export interface NotificationMethodsResponse { + readonly available: Readonly>; + readonly default: string; +} + +// From codersdk/notifications.go +export interface NotificationPreference { + readonly id: string; + readonly disabled: boolean; + readonly updated_at: string; +} + +// From codersdk/notifications.go +export interface NotificationTemplate { + readonly id: string; + readonly name: string; + readonly title_template: string; + readonly body_template: string; + readonly actions: string; + readonly group: string; + readonly method: string; + readonly kind: string; +} + +// From codersdk/deployment.go +export interface NotificationsConfig { + readonly max_send_attempts: number; + readonly retry_interval: number; + readonly sync_interval: number; + readonly sync_buffer_size: number; + readonly lease_period: number; + readonly lease_count: number; + readonly fetch_interval: number; + readonly method: string; + readonly dispatch_timeout: number; + readonly email: NotificationsEmailConfig; + readonly webhook: NotificationsWebhookConfig; +} + +// From codersdk/deployment.go +export interface NotificationsEmailAuthConfig { + readonly identity: string; + readonly username: string; + readonly password: string; + readonly password_file: string; +} + +// From codersdk/deployment.go +export interface NotificationsEmailConfig { + readonly from: string; + readonly smarthost: string; + readonly hello: string; + readonly auth: NotificationsEmailAuthConfig; + readonly tls: NotificationsEmailTLSConfig; + readonly force_tls: boolean; +} + +// From codersdk/deployment.go +export interface NotificationsEmailTLSConfig { + readonly start_tls: boolean; + readonly server_name: string; + readonly insecure_skip_verify: boolean; + readonly ca_file: string; + readonly cert_file: string; + readonly key_file: string; +} + +// From codersdk/notifications.go +export interface NotificationsSettings { + readonly notifier_paused: boolean; +} + +// From codersdk/deployment.go +export interface NotificationsWebhookConfig { + readonly endpoint: string; +} + +// From codersdk/oauth2.go +export interface OAuth2AppEndpoints { + readonly authorization: string; + readonly token: string; + readonly device_authorization: string; +} + +// From codersdk/deployment.go +export interface OAuth2Config { + readonly github: OAuth2GithubConfig; +} + +// From codersdk/deployment.go +export interface OAuth2GithubConfig { + readonly client_id: string; + readonly client_secret: string; + readonly allowed_orgs: string[]; + readonly allowed_teams: string[]; + readonly allow_signups: boolean; + readonly allow_everyone: boolean; + readonly enterprise_base_url: string; +} + +// From codersdk/oauth2.go +export interface OAuth2ProviderApp { + readonly id: string; + readonly name: string; + readonly callback_url: string; + readonly icon: string; + readonly endpoints: OAuth2AppEndpoints; +} + +// From codersdk/oauth2.go +export interface OAuth2ProviderAppFilter { + readonly user_id?: string; +} + +// From codersdk/oauth2.go +export interface OAuth2ProviderAppSecret { + readonly id: string; + readonly last_used_at?: string; + readonly client_secret_truncated: string; +} + +// From codersdk/oauth2.go +export interface OAuth2ProviderAppSecretFull { + readonly id: string; + readonly client_secret_full: string; +} + +// From codersdk/users.go +export interface OAuthConversionResponse { + readonly state_string: string; + readonly expires_at: string; + readonly to_type: LoginType; + readonly user_id: string; +} + +// From codersdk/users.go +export interface OIDCAuthMethod extends AuthMethod { + readonly signInText: string; + readonly iconUrl: string; +} + +// From codersdk/deployment.go +export interface OIDCConfig { + readonly allow_signups: boolean; + readonly client_id: string; + readonly client_secret: string; + readonly client_key_file: string; + readonly client_cert_file: string; + readonly email_domain: string[]; + readonly issuer_url: string; + readonly scopes: string[]; + readonly ignore_email_verified: boolean; + readonly username_field: string; + readonly name_field: string; + readonly email_field: string; + readonly auth_url_params: Record; + readonly ignore_user_info: boolean; + readonly organization_field: string; + readonly organization_mapping: Record>>; + readonly organization_assign_default: boolean; + readonly group_auto_create: boolean; + readonly group_regex_filter: string; + readonly group_allow_list: string[]; + readonly groups_field: string; + readonly group_mapping: Record; + readonly user_role_field: string; + readonly user_role_mapping: Record>>; + readonly user_roles_default: string[]; + readonly sign_in_text: string; + readonly icon_url: string; + readonly signups_disabled_text: string; + readonly skip_issuer_checks: boolean; +} + +// From codersdk/organizations.go +export interface Organization extends MinimalOrganization { + readonly description: string; + readonly created_at: string; + readonly updated_at: string; + readonly is_default: boolean; +} + +// From codersdk/organizations.go +export interface OrganizationMember { + readonly user_id: string; + readonly organization_id: string; + readonly created_at: string; + readonly updated_at: string; + readonly roles: Readonly>; +} + +// From codersdk/organizations.go +export interface OrganizationMemberWithUserData extends OrganizationMember { + readonly username: string; + readonly name: string; + readonly avatar_url: string; + readonly email: string; + readonly global_roles: Readonly>; +} + +// From codersdk/idpsync.go +export interface OrganizationSyncSettings { + readonly field: string; + readonly mapping: Record>>; + readonly organization_assign_default: boolean; +} + +// From codersdk/pagination.go +export interface Pagination { + readonly after_id?: string; + readonly limit?: number; + readonly offset?: number; +} + +// From codersdk/groups.go +export interface PatchGroupRequest { + readonly add_users: Readonly>; + readonly remove_users: Readonly>; + readonly name: string; + readonly display_name?: string; + readonly avatar_url?: string; + readonly quota_allowance?: number; +} + +// From codersdk/templateversions.go +export interface PatchTemplateVersionRequest { + readonly name: string; + readonly message?: string; +} + +// From codersdk/workspaceproxy.go +export interface PatchWorkspaceProxy { + readonly id: string; + readonly name: string; + readonly display_name: string; + readonly icon: string; + readonly regenerate_token: boolean; +} + +// From codersdk/roles.go +export interface Permission { + readonly negate: boolean; + readonly resource_type: RBACResource; + readonly action: RBACAction; +} + +// From codersdk/oauth2.go +export interface PostOAuth2ProviderAppRequest { + readonly name: string; + readonly callback_url: string; + readonly icon: string; +} + +// From codersdk/workspaces.go +export interface PostWorkspaceUsageRequest { + readonly agent_id: string; + readonly app_name: UsageAppName; +} + +// From codersdk/deployment.go +export interface PprofConfig { + readonly enable: boolean; + readonly address: string; +} + +// From codersdk/deployment.go +export interface PrometheusConfig { + readonly enable: boolean; + readonly address: string; + readonly collect_agent_stats: boolean; + readonly collect_db_metrics: boolean; + readonly aggregate_agent_stats_by: string[]; +} + +// From codersdk/deployment.go +export interface ProvisionerConfig { + readonly daemons: number; + readonly daemon_types: string[]; + readonly daemon_poll_interval: number; + readonly daemon_poll_jitter: number; + readonly force_cancel_interval: number; + readonly daemon_psk: string; +} + +// From codersdk/provisionerdaemons.go +export interface ProvisionerDaemon { + readonly id: string; + readonly organization_id: string; + readonly key_id: string; + readonly created_at: string; + readonly last_seen_at?: string; + readonly name: string; + readonly version: string; + readonly api_version: string; + readonly provisioners: Readonly>; + readonly tags: Record; +} + +// From codersdk/provisionerdaemons.go +export interface ProvisionerJob { + readonly id: string; + readonly created_at: string; + readonly started_at?: string; + readonly completed_at?: string; + readonly canceled_at?: string; + readonly error?: string; + readonly error_code?: JobErrorCode; + readonly status: ProvisionerJobStatus; + readonly worker_id?: string; + readonly file_id: string; + readonly tags: Record; + readonly queue_position: number; + readonly queue_size: number; +} + +// From codersdk/provisionerdaemons.go +export interface ProvisionerJobLog { + readonly id: number; + readonly created_at: string; + readonly log_source: LogSource; + readonly log_level: LogLevel; + readonly stage: string; + readonly output: string; +} + +// From codersdk/provisionerdaemons.go +export interface ProvisionerKey { + readonly id: string; + readonly created_at: string; + readonly organization: string; + readonly name: string; + readonly tags: ProvisionerKeyTags; +} + +// From codersdk/provisionerdaemons.go +export interface ProvisionerKeyDaemons { + readonly key: ProvisionerKey; + readonly daemons: Readonly>; +} + +// From codersdk/provisionerdaemons.go +export type ProvisionerKeyTags = Record + +// From codersdk/workspacebuilds.go +export interface ProvisionerTiming { + readonly job_id: string; + readonly started_at: string; + readonly ended_at: string; + readonly stage: TimingStage; + readonly source: string; + readonly action: string; + readonly resource: string; +} + +// From codersdk/workspaceproxy.go +export interface ProxyHealthReport { + readonly errors: Readonly>; + readonly warnings: Readonly>; +} + +// From codersdk/workspaces.go +export interface PutExtendWorkspaceRequest { + readonly deadline: string; +} + +// From codersdk/oauth2.go +export interface PutOAuth2ProviderAppRequest { + readonly name: string; + readonly callback_url: string; + readonly icon: string; +} + +// From codersdk/deployment.go +export interface RateLimitConfig { + readonly disable_all: boolean; + readonly api: number; +} + +// From codersdk/users.go +export interface ReducedUser extends MinimalUser { + readonly name: string; + readonly email: string; + readonly created_at: string; + readonly updated_at: string; + readonly last_seen_at: string; + readonly status: UserStatus; + readonly login_type: LoginType; + readonly theme_preference: string; +} + +// From codersdk/workspaceproxy.go +export interface Region { + readonly id: string; + readonly name: string; + readonly display_name: string; + readonly icon_url: string; + readonly healthy: boolean; + readonly path_app_url: string; + readonly wildcard_hostname: string; +} + +// From codersdk/workspaceproxy.go +export interface RegionsResponse { + readonly regions: Readonly>; +} + +// From codersdk/replicas.go +export interface Replica { + readonly id: string; + readonly hostname: string; + readonly created_at: string; + readonly relay_address: string; + readonly region_id: number; + readonly error: string; + readonly database_latency: number; +} + +// From codersdk/users.go +export interface RequestOneTimePasscodeRequest { + readonly email: string; +} + +// From codersdk/workspaces.go +export interface ResolveAutostartResponse { + readonly parameter_mismatch: boolean; +} + +// From codersdk/client.go +export interface Response { + readonly message: string; + readonly detail?: string; + readonly validations?: Readonly>; +} + +// From codersdk/roles.go +export interface Role { + readonly name: string; + readonly organization_id?: string; + readonly display_name: string; + readonly site_permissions: Readonly>; + readonly organization_permissions: Readonly>; + readonly user_permissions: Readonly>; +} + +// From codersdk/idpsync.go +export interface RoleSyncSettings { + readonly field: string; + readonly mapping: Record>>; +} + +// From codersdk/deployment.go +export interface SSHConfig { + readonly DeploymentName: string; + readonly SSHConfigOptions: string[]; +} + +// From codersdk/deployment.go +export interface SSHConfigResponse { + readonly hostname_prefix: string; + readonly ssh_config_options: Record; +} + +// From codersdk/serversentevents.go +export interface ServerSentEvent { + readonly type: ServerSentEventType; + // empty interface{} type, falling back to unknown + readonly data: unknown; +} + +// From codersdk/deployment.go +export interface ServiceBannerConfig { + readonly enabled: boolean; + readonly message?: string; + readonly background_color?: string; +} + +// From codersdk/deployment.go +export interface SessionCountDeploymentStats { + readonly vscode: number; + readonly ssh: number; + readonly jetbrains: number; + readonly reconnecting_pty: number; +} + +// From codersdk/deployment.go +export interface SessionLifetime { + readonly disable_expiry_refresh?: boolean; + readonly default_duration: number; + readonly default_token_lifetime?: number; + readonly max_token_lifetime?: number; +} + +// From codersdk/roles.go +export interface SlimRole { + readonly name: string; + readonly display_name: string; + readonly organization_id?: string; +} + +// From codersdk/deployment.go +export interface SupportConfig { + readonly links: Readonly>; +} + +// From codersdk/deployment.go +export interface SwaggerConfig { + readonly enable: boolean; +} + +// From codersdk/deployment.go +export interface TLSConfig { + readonly enable: boolean; + readonly address: string; + readonly redirect_http: boolean; + readonly cert_file: string[]; + readonly client_auth: string; + readonly client_ca_file: string; + readonly key_file: string[]; + readonly min_version: string; + readonly client_cert_file: string; + readonly client_key_file: string; + readonly supported_ciphers: string[]; + readonly allow_insecure_ciphers: boolean; +} + +// From codersdk/deployment.go +export interface TelemetryConfig { + readonly enable: boolean; + readonly trace: boolean; + readonly url: string; +} + +// From codersdk/templates.go +export interface Template { + readonly id: string; + readonly created_at: string; + readonly updated_at: string; + readonly organization_id: string; + readonly organization_name: string; + readonly organization_display_name: string; + readonly organization_icon: string; + readonly name: string; + readonly display_name: string; + readonly provisioner: ProvisionerType; + readonly active_version_id: string; + readonly active_user_count: number; + readonly build_time_stats: TemplateBuildTimeStats; + readonly description: string; + readonly deprecated: boolean; + readonly deprecation_message: string; + readonly icon: string; + readonly default_ttl_ms: number; + readonly activity_bump_ms: number; + readonly autostop_requirement: TemplateAutostopRequirement; + readonly autostart_requirement: TemplateAutostartRequirement; + readonly created_by_id: string; + readonly created_by_name: string; + readonly allow_user_autostart: boolean; + readonly allow_user_autostop: boolean; + readonly allow_user_cancel_workspace_jobs: boolean; + readonly failure_ttl_ms: number; + readonly time_til_dormant_ms: number; + readonly time_til_dormant_autodelete_ms: number; + readonly require_active_version: boolean; + readonly max_port_share_level: WorkspaceAgentPortShareLevel; +} + +// From codersdk/templates.go +export interface TemplateACL { + readonly users: Readonly>; + readonly group: Readonly>; +} + +// From codersdk/insights.go +export interface TemplateAppUsage { + readonly template_ids: Readonly>; + readonly type: TemplateAppsType; + readonly display_name: string; + readonly slug: string; + readonly icon: string; + readonly seconds: number; + readonly times_used: number; +} + +// From codersdk/templates.go +export interface TemplateAutostartRequirement { + readonly days_of_week: Readonly>; +} + +// From codersdk/templates.go +export interface TemplateAutostopRequirement { + readonly days_of_week: Readonly>; + readonly weeks: number; +} + +// From codersdk/templates.go +export type TemplateBuildTimeStats = Record + +// From codersdk/templates.go +export interface TemplateExample { + readonly id: string; + readonly url: string; + readonly name: string; + readonly description: string; + readonly icon: string; + readonly tags: Readonly>; + readonly markdown: string; +} + +// From codersdk/organizations.go +export interface TemplateFilter { + readonly q?: string; +} + +// From codersdk/templates.go +export interface TemplateGroup extends Group { + readonly role: TemplateRole; +} + +// From codersdk/insights.go +export interface TemplateInsightsIntervalReport { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: Readonly>; + readonly interval: InsightsReportInterval; + readonly active_users: number; +} + +// From codersdk/insights.go +export interface TemplateInsightsReport { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: Readonly>; + readonly active_users: number; + readonly apps_usage: Readonly>; + readonly parameters_usage: Readonly>; +} + +// From codersdk/insights.go +export interface TemplateInsightsRequest { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: Readonly>; + readonly interval: InsightsReportInterval; + readonly sections: Readonly>; +} + +// From codersdk/insights.go +export interface TemplateInsightsResponse { + readonly report?: TemplateInsightsReport; + readonly interval_reports?: Readonly>; +} + +// From codersdk/insights.go +export interface TemplateParameterUsage { + readonly template_ids: Readonly>; + readonly display_name: string; + readonly name: string; + readonly type: string; + readonly description: string; + readonly options?: Readonly>; + readonly values: Readonly>; +} + +// From codersdk/insights.go +export interface TemplateParameterValue { + readonly value: string; + readonly count: number; +} + +// From codersdk/templates.go +export interface TemplateUser extends User { + readonly role: TemplateRole; +} + +// From codersdk/templateversions.go +export interface TemplateVersion { + readonly id: string; + readonly template_id?: string; + readonly organization_id?: string; + readonly created_at: string; + readonly updated_at: string; + readonly name: string; + readonly message: string; + readonly job: ProvisionerJob; + readonly readme: string; + readonly created_by: MinimalUser; + readonly archived: boolean; + readonly warnings?: Readonly>; + readonly matched_provisioners?: MatchedProvisioners; +} + +// From codersdk/templateversions.go +export interface TemplateVersionExternalAuth { + readonly id: string; + readonly type: string; + readonly display_name: string; + readonly display_icon: string; + readonly authenticate_url: string; + readonly authenticated: boolean; + readonly optional?: boolean; +} + +// From codersdk/templateversions.go +export interface TemplateVersionParameter { + readonly name: string; + readonly display_name?: string; + readonly description: string; + readonly description_plaintext: string; + readonly type: string; + readonly mutable: boolean; + readonly default_value: string; + readonly icon: string; + readonly options: Readonly>; + readonly validation_error?: string; + readonly validation_regex?: string; + readonly validation_min?: number; + readonly validation_max?: number; + readonly validation_monotonic?: ValidationMonotonicOrder; + readonly required: boolean; + readonly ephemeral: boolean; +} + +// From codersdk/templateversions.go +export interface TemplateVersionParameterOption { + readonly name: string; + readonly description: string; + readonly value: string; + readonly icon: string; +} + +// From codersdk/templateversions.go +export interface TemplateVersionVariable { + readonly name: string; + readonly description: string; + readonly type: string; + readonly value: string; + readonly default_value: string; + readonly required: boolean; + readonly sensitive: boolean; +} + +// From codersdk/templates.go +export interface TemplateVersionsByTemplateRequest extends Pagination { + readonly template_id: string; + readonly include_archived: boolean; +} + +// From codersdk/apikey.go +export interface TokenConfig { + readonly max_token_lifetime: number; +} + +// From codersdk/apikey.go +export interface TokensFilter { + readonly include_all: boolean; +} + +// From codersdk/deployment.go +export interface TraceConfig { + readonly enable: boolean; + readonly honeycomb_api_key: string; + readonly capture_logs: boolean; + readonly data_dog: boolean; +} + +// From codersdk/templates.go +export interface TransitionStats { + readonly P50?: number; + readonly P95?: number; +} + +// From codersdk/templates.go +export interface UpdateActiveTemplateVersion { + readonly id: string; +} + +// From codersdk/deployment.go +export interface UpdateAppearanceConfig { + readonly application_name: string; + readonly logo_url: string; + readonly service_banner: BannerConfig; + readonly announcement_banners: Readonly>; +} + +// From codersdk/updatecheck.go +export interface UpdateCheckResponse { + readonly current: boolean; + readonly version: string; + readonly url: string; +} + +// From codersdk/notifications.go +export interface UpdateNotificationTemplateMethod { + readonly method?: string; +} + +// From codersdk/organizations.go +export interface UpdateOrganizationRequest { + readonly name?: string; + readonly display_name?: string; + readonly description?: string; + readonly icon?: string; +} + +// From codersdk/users.go +export interface UpdateRoles { + readonly roles: Readonly>; +} + +// From codersdk/templates.go +export interface UpdateTemplateACL { + readonly user_perms?: Record; + readonly group_perms?: Record; +} + +// From codersdk/templates.go +export interface UpdateTemplateMeta { + readonly name?: string; + readonly display_name?: string; + readonly description?: string; + readonly icon?: string; + readonly default_ttl_ms?: number; + readonly activity_bump_ms?: number; + readonly autostop_requirement?: TemplateAutostopRequirement; + readonly autostart_requirement?: TemplateAutostartRequirement; + readonly allow_user_autostart?: boolean; + readonly allow_user_autostop?: boolean; + readonly allow_user_cancel_workspace_jobs?: boolean; + readonly failure_ttl_ms?: number; + readonly time_til_dormant_ms?: number; + readonly time_til_dormant_autodelete_ms?: number; + readonly update_workspace_last_used_at: boolean; + readonly update_workspace_dormant_at: boolean; + readonly require_active_version?: boolean; + readonly deprecation_message?: string; + readonly disable_everyone_group_access: boolean; + readonly max_port_share_level?: WorkspaceAgentPortShareLevel; +} + +// From codersdk/users.go +export interface UpdateUserAppearanceSettingsRequest { + readonly theme_preference: string; +} + +// From codersdk/notifications.go +export interface UpdateUserNotificationPreferences { + readonly template_disabled_map: Record; +} + +// From codersdk/users.go +export interface UpdateUserPasswordRequest { + readonly old_password: string; + readonly password: string; +} + +// From codersdk/users.go +export interface UpdateUserProfileRequest { + readonly username: string; + readonly name: string; +} + +// From codersdk/users.go +export interface UpdateUserQuietHoursScheduleRequest { + readonly schedule: string; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceAutomaticUpdatesRequest { + readonly automatic_updates: AutomaticUpdates; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceAutostartRequest { + readonly schedule?: string; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceDormancy { + readonly dormant: boolean; +} + +// From codersdk/workspaceproxy.go +export interface UpdateWorkspaceProxyResponse { + readonly proxy: WorkspaceProxy; + readonly proxy_token: string; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceRequest { + readonly name?: string; +} + +// From codersdk/workspaces.go +export interface UpdateWorkspaceTTLRequest { + readonly ttl_ms?: number; +} + +// From codersdk/files.go +export interface UploadResponse { + readonly hash: string; +} + +// From codersdk/workspaceagentportshare.go +export interface UpsertWorkspaceAgentPortShareRequest { + readonly agent_name: string; + readonly port: number; + readonly share_level: WorkspaceAgentPortShareLevel; + readonly protocol: WorkspaceAgentPortShareProtocol; +} + +// From codersdk/users.go +export interface User extends ReducedUser { + readonly organization_ids: Readonly>; + readonly roles: Readonly>; +} + +// From codersdk/insights.go +export interface UserActivity { + readonly template_ids: Readonly>; + readonly user_id: string; + readonly username: string; + readonly avatar_url: string; + readonly seconds: number; +} + +// From codersdk/insights.go +export interface UserActivityInsightsReport { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: Readonly>; + readonly users: Readonly>; +} + +// From codersdk/insights.go +export interface UserActivityInsightsRequest { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: Readonly>; +} + +// From codersdk/insights.go +export interface UserActivityInsightsResponse { + readonly report: UserActivityInsightsReport; +} + +// From codersdk/insights.go +export interface UserLatency { + readonly template_ids: Readonly>; + readonly user_id: string; + readonly username: string; + readonly avatar_url: string; + readonly latency_ms: ConnectionLatency; +} + +// From codersdk/insights.go +export interface UserLatencyInsightsReport { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: Readonly>; + readonly users: Readonly>; +} + +// From codersdk/insights.go +export interface UserLatencyInsightsRequest { + readonly start_time: string; + readonly end_time: string; + readonly template_ids: Readonly>; +} + +// From codersdk/insights.go +export interface UserLatencyInsightsResponse { + readonly report: UserLatencyInsightsReport; +} + +// From codersdk/users.go +export interface UserLoginType { + readonly login_type: LoginType; +} + +// From codersdk/users.go +export interface UserParameter { + readonly name: string; + readonly value: string; +} + +// From codersdk/deployment.go +export interface UserQuietHoursScheduleConfig { + readonly default_schedule: string; + readonly allow_user_custom: boolean; +} + +// From codersdk/users.go +export interface UserQuietHoursScheduleResponse { + readonly raw_schedule: string; + readonly user_set: boolean; + readonly user_can_set: boolean; + readonly time: string; + readonly timezone: string; + readonly next: string; +} + +// From codersdk/users.go +export interface UserRoles { + readonly roles: Readonly>; + readonly organization_roles: Record>>; +} + +// From codersdk/users.go +export interface UsersRequest extends Pagination { + readonly q?: string; +} + +// From codersdk/users.go +export interface ValidateUserPasswordRequest { + readonly password: string; +} + +// From codersdk/users.go +export interface ValidateUserPasswordResponse { + readonly valid: boolean; + readonly details: string; +} + +// From codersdk/client.go +export interface ValidationError { + readonly field: string; + readonly detail: string; +} + +// From codersdk/organizations.go +export interface VariableValue { + readonly name: string; + readonly value: string; +} + +// From codersdk/workspaces.go +export interface Workspace { + readonly id: string; + readonly created_at: string; + readonly updated_at: string; + readonly owner_id: string; + readonly owner_name: string; + readonly owner_avatar_url: string; + readonly organization_id: string; + readonly organization_name: string; + readonly template_id: string; + readonly template_name: string; + readonly template_display_name: string; + readonly template_icon: string; + readonly template_allow_user_cancel_workspace_jobs: boolean; + readonly template_active_version_id: string; + readonly template_require_active_version: boolean; + readonly latest_build: WorkspaceBuild; + readonly outdated: boolean; + readonly name: string; + readonly autostart_schedule?: string; + readonly ttl_ms?: number; + readonly last_used_at: string; + readonly deleting_at?: string; + readonly dormant_at?: string; + readonly health: WorkspaceHealth; + readonly automatic_updates: AutomaticUpdates; + readonly allow_renames: boolean; + readonly favorite: boolean; + readonly next_start_at?: string; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgent { + readonly id: string; + readonly created_at: string; + readonly updated_at: string; + readonly first_connected_at?: string; + readonly last_connected_at?: string; + readonly disconnected_at?: string; + readonly started_at?: string; + readonly ready_at?: string; + readonly status: WorkspaceAgentStatus; + readonly lifecycle_state: WorkspaceAgentLifecycle; + readonly name: string; + readonly resource_id: string; + readonly instance_id?: string; + readonly architecture: string; + readonly environment_variables: Record; + readonly operating_system: string; + readonly logs_length: number; + readonly logs_overflowed: boolean; + readonly directory?: string; + readonly expanded_directory?: string; + readonly version: string; + readonly api_version: string; + readonly apps: Readonly>; + readonly latency?: Record; + readonly connection_timeout_seconds: number; + readonly troubleshooting_url: string; + readonly subsystems: Readonly>; + readonly health: WorkspaceAgentHealth; + readonly display_apps: Readonly>; + readonly log_sources: Readonly>; + readonly scripts: Readonly>; + readonly startup_script_behavior: WorkspaceAgentStartupScriptBehavior; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentHealth { + readonly healthy: boolean; + readonly reason?: string; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentListeningPort { + readonly process_name: string; + readonly network: string; + readonly port: number; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentListeningPortsResponse { + readonly ports: Readonly>; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentLog { + readonly id: number; + readonly created_at: string; + readonly output: string; + readonly level: LogLevel; + readonly source_id: string; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentLogSource { + readonly workspace_agent_id: string; + readonly id: string; + readonly created_at: string; + readonly display_name: string; + readonly icon: string; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentMetadata { + readonly result: WorkspaceAgentMetadataResult; + readonly description: WorkspaceAgentMetadataDescription; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentMetadataDescription { + readonly display_name: string; + readonly key: string; + readonly script: string; + readonly interval: number; + readonly timeout: number; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentMetadataResult { + readonly collected_at: string; + readonly age: number; + readonly value: string; + readonly error: string; +} + +// From codersdk/workspaceagentportshare.go +export interface WorkspaceAgentPortShare { + readonly workspace_id: string; + readonly agent_name: string; + readonly port: number; + readonly share_level: WorkspaceAgentPortShareLevel; + readonly protocol: WorkspaceAgentPortShareProtocol; +} + +// From codersdk/workspaceagentportshare.go +export interface WorkspaceAgentPortShares { + readonly shares: Readonly>; +} + +// From codersdk/workspaceagents.go +export interface WorkspaceAgentScript { + readonly id: string; + readonly log_source_id: string; + readonly log_path: string; + readonly script: string; + readonly cron: string; + readonly run_on_start: boolean; + readonly run_on_stop: boolean; + readonly start_blocks_login: boolean; + readonly timeout: number; + readonly display_name: string; +} + +// From codersdk/workspaceapps.go +export interface WorkspaceApp { + readonly id: string; + readonly url: string; + readonly external: boolean; + readonly slug: string; + readonly display_name: string; + readonly command?: string; + readonly icon?: string; + readonly subdomain: boolean; + readonly subdomain_name?: string; + readonly sharing_level: WorkspaceAppSharingLevel; + readonly healthcheck: Healthcheck; + readonly health: WorkspaceAppHealth; + readonly hidden: boolean; +} + +// From codersdk/workspacebuilds.go +export interface WorkspaceBuild { + readonly id: string; + readonly created_at: string; + readonly updated_at: string; + readonly workspace_id: string; + readonly workspace_name: string; + readonly workspace_owner_id: string; + readonly workspace_owner_name: string; + readonly workspace_owner_avatar_url: string; + readonly template_version_id: string; + readonly template_version_name: string; + readonly build_number: number; + readonly transition: WorkspaceTransition; + readonly initiator_id: string; + readonly initiator_name: string; + readonly job: ProvisionerJob; + readonly reason: BuildReason; + readonly resources: Readonly>; + readonly deadline?: string; + readonly max_deadline?: string; + readonly status: WorkspaceStatus; + readonly daily_cost: number; + readonly matched_provisioners?: MatchedProvisioners; +} + +// From codersdk/workspacebuilds.go +export interface WorkspaceBuildParameter { + readonly name: string; + readonly value: string; +} + +// From codersdk/workspacebuilds.go +export interface WorkspaceBuildTimings { + readonly provisioner_timings: Readonly>; + readonly agent_script_timings: Readonly>; + readonly agent_connection_timings: Readonly>; +} + +// From codersdk/workspaces.go +export interface WorkspaceBuildsRequest extends Pagination { + readonly since?: string; +} + +// From codersdk/deployment.go +export interface WorkspaceConnectionLatencyMS { + readonly P50: number; + readonly P95: number; +} + +// From codersdk/deployment.go +export interface WorkspaceDeploymentStats { + readonly pending: number; + readonly building: number; + readonly running: number; + readonly failed: number; + readonly stopped: number; + readonly connection_latency_ms: WorkspaceConnectionLatencyMS; + readonly rx_bytes: number; + readonly tx_bytes: number; +} + +// From codersdk/workspaces.go +export interface WorkspaceFilter { + readonly q?: string; +} + +// From codersdk/workspaces.go +export interface WorkspaceHealth { + readonly healthy: boolean; + readonly failing_agents: Readonly>; +} + +// From codersdk/workspaces.go +export interface WorkspaceOptions { + readonly include_deleted?: boolean; +} + +// From codersdk/workspaceproxy.go +export interface WorkspaceProxy extends Region { + readonly derp_enabled: boolean; + readonly derp_only: boolean; + readonly status?: WorkspaceProxyStatus; + readonly created_at: string; + readonly updated_at: string; + readonly deleted: boolean; + readonly version: string; +} + +// From codersdk/deployment.go +export interface WorkspaceProxyBuildInfo { + readonly workspace_proxy: boolean; + readonly dashboard_url: string; +} + +// From codersdk/workspaceproxy.go +export interface WorkspaceProxyStatus { + readonly status: ProxyHealthStatus; + readonly report?: ProxyHealthReport; + readonly checked_at: string; +} + +// From codersdk/workspaces.go +export interface WorkspaceQuota { + readonly credits_consumed: number; + readonly budget: number; +} + +// From codersdk/workspacebuilds.go +export interface WorkspaceResource { + readonly id: string; + readonly created_at: string; + readonly job_id: string; + readonly workspace_transition: WorkspaceTransition; + readonly type: string; + readonly name: string; + readonly hide: boolean; + readonly icon: string; + readonly agents?: Readonly>; + readonly metadata?: Readonly>; + readonly daily_cost: number; +} + +// From codersdk/workspacebuilds.go +export interface WorkspaceResourceMetadata { + readonly key: string; + readonly value: string; + readonly sensitive: boolean; +} + +// From codersdk/workspaces.go +export interface WorkspacesRequest extends Pagination { + readonly q?: string; +} + +// From codersdk/workspaces.go +export interface WorkspacesResponse { + readonly workspaces: Readonly>; + readonly count: number; +} + +// From codersdk/apikey.go +export type APIKeyScope = "all" | "application_connect" +export const APIKeyScopes: APIKeyScope[] = ["all", "application_connect"] + +// From codersdk/workspaceagents.go +export type AgentSubsystem = "envbox" | "envbuilder" | "exectrace" +export const AgentSubsystems: AgentSubsystem[] = ["envbox", "envbuilder", "exectrace"] + +// From codersdk/audit.go +export type AuditAction = "create" | "delete" | "login" | "logout" | "register" | "request_password_reset" | "start" | "stop" | "write" +export const AuditActions: AuditAction[] = ["create", "delete", "login", "logout", "register", "request_password_reset", "start", "stop", "write"] + +// From codersdk/workspaces.go +export type AutomaticUpdates = "always" | "never" +export const AutomaticUpdateses: AutomaticUpdates[] = ["always", "never"] + +// From codersdk/workspacebuilds.go +export type BuildReason = "autostart" | "autostop" | "initiator" +export const BuildReasons: BuildReason[] = ["autostart", "autostop", "initiator"] + +// From codersdk/deployment.go +export type CryptoKeyFeature = "oidc_convert" | "tailnet_resume" | "workspace_apps_api_key" | "workspace_apps_token" +export const CryptoKeyFeatures: CryptoKeyFeature[] = ["oidc_convert", "tailnet_resume", "workspace_apps_api_key", "workspace_apps_token"] + +// From codersdk/workspaceagents.go +export type DisplayApp = "port_forwarding_helper" | "ssh_helper" | "vscode" | "vscode_insiders" | "web_terminal" +export const DisplayApps: DisplayApp[] = ["port_forwarding_helper", "ssh_helper", "vscode", "vscode_insiders", "web_terminal"] + +// From codersdk/externalauth.go +export type EnhancedExternalAuthProvider = "azure-devops" | "azure-devops-entra" | "bitbucket-cloud" | "bitbucket-server" | "gitea" | "github" | "gitlab" | "jfrog" | "slack" +export const EnhancedExternalAuthProviders: EnhancedExternalAuthProvider[] = ["azure-devops", "azure-devops-entra", "bitbucket-cloud", "bitbucket-server", "gitea", "github", "gitlab", "jfrog", "slack"] + +// From codersdk/deployment.go +export type Entitlement = "entitled" | "grace_period" | "not_entitled" +export const Entitlements: Entitlement[] = ["entitled", "grace_period", "not_entitled"] + +// From codersdk/deployment.go +export type Experiment = "auto-fill-parameters" | "example" | "notifications" | "workspace-usage" +export const Experiments: Experiment[] = ["auto-fill-parameters", "example", "notifications", "workspace-usage"] + +// From codersdk/deployment.go +export type FeatureName = "access_control" | "advanced_template_scheduling" | "appearance" | "audit_log" | "browser_only" | "control_shared_ports" | "custom_roles" | "external_provisioner_daemons" | "external_token_encryption" | "high_availability" | "multiple_external_auth" | "multiple_organizations" | "scim" | "template_rbac" | "user_limit" | "user_role_management" | "workspace_batch_actions" | "workspace_proxy" +export const FeatureNames: FeatureName[] = ["access_control", "advanced_template_scheduling", "appearance", "audit_log", "browser_only", "control_shared_ports", "custom_roles", "external_provisioner_daemons", "external_token_encryption", "high_availability", "multiple_external_auth", "multiple_organizations", "scim", "template_rbac", "user_limit", "user_role_management", "workspace_batch_actions", "workspace_proxy"] + +// From codersdk/deployment.go +export type FeatureSet = "" | "enterprise" | "premium" +export const FeatureSets: FeatureSet[] = ["", "enterprise", "premium"] + +// From codersdk/groups.go +export type GroupSource = "oidc" | "user" +export const GroupSources: GroupSource[] = ["oidc", "user"] + +// From codersdk/insights.go +export type InsightsReportInterval = "day" | "week" +export const InsightsReportIntervals: InsightsReportInterval[] = ["day", "week"] + +// From codersdk/provisionerdaemons.go +export type JobErrorCode = "REQUIRED_TEMPLATE_VARIABLES" +export const JobErrorCodes: JobErrorCode[] = ["REQUIRED_TEMPLATE_VARIABLES"] + +// From codersdk/provisionerdaemons.go +export type LogLevel = "debug" | "error" | "info" | "trace" | "warn" +export const LogLevels: LogLevel[] = ["debug", "error", "info", "trace", "warn"] + +// From codersdk/provisionerdaemons.go +export type LogSource = "provisioner" | "provisioner_daemon" +export const LogSources: LogSource[] = ["provisioner", "provisioner_daemon"] + +// From codersdk/apikey.go +export type LoginType = "" | "github" | "none" | "oidc" | "password" | "token" +export const LoginTypes: LoginType[] = ["", "github", "none", "oidc", "password", "token"] + +// From codersdk/oauth2.go +export type OAuth2ProviderGrantType = "authorization_code" | "refresh_token" +export const OAuth2ProviderGrantTypes: OAuth2ProviderGrantType[] = ["authorization_code", "refresh_token"] + +// From codersdk/oauth2.go +export type OAuth2ProviderResponseType = "code" +export const OAuth2ProviderResponseTypes: OAuth2ProviderResponseType[] = ["code"] + +// From codersdk/deployment.go +export type PostgresAuth = "awsiamrds" | "password" +export const PostgresAuths: PostgresAuth[] = ["awsiamrds", "password"] + +// From codersdk/provisionerdaemons.go +export type ProvisionerJobStatus = "canceled" | "canceling" | "failed" | "pending" | "running" | "succeeded" | "unknown" +export const ProvisionerJobStatuses: ProvisionerJobStatus[] = ["canceled", "canceling", "failed", "pending", "running", "succeeded", "unknown"] + +// From codersdk/workspaces.go +export type ProvisionerLogLevel = "debug" +export const ProvisionerLogLevels: ProvisionerLogLevel[] = ["debug"] + +// From codersdk/organizations.go +export type ProvisionerStorageMethod = "file" +export const ProvisionerStorageMethods: ProvisionerStorageMethod[] = ["file"] + +// From codersdk/organizations.go +export type ProvisionerType = "echo" | "terraform" +export const ProvisionerTypes: ProvisionerType[] = ["echo", "terraform"] + +// From codersdk/workspaceproxy.go +export type ProxyHealthStatus = "ok" | "unhealthy" | "unreachable" | "unregistered" +export const ProxyHealthStatuses: ProxyHealthStatus[] = ["ok", "unhealthy", "unreachable", "unregistered"] + +// From codersdk/rbacresources_gen.go +export type RBACAction = "application_connect" | "assign" | "create" | "delete" | "read" | "read_personal" | "ssh" | "start" | "stop" | "update" | "update_personal" | "use" | "view_insights" +export const RBACActions: RBACAction[] = ["application_connect", "assign", "create", "delete", "read", "read_personal", "ssh", "start", "stop", "update", "update_personal", "use", "view_insights"] + +// From codersdk/rbacresources_gen.go +export type RBACResource = "*" | "api_key" | "assign_org_role" | "assign_role" | "audit_log" | "crypto_key" | "debug_info" | "deployment_config" | "deployment_stats" | "file" | "group" | "group_member" | "idpsync_settings" | "license" | "notification_message" | "notification_preference" | "notification_template" | "oauth2_app" | "oauth2_app_code_token" | "oauth2_app_secret" | "organization" | "organization_member" | "provisioner_daemon" | "provisioner_keys" | "replicas" | "system" | "tailnet_coordinator" | "template" | "user" | "workspace" | "workspace_dormant" | "workspace_proxy" +export const RBACResources: RBACResource[] = ["*", "api_key", "assign_org_role", "assign_role", "audit_log", "crypto_key", "debug_info", "deployment_config", "deployment_stats", "file", "group", "group_member", "idpsync_settings", "license", "notification_message", "notification_preference", "notification_template", "oauth2_app", "oauth2_app_code_token", "oauth2_app_secret", "organization", "organization_member", "provisioner_daemon", "provisioner_keys", "replicas", "system", "tailnet_coordinator", "template", "user", "workspace", "workspace_dormant", "workspace_proxy"] + +// From codersdk/audit.go +export type ResourceType = "api_key" | "convert_login" | "custom_role" | "git_ssh_key" | "group" | "health_settings" | "license" | "notifications_settings" | "oauth2_provider_app" | "oauth2_provider_app_secret" | "organization" | "template" | "template_version" | "user" | "workspace" | "workspace_build" | "workspace_proxy" +export const ResourceTypes: ResourceType[] = ["api_key", "convert_login", "custom_role", "git_ssh_key", "group", "health_settings", "license", "notifications_settings", "oauth2_provider_app", "oauth2_provider_app_secret", "organization", "template", "template_version", "user", "workspace", "workspace_build", "workspace_proxy"] + +// From codersdk/serversentevents.go +export type ServerSentEventType = "data" | "error" | "ping" +export const ServerSentEventTypes: ServerSentEventType[] = ["data", "error", "ping"] + +// From codersdk/insights.go +export type TemplateAppsType = "app" | "builtin" +export const TemplateAppsTypes: TemplateAppsType[] = ["app", "builtin"] + +// From codersdk/insights.go +export type TemplateInsightsSection = "interval_reports" | "report" +export const TemplateInsightsSections: TemplateInsightsSection[] = ["interval_reports", "report"] + +// From codersdk/templates.go +export type TemplateRole = "" | "admin" | "use" +export const TemplateRoles: TemplateRole[] = ["", "admin", "use"] + +// From codersdk/templateversions.go +export type TemplateVersionWarning = "UNSUPPORTED_WORKSPACES" +export const TemplateVersionWarnings: TemplateVersionWarning[] = ["UNSUPPORTED_WORKSPACES"] + +// From codersdk/workspacebuilds.go +export type TimingStage = "apply" | "connect" | "cron" | "graph" | "init" | "plan" | "start" | "stop" +export const TimingStages: TimingStage[] = ["apply", "connect", "cron", "graph", "init", "plan", "start", "stop"] + +// From codersdk/workspaces.go +export type UsageAppName = "jetbrains" | "reconnecting-pty" | "ssh" | "vscode" +export const UsageAppNames: UsageAppName[] = ["jetbrains", "reconnecting-pty", "ssh", "vscode"] + +// From codersdk/users.go +export type UserStatus = "active" | "dormant" | "suspended" +export const UserStatuses: UserStatus[] = ["active", "dormant", "suspended"] + +// From codersdk/templateversions.go +export type ValidationMonotonicOrder = "decreasing" | "increasing" +export const ValidationMonotonicOrders: ValidationMonotonicOrder[] = ["decreasing", "increasing"] + +// From codersdk/workspaceagents.go +export type WorkspaceAgentLifecycle = "created" | "off" | "ready" | "shutdown_error" | "shutdown_timeout" | "shutting_down" | "start_error" | "start_timeout" | "starting" +export const WorkspaceAgentLifecycles: WorkspaceAgentLifecycle[] = ["created", "off", "ready", "shutdown_error", "shutdown_timeout", "shutting_down", "start_error", "start_timeout", "starting"] + +// From codersdk/workspaceagentportshare.go +export type WorkspaceAgentPortShareLevel = "authenticated" | "owner" | "public" +export const WorkspaceAgentPortShareLevels: WorkspaceAgentPortShareLevel[] = ["authenticated", "owner", "public"] + +// From codersdk/workspaceagentportshare.go +export type WorkspaceAgentPortShareProtocol = "http" | "https" +export const WorkspaceAgentPortShareProtocols: WorkspaceAgentPortShareProtocol[] = ["http", "https"] + +// From codersdk/workspaceagents.go +export type WorkspaceAgentStartupScriptBehavior = "blocking" | "non-blocking" +export const WorkspaceAgentStartupScriptBehaviors: WorkspaceAgentStartupScriptBehavior[] = ["blocking", "non-blocking"] + +// From codersdk/workspaceagents.go +export type WorkspaceAgentStatus = "connected" | "connecting" | "disconnected" | "timeout" +export const WorkspaceAgentStatuses: WorkspaceAgentStatus[] = ["connected", "connecting", "disconnected", "timeout"] + +// From codersdk/workspaceapps.go +export type WorkspaceAppHealth = "disabled" | "healthy" | "initializing" | "unhealthy" +export const WorkspaceAppHealths: WorkspaceAppHealth[] = ["disabled", "healthy", "initializing", "unhealthy"] + +// From codersdk/workspaceapps.go +export type WorkspaceAppSharingLevel = "authenticated" | "owner" | "public" +export const WorkspaceAppSharingLevels: WorkspaceAppSharingLevel[] = ["authenticated", "owner", "public"] + +// From codersdk/workspacebuilds.go +export type WorkspaceStatus = "canceled" | "canceling" | "deleted" | "deleting" | "failed" | "pending" | "running" | "starting" | "stopped" | "stopping" +export const WorkspaceStatuses: WorkspaceStatus[] = ["canceled", "canceling", "deleted", "deleting", "failed", "pending", "running", "starting", "stopped", "stopping"] + +// From codersdk/workspacebuilds.go +export type WorkspaceTransition = "delete" | "start" | "stop" +export const WorkspaceTransitions: WorkspaceTransition[] = ["delete", "start", "stop"] + +// From codersdk/workspaceproxy.go +export type RegionTypes = Region | WorkspaceProxy + +// The code below is generated from codersdk/healthsdk. + +// From healthsdk/healthsdk.go +export interface AccessURLReport extends BaseReport { + readonly healthy: boolean; + readonly access_url: string; + readonly reachable: boolean; + readonly status_code: number; + readonly healthz_response: string; +} + +// From healthsdk/healthsdk.go +export interface BaseReport { + readonly error?: string; + readonly severity: HealthSeverity; + readonly warnings: Readonly>; + readonly dismissed: boolean; +} + +// From healthsdk/healthsdk.go +export interface DERPHealthReport extends BaseReport { + readonly healthy: boolean; + readonly regions: Record; + // TODO: narrow this type + readonly netcheck?: any; + readonly netcheck_err?: string; + readonly netcheck_logs: Readonly>; +} + +// From healthsdk/healthsdk.go +export interface DERPNodeReport { + readonly healthy: boolean; + readonly severity: HealthSeverity; + readonly warnings: Readonly>; + readonly error?: string; + // TODO: narrow this type + readonly node?: any; + // TODO: narrow this type + readonly node_info: any; + readonly can_exchange_messages: boolean; + readonly round_trip_ping: string; + readonly round_trip_ping_ms: number; + readonly uses_websocket: boolean; + readonly client_logs: Readonly>>>; + readonly client_errs: Readonly>>>; + readonly stun: STUNReport; +} + +// From healthsdk/healthsdk.go +export interface DERPRegionReport { + readonly healthy: boolean; + readonly severity: HealthSeverity; + readonly warnings: Readonly>; + readonly error?: string; + // TODO: narrow this type + readonly region?: any; + readonly node_reports: Readonly>; +} + +// From healthsdk/healthsdk.go +export interface DatabaseReport extends BaseReport { + readonly healthy: boolean; + readonly reachable: boolean; + readonly latency: string; + readonly latency_ms: number; + readonly threshold_ms: number; +} + +// From healthsdk/healthsdk.go +export interface HealthSettings { + readonly dismissed_healthchecks: Readonly>; +} + +// From healthsdk/healthsdk.go +export interface HealthcheckReport { + readonly time: string; + readonly healthy: boolean; + readonly severity: HealthSeverity; + readonly derp: DERPHealthReport; + readonly access_url: AccessURLReport; + readonly websocket: WebsocketReport; + readonly database: DatabaseReport; + readonly workspace_proxy: WorkspaceProxyReport; + readonly provisioner_daemons: ProvisionerDaemonsReport; + readonly coder_version: string; +} + +// From healthsdk/healthsdk.go +export interface ProvisionerDaemonsReport extends BaseReport { + readonly items: Readonly>; +} + +// From healthsdk/healthsdk.go +export interface ProvisionerDaemonsReportItem { + readonly provisioner_daemon: ProvisionerDaemon; + readonly warnings: Readonly>; +} + +// From healthsdk/healthsdk.go +export interface STUNReport { + readonly Enabled: boolean; + readonly CanSTUN: boolean; + readonly Error?: string; +} + +// From healthsdk/healthsdk.go +export interface UpdateHealthSettings { + readonly dismissed_healthchecks: Readonly>; +} + +// From healthsdk/healthsdk.go +export interface WebsocketReport extends BaseReport { + readonly healthy: boolean; + readonly body: string; + readonly code: number; +} + +// From healthsdk/healthsdk.go +export interface WorkspaceProxyReport extends BaseReport { + readonly healthy: boolean; + readonly workspace_proxies: RegionsResponse; +} + +// From healthsdk/healthsdk.go +export type HealthSection = "AccessURL" | "DERP" | "Database" | "ProvisionerDaemons" | "Websocket" | "WorkspaceProxy" +export const HealthSections: HealthSection[] = ["AccessURL", "DERP", "Database", "ProvisionerDaemons", "Websocket", "WorkspaceProxy"] + +// The code below is generated from coderd/healthcheck/health. + +// From health/model.go +export interface HealthMessage { + readonly code: HealthCode; + readonly message: string; +} + +// From health/model.go +export type HealthCode = "EACS01" | "EACS02" | "EACS03" | "EACS04" | "EDB01" | "EDB02" | "EDERP01" | "EDERP02" | "EPD01" | "EPD02" | "EPD03" | "EUNKNOWN" | "EWP01" | "EWP02" | "EWP04" | "EWS01" | "EWS02" | "EWS03" +export const HealthCodes: HealthCode[] = ["EACS01", "EACS02", "EACS03", "EACS04", "EDB01", "EDB02", "EDERP01", "EDERP02", "EPD01", "EPD02", "EPD03", "EUNKNOWN", "EWP01", "EWP02", "EWP04", "EWS01", "EWS02", "EWS03"] + +// From health/model.go +export type HealthSeverity = "error" | "ok" | "warning" +export const HealthSeveritys: HealthSeverity[] = ["error", "ok", "warning"] + +// The code below is generated from github.com/coder/serpent. + +// From serpent/serpent.go +export type SerpentAnnotations = Record + +// From serpent/serpent.go +export interface SerpentGroup { + readonly parent?: SerpentGroup; + readonly name?: string; + readonly yaml?: string; + readonly description?: string; +} + +// From serpent/option.go +export interface SerpentOption { + readonly name?: string; + readonly description?: string; + readonly required?: boolean; + readonly flag?: string; + readonly flag_shorthand?: string; + readonly env?: string; + readonly yaml?: string; + readonly default?: string; + // TODO: narrow this type + readonly value?: any; + readonly annotations?: SerpentAnnotations; + readonly group?: SerpentGroup; + readonly use_instead?: Readonly>; + readonly hidden?: boolean; + readonly value_source?: SerpentValueSource; +} + +// From serpent/option.go +export type SerpentOptionSet = Readonly> + +// From serpent/option.go +export type SerpentValueSource = "" | "default" | "env" | "flag" | "yaml" +export const SerpentValueSources: SerpentValueSource[] = ["", "default", "env", "flag", "yaml"] diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 75162f72edd76..5fb58e23ef9b8 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -2,8 +2,8 @@ // From codersdk/templates.go export interface ACLAvailable { - readonly users: ReducedUser[]; - readonly groups: Group[]; + readonly users: readonly ReducedUser[]; + readonly groups: readonly Group[]; } // From codersdk/apikey.go @@ -30,6 +30,15 @@ export interface APIKeyWithOwner extends APIKey { readonly username: string; } +// From healthsdk/healthsdk.go +export interface AccessURLReport extends BaseReport { + readonly healthy: boolean; + readonly access_url: string; + readonly reachable: boolean; + readonly status_code: number; + readonly healthz_response: string; +} + // From codersdk/licenses.go export interface AddLicenseRequest { readonly license: string; @@ -83,8 +92,8 @@ export interface AppearanceConfig { readonly logo_url: string; readonly docs_url: string; readonly service_banner: BannerConfig; - readonly announcement_banners: BannerConfig[]; - readonly support_links?: LinkConfig[]; + readonly announcement_banners: readonly BannerConfig[]; + readonly support_links?: readonly LinkConfig[]; } // From codersdk/templates.go @@ -95,7 +104,7 @@ export interface ArchiveTemplateVersionsRequest { // From codersdk/templates.go export interface ArchiveTemplateVersionsResponse { readonly template_id: string; - readonly archived_ids: string[]; + readonly archived_ids: readonly string[]; } // From codersdk/roles.go @@ -165,7 +174,7 @@ export interface AuditLog { // From codersdk/audit.go export interface AuditLogResponse { - readonly audit_logs: AuditLog[]; + readonly audit_logs: readonly AuditLog[]; readonly count: number; } @@ -217,7 +226,7 @@ export const AutomaticUpdatess: AutomaticUpdates[] = ["always", "never"]; // From codersdk/deployment.go export interface AvailableExperiments { - readonly safe: Experiment[]; + readonly safe: readonly Experiment[]; } // From codersdk/deployment.go @@ -227,6 +236,14 @@ export interface BannerConfig { readonly background_color?: string; } +// From healthsdk/healthsdk.go +export interface BaseReport { + readonly error: string | null; + readonly severity: HealthSeverity; + readonly warnings: readonly HealthMessage[]; + readonly dismissed: boolean; +} + // From codersdk/deployment.go export interface BuildInfoResponse { readonly external_url: string; @@ -362,8 +379,8 @@ export interface CreateTemplateRequest { // From codersdk/templateversions.go export interface CreateTemplateVersionDryRunRequest { readonly workspace_name: string; - readonly rich_parameter_values: WorkspaceBuildParameter[]; - readonly user_variable_values?: VariableValue[]; + readonly rich_parameter_values: readonly WorkspaceBuildParameter[]; + readonly user_variable_values?: readonly VariableValue[]; } // From codersdk/organizations.go @@ -376,7 +393,7 @@ export interface CreateTemplateVersionRequest { readonly example_id?: string; readonly provisioner: ProvisionerType; readonly tags: Record; - readonly user_variable_values?: VariableValue[]; + readonly user_variable_values?: readonly VariableValue[]; } // From codersdk/audit.go @@ -405,7 +422,7 @@ export interface CreateUserRequestWithOrgs { readonly password: string; readonly login_type: LoginType; readonly user_status: UserStatus | null; - readonly organization_ids: string[]; + readonly organization_ids: readonly string[]; } // From codersdk/workspaces.go @@ -413,9 +430,9 @@ export interface CreateWorkspaceBuildRequest { readonly template_version_id?: string; readonly transition: WorkspaceTransition; readonly dry_run?: boolean; - readonly state?: string[]; + readonly state?: readonly string[]; readonly orphan?: boolean; - readonly rich_parameter_values?: WorkspaceBuildParameter[]; + readonly rich_parameter_values?: readonly WorkspaceBuildParameter[]; readonly log_level?: ProvisionerLogLevel; } @@ -433,7 +450,7 @@ export interface CreateWorkspaceRequest { readonly name: string; readonly autostart_schedule: string | null; readonly ttl_ms?: number | null; - readonly rich_parameter_values?: WorkspaceBuildParameter[]; + readonly rich_parameter_values?: readonly WorkspaceBuildParameter[]; readonly automatic_updates?: AutomaticUpdates; } @@ -464,9 +481,9 @@ export const CryptoKeyFeatures: CryptoKeyFeature[] = [ export interface CustomRoleRequest { readonly name: string; readonly display_name: string; - readonly site_permissions: Permission[]; - readonly organization_permissions: Permission[]; - readonly user_permissions: Permission[]; + readonly site_permissions: readonly Permission[]; + readonly organization_permissions: readonly Permission[]; + readonly user_permissions: readonly Permission[]; } // From codersdk/deployment.go @@ -482,7 +499,7 @@ export interface DAURequest { // From codersdk/deployment.go export interface DAUsResponse { - readonly entries: DAUEntry[]; + readonly entries: readonly DAUEntry[]; readonly tz_hour_offset: number; } @@ -500,12 +517,52 @@ export interface DERPConfig { readonly path: string; } +// From healthsdk/healthsdk.go +export interface DERPHealthReport extends BaseReport { + readonly healthy: boolean; + readonly regions: Record; + // Invalid type, using 'any'. Might be a reference to any external package + readonly netcheck: any | null; + readonly netcheck_err: string | null; + readonly netcheck_logs: readonly string[]; +} + +// From healthsdk/healthsdk.go +export interface DERPNodeReport { + readonly healthy: boolean; + readonly severity: HealthSeverity; + readonly warnings: readonly HealthMessage[]; + readonly error: string | null; + // Invalid type, using 'any'. Might be a reference to any external package + readonly node: any | null; + // Invalid type, using 'any'. Might be a reference to any external package + readonly node_info: any; + readonly can_exchange_messages: boolean; + readonly round_trip_ping: string; + readonly round_trip_ping_ms: number; + readonly uses_websocket: boolean; + readonly client_logs: readonly string[][]; + readonly client_errs: readonly string[][]; + readonly stun: STUNReport; +} + // From codersdk/workspaceagents.go export interface DERPRegion { readonly preferred: boolean; readonly latency_ms: number; } +// From healthsdk/healthsdk.go +export interface DERPRegionReport { + readonly healthy: boolean; + readonly severity: HealthSeverity; + readonly warnings: readonly HealthMessage[]; + readonly error: string | null; + // Invalid type, using 'any'. Might be a reference to any external package + readonly region: any | null; + readonly node_reports: readonly (DERPNodeReport | null)[]; +} + // From codersdk/deployment.go export interface DERPServerConfig { readonly enable: boolean; @@ -523,6 +580,15 @@ export interface DangerousConfig { readonly allow_all_cors: boolean; } +// From healthsdk/healthsdk.go +export interface DatabaseReport extends BaseReport { + readonly healthy: boolean; + readonly reachable: boolean; + readonly latency: string; + readonly latency_ms: number; + readonly threshold_ms: number; +} + // From codersdk/workspaceagentportshare.go export interface DeleteWorkspaceAgentPortShareRequest { readonly agent_name: string; @@ -654,8 +720,8 @@ export type Entitlement = "entitled" | "grace_period" | "not_entitled"; // From codersdk/deployment.go export interface Entitlements { readonly features: Record; - readonly warnings: string[]; - readonly errors: string[]; + readonly warnings: readonly string[]; + readonly errors: readonly string[]; readonly has_license: boolean; readonly trial: boolean; readonly require_telemetry: boolean; @@ -682,7 +748,7 @@ export interface ExternalAuth { readonly display_name: string; readonly user: ExternalAuthUser | null; readonly app_installable: boolean; - readonly installations: ExternalAuthAppInstallation[]; + readonly installations: readonly ExternalAuthAppInstallation[]; readonly app_install_url: string; } @@ -704,7 +770,7 @@ export interface ExternalAuthConfig { readonly app_install_url: string; readonly app_installations_url: string; readonly no_refresh: boolean; - readonly scopes: string[]; + readonly scopes: readonly string[]; readonly device_flow: boolean; readonly device_code_url: string; readonly regex: string; @@ -822,7 +888,7 @@ export interface GenerateAPIKeyResponse { // From codersdk/users.go export interface GetUsersResponse { - readonly users: User[]; + readonly users: readonly User[]; readonly count: number; } @@ -840,7 +906,7 @@ export interface Group { readonly name: string; readonly display_name: string; readonly organization_id: string; - readonly members: ReducedUser[]; + readonly members: readonly ReducedUser[]; readonly total_member_count: number; readonly avatar_url: string; readonly quota_allowance: number; @@ -853,7 +919,7 @@ export interface Group { export interface GroupArguments { readonly Organization: string; readonly HasMember: string; - readonly GroupIDs: string[]; + readonly GroupIDs: readonly string[]; } // From codersdk/groups.go @@ -927,6 +993,29 @@ export interface HealthMessage { readonly message: string; } +// From healthsdk/healthsdk.go +export type HealthSection = + | "AccessURL" + | "DERP" + | "Database" + | "ProvisionerDaemons" + | "Websocket" + | "WorkspaceProxy"; + +export const HealthSections: HealthSection[] = [ + "AccessURL", + "DERP", + "Database", + "ProvisionerDaemons", + "Websocket", + "WorkspaceProxy", +]; + +// From healthsdk/healthsdk.go +export interface HealthSettings { + readonly dismissed_healthchecks: readonly HealthSection[]; +} + // From health/model.go export type HealthSeverity = "error" | "ok" | "warning"; @@ -945,6 +1034,20 @@ export interface HealthcheckConfig { readonly threshold_database: number; } +// From healthsdk/healthsdk.go +export interface HealthcheckReport { + readonly time: string; + readonly healthy: boolean; + readonly severity: HealthSeverity; + readonly derp: DERPHealthReport; + readonly access_url: AccessURLReport; + readonly websocket: WebsocketReport; + readonly database: DatabaseReport; + readonly workspace_proxy: WorkspaceProxyReport; + readonly provisioner_daemons: ProvisionerDaemonsReport; + readonly coder_version: string; +} + // From codersdk/insights.go export type InsightsReportInterval = "day" | "week"; @@ -1000,8 +1103,8 @@ export interface LinkConfig { // From codersdk/externalauth.go export interface ListUserExternalAuthResponse { - readonly providers: ExternalAuthLinkProvider[]; - readonly links: ExternalAuthLink[]; + readonly providers: readonly ExternalAuthLinkProvider[]; + readonly links: readonly ExternalAuthLink[]; } // From codersdk/provisionerdaemons.go @@ -1075,7 +1178,7 @@ export interface MinimalUser { // From codersdk/notifications.go export interface NotificationMethodsResponse { - readonly available: string[]; + readonly available: readonly string[]; readonly default: string; } @@ -1283,7 +1386,7 @@ export interface OrganizationMember { readonly organization_id: string; readonly created_at: string; readonly updated_at: string; - readonly roles: SlimRole[]; + readonly roles: readonly SlimRole[]; } // From codersdk/organizations.go @@ -1292,7 +1395,7 @@ export interface OrganizationMemberWithUserData extends OrganizationMember { readonly name: string; readonly avatar_url: string; readonly email: string; - readonly global_roles: SlimRole[]; + readonly global_roles: readonly SlimRole[]; } // From codersdk/idpsync.go @@ -1311,8 +1414,8 @@ export interface Pagination { // From codersdk/groups.go export interface PatchGroupRequest { - readonly add_users: string[]; - readonly remove_users: string[]; + readonly add_users: readonly string[]; + readonly remove_users: readonly string[]; readonly name: string; readonly display_name: string | null; readonly avatar_url: string | null; @@ -1397,7 +1500,7 @@ export interface ProvisionerDaemon { readonly name: string; readonly version: string; readonly api_version: string; - readonly provisioners: ProvisionerType[]; + readonly provisioners: readonly ProvisionerType[]; readonly tags: Record; } @@ -1407,6 +1510,17 @@ export const ProvisionerDaemonKey = "Coder-Provisioner-Daemon-Key"; // From codersdk/client.go export const ProvisionerDaemonPSK = "Coder-Provisioner-Daemon-PSK"; +// From healthsdk/healthsdk.go +export interface ProvisionerDaemonsReport extends BaseReport { + readonly items: readonly ProvisionerDaemonsReportItem[]; +} + +// From healthsdk/healthsdk.go +export interface ProvisionerDaemonsReportItem { + readonly provisioner_daemon: ProvisionerDaemon; + readonly warnings: readonly HealthMessage[]; +} + // From codersdk/provisionerdaemons.go export interface ProvisionerJob { readonly id: string; @@ -1466,7 +1580,7 @@ export interface ProvisionerKey { // From codersdk/provisionerdaemons.go export interface ProvisionerKeyDaemons { readonly key: ProvisionerKey; - readonly daemons: ProvisionerDaemon[]; + readonly daemons: readonly ProvisionerDaemon[]; } // From codersdk/provisionerdaemons.go @@ -1518,8 +1632,8 @@ export const ProvisionerTypes: ProvisionerType[] = ["echo", "terraform"]; // From codersdk/workspaceproxy.go export interface ProxyHealthReport { - readonly errors: string[]; - readonly warnings: string[]; + readonly errors: readonly string[]; + readonly warnings: readonly string[]; } // From codersdk/workspaceproxy.go @@ -1684,7 +1798,7 @@ export type RegionTypes = Region | WorkspaceProxy; // From codersdk/workspaceproxy.go export interface RegionsResponse { - readonly regions: R[]; + readonly regions: readonly R[]; } // From codersdk/replicas.go @@ -1758,7 +1872,7 @@ export const ResourceTypes: ResourceType[] = [ export interface Response { readonly message: string; readonly detail?: string; - readonly validations?: ValidationError[]; + readonly validations?: readonly ValidationError[]; } // From codersdk/roles.go @@ -1766,9 +1880,9 @@ export interface Role { readonly name: string; readonly organization_id?: string; readonly display_name: string; - readonly site_permissions: Permission[]; - readonly organization_permissions: Permission[]; - readonly user_permissions: Permission[]; + readonly site_permissions: readonly Permission[]; + readonly organization_permissions: readonly Permission[]; + readonly user_permissions: readonly Permission[]; } // From codersdk/rbacroles.go @@ -1819,6 +1933,13 @@ export interface SSHConfigResponse { readonly ssh_config_options: Record; } +// From healthsdk/healthsdk.go +export interface STUNReport { + readonly Enabled: boolean; + readonly CanSTUN: boolean; + readonly Error: string | null; +} + // From serpent/serpent.go export type SerpentAnnotations = Record; @@ -1845,7 +1966,7 @@ export interface SerpentOption { readonly value?: unknown; readonly annotations?: SerpentAnnotations; readonly group?: SerpentGroup | null; - readonly use_instead?: SerpentOption[]; + readonly use_instead?: readonly SerpentOption[]; readonly hidden?: boolean; readonly value_source?: SerpentValueSource; } @@ -1854,10 +1975,7 @@ export interface SerpentOption { export type SerpentOptionSet = SerpentOption[]; // From serpent/values.go -// biome-ignore lint lint/complexity/noUselessTypeConstraint: golang does 'any' for generics, typescript does not like it -export interface SerpentStruct { - readonly Value: SerpentT; -} +export type SerpentStruct = T; // From serpent/option.go export type SerpentValueSource = string; @@ -1994,13 +2112,13 @@ export interface Template { // From codersdk/templates.go export interface TemplateACL { - readonly users: TemplateUser[]; - readonly group: TemplateGroup[]; + readonly users: readonly TemplateUser[]; + readonly group: readonly TemplateGroup[]; } // From codersdk/insights.go export interface TemplateAppUsage { - readonly template_ids: string[]; + readonly template_ids: readonly string[]; readonly type: TemplateAppsType; readonly display_name: string; readonly slug: string; @@ -2016,12 +2134,12 @@ export const TemplateAppsTypes: TemplateAppsType[] = ["app", "builtin"]; // From codersdk/templates.go export interface TemplateAutostartRequirement { - readonly days_of_week: string[]; + readonly days_of_week: readonly string[]; } // From codersdk/templates.go export interface TemplateAutostopRequirement { - readonly days_of_week: string[]; + readonly days_of_week: readonly string[]; readonly weeks: number; } @@ -2053,7 +2171,7 @@ export interface TemplateExample { readonly name: string; readonly description: string; readonly icon: string; - readonly tags: string[]; + readonly tags: readonly string[]; readonly markdown: string; } @@ -2071,7 +2189,7 @@ export interface TemplateGroup extends Group { export interface TemplateInsightsIntervalReport { readonly start_time: string; readonly end_time: string; - readonly template_ids: string[]; + readonly template_ids: readonly string[]; readonly interval: InsightsReportInterval; readonly active_users: number; } @@ -2080,25 +2198,25 @@ export interface TemplateInsightsIntervalReport { export interface TemplateInsightsReport { readonly start_time: string; readonly end_time: string; - readonly template_ids: string[]; + readonly template_ids: readonly string[]; readonly active_users: number; - readonly apps_usage: TemplateAppUsage[]; - readonly parameters_usage: TemplateParameterUsage[]; + readonly apps_usage: readonly TemplateAppUsage[]; + readonly parameters_usage: readonly TemplateParameterUsage[]; } // From codersdk/insights.go export interface TemplateInsightsRequest { readonly start_time: string; readonly end_time: string; - readonly template_ids: string[]; + readonly template_ids: readonly string[]; readonly interval: InsightsReportInterval; - readonly sections: TemplateInsightsSection[]; + readonly sections: readonly TemplateInsightsSection[]; } // From codersdk/insights.go export interface TemplateInsightsResponse { readonly report?: TemplateInsightsReport | null; - readonly interval_reports?: TemplateInsightsIntervalReport[]; + readonly interval_reports?: readonly TemplateInsightsIntervalReport[]; } // From codersdk/insights.go @@ -2111,13 +2229,13 @@ export const TemplateInsightsSections: TemplateInsightsSection[] = [ // From codersdk/insights.go export interface TemplateParameterUsage { - readonly template_ids: string[]; + readonly template_ids: readonly string[]; readonly display_name: string; readonly name: string; readonly type: string; readonly description: string; - readonly options?: TemplateVersionParameterOption[]; - readonly values: TemplateParameterValue[]; + readonly options?: readonly TemplateVersionParameterOption[]; + readonly values: readonly TemplateParameterValue[]; } // From codersdk/insights.go @@ -2149,7 +2267,7 @@ export interface TemplateVersion { readonly readme: string; readonly created_by: MinimalUser; readonly archived: boolean; - readonly warnings?: TemplateVersionWarning[]; + readonly warnings?: readonly TemplateVersionWarning[]; readonly matched_provisioners?: MatchedProvisioners | null; } @@ -2174,7 +2292,7 @@ export interface TemplateVersionParameter { readonly mutable: boolean; readonly default_value: string; readonly icon: string; - readonly options: TemplateVersionParameterOption[]; + readonly options: readonly TemplateVersionParameterOption[]; readonly validation_error?: string; readonly validation_regex?: string; readonly validation_min?: number | null; @@ -2272,7 +2390,7 @@ export interface UpdateAppearanceConfig { readonly application_name: string; readonly logo_url: string; readonly service_banner: BannerConfig; - readonly announcement_banners: BannerConfig[]; + readonly announcement_banners: readonly BannerConfig[]; } // From codersdk/updatecheck.go @@ -2282,6 +2400,11 @@ export interface UpdateCheckResponse { readonly url: string; } +// From healthsdk/healthsdk.go +export interface UpdateHealthSettings { + readonly dismissed_healthchecks: readonly HealthSection[]; +} + // From codersdk/notifications.go export interface UpdateNotificationTemplateMethod { readonly method?: string; @@ -2297,7 +2420,7 @@ export interface UpdateOrganizationRequest { // From codersdk/users.go export interface UpdateRoles { - readonly roles: string[]; + readonly roles: readonly string[]; } // From codersdk/templates.go @@ -2413,13 +2536,13 @@ export const UsageAppNames: UsageAppName[] = [ // From codersdk/users.go export interface User extends ReducedUser { - readonly organization_ids: string[]; - readonly roles: SlimRole[]; + readonly organization_ids: readonly string[]; + readonly roles: readonly SlimRole[]; } // From codersdk/insights.go export interface UserActivity { - readonly template_ids: string[]; + readonly template_ids: readonly string[]; readonly user_id: string; readonly username: string; readonly avatar_url: string; @@ -2430,15 +2553,15 @@ export interface UserActivity { export interface UserActivityInsightsReport { readonly start_time: string; readonly end_time: string; - readonly template_ids: string[]; - readonly users: UserActivity[]; + readonly template_ids: readonly string[]; + readonly users: readonly UserActivity[]; } // From codersdk/insights.go export interface UserActivityInsightsRequest { readonly start_time: string; readonly end_time: string; - readonly template_ids: string[]; + readonly template_ids: readonly string[]; } // From codersdk/insights.go @@ -2448,7 +2571,7 @@ export interface UserActivityInsightsResponse { // From codersdk/insights.go export interface UserLatency { - readonly template_ids: string[]; + readonly template_ids: readonly string[]; readonly user_id: string; readonly username: string; readonly avatar_url: string; @@ -2459,15 +2582,15 @@ export interface UserLatency { export interface UserLatencyInsightsReport { readonly start_time: string; readonly end_time: string; - readonly template_ids: string[]; - readonly users: UserLatency[]; + readonly template_ids: readonly string[]; + readonly users: readonly UserLatency[]; } // From codersdk/insights.go export interface UserLatencyInsightsRequest { readonly start_time: string; readonly end_time: string; - readonly template_ids: string[]; + readonly template_ids: readonly string[]; } // From codersdk/insights.go @@ -2504,7 +2627,7 @@ export interface UserQuietHoursScheduleResponse { // From codersdk/users.go export interface UserRoles { - readonly roles: string[]; + readonly roles: readonly string[]; readonly organization_roles: Record; } @@ -2549,6 +2672,13 @@ export interface VariableValue { readonly value: string; } +// From healthsdk/healthsdk.go +export interface WebsocketReport extends BaseReport { + readonly healthy: boolean; + readonly body: string; + readonly code: number; +} + // From codersdk/workspaces.go export interface Workspace { readonly id: string; @@ -2605,15 +2735,15 @@ export interface WorkspaceAgent { readonly expanded_directory?: string; readonly version: string; readonly api_version: string; - readonly apps: WorkspaceApp[]; + readonly apps: readonly WorkspaceApp[]; readonly latency?: Record; readonly connection_timeout_seconds: number; readonly troubleshooting_url: string; - readonly subsystems: AgentSubsystem[]; + readonly subsystems: readonly AgentSubsystem[]; readonly health: WorkspaceAgentHealth; - readonly display_apps: DisplayApp[]; - readonly log_sources: WorkspaceAgentLogSource[]; - readonly scripts: WorkspaceAgentScript[]; + readonly display_apps: readonly DisplayApp[]; + readonly log_sources: readonly WorkspaceAgentLogSource[]; + readonly scripts: readonly WorkspaceAgentScript[]; readonly startup_script_behavior: WorkspaceAgentStartupScriptBehavior; } @@ -2656,7 +2786,7 @@ export interface WorkspaceAgentListeningPort { // From codersdk/workspaceagents.go export interface WorkspaceAgentListeningPortsResponse { - readonly ports: WorkspaceAgentListeningPort[]; + readonly ports: readonly WorkspaceAgentListeningPort[]; } // From codersdk/workspaceagents.go @@ -2726,7 +2856,7 @@ export const WorkspaceAgentPortShareProtocols: WorkspaceAgentPortShareProtocol[] // From codersdk/workspaceagentportshare.go export interface WorkspaceAgentPortShares { - readonly shares: WorkspaceAgentPortShare[]; + readonly shares: readonly WorkspaceAgentPortShare[]; } // From codersdk/workspaceagents.go @@ -2821,7 +2951,7 @@ export interface WorkspaceBuild { readonly initiator_name: string; readonly job: ProvisionerJob; readonly reason: BuildReason; - readonly resources: WorkspaceResource[]; + readonly resources: readonly WorkspaceResource[]; readonly deadline?: string; readonly max_deadline?: string; readonly status: WorkspaceStatus; @@ -2837,9 +2967,9 @@ export interface WorkspaceBuildParameter { // From codersdk/workspacebuilds.go export interface WorkspaceBuildTimings { - readonly provisioner_timings: ProvisionerTiming[]; - readonly agent_script_timings: AgentScriptTiming[]; - readonly agent_connection_timings: AgentConnectionTiming[]; + readonly provisioner_timings: readonly ProvisionerTiming[]; + readonly agent_script_timings: readonly AgentScriptTiming[]; + readonly agent_connection_timings: readonly AgentConnectionTiming[]; } // From codersdk/workspaces.go @@ -2873,7 +3003,7 @@ export interface WorkspaceFilter { // From codersdk/workspaces.go export interface WorkspaceHealth { readonly healthy: boolean; - readonly failing_agents: string[]; + readonly failing_agents: readonly string[]; } // From codersdk/workspaces.go @@ -2898,6 +3028,12 @@ export interface WorkspaceProxyBuildInfo { readonly dashboard_url: string; } +// From healthsdk/healthsdk.go +export interface WorkspaceProxyReport extends BaseReport { + readonly healthy: boolean; + readonly workspace_proxies: RegionsResponse; +} + // From codersdk/workspaceproxy.go export interface WorkspaceProxyStatus { readonly status: ProxyHealthStatus; @@ -2921,8 +3057,8 @@ export interface WorkspaceResource { readonly name: string; readonly hide: boolean; readonly icon: string; - readonly agents?: WorkspaceAgent[]; - readonly metadata?: WorkspaceResourceMetadata[]; + readonly agents?: readonly WorkspaceAgent[]; + readonly metadata?: readonly WorkspaceResourceMetadata[]; readonly daily_cost: number; } @@ -2975,7 +3111,7 @@ export interface WorkspacesRequest extends Pagination { // From codersdk/workspaces.go export interface WorkspacesResponse { - readonly workspaces: Workspace[]; + readonly workspaces: readonly Workspace[]; readonly count: number; } @@ -2994,5 +3130,8 @@ export const annotationSecretKey = "secret"; // From codersdk/insights.go export const insightsTimeLayout = "2006-01-02T15:04:05Z07:00"; +// From healthsdk/interfaces.go +export const safeMTU = 1378; + // From codersdk/workspacedisplaystatus.go export const unknownStatus = "Unknown"; From d5c95205e4617730cf5d24842aac9cba50b373fc Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 14:44:23 -0600 Subject: [PATCH 10/20] pluralize words in enums --- scripts/apitypings/go.mod | 4 +--- scripts/apitypings/go.sum | 2 ++ site/src/api/typesGenerated.ts | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod index 7590fa22eb08f..21e916c7c26c9 100644 --- a/scripts/apitypings/go.mod +++ b/scripts/apitypings/go.mod @@ -6,7 +6,7 @@ toolchain go1.23.3 require ( github.com/coder/coder/v2 v2.0.0-00010101000000-000000000000 - github.com/coder/guts v0.0.0-20241209185925-e72f1f13edf1 + github.com/coder/guts v0.0.0-20241209204333-b551377ecafa github.com/coder/serpent v0.10.0 github.com/stretchr/testify v1.10.0 ) @@ -133,5 +133,3 @@ require ( ) replace github.com/coder/coder/v2 => ../../ - -replace github.com/coder/guts => /home/steven/go/src/github.com/coder/guts diff --git a/scripts/apitypings/go.sum b/scripts/apitypings/go.sum index 57c51ac492042..77d9de5101de5 100644 --- a/scripts/apitypings/go.sum +++ b/scripts/apitypings/go.sum @@ -66,6 +66,8 @@ github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/coder/guts v0.0.0-20241209204333-b551377ecafa h1:mZcghJk1kvBjBsQuzm6spMfvQrtxnXenrhovz9QCkjs= +github.com/coder/guts v0.0.0-20241209204333-b551377ecafa/go.mod h1:VEiS5EvQZB30BVuAhK6QzbUEITxXIGz4771teg2fKGk= 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/serpent v0.10.0 h1:ofVk9FJXSek+SmL3yVE3GoArP83M+1tX+H7S4t8BSuM= diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 5fb58e23ef9b8..9faea80fcaf9e 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -222,7 +222,7 @@ export type AuthorizationResponse = Record; // From codersdk/workspaces.go export type AutomaticUpdates = "always" | "never"; -export const AutomaticUpdatess: AutomaticUpdates[] = ["always", "never"]; +export const AutomaticUpdateses: AutomaticUpdates[] = ["always", "never"]; // From codersdk/deployment.go export interface AvailableExperiments { @@ -1558,7 +1558,7 @@ export type ProvisionerJobStatus = | "succeeded" | "unknown"; -export const ProvisionerJobStatuss: ProvisionerJobStatus[] = [ +export const ProvisionerJobStatuses: ProvisionerJobStatus[] = [ "canceled", "canceling", "failed", @@ -1643,7 +1643,7 @@ export type ProxyHealthStatus = | "unreachable" | "unregistered"; -export const ProxyHealthStatuss: ProxyHealthStatus[] = [ +export const ProxyHealthStatuses: ProxyHealthStatus[] = [ "ok", "unhealthy", "unreachable", @@ -2634,7 +2634,7 @@ export interface UserRoles { // From codersdk/users.go export type UserStatus = "active" | "dormant" | "suspended"; -export const UserStatuss: UserStatus[] = ["active", "dormant", "suspended"]; +export const UserStatuses: UserStatus[] = ["active", "dormant", "suspended"]; // From codersdk/users.go export interface UsersRequest extends Pagination { @@ -2886,7 +2886,7 @@ export type WorkspaceAgentStatus = | "disconnected" | "timeout"; -export const WorkspaceAgentStatuss: WorkspaceAgentStatus[] = [ +export const WorkspaceAgentStatuses: WorkspaceAgentStatus[] = [ "connected", "connecting", "disconnected", @@ -3082,7 +3082,7 @@ export type WorkspaceStatus = | "stopped" | "stopping"; -export const WorkspaceStatuss: WorkspaceStatus[] = [ +export const WorkspaceStatuses: WorkspaceStatus[] = [ "canceled", "canceling", "deleted", From b663db8188786eb19a244d404912c16deca7a996 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 14:48:37 -0600 Subject: [PATCH 11/20] remove old gen --- scripts/apitypings/typesgenerated.ts | 2505 -------------------------- 1 file changed, 2505 deletions(-) delete mode 100644 scripts/apitypings/typesgenerated.ts diff --git a/scripts/apitypings/typesgenerated.ts b/scripts/apitypings/typesgenerated.ts deleted file mode 100644 index 8c68b5db76bd5..0000000000000 --- a/scripts/apitypings/typesgenerated.ts +++ /dev/null @@ -1,2505 +0,0 @@ -// Code generated by 'make site/src/api/typesGenerated.ts'. DO NOT EDIT. - -// The code below is generated from codersdk. - -// From codersdk/templates.go -export interface ACLAvailable { - readonly users: Readonly>; - readonly groups: Readonly>; -} - -// From codersdk/apikey.go -export interface APIKey { - readonly id: string; - readonly user_id: string; - readonly last_used: string; - readonly expires_at: string; - readonly created_at: string; - readonly updated_at: string; - readonly login_type: LoginType; - readonly scope: APIKeyScope; - readonly token_name: string; - readonly lifetime_seconds: number; -} - -// From codersdk/apikey.go -export interface APIKeyWithOwner extends APIKey { - readonly username: string; -} - -// From codersdk/licenses.go -export interface AddLicenseRequest { - readonly license: string; -} - -// From codersdk/workspacebuilds.go -export interface AgentConnectionTiming { - readonly started_at: string; - readonly ended_at: string; - readonly stage: TimingStage; - readonly workspace_agent_id: string; - readonly workspace_agent_name: string; -} - -// From codersdk/workspacebuilds.go -export interface AgentScriptTiming { - readonly started_at: string; - readonly ended_at: string; - readonly exit_code: number; - readonly stage: TimingStage; - readonly status: string; - readonly display_name: string; - readonly workspace_agent_id: string; - readonly workspace_agent_name: string; -} - -// From codersdk/templates.go -export interface AgentStatsReportResponse { - readonly num_comms: number; - readonly rx_bytes: number; - readonly tx_bytes: number; -} - -// From codersdk/deployment.go -export interface AppHostResponse { - readonly host: string; -} - -// From codersdk/deployment.go -export interface AppearanceConfig { - readonly application_name: string; - readonly logo_url: string; - readonly docs_url: string; - readonly service_banner: BannerConfig; - readonly announcement_banners: Readonly>; - readonly support_links?: Readonly>; -} - -// From codersdk/templates.go -export interface ArchiveTemplateVersionsRequest { - readonly all: boolean; -} - -// From codersdk/templates.go -export interface ArchiveTemplateVersionsResponse { - readonly template_id: string; - readonly archived_ids: Readonly>; -} - -// From codersdk/roles.go -export interface AssignableRoles extends Role { - readonly assignable: boolean; - readonly built_in: boolean; -} - -// From codersdk/audit.go -export type AuditDiff = Record - -// From codersdk/audit.go -export interface AuditDiffField { - // empty interface{} type, falling back to unknown - readonly old?: unknown; - // empty interface{} type, falling back to unknown - readonly new?: unknown; - readonly secret: boolean; -} - -// From codersdk/audit.go -export interface AuditLog { - readonly id: string; - readonly request_id: string; - readonly time: string; - readonly ip: string; - readonly user_agent: string; - readonly resource_type: ResourceType; - readonly resource_id: string; - readonly resource_target: string; - readonly resource_icon: string; - readonly action: AuditAction; - readonly diff: AuditDiff; - readonly status_code: number; - readonly additional_fields: Record; - readonly description: string; - readonly resource_link: string; - readonly is_deleted: boolean; - readonly organization_id: string; - readonly organization?: MinimalOrganization; - readonly user?: User; -} - -// From codersdk/audit.go -export interface AuditLogResponse { - readonly audit_logs: Readonly>; - readonly count: number; -} - -// From codersdk/audit.go -export interface AuditLogsRequest extends Pagination { - readonly q?: string; -} - -// From codersdk/users.go -export interface AuthMethod { - readonly enabled: boolean; -} - -// From codersdk/users.go -export interface AuthMethods { - readonly terms_of_service_url?: string; - readonly password: AuthMethod; - readonly github: AuthMethod; - readonly oidc: OIDCAuthMethod; -} - -// From codersdk/authorization.go -export interface AuthorizationCheck { - readonly object: AuthorizationObject; - readonly action: RBACAction; -} - -// From codersdk/authorization.go -export interface AuthorizationObject { - readonly resource_type: RBACResource; - readonly owner_id?: string; - readonly organization_id?: string; - readonly resource_id?: string; - readonly any_org?: boolean; -} - -// From codersdk/authorization.go -export interface AuthorizationRequest { - readonly checks: Record; -} - -// From codersdk/authorization.go -export type AuthorizationResponse = Record - -// From codersdk/deployment.go -export interface AvailableExperiments { - readonly safe: Readonly>; -} - -// From codersdk/deployment.go -export interface BannerConfig { - readonly enabled: boolean; - readonly message?: string; - readonly background_color?: string; -} - -// From codersdk/deployment.go -export interface BuildInfoResponse { - readonly external_url: string; - readonly version: string; - readonly dashboard_url: string; - readonly telemetry: boolean; - readonly workspace_proxy: boolean; - readonly agent_api_version: string; - readonly provisioner_api_version: string; - readonly upgrade_message: string; - readonly deployment_id: string; -} - -// From codersdk/users.go -export interface ChangePasswordWithOneTimePasscodeRequest { - readonly email: string; - readonly password: string; - readonly one_time_passcode: string; -} - -// From codersdk/insights.go -export interface ConnectionLatency { - readonly p50: number; - readonly p95: number; -} - -// From codersdk/users.go -export interface ConvertLoginRequest { - readonly to_type: LoginType; - readonly password: string; -} - -// From codersdk/users.go -export interface CreateFirstUserRequest { - readonly email: string; - readonly username: string; - readonly name: string; - readonly password: string; - readonly trial: boolean; - readonly trial_info: CreateFirstUserTrialInfo; -} - -// From codersdk/users.go -export interface CreateFirstUserResponse { - readonly user_id: string; - readonly organization_id: string; -} - -// From codersdk/users.go -export interface CreateFirstUserTrialInfo { - readonly first_name: string; - readonly last_name: string; - readonly phone_number: string; - readonly job_title: string; - readonly company_name: string; - readonly country: string; - readonly developers: string; -} - -// From codersdk/groups.go -export interface CreateGroupRequest { - readonly name: string; - readonly display_name: string; - readonly avatar_url: string; - readonly quota_allowance: number; -} - -// From codersdk/organizations.go -export interface CreateOrganizationRequest { - readonly name: string; - readonly display_name?: string; - readonly description?: string; - readonly icon?: string; -} - -// From codersdk/provisionerdaemons.go -export interface CreateProvisionerKeyRequest { - readonly name: string; - readonly tags: Record; -} - -// From codersdk/provisionerdaemons.go -export interface CreateProvisionerKeyResponse { - readonly key: string; -} - -// From codersdk/organizations.go -export interface CreateTemplateRequest { - readonly name: string; - readonly display_name?: string; - readonly description?: string; - readonly icon?: string; - readonly template_version_id: string; - readonly default_ttl_ms?: number; - readonly activity_bump_ms?: number; - readonly autostop_requirement?: TemplateAutostopRequirement; - readonly autostart_requirement?: TemplateAutostartRequirement; - readonly allow_user_cancel_workspace_jobs?: boolean; - readonly allow_user_autostart?: boolean; - readonly allow_user_autostop?: boolean; - readonly failure_ttl_ms?: number; - readonly dormant_ttl_ms?: number; - readonly delete_ttl_ms?: number; - readonly disable_everyone_group_access: boolean; - readonly require_active_version: boolean; - readonly max_port_share_level?: WorkspaceAgentPortShareLevel; -} - -// From codersdk/templateversions.go -export interface CreateTemplateVersionDryRunRequest { - readonly workspace_name: string; - readonly rich_parameter_values: Readonly>; - readonly user_variable_values?: Readonly>; -} - -// From codersdk/organizations.go -export interface CreateTemplateVersionRequest { - readonly name?: string; - readonly message?: string; - readonly template_id?: string; - readonly storage_method: ProvisionerStorageMethod; - readonly file_id?: string; - readonly example_id?: string; - readonly provisioner: ProvisionerType; - readonly tags: Record; - readonly user_variable_values?: Readonly>; -} - -// From codersdk/audit.go -export interface CreateTestAuditLogRequest { - readonly action?: AuditAction; - readonly resource_type?: ResourceType; - readonly resource_id?: string; - readonly additional_fields?: Record; - readonly time?: string; - readonly build_reason?: BuildReason; - readonly organization_id?: string; -} - -// From codersdk/apikey.go -export interface CreateTokenRequest { - readonly lifetime: number; - readonly scope: APIKeyScope; - readonly token_name: string; -} - -// From codersdk/users.go -export interface CreateUserRequestWithOrgs { - readonly email: string; - readonly username: string; - readonly name: string; - readonly password: string; - readonly login_type: LoginType; - readonly user_status?: UserStatus; - readonly organization_ids: Readonly>; -} - -// From codersdk/workspaces.go -export interface CreateWorkspaceBuildRequest { - readonly template_version_id?: string; - readonly transition: WorkspaceTransition; - readonly dry_run?: boolean; - readonly state?: string; - readonly orphan?: boolean; - readonly rich_parameter_values?: Readonly>; - readonly log_level?: ProvisionerLogLevel; -} - -// From codersdk/workspaceproxy.go -export interface CreateWorkspaceProxyRequest { - readonly name: string; - readonly display_name: string; - readonly icon: string; -} - -// From codersdk/organizations.go -export interface CreateWorkspaceRequest { - readonly template_id?: string; - readonly template_version_id?: string; - readonly name: string; - readonly autostart_schedule?: string; - readonly ttl_ms?: number; - readonly rich_parameter_values?: Readonly>; - readonly automatic_updates?: AutomaticUpdates; -} - -// From codersdk/deployment.go -export interface CryptoKey { - readonly feature: CryptoKeyFeature; - readonly secret: string; - readonly deletes_at: string; - readonly sequence: number; - readonly starts_at: string; -} - -// From codersdk/roles.go -export interface CustomRoleRequest { - readonly name: string; - readonly display_name: string; - readonly site_permissions: Readonly>; - readonly organization_permissions: Readonly>; - readonly user_permissions: Readonly>; -} - -// From codersdk/deployment.go -export interface DAUEntry { - readonly date: string; - readonly amount: number; -} - -// From codersdk/deployment.go -export interface DAURequest { - readonly TZHourOffset: number; -} - -// From codersdk/deployment.go -export interface DAUsResponse { - readonly entries: Readonly>; - readonly tz_hour_offset: number; -} - -// From codersdk/deployment.go -export interface DERP { - readonly server: DERPServerConfig; - readonly config: DERPConfig; -} - -// From codersdk/deployment.go -export interface DERPConfig { - readonly block_direct: boolean; - readonly force_websockets: boolean; - readonly url: string; - readonly path: string; -} - -// From codersdk/workspaceagents.go -export interface DERPRegion { - readonly preferred: boolean; - readonly latency_ms: number; -} - -// From codersdk/deployment.go -export interface DERPServerConfig { - readonly enable: boolean; - readonly region_id: number; - readonly region_code: string; - readonly region_name: string; - readonly stun_addresses: string[]; - readonly relay_url: string; -} - -// From codersdk/deployment.go -export interface DangerousConfig { - readonly allow_path_app_sharing: boolean; - readonly allow_path_app_site_owner_access: boolean; - readonly allow_all_cors: boolean; -} - -// From codersdk/workspaceagentportshare.go -export interface DeleteWorkspaceAgentPortShareRequest { - readonly agent_name: string; - readonly port: number; -} - -// From codersdk/deployment.go -export interface DeploymentConfig { - readonly config?: DeploymentValues; - readonly options?: SerpentOptionSet; -} - -// From codersdk/deployment.go -export interface DeploymentStats { - readonly aggregated_from: string; - readonly collected_at: string; - readonly next_update_at: string; - readonly workspaces: WorkspaceDeploymentStats; - readonly session_count: SessionCountDeploymentStats; -} - -// From codersdk/deployment.go -export interface DeploymentValues { - readonly verbose?: boolean; - readonly access_url?: string; - readonly wildcard_access_url?: string; - readonly docs_url?: string; - readonly redirect_to_access_url?: boolean; - readonly http_address?: string; - readonly autobuild_poll_interval?: number; - readonly job_hang_detector_interval?: number; - readonly derp?: DERP; - readonly prometheus?: PrometheusConfig; - readonly pprof?: PprofConfig; - readonly proxy_trusted_headers?: string[]; - readonly proxy_trusted_origins?: string[]; - readonly cache_directory?: string; - readonly in_memory_database?: boolean; - readonly pg_connection_url?: string; - readonly pg_auth?: string; - readonly oauth2?: OAuth2Config; - readonly oidc?: OIDCConfig; - readonly telemetry?: TelemetryConfig; - readonly tls?: TLSConfig; - readonly trace?: TraceConfig; - readonly secure_auth_cookie?: boolean; - readonly strict_transport_security?: number; - readonly strict_transport_security_options?: string[]; - readonly ssh_keygen_algorithm?: string; - readonly metrics_cache_refresh_interval?: number; - readonly agent_stat_refresh_interval?: number; - readonly agent_fallback_troubleshooting_url?: string; - readonly browser_only?: boolean; - readonly scim_api_key?: string; - readonly external_token_encryption_keys?: string[]; - readonly provisioner?: ProvisionerConfig; - readonly rate_limit?: RateLimitConfig; - readonly experiments?: string[]; - readonly update_check?: boolean; - readonly swagger?: SwaggerConfig; - readonly logging?: LoggingConfig; - readonly dangerous?: DangerousConfig; - readonly disable_path_apps?: boolean; - readonly session_lifetime?: SessionLifetime; - readonly disable_password_auth?: boolean; - readonly support?: SupportConfig; - readonly external_auth?: Readonly>; - readonly config_ssh?: SSHConfig; - readonly wgtunnel_host?: string; - readonly disable_owner_workspace_exec?: boolean; - readonly proxy_health_status_interval?: number; - readonly enable_terraform_debug_mode?: boolean; - readonly user_quiet_hours_schedule?: UserQuietHoursScheduleConfig; - readonly web_terminal_renderer?: string; - readonly allow_workspace_renames?: boolean; - readonly healthcheck?: HealthcheckConfig; - readonly cli_upgrade_message?: string; - readonly terms_of_service_url?: string; - readonly notifications?: NotificationsConfig; - readonly additional_csp_policy?: string[]; - readonly config?: string; - readonly write_config?: boolean; - readonly address?: string; -} - -// From codersdk/deployment.go -export interface Entitlements { - readonly features: Record; - readonly warnings: Readonly>; - readonly errors: Readonly>; - readonly has_license: boolean; - readonly trial: boolean; - readonly require_telemetry: boolean; - readonly refreshed_at: string; -} - -// From codersdk/deployment.go -export type Experiments = Readonly> - -// From codersdk/externalauth.go -export interface ExternalAuth { - readonly authenticated: boolean; - readonly device: boolean; - readonly display_name: string; - readonly user?: ExternalAuthUser; - readonly app_installable: boolean; - readonly installations: Readonly>; - readonly app_install_url: string; -} - -// From codersdk/externalauth.go -export interface ExternalAuthAppInstallation { - readonly id: number; - readonly account: ExternalAuthUser; - readonly configure_url: string; -} - -// From codersdk/deployment.go -export interface ExternalAuthConfig { - readonly type: string; - readonly client_id: string; - readonly id: string; - readonly auth_url: string; - readonly token_url: string; - readonly validate_url: string; - readonly app_install_url: string; - readonly app_installations_url: string; - readonly no_refresh: boolean; - readonly scopes: Readonly>; - readonly device_flow: boolean; - readonly device_code_url: string; - readonly regex: string; - readonly display_name: string; - readonly display_icon: string; -} - -// From codersdk/externalauth.go -export interface ExternalAuthDevice { - readonly device_code: string; - readonly user_code: string; - readonly verification_uri: string; - readonly expires_in: number; - readonly interval: number; -} - -// From codersdk/externalauth.go -export interface ExternalAuthDeviceExchange { - readonly device_code: string; -} - -// From codersdk/externalauth.go -export interface ExternalAuthLink { - readonly provider_id: string; - readonly created_at: string; - readonly updated_at: string; - readonly has_refresh_token: boolean; - readonly expires: string; - readonly authenticated: boolean; - readonly validate_error: string; -} - -// From codersdk/externalauth.go -export interface ExternalAuthLinkProvider { - readonly id: string; - readonly type: string; - readonly device: boolean; - readonly display_name: string; - readonly display_icon: string; - readonly allow_refresh: boolean; - readonly allow_validate: boolean; -} - -// From codersdk/externalauth.go -export interface ExternalAuthUser { - readonly id: number; - readonly login: string; - readonly avatar_url: string; - readonly profile_url: string; - readonly name: string; -} - -// From codersdk/deployment.go -export interface Feature { - readonly entitlement: Entitlement; - readonly enabled: boolean; - readonly limit?: number; - readonly actual?: number; -} - -// From codersdk/apikey.go -export interface GenerateAPIKeyResponse { - readonly key: string; -} - -// From codersdk/users.go -export interface GetUsersResponse { - readonly users: Readonly>; - readonly count: number; -} - -// From codersdk/gitsshkey.go -export interface GitSSHKey { - readonly user_id: string; - readonly created_at: string; - readonly updated_at: string; - readonly public_key: string; -} - -// From codersdk/groups.go -export interface Group { - readonly id: string; - readonly name: string; - readonly display_name: string; - readonly organization_id: string; - readonly members: Readonly>; - readonly total_member_count: number; - readonly avatar_url: string; - readonly quota_allowance: number; - readonly source: GroupSource; - readonly organization_name: string; - readonly organization_display_name: string; -} - -// From codersdk/groups.go -export interface GroupArguments { - readonly Organization: string; - readonly HasMember: string; - readonly GroupIDs: Readonly>; -} - -// From codersdk/idpsync.go -export interface GroupSyncSettings { - readonly field: string; - readonly mapping: Record>>; - // external type "regexp.Regexp", using "unknown" - readonly regex_filter?: unknown; - readonly auto_create_missing_groups: boolean; - readonly legacy_group_name_mapping?: Record; -} - -// From codersdk/workspaceapps.go -export interface Healthcheck { - readonly url: string; - readonly interval: number; - readonly threshold: number; -} - -// From codersdk/deployment.go -export interface HealthcheckConfig { - readonly refresh: number; - readonly threshold_database: number; -} - -// From codersdk/workspaceagents.go -export interface IssueReconnectingPTYSignedTokenRequest { - readonly url: string; - readonly agentID: string; -} - -// From codersdk/workspaceagents.go -export interface IssueReconnectingPTYSignedTokenResponse { - readonly signed_token: string; -} - -// From codersdk/jfrog.go -export interface JFrogXrayScan { - readonly workspace_id: string; - readonly agent_id: string; - readonly critical: number; - readonly high: number; - readonly medium: number; - readonly results_url: string; -} - -// From codersdk/licenses.go -export interface License { - readonly id: number; - readonly uuid: string; - readonly uploaded_at: string; - // empty interface{} type, falling back to unknown - readonly claims: Record; -} - -// From codersdk/deployment.go -export interface LinkConfig { - readonly name: string; - readonly target: string; - readonly icon: string; -} - -// From codersdk/externalauth.go -export interface ListUserExternalAuthResponse { - readonly providers: Readonly>; - readonly links: Readonly>; -} - -// From codersdk/deployment.go -export interface LoggingConfig { - readonly log_filter: string[]; - readonly human: string; - readonly json: string; - readonly stackdriver: string; -} - -// From codersdk/users.go -export interface LoginWithPasswordRequest { - readonly email: string; - readonly password: string; -} - -// From codersdk/users.go -export interface LoginWithPasswordResponse { - readonly session_token: string; -} - -// From codersdk/provisionerdaemons.go -export interface MatchedProvisioners { - readonly count: number; - readonly available: number; - readonly most_recently_seen?: string; -} - -// From codersdk/organizations.go -export interface MinimalOrganization { - readonly id: string; - readonly name: string; - readonly display_name: string; - readonly icon: string; -} - -// From codersdk/users.go -export interface MinimalUser { - readonly id: string; - readonly username: string; - readonly avatar_url: string; -} - -// From codersdk/notifications.go -export interface NotificationMethodsResponse { - readonly available: Readonly>; - readonly default: string; -} - -// From codersdk/notifications.go -export interface NotificationPreference { - readonly id: string; - readonly disabled: boolean; - readonly updated_at: string; -} - -// From codersdk/notifications.go -export interface NotificationTemplate { - readonly id: string; - readonly name: string; - readonly title_template: string; - readonly body_template: string; - readonly actions: string; - readonly group: string; - readonly method: string; - readonly kind: string; -} - -// From codersdk/deployment.go -export interface NotificationsConfig { - readonly max_send_attempts: number; - readonly retry_interval: number; - readonly sync_interval: number; - readonly sync_buffer_size: number; - readonly lease_period: number; - readonly lease_count: number; - readonly fetch_interval: number; - readonly method: string; - readonly dispatch_timeout: number; - readonly email: NotificationsEmailConfig; - readonly webhook: NotificationsWebhookConfig; -} - -// From codersdk/deployment.go -export interface NotificationsEmailAuthConfig { - readonly identity: string; - readonly username: string; - readonly password: string; - readonly password_file: string; -} - -// From codersdk/deployment.go -export interface NotificationsEmailConfig { - readonly from: string; - readonly smarthost: string; - readonly hello: string; - readonly auth: NotificationsEmailAuthConfig; - readonly tls: NotificationsEmailTLSConfig; - readonly force_tls: boolean; -} - -// From codersdk/deployment.go -export interface NotificationsEmailTLSConfig { - readonly start_tls: boolean; - readonly server_name: string; - readonly insecure_skip_verify: boolean; - readonly ca_file: string; - readonly cert_file: string; - readonly key_file: string; -} - -// From codersdk/notifications.go -export interface NotificationsSettings { - readonly notifier_paused: boolean; -} - -// From codersdk/deployment.go -export interface NotificationsWebhookConfig { - readonly endpoint: string; -} - -// From codersdk/oauth2.go -export interface OAuth2AppEndpoints { - readonly authorization: string; - readonly token: string; - readonly device_authorization: string; -} - -// From codersdk/deployment.go -export interface OAuth2Config { - readonly github: OAuth2GithubConfig; -} - -// From codersdk/deployment.go -export interface OAuth2GithubConfig { - readonly client_id: string; - readonly client_secret: string; - readonly allowed_orgs: string[]; - readonly allowed_teams: string[]; - readonly allow_signups: boolean; - readonly allow_everyone: boolean; - readonly enterprise_base_url: string; -} - -// From codersdk/oauth2.go -export interface OAuth2ProviderApp { - readonly id: string; - readonly name: string; - readonly callback_url: string; - readonly icon: string; - readonly endpoints: OAuth2AppEndpoints; -} - -// From codersdk/oauth2.go -export interface OAuth2ProviderAppFilter { - readonly user_id?: string; -} - -// From codersdk/oauth2.go -export interface OAuth2ProviderAppSecret { - readonly id: string; - readonly last_used_at?: string; - readonly client_secret_truncated: string; -} - -// From codersdk/oauth2.go -export interface OAuth2ProviderAppSecretFull { - readonly id: string; - readonly client_secret_full: string; -} - -// From codersdk/users.go -export interface OAuthConversionResponse { - readonly state_string: string; - readonly expires_at: string; - readonly to_type: LoginType; - readonly user_id: string; -} - -// From codersdk/users.go -export interface OIDCAuthMethod extends AuthMethod { - readonly signInText: string; - readonly iconUrl: string; -} - -// From codersdk/deployment.go -export interface OIDCConfig { - readonly allow_signups: boolean; - readonly client_id: string; - readonly client_secret: string; - readonly client_key_file: string; - readonly client_cert_file: string; - readonly email_domain: string[]; - readonly issuer_url: string; - readonly scopes: string[]; - readonly ignore_email_verified: boolean; - readonly username_field: string; - readonly name_field: string; - readonly email_field: string; - readonly auth_url_params: Record; - readonly ignore_user_info: boolean; - readonly organization_field: string; - readonly organization_mapping: Record>>; - readonly organization_assign_default: boolean; - readonly group_auto_create: boolean; - readonly group_regex_filter: string; - readonly group_allow_list: string[]; - readonly groups_field: string; - readonly group_mapping: Record; - readonly user_role_field: string; - readonly user_role_mapping: Record>>; - readonly user_roles_default: string[]; - readonly sign_in_text: string; - readonly icon_url: string; - readonly signups_disabled_text: string; - readonly skip_issuer_checks: boolean; -} - -// From codersdk/organizations.go -export interface Organization extends MinimalOrganization { - readonly description: string; - readonly created_at: string; - readonly updated_at: string; - readonly is_default: boolean; -} - -// From codersdk/organizations.go -export interface OrganizationMember { - readonly user_id: string; - readonly organization_id: string; - readonly created_at: string; - readonly updated_at: string; - readonly roles: Readonly>; -} - -// From codersdk/organizations.go -export interface OrganizationMemberWithUserData extends OrganizationMember { - readonly username: string; - readonly name: string; - readonly avatar_url: string; - readonly email: string; - readonly global_roles: Readonly>; -} - -// From codersdk/idpsync.go -export interface OrganizationSyncSettings { - readonly field: string; - readonly mapping: Record>>; - readonly organization_assign_default: boolean; -} - -// From codersdk/pagination.go -export interface Pagination { - readonly after_id?: string; - readonly limit?: number; - readonly offset?: number; -} - -// From codersdk/groups.go -export interface PatchGroupRequest { - readonly add_users: Readonly>; - readonly remove_users: Readonly>; - readonly name: string; - readonly display_name?: string; - readonly avatar_url?: string; - readonly quota_allowance?: number; -} - -// From codersdk/templateversions.go -export interface PatchTemplateVersionRequest { - readonly name: string; - readonly message?: string; -} - -// From codersdk/workspaceproxy.go -export interface PatchWorkspaceProxy { - readonly id: string; - readonly name: string; - readonly display_name: string; - readonly icon: string; - readonly regenerate_token: boolean; -} - -// From codersdk/roles.go -export interface Permission { - readonly negate: boolean; - readonly resource_type: RBACResource; - readonly action: RBACAction; -} - -// From codersdk/oauth2.go -export interface PostOAuth2ProviderAppRequest { - readonly name: string; - readonly callback_url: string; - readonly icon: string; -} - -// From codersdk/workspaces.go -export interface PostWorkspaceUsageRequest { - readonly agent_id: string; - readonly app_name: UsageAppName; -} - -// From codersdk/deployment.go -export interface PprofConfig { - readonly enable: boolean; - readonly address: string; -} - -// From codersdk/deployment.go -export interface PrometheusConfig { - readonly enable: boolean; - readonly address: string; - readonly collect_agent_stats: boolean; - readonly collect_db_metrics: boolean; - readonly aggregate_agent_stats_by: string[]; -} - -// From codersdk/deployment.go -export interface ProvisionerConfig { - readonly daemons: number; - readonly daemon_types: string[]; - readonly daemon_poll_interval: number; - readonly daemon_poll_jitter: number; - readonly force_cancel_interval: number; - readonly daemon_psk: string; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerDaemon { - readonly id: string; - readonly organization_id: string; - readonly key_id: string; - readonly created_at: string; - readonly last_seen_at?: string; - readonly name: string; - readonly version: string; - readonly api_version: string; - readonly provisioners: Readonly>; - readonly tags: Record; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerJob { - readonly id: string; - readonly created_at: string; - readonly started_at?: string; - readonly completed_at?: string; - readonly canceled_at?: string; - readonly error?: string; - readonly error_code?: JobErrorCode; - readonly status: ProvisionerJobStatus; - readonly worker_id?: string; - readonly file_id: string; - readonly tags: Record; - readonly queue_position: number; - readonly queue_size: number; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerJobLog { - readonly id: number; - readonly created_at: string; - readonly log_source: LogSource; - readonly log_level: LogLevel; - readonly stage: string; - readonly output: string; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerKey { - readonly id: string; - readonly created_at: string; - readonly organization: string; - readonly name: string; - readonly tags: ProvisionerKeyTags; -} - -// From codersdk/provisionerdaemons.go -export interface ProvisionerKeyDaemons { - readonly key: ProvisionerKey; - readonly daemons: Readonly>; -} - -// From codersdk/provisionerdaemons.go -export type ProvisionerKeyTags = Record - -// From codersdk/workspacebuilds.go -export interface ProvisionerTiming { - readonly job_id: string; - readonly started_at: string; - readonly ended_at: string; - readonly stage: TimingStage; - readonly source: string; - readonly action: string; - readonly resource: string; -} - -// From codersdk/workspaceproxy.go -export interface ProxyHealthReport { - readonly errors: Readonly>; - readonly warnings: Readonly>; -} - -// From codersdk/workspaces.go -export interface PutExtendWorkspaceRequest { - readonly deadline: string; -} - -// From codersdk/oauth2.go -export interface PutOAuth2ProviderAppRequest { - readonly name: string; - readonly callback_url: string; - readonly icon: string; -} - -// From codersdk/deployment.go -export interface RateLimitConfig { - readonly disable_all: boolean; - readonly api: number; -} - -// From codersdk/users.go -export interface ReducedUser extends MinimalUser { - readonly name: string; - readonly email: string; - readonly created_at: string; - readonly updated_at: string; - readonly last_seen_at: string; - readonly status: UserStatus; - readonly login_type: LoginType; - readonly theme_preference: string; -} - -// From codersdk/workspaceproxy.go -export interface Region { - readonly id: string; - readonly name: string; - readonly display_name: string; - readonly icon_url: string; - readonly healthy: boolean; - readonly path_app_url: string; - readonly wildcard_hostname: string; -} - -// From codersdk/workspaceproxy.go -export interface RegionsResponse { - readonly regions: Readonly>; -} - -// From codersdk/replicas.go -export interface Replica { - readonly id: string; - readonly hostname: string; - readonly created_at: string; - readonly relay_address: string; - readonly region_id: number; - readonly error: string; - readonly database_latency: number; -} - -// From codersdk/users.go -export interface RequestOneTimePasscodeRequest { - readonly email: string; -} - -// From codersdk/workspaces.go -export interface ResolveAutostartResponse { - readonly parameter_mismatch: boolean; -} - -// From codersdk/client.go -export interface Response { - readonly message: string; - readonly detail?: string; - readonly validations?: Readonly>; -} - -// From codersdk/roles.go -export interface Role { - readonly name: string; - readonly organization_id?: string; - readonly display_name: string; - readonly site_permissions: Readonly>; - readonly organization_permissions: Readonly>; - readonly user_permissions: Readonly>; -} - -// From codersdk/idpsync.go -export interface RoleSyncSettings { - readonly field: string; - readonly mapping: Record>>; -} - -// From codersdk/deployment.go -export interface SSHConfig { - readonly DeploymentName: string; - readonly SSHConfigOptions: string[]; -} - -// From codersdk/deployment.go -export interface SSHConfigResponse { - readonly hostname_prefix: string; - readonly ssh_config_options: Record; -} - -// From codersdk/serversentevents.go -export interface ServerSentEvent { - readonly type: ServerSentEventType; - // empty interface{} type, falling back to unknown - readonly data: unknown; -} - -// From codersdk/deployment.go -export interface ServiceBannerConfig { - readonly enabled: boolean; - readonly message?: string; - readonly background_color?: string; -} - -// From codersdk/deployment.go -export interface SessionCountDeploymentStats { - readonly vscode: number; - readonly ssh: number; - readonly jetbrains: number; - readonly reconnecting_pty: number; -} - -// From codersdk/deployment.go -export interface SessionLifetime { - readonly disable_expiry_refresh?: boolean; - readonly default_duration: number; - readonly default_token_lifetime?: number; - readonly max_token_lifetime?: number; -} - -// From codersdk/roles.go -export interface SlimRole { - readonly name: string; - readonly display_name: string; - readonly organization_id?: string; -} - -// From codersdk/deployment.go -export interface SupportConfig { - readonly links: Readonly>; -} - -// From codersdk/deployment.go -export interface SwaggerConfig { - readonly enable: boolean; -} - -// From codersdk/deployment.go -export interface TLSConfig { - readonly enable: boolean; - readonly address: string; - readonly redirect_http: boolean; - readonly cert_file: string[]; - readonly client_auth: string; - readonly client_ca_file: string; - readonly key_file: string[]; - readonly min_version: string; - readonly client_cert_file: string; - readonly client_key_file: string; - readonly supported_ciphers: string[]; - readonly allow_insecure_ciphers: boolean; -} - -// From codersdk/deployment.go -export interface TelemetryConfig { - readonly enable: boolean; - readonly trace: boolean; - readonly url: string; -} - -// From codersdk/templates.go -export interface Template { - readonly id: string; - readonly created_at: string; - readonly updated_at: string; - readonly organization_id: string; - readonly organization_name: string; - readonly organization_display_name: string; - readonly organization_icon: string; - readonly name: string; - readonly display_name: string; - readonly provisioner: ProvisionerType; - readonly active_version_id: string; - readonly active_user_count: number; - readonly build_time_stats: TemplateBuildTimeStats; - readonly description: string; - readonly deprecated: boolean; - readonly deprecation_message: string; - readonly icon: string; - readonly default_ttl_ms: number; - readonly activity_bump_ms: number; - readonly autostop_requirement: TemplateAutostopRequirement; - readonly autostart_requirement: TemplateAutostartRequirement; - readonly created_by_id: string; - readonly created_by_name: string; - readonly allow_user_autostart: boolean; - readonly allow_user_autostop: boolean; - readonly allow_user_cancel_workspace_jobs: boolean; - readonly failure_ttl_ms: number; - readonly time_til_dormant_ms: number; - readonly time_til_dormant_autodelete_ms: number; - readonly require_active_version: boolean; - readonly max_port_share_level: WorkspaceAgentPortShareLevel; -} - -// From codersdk/templates.go -export interface TemplateACL { - readonly users: Readonly>; - readonly group: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateAppUsage { - readonly template_ids: Readonly>; - readonly type: TemplateAppsType; - readonly display_name: string; - readonly slug: string; - readonly icon: string; - readonly seconds: number; - readonly times_used: number; -} - -// From codersdk/templates.go -export interface TemplateAutostartRequirement { - readonly days_of_week: Readonly>; -} - -// From codersdk/templates.go -export interface TemplateAutostopRequirement { - readonly days_of_week: Readonly>; - readonly weeks: number; -} - -// From codersdk/templates.go -export type TemplateBuildTimeStats = Record - -// From codersdk/templates.go -export interface TemplateExample { - readonly id: string; - readonly url: string; - readonly name: string; - readonly description: string; - readonly icon: string; - readonly tags: Readonly>; - readonly markdown: string; -} - -// From codersdk/organizations.go -export interface TemplateFilter { - readonly q?: string; -} - -// From codersdk/templates.go -export interface TemplateGroup extends Group { - readonly role: TemplateRole; -} - -// From codersdk/insights.go -export interface TemplateInsightsIntervalReport { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly interval: InsightsReportInterval; - readonly active_users: number; -} - -// From codersdk/insights.go -export interface TemplateInsightsReport { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly active_users: number; - readonly apps_usage: Readonly>; - readonly parameters_usage: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateInsightsRequest { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly interval: InsightsReportInterval; - readonly sections: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateInsightsResponse { - readonly report?: TemplateInsightsReport; - readonly interval_reports?: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateParameterUsage { - readonly template_ids: Readonly>; - readonly display_name: string; - readonly name: string; - readonly type: string; - readonly description: string; - readonly options?: Readonly>; - readonly values: Readonly>; -} - -// From codersdk/insights.go -export interface TemplateParameterValue { - readonly value: string; - readonly count: number; -} - -// From codersdk/templates.go -export interface TemplateUser extends User { - readonly role: TemplateRole; -} - -// From codersdk/templateversions.go -export interface TemplateVersion { - readonly id: string; - readonly template_id?: string; - readonly organization_id?: string; - readonly created_at: string; - readonly updated_at: string; - readonly name: string; - readonly message: string; - readonly job: ProvisionerJob; - readonly readme: string; - readonly created_by: MinimalUser; - readonly archived: boolean; - readonly warnings?: Readonly>; - readonly matched_provisioners?: MatchedProvisioners; -} - -// From codersdk/templateversions.go -export interface TemplateVersionExternalAuth { - readonly id: string; - readonly type: string; - readonly display_name: string; - readonly display_icon: string; - readonly authenticate_url: string; - readonly authenticated: boolean; - readonly optional?: boolean; -} - -// From codersdk/templateversions.go -export interface TemplateVersionParameter { - readonly name: string; - readonly display_name?: string; - readonly description: string; - readonly description_plaintext: string; - readonly type: string; - readonly mutable: boolean; - readonly default_value: string; - readonly icon: string; - readonly options: Readonly>; - readonly validation_error?: string; - readonly validation_regex?: string; - readonly validation_min?: number; - readonly validation_max?: number; - readonly validation_monotonic?: ValidationMonotonicOrder; - readonly required: boolean; - readonly ephemeral: boolean; -} - -// From codersdk/templateversions.go -export interface TemplateVersionParameterOption { - readonly name: string; - readonly description: string; - readonly value: string; - readonly icon: string; -} - -// From codersdk/templateversions.go -export interface TemplateVersionVariable { - readonly name: string; - readonly description: string; - readonly type: string; - readonly value: string; - readonly default_value: string; - readonly required: boolean; - readonly sensitive: boolean; -} - -// From codersdk/templates.go -export interface TemplateVersionsByTemplateRequest extends Pagination { - readonly template_id: string; - readonly include_archived: boolean; -} - -// From codersdk/apikey.go -export interface TokenConfig { - readonly max_token_lifetime: number; -} - -// From codersdk/apikey.go -export interface TokensFilter { - readonly include_all: boolean; -} - -// From codersdk/deployment.go -export interface TraceConfig { - readonly enable: boolean; - readonly honeycomb_api_key: string; - readonly capture_logs: boolean; - readonly data_dog: boolean; -} - -// From codersdk/templates.go -export interface TransitionStats { - readonly P50?: number; - readonly P95?: number; -} - -// From codersdk/templates.go -export interface UpdateActiveTemplateVersion { - readonly id: string; -} - -// From codersdk/deployment.go -export interface UpdateAppearanceConfig { - readonly application_name: string; - readonly logo_url: string; - readonly service_banner: BannerConfig; - readonly announcement_banners: Readonly>; -} - -// From codersdk/updatecheck.go -export interface UpdateCheckResponse { - readonly current: boolean; - readonly version: string; - readonly url: string; -} - -// From codersdk/notifications.go -export interface UpdateNotificationTemplateMethod { - readonly method?: string; -} - -// From codersdk/organizations.go -export interface UpdateOrganizationRequest { - readonly name?: string; - readonly display_name?: string; - readonly description?: string; - readonly icon?: string; -} - -// From codersdk/users.go -export interface UpdateRoles { - readonly roles: Readonly>; -} - -// From codersdk/templates.go -export interface UpdateTemplateACL { - readonly user_perms?: Record; - readonly group_perms?: Record; -} - -// From codersdk/templates.go -export interface UpdateTemplateMeta { - readonly name?: string; - readonly display_name?: string; - readonly description?: string; - readonly icon?: string; - readonly default_ttl_ms?: number; - readonly activity_bump_ms?: number; - readonly autostop_requirement?: TemplateAutostopRequirement; - readonly autostart_requirement?: TemplateAutostartRequirement; - readonly allow_user_autostart?: boolean; - readonly allow_user_autostop?: boolean; - readonly allow_user_cancel_workspace_jobs?: boolean; - readonly failure_ttl_ms?: number; - readonly time_til_dormant_ms?: number; - readonly time_til_dormant_autodelete_ms?: number; - readonly update_workspace_last_used_at: boolean; - readonly update_workspace_dormant_at: boolean; - readonly require_active_version?: boolean; - readonly deprecation_message?: string; - readonly disable_everyone_group_access: boolean; - readonly max_port_share_level?: WorkspaceAgentPortShareLevel; -} - -// From codersdk/users.go -export interface UpdateUserAppearanceSettingsRequest { - readonly theme_preference: string; -} - -// From codersdk/notifications.go -export interface UpdateUserNotificationPreferences { - readonly template_disabled_map: Record; -} - -// From codersdk/users.go -export interface UpdateUserPasswordRequest { - readonly old_password: string; - readonly password: string; -} - -// From codersdk/users.go -export interface UpdateUserProfileRequest { - readonly username: string; - readonly name: string; -} - -// From codersdk/users.go -export interface UpdateUserQuietHoursScheduleRequest { - readonly schedule: string; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceAutomaticUpdatesRequest { - readonly automatic_updates: AutomaticUpdates; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceAutostartRequest { - readonly schedule?: string; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceDormancy { - readonly dormant: boolean; -} - -// From codersdk/workspaceproxy.go -export interface UpdateWorkspaceProxyResponse { - readonly proxy: WorkspaceProxy; - readonly proxy_token: string; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceRequest { - readonly name?: string; -} - -// From codersdk/workspaces.go -export interface UpdateWorkspaceTTLRequest { - readonly ttl_ms?: number; -} - -// From codersdk/files.go -export interface UploadResponse { - readonly hash: string; -} - -// From codersdk/workspaceagentportshare.go -export interface UpsertWorkspaceAgentPortShareRequest { - readonly agent_name: string; - readonly port: number; - readonly share_level: WorkspaceAgentPortShareLevel; - readonly protocol: WorkspaceAgentPortShareProtocol; -} - -// From codersdk/users.go -export interface User extends ReducedUser { - readonly organization_ids: Readonly>; - readonly roles: Readonly>; -} - -// From codersdk/insights.go -export interface UserActivity { - readonly template_ids: Readonly>; - readonly user_id: string; - readonly username: string; - readonly avatar_url: string; - readonly seconds: number; -} - -// From codersdk/insights.go -export interface UserActivityInsightsReport { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly users: Readonly>; -} - -// From codersdk/insights.go -export interface UserActivityInsightsRequest { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; -} - -// From codersdk/insights.go -export interface UserActivityInsightsResponse { - readonly report: UserActivityInsightsReport; -} - -// From codersdk/insights.go -export interface UserLatency { - readonly template_ids: Readonly>; - readonly user_id: string; - readonly username: string; - readonly avatar_url: string; - readonly latency_ms: ConnectionLatency; -} - -// From codersdk/insights.go -export interface UserLatencyInsightsReport { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; - readonly users: Readonly>; -} - -// From codersdk/insights.go -export interface UserLatencyInsightsRequest { - readonly start_time: string; - readonly end_time: string; - readonly template_ids: Readonly>; -} - -// From codersdk/insights.go -export interface UserLatencyInsightsResponse { - readonly report: UserLatencyInsightsReport; -} - -// From codersdk/users.go -export interface UserLoginType { - readonly login_type: LoginType; -} - -// From codersdk/users.go -export interface UserParameter { - readonly name: string; - readonly value: string; -} - -// From codersdk/deployment.go -export interface UserQuietHoursScheduleConfig { - readonly default_schedule: string; - readonly allow_user_custom: boolean; -} - -// From codersdk/users.go -export interface UserQuietHoursScheduleResponse { - readonly raw_schedule: string; - readonly user_set: boolean; - readonly user_can_set: boolean; - readonly time: string; - readonly timezone: string; - readonly next: string; -} - -// From codersdk/users.go -export interface UserRoles { - readonly roles: Readonly>; - readonly organization_roles: Record>>; -} - -// From codersdk/users.go -export interface UsersRequest extends Pagination { - readonly q?: string; -} - -// From codersdk/users.go -export interface ValidateUserPasswordRequest { - readonly password: string; -} - -// From codersdk/users.go -export interface ValidateUserPasswordResponse { - readonly valid: boolean; - readonly details: string; -} - -// From codersdk/client.go -export interface ValidationError { - readonly field: string; - readonly detail: string; -} - -// From codersdk/organizations.go -export interface VariableValue { - readonly name: string; - readonly value: string; -} - -// From codersdk/workspaces.go -export interface Workspace { - readonly id: string; - readonly created_at: string; - readonly updated_at: string; - readonly owner_id: string; - readonly owner_name: string; - readonly owner_avatar_url: string; - readonly organization_id: string; - readonly organization_name: string; - readonly template_id: string; - readonly template_name: string; - readonly template_display_name: string; - readonly template_icon: string; - readonly template_allow_user_cancel_workspace_jobs: boolean; - readonly template_active_version_id: string; - readonly template_require_active_version: boolean; - readonly latest_build: WorkspaceBuild; - readonly outdated: boolean; - readonly name: string; - readonly autostart_schedule?: string; - readonly ttl_ms?: number; - readonly last_used_at: string; - readonly deleting_at?: string; - readonly dormant_at?: string; - readonly health: WorkspaceHealth; - readonly automatic_updates: AutomaticUpdates; - readonly allow_renames: boolean; - readonly favorite: boolean; - readonly next_start_at?: string; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgent { - readonly id: string; - readonly created_at: string; - readonly updated_at: string; - readonly first_connected_at?: string; - readonly last_connected_at?: string; - readonly disconnected_at?: string; - readonly started_at?: string; - readonly ready_at?: string; - readonly status: WorkspaceAgentStatus; - readonly lifecycle_state: WorkspaceAgentLifecycle; - readonly name: string; - readonly resource_id: string; - readonly instance_id?: string; - readonly architecture: string; - readonly environment_variables: Record; - readonly operating_system: string; - readonly logs_length: number; - readonly logs_overflowed: boolean; - readonly directory?: string; - readonly expanded_directory?: string; - readonly version: string; - readonly api_version: string; - readonly apps: Readonly>; - readonly latency?: Record; - readonly connection_timeout_seconds: number; - readonly troubleshooting_url: string; - readonly subsystems: Readonly>; - readonly health: WorkspaceAgentHealth; - readonly display_apps: Readonly>; - readonly log_sources: Readonly>; - readonly scripts: Readonly>; - readonly startup_script_behavior: WorkspaceAgentStartupScriptBehavior; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentHealth { - readonly healthy: boolean; - readonly reason?: string; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentListeningPort { - readonly process_name: string; - readonly network: string; - readonly port: number; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentListeningPortsResponse { - readonly ports: Readonly>; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentLog { - readonly id: number; - readonly created_at: string; - readonly output: string; - readonly level: LogLevel; - readonly source_id: string; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentLogSource { - readonly workspace_agent_id: string; - readonly id: string; - readonly created_at: string; - readonly display_name: string; - readonly icon: string; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentMetadata { - readonly result: WorkspaceAgentMetadataResult; - readonly description: WorkspaceAgentMetadataDescription; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentMetadataDescription { - readonly display_name: string; - readonly key: string; - readonly script: string; - readonly interval: number; - readonly timeout: number; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentMetadataResult { - readonly collected_at: string; - readonly age: number; - readonly value: string; - readonly error: string; -} - -// From codersdk/workspaceagentportshare.go -export interface WorkspaceAgentPortShare { - readonly workspace_id: string; - readonly agent_name: string; - readonly port: number; - readonly share_level: WorkspaceAgentPortShareLevel; - readonly protocol: WorkspaceAgentPortShareProtocol; -} - -// From codersdk/workspaceagentportshare.go -export interface WorkspaceAgentPortShares { - readonly shares: Readonly>; -} - -// From codersdk/workspaceagents.go -export interface WorkspaceAgentScript { - readonly id: string; - readonly log_source_id: string; - readonly log_path: string; - readonly script: string; - readonly cron: string; - readonly run_on_start: boolean; - readonly run_on_stop: boolean; - readonly start_blocks_login: boolean; - readonly timeout: number; - readonly display_name: string; -} - -// From codersdk/workspaceapps.go -export interface WorkspaceApp { - readonly id: string; - readonly url: string; - readonly external: boolean; - readonly slug: string; - readonly display_name: string; - readonly command?: string; - readonly icon?: string; - readonly subdomain: boolean; - readonly subdomain_name?: string; - readonly sharing_level: WorkspaceAppSharingLevel; - readonly healthcheck: Healthcheck; - readonly health: WorkspaceAppHealth; - readonly hidden: boolean; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceBuild { - readonly id: string; - readonly created_at: string; - readonly updated_at: string; - readonly workspace_id: string; - readonly workspace_name: string; - readonly workspace_owner_id: string; - readonly workspace_owner_name: string; - readonly workspace_owner_avatar_url: string; - readonly template_version_id: string; - readonly template_version_name: string; - readonly build_number: number; - readonly transition: WorkspaceTransition; - readonly initiator_id: string; - readonly initiator_name: string; - readonly job: ProvisionerJob; - readonly reason: BuildReason; - readonly resources: Readonly>; - readonly deadline?: string; - readonly max_deadline?: string; - readonly status: WorkspaceStatus; - readonly daily_cost: number; - readonly matched_provisioners?: MatchedProvisioners; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceBuildParameter { - readonly name: string; - readonly value: string; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceBuildTimings { - readonly provisioner_timings: Readonly>; - readonly agent_script_timings: Readonly>; - readonly agent_connection_timings: Readonly>; -} - -// From codersdk/workspaces.go -export interface WorkspaceBuildsRequest extends Pagination { - readonly since?: string; -} - -// From codersdk/deployment.go -export interface WorkspaceConnectionLatencyMS { - readonly P50: number; - readonly P95: number; -} - -// From codersdk/deployment.go -export interface WorkspaceDeploymentStats { - readonly pending: number; - readonly building: number; - readonly running: number; - readonly failed: number; - readonly stopped: number; - readonly connection_latency_ms: WorkspaceConnectionLatencyMS; - readonly rx_bytes: number; - readonly tx_bytes: number; -} - -// From codersdk/workspaces.go -export interface WorkspaceFilter { - readonly q?: string; -} - -// From codersdk/workspaces.go -export interface WorkspaceHealth { - readonly healthy: boolean; - readonly failing_agents: Readonly>; -} - -// From codersdk/workspaces.go -export interface WorkspaceOptions { - readonly include_deleted?: boolean; -} - -// From codersdk/workspaceproxy.go -export interface WorkspaceProxy extends Region { - readonly derp_enabled: boolean; - readonly derp_only: boolean; - readonly status?: WorkspaceProxyStatus; - readonly created_at: string; - readonly updated_at: string; - readonly deleted: boolean; - readonly version: string; -} - -// From codersdk/deployment.go -export interface WorkspaceProxyBuildInfo { - readonly workspace_proxy: boolean; - readonly dashboard_url: string; -} - -// From codersdk/workspaceproxy.go -export interface WorkspaceProxyStatus { - readonly status: ProxyHealthStatus; - readonly report?: ProxyHealthReport; - readonly checked_at: string; -} - -// From codersdk/workspaces.go -export interface WorkspaceQuota { - readonly credits_consumed: number; - readonly budget: number; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceResource { - readonly id: string; - readonly created_at: string; - readonly job_id: string; - readonly workspace_transition: WorkspaceTransition; - readonly type: string; - readonly name: string; - readonly hide: boolean; - readonly icon: string; - readonly agents?: Readonly>; - readonly metadata?: Readonly>; - readonly daily_cost: number; -} - -// From codersdk/workspacebuilds.go -export interface WorkspaceResourceMetadata { - readonly key: string; - readonly value: string; - readonly sensitive: boolean; -} - -// From codersdk/workspaces.go -export interface WorkspacesRequest extends Pagination { - readonly q?: string; -} - -// From codersdk/workspaces.go -export interface WorkspacesResponse { - readonly workspaces: Readonly>; - readonly count: number; -} - -// From codersdk/apikey.go -export type APIKeyScope = "all" | "application_connect" -export const APIKeyScopes: APIKeyScope[] = ["all", "application_connect"] - -// From codersdk/workspaceagents.go -export type AgentSubsystem = "envbox" | "envbuilder" | "exectrace" -export const AgentSubsystems: AgentSubsystem[] = ["envbox", "envbuilder", "exectrace"] - -// From codersdk/audit.go -export type AuditAction = "create" | "delete" | "login" | "logout" | "register" | "request_password_reset" | "start" | "stop" | "write" -export const AuditActions: AuditAction[] = ["create", "delete", "login", "logout", "register", "request_password_reset", "start", "stop", "write"] - -// From codersdk/workspaces.go -export type AutomaticUpdates = "always" | "never" -export const AutomaticUpdateses: AutomaticUpdates[] = ["always", "never"] - -// From codersdk/workspacebuilds.go -export type BuildReason = "autostart" | "autostop" | "initiator" -export const BuildReasons: BuildReason[] = ["autostart", "autostop", "initiator"] - -// From codersdk/deployment.go -export type CryptoKeyFeature = "oidc_convert" | "tailnet_resume" | "workspace_apps_api_key" | "workspace_apps_token" -export const CryptoKeyFeatures: CryptoKeyFeature[] = ["oidc_convert", "tailnet_resume", "workspace_apps_api_key", "workspace_apps_token"] - -// From codersdk/workspaceagents.go -export type DisplayApp = "port_forwarding_helper" | "ssh_helper" | "vscode" | "vscode_insiders" | "web_terminal" -export const DisplayApps: DisplayApp[] = ["port_forwarding_helper", "ssh_helper", "vscode", "vscode_insiders", "web_terminal"] - -// From codersdk/externalauth.go -export type EnhancedExternalAuthProvider = "azure-devops" | "azure-devops-entra" | "bitbucket-cloud" | "bitbucket-server" | "gitea" | "github" | "gitlab" | "jfrog" | "slack" -export const EnhancedExternalAuthProviders: EnhancedExternalAuthProvider[] = ["azure-devops", "azure-devops-entra", "bitbucket-cloud", "bitbucket-server", "gitea", "github", "gitlab", "jfrog", "slack"] - -// From codersdk/deployment.go -export type Entitlement = "entitled" | "grace_period" | "not_entitled" -export const Entitlements: Entitlement[] = ["entitled", "grace_period", "not_entitled"] - -// From codersdk/deployment.go -export type Experiment = "auto-fill-parameters" | "example" | "notifications" | "workspace-usage" -export const Experiments: Experiment[] = ["auto-fill-parameters", "example", "notifications", "workspace-usage"] - -// From codersdk/deployment.go -export type FeatureName = "access_control" | "advanced_template_scheduling" | "appearance" | "audit_log" | "browser_only" | "control_shared_ports" | "custom_roles" | "external_provisioner_daemons" | "external_token_encryption" | "high_availability" | "multiple_external_auth" | "multiple_organizations" | "scim" | "template_rbac" | "user_limit" | "user_role_management" | "workspace_batch_actions" | "workspace_proxy" -export const FeatureNames: FeatureName[] = ["access_control", "advanced_template_scheduling", "appearance", "audit_log", "browser_only", "control_shared_ports", "custom_roles", "external_provisioner_daemons", "external_token_encryption", "high_availability", "multiple_external_auth", "multiple_organizations", "scim", "template_rbac", "user_limit", "user_role_management", "workspace_batch_actions", "workspace_proxy"] - -// From codersdk/deployment.go -export type FeatureSet = "" | "enterprise" | "premium" -export const FeatureSets: FeatureSet[] = ["", "enterprise", "premium"] - -// From codersdk/groups.go -export type GroupSource = "oidc" | "user" -export const GroupSources: GroupSource[] = ["oidc", "user"] - -// From codersdk/insights.go -export type InsightsReportInterval = "day" | "week" -export const InsightsReportIntervals: InsightsReportInterval[] = ["day", "week"] - -// From codersdk/provisionerdaemons.go -export type JobErrorCode = "REQUIRED_TEMPLATE_VARIABLES" -export const JobErrorCodes: JobErrorCode[] = ["REQUIRED_TEMPLATE_VARIABLES"] - -// From codersdk/provisionerdaemons.go -export type LogLevel = "debug" | "error" | "info" | "trace" | "warn" -export const LogLevels: LogLevel[] = ["debug", "error", "info", "trace", "warn"] - -// From codersdk/provisionerdaemons.go -export type LogSource = "provisioner" | "provisioner_daemon" -export const LogSources: LogSource[] = ["provisioner", "provisioner_daemon"] - -// From codersdk/apikey.go -export type LoginType = "" | "github" | "none" | "oidc" | "password" | "token" -export const LoginTypes: LoginType[] = ["", "github", "none", "oidc", "password", "token"] - -// From codersdk/oauth2.go -export type OAuth2ProviderGrantType = "authorization_code" | "refresh_token" -export const OAuth2ProviderGrantTypes: OAuth2ProviderGrantType[] = ["authorization_code", "refresh_token"] - -// From codersdk/oauth2.go -export type OAuth2ProviderResponseType = "code" -export const OAuth2ProviderResponseTypes: OAuth2ProviderResponseType[] = ["code"] - -// From codersdk/deployment.go -export type PostgresAuth = "awsiamrds" | "password" -export const PostgresAuths: PostgresAuth[] = ["awsiamrds", "password"] - -// From codersdk/provisionerdaemons.go -export type ProvisionerJobStatus = "canceled" | "canceling" | "failed" | "pending" | "running" | "succeeded" | "unknown" -export const ProvisionerJobStatuses: ProvisionerJobStatus[] = ["canceled", "canceling", "failed", "pending", "running", "succeeded", "unknown"] - -// From codersdk/workspaces.go -export type ProvisionerLogLevel = "debug" -export const ProvisionerLogLevels: ProvisionerLogLevel[] = ["debug"] - -// From codersdk/organizations.go -export type ProvisionerStorageMethod = "file" -export const ProvisionerStorageMethods: ProvisionerStorageMethod[] = ["file"] - -// From codersdk/organizations.go -export type ProvisionerType = "echo" | "terraform" -export const ProvisionerTypes: ProvisionerType[] = ["echo", "terraform"] - -// From codersdk/workspaceproxy.go -export type ProxyHealthStatus = "ok" | "unhealthy" | "unreachable" | "unregistered" -export const ProxyHealthStatuses: ProxyHealthStatus[] = ["ok", "unhealthy", "unreachable", "unregistered"] - -// From codersdk/rbacresources_gen.go -export type RBACAction = "application_connect" | "assign" | "create" | "delete" | "read" | "read_personal" | "ssh" | "start" | "stop" | "update" | "update_personal" | "use" | "view_insights" -export const RBACActions: RBACAction[] = ["application_connect", "assign", "create", "delete", "read", "read_personal", "ssh", "start", "stop", "update", "update_personal", "use", "view_insights"] - -// From codersdk/rbacresources_gen.go -export type RBACResource = "*" | "api_key" | "assign_org_role" | "assign_role" | "audit_log" | "crypto_key" | "debug_info" | "deployment_config" | "deployment_stats" | "file" | "group" | "group_member" | "idpsync_settings" | "license" | "notification_message" | "notification_preference" | "notification_template" | "oauth2_app" | "oauth2_app_code_token" | "oauth2_app_secret" | "organization" | "organization_member" | "provisioner_daemon" | "provisioner_keys" | "replicas" | "system" | "tailnet_coordinator" | "template" | "user" | "workspace" | "workspace_dormant" | "workspace_proxy" -export const RBACResources: RBACResource[] = ["*", "api_key", "assign_org_role", "assign_role", "audit_log", "crypto_key", "debug_info", "deployment_config", "deployment_stats", "file", "group", "group_member", "idpsync_settings", "license", "notification_message", "notification_preference", "notification_template", "oauth2_app", "oauth2_app_code_token", "oauth2_app_secret", "organization", "organization_member", "provisioner_daemon", "provisioner_keys", "replicas", "system", "tailnet_coordinator", "template", "user", "workspace", "workspace_dormant", "workspace_proxy"] - -// From codersdk/audit.go -export type ResourceType = "api_key" | "convert_login" | "custom_role" | "git_ssh_key" | "group" | "health_settings" | "license" | "notifications_settings" | "oauth2_provider_app" | "oauth2_provider_app_secret" | "organization" | "template" | "template_version" | "user" | "workspace" | "workspace_build" | "workspace_proxy" -export const ResourceTypes: ResourceType[] = ["api_key", "convert_login", "custom_role", "git_ssh_key", "group", "health_settings", "license", "notifications_settings", "oauth2_provider_app", "oauth2_provider_app_secret", "organization", "template", "template_version", "user", "workspace", "workspace_build", "workspace_proxy"] - -// From codersdk/serversentevents.go -export type ServerSentEventType = "data" | "error" | "ping" -export const ServerSentEventTypes: ServerSentEventType[] = ["data", "error", "ping"] - -// From codersdk/insights.go -export type TemplateAppsType = "app" | "builtin" -export const TemplateAppsTypes: TemplateAppsType[] = ["app", "builtin"] - -// From codersdk/insights.go -export type TemplateInsightsSection = "interval_reports" | "report" -export const TemplateInsightsSections: TemplateInsightsSection[] = ["interval_reports", "report"] - -// From codersdk/templates.go -export type TemplateRole = "" | "admin" | "use" -export const TemplateRoles: TemplateRole[] = ["", "admin", "use"] - -// From codersdk/templateversions.go -export type TemplateVersionWarning = "UNSUPPORTED_WORKSPACES" -export const TemplateVersionWarnings: TemplateVersionWarning[] = ["UNSUPPORTED_WORKSPACES"] - -// From codersdk/workspacebuilds.go -export type TimingStage = "apply" | "connect" | "cron" | "graph" | "init" | "plan" | "start" | "stop" -export const TimingStages: TimingStage[] = ["apply", "connect", "cron", "graph", "init", "plan", "start", "stop"] - -// From codersdk/workspaces.go -export type UsageAppName = "jetbrains" | "reconnecting-pty" | "ssh" | "vscode" -export const UsageAppNames: UsageAppName[] = ["jetbrains", "reconnecting-pty", "ssh", "vscode"] - -// From codersdk/users.go -export type UserStatus = "active" | "dormant" | "suspended" -export const UserStatuses: UserStatus[] = ["active", "dormant", "suspended"] - -// From codersdk/templateversions.go -export type ValidationMonotonicOrder = "decreasing" | "increasing" -export const ValidationMonotonicOrders: ValidationMonotonicOrder[] = ["decreasing", "increasing"] - -// From codersdk/workspaceagents.go -export type WorkspaceAgentLifecycle = "created" | "off" | "ready" | "shutdown_error" | "shutdown_timeout" | "shutting_down" | "start_error" | "start_timeout" | "starting" -export const WorkspaceAgentLifecycles: WorkspaceAgentLifecycle[] = ["created", "off", "ready", "shutdown_error", "shutdown_timeout", "shutting_down", "start_error", "start_timeout", "starting"] - -// From codersdk/workspaceagentportshare.go -export type WorkspaceAgentPortShareLevel = "authenticated" | "owner" | "public" -export const WorkspaceAgentPortShareLevels: WorkspaceAgentPortShareLevel[] = ["authenticated", "owner", "public"] - -// From codersdk/workspaceagentportshare.go -export type WorkspaceAgentPortShareProtocol = "http" | "https" -export const WorkspaceAgentPortShareProtocols: WorkspaceAgentPortShareProtocol[] = ["http", "https"] - -// From codersdk/workspaceagents.go -export type WorkspaceAgentStartupScriptBehavior = "blocking" | "non-blocking" -export const WorkspaceAgentStartupScriptBehaviors: WorkspaceAgentStartupScriptBehavior[] = ["blocking", "non-blocking"] - -// From codersdk/workspaceagents.go -export type WorkspaceAgentStatus = "connected" | "connecting" | "disconnected" | "timeout" -export const WorkspaceAgentStatuses: WorkspaceAgentStatus[] = ["connected", "connecting", "disconnected", "timeout"] - -// From codersdk/workspaceapps.go -export type WorkspaceAppHealth = "disabled" | "healthy" | "initializing" | "unhealthy" -export const WorkspaceAppHealths: WorkspaceAppHealth[] = ["disabled", "healthy", "initializing", "unhealthy"] - -// From codersdk/workspaceapps.go -export type WorkspaceAppSharingLevel = "authenticated" | "owner" | "public" -export const WorkspaceAppSharingLevels: WorkspaceAppSharingLevel[] = ["authenticated", "owner", "public"] - -// From codersdk/workspacebuilds.go -export type WorkspaceStatus = "canceled" | "canceling" | "deleted" | "deleting" | "failed" | "pending" | "running" | "starting" | "stopped" | "stopping" -export const WorkspaceStatuses: WorkspaceStatus[] = ["canceled", "canceling", "deleted", "deleting", "failed", "pending", "running", "starting", "stopped", "stopping"] - -// From codersdk/workspacebuilds.go -export type WorkspaceTransition = "delete" | "start" | "stop" -export const WorkspaceTransitions: WorkspaceTransition[] = ["delete", "start", "stop"] - -// From codersdk/workspaceproxy.go -export type RegionTypes = Region | WorkspaceProxy - -// The code below is generated from codersdk/healthsdk. - -// From healthsdk/healthsdk.go -export interface AccessURLReport extends BaseReport { - readonly healthy: boolean; - readonly access_url: string; - readonly reachable: boolean; - readonly status_code: number; - readonly healthz_response: string; -} - -// From healthsdk/healthsdk.go -export interface BaseReport { - readonly error?: string; - readonly severity: HealthSeverity; - readonly warnings: Readonly>; - readonly dismissed: boolean; -} - -// From healthsdk/healthsdk.go -export interface DERPHealthReport extends BaseReport { - readonly healthy: boolean; - readonly regions: Record; - // TODO: narrow this type - readonly netcheck?: any; - readonly netcheck_err?: string; - readonly netcheck_logs: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface DERPNodeReport { - readonly healthy: boolean; - readonly severity: HealthSeverity; - readonly warnings: Readonly>; - readonly error?: string; - // TODO: narrow this type - readonly node?: any; - // TODO: narrow this type - readonly node_info: any; - readonly can_exchange_messages: boolean; - readonly round_trip_ping: string; - readonly round_trip_ping_ms: number; - readonly uses_websocket: boolean; - readonly client_logs: Readonly>>>; - readonly client_errs: Readonly>>>; - readonly stun: STUNReport; -} - -// From healthsdk/healthsdk.go -export interface DERPRegionReport { - readonly healthy: boolean; - readonly severity: HealthSeverity; - readonly warnings: Readonly>; - readonly error?: string; - // TODO: narrow this type - readonly region?: any; - readonly node_reports: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface DatabaseReport extends BaseReport { - readonly healthy: boolean; - readonly reachable: boolean; - readonly latency: string; - readonly latency_ms: number; - readonly threshold_ms: number; -} - -// From healthsdk/healthsdk.go -export interface HealthSettings { - readonly dismissed_healthchecks: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface HealthcheckReport { - readonly time: string; - readonly healthy: boolean; - readonly severity: HealthSeverity; - readonly derp: DERPHealthReport; - readonly access_url: AccessURLReport; - readonly websocket: WebsocketReport; - readonly database: DatabaseReport; - readonly workspace_proxy: WorkspaceProxyReport; - readonly provisioner_daemons: ProvisionerDaemonsReport; - readonly coder_version: string; -} - -// From healthsdk/healthsdk.go -export interface ProvisionerDaemonsReport extends BaseReport { - readonly items: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface ProvisionerDaemonsReportItem { - readonly provisioner_daemon: ProvisionerDaemon; - readonly warnings: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface STUNReport { - readonly Enabled: boolean; - readonly CanSTUN: boolean; - readonly Error?: string; -} - -// From healthsdk/healthsdk.go -export interface UpdateHealthSettings { - readonly dismissed_healthchecks: Readonly>; -} - -// From healthsdk/healthsdk.go -export interface WebsocketReport extends BaseReport { - readonly healthy: boolean; - readonly body: string; - readonly code: number; -} - -// From healthsdk/healthsdk.go -export interface WorkspaceProxyReport extends BaseReport { - readonly healthy: boolean; - readonly workspace_proxies: RegionsResponse; -} - -// From healthsdk/healthsdk.go -export type HealthSection = "AccessURL" | "DERP" | "Database" | "ProvisionerDaemons" | "Websocket" | "WorkspaceProxy" -export const HealthSections: HealthSection[] = ["AccessURL", "DERP", "Database", "ProvisionerDaemons", "Websocket", "WorkspaceProxy"] - -// The code below is generated from coderd/healthcheck/health. - -// From health/model.go -export interface HealthMessage { - readonly code: HealthCode; - readonly message: string; -} - -// From health/model.go -export type HealthCode = "EACS01" | "EACS02" | "EACS03" | "EACS04" | "EDB01" | "EDB02" | "EDERP01" | "EDERP02" | "EPD01" | "EPD02" | "EPD03" | "EUNKNOWN" | "EWP01" | "EWP02" | "EWP04" | "EWS01" | "EWS02" | "EWS03" -export const HealthCodes: HealthCode[] = ["EACS01", "EACS02", "EACS03", "EACS04", "EDB01", "EDB02", "EDERP01", "EDERP02", "EPD01", "EPD02", "EPD03", "EUNKNOWN", "EWP01", "EWP02", "EWP04", "EWS01", "EWS02", "EWS03"] - -// From health/model.go -export type HealthSeverity = "error" | "ok" | "warning" -export const HealthSeveritys: HealthSeverity[] = ["error", "ok", "warning"] - -// The code below is generated from github.com/coder/serpent. - -// From serpent/serpent.go -export type SerpentAnnotations = Record - -// From serpent/serpent.go -export interface SerpentGroup { - readonly parent?: SerpentGroup; - readonly name?: string; - readonly yaml?: string; - readonly description?: string; -} - -// From serpent/option.go -export interface SerpentOption { - readonly name?: string; - readonly description?: string; - readonly required?: boolean; - readonly flag?: string; - readonly flag_shorthand?: string; - readonly env?: string; - readonly yaml?: string; - readonly default?: string; - // TODO: narrow this type - readonly value?: any; - readonly annotations?: SerpentAnnotations; - readonly group?: SerpentGroup; - readonly use_instead?: Readonly>; - readonly hidden?: boolean; - readonly value_source?: SerpentValueSource; -} - -// From serpent/option.go -export type SerpentOptionSet = Readonly> - -// From serpent/option.go -export type SerpentValueSource = "" | "default" | "env" | "flag" | "yaml" -export const SerpentValueSources: SerpentValueSource[] = ["", "default", "env", "flag", "yaml"] From 0b436bc377b18eb003b307f4e7dac94bc09d13f9 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 15:59:23 -0600 Subject: [PATCH 12/20] chore: null vs omitempty --- codersdk/healthsdk/healthsdk.go | 10 +- codersdk/organizations.go | 6 +- codersdk/templates.go | 4 +- codersdk/workspaces.go | 2 +- scripts/apitypings/go.mod | 2 +- scripts/apitypings/go.sum | 4 +- scripts/apitypings/main.go | 8 +- site/e2e/api.ts | 7 +- .../templates/updateTemplateSchedule.spec.ts | 2 + site/src/api/api.ts | 7 +- site/src/api/typesGenerated.ts | 100 +++++++++--------- site/src/pages/CreateTemplatePage/utils.ts | 1 + .../pages/CreateUserPage/CreateUserForm.tsx | 1 + .../DeploymentSettingsPage/optionValue.ts | 6 +- .../ExternalAuthPageView.stories.tsx | 3 + site/src/pages/HealthPage/DERPPage.tsx | 6 +- .../HealthPage/DERPRegionPage.stories.tsx | 2 +- site/src/pages/HealthPage/DERPRegionPage.tsx | 5 +- .../WorkspaceBuildProgress.stories.tsx | 4 - .../WorkspacePage/WorkspaceBuildProgress.tsx | 4 +- .../WorkspaceSchedulePage/formToRequest.ts | 2 +- .../WorkspacesPageView.stories.tsx | 4 +- site/src/testHelpers/entities.ts | 12 +++ site/src/utils/templates.ts | 4 +- 24 files changed, 121 insertions(+), 85 deletions(-) diff --git a/codersdk/healthsdk/healthsdk.go b/codersdk/healthsdk/healthsdk.go index 158f630f1b4dc..e89d95389fc46 100644 --- a/codersdk/healthsdk/healthsdk.go +++ b/codersdk/healthsdk/healthsdk.go @@ -131,7 +131,7 @@ func (r *HealthcheckReport) Summarize(docsURL string) []string { // BaseReport holds fields common to various health reports. type BaseReport struct { - Error *string `json:"error"` + Error *string `json:"error,omitempty"` Severity health.Severity `json:"severity" enums:"ok,warning,error"` Warnings []health.Message `json:"warnings"` Dismissed bool `json:"dismissed"` @@ -185,8 +185,8 @@ type DERPHealthReport struct { // Healthy is deprecated and left for backward compatibility purposes, use `Severity` instead. Healthy bool `json:"healthy"` Regions map[int]*DERPRegionReport `json:"regions"` - Netcheck *netcheck.Report `json:"netcheck"` - NetcheckErr *string `json:"netcheck_err"` + Netcheck *netcheck.Report `json:"netcheck,omitempty"` + NetcheckErr *string `json:"netcheck_err,omitempty"` NetcheckLogs []string `json:"netcheck_logs"` } @@ -196,7 +196,7 @@ type DERPRegionReport struct { Healthy bool `json:"healthy"` Severity health.Severity `json:"severity" enums:"ok,warning,error"` Warnings []health.Message `json:"warnings"` - Error *string `json:"error"` + Error *string `json:"error,omitempty"` Region *tailcfg.DERPRegion `json:"region"` NodeReports []*DERPNodeReport `json:"node_reports"` } @@ -207,7 +207,7 @@ type DERPNodeReport struct { Healthy bool `json:"healthy"` Severity health.Severity `json:"severity" enums:"ok,warning,error"` Warnings []health.Message `json:"warnings"` - Error *string `json:"error"` + Error *string `json:"error,omitempty"` Node *tailcfg.DERPNode `json:"node"` diff --git a/codersdk/organizations.go b/codersdk/organizations.go index 4966b7a41809c..494f6c86887c4 100644 --- a/codersdk/organizations.go +++ b/codersdk/organizations.go @@ -157,13 +157,13 @@ type CreateTemplateRequest struct { // AllowUserAutostart allows users to set a schedule for autostarting their // workspace. By default this is true. This can only be disabled when using // an enterprise license. - AllowUserAutostart *bool `json:"allow_user_autostart"` + AllowUserAutostart *bool `json:"allow_user_autostart,omitempty"` // AllowUserAutostop allows users to set a custom workspace TTL to use in // place of the template's DefaultTTL field. By default this is true. If // false, the DefaultTTL will always be used. This can only be disabled when // using an enterprise license. - AllowUserAutostop *bool `json:"allow_user_autostop"` + AllowUserAutostop *bool `json:"allow_user_autostop,omitempty"` // FailureTTLMillis allows optionally specifying the max lifetime before Coder // stops all resources for failed workspaces created from this template. @@ -202,7 +202,7 @@ type CreateWorkspaceRequest struct { // TemplateVersionID can be used to specify a specific version of a template for creating the workspace. TemplateVersionID uuid.UUID `json:"template_version_id,omitempty" validate:"required_without=TemplateID,excluded_with=TemplateID" format:"uuid"` Name string `json:"name" validate:"workspace_name,required"` - AutostartSchedule *string `json:"autostart_schedule"` + AutostartSchedule *string `json:"autostart_schedule,omitempty"` TTLMillis *int64 `json:"ttl_ms,omitempty"` // RichParameterValues allows for additional parameters to be provided // during the initial provision. diff --git a/codersdk/templates.go b/codersdk/templates.go index 378b64103be93..9e74887b53639 100644 --- a/codersdk/templates.go +++ b/codersdk/templates.go @@ -242,14 +242,14 @@ type UpdateTemplateMeta struct { // any new workspaces from using this template. // If passed an empty string, will remove the deprecated message, making // the template usable for new workspaces again. - DeprecationMessage *string `json:"deprecation_message"` + DeprecationMessage *string `json:"deprecation_message,omitempty"` // DisableEveryoneGroupAccess allows optionally disabling the default // behavior of granting the 'everyone' group access to use the template. // If this is set to true, the template will not be available to all users, // and must be explicitly granted to users or groups in the permissions settings // of the template. DisableEveryoneGroupAccess bool `json:"disable_everyone_group_access"` - MaxPortShareLevel *WorkspaceAgentPortShareLevel `json:"max_port_share_level"` + MaxPortShareLevel *WorkspaceAgentPortShareLevel `json:"max_port_share_level,omitempty"` } type TemplateExample struct { diff --git a/codersdk/workspaces.go b/codersdk/workspaces.go index 1e1e6c890e805..da3df12eb9364 100644 --- a/codersdk/workspaces.go +++ b/codersdk/workspaces.go @@ -260,7 +260,7 @@ type UpdateWorkspaceAutostartRequest struct { // Schedule is expected to be of the form `CRON_TZ= * * ` // Example: `CRON_TZ=US/Central 30 9 * * 1-5` represents 0930 in the timezone US/Central // on weekdays (Mon-Fri). `CRON_TZ` defaults to UTC if not present. - Schedule *string `json:"schedule"` + Schedule *string `json:"schedule,omitempty"` } // UpdateWorkspaceAutostart sets the autostart schedule for workspace by id. diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod index 21e916c7c26c9..92ecb9cf74fbe 100644 --- a/scripts/apitypings/go.mod +++ b/scripts/apitypings/go.mod @@ -6,7 +6,7 @@ toolchain go1.23.3 require ( github.com/coder/coder/v2 v2.0.0-00010101000000-000000000000 - github.com/coder/guts v0.0.0-20241209204333-b551377ecafa + github.com/coder/guts v0.0.0-20241209215642-27b52f675ebe github.com/coder/serpent v0.10.0 github.com/stretchr/testify v1.10.0 ) diff --git a/scripts/apitypings/go.sum b/scripts/apitypings/go.sum index 77d9de5101de5..e103b478e263d 100644 --- a/scripts/apitypings/go.sum +++ b/scripts/apitypings/go.sum @@ -66,8 +66,8 @@ github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/coder/guts v0.0.0-20241209204333-b551377ecafa h1:mZcghJk1kvBjBsQuzm6spMfvQrtxnXenrhovz9QCkjs= -github.com/coder/guts v0.0.0-20241209204333-b551377ecafa/go.mod h1:VEiS5EvQZB30BVuAhK6QzbUEITxXIGz4771teg2fKGk= +github.com/coder/guts v0.0.0-20241209215642-27b52f675ebe h1:rJfBr14v0veOS931XUgASQ/+o/KnKX3lqNKceeEUv4s= +github.com/coder/guts v0.0.0-20241209215642-27b52f675ebe/go.mod h1:VEiS5EvQZB30BVuAhK6QzbUEITxXIGz4771teg2fKGk= 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/serpent v0.10.0 h1:ofVk9FJXSek+SmL3yVE3GoArP83M+1tX+H7S4t8BSuM= diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index c0481df521683..3cd55606bb588 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -75,6 +75,9 @@ func TsMutations(ts *guts.Typescript) { config.ReadOnly, // Add ignore linter comments config.BiomeLintIgnoreAnyTypeParameters, + // Omitempty + null is just '?' in golang json marshal + // number?: number | null --> number?: number + config.SimplifyOmitEmpty, ) } @@ -82,8 +85,11 @@ func TsMutations(ts *guts.Typescript) { func TypeMappings(gen *guts.GoParser) error { gen.IncludeCustomDeclaration(config.StandardMappings()) + gen.IncludeCustomDeclaration(map[string]guts.TypeOverride{ + "github.com/coder/coder/v2/codersdk.NullTime": config.OverrideNullable(config.OverrideLiteral(bindings.KeywordString)), + }) + err := gen.IncludeCustom(map[string]string{ - "github.com/coder/coder/v2/codersdk.NullTime": "string", // Serpent fields "github.com/coder/serpent.Regexp": "string", "github.com/coder/serpent.StringArray": "string", diff --git a/site/e2e/api.ts b/site/e2e/api.ts index 0494467799a97..4790a2e3fb036 100644 --- a/site/e2e/api.ts +++ b/site/e2e/api.ts @@ -37,6 +37,7 @@ export const createUser = async (orgId: string) => { password: "s3cure&password!", login_type: "password", organization_ids: [orgId], + user_status: null, }); return user; }; @@ -129,7 +130,7 @@ export async function verifyConfigFlagString( const configOption = page.locator( `div.options-table .option-${flag} .option-value-string`, ); - await expect(configOption).toHaveText(opt.value); + await expect(configOption).toHaveText(opt.value as any); } export async function verifyConfigFlagEmpty(page: Page, flag: string) { @@ -150,7 +151,7 @@ export async function verifyConfigFlagArray( ); // Verify array of options with simple dots - for (const item of opt.value) { + for (const item of opt.value as any) { await expect(configOption.locator("li", { hasText: item })).toBeVisible(); } } @@ -166,7 +167,7 @@ export async function verifyConfigFlagEntries( ); // Verify array of options with green marks. - Object.entries(opt.value) + Object.entries(opt.value as any) .sort((a, b) => a[0].localeCompare(b[0])) .map(async ([item]) => { await expect( diff --git a/site/e2e/tests/templates/updateTemplateSchedule.spec.ts b/site/e2e/tests/templates/updateTemplateSchedule.spec.ts index a8380ab0938c2..ee8301557ed24 100644 --- a/site/e2e/tests/templates/updateTemplateSchedule.spec.ts +++ b/site/e2e/tests/templates/updateTemplateSchedule.spec.ts @@ -24,6 +24,8 @@ test("update template schedule settings without override other settings", async template_version_id: templateVersion.id, disable_everyone_group_access: false, require_active_version: true, + max_port_share_level: null, + allow_user_cancel_workspace_jobs: null, }); await page.goto(`${baseURL}/templates/${template.name}/settings/schedule`, { diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 8f059797df6a8..6b0e685b177eb 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -1738,15 +1738,20 @@ class ApiMethods { name: "", add_users: [userId], remove_users: [], + display_name: null, + avatar_url: null, + quota_allowance: null, }); }; removeMember = async (groupId: string, userId: string) => { return this.patchGroup(groupId, { name: "", - display_name: "", add_users: [], remove_users: [userId], + display_name: null, + avatar_url: null, + quota_allowance: null, }); }; diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 9faea80fcaf9e..8dceaa9a4d54f 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -168,7 +168,7 @@ export interface AuditLog { readonly resource_link: string; readonly is_deleted: boolean; readonly organization_id: string; - readonly organization?: MinimalOrganization | null; + readonly organization?: MinimalOrganization; readonly user: User | null; } @@ -238,7 +238,7 @@ export interface BannerConfig { // From healthsdk/healthsdk.go export interface BaseReport { - readonly error: string | null; + readonly error?: string; readonly severity: HealthSeverity; readonly warnings: readonly HealthMessage[]; readonly dismissed: boolean; @@ -361,16 +361,16 @@ export interface CreateTemplateRequest { readonly description?: string; readonly icon?: string; readonly template_version_id: string; - readonly default_ttl_ms?: number | null; - readonly activity_bump_ms?: number | null; - readonly autostop_requirement?: TemplateAutostopRequirement | null; - readonly autostart_requirement?: TemplateAutostartRequirement | null; + readonly default_ttl_ms?: number; + readonly activity_bump_ms?: number; + readonly autostop_requirement?: TemplateAutostopRequirement; + readonly autostart_requirement?: TemplateAutostartRequirement; readonly allow_user_cancel_workspace_jobs: boolean | null; - readonly allow_user_autostart: boolean | null; - readonly allow_user_autostop: boolean | null; - readonly failure_ttl_ms?: number | null; - readonly dormant_ttl_ms?: number | null; - readonly delete_ttl_ms?: number | null; + readonly allow_user_autostart?: boolean; + readonly allow_user_autostop?: boolean; + readonly failure_ttl_ms?: number; + readonly dormant_ttl_ms?: number; + readonly delete_ttl_ms?: number; readonly disable_everyone_group_access: boolean; readonly require_active_version: boolean; readonly max_port_share_level: WorkspaceAgentPortShareLevel | null; @@ -448,8 +448,8 @@ export interface CreateWorkspaceRequest { readonly template_id?: string; readonly template_version_id?: string; readonly name: string; - readonly autostart_schedule: string | null; - readonly ttl_ms?: number | null; + readonly autostart_schedule?: string; + readonly ttl_ms?: number; readonly rich_parameter_values?: readonly WorkspaceBuildParameter[]; readonly automatic_updates?: AutomaticUpdates; } @@ -522,8 +522,8 @@ export interface DERPHealthReport extends BaseReport { readonly healthy: boolean; readonly regions: Record; // Invalid type, using 'any'. Might be a reference to any external package - readonly netcheck: any | null; - readonly netcheck_err: string | null; + readonly netcheck?: any; + readonly netcheck_err?: string; readonly netcheck_logs: readonly string[]; } @@ -532,7 +532,7 @@ export interface DERPNodeReport { readonly healthy: boolean; readonly severity: HealthSeverity; readonly warnings: readonly HealthMessage[]; - readonly error: string | null; + readonly error?: string; // Invalid type, using 'any'. Might be a reference to any external package readonly node: any | null; // Invalid type, using 'any'. Might be a reference to any external package @@ -557,7 +557,7 @@ export interface DERPRegionReport { readonly healthy: boolean; readonly severity: HealthSeverity; readonly warnings: readonly HealthMessage[]; - readonly error: string | null; + readonly error?: string; // Invalid type, using 'any'. Might be a reference to any external package readonly region: any | null; readonly node_reports: readonly (DERPNodeReport | null)[]; @@ -597,7 +597,7 @@ export interface DeleteWorkspaceAgentPortShareRequest { // From codersdk/deployment.go export interface DeploymentConfig { - readonly config?: DeploymentValues | null; + readonly config?: DeploymentValues; readonly options?: SerpentOptionSet; } @@ -739,7 +739,7 @@ export type Experiment = | "workspace-usage"; // From codersdk/deployment.go -export type Experiments = Experiment[]; +export type Experiments = readonly Experiment[]; // From codersdk/externalauth.go export interface ExternalAuth { @@ -827,8 +827,8 @@ export interface ExternalAuthUser { export interface Feature { readonly entitlement: Entitlement; readonly enabled: boolean; - readonly limit?: number | null; - readonly actual?: number | null; + readonly limit?: number; + readonly actual?: number; } // From codersdk/deployment.go @@ -1294,7 +1294,7 @@ export interface OAuth2ProviderAppFilter { // From codersdk/oauth2.go export interface OAuth2ProviderAppSecret { readonly id: string; - readonly last_used_at: string; + readonly last_used_at: string | null; readonly client_secret_truncated: string; } @@ -1425,7 +1425,7 @@ export interface PatchGroupRequest { // From codersdk/templateversions.go export interface PatchTemplateVersionRequest { readonly name: string; - readonly message?: string | null; + readonly message?: string; } // From codersdk/workspaceproxy.go @@ -1525,13 +1525,13 @@ export interface ProvisionerDaemonsReportItem { export interface ProvisionerJob { readonly id: string; readonly created_at: string; - readonly started_at?: string | null; - readonly completed_at?: string | null; - readonly canceled_at?: string | null; + readonly started_at?: string; + readonly completed_at?: string; + readonly canceled_at?: string; readonly error?: string; readonly error_code?: JobErrorCode; readonly status: ProvisionerJobStatus; - readonly worker_id?: string | null; + readonly worker_id?: string; readonly file_id: string; readonly tags: Record; readonly queue_position: number; @@ -1945,7 +1945,7 @@ export type SerpentAnnotations = Record; // From serpent/serpent.go export interface SerpentGroup { - readonly parent?: SerpentGroup | null; + readonly parent?: SerpentGroup; readonly name?: string; readonly yaml?: string; readonly description?: string; @@ -1965,14 +1965,14 @@ export interface SerpentOption { // this is likely an enum in an external package "github.com/spf13/pflag.Value" readonly value?: unknown; readonly annotations?: SerpentAnnotations; - readonly group?: SerpentGroup | null; + readonly group?: SerpentGroup; readonly use_instead?: readonly SerpentOption[]; readonly hidden?: boolean; readonly value_source?: SerpentValueSource; } // From serpent/option.go -export type SerpentOptionSet = SerpentOption[]; +export type SerpentOptionSet = readonly SerpentOption[]; // From serpent/values.go export type SerpentStruct = T; @@ -2215,7 +2215,7 @@ export interface TemplateInsightsRequest { // From codersdk/insights.go export interface TemplateInsightsResponse { - readonly report?: TemplateInsightsReport | null; + readonly report?: TemplateInsightsReport; readonly interval_reports?: readonly TemplateInsightsIntervalReport[]; } @@ -2257,7 +2257,7 @@ export interface TemplateUser extends User { // From codersdk/templateversions.go export interface TemplateVersion { readonly id: string; - readonly template_id?: string | null; + readonly template_id?: string; readonly organization_id?: string; readonly created_at: string; readonly updated_at: string; @@ -2268,7 +2268,7 @@ export interface TemplateVersion { readonly created_by: MinimalUser; readonly archived: boolean; readonly warnings?: readonly TemplateVersionWarning[]; - readonly matched_provisioners?: MatchedProvisioners | null; + readonly matched_provisioners?: MatchedProvisioners; } // From codersdk/templateversions.go @@ -2295,8 +2295,8 @@ export interface TemplateVersionParameter { readonly options: readonly TemplateVersionParameterOption[]; readonly validation_error?: string; readonly validation_regex?: string; - readonly validation_min?: number | null; - readonly validation_max?: number | null; + readonly validation_min?: number; + readonly validation_max?: number; readonly validation_monotonic?: ValidationMonotonicOrder; readonly required: boolean; readonly ephemeral: boolean; @@ -2414,8 +2414,8 @@ export interface UpdateNotificationTemplateMethod { export interface UpdateOrganizationRequest { readonly name?: string; readonly display_name?: string; - readonly description?: string | null; - readonly icon?: string | null; + readonly description?: string; + readonly icon?: string; } // From codersdk/users.go @@ -2437,8 +2437,8 @@ export interface UpdateTemplateMeta { readonly icon?: string; readonly default_ttl_ms?: number; readonly activity_bump_ms?: number; - readonly autostop_requirement?: TemplateAutostopRequirement | null; - readonly autostart_requirement?: TemplateAutostartRequirement | null; + readonly autostop_requirement?: TemplateAutostopRequirement; + readonly autostart_requirement?: TemplateAutostartRequirement; readonly allow_user_autostart?: boolean; readonly allow_user_autostop?: boolean; readonly allow_user_cancel_workspace_jobs?: boolean; @@ -2448,9 +2448,9 @@ export interface UpdateTemplateMeta { readonly update_workspace_last_used_at: boolean; readonly update_workspace_dormant_at: boolean; readonly require_active_version?: boolean; - readonly deprecation_message: string | null; + readonly deprecation_message?: string; readonly disable_everyone_group_access: boolean; - readonly max_port_share_level: WorkspaceAgentPortShareLevel | null; + readonly max_port_share_level?: WorkspaceAgentPortShareLevel; } // From codersdk/users.go @@ -2487,7 +2487,7 @@ export interface UpdateWorkspaceAutomaticUpdatesRequest { // From codersdk/workspaces.go export interface UpdateWorkspaceAutostartRequest { - readonly schedule: string | null; + readonly schedule?: string; } // From codersdk/workspaces.go @@ -2699,8 +2699,8 @@ export interface Workspace { readonly latest_build: WorkspaceBuild; readonly outdated: boolean; readonly name: string; - readonly autostart_schedule?: string | null; - readonly ttl_ms?: number | null; + readonly autostart_schedule?: string; + readonly ttl_ms?: number; readonly last_used_at: string; readonly deleting_at: string | null; readonly dormant_at: string | null; @@ -2716,11 +2716,11 @@ export interface WorkspaceAgent { readonly id: string; readonly created_at: string; readonly updated_at: string; - readonly first_connected_at?: string | null; - readonly last_connected_at?: string | null; - readonly disconnected_at?: string | null; - readonly started_at?: string | null; - readonly ready_at?: string | null; + readonly first_connected_at?: string; + readonly last_connected_at?: string; + readonly disconnected_at?: string; + readonly started_at?: string; + readonly ready_at?: string; readonly status: WorkspaceAgentStatus; readonly lifecycle_state: WorkspaceAgentLifecycle; readonly name: string; @@ -2956,7 +2956,7 @@ export interface WorkspaceBuild { readonly max_deadline?: string; readonly status: WorkspaceStatus; readonly daily_cost: number; - readonly matched_provisioners?: MatchedProvisioners | null; + readonly matched_provisioners?: MatchedProvisioners; } // From codersdk/workspacebuilds.go diff --git a/site/src/pages/CreateTemplatePage/utils.ts b/site/src/pages/CreateTemplatePage/utils.ts index d7fba28625b5f..48e45fbdaaf52 100644 --- a/site/src/pages/CreateTemplatePage/utils.ts +++ b/site/src/pages/CreateTemplatePage/utils.ts @@ -17,6 +17,7 @@ export const newTemplate = ( const safeTemplateData = { name: formData.name, + max_port_share_level: null, display_name: formData.display_name, description: formData.description, icon: formData.icon, diff --git a/site/src/pages/CreateUserPage/CreateUserForm.tsx b/site/src/pages/CreateUserPage/CreateUserForm.tsx index 51dae50df26fa..1ce1b48df132a 100644 --- a/site/src/pages/CreateUserPage/CreateUserForm.tsx +++ b/site/src/pages/CreateUserPage/CreateUserForm.tsx @@ -96,6 +96,7 @@ export const CreateUserForm: FC< name: "", organization_ids: ["00000000-0000-0000-0000-000000000000"], login_type: "", + user_status: null, }, validationSchema, onSubmit, diff --git a/site/src/pages/DeploymentSettingsPage/optionValue.ts b/site/src/pages/DeploymentSettingsPage/optionValue.ts index 0997e5408697a..37501dc6f758f 100644 --- a/site/src/pages/DeploymentSettingsPage/optionValue.ts +++ b/site/src/pages/DeploymentSettingsPage/optionValue.ts @@ -40,7 +40,7 @@ export function optionValue( case "Experiments": { const experimentMap = additionalValues?.reduce>( (acc, v) => { - acc[v] = option.value.includes("*"); + acc[v] = (option.value as any).includes("*"); return acc; }, {}, @@ -52,7 +52,7 @@ export function optionValue( // We show all experiments (including unsafe) that are currently enabled on a deployment // but only show safe experiments that are not. - for (const v of option.value) { + for (const v of (option.value as any)) { if (v !== "*") { experimentMap[v] = true; } @@ -61,6 +61,6 @@ export function optionValue( return experimentMap; } default: - return option.value; + return option.value as any; } } diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx index e8ee04b73f933..aa976ab4a63a3 100644 --- a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx +++ b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx @@ -40,6 +40,7 @@ DeviceUnauthenticated.args = { installations: [], app_install_url: "", app_installable: false, + user: null, }, externalAuthDevice: { device_code: "1234-5678", @@ -59,6 +60,7 @@ Device429Error.args = { installations: [], app_install_url: "", app_installable: false, + user: null, }, // This is intentionally undefined. // If we get a 429 on the first /device call, then this @@ -80,6 +82,7 @@ DeviceUnauthenticatedError.args = { installations: [], app_install_url: "", app_installable: false, + user: null, }, externalAuthDevice: { device_code: "1234-5678", diff --git a/site/src/pages/HealthPage/DERPPage.tsx b/site/src/pages/HealthPage/DERPPage.tsx index 45d4edbe1e7ca..63108e2b502c2 100644 --- a/site/src/pages/HealthPage/DERPPage.tsx +++ b/site/src/pages/HealthPage/DERPPage.tsx @@ -85,7 +85,11 @@ export const DERPPage: FC = () => {
Regions
- {Object.values(regions) + {Object.values(regions!) + .filter((region) => { + // Values can technically be null + return region !== null; + }) .sort((a, b) => { if (a.region && b.region) { return a.region.RegionName.localeCompare(b.region.RegionName); diff --git a/site/src/pages/HealthPage/DERPRegionPage.stories.tsx b/site/src/pages/HealthPage/DERPRegionPage.stories.tsx index b7514fa43f8e8..1289f97843eb5 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.stories.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.stories.tsx @@ -3,7 +3,7 @@ import { MockHealth } from "testHelpers/entities"; import { DERPRegionPage } from "./DERPRegionPage"; import { generateMeta } from "./storybook"; -const firstRegionId = Object.values(MockHealth.derp.regions)[0].region +const firstRegionId = Object.values(MockHealth.derp.regions)[0]!.region ?.RegionID; const meta: Meta = { diff --git a/site/src/pages/HealthPage/DERPRegionPage.tsx b/site/src/pages/HealthPage/DERPRegionPage.tsx index 5fb1bb8dabc54..c0b6035f9cddd 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.tsx @@ -7,6 +7,8 @@ import type { HealthMessage, HealthSeverity, HealthcheckReport, + DERPRegionReport, + DERPNodeReport, } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; import type { FC } from "react"; @@ -35,7 +37,7 @@ export const DERPRegionPage: FC = () => { node_reports: reports, warnings, severity, - } = healthStatus.derp.regions[regionId]; + } = healthStatus.derp.regions[regionId] as DERPRegionReport; return ( <> @@ -101,6 +103,7 @@ export const DERPRegionPage: FC = () => {
{reports.map((report) => { + report = report as DERPNodeReport; // Can technically be null const { node, client_logs: logs } = report; const latencyColor = getLatencyColor( theme, diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx index fc5b213a99aef..433f16ddd9fd3 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx @@ -40,11 +40,7 @@ export const Starting: Story = {}; export const StartingUnknown: Story = { args: { transitionStats: { - // HACK: the codersdk type generator doesn't support null values, but this - // can be null when the template is new. - // @ts-expect-error P50: null, - // @ts-expect-error P95: null, }, }, diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx index aa9cf7b7c84f8..88f006681495e 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx @@ -83,7 +83,9 @@ export const WorkspaceBuildProgress: FC = ({ if ( job.status !== "running" || transitionStats.P50 === undefined || - transitionStats.P95 === undefined + transitionStats.P95 === undefined || + transitionStats.P50 === null || + transitionStats.P95 === null ) { setProgressValue(undefined); setProgressText(undefined); diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts index d79139c243d53..c5d2d91437add 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts @@ -72,6 +72,6 @@ export const formValuesToTTLRequest = ( ttl_ms: values.autostopEnabled && values.ttl ? values.ttl * 60 * 60 * 1000 - : undefined, + : null, }; }; diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx index ef639d087fb5a..080cf5b00e841 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx @@ -45,8 +45,8 @@ const createWorkspace = ( : MockWorkspace.latest_build.job, }, last_used_at: lastUsedAt, - dormant_at: dormantAt, - deleting_at: deletingAt, + dormant_at: dormantAt || null, + deleting_at: deletingAt || null, }; }; diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index c38272e384fb7..3e711032886c4 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -1322,6 +1322,9 @@ export const MockWorkspace: TypesGen.Workspace = { automatic_updates: "never", allow_renames: true, favorite: false, + deleting_at: null, + dormant_at: null, + next_start_at: null, }; export const MockFavoriteWorkspace: TypesGen.Workspace = { @@ -3078,6 +3081,7 @@ export const MockHealth: TypesGen.HealthcheckReport = { stun: { Enabled: true, CanSTUN: true, + Error: null, }, }, { @@ -3121,6 +3125,7 @@ export const MockHealth: TypesGen.HealthcheckReport = { stun: { Enabled: false, CanSTUN: false, + Error: null, }, }, ], @@ -3176,6 +3181,7 @@ export const MockHealth: TypesGen.HealthcheckReport = { stun: { Enabled: true, CanSTUN: true, + Error: null, }, }, { @@ -3209,6 +3215,7 @@ export const MockHealth: TypesGen.HealthcheckReport = { stun: { Enabled: false, CanSTUN: false, + Error: null, }, }, ], @@ -3264,6 +3271,7 @@ export const MockHealth: TypesGen.HealthcheckReport = { stun: { Enabled: true, CanSTUN: true, + Error: null, }, }, { @@ -3297,6 +3305,7 @@ export const MockHealth: TypesGen.HealthcheckReport = { stun: { Enabled: false, CanSTUN: false, + Error: null, }, }, ], @@ -3352,6 +3361,7 @@ export const MockHealth: TypesGen.HealthcheckReport = { stun: { Enabled: true, CanSTUN: true, + Error: null, }, }, { @@ -3385,6 +3395,7 @@ export const MockHealth: TypesGen.HealthcheckReport = { stun: { Enabled: false, CanSTUN: false, + Error: null, }, }, ], @@ -3973,6 +3984,7 @@ export const MockOAuth2ProviderAppSecrets: TypesGen.OAuth2ProviderAppSecret[] = { id: "1", client_secret_truncated: "foo", + last_used_at: null, }, { id: "1", diff --git a/site/src/utils/templates.ts b/site/src/utils/templates.ts index 834bd37a9fdc8..703e181fbae13 100644 --- a/site/src/utils/templates.ts +++ b/site/src/utils/templates.ts @@ -13,8 +13,8 @@ export const formatTemplateActiveDevelopers = (num?: number): string => { return num.toString(); }; -export const formatTemplateBuildTime = (buildTimeMs?: number): string => { - return buildTimeMs === undefined +export const formatTemplateBuildTime = (buildTimeMs?: number | null): string => { + return buildTimeMs === undefined || buildTimeMs === null ? "Unknown" : `${Math.round(dayjs.duration(buildTimeMs, "milliseconds").asSeconds())}s`; }; From 31161ff605d5ccb9048ce1b57292e455a6e57462 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 16:14:23 -0600 Subject: [PATCH 13/20] linting --- scripts/apitypings/go.mod | 2 +- scripts/apitypings/go.sum | 4 ++-- site/src/api/typesGenerated.ts | 4 ++++ site/src/pages/DeploymentSettingsPage/optionValue.ts | 5 ++++- site/src/pages/HealthPage/DERPRegionPage.tsx | 4 ++-- .../WorkspaceSchedulePage/formToRequest.ts | 4 +--- site/src/utils/templates.ts | 4 +++- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/scripts/apitypings/go.mod b/scripts/apitypings/go.mod index 92ecb9cf74fbe..933c84ec4f64c 100644 --- a/scripts/apitypings/go.mod +++ b/scripts/apitypings/go.mod @@ -6,7 +6,7 @@ toolchain go1.23.3 require ( github.com/coder/coder/v2 v2.0.0-00010101000000-000000000000 - github.com/coder/guts v0.0.0-20241209215642-27b52f675ebe + github.com/coder/guts v0.0.0-20241209221220-f181da87c0bc github.com/coder/serpent v0.10.0 github.com/stretchr/testify v1.10.0 ) diff --git a/scripts/apitypings/go.sum b/scripts/apitypings/go.sum index e103b478e263d..accf37cf7f489 100644 --- a/scripts/apitypings/go.sum +++ b/scripts/apitypings/go.sum @@ -66,8 +66,8 @@ github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/coder/guts v0.0.0-20241209215642-27b52f675ebe h1:rJfBr14v0veOS931XUgASQ/+o/KnKX3lqNKceeEUv4s= -github.com/coder/guts v0.0.0-20241209215642-27b52f675ebe/go.mod h1:VEiS5EvQZB30BVuAhK6QzbUEITxXIGz4771teg2fKGk= +github.com/coder/guts v0.0.0-20241209221220-f181da87c0bc h1:xojNiqMa25Cg3vFbNdDrpX6HqGh/igvBxLKPdn5JK6Q= +github.com/coder/guts v0.0.0-20241209221220-f181da87c0bc/go.mod h1:VEiS5EvQZB30BVuAhK6QzbUEITxXIGz4771teg2fKGk= 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/serpent v0.10.0 h1:ofVk9FJXSek+SmL3yVE3GoArP83M+1tX+H7S4t8BSuM= diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 8dceaa9a4d54f..99c4ebbb4c8fd 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -522,6 +522,7 @@ export interface DERPHealthReport extends BaseReport { readonly healthy: boolean; readonly regions: Record; // Invalid type, using 'any'. Might be a reference to any external package + // biome-ignore lint lint/complexity/noUselessTypeConstraint: ignore linter readonly netcheck?: any; readonly netcheck_err?: string; readonly netcheck_logs: readonly string[]; @@ -534,8 +535,10 @@ export interface DERPNodeReport { readonly warnings: readonly HealthMessage[]; readonly error?: string; // Invalid type, using 'any'. Might be a reference to any external package + // biome-ignore lint lint/complexity/noUselessTypeConstraint: ignore linter readonly node: any | null; // Invalid type, using 'any'. Might be a reference to any external package + // biome-ignore lint lint/complexity/noUselessTypeConstraint: ignore linter readonly node_info: any; readonly can_exchange_messages: boolean; readonly round_trip_ping: string; @@ -559,6 +562,7 @@ export interface DERPRegionReport { readonly warnings: readonly HealthMessage[]; readonly error?: string; // Invalid type, using 'any'. Might be a reference to any external package + // biome-ignore lint lint/complexity/noUselessTypeConstraint: ignore linter readonly region: any | null; readonly node_reports: readonly (DERPNodeReport | null)[]; } diff --git a/site/src/pages/DeploymentSettingsPage/optionValue.ts b/site/src/pages/DeploymentSettingsPage/optionValue.ts index 37501dc6f758f..b959814dccca5 100644 --- a/site/src/pages/DeploymentSettingsPage/optionValue.ts +++ b/site/src/pages/DeploymentSettingsPage/optionValue.ts @@ -40,6 +40,7 @@ export function optionValue( case "Experiments": { const experimentMap = additionalValues?.reduce>( (acc, v) => { + // biome-ignore lint/suspicious/noExplicitAny: opt.value is any acc[v] = (option.value as any).includes("*"); return acc; }, @@ -52,7 +53,8 @@ export function optionValue( // We show all experiments (including unsafe) that are currently enabled on a deployment // but only show safe experiments that are not. - for (const v of (option.value as any)) { + // biome-ignore lint/suspicious/noExplicitAny: opt.value is any + for (const v of option.value as any) { if (v !== "*") { experimentMap[v] = true; } @@ -61,6 +63,7 @@ export function optionValue( return experimentMap; } default: + // biome-ignore lint/suspicious/noExplicitAny: opt.value is any return option.value as any; } } diff --git a/site/src/pages/HealthPage/DERPRegionPage.tsx b/site/src/pages/HealthPage/DERPRegionPage.tsx index c0b6035f9cddd..04e1ae4e3aa1d 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.tsx @@ -4,11 +4,11 @@ import CodeOutlined from "@mui/icons-material/CodeOutlined"; import TagOutlined from "@mui/icons-material/TagOutlined"; import Tooltip from "@mui/material/Tooltip"; import type { + DERPNodeReport, + DERPRegionReport, HealthMessage, HealthSeverity, HealthcheckReport, - DERPRegionReport, - DERPNodeReport, } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; import type { FC } from "react"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts index c5d2d91437add..95abc35addb53 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts @@ -70,8 +70,6 @@ export const formValuesToTTLRequest = ( return { // minutes to nanoseconds ttl_ms: - values.autostopEnabled && values.ttl - ? values.ttl * 60 * 60 * 1000 - : null, + values.autostopEnabled && values.ttl ? values.ttl * 60 * 60 * 1000 : null, }; }; diff --git a/site/src/utils/templates.ts b/site/src/utils/templates.ts index 703e181fbae13..408ad39647adb 100644 --- a/site/src/utils/templates.ts +++ b/site/src/utils/templates.ts @@ -13,7 +13,9 @@ export const formatTemplateActiveDevelopers = (num?: number): string => { return num.toString(); }; -export const formatTemplateBuildTime = (buildTimeMs?: number | null): string => { +export const formatTemplateBuildTime = ( + buildTimeMs?: number | null, +): string => { return buildTimeMs === undefined || buildTimeMs === null ? "Unknown" : `${Math.round(dayjs.duration(buildTimeMs, "milliseconds").asSeconds())}s`; From 4077d501a03fff3fdfb22e1d5fdf05a2f67c18c7 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 16:17:09 -0600 Subject: [PATCH 14/20] linting --- site/e2e/api.ts | 4 ++++ site/src/api/typesGenerated.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/site/e2e/api.ts b/site/e2e/api.ts index 4790a2e3fb036..06e86abb987f1 100644 --- a/site/e2e/api.ts +++ b/site/e2e/api.ts @@ -130,6 +130,7 @@ export async function verifyConfigFlagString( const configOption = page.locator( `div.options-table .option-${flag} .option-value-string`, ); + // biome-ignore lint/suspicious/noExplicitAny: opt.value is any await expect(configOption).toHaveText(opt.value as any); } @@ -151,6 +152,7 @@ export async function verifyConfigFlagArray( ); // Verify array of options with simple dots + // biome-ignore lint/suspicious/noExplicitAny: opt.value is any for (const item of opt.value as any) { await expect(configOption.locator("li", { hasText: item })).toBeVisible(); } @@ -167,6 +169,7 @@ export async function verifyConfigFlagEntries( ); // Verify array of options with green marks. + // biome-ignore lint/suspicious/noExplicitAny: opt.value is any Object.entries(opt.value as any) .sort((a, b) => a[0].localeCompare(b[0])) .map(async ([item]) => { @@ -187,6 +190,7 @@ export async function verifyConfigFlagDuration( const configOption = page.locator( `div.options-table .option-${flag} .option-value-string`, ); + // await expect(configOption).toHaveText( formatDuration( // intervalToDuration takes ms, so convert nanoseconds to ms diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 99c4ebbb4c8fd..35bcdeb052c9d 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1979,7 +1979,7 @@ export interface SerpentOption { export type SerpentOptionSet = readonly SerpentOption[]; // From serpent/values.go -export type SerpentStruct = T; +export type SerpentStruct = T; // From serpent/option.go export type SerpentValueSource = string; From 59a13adb2cbba5669a08f56c775ac23576a71ebc Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 16:17:18 -0600 Subject: [PATCH 15/20] fixup! linting --- scripts/apitypings/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index 3cd55606bb588..185df680f037e 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -134,7 +134,7 @@ func FixSerpentStruct(gen *guts.Typescript) { Prefix: "", }, Modifiers: nil, - Type: ptr(bindings.KeywordAny), + Type: nil, DefaultType: nil, }, }, From 5d58e13e567e6a2041ae6dedc86c7c1866df41e0 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 21:06:53 -0600 Subject: [PATCH 16/20] be explicit for which generated files to ignore --- go.mod | 2 +- scripts/apitypings/main.go | 21 --------------------- site/biome.json | 7 ++++++- site/e2e/api.ts | 2 +- 4 files changed, 8 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 10bf3cc889a8c..c44cdfe08a78a 100644 --- a/go.mod +++ b/go.mod @@ -182,7 +182,7 @@ require ( golang.org/x/sync v0.10.0 golang.org/x/sys v0.28.0 golang.org/x/term v0.27.0 - golang.org/x/text v0.21.0 + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.28.0 golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da google.golang.org/api v0.210.0 diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index 185df680f037e..aa7d194db9720 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -6,7 +6,6 @@ import ( "github.com/coder/guts" "github.com/coder/guts/bindings" - "github.com/coder/guts/bindings/walk" "github.com/coder/guts/config" // Must import the packages we are trying to convert @@ -143,23 +142,3 @@ func FixSerpentStruct(gen *guts.Typescript) { } }) } - -type serpentStructVisitor struct { -} - -func (s *serpentStructVisitor) Visit(originalNode bindings.Node) walk.Visitor { - switch node := originalNode.(type) { - case *bindings.ReferenceType: - if node.Name.Name == "Struct" && node.Name.PkgName() == "github.com/coder/serpent" { - // We always expect an argument - arg := node.Arguments[0] - *node = *arg.(*bindings.ReferenceType) - //originalNode = node.Arguments[0] - } - } - return s -} - -func ptr[T any](v T) *T { - return &v -} diff --git a/site/biome.json b/site/biome.json index ccf0b7ba0dc18..e5f4a745d872d 100644 --- a/site/biome.json +++ b/site/biome.json @@ -1,6 +1,11 @@ { "files": { - "ignore": [] + "ignore": [ + "e2e/provisionerGenerated.ts", + "e2e/google/protobuf/timestampGenerated.ts", + "site/src/api/countriesGenerated.ts", + "site/src/api/rbacresourcesGenerated.ts" + ] }, "linter": { "rules": { diff --git a/site/e2e/api.ts b/site/e2e/api.ts index 06e86abb987f1..bca000e5c29c6 100644 --- a/site/e2e/api.ts +++ b/site/e2e/api.ts @@ -190,7 +190,7 @@ export async function verifyConfigFlagDuration( const configOption = page.locator( `div.options-table .option-${flag} .option-value-string`, ); - // + // await expect(configOption).toHaveText( formatDuration( // intervalToDuration takes ms, so convert nanoseconds to ms From 7ae88e511f0ef86114ce14da3dc366605dd308be Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 21:09:48 -0600 Subject: [PATCH 17/20] fix js test assert --- .../WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx index 088894d7c0967..0b65b2b950970 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx @@ -151,7 +151,7 @@ describe("WorkspaceSchedulePage", () => { ttl: 0, }, { - ttl_ms: undefined, + ttl_ms: null, }, ], [ From e0a967ae34ae0116a657c6e0fd168aadc2c6d475 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 9 Dec 2024 21:10:24 -0600 Subject: [PATCH 18/20] fix biome ignore list --- site/biome.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/biome.json b/site/biome.json index e5f4a745d872d..4be74e32ecffe 100644 --- a/site/biome.json +++ b/site/biome.json @@ -3,8 +3,8 @@ "ignore": [ "e2e/provisionerGenerated.ts", "e2e/google/protobuf/timestampGenerated.ts", - "site/src/api/countriesGenerated.ts", - "site/src/api/rbacresourcesGenerated.ts" + "src/api/countriesGenerated.ts", + "src/api/rbacresourcesGenerated.ts" ] }, "linter": { From a632a841d4f5666c2c1690801f88cd1a1fcffc00 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Tue, 10 Dec 2024 08:44:27 -0600 Subject: [PATCH 19/20] add comments --- scripts/apitypings/main.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index aa7d194db9720..b65c3cf1ea729 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -34,6 +34,8 @@ func main() { } } + // Serpent has some types referenced in the codersdk. + // We want the referenced types generated. referencePackages := map[string]string{ "github.com/coder/serpent": "Serpent", } @@ -89,7 +91,7 @@ func TypeMappings(gen *guts.GoParser) error { }) err := gen.IncludeCustom(map[string]string{ - // Serpent fields + // Serpent fields should be converted to their primitive types "github.com/coder/serpent.Regexp": "string", "github.com/coder/serpent.StringArray": "string", "github.com/coder/serpent.String": "string", @@ -109,22 +111,26 @@ func TypeMappings(gen *guts.GoParser) error { return nil } -// FixSerpentStruct fixes 'serpent.Struct', which defers to the underlying type. +// FixSerpentStruct fixes 'serpent.Struct'. +// 'serpent.Struct' overrides the json.Marshal to use the underlying type, +// so the typescript type should be the underlying type. func FixSerpentStruct(gen *guts.Typescript) { gen.ForEach(func(key string, originalNode bindings.Node) { - // replace it with - // export type SerpentStruct = T isInterface, ok := originalNode.(*bindings.Interface) if ok && isInterface.Name.Ref() == "SerpentStruct" { - // TODO: Add a method to add comments here + // replace it with + // export type SerpentStruct = T gen.ReplaceNode("SerpentStruct", &bindings.Alias{ Name: isInterface.Name, Modifiers: nil, + // The RHS expression is just 'T' Type: bindings.Reference(bindings.Identifier{ Name: "T", Package: isInterface.Name.Package, Prefix: "", }), + // Generic type parameters, T can be anything. + // Do not provide it a type, as it 'extends any' Parameters: []*bindings.TypeParameter{ { Name: bindings.Identifier{ From 9f31aa5a4b22ee2a6ede70908f2b53415c027f0d Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Wed, 11 Dec 2024 12:30:28 -0600 Subject: [PATCH 20/20] remove unused imports --- scripts/apitypings/main.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/apitypings/main.go b/scripts/apitypings/main.go index b65c3cf1ea729..a8533b01f9069 100644 --- a/scripts/apitypings/main.go +++ b/scripts/apitypings/main.go @@ -10,8 +10,6 @@ import ( // Must import the packages we are trying to convert // And include the ones we are referencing - //_ "github.com/coder/coder/coderd/healthcheck/health" - //_ "github.com/coder/coder/codersdk/health" _ "github.com/coder/coder/v2/codersdk" _ "github.com/coder/serpent" )