1package moby_buildkit_v1_frontend //nolint:golint
2
3import "github.com/moby/buildkit/util/apicaps"
4
5var Caps apicaps.CapList
6
7// Every backwards or forwards non-compatible change needs to add a new capability row.
8// By default new capabilities should be experimental. After merge a capability is
9// considered immutable. After a capability is marked stable it should not be disabled.
10
11const (
12	CapSolveBase               apicaps.CapID = "solve.base"
13	CapSolveInlineReturn       apicaps.CapID = "solve.inlinereturn"
14	CapResolveImage            apicaps.CapID = "resolveimage"
15	CapResolveImageResolveMode apicaps.CapID = "resolveimage.resolvemode"
16	CapReadFile                apicaps.CapID = "readfile"
17	CapReturnResult            apicaps.CapID = "return"
18	CapReturnMap               apicaps.CapID = "returnmap"
19	CapReadDir                 apicaps.CapID = "readdir"
20	CapStatFile                apicaps.CapID = "statfile"
21	CapImportCaches            apicaps.CapID = "importcaches"
22
23	// CapProtoRefArray is a capability to return arrays of refs instead of single
24	// refs. This capability is only for the wire format change and shouldn't be
25	// used in frontends for feature detection.
26	CapProtoRefArray apicaps.CapID = "proto.refarray"
27
28	// CapReferenceOutput is a capability to use a reference of a solved result as
29	// an llb.Output.
30	CapReferenceOutput apicaps.CapID = "reference.output"
31
32	// CapFrontendInputs is a capability to request frontend inputs from the
33	// LLBBridge GRPC server.
34	CapFrontendInputs apicaps.CapID = "frontend.inputs"
35
36	// CapGatewaySolveMetadata can be used to check if solve calls from gateway reliably return metadata
37	CapGatewaySolveMetadata apicaps.CapID = "gateway.solve.metadata"
38
39	// CapGatewayExec is the capability to create and interact with new
40	// containers directly through the gateway
41	CapGatewayExec apicaps.CapID = "gateway.exec"
42
43	// CapFrontendCaps can be used to check that frontends define support for certain capabilities
44	CapFrontendCaps apicaps.CapID = "frontend.caps"
45
46	// CapGatewayEvaluateSolve is a capability to immediately unlazy solve
47	// results. This is generally used by the client to return and handle solve
48	// errors.
49	CapGatewayEvaluateSolve apicaps.CapID = "gateway.solve.evaluate"
50)
51
52func init() {
53
54	Caps.Init(apicaps.Cap{
55		ID:      CapSolveBase,
56		Enabled: true,
57		Status:  apicaps.CapStatusExperimental,
58	})
59
60	Caps.Init(apicaps.Cap{
61		ID:         CapSolveInlineReturn,
62		Name:       "inline return from solve",
63		Enabled:    true,
64		Deprecated: true,
65		Status:     apicaps.CapStatusExperimental,
66	})
67
68	Caps.Init(apicaps.Cap{
69		ID:      CapResolveImage,
70		Name:    "resolve remote image config",
71		Enabled: true,
72		Status:  apicaps.CapStatusExperimental,
73	})
74
75	Caps.Init(apicaps.Cap{
76		ID:      CapResolveImageResolveMode,
77		Name:    "resolve remote image config with custom resolvemode",
78		Enabled: true,
79		Status:  apicaps.CapStatusExperimental,
80	})
81
82	Caps.Init(apicaps.Cap{
83		ID:      CapReadFile,
84		Name:    "read static file",
85		Enabled: true,
86		Status:  apicaps.CapStatusExperimental,
87	})
88
89	Caps.Init(apicaps.Cap{
90		ID:      CapReturnResult,
91		Name:    "return solve result",
92		Enabled: true,
93		Status:  apicaps.CapStatusExperimental,
94	})
95
96	Caps.Init(apicaps.Cap{
97		ID:      CapReturnMap,
98		Name:    "return reference map",
99		Enabled: true,
100		Status:  apicaps.CapStatusExperimental,
101	})
102
103	Caps.Init(apicaps.Cap{
104		ID:      CapReadDir,
105		Name:    "read static directory",
106		Enabled: true,
107		Status:  apicaps.CapStatusExperimental,
108	})
109
110	Caps.Init(apicaps.Cap{
111		ID:      CapStatFile,
112		Name:    "stat a file",
113		Enabled: true,
114		Status:  apicaps.CapStatusExperimental,
115	})
116
117	Caps.Init(apicaps.Cap{
118		ID:      CapImportCaches,
119		Name:    "import caches",
120		Enabled: true,
121		Status:  apicaps.CapStatusExperimental,
122	})
123
124	Caps.Init(apicaps.Cap{
125		ID:      CapProtoRefArray,
126		Name:    "wire format ref arrays",
127		Enabled: true,
128		Status:  apicaps.CapStatusExperimental,
129	})
130
131	Caps.Init(apicaps.Cap{
132		ID:      CapReferenceOutput,
133		Name:    "reference output",
134		Enabled: true,
135		Status:  apicaps.CapStatusExperimental,
136	})
137
138	Caps.Init(apicaps.Cap{
139		ID:      CapFrontendInputs,
140		Name:    "frontend inputs",
141		Enabled: true,
142		Status:  apicaps.CapStatusExperimental,
143	})
144
145	Caps.Init(apicaps.Cap{
146		ID:      CapGatewaySolveMetadata,
147		Name:    "gateway metadata",
148		Enabled: true,
149		Status:  apicaps.CapStatusExperimental,
150	})
151
152	Caps.Init(apicaps.Cap{
153		ID:      CapGatewayExec,
154		Name:    "gateway exec",
155		Enabled: true,
156		Status:  apicaps.CapStatusExperimental,
157	})
158
159	Caps.Init(apicaps.Cap{
160		ID:      CapFrontendCaps,
161		Name:    "frontend capabilities",
162		Enabled: true,
163		Status:  apicaps.CapStatusExperimental,
164	})
165
166	Caps.Init(apicaps.Cap{
167		ID:      CapGatewayEvaluateSolve,
168		Name:    "gateway evaluate solve",
169		Enabled: true,
170		Status:  apicaps.CapStatusExperimental,
171	})
172}
173