@databricks/appkit-ui 0.36.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CLAUDE.md +3 -2
  2. package/NOTICE.md +1 -0
  3. package/dist/cli/commands/plugin/add-resource/add-resource.js.map +1 -1
  4. package/dist/cli/commands/plugin/create/resource-defaults.js +2 -1
  5. package/dist/cli/commands/plugin/create/resource-defaults.js.map +1 -1
  6. package/dist/cli/commands/plugin/schema-resources.js +34 -51
  7. package/dist/cli/commands/plugin/schema-resources.js.map +1 -1
  8. package/dist/cli/commands/plugin/sync/sync.js +20 -6
  9. package/dist/cli/commands/plugin/sync/sync.js.map +1 -1
  10. package/dist/cli/commands/plugin/validate/validate-manifest.js +71 -157
  11. package/dist/cli/commands/plugin/validate/validate-manifest.js.map +1 -1
  12. package/dist/cli/commands/plugin/validate/validate.js +2 -2
  13. package/dist/cli/commands/plugin/validate/validate.js.map +1 -1
  14. package/dist/cli/commands/setup.js +2 -2
  15. package/dist/cli/commands/setup.js.map +1 -1
  16. package/dist/react/charts/options.js +2 -1
  17. package/dist/react/charts/options.js.map +1 -1
  18. package/dist/react/hooks/index.d.ts +1 -0
  19. package/dist/react/hooks/index.js +1 -0
  20. package/dist/react/hooks/use-mobile.d.ts +5 -0
  21. package/dist/react/hooks/use-mobile.d.ts.map +1 -0
  22. package/dist/react/index.d.ts +2 -1
  23. package/dist/react/index.js +2 -1
  24. package/dist/react/table/data-table.js +2 -2
  25. package/dist/react/table/data-table.js.map +1 -1
  26. package/dist/react/ui/sidebar.js +1 -1
  27. package/dist/schemas/manifest.d.ts +1139 -0
  28. package/dist/schemas/manifest.d.ts.map +1 -0
  29. package/dist/schemas/manifest.js +524 -0
  30. package/dist/schemas/manifest.js.map +1 -0
  31. package/dist/shared/src/plugin.d.ts +1 -0
  32. package/dist/shared/src/plugin.d.ts.map +1 -1
  33. package/dist/shared/src/schemas/manifest.d.ts +1 -0
  34. package/docs/api/appkit/Enumeration.ResourceType.md +1 -1
  35. package/docs/api/appkit/Interface.PluginManifest.md +57 -3
  36. package/docs/api/appkit/Interface.ResourceEntry.md +6 -4
  37. package/docs/api/appkit/Interface.ResourceRequirement.md +7 -61
  38. package/docs/api/appkit/TypeAlias.ResourceFieldEntry.md +6 -0
  39. package/docs/api/appkit/Variable.agents.md +1 -1
  40. package/docs/api/appkit.md +12 -12
  41. package/docs/app-management.md +1 -1
  42. package/docs/development/ai-assisted-development.md +2 -2
  43. package/docs/development/local-development.md +1 -1
  44. package/docs/development/remote-bridge.md +1 -1
  45. package/docs/development/templates.md +118 -12
  46. package/docs/development.md +1 -1
  47. package/docs/plugins/agents.md +8 -4
  48. package/docs/plugins/custom-plugins.md +33 -23
  49. package/docs/plugins/lakebase.md +1 -1
  50. package/docs/plugins/manifest.md +293 -0
  51. package/docs.md +2 -2
  52. package/llms.txt +3 -2
  53. package/package.json +5 -4
  54. package/sbom.cdx.json +1 -1
  55. package/dist/schemas/plugin-manifest.generated.d.ts +0 -182
  56. package/dist/schemas/plugin-manifest.generated.d.ts.map +0 -1
  57. package/dist/schemas/plugin-manifest.schema.json +0 -489
  58. package/dist/schemas/template-plugins.schema.json +0 -113
  59. package/docs/api/appkit/Interface.ResourceFieldEntry.md +0 -82
@@ -1,182 +0,0 @@
1
- //#region src/schemas/plugin-manifest.generated.d.ts
2
- /**
3
- * Declares a resource requirement for a plugin. Can be defined statically in a manifest or dynamically via getResourceRequirements().
4
- *
5
- * This interface was referenced by `PluginManifest`'s JSON-Schema
6
- * via the `definition` "resourceRequirement".
7
- */
8
- type ResourceRequirement = {
9
- type: ResourceType;
10
- /**
11
- * Human-readable label for UI/display only. Deduplication uses resourceKey, not alias.
12
- */
13
- alias: string;
14
- /**
15
- * Stable key for machine use: deduplication, env naming, composite keys, app.yaml. Required for registry lookup.
16
- */
17
- resourceKey: string;
18
- /**
19
- * Human-readable description of why this resource is needed
20
- */
21
- description: string;
22
- /**
23
- * Required permission level. Validated per resource type by the allOf/if-then rules below.
24
- */
25
- permission: string;
26
- /**
27
- * Map of field name to env and optional description. Single-value types use one key (e.g. id); multi-value (database, secret) use multiple (e.g. instance_name, database_name or scope, key).
28
- */
29
- fields?: {
30
- [k: string]: ResourceFieldEntry;
31
- };
32
- };
33
- /**
34
- * Type of Databricks resource
35
- *
36
- * This interface was referenced by `PluginManifest`'s JSON-Schema
37
- * via the `definition` "resourceType".
38
- */
39
- type ResourceType = "secret" | "job" | "sql_warehouse" | "serving_endpoint" | "volume" | "vector_search_index" | "uc_function" | "uc_connection" | "database" | "postgres" | "genie_space" | "experiment" | "app";
40
- /**
41
- * Schema for Databricks AppKit plugin manifest files. Defines plugin metadata, resource requirements, and configuration options.
42
- */
43
- interface PluginManifest {
44
- /**
45
- * Reference to the JSON Schema for validation
46
- */
47
- $schema?: string;
48
- /**
49
- * Plugin identifier. Must be lowercase, start with a letter, and contain only letters, numbers, and hyphens.
50
- */
51
- name: string;
52
- /**
53
- * Human-readable display name for UI and CLI
54
- */
55
- displayName: string;
56
- /**
57
- * Brief description of what the plugin does
58
- */
59
- description: string;
60
- /**
61
- * Databricks resource requirements for this plugin
62
- */
63
- resources: {
64
- /**
65
- * Resources that must be available for the plugin to function
66
- */
67
- required: ResourceRequirement[];
68
- /**
69
- * Resources that enhance functionality but are not mandatory
70
- */
71
- optional: ResourceRequirement[];
72
- };
73
- /**
74
- * Configuration schema for the plugin
75
- */
76
- config?: {
77
- schema?: ConfigSchema;
78
- };
79
- /**
80
- * Author name or organization
81
- */
82
- author?: string;
83
- /**
84
- * Plugin version (semver format)
85
- */
86
- version?: string;
87
- /**
88
- * URL to the plugin's source repository
89
- */
90
- repository?: string;
91
- /**
92
- * Keywords for plugin discovery
93
- */
94
- keywords?: string[];
95
- /**
96
- * SPDX license identifier
97
- */
98
- license?: string;
99
- /**
100
- * Message displayed to the user after project initialization. Use this to inform about manual setup steps (e.g. environment variables, resource provisioning).
101
- */
102
- onSetupMessage?: string;
103
- /**
104
- * When true, this plugin is excluded from the template plugins manifest (appkit.plugins.json) during sync.
105
- */
106
- hidden?: boolean;
107
- /**
108
- * Plugin stability level. Beta plugins may have breaking API changes between minor releases but are on a path to GA. GA (general availability) plugins follow semver strictly.
109
- */
110
- stability?: "beta" | "ga";
111
- }
112
- /**
113
- * Defines a single field for a resource. Each field has its own environment variable and optional description. Single-value types use one key (e.g. id); multi-value types (database, secret) use multiple (e.g. instance_name, database_name or scope, key).
114
- *
115
- * This interface was referenced by `PluginManifest`'s JSON-Schema
116
- * via the `definition` "resourceFieldEntry".
117
- */
118
- interface ResourceFieldEntry {
119
- /**
120
- * Environment variable name for this field
121
- */
122
- env?: string;
123
- /**
124
- * Human-readable description for this field
125
- */
126
- description?: string;
127
- /**
128
- * When true, this field is excluded from Databricks bundle configuration (databricks.yml) generation.
129
- */
130
- bundleIgnore?: boolean;
131
- /**
132
- * Example values showing the expected format for this field
133
- */
134
- examples?: string[];
135
- /**
136
- * When true, this field is only generated for local .env files. The Databricks Apps platform auto-injects it at deploy time.
137
- */
138
- localOnly?: boolean;
139
- /**
140
- * Static value for this field. Used when no prompted or resolved value exists.
141
- */
142
- value?: string;
143
- /**
144
- * Named resolver prefixed by resource type (e.g., 'postgres:host'). The CLI resolves this value during the init prompt flow.
145
- */
146
- resolve?: string;
147
- }
148
- /**
149
- * This interface was referenced by `PluginManifest`'s JSON-Schema
150
- * via the `definition` "configSchema".
151
- */
152
- interface ConfigSchema {
153
- type: "object" | "array" | "string" | "number" | "boolean";
154
- properties?: {
155
- [k: string]: ConfigSchemaProperty;
156
- };
157
- items?: ConfigSchema;
158
- required?: string[];
159
- additionalProperties?: boolean;
160
- }
161
- /**
162
- * This interface was referenced by `PluginManifest`'s JSON-Schema
163
- * via the `definition` "configSchemaProperty".
164
- */
165
- interface ConfigSchemaProperty {
166
- type: "object" | "array" | "string" | "number" | "boolean" | "integer";
167
- description?: string;
168
- default?: unknown;
169
- enum?: unknown[];
170
- properties?: {
171
- [k: string]: ConfigSchemaProperty;
172
- };
173
- items?: ConfigSchemaProperty;
174
- minimum?: number;
175
- maximum?: number;
176
- minLength?: number;
177
- maxLength?: number;
178
- required?: string[];
179
- }
180
- //#endregion
181
- export { PluginManifest, ResourceFieldEntry, ResourceRequirement };
182
- //# sourceMappingURL=plugin-manifest.generated.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-manifest.generated.d.ts","names":[],"sources":["../../src/schemas/plugin-manifest.generated.ts"],"mappings":";;AAQA;;;;;KAAY,mBAAA;EACV,IAAA,EAAM,YAAA;EAQN;;;EAJA,KAAA;EAiBG;;;EAbH,WAAA;EAsBU;;;EAlBV,WAAA;EAkBsB;AAiHxB;;EA/HE,UAAA;EAuJY;;;EAnJZ,MAAA;IAAA,CACG,CAAA,WAAY,kBAAA;EAAA;AAAA;;;;;;;KASL,YAAA;;;;UAiHK,cAAA;;;;EAIf,OAAA;;;;EAIA,IAAA;;;;EAIA,WAAA;;;;EAIA,WAAA;;;;EAIA,SAAA;;;;IAIE,QAAA,EAAU,mBAAA;;;;IAIV,QAAA,EAAU,mBAAA;EAAA;;;;EAKZ,MAAA;IACE,MAAA,GAAS,YAAA;EAAA;;;;EAKX,MAAA;;;;EAIA,OAAA;;;;EAIA,UAAA;;;;EAIA,QAAA;;;;EAIA,OAAA;;;;EAIA,cAAA;;;;EAIA,MAAA;;;;EAIA,SAAA;AAAA;;;;;;;UAQe,kBAAA;;;;EAIf,GAAA;;;;EAIA,WAAA;;;;EAIA,YAAA;;;;EAIA,QAAA;;;;EAIA,SAAA;;;;EAIA,KAAA;;;;EAIA,OAAA;AAAA;;;;;UAMe,YAAA;EACf,IAAA;EACA,UAAA;IAAA,CACG,CAAA,WAAY,oBAAA;EAAA;EAEf,KAAA,GAAQ,YAAA;EACR,QAAA;EACA,oBAAA;AAAA;;;;;UAMe,oBAAA;EACf,IAAA;EACA,WAAA;EACA,OAAA;EACA,IAAA;EACA,UAAA;IAAA,CACG,CAAA,WAAY,oBAAA;EAAA;EAEf,KAAA,GAAQ,oBAAA;EACR,OAAA;EACA,OAAA;EACA,SAAA;EACA,SAAA;EACA,QAAA;AAAA"}
@@ -1,489 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://databricks.github.io/appkit/schemas/plugin-manifest.schema.json",
4
- "title": "AppKit Plugin Manifest",
5
- "description": "Schema for Databricks AppKit plugin manifest files. Defines plugin metadata, resource requirements, and configuration options.",
6
- "type": "object",
7
- "required": ["name", "displayName", "description", "resources"],
8
- "properties": {
9
- "$schema": {
10
- "type": "string",
11
- "description": "Reference to the JSON Schema for validation"
12
- },
13
- "name": {
14
- "type": "string",
15
- "pattern": "^[a-z][a-z0-9-]*$",
16
- "description": "Plugin identifier. Must be lowercase, start with a letter, and contain only letters, numbers, and hyphens.",
17
- "examples": ["analytics", "server", "my-custom-plugin"]
18
- },
19
- "displayName": {
20
- "type": "string",
21
- "minLength": 1,
22
- "description": "Human-readable display name for UI and CLI",
23
- "examples": ["Analytics Plugin", "Server Plugin"]
24
- },
25
- "description": {
26
- "type": "string",
27
- "minLength": 1,
28
- "description": "Brief description of what the plugin does",
29
- "examples": ["SQL query execution against Databricks SQL Warehouses"]
30
- },
31
- "resources": {
32
- "type": "object",
33
- "required": ["required", "optional"],
34
- "description": "Databricks resource requirements for this plugin",
35
- "properties": {
36
- "required": {
37
- "type": "array",
38
- "description": "Resources that must be available for the plugin to function",
39
- "items": {
40
- "$ref": "#/$defs/resourceRequirement"
41
- }
42
- },
43
- "optional": {
44
- "type": "array",
45
- "description": "Resources that enhance functionality but are not mandatory",
46
- "items": {
47
- "$ref": "#/$defs/resourceRequirement"
48
- }
49
- }
50
- },
51
- "additionalProperties": false
52
- },
53
- "config": {
54
- "type": "object",
55
- "description": "Configuration schema for the plugin",
56
- "properties": {
57
- "schema": {
58
- "$ref": "#/$defs/configSchema"
59
- }
60
- },
61
- "additionalProperties": false
62
- },
63
- "author": {
64
- "type": "string",
65
- "description": "Author name or organization"
66
- },
67
- "version": {
68
- "type": "string",
69
- "pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.]+)?$",
70
- "description": "Plugin version (semver format)",
71
- "examples": ["1.0.0", "2.1.0-beta.1"]
72
- },
73
- "repository": {
74
- "type": "string",
75
- "format": "uri",
76
- "description": "URL to the plugin's source repository"
77
- },
78
- "keywords": {
79
- "type": "array",
80
- "items": {
81
- "type": "string"
82
- },
83
- "description": "Keywords for plugin discovery"
84
- },
85
- "license": {
86
- "type": "string",
87
- "description": "SPDX license identifier",
88
- "examples": ["Apache-2.0", "MIT"]
89
- },
90
- "onSetupMessage": {
91
- "type": "string",
92
- "description": "Message displayed to the user after project initialization. Use this to inform about manual setup steps (e.g. environment variables, resource provisioning)."
93
- },
94
- "hidden": {
95
- "type": "boolean",
96
- "default": false,
97
- "description": "When true, this plugin is excluded from the template plugins manifest (appkit.plugins.json) during sync."
98
- },
99
- "stability": {
100
- "type": "string",
101
- "enum": ["beta", "ga"],
102
- "default": "ga",
103
- "description": "Plugin stability level. Beta plugins may have breaking API changes between minor releases but are on a path to GA. GA (general availability) plugins follow semver strictly."
104
- }
105
- },
106
- "additionalProperties": false,
107
- "$defs": {
108
- "resourceType": {
109
- "type": "string",
110
- "enum": [
111
- "secret",
112
- "job",
113
- "sql_warehouse",
114
- "serving_endpoint",
115
- "volume",
116
- "vector_search_index",
117
- "uc_function",
118
- "uc_connection",
119
- "database",
120
- "postgres",
121
- "genie_space",
122
- "experiment",
123
- "app"
124
- ],
125
- "description": "Type of Databricks resource"
126
- },
127
- "secretPermission": {
128
- "type": "string",
129
- "enum": ["READ", "WRITE", "MANAGE"],
130
- "description": "Permission for secret resources (order: weakest to strongest)"
131
- },
132
- "jobPermission": {
133
- "type": "string",
134
- "enum": ["CAN_VIEW", "CAN_MANAGE_RUN", "CAN_MANAGE"],
135
- "description": "Permission for job resources (order: weakest to strongest)"
136
- },
137
- "sqlWarehousePermission": {
138
- "type": "string",
139
- "enum": ["CAN_USE", "CAN_MANAGE"],
140
- "description": "Permission for SQL warehouse resources (order: weakest to strongest)"
141
- },
142
- "servingEndpointPermission": {
143
- "type": "string",
144
- "enum": ["CAN_VIEW", "CAN_QUERY", "CAN_MANAGE"],
145
- "description": "Permission for serving endpoint resources (order: weakest to strongest)"
146
- },
147
- "volumePermission": {
148
- "type": "string",
149
- "enum": ["READ_VOLUME", "WRITE_VOLUME"],
150
- "description": "Permission for Unity Catalog volume resources"
151
- },
152
- "vectorSearchIndexPermission": {
153
- "type": "string",
154
- "enum": ["SELECT"],
155
- "description": "Permission for vector search index resources"
156
- },
157
- "ucFunctionPermission": {
158
- "type": "string",
159
- "enum": ["EXECUTE"],
160
- "description": "Permission for Unity Catalog function resources"
161
- },
162
- "ucConnectionPermission": {
163
- "type": "string",
164
- "enum": ["USE_CONNECTION"],
165
- "description": "Permission for Unity Catalog connection resources"
166
- },
167
- "databasePermission": {
168
- "type": "string",
169
- "enum": ["CAN_CONNECT_AND_CREATE"],
170
- "description": "Permission for database resources"
171
- },
172
- "postgresPermission": {
173
- "type": "string",
174
- "enum": ["CAN_CONNECT_AND_CREATE"],
175
- "description": "Permission for Postgres resources"
176
- },
177
- "genieSpacePermission": {
178
- "type": "string",
179
- "enum": ["CAN_VIEW", "CAN_RUN", "CAN_EDIT", "CAN_MANAGE"],
180
- "description": "Permission for Genie Space resources (order: weakest to strongest)"
181
- },
182
- "experimentPermission": {
183
- "type": "string",
184
- "enum": ["CAN_READ", "CAN_EDIT", "CAN_MANAGE"],
185
- "description": "Permission for MLflow experiment resources (order: weakest to strongest)"
186
- },
187
- "appPermission": {
188
- "type": "string",
189
- "enum": ["CAN_USE"],
190
- "description": "Permission for Databricks App resources"
191
- },
192
- "resourceFieldEntry": {
193
- "type": "object",
194
- "description": "Defines a single field for a resource. Each field has its own environment variable and optional description. Single-value types use one key (e.g. id); multi-value types (database, secret) use multiple (e.g. instance_name, database_name or scope, key).",
195
- "properties": {
196
- "env": {
197
- "type": "string",
198
- "pattern": "^[A-Z][A-Z0-9_]*$",
199
- "description": "Environment variable name for this field",
200
- "examples": ["DATABRICKS_CACHE_INSTANCE", "SECRET_SCOPE"]
201
- },
202
- "description": {
203
- "type": "string",
204
- "description": "Human-readable description for this field"
205
- },
206
- "bundleIgnore": {
207
- "type": "boolean",
208
- "default": false,
209
- "description": "When true, this field is excluded from Databricks bundle configuration (databricks.yml) generation."
210
- },
211
- "examples": {
212
- "type": "array",
213
- "items": { "type": "string" },
214
- "description": "Example values showing the expected format for this field"
215
- },
216
- "localOnly": {
217
- "type": "boolean",
218
- "default": false,
219
- "description": "When true, this field is only generated for local .env files. The Databricks Apps platform auto-injects it at deploy time."
220
- },
221
- "value": {
222
- "type": "string",
223
- "description": "Static value for this field. Used when no prompted or resolved value exists."
224
- },
225
- "resolve": {
226
- "type": "string",
227
- "pattern": "^[a-z_]+:[a-zA-Z]+$",
228
- "description": "Named resolver prefixed by resource type (e.g., 'postgres:host'). The CLI resolves this value during the init prompt flow."
229
- }
230
- },
231
- "additionalProperties": false
232
- },
233
- "resourceRequirement": {
234
- "type": "object",
235
- "description": "Declares a resource requirement for a plugin. Can be defined statically in a manifest or dynamically via getResourceRequirements().",
236
- "required": ["type", "alias", "resourceKey", "description", "permission"],
237
- "properties": {
238
- "type": {
239
- "$ref": "#/$defs/resourceType"
240
- },
241
- "alias": {
242
- "type": "string",
243
- "minLength": 1,
244
- "description": "Human-readable label for UI/display only. Deduplication uses resourceKey, not alias.",
245
- "examples": ["SQL Warehouse", "Secret", "Vector search index"]
246
- },
247
- "resourceKey": {
248
- "type": "string",
249
- "pattern": "^[a-z][a-z0-9-]*$",
250
- "description": "Stable key for machine use: deduplication, env naming, composite keys, app.yaml. Required for registry lookup.",
251
- "examples": ["sql-warehouse", "database", "secret"]
252
- },
253
- "description": {
254
- "type": "string",
255
- "minLength": 1,
256
- "description": "Human-readable description of why this resource is needed"
257
- },
258
- "permission": {
259
- "type": "string",
260
- "description": "Required permission level. Validated per resource type by the allOf/if-then rules below."
261
- },
262
- "fields": {
263
- "type": "object",
264
- "additionalProperties": {
265
- "$ref": "#/$defs/resourceFieldEntry"
266
- },
267
- "minProperties": 1,
268
- "description": "Map of field name to env and optional description. Single-value types use one key (e.g. id); multi-value (database, secret) use multiple (e.g. instance_name, database_name or scope, key)."
269
- }
270
- },
271
- "additionalProperties": false,
272
- "allOf": [
273
- {
274
- "if": {
275
- "properties": { "type": { "const": "secret" } },
276
- "required": ["type"]
277
- },
278
- "then": {
279
- "properties": {
280
- "permission": { "$ref": "#/$defs/secretPermission" }
281
- }
282
- }
283
- },
284
- {
285
- "if": {
286
- "properties": { "type": { "const": "job" } },
287
- "required": ["type"]
288
- },
289
- "then": {
290
- "properties": { "permission": { "$ref": "#/$defs/jobPermission" } }
291
- }
292
- },
293
- {
294
- "if": {
295
- "properties": { "type": { "const": "sql_warehouse" } },
296
- "required": ["type"]
297
- },
298
- "then": {
299
- "properties": {
300
- "permission": { "$ref": "#/$defs/sqlWarehousePermission" }
301
- }
302
- }
303
- },
304
- {
305
- "if": {
306
- "properties": { "type": { "const": "serving_endpoint" } },
307
- "required": ["type"]
308
- },
309
- "then": {
310
- "properties": {
311
- "permission": { "$ref": "#/$defs/servingEndpointPermission" }
312
- }
313
- }
314
- },
315
- {
316
- "if": {
317
- "properties": { "type": { "const": "volume" } },
318
- "required": ["type"]
319
- },
320
- "then": {
321
- "properties": {
322
- "permission": { "$ref": "#/$defs/volumePermission" }
323
- }
324
- }
325
- },
326
- {
327
- "if": {
328
- "properties": { "type": { "const": "vector_search_index" } },
329
- "required": ["type"]
330
- },
331
- "then": {
332
- "properties": {
333
- "permission": { "$ref": "#/$defs/vectorSearchIndexPermission" }
334
- }
335
- }
336
- },
337
- {
338
- "if": {
339
- "properties": { "type": { "const": "uc_function" } },
340
- "required": ["type"]
341
- },
342
- "then": {
343
- "properties": {
344
- "permission": { "$ref": "#/$defs/ucFunctionPermission" }
345
- }
346
- }
347
- },
348
- {
349
- "if": {
350
- "properties": { "type": { "const": "uc_connection" } },
351
- "required": ["type"]
352
- },
353
- "then": {
354
- "properties": {
355
- "permission": { "$ref": "#/$defs/ucConnectionPermission" }
356
- }
357
- }
358
- },
359
- {
360
- "if": {
361
- "properties": { "type": { "const": "database" } },
362
- "required": ["type"]
363
- },
364
- "then": {
365
- "properties": {
366
- "permission": { "$ref": "#/$defs/databasePermission" }
367
- }
368
- }
369
- },
370
- {
371
- "if": {
372
- "properties": { "type": { "const": "postgres" } },
373
- "required": ["type"]
374
- },
375
- "then": {
376
- "properties": {
377
- "permission": { "$ref": "#/$defs/postgresPermission" }
378
- }
379
- }
380
- },
381
- {
382
- "if": {
383
- "properties": { "type": { "const": "genie_space" } },
384
- "required": ["type"]
385
- },
386
- "then": {
387
- "properties": {
388
- "permission": { "$ref": "#/$defs/genieSpacePermission" }
389
- }
390
- }
391
- },
392
- {
393
- "if": {
394
- "properties": { "type": { "const": "experiment" } },
395
- "required": ["type"]
396
- },
397
- "then": {
398
- "properties": {
399
- "permission": { "$ref": "#/$defs/experimentPermission" }
400
- }
401
- }
402
- },
403
- {
404
- "if": {
405
- "properties": { "type": { "const": "app" } },
406
- "required": ["type"]
407
- },
408
- "then": {
409
- "properties": { "permission": { "$ref": "#/$defs/appPermission" } }
410
- }
411
- }
412
- ]
413
- },
414
- "configSchemaProperty": {
415
- "type": "object",
416
- "required": ["type"],
417
- "properties": {
418
- "type": {
419
- "type": "string",
420
- "enum": ["object", "array", "string", "number", "boolean", "integer"]
421
- },
422
- "description": {
423
- "type": "string"
424
- },
425
- "default": {},
426
- "enum": {
427
- "type": "array"
428
- },
429
- "properties": {
430
- "type": "object",
431
- "additionalProperties": {
432
- "$ref": "#/$defs/configSchemaProperty"
433
- }
434
- },
435
- "items": {
436
- "$ref": "#/$defs/configSchemaProperty"
437
- },
438
- "minimum": {
439
- "type": "number"
440
- },
441
- "maximum": {
442
- "type": "number"
443
- },
444
- "minLength": {
445
- "type": "integer",
446
- "minimum": 0
447
- },
448
- "maxLength": {
449
- "type": "integer",
450
- "minimum": 0
451
- },
452
- "required": {
453
- "type": "array",
454
- "items": {
455
- "type": "string"
456
- }
457
- }
458
- }
459
- },
460
- "configSchema": {
461
- "type": "object",
462
- "required": ["type"],
463
- "properties": {
464
- "type": {
465
- "type": "string",
466
- "enum": ["object", "array", "string", "number", "boolean"]
467
- },
468
- "properties": {
469
- "type": "object",
470
- "additionalProperties": {
471
- "$ref": "#/$defs/configSchemaProperty"
472
- }
473
- },
474
- "items": {
475
- "$ref": "#/$defs/configSchema"
476
- },
477
- "required": {
478
- "type": "array",
479
- "items": {
480
- "type": "string"
481
- }
482
- },
483
- "additionalProperties": {
484
- "type": "boolean"
485
- }
486
- }
487
- }
488
- }
489
- }