anna-app-schema 0.1.0__py3-none-any.whl

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.
README.md ADDED
@@ -0,0 +1,22 @@
1
+ # @anna/app-schema (v0.1.0)
2
+
3
+ Versioned schema bundle for the Anna App platform. Generated by
4
+ `scripts/export_app_schema.py` in matrix-nexus; do not edit by hand.
5
+
6
+ ## Contents
7
+
8
+ * `manifest/AppManifest.json` — JSON Schema for the app manifest.
9
+ * `manifest/UiManifestSection.json` — JSON Schema for the `ui` block.
10
+ * `host_api/methods.json` — Flat `(namespace, method)` table mirroring
11
+ the dispatcher's `_DISPATCH` map. `no_auth=true` methods skip the
12
+ `host_api` ACL gate.
13
+ * `events/AnnaAppEvent.json` — SSE event union (the `kind` enum).
14
+ * `dispatcher_version.txt` — Single source-of-truth bundle version;
15
+ harnesses must refuse to start when their copy disagrees.
16
+
17
+ ## Regenerate
18
+
19
+ ```bash
20
+ uv run python scripts/export_app_schema.py # write
21
+ uv run python scripts/export_app_schema.py --check # CI gate
22
+ ```
@@ -0,0 +1,6 @@
1
+ Metadata-Version: 2.4
2
+ Name: anna-app-schema
3
+ Version: 0.1.0
4
+ Summary: Versioned schema bundle for the Anna App platform.
5
+ License: MIT
6
+ Requires-Python: >=3.10
@@ -0,0 +1,9 @@
1
+ README.md,sha256=xwWedLk4dEwg8axbvSC0S8HIPtRYXttr9rv2fPF3YQg,825
2
+ dispatcher_version.txt,sha256=6d2FB_S_DG9CRY5BrqgzrQvT9hJycjNe7pv01YVB7Wc,6
3
+ events/AnnaAppEvent.json,sha256=BszcG7W2vQ0YmI0O3x3ZNF60dHA3saRn0CN84GJpruU,935
4
+ host_api/methods.json,sha256=euECH9UEohHY-VsFkzLVdJ4tbTq7SlF5FJRhWx2dAeA,3803
5
+ manifest/AppManifest.json,sha256=xhBwktW_R-jI39rKiWFGA9xbioASVVwdi34di8Hj7Ek,10969
6
+ manifest/UiManifestSection.json,sha256=uwp3_kbe43YHb3XMYhMY1MxPXnni9SIV2rdoMHOYcmg,5785
7
+ anna_app_schema-0.1.0.dist-info/METADATA,sha256=WjQcB1in2flf2KkY0MXUimSJy1hrxt1AI7w3vTStgtM,156
8
+ anna_app_schema-0.1.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
9
+ anna_app_schema-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
dispatcher_version.txt ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,38 @@
1
+ {
2
+ "$id": "https://schemas.anna.partners/anna-app-event.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": true,
5
+ "description": "SSE envelope union for `event: data_model/AnnaAppEvent` frames. Bundle consumers should treat unknown `kind` values as forward-compatible additions and ignore them.",
6
+ "properties": {
7
+ "by_client_id": {
8
+ "type": [
9
+ "string",
10
+ "null"
11
+ ]
12
+ },
13
+ "kind": {
14
+ "enum": [
15
+ "artifact_appended",
16
+ "chat_message_from_app",
17
+ "close_view",
18
+ "geometry_changed",
19
+ "open_view",
20
+ "ping",
21
+ "runtime_state_synced",
22
+ "status_changed",
23
+ "title_changed",
24
+ "window_focus_changed"
25
+ ],
26
+ "type": "string"
27
+ },
28
+ "window_uuid": {
29
+ "type": "string"
30
+ }
31
+ },
32
+ "required": [
33
+ "kind"
34
+ ],
35
+ "title": "AnnaAppEvent",
36
+ "type": "object",
37
+ "version": "0.1.0"
38
+ }
host_api/methods.json ADDED
@@ -0,0 +1,170 @@
1
+ {
2
+ "$id": "https://schemas.anna.partners/host-api-methods.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "description": "Flat (namespace, method) table extracted from the dispatcher's _DISPATCH map. `no_auth=true` methods bypass the host_api ACL.",
5
+ "methods": [
6
+ {
7
+ "handler": "_h_not_implemented",
8
+ "method": "create",
9
+ "namespace": "artifact",
10
+ "no_auth": false,
11
+ "stub": true
12
+ },
13
+ {
14
+ "handler": "_h_not_implemented",
15
+ "method": "delete",
16
+ "namespace": "artifact",
17
+ "no_auth": false,
18
+ "stub": true
19
+ },
20
+ {
21
+ "handler": "_h_not_implemented",
22
+ "method": "update",
23
+ "namespace": "artifact",
24
+ "no_auth": false,
25
+ "stub": true
26
+ },
27
+ {
28
+ "handler": "_h_chat_append_artifact",
29
+ "method": "append_artifact",
30
+ "namespace": "chat",
31
+ "no_auth": false,
32
+ "stub": false
33
+ },
34
+ {
35
+ "handler": "_h_chat_read_history",
36
+ "method": "read_history",
37
+ "namespace": "chat",
38
+ "no_auth": false,
39
+ "stub": false
40
+ },
41
+ {
42
+ "handler": "_h_chat_write_message",
43
+ "method": "write_message",
44
+ "namespace": "chat",
45
+ "no_auth": false,
46
+ "stub": false
47
+ },
48
+ {
49
+ "handler": "_h_not_implemented",
50
+ "method": "read",
51
+ "namespace": "fs",
52
+ "no_auth": false,
53
+ "stub": true
54
+ },
55
+ {
56
+ "handler": "_h_not_implemented",
57
+ "method": "write",
58
+ "namespace": "fs",
59
+ "no_auth": false,
60
+ "stub": true
61
+ },
62
+ {
63
+ "handler": "_h_not_implemented",
64
+ "method": "complete",
65
+ "namespace": "llm",
66
+ "no_auth": false,
67
+ "stub": true
68
+ },
69
+ {
70
+ "handler": "_h_not_implemented",
71
+ "method": "get",
72
+ "namespace": "prefs",
73
+ "no_auth": false,
74
+ "stub": true
75
+ },
76
+ {
77
+ "handler": "_h_storage_delete",
78
+ "method": "delete",
79
+ "namespace": "storage",
80
+ "no_auth": false,
81
+ "stub": false
82
+ },
83
+ {
84
+ "handler": "_h_storage_get",
85
+ "method": "get",
86
+ "namespace": "storage",
87
+ "no_auth": false,
88
+ "stub": false
89
+ },
90
+ {
91
+ "handler": "_h_storage_set",
92
+ "method": "set",
93
+ "namespace": "storage",
94
+ "no_auth": false,
95
+ "stub": false
96
+ },
97
+ {
98
+ "handler": "_h_tools_invoke",
99
+ "method": "invoke",
100
+ "namespace": "tools",
101
+ "no_auth": false,
102
+ "stub": false
103
+ },
104
+ {
105
+ "handler": "_h_tools_list",
106
+ "method": "list",
107
+ "namespace": "tools",
108
+ "no_auth": false,
109
+ "stub": false
110
+ },
111
+ {
112
+ "handler": "_h_window_close",
113
+ "method": "close",
114
+ "namespace": "window",
115
+ "no_auth": false,
116
+ "stub": false
117
+ },
118
+ {
119
+ "handler": "_h_window_focus",
120
+ "method": "focus",
121
+ "namespace": "window",
122
+ "no_auth": false,
123
+ "stub": false
124
+ },
125
+ {
126
+ "handler": "_h_window_hello",
127
+ "method": "hello",
128
+ "namespace": "window",
129
+ "no_auth": true,
130
+ "stub": false
131
+ },
132
+ {
133
+ "handler": "_h_window_open_view",
134
+ "method": "open_view",
135
+ "namespace": "window",
136
+ "no_auth": false,
137
+ "stub": false
138
+ },
139
+ {
140
+ "handler": "_h_window_ready",
141
+ "method": "ready",
142
+ "namespace": "window",
143
+ "no_auth": true,
144
+ "stub": false
145
+ },
146
+ {
147
+ "handler": "_h_window_report_error",
148
+ "method": "report_error",
149
+ "namespace": "window",
150
+ "no_auth": true,
151
+ "stub": false
152
+ },
153
+ {
154
+ "handler": "_h_window_resize",
155
+ "method": "resize",
156
+ "namespace": "window",
157
+ "no_auth": false,
158
+ "stub": false
159
+ },
160
+ {
161
+ "handler": "_h_window_set_title",
162
+ "method": "set_title",
163
+ "namespace": "window",
164
+ "no_auth": false,
165
+ "stub": false
166
+ }
167
+ ],
168
+ "title": "HostApiMethodTable",
169
+ "version": "0.1.0"
170
+ }
@@ -0,0 +1,471 @@
1
+ {
2
+ "$defs": {
3
+ "AppDevConfig": {
4
+ "additionalProperties": true,
5
+ "description": "Optional ``manifest.dev`` block — local-harness-only configuration.\n\nProduction dispatcher ignores this field at runtime (it is declared here\nso ``extra=\"forbid\"`` doesn't reject it). ``anna-app publish`` SHOULD\nstrip ``dev`` from the manifest before upload; mirroring nexus's\nhistorical \"drop unknown keys\" behaviour.\n\nSee design doc §8 for field semantics. All fields are intentionally loose\n(`Any`) so the harness can evolve independently from the wire schema.",
6
+ "properties": {
7
+ "fixtures": {
8
+ "anyOf": [
9
+ {
10
+ "items": {
11
+ "type": "string"
12
+ },
13
+ "type": "array"
14
+ },
15
+ {
16
+ "type": "null"
17
+ }
18
+ ],
19
+ "default": null,
20
+ "description": "Glob patterns for fixture JSONL files relative to manifest dir.",
21
+ "title": "Fixtures"
22
+ },
23
+ "mocks": {
24
+ "anyOf": [
25
+ {
26
+ "additionalProperties": true,
27
+ "type": "object"
28
+ },
29
+ {
30
+ "type": "null"
31
+ }
32
+ ],
33
+ "default": null,
34
+ "description": "Per-(ns,method) static response mocks, keyed by 'ns.method'.",
35
+ "title": "Mocks"
36
+ },
37
+ "seed_storage": {
38
+ "anyOf": [
39
+ {
40
+ "additionalProperties": true,
41
+ "type": "object"
42
+ },
43
+ {
44
+ "type": "null"
45
+ }
46
+ ],
47
+ "default": null,
48
+ "description": "Initial runtime_state for `anna-app dev` sessions.",
49
+ "title": "Seed Storage"
50
+ },
51
+ "user_id": {
52
+ "anyOf": [
53
+ {
54
+ "type": "integer"
55
+ },
56
+ {
57
+ "type": "null"
58
+ }
59
+ ],
60
+ "default": null,
61
+ "description": "Override the default harness user_id (default: 1).",
62
+ "title": "User Id"
63
+ }
64
+ },
65
+ "title": "AppDevConfig",
66
+ "type": "object"
67
+ },
68
+ "ManifestExecutaRef": {
69
+ "properties": {
70
+ "min_version": {
71
+ "anyOf": [
72
+ {
73
+ "maxLength": 40,
74
+ "type": "string"
75
+ },
76
+ {
77
+ "type": "null"
78
+ }
79
+ ],
80
+ "default": null,
81
+ "title": "Min Version"
82
+ },
83
+ "tool_id": {
84
+ "maxLength": 200,
85
+ "minLength": 1,
86
+ "title": "Tool Id",
87
+ "type": "string"
88
+ },
89
+ "version": {
90
+ "anyOf": [
91
+ {
92
+ "maxLength": 40,
93
+ "type": "string"
94
+ },
95
+ {
96
+ "type": "null"
97
+ }
98
+ ],
99
+ "default": null,
100
+ "description": "Executa snapshot version to pin. Omit or use 'latest' to auto-freeze the current Executa state at publish time.",
101
+ "title": "Version"
102
+ }
103
+ },
104
+ "required": [
105
+ "tool_id"
106
+ ],
107
+ "title": "ManifestExecutaRef",
108
+ "type": "object"
109
+ },
110
+ "UiBundleSection": {
111
+ "additionalProperties": false,
112
+ "properties": {
113
+ "entry": {
114
+ "maxLength": 200,
115
+ "minLength": 1,
116
+ "title": "Entry",
117
+ "type": "string"
118
+ },
119
+ "external_origins": {
120
+ "items": {
121
+ "type": "string"
122
+ },
123
+ "title": "External Origins",
124
+ "type": "array"
125
+ },
126
+ "format": {
127
+ "default": "static-spa",
128
+ "maxLength": 20,
129
+ "title": "Format",
130
+ "type": "string"
131
+ }
132
+ },
133
+ "required": [
134
+ "entry"
135
+ ],
136
+ "title": "UiBundleSection",
137
+ "type": "object"
138
+ },
139
+ "UiHostApiSpec": {
140
+ "additionalProperties": false,
141
+ "properties": {
142
+ "artifact": {
143
+ "items": {
144
+ "type": "string"
145
+ },
146
+ "title": "Artifact",
147
+ "type": "array"
148
+ },
149
+ "chat": {
150
+ "items": {
151
+ "type": "string"
152
+ },
153
+ "title": "Chat",
154
+ "type": "array"
155
+ },
156
+ "fs": {
157
+ "items": {
158
+ "type": "string"
159
+ },
160
+ "title": "Fs",
161
+ "type": "array"
162
+ },
163
+ "llm": {
164
+ "items": {
165
+ "type": "string"
166
+ },
167
+ "title": "Llm",
168
+ "type": "array"
169
+ },
170
+ "prefs": {
171
+ "items": {
172
+ "type": "string"
173
+ },
174
+ "title": "Prefs",
175
+ "type": "array"
176
+ },
177
+ "storage": {
178
+ "items": {
179
+ "type": "string"
180
+ },
181
+ "title": "Storage",
182
+ "type": "array"
183
+ },
184
+ "tools": {
185
+ "items": {
186
+ "type": "string"
187
+ },
188
+ "title": "Tools",
189
+ "type": "array"
190
+ },
191
+ "window": {
192
+ "items": {
193
+ "type": "string"
194
+ },
195
+ "title": "Window",
196
+ "type": "array"
197
+ }
198
+ },
199
+ "title": "UiHostApiSpec",
200
+ "type": "object"
201
+ },
202
+ "UiManifestSection": {
203
+ "additionalProperties": false,
204
+ "properties": {
205
+ "bundle": {
206
+ "$ref": "#/$defs/UiBundleSection"
207
+ },
208
+ "csp_overrides": {
209
+ "additionalProperties": {
210
+ "items": {
211
+ "type": "string"
212
+ },
213
+ "type": "array"
214
+ },
215
+ "title": "Csp Overrides",
216
+ "type": "object"
217
+ },
218
+ "host_api": {
219
+ "$ref": "#/$defs/UiHostApiSpec"
220
+ },
221
+ "state_merge": {
222
+ "default": "last_writer_wins",
223
+ "maxLength": 20,
224
+ "title": "State Merge",
225
+ "type": "string"
226
+ },
227
+ "views": {
228
+ "items": {
229
+ "$ref": "#/$defs/UiViewSpec"
230
+ },
231
+ "title": "Views",
232
+ "type": "array"
233
+ }
234
+ },
235
+ "required": [
236
+ "bundle"
237
+ ],
238
+ "title": "UiManifestSection",
239
+ "type": "object"
240
+ },
241
+ "UiSize": {
242
+ "additionalProperties": false,
243
+ "properties": {
244
+ "h": {
245
+ "maximum": 4096,
246
+ "minimum": 120,
247
+ "title": "H",
248
+ "type": "integer"
249
+ },
250
+ "w": {
251
+ "maximum": 4096,
252
+ "minimum": 120,
253
+ "title": "W",
254
+ "type": "integer"
255
+ }
256
+ },
257
+ "required": [
258
+ "w",
259
+ "h"
260
+ ],
261
+ "title": "UiSize",
262
+ "type": "object"
263
+ },
264
+ "UiViewSpec": {
265
+ "additionalProperties": false,
266
+ "properties": {
267
+ "default": {
268
+ "default": false,
269
+ "title": "Default",
270
+ "type": "boolean"
271
+ },
272
+ "default_size": {
273
+ "anyOf": [
274
+ {
275
+ "$ref": "#/$defs/UiSize"
276
+ },
277
+ {
278
+ "type": "null"
279
+ }
280
+ ],
281
+ "default": null
282
+ },
283
+ "entry": {
284
+ "anyOf": [
285
+ {
286
+ "maxLength": 300,
287
+ "type": "string"
288
+ },
289
+ {
290
+ "type": "null"
291
+ }
292
+ ],
293
+ "default": null,
294
+ "title": "Entry"
295
+ },
296
+ "icon": {
297
+ "anyOf": [
298
+ {
299
+ "maxLength": 200,
300
+ "type": "string"
301
+ },
302
+ {
303
+ "type": "null"
304
+ }
305
+ ],
306
+ "default": null,
307
+ "title": "Icon"
308
+ },
309
+ "max_size": {
310
+ "anyOf": [
311
+ {
312
+ "$ref": "#/$defs/UiSize"
313
+ },
314
+ {
315
+ "type": "null"
316
+ }
317
+ ],
318
+ "default": null
319
+ },
320
+ "min_size": {
321
+ "anyOf": [
322
+ {
323
+ "$ref": "#/$defs/UiSize"
324
+ },
325
+ {
326
+ "type": "null"
327
+ }
328
+ ],
329
+ "default": null
330
+ },
331
+ "movable": {
332
+ "default": true,
333
+ "title": "Movable",
334
+ "type": "boolean"
335
+ },
336
+ "name": {
337
+ "maxLength": 40,
338
+ "minLength": 1,
339
+ "title": "Name",
340
+ "type": "string"
341
+ },
342
+ "resizable": {
343
+ "default": true,
344
+ "title": "Resizable",
345
+ "type": "boolean"
346
+ },
347
+ "single_instance": {
348
+ "default": false,
349
+ "title": "Single Instance",
350
+ "type": "boolean"
351
+ },
352
+ "summary_template": {
353
+ "anyOf": [
354
+ {
355
+ "maxLength": 400,
356
+ "type": "string"
357
+ },
358
+ {
359
+ "type": "null"
360
+ }
361
+ ],
362
+ "default": null,
363
+ "title": "Summary Template"
364
+ },
365
+ "title": {
366
+ "maxLength": 120,
367
+ "minLength": 1,
368
+ "title": "Title",
369
+ "type": "string"
370
+ }
371
+ },
372
+ "required": [
373
+ "name",
374
+ "title"
375
+ ],
376
+ "title": "UiViewSpec",
377
+ "type": "object"
378
+ }
379
+ },
380
+ "$id": "https://schemas.anna.partners/app-manifest.json",
381
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
382
+ "additionalProperties": false,
383
+ "description": "App Manifest schema (stored in ``anna_app_versions.manifest``).\n\nAdding a field here MUST be coordinated with ``anna-app-schema`` JSON\nSchema bundle and ``DISPATCHER_VERSION`` in `versions.py`.",
384
+ "properties": {
385
+ "dev": {
386
+ "anyOf": [
387
+ {
388
+ "$ref": "#/$defs/AppDevConfig"
389
+ },
390
+ {
391
+ "type": "null"
392
+ }
393
+ ],
394
+ "default": null
395
+ },
396
+ "optional_executas": {
397
+ "items": {
398
+ "$ref": "#/$defs/ManifestExecutaRef"
399
+ },
400
+ "title": "Optional Executas",
401
+ "type": "array"
402
+ },
403
+ "permissions": {
404
+ "items": {
405
+ "type": "string"
406
+ },
407
+ "title": "Permissions",
408
+ "type": "array"
409
+ },
410
+ "required_executas": {
411
+ "items": {
412
+ "$ref": "#/$defs/ManifestExecutaRef"
413
+ },
414
+ "title": "Required Executas",
415
+ "type": "array"
416
+ },
417
+ "schema": {
418
+ "default": 1,
419
+ "maximum": 2,
420
+ "minimum": 1,
421
+ "title": "Schema",
422
+ "type": "integer"
423
+ },
424
+ "system_prompt_addendum": {
425
+ "anyOf": [
426
+ {
427
+ "maxLength": 4000,
428
+ "type": "string"
429
+ },
430
+ {
431
+ "type": "null"
432
+ }
433
+ ],
434
+ "default": null,
435
+ "title": "System Prompt Addendum"
436
+ },
437
+ "tags": {
438
+ "items": {
439
+ "type": "string"
440
+ },
441
+ "title": "Tags",
442
+ "type": "array"
443
+ },
444
+ "ui": {
445
+ "anyOf": [
446
+ {
447
+ "$ref": "#/$defs/UiManifestSection"
448
+ },
449
+ {
450
+ "type": "null"
451
+ }
452
+ ],
453
+ "default": null
454
+ },
455
+ "user_message_prefix_template": {
456
+ "anyOf": [
457
+ {
458
+ "maxLength": 500,
459
+ "type": "string"
460
+ },
461
+ {
462
+ "type": "null"
463
+ }
464
+ ],
465
+ "default": null,
466
+ "title": "User Message Prefix Template"
467
+ }
468
+ },
469
+ "title": "AppManifest",
470
+ "type": "object"
471
+ }
@@ -0,0 +1,273 @@
1
+ {
2
+ "$defs": {
3
+ "UiBundleSection": {
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "entry": {
7
+ "maxLength": 200,
8
+ "minLength": 1,
9
+ "title": "Entry",
10
+ "type": "string"
11
+ },
12
+ "external_origins": {
13
+ "items": {
14
+ "type": "string"
15
+ },
16
+ "title": "External Origins",
17
+ "type": "array"
18
+ },
19
+ "format": {
20
+ "default": "static-spa",
21
+ "maxLength": 20,
22
+ "title": "Format",
23
+ "type": "string"
24
+ }
25
+ },
26
+ "required": [
27
+ "entry"
28
+ ],
29
+ "title": "UiBundleSection",
30
+ "type": "object"
31
+ },
32
+ "UiHostApiSpec": {
33
+ "additionalProperties": false,
34
+ "properties": {
35
+ "artifact": {
36
+ "items": {
37
+ "type": "string"
38
+ },
39
+ "title": "Artifact",
40
+ "type": "array"
41
+ },
42
+ "chat": {
43
+ "items": {
44
+ "type": "string"
45
+ },
46
+ "title": "Chat",
47
+ "type": "array"
48
+ },
49
+ "fs": {
50
+ "items": {
51
+ "type": "string"
52
+ },
53
+ "title": "Fs",
54
+ "type": "array"
55
+ },
56
+ "llm": {
57
+ "items": {
58
+ "type": "string"
59
+ },
60
+ "title": "Llm",
61
+ "type": "array"
62
+ },
63
+ "prefs": {
64
+ "items": {
65
+ "type": "string"
66
+ },
67
+ "title": "Prefs",
68
+ "type": "array"
69
+ },
70
+ "storage": {
71
+ "items": {
72
+ "type": "string"
73
+ },
74
+ "title": "Storage",
75
+ "type": "array"
76
+ },
77
+ "tools": {
78
+ "items": {
79
+ "type": "string"
80
+ },
81
+ "title": "Tools",
82
+ "type": "array"
83
+ },
84
+ "window": {
85
+ "items": {
86
+ "type": "string"
87
+ },
88
+ "title": "Window",
89
+ "type": "array"
90
+ }
91
+ },
92
+ "title": "UiHostApiSpec",
93
+ "type": "object"
94
+ },
95
+ "UiSize": {
96
+ "additionalProperties": false,
97
+ "properties": {
98
+ "h": {
99
+ "maximum": 4096,
100
+ "minimum": 120,
101
+ "title": "H",
102
+ "type": "integer"
103
+ },
104
+ "w": {
105
+ "maximum": 4096,
106
+ "minimum": 120,
107
+ "title": "W",
108
+ "type": "integer"
109
+ }
110
+ },
111
+ "required": [
112
+ "w",
113
+ "h"
114
+ ],
115
+ "title": "UiSize",
116
+ "type": "object"
117
+ },
118
+ "UiViewSpec": {
119
+ "additionalProperties": false,
120
+ "properties": {
121
+ "default": {
122
+ "default": false,
123
+ "title": "Default",
124
+ "type": "boolean"
125
+ },
126
+ "default_size": {
127
+ "anyOf": [
128
+ {
129
+ "$ref": "#/$defs/UiSize"
130
+ },
131
+ {
132
+ "type": "null"
133
+ }
134
+ ],
135
+ "default": null
136
+ },
137
+ "entry": {
138
+ "anyOf": [
139
+ {
140
+ "maxLength": 300,
141
+ "type": "string"
142
+ },
143
+ {
144
+ "type": "null"
145
+ }
146
+ ],
147
+ "default": null,
148
+ "title": "Entry"
149
+ },
150
+ "icon": {
151
+ "anyOf": [
152
+ {
153
+ "maxLength": 200,
154
+ "type": "string"
155
+ },
156
+ {
157
+ "type": "null"
158
+ }
159
+ ],
160
+ "default": null,
161
+ "title": "Icon"
162
+ },
163
+ "max_size": {
164
+ "anyOf": [
165
+ {
166
+ "$ref": "#/$defs/UiSize"
167
+ },
168
+ {
169
+ "type": "null"
170
+ }
171
+ ],
172
+ "default": null
173
+ },
174
+ "min_size": {
175
+ "anyOf": [
176
+ {
177
+ "$ref": "#/$defs/UiSize"
178
+ },
179
+ {
180
+ "type": "null"
181
+ }
182
+ ],
183
+ "default": null
184
+ },
185
+ "movable": {
186
+ "default": true,
187
+ "title": "Movable",
188
+ "type": "boolean"
189
+ },
190
+ "name": {
191
+ "maxLength": 40,
192
+ "minLength": 1,
193
+ "title": "Name",
194
+ "type": "string"
195
+ },
196
+ "resizable": {
197
+ "default": true,
198
+ "title": "Resizable",
199
+ "type": "boolean"
200
+ },
201
+ "single_instance": {
202
+ "default": false,
203
+ "title": "Single Instance",
204
+ "type": "boolean"
205
+ },
206
+ "summary_template": {
207
+ "anyOf": [
208
+ {
209
+ "maxLength": 400,
210
+ "type": "string"
211
+ },
212
+ {
213
+ "type": "null"
214
+ }
215
+ ],
216
+ "default": null,
217
+ "title": "Summary Template"
218
+ },
219
+ "title": {
220
+ "maxLength": 120,
221
+ "minLength": 1,
222
+ "title": "Title",
223
+ "type": "string"
224
+ }
225
+ },
226
+ "required": [
227
+ "name",
228
+ "title"
229
+ ],
230
+ "title": "UiViewSpec",
231
+ "type": "object"
232
+ }
233
+ },
234
+ "$id": "https://schemas.anna.partners/ui-manifest-section.json",
235
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
236
+ "additionalProperties": false,
237
+ "properties": {
238
+ "bundle": {
239
+ "$ref": "#/$defs/UiBundleSection"
240
+ },
241
+ "csp_overrides": {
242
+ "additionalProperties": {
243
+ "items": {
244
+ "type": "string"
245
+ },
246
+ "type": "array"
247
+ },
248
+ "title": "Csp Overrides",
249
+ "type": "object"
250
+ },
251
+ "host_api": {
252
+ "$ref": "#/$defs/UiHostApiSpec"
253
+ },
254
+ "state_merge": {
255
+ "default": "last_writer_wins",
256
+ "maxLength": 20,
257
+ "title": "State Merge",
258
+ "type": "string"
259
+ },
260
+ "views": {
261
+ "items": {
262
+ "$ref": "#/$defs/UiViewSpec"
263
+ },
264
+ "title": "Views",
265
+ "type": "array"
266
+ }
267
+ },
268
+ "required": [
269
+ "bundle"
270
+ ],
271
+ "title": "UiManifestSection",
272
+ "type": "object"
273
+ }