@zhama/tego-plugin-sdk 0.0.0-stage → 1.36.1

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 (98) hide show
  1. package/LICENSE +172 -0
  2. package/README.md +846 -2
  3. package/access-catalog.schema.json +304 -0
  4. package/access-fixtures/resolve.json +1359 -0
  5. package/bin/tego-plugin-pack.mjs +2 -0
  6. package/bin/tego-plugin.mjs +3 -0
  7. package/dist/access-drizzle.cjs +1 -0
  8. package/dist/access-drizzle.d.cts +726 -0
  9. package/dist/access-drizzle.d.ts +726 -0
  10. package/dist/access-drizzle.js +1 -0
  11. package/dist/access-hono.cjs +3 -0
  12. package/dist/access-hono.d.cts +108 -0
  13. package/dist/access-hono.d.ts +108 -0
  14. package/dist/access-hono.js +3 -0
  15. package/dist/access-implications.cjs +1 -0
  16. package/dist/access-implications.d.cts +25 -0
  17. package/dist/access-implications.d.ts +25 -0
  18. package/dist/access-implications.js +1 -0
  19. package/dist/access.cjs +26 -0
  20. package/dist/access.d.cts +884 -0
  21. package/dist/access.d.ts +884 -0
  22. package/dist/access.js +26 -0
  23. package/dist/catalog-CSSbrfEf.d.cts +361 -0
  24. package/dist/catalog-CSSbrfEf.d.ts +361 -0
  25. package/dist/chunk-3KUOBGJN.js +19 -0
  26. package/dist/chunk-3WA3M347.cjs +1 -0
  27. package/dist/chunk-5CU33JVY.js +1 -0
  28. package/dist/chunk-7K37PVGV.js +5 -0
  29. package/dist/chunk-7XHF3YSK.js +1 -0
  30. package/dist/chunk-AJY7ZHXK.cjs +3 -0
  31. package/dist/chunk-BN6TGHSB.cjs +1 -0
  32. package/dist/chunk-BTHXQWHT.js +1 -0
  33. package/dist/chunk-C2OCOPZQ.cjs +1 -0
  34. package/dist/chunk-IMAVYQ4U.cjs +4 -0
  35. package/dist/chunk-OP64Y4IN.cjs +1 -0
  36. package/dist/chunk-QKSPPMVN.js +1 -0
  37. package/dist/chunk-ROFUQLOZ.cjs +1 -0
  38. package/dist/chunk-SNUCO2MK.js +1 -0
  39. package/dist/chunk-THMWRUAT.cjs +19 -0
  40. package/dist/chunk-VMCGDDGP.js +3 -0
  41. package/dist/chunk-W7C357A6.cjs +5 -0
  42. package/dist/chunk-WLTASJF6.js +4 -0
  43. package/dist/egress.cjs +7 -0
  44. package/dist/egress.d.cts +9 -0
  45. package/dist/egress.d.ts +9 -0
  46. package/dist/egress.js +7 -0
  47. package/dist/frontend.cjs +2 -0
  48. package/dist/frontend.d.cts +353 -0
  49. package/dist/frontend.d.ts +353 -0
  50. package/dist/frontend.js +2 -0
  51. package/dist/gateway-signature.cjs +1 -0
  52. package/dist/gateway-signature.d.cts +112 -0
  53. package/dist/gateway-signature.d.ts +112 -0
  54. package/dist/gateway-signature.js +1 -0
  55. package/dist/index.cjs +1 -0
  56. package/dist/index.d.cts +528 -0
  57. package/dist/index.d.ts +528 -0
  58. package/dist/index.js +1 -0
  59. package/dist/manifest-types-DQARCQJt.d.cts +627 -0
  60. package/dist/manifest-types-DQARCQJt.d.ts +627 -0
  61. package/dist/manifest.cjs +1 -0
  62. package/dist/manifest.d.cts +2824 -0
  63. package/dist/manifest.d.ts +2824 -0
  64. package/dist/manifest.js +1 -0
  65. package/dist/mcp-identity.cjs +2 -0
  66. package/dist/mcp-identity.d.cts +106 -0
  67. package/dist/mcp-identity.d.ts +106 -0
  68. package/dist/mcp-identity.js +2 -0
  69. package/dist/pack.cjs +1 -0
  70. package/dist/pack.d.cts +169 -0
  71. package/dist/pack.d.ts +169 -0
  72. package/dist/pack.js +1 -0
  73. package/dist/publish.cjs +1 -0
  74. package/dist/publish.d.cts +96 -0
  75. package/dist/publish.d.ts +96 -0
  76. package/dist/publish.js +1 -0
  77. package/dist/scaffold.cjs +523 -0
  78. package/dist/scaffold.d.cts +182 -0
  79. package/dist/scaffold.d.ts +182 -0
  80. package/dist/scaffold.js +523 -0
  81. package/dist/server-runtime.cjs +1 -0
  82. package/dist/server-runtime.d.cts +63 -0
  83. package/dist/server-runtime.d.ts +63 -0
  84. package/dist/server-runtime.js +1 -0
  85. package/dist/server.cjs +1 -0
  86. package/dist/server.d.cts +1808 -0
  87. package/dist/server.d.ts +1808 -0
  88. package/dist/server.js +1 -0
  89. package/dist/testing.cjs +2 -0
  90. package/dist/testing.d.cts +92 -0
  91. package/dist/testing.d.ts +92 -0
  92. package/dist/testing.js +2 -0
  93. package/dist/vite.cjs +1 -0
  94. package/dist/vite.d.cts +133 -0
  95. package/dist/vite.d.ts +133 -0
  96. package/dist/vite.js +1 -0
  97. package/package.json +160 -4
  98. package/sql/access.sql +73 -0
@@ -0,0 +1,2824 @@
1
+ import { z } from 'zod';
2
+ import { T as TegoPluginManifest, y as PluginBackendPlatform } from './manifest-types-DQARCQJt.cjs';
3
+ import { A as AccessCatalog } from './catalog-CSSbrfEf.cjs';
4
+
5
+ /**
6
+ * The access catalog checked against the manifest that declares it.
7
+ *
8
+ * One function for pack and for upload, so a package that packs is a package
9
+ * the host accepts. The catalog's own rules live in `access/catalog.ts`; what
10
+ * is added here is only what needs the manifest to answer.
11
+ */
12
+
13
+ type PluginAccessCatalogResult = {
14
+ ok: true;
15
+ catalog: AccessCatalog;
16
+ } | {
17
+ ok: false;
18
+ errors: string[];
19
+ };
20
+ /**
21
+ * @param raw The parsed JSON at `manifest.access.catalog`.
22
+ */
23
+ declare function checkPluginAccessCatalog(manifest: Pick<TegoPluginManifest, 'access' | 'parts'>, raw: unknown): PluginAccessCatalogResult;
24
+
25
+ /**
26
+ * Whether a python backend's vendored wheels will install in the runner.
27
+ *
28
+ * The runner installs with `pip install --no-index --require-hashes
29
+ * --only-binary=:all:` from `backend/wheels`, so a package installs only if
30
+ * every locked requirement has a wheel for the runner's interpreter and for
31
+ * the node's architecture, and every wheel's digest is in the lock. Checked at
32
+ * upload — and by `tego-plugin-pack` before that — because the alternative is
33
+ * a backend that installs on one node pool and crash-loops on the other.
34
+ *
35
+ * Pure string logic, no `node:` imports: the server and the pack tool share it.
36
+ */
37
+
38
+ /** Interpreter the python runner image ships. Bump together with the image. */
39
+ declare const PYTHON_RUNNER_VERSION: {
40
+ readonly major: 3;
41
+ readonly minor: 12;
42
+ };
43
+ declare const PYTHON_LOCK_FILENAME = "requirements.lock";
44
+ declare const PYTHON_WHEELS_DIR = "wheels";
45
+ interface LockedRequirement {
46
+ /** PEP 503 normalized. */
47
+ name: string;
48
+ version: string;
49
+ hashes: string[];
50
+ }
51
+ interface ParsedWheelFilename {
52
+ name: string;
53
+ version: string;
54
+ pythonTags: string[];
55
+ abiTags: string[];
56
+ platformTags: string[];
57
+ }
58
+ interface VendoredWheel {
59
+ filename: string;
60
+ sha256: string;
61
+ }
62
+ declare function normalizePackageName(name: string): string;
63
+ /**
64
+ * `name==version --hash=sha256:…` lines, as `uv pip compile --generate-hashes`
65
+ * and `pip-compile --generate-hashes` write them.
66
+ *
67
+ * Environment markers are refused rather than evaluated: the lock must be
68
+ * compiled for the runner (`--python-platform linux --python-version 3.12`),
69
+ * and a marker left in it means it was not.
70
+ */
71
+ declare function parseRequirementsLock(text: string): {
72
+ requirements: LockedRequirement[];
73
+ errors: string[];
74
+ };
75
+ /** PEP 427 filename, or null when it is not one. */
76
+ declare function parseWheelFilename(filename: string): ParsedWheelFilename | null;
77
+ /** Every reason the vendored wheels would fail to install; empty when fine. */
78
+ declare function checkPythonVendoring(input: {
79
+ lockText: string | null;
80
+ wheels: VendoredWheel[];
81
+ platforms: readonly PluginBackendPlatform[];
82
+ }): string[];
83
+
84
+ /**
85
+ * Validation for `tego.plugin.json`.
86
+ *
87
+ * Lives in the SDK rather than the server so a plugin author can run the same
88
+ * check locally that the upload endpoint will run. Every object is `.strict()`:
89
+ * the legacy plugin format silently ignored unknown keys, which turned a typo
90
+ * in `enrty` into a plugin that uploaded fine and then failed to load.
91
+ */
92
+
93
+ declare const tegoPluginManifestSchema: z.ZodEffects<z.ZodObject<{
94
+ manifestVersion: z.ZodLiteral<1>;
95
+ id: z.ZodString;
96
+ version: z.ZodEffects<z.ZodString, string, string>;
97
+ displayName: z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>;
98
+ description: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
99
+ author: z.ZodOptional<z.ZodString>;
100
+ homepage: z.ZodOptional<z.ZodString>;
101
+ icon: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
102
+ category: z.ZodOptional<z.ZodString>;
103
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
104
+ hostApiRange: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
105
+ scope: z.ZodEnum<["avatar", "tenant"]>;
106
+ declares: z.ZodOptional<z.ZodObject<{
107
+ database: z.ZodOptional<z.ZodBoolean>;
108
+ storage: z.ZodOptional<z.ZodBoolean>;
109
+ events: z.ZodOptional<z.ZodBoolean>;
110
+ notifications: z.ZodOptional<z.ZodBoolean>;
111
+ }, "strict", z.ZodTypeAny, {
112
+ database?: boolean | undefined;
113
+ storage?: boolean | undefined;
114
+ events?: boolean | undefined;
115
+ notifications?: boolean | undefined;
116
+ }, {
117
+ database?: boolean | undefined;
118
+ storage?: boolean | undefined;
119
+ events?: boolean | undefined;
120
+ notifications?: boolean | undefined;
121
+ }>>;
122
+ parts: z.ZodEffects<z.ZodEffects<z.ZodObject<{
123
+ frontend: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodObject<{
124
+ dir: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
125
+ entry: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
126
+ i18nDir: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
127
+ icon: z.ZodOptional<z.ZodEnum<["bar-chart", "bell", "bookmark", "book-open", "bot", "briefcase", "building", "calendar", "chart-pie", "clipboard-list", "clock", "contact", "credit-card", "database", "file-text", "folder", "globe", "handshake", "inbox", "key", "layers", "layout-dashboard", "library", "link", "list-todo", "mail", "map-pin", "message-square", "mic", "package", "phone", "puzzle", "receipt", "search", "settings", "shield", "shopping-cart", "sliders", "sparkles", "star", "table", "tag", "target", "trending-up", "truck", "users", "wallet", "workflow", "wrench", "zap"]>>;
128
+ nav: z.ZodOptional<z.ZodArray<z.ZodObject<{
129
+ key: z.ZodString;
130
+ labelKey: z.ZodString;
131
+ icon: z.ZodOptional<z.ZodEnum<["bar-chart", "bell", "bookmark", "book-open", "bot", "briefcase", "building", "calendar", "chart-pie", "clipboard-list", "clock", "contact", "credit-card", "database", "file-text", "folder", "globe", "handshake", "inbox", "key", "layers", "layout-dashboard", "library", "link", "list-todo", "mail", "map-pin", "message-square", "mic", "package", "phone", "puzzle", "receipt", "search", "settings", "shield", "shopping-cart", "sliders", "sparkles", "star", "table", "tag", "target", "trending-up", "truck", "users", "wallet", "workflow", "wrench", "zap"]>>;
132
+ order: z.ZodOptional<z.ZodNumber>;
133
+ path: z.ZodOptional<z.ZodString>;
134
+ }, "strict", z.ZodTypeAny, {
135
+ key: string;
136
+ labelKey: string;
137
+ path?: string | undefined;
138
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
139
+ order?: number | undefined;
140
+ }, {
141
+ key: string;
142
+ labelKey: string;
143
+ path?: string | undefined;
144
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
145
+ order?: number | undefined;
146
+ }>, "many">>;
147
+ config: z.ZodOptional<z.ZodEffects<z.ZodObject<{
148
+ schema: z.ZodObject<{
149
+ type: z.ZodLiteral<"object">;
150
+ properties: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodObject<{
151
+ type: z.ZodEnum<["string", "number", "integer", "boolean", "array"]>;
152
+ title: z.ZodOptional<z.ZodString>;
153
+ description: z.ZodOptional<z.ZodString>;
154
+ default: z.ZodOptional<z.ZodUnknown>;
155
+ enum: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
156
+ minLength: z.ZodOptional<z.ZodNumber>;
157
+ maxLength: z.ZodOptional<z.ZodNumber>;
158
+ pattern: z.ZodOptional<z.ZodString>;
159
+ format: z.ZodOptional<z.ZodEnum<["uri", "email"]>>;
160
+ minimum: z.ZodOptional<z.ZodNumber>;
161
+ maximum: z.ZodOptional<z.ZodNumber>;
162
+ items: z.ZodOptional<z.ZodObject<{
163
+ type: z.ZodLiteral<"string">;
164
+ enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
165
+ }, "strict", z.ZodTypeAny, {
166
+ type: "string";
167
+ enum?: string[] | undefined;
168
+ }, {
169
+ type: "string";
170
+ enum?: string[] | undefined;
171
+ }>>;
172
+ maxItems: z.ZodOptional<z.ZodNumber>;
173
+ }, "strict", z.ZodTypeAny, {
174
+ type: "string" | "number" | "boolean" | "integer" | "array";
175
+ minimum?: number | undefined;
176
+ maximum?: number | undefined;
177
+ minLength?: number | undefined;
178
+ maxLength?: number | undefined;
179
+ title?: string | undefined;
180
+ description?: string | undefined;
181
+ default?: unknown;
182
+ enum?: (string | number)[] | undefined;
183
+ pattern?: string | undefined;
184
+ format?: "email" | "uri" | undefined;
185
+ items?: {
186
+ type: "string";
187
+ enum?: string[] | undefined;
188
+ } | undefined;
189
+ maxItems?: number | undefined;
190
+ }, {
191
+ type: "string" | "number" | "boolean" | "integer" | "array";
192
+ minimum?: number | undefined;
193
+ maximum?: number | undefined;
194
+ minLength?: number | undefined;
195
+ maxLength?: number | undefined;
196
+ title?: string | undefined;
197
+ description?: string | undefined;
198
+ default?: unknown;
199
+ enum?: (string | number)[] | undefined;
200
+ pattern?: string | undefined;
201
+ format?: "email" | "uri" | undefined;
202
+ items?: {
203
+ type: "string";
204
+ enum?: string[] | undefined;
205
+ } | undefined;
206
+ maxItems?: number | undefined;
207
+ }>, {
208
+ type: "string" | "number" | "boolean" | "integer" | "array";
209
+ minimum?: number | undefined;
210
+ maximum?: number | undefined;
211
+ minLength?: number | undefined;
212
+ maxLength?: number | undefined;
213
+ title?: string | undefined;
214
+ description?: string | undefined;
215
+ default?: unknown;
216
+ enum?: (string | number)[] | undefined;
217
+ pattern?: string | undefined;
218
+ format?: "email" | "uri" | undefined;
219
+ items?: {
220
+ type: "string";
221
+ enum?: string[] | undefined;
222
+ } | undefined;
223
+ maxItems?: number | undefined;
224
+ }, {
225
+ type: "string" | "number" | "boolean" | "integer" | "array";
226
+ minimum?: number | undefined;
227
+ maximum?: number | undefined;
228
+ minLength?: number | undefined;
229
+ maxLength?: number | undefined;
230
+ title?: string | undefined;
231
+ description?: string | undefined;
232
+ default?: unknown;
233
+ enum?: (string | number)[] | undefined;
234
+ pattern?: string | undefined;
235
+ format?: "email" | "uri" | undefined;
236
+ items?: {
237
+ type: "string";
238
+ enum?: string[] | undefined;
239
+ } | undefined;
240
+ maxItems?: number | undefined;
241
+ }>>;
242
+ required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
243
+ additionalProperties: z.ZodOptional<z.ZodLiteral<false>>;
244
+ }, "strict", z.ZodTypeAny, {
245
+ type: "object";
246
+ properties: Record<string, {
247
+ type: "string" | "number" | "boolean" | "integer" | "array";
248
+ minimum?: number | undefined;
249
+ maximum?: number | undefined;
250
+ minLength?: number | undefined;
251
+ maxLength?: number | undefined;
252
+ title?: string | undefined;
253
+ description?: string | undefined;
254
+ default?: unknown;
255
+ enum?: (string | number)[] | undefined;
256
+ pattern?: string | undefined;
257
+ format?: "email" | "uri" | undefined;
258
+ items?: {
259
+ type: "string";
260
+ enum?: string[] | undefined;
261
+ } | undefined;
262
+ maxItems?: number | undefined;
263
+ }>;
264
+ required?: string[] | undefined;
265
+ additionalProperties?: false | undefined;
266
+ }, {
267
+ type: "object";
268
+ properties: Record<string, {
269
+ type: "string" | "number" | "boolean" | "integer" | "array";
270
+ minimum?: number | undefined;
271
+ maximum?: number | undefined;
272
+ minLength?: number | undefined;
273
+ maxLength?: number | undefined;
274
+ title?: string | undefined;
275
+ description?: string | undefined;
276
+ default?: unknown;
277
+ enum?: (string | number)[] | undefined;
278
+ pattern?: string | undefined;
279
+ format?: "email" | "uri" | undefined;
280
+ items?: {
281
+ type: "string";
282
+ enum?: string[] | undefined;
283
+ } | undefined;
284
+ maxItems?: number | undefined;
285
+ }>;
286
+ required?: string[] | undefined;
287
+ additionalProperties?: false | undefined;
288
+ }>;
289
+ uiHints: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
290
+ label: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
291
+ help: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
292
+ placeholder: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
293
+ order: z.ZodOptional<z.ZodNumber>;
294
+ advanced: z.ZodOptional<z.ZodBoolean>;
295
+ sensitive: z.ZodOptional<z.ZodBoolean>;
296
+ }, "strict", z.ZodTypeAny, {
297
+ order?: number | undefined;
298
+ label?: string | Record<string, string> | undefined;
299
+ help?: string | Record<string, string> | undefined;
300
+ placeholder?: string | Record<string, string> | undefined;
301
+ advanced?: boolean | undefined;
302
+ sensitive?: boolean | undefined;
303
+ }, {
304
+ order?: number | undefined;
305
+ label?: string | Record<string, string> | undefined;
306
+ help?: string | Record<string, string> | undefined;
307
+ placeholder?: string | Record<string, string> | undefined;
308
+ advanced?: boolean | undefined;
309
+ sensitive?: boolean | undefined;
310
+ }>>>;
311
+ }, "strict", z.ZodTypeAny, {
312
+ schema: {
313
+ type: "object";
314
+ properties: Record<string, {
315
+ type: "string" | "number" | "boolean" | "integer" | "array";
316
+ minimum?: number | undefined;
317
+ maximum?: number | undefined;
318
+ minLength?: number | undefined;
319
+ maxLength?: number | undefined;
320
+ title?: string | undefined;
321
+ description?: string | undefined;
322
+ default?: unknown;
323
+ enum?: (string | number)[] | undefined;
324
+ pattern?: string | undefined;
325
+ format?: "email" | "uri" | undefined;
326
+ items?: {
327
+ type: "string";
328
+ enum?: string[] | undefined;
329
+ } | undefined;
330
+ maxItems?: number | undefined;
331
+ }>;
332
+ required?: string[] | undefined;
333
+ additionalProperties?: false | undefined;
334
+ };
335
+ uiHints?: Record<string, {
336
+ order?: number | undefined;
337
+ label?: string | Record<string, string> | undefined;
338
+ help?: string | Record<string, string> | undefined;
339
+ placeholder?: string | Record<string, string> | undefined;
340
+ advanced?: boolean | undefined;
341
+ sensitive?: boolean | undefined;
342
+ }> | undefined;
343
+ }, {
344
+ schema: {
345
+ type: "object";
346
+ properties: Record<string, {
347
+ type: "string" | "number" | "boolean" | "integer" | "array";
348
+ minimum?: number | undefined;
349
+ maximum?: number | undefined;
350
+ minLength?: number | undefined;
351
+ maxLength?: number | undefined;
352
+ title?: string | undefined;
353
+ description?: string | undefined;
354
+ default?: unknown;
355
+ enum?: (string | number)[] | undefined;
356
+ pattern?: string | undefined;
357
+ format?: "email" | "uri" | undefined;
358
+ items?: {
359
+ type: "string";
360
+ enum?: string[] | undefined;
361
+ } | undefined;
362
+ maxItems?: number | undefined;
363
+ }>;
364
+ required?: string[] | undefined;
365
+ additionalProperties?: false | undefined;
366
+ };
367
+ uiHints?: Record<string, {
368
+ order?: number | undefined;
369
+ label?: string | Record<string, string> | undefined;
370
+ help?: string | Record<string, string> | undefined;
371
+ placeholder?: string | Record<string, string> | undefined;
372
+ advanced?: boolean | undefined;
373
+ sensitive?: boolean | undefined;
374
+ }> | undefined;
375
+ }>, {
376
+ schema: {
377
+ type: "object";
378
+ properties: Record<string, {
379
+ type: "string" | "number" | "boolean" | "integer" | "array";
380
+ minimum?: number | undefined;
381
+ maximum?: number | undefined;
382
+ minLength?: number | undefined;
383
+ maxLength?: number | undefined;
384
+ title?: string | undefined;
385
+ description?: string | undefined;
386
+ default?: unknown;
387
+ enum?: (string | number)[] | undefined;
388
+ pattern?: string | undefined;
389
+ format?: "email" | "uri" | undefined;
390
+ items?: {
391
+ type: "string";
392
+ enum?: string[] | undefined;
393
+ } | undefined;
394
+ maxItems?: number | undefined;
395
+ }>;
396
+ required?: string[] | undefined;
397
+ additionalProperties?: false | undefined;
398
+ };
399
+ uiHints?: Record<string, {
400
+ order?: number | undefined;
401
+ label?: string | Record<string, string> | undefined;
402
+ help?: string | Record<string, string> | undefined;
403
+ placeholder?: string | Record<string, string> | undefined;
404
+ advanced?: boolean | undefined;
405
+ sensitive?: boolean | undefined;
406
+ }> | undefined;
407
+ }, {
408
+ schema: {
409
+ type: "object";
410
+ properties: Record<string, {
411
+ type: "string" | "number" | "boolean" | "integer" | "array";
412
+ minimum?: number | undefined;
413
+ maximum?: number | undefined;
414
+ minLength?: number | undefined;
415
+ maxLength?: number | undefined;
416
+ title?: string | undefined;
417
+ description?: string | undefined;
418
+ default?: unknown;
419
+ enum?: (string | number)[] | undefined;
420
+ pattern?: string | undefined;
421
+ format?: "email" | "uri" | undefined;
422
+ items?: {
423
+ type: "string";
424
+ enum?: string[] | undefined;
425
+ } | undefined;
426
+ maxItems?: number | undefined;
427
+ }>;
428
+ required?: string[] | undefined;
429
+ additionalProperties?: false | undefined;
430
+ };
431
+ uiHints?: Record<string, {
432
+ order?: number | undefined;
433
+ label?: string | Record<string, string> | undefined;
434
+ help?: string | Record<string, string> | undefined;
435
+ placeholder?: string | Record<string, string> | undefined;
436
+ advanced?: boolean | undefined;
437
+ sensitive?: boolean | undefined;
438
+ }> | undefined;
439
+ }>>;
440
+ }, "strict", z.ZodTypeAny, {
441
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
442
+ dir?: string | undefined;
443
+ entry?: string | undefined;
444
+ i18nDir?: string | undefined;
445
+ nav?: {
446
+ key: string;
447
+ labelKey: string;
448
+ path?: string | undefined;
449
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
450
+ order?: number | undefined;
451
+ }[] | undefined;
452
+ config?: {
453
+ schema: {
454
+ type: "object";
455
+ properties: Record<string, {
456
+ type: "string" | "number" | "boolean" | "integer" | "array";
457
+ minimum?: number | undefined;
458
+ maximum?: number | undefined;
459
+ minLength?: number | undefined;
460
+ maxLength?: number | undefined;
461
+ title?: string | undefined;
462
+ description?: string | undefined;
463
+ default?: unknown;
464
+ enum?: (string | number)[] | undefined;
465
+ pattern?: string | undefined;
466
+ format?: "email" | "uri" | undefined;
467
+ items?: {
468
+ type: "string";
469
+ enum?: string[] | undefined;
470
+ } | undefined;
471
+ maxItems?: number | undefined;
472
+ }>;
473
+ required?: string[] | undefined;
474
+ additionalProperties?: false | undefined;
475
+ };
476
+ uiHints?: Record<string, {
477
+ order?: number | undefined;
478
+ label?: string | Record<string, string> | undefined;
479
+ help?: string | Record<string, string> | undefined;
480
+ placeholder?: string | Record<string, string> | undefined;
481
+ advanced?: boolean | undefined;
482
+ sensitive?: boolean | undefined;
483
+ }> | undefined;
484
+ } | undefined;
485
+ }, {
486
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
487
+ dir?: string | undefined;
488
+ entry?: string | undefined;
489
+ i18nDir?: string | undefined;
490
+ nav?: {
491
+ key: string;
492
+ labelKey: string;
493
+ path?: string | undefined;
494
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
495
+ order?: number | undefined;
496
+ }[] | undefined;
497
+ config?: {
498
+ schema: {
499
+ type: "object";
500
+ properties: Record<string, {
501
+ type: "string" | "number" | "boolean" | "integer" | "array";
502
+ minimum?: number | undefined;
503
+ maximum?: number | undefined;
504
+ minLength?: number | undefined;
505
+ maxLength?: number | undefined;
506
+ title?: string | undefined;
507
+ description?: string | undefined;
508
+ default?: unknown;
509
+ enum?: (string | number)[] | undefined;
510
+ pattern?: string | undefined;
511
+ format?: "email" | "uri" | undefined;
512
+ items?: {
513
+ type: "string";
514
+ enum?: string[] | undefined;
515
+ } | undefined;
516
+ maxItems?: number | undefined;
517
+ }>;
518
+ required?: string[] | undefined;
519
+ additionalProperties?: false | undefined;
520
+ };
521
+ uiHints?: Record<string, {
522
+ order?: number | undefined;
523
+ label?: string | Record<string, string> | undefined;
524
+ help?: string | Record<string, string> | undefined;
525
+ placeholder?: string | Record<string, string> | undefined;
526
+ advanced?: boolean | undefined;
527
+ sensitive?: boolean | undefined;
528
+ }> | undefined;
529
+ } | undefined;
530
+ }>, {
531
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
532
+ dir?: string | undefined;
533
+ entry?: string | undefined;
534
+ i18nDir?: string | undefined;
535
+ nav?: {
536
+ key: string;
537
+ labelKey: string;
538
+ path?: string | undefined;
539
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
540
+ order?: number | undefined;
541
+ }[] | undefined;
542
+ config?: {
543
+ schema: {
544
+ type: "object";
545
+ properties: Record<string, {
546
+ type: "string" | "number" | "boolean" | "integer" | "array";
547
+ minimum?: number | undefined;
548
+ maximum?: number | undefined;
549
+ minLength?: number | undefined;
550
+ maxLength?: number | undefined;
551
+ title?: string | undefined;
552
+ description?: string | undefined;
553
+ default?: unknown;
554
+ enum?: (string | number)[] | undefined;
555
+ pattern?: string | undefined;
556
+ format?: "email" | "uri" | undefined;
557
+ items?: {
558
+ type: "string";
559
+ enum?: string[] | undefined;
560
+ } | undefined;
561
+ maxItems?: number | undefined;
562
+ }>;
563
+ required?: string[] | undefined;
564
+ additionalProperties?: false | undefined;
565
+ };
566
+ uiHints?: Record<string, {
567
+ order?: number | undefined;
568
+ label?: string | Record<string, string> | undefined;
569
+ help?: string | Record<string, string> | undefined;
570
+ placeholder?: string | Record<string, string> | undefined;
571
+ advanced?: boolean | undefined;
572
+ sensitive?: boolean | undefined;
573
+ }> | undefined;
574
+ } | undefined;
575
+ }, {
576
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
577
+ dir?: string | undefined;
578
+ entry?: string | undefined;
579
+ i18nDir?: string | undefined;
580
+ nav?: {
581
+ key: string;
582
+ labelKey: string;
583
+ path?: string | undefined;
584
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
585
+ order?: number | undefined;
586
+ }[] | undefined;
587
+ config?: {
588
+ schema: {
589
+ type: "object";
590
+ properties: Record<string, {
591
+ type: "string" | "number" | "boolean" | "integer" | "array";
592
+ minimum?: number | undefined;
593
+ maximum?: number | undefined;
594
+ minLength?: number | undefined;
595
+ maxLength?: number | undefined;
596
+ title?: string | undefined;
597
+ description?: string | undefined;
598
+ default?: unknown;
599
+ enum?: (string | number)[] | undefined;
600
+ pattern?: string | undefined;
601
+ format?: "email" | "uri" | undefined;
602
+ items?: {
603
+ type: "string";
604
+ enum?: string[] | undefined;
605
+ } | undefined;
606
+ maxItems?: number | undefined;
607
+ }>;
608
+ required?: string[] | undefined;
609
+ additionalProperties?: false | undefined;
610
+ };
611
+ uiHints?: Record<string, {
612
+ order?: number | undefined;
613
+ label?: string | Record<string, string> | undefined;
614
+ help?: string | Record<string, string> | undefined;
615
+ placeholder?: string | Record<string, string> | undefined;
616
+ advanced?: boolean | undefined;
617
+ sensitive?: boolean | undefined;
618
+ }> | undefined;
619
+ } | undefined;
620
+ }>, {
621
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
622
+ dir?: string | undefined;
623
+ entry?: string | undefined;
624
+ i18nDir?: string | undefined;
625
+ nav?: {
626
+ key: string;
627
+ labelKey: string;
628
+ path?: string | undefined;
629
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
630
+ order?: number | undefined;
631
+ }[] | undefined;
632
+ config?: {
633
+ schema: {
634
+ type: "object";
635
+ properties: Record<string, {
636
+ type: "string" | "number" | "boolean" | "integer" | "array";
637
+ minimum?: number | undefined;
638
+ maximum?: number | undefined;
639
+ minLength?: number | undefined;
640
+ maxLength?: number | undefined;
641
+ title?: string | undefined;
642
+ description?: string | undefined;
643
+ default?: unknown;
644
+ enum?: (string | number)[] | undefined;
645
+ pattern?: string | undefined;
646
+ format?: "email" | "uri" | undefined;
647
+ items?: {
648
+ type: "string";
649
+ enum?: string[] | undefined;
650
+ } | undefined;
651
+ maxItems?: number | undefined;
652
+ }>;
653
+ required?: string[] | undefined;
654
+ additionalProperties?: false | undefined;
655
+ };
656
+ uiHints?: Record<string, {
657
+ order?: number | undefined;
658
+ label?: string | Record<string, string> | undefined;
659
+ help?: string | Record<string, string> | undefined;
660
+ placeholder?: string | Record<string, string> | undefined;
661
+ advanced?: boolean | undefined;
662
+ sensitive?: boolean | undefined;
663
+ }> | undefined;
664
+ } | undefined;
665
+ }, {
666
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
667
+ dir?: string | undefined;
668
+ entry?: string | undefined;
669
+ i18nDir?: string | undefined;
670
+ nav?: {
671
+ key: string;
672
+ labelKey: string;
673
+ path?: string | undefined;
674
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
675
+ order?: number | undefined;
676
+ }[] | undefined;
677
+ config?: {
678
+ schema: {
679
+ type: "object";
680
+ properties: Record<string, {
681
+ type: "string" | "number" | "boolean" | "integer" | "array";
682
+ minimum?: number | undefined;
683
+ maximum?: number | undefined;
684
+ minLength?: number | undefined;
685
+ maxLength?: number | undefined;
686
+ title?: string | undefined;
687
+ description?: string | undefined;
688
+ default?: unknown;
689
+ enum?: (string | number)[] | undefined;
690
+ pattern?: string | undefined;
691
+ format?: "email" | "uri" | undefined;
692
+ items?: {
693
+ type: "string";
694
+ enum?: string[] | undefined;
695
+ } | undefined;
696
+ maxItems?: number | undefined;
697
+ }>;
698
+ required?: string[] | undefined;
699
+ additionalProperties?: false | undefined;
700
+ };
701
+ uiHints?: Record<string, {
702
+ order?: number | undefined;
703
+ label?: string | Record<string, string> | undefined;
704
+ help?: string | Record<string, string> | undefined;
705
+ placeholder?: string | Record<string, string> | undefined;
706
+ advanced?: boolean | undefined;
707
+ sensitive?: boolean | undefined;
708
+ }> | undefined;
709
+ } | undefined;
710
+ }>>;
711
+ backend: z.ZodOptional<z.ZodEffects<z.ZodObject<{
712
+ dir: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
713
+ runtime: z.ZodOptional<z.ZodEnum<["node", "python"]>>;
714
+ entry: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
715
+ platforms: z.ZodOptional<z.ZodArray<z.ZodEnum<["linux/amd64", "linux/arm64"]>, "many">>;
716
+ egress: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">, string[], string[]>>;
717
+ migrationsDir: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
718
+ compatibilityRepairs: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{
719
+ id: z.ZodString;
720
+ sqlFile: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
721
+ table: z.ZodString;
722
+ column: z.ZodString;
723
+ postgresType: z.ZodEnum<["integer", "text", "boolean", "bigint", "jsonb"]>;
724
+ }, "strict", z.ZodTypeAny, {
725
+ table: string;
726
+ id: string;
727
+ sqlFile: string;
728
+ column: string;
729
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
730
+ }, {
731
+ table: string;
732
+ id: string;
733
+ sqlFile: string;
734
+ column: string;
735
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
736
+ }>, "many">, {
737
+ table: string;
738
+ id: string;
739
+ sqlFile: string;
740
+ column: string;
741
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
742
+ }[], {
743
+ table: string;
744
+ id: string;
745
+ sqlFile: string;
746
+ column: string;
747
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
748
+ }[]>>;
749
+ healthPath: z.ZodOptional<z.ZodString>;
750
+ limits: z.ZodOptional<z.ZodObject<{
751
+ memoryMb: z.ZodOptional<z.ZodNumber>;
752
+ cpuMs: z.ZodOptional<z.ZodNumber>;
753
+ requestTimeoutMs: z.ZodOptional<z.ZodNumber>;
754
+ }, "strict", z.ZodTypeAny, {
755
+ memoryMb?: number | undefined;
756
+ cpuMs?: number | undefined;
757
+ requestTimeoutMs?: number | undefined;
758
+ }, {
759
+ memoryMb?: number | undefined;
760
+ cpuMs?: number | undefined;
761
+ requestTimeoutMs?: number | undefined;
762
+ }>>;
763
+ publicRoutes: z.ZodOptional<z.ZodArray<z.ZodObject<{
764
+ method: z.ZodEnum<["GET", "POST", "PUT", "PATCH", "DELETE"]>;
765
+ path: z.ZodEffects<z.ZodString, string, string>;
766
+ }, "strict", z.ZodTypeAny, {
767
+ path: string;
768
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
769
+ }, {
770
+ path: string;
771
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
772
+ }>, "many">>;
773
+ config: z.ZodOptional<z.ZodEffects<z.ZodObject<{
774
+ schema: z.ZodObject<{
775
+ type: z.ZodLiteral<"object">;
776
+ properties: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodObject<{
777
+ type: z.ZodEnum<["string", "number", "integer", "boolean", "array"]>;
778
+ title: z.ZodOptional<z.ZodString>;
779
+ description: z.ZodOptional<z.ZodString>;
780
+ default: z.ZodOptional<z.ZodUnknown>;
781
+ enum: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
782
+ minLength: z.ZodOptional<z.ZodNumber>;
783
+ maxLength: z.ZodOptional<z.ZodNumber>;
784
+ pattern: z.ZodOptional<z.ZodString>;
785
+ format: z.ZodOptional<z.ZodEnum<["uri", "email"]>>;
786
+ minimum: z.ZodOptional<z.ZodNumber>;
787
+ maximum: z.ZodOptional<z.ZodNumber>;
788
+ items: z.ZodOptional<z.ZodObject<{
789
+ type: z.ZodLiteral<"string">;
790
+ enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
791
+ }, "strict", z.ZodTypeAny, {
792
+ type: "string";
793
+ enum?: string[] | undefined;
794
+ }, {
795
+ type: "string";
796
+ enum?: string[] | undefined;
797
+ }>>;
798
+ maxItems: z.ZodOptional<z.ZodNumber>;
799
+ }, "strict", z.ZodTypeAny, {
800
+ type: "string" | "number" | "boolean" | "integer" | "array";
801
+ minimum?: number | undefined;
802
+ maximum?: number | undefined;
803
+ minLength?: number | undefined;
804
+ maxLength?: number | undefined;
805
+ title?: string | undefined;
806
+ description?: string | undefined;
807
+ default?: unknown;
808
+ enum?: (string | number)[] | undefined;
809
+ pattern?: string | undefined;
810
+ format?: "email" | "uri" | undefined;
811
+ items?: {
812
+ type: "string";
813
+ enum?: string[] | undefined;
814
+ } | undefined;
815
+ maxItems?: number | undefined;
816
+ }, {
817
+ type: "string" | "number" | "boolean" | "integer" | "array";
818
+ minimum?: number | undefined;
819
+ maximum?: number | undefined;
820
+ minLength?: number | undefined;
821
+ maxLength?: number | undefined;
822
+ title?: string | undefined;
823
+ description?: string | undefined;
824
+ default?: unknown;
825
+ enum?: (string | number)[] | undefined;
826
+ pattern?: string | undefined;
827
+ format?: "email" | "uri" | undefined;
828
+ items?: {
829
+ type: "string";
830
+ enum?: string[] | undefined;
831
+ } | undefined;
832
+ maxItems?: number | undefined;
833
+ }>, {
834
+ type: "string" | "number" | "boolean" | "integer" | "array";
835
+ minimum?: number | undefined;
836
+ maximum?: number | undefined;
837
+ minLength?: number | undefined;
838
+ maxLength?: number | undefined;
839
+ title?: string | undefined;
840
+ description?: string | undefined;
841
+ default?: unknown;
842
+ enum?: (string | number)[] | undefined;
843
+ pattern?: string | undefined;
844
+ format?: "email" | "uri" | undefined;
845
+ items?: {
846
+ type: "string";
847
+ enum?: string[] | undefined;
848
+ } | undefined;
849
+ maxItems?: number | undefined;
850
+ }, {
851
+ type: "string" | "number" | "boolean" | "integer" | "array";
852
+ minimum?: number | undefined;
853
+ maximum?: number | undefined;
854
+ minLength?: number | undefined;
855
+ maxLength?: number | undefined;
856
+ title?: string | undefined;
857
+ description?: string | undefined;
858
+ default?: unknown;
859
+ enum?: (string | number)[] | undefined;
860
+ pattern?: string | undefined;
861
+ format?: "email" | "uri" | undefined;
862
+ items?: {
863
+ type: "string";
864
+ enum?: string[] | undefined;
865
+ } | undefined;
866
+ maxItems?: number | undefined;
867
+ }>>;
868
+ required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
869
+ additionalProperties: z.ZodOptional<z.ZodLiteral<false>>;
870
+ }, "strict", z.ZodTypeAny, {
871
+ type: "object";
872
+ properties: Record<string, {
873
+ type: "string" | "number" | "boolean" | "integer" | "array";
874
+ minimum?: number | undefined;
875
+ maximum?: number | undefined;
876
+ minLength?: number | undefined;
877
+ maxLength?: number | undefined;
878
+ title?: string | undefined;
879
+ description?: string | undefined;
880
+ default?: unknown;
881
+ enum?: (string | number)[] | undefined;
882
+ pattern?: string | undefined;
883
+ format?: "email" | "uri" | undefined;
884
+ items?: {
885
+ type: "string";
886
+ enum?: string[] | undefined;
887
+ } | undefined;
888
+ maxItems?: number | undefined;
889
+ }>;
890
+ required?: string[] | undefined;
891
+ additionalProperties?: false | undefined;
892
+ }, {
893
+ type: "object";
894
+ properties: Record<string, {
895
+ type: "string" | "number" | "boolean" | "integer" | "array";
896
+ minimum?: number | undefined;
897
+ maximum?: number | undefined;
898
+ minLength?: number | undefined;
899
+ maxLength?: number | undefined;
900
+ title?: string | undefined;
901
+ description?: string | undefined;
902
+ default?: unknown;
903
+ enum?: (string | number)[] | undefined;
904
+ pattern?: string | undefined;
905
+ format?: "email" | "uri" | undefined;
906
+ items?: {
907
+ type: "string";
908
+ enum?: string[] | undefined;
909
+ } | undefined;
910
+ maxItems?: number | undefined;
911
+ }>;
912
+ required?: string[] | undefined;
913
+ additionalProperties?: false | undefined;
914
+ }>;
915
+ uiHints: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
916
+ label: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
917
+ help: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
918
+ placeholder: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
919
+ order: z.ZodOptional<z.ZodNumber>;
920
+ advanced: z.ZodOptional<z.ZodBoolean>;
921
+ sensitive: z.ZodOptional<z.ZodBoolean>;
922
+ }, "strict", z.ZodTypeAny, {
923
+ order?: number | undefined;
924
+ label?: string | Record<string, string> | undefined;
925
+ help?: string | Record<string, string> | undefined;
926
+ placeholder?: string | Record<string, string> | undefined;
927
+ advanced?: boolean | undefined;
928
+ sensitive?: boolean | undefined;
929
+ }, {
930
+ order?: number | undefined;
931
+ label?: string | Record<string, string> | undefined;
932
+ help?: string | Record<string, string> | undefined;
933
+ placeholder?: string | Record<string, string> | undefined;
934
+ advanced?: boolean | undefined;
935
+ sensitive?: boolean | undefined;
936
+ }>>>;
937
+ }, "strict", z.ZodTypeAny, {
938
+ schema: {
939
+ type: "object";
940
+ properties: Record<string, {
941
+ type: "string" | "number" | "boolean" | "integer" | "array";
942
+ minimum?: number | undefined;
943
+ maximum?: number | undefined;
944
+ minLength?: number | undefined;
945
+ maxLength?: number | undefined;
946
+ title?: string | undefined;
947
+ description?: string | undefined;
948
+ default?: unknown;
949
+ enum?: (string | number)[] | undefined;
950
+ pattern?: string | undefined;
951
+ format?: "email" | "uri" | undefined;
952
+ items?: {
953
+ type: "string";
954
+ enum?: string[] | undefined;
955
+ } | undefined;
956
+ maxItems?: number | undefined;
957
+ }>;
958
+ required?: string[] | undefined;
959
+ additionalProperties?: false | undefined;
960
+ };
961
+ uiHints?: Record<string, {
962
+ order?: number | undefined;
963
+ label?: string | Record<string, string> | undefined;
964
+ help?: string | Record<string, string> | undefined;
965
+ placeholder?: string | Record<string, string> | undefined;
966
+ advanced?: boolean | undefined;
967
+ sensitive?: boolean | undefined;
968
+ }> | undefined;
969
+ }, {
970
+ schema: {
971
+ type: "object";
972
+ properties: Record<string, {
973
+ type: "string" | "number" | "boolean" | "integer" | "array";
974
+ minimum?: number | undefined;
975
+ maximum?: number | undefined;
976
+ minLength?: number | undefined;
977
+ maxLength?: number | undefined;
978
+ title?: string | undefined;
979
+ description?: string | undefined;
980
+ default?: unknown;
981
+ enum?: (string | number)[] | undefined;
982
+ pattern?: string | undefined;
983
+ format?: "email" | "uri" | undefined;
984
+ items?: {
985
+ type: "string";
986
+ enum?: string[] | undefined;
987
+ } | undefined;
988
+ maxItems?: number | undefined;
989
+ }>;
990
+ required?: string[] | undefined;
991
+ additionalProperties?: false | undefined;
992
+ };
993
+ uiHints?: Record<string, {
994
+ order?: number | undefined;
995
+ label?: string | Record<string, string> | undefined;
996
+ help?: string | Record<string, string> | undefined;
997
+ placeholder?: string | Record<string, string> | undefined;
998
+ advanced?: boolean | undefined;
999
+ sensitive?: boolean | undefined;
1000
+ }> | undefined;
1001
+ }>, {
1002
+ schema: {
1003
+ type: "object";
1004
+ properties: Record<string, {
1005
+ type: "string" | "number" | "boolean" | "integer" | "array";
1006
+ minimum?: number | undefined;
1007
+ maximum?: number | undefined;
1008
+ minLength?: number | undefined;
1009
+ maxLength?: number | undefined;
1010
+ title?: string | undefined;
1011
+ description?: string | undefined;
1012
+ default?: unknown;
1013
+ enum?: (string | number)[] | undefined;
1014
+ pattern?: string | undefined;
1015
+ format?: "email" | "uri" | undefined;
1016
+ items?: {
1017
+ type: "string";
1018
+ enum?: string[] | undefined;
1019
+ } | undefined;
1020
+ maxItems?: number | undefined;
1021
+ }>;
1022
+ required?: string[] | undefined;
1023
+ additionalProperties?: false | undefined;
1024
+ };
1025
+ uiHints?: Record<string, {
1026
+ order?: number | undefined;
1027
+ label?: string | Record<string, string> | undefined;
1028
+ help?: string | Record<string, string> | undefined;
1029
+ placeholder?: string | Record<string, string> | undefined;
1030
+ advanced?: boolean | undefined;
1031
+ sensitive?: boolean | undefined;
1032
+ }> | undefined;
1033
+ }, {
1034
+ schema: {
1035
+ type: "object";
1036
+ properties: Record<string, {
1037
+ type: "string" | "number" | "boolean" | "integer" | "array";
1038
+ minimum?: number | undefined;
1039
+ maximum?: number | undefined;
1040
+ minLength?: number | undefined;
1041
+ maxLength?: number | undefined;
1042
+ title?: string | undefined;
1043
+ description?: string | undefined;
1044
+ default?: unknown;
1045
+ enum?: (string | number)[] | undefined;
1046
+ pattern?: string | undefined;
1047
+ format?: "email" | "uri" | undefined;
1048
+ items?: {
1049
+ type: "string";
1050
+ enum?: string[] | undefined;
1051
+ } | undefined;
1052
+ maxItems?: number | undefined;
1053
+ }>;
1054
+ required?: string[] | undefined;
1055
+ additionalProperties?: false | undefined;
1056
+ };
1057
+ uiHints?: Record<string, {
1058
+ order?: number | undefined;
1059
+ label?: string | Record<string, string> | undefined;
1060
+ help?: string | Record<string, string> | undefined;
1061
+ placeholder?: string | Record<string, string> | undefined;
1062
+ advanced?: boolean | undefined;
1063
+ sensitive?: boolean | undefined;
1064
+ }> | undefined;
1065
+ }>>;
1066
+ }, "strict", z.ZodTypeAny, {
1067
+ dir?: string | undefined;
1068
+ entry?: string | undefined;
1069
+ config?: {
1070
+ schema: {
1071
+ type: "object";
1072
+ properties: Record<string, {
1073
+ type: "string" | "number" | "boolean" | "integer" | "array";
1074
+ minimum?: number | undefined;
1075
+ maximum?: number | undefined;
1076
+ minLength?: number | undefined;
1077
+ maxLength?: number | undefined;
1078
+ title?: string | undefined;
1079
+ description?: string | undefined;
1080
+ default?: unknown;
1081
+ enum?: (string | number)[] | undefined;
1082
+ pattern?: string | undefined;
1083
+ format?: "email" | "uri" | undefined;
1084
+ items?: {
1085
+ type: "string";
1086
+ enum?: string[] | undefined;
1087
+ } | undefined;
1088
+ maxItems?: number | undefined;
1089
+ }>;
1090
+ required?: string[] | undefined;
1091
+ additionalProperties?: false | undefined;
1092
+ };
1093
+ uiHints?: Record<string, {
1094
+ order?: number | undefined;
1095
+ label?: string | Record<string, string> | undefined;
1096
+ help?: string | Record<string, string> | undefined;
1097
+ placeholder?: string | Record<string, string> | undefined;
1098
+ advanced?: boolean | undefined;
1099
+ sensitive?: boolean | undefined;
1100
+ }> | undefined;
1101
+ } | undefined;
1102
+ runtime?: "node" | "python" | undefined;
1103
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1104
+ egress?: string[] | undefined;
1105
+ migrationsDir?: string | undefined;
1106
+ compatibilityRepairs?: {
1107
+ table: string;
1108
+ id: string;
1109
+ sqlFile: string;
1110
+ column: string;
1111
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1112
+ }[] | undefined;
1113
+ healthPath?: string | undefined;
1114
+ limits?: {
1115
+ memoryMb?: number | undefined;
1116
+ cpuMs?: number | undefined;
1117
+ requestTimeoutMs?: number | undefined;
1118
+ } | undefined;
1119
+ publicRoutes?: {
1120
+ path: string;
1121
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1122
+ }[] | undefined;
1123
+ }, {
1124
+ dir?: string | undefined;
1125
+ entry?: string | undefined;
1126
+ config?: {
1127
+ schema: {
1128
+ type: "object";
1129
+ properties: Record<string, {
1130
+ type: "string" | "number" | "boolean" | "integer" | "array";
1131
+ minimum?: number | undefined;
1132
+ maximum?: number | undefined;
1133
+ minLength?: number | undefined;
1134
+ maxLength?: number | undefined;
1135
+ title?: string | undefined;
1136
+ description?: string | undefined;
1137
+ default?: unknown;
1138
+ enum?: (string | number)[] | undefined;
1139
+ pattern?: string | undefined;
1140
+ format?: "email" | "uri" | undefined;
1141
+ items?: {
1142
+ type: "string";
1143
+ enum?: string[] | undefined;
1144
+ } | undefined;
1145
+ maxItems?: number | undefined;
1146
+ }>;
1147
+ required?: string[] | undefined;
1148
+ additionalProperties?: false | undefined;
1149
+ };
1150
+ uiHints?: Record<string, {
1151
+ order?: number | undefined;
1152
+ label?: string | Record<string, string> | undefined;
1153
+ help?: string | Record<string, string> | undefined;
1154
+ placeholder?: string | Record<string, string> | undefined;
1155
+ advanced?: boolean | undefined;
1156
+ sensitive?: boolean | undefined;
1157
+ }> | undefined;
1158
+ } | undefined;
1159
+ runtime?: "node" | "python" | undefined;
1160
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1161
+ egress?: string[] | undefined;
1162
+ migrationsDir?: string | undefined;
1163
+ compatibilityRepairs?: {
1164
+ table: string;
1165
+ id: string;
1166
+ sqlFile: string;
1167
+ column: string;
1168
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1169
+ }[] | undefined;
1170
+ healthPath?: string | undefined;
1171
+ limits?: {
1172
+ memoryMb?: number | undefined;
1173
+ cpuMs?: number | undefined;
1174
+ requestTimeoutMs?: number | undefined;
1175
+ } | undefined;
1176
+ publicRoutes?: {
1177
+ path: string;
1178
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1179
+ }[] | undefined;
1180
+ }>, {
1181
+ dir?: string | undefined;
1182
+ entry?: string | undefined;
1183
+ config?: {
1184
+ schema: {
1185
+ type: "object";
1186
+ properties: Record<string, {
1187
+ type: "string" | "number" | "boolean" | "integer" | "array";
1188
+ minimum?: number | undefined;
1189
+ maximum?: number | undefined;
1190
+ minLength?: number | undefined;
1191
+ maxLength?: number | undefined;
1192
+ title?: string | undefined;
1193
+ description?: string | undefined;
1194
+ default?: unknown;
1195
+ enum?: (string | number)[] | undefined;
1196
+ pattern?: string | undefined;
1197
+ format?: "email" | "uri" | undefined;
1198
+ items?: {
1199
+ type: "string";
1200
+ enum?: string[] | undefined;
1201
+ } | undefined;
1202
+ maxItems?: number | undefined;
1203
+ }>;
1204
+ required?: string[] | undefined;
1205
+ additionalProperties?: false | undefined;
1206
+ };
1207
+ uiHints?: Record<string, {
1208
+ order?: number | undefined;
1209
+ label?: string | Record<string, string> | undefined;
1210
+ help?: string | Record<string, string> | undefined;
1211
+ placeholder?: string | Record<string, string> | undefined;
1212
+ advanced?: boolean | undefined;
1213
+ sensitive?: boolean | undefined;
1214
+ }> | undefined;
1215
+ } | undefined;
1216
+ runtime?: "node" | "python" | undefined;
1217
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1218
+ egress?: string[] | undefined;
1219
+ migrationsDir?: string | undefined;
1220
+ compatibilityRepairs?: {
1221
+ table: string;
1222
+ id: string;
1223
+ sqlFile: string;
1224
+ column: string;
1225
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1226
+ }[] | undefined;
1227
+ healthPath?: string | undefined;
1228
+ limits?: {
1229
+ memoryMb?: number | undefined;
1230
+ cpuMs?: number | undefined;
1231
+ requestTimeoutMs?: number | undefined;
1232
+ } | undefined;
1233
+ publicRoutes?: {
1234
+ path: string;
1235
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1236
+ }[] | undefined;
1237
+ }, {
1238
+ dir?: string | undefined;
1239
+ entry?: string | undefined;
1240
+ config?: {
1241
+ schema: {
1242
+ type: "object";
1243
+ properties: Record<string, {
1244
+ type: "string" | "number" | "boolean" | "integer" | "array";
1245
+ minimum?: number | undefined;
1246
+ maximum?: number | undefined;
1247
+ minLength?: number | undefined;
1248
+ maxLength?: number | undefined;
1249
+ title?: string | undefined;
1250
+ description?: string | undefined;
1251
+ default?: unknown;
1252
+ enum?: (string | number)[] | undefined;
1253
+ pattern?: string | undefined;
1254
+ format?: "email" | "uri" | undefined;
1255
+ items?: {
1256
+ type: "string";
1257
+ enum?: string[] | undefined;
1258
+ } | undefined;
1259
+ maxItems?: number | undefined;
1260
+ }>;
1261
+ required?: string[] | undefined;
1262
+ additionalProperties?: false | undefined;
1263
+ };
1264
+ uiHints?: Record<string, {
1265
+ order?: number | undefined;
1266
+ label?: string | Record<string, string> | undefined;
1267
+ help?: string | Record<string, string> | undefined;
1268
+ placeholder?: string | Record<string, string> | undefined;
1269
+ advanced?: boolean | undefined;
1270
+ sensitive?: boolean | undefined;
1271
+ }> | undefined;
1272
+ } | undefined;
1273
+ runtime?: "node" | "python" | undefined;
1274
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1275
+ egress?: string[] | undefined;
1276
+ migrationsDir?: string | undefined;
1277
+ compatibilityRepairs?: {
1278
+ table: string;
1279
+ id: string;
1280
+ sqlFile: string;
1281
+ column: string;
1282
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1283
+ }[] | undefined;
1284
+ healthPath?: string | undefined;
1285
+ limits?: {
1286
+ memoryMb?: number | undefined;
1287
+ cpuMs?: number | undefined;
1288
+ requestTimeoutMs?: number | undefined;
1289
+ } | undefined;
1290
+ publicRoutes?: {
1291
+ path: string;
1292
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1293
+ }[] | undefined;
1294
+ }>>;
1295
+ claw: z.ZodOptional<z.ZodObject<{
1296
+ dir: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
1297
+ hooks: z.ZodOptional<z.ZodObject<{
1298
+ allowPromptInjection: z.ZodOptional<z.ZodBoolean>;
1299
+ allowConversationAccess: z.ZodOptional<z.ZodBoolean>;
1300
+ }, "strict", z.ZodTypeAny, {
1301
+ allowPromptInjection?: boolean | undefined;
1302
+ allowConversationAccess?: boolean | undefined;
1303
+ }, {
1304
+ allowPromptInjection?: boolean | undefined;
1305
+ allowConversationAccess?: boolean | undefined;
1306
+ }>>;
1307
+ }, "strict", z.ZodTypeAny, {
1308
+ dir?: string | undefined;
1309
+ hooks?: {
1310
+ allowPromptInjection?: boolean | undefined;
1311
+ allowConversationAccess?: boolean | undefined;
1312
+ } | undefined;
1313
+ }, {
1314
+ dir?: string | undefined;
1315
+ hooks?: {
1316
+ allowPromptInjection?: boolean | undefined;
1317
+ allowConversationAccess?: boolean | undefined;
1318
+ } | undefined;
1319
+ }>>;
1320
+ publicFrontend: z.ZodOptional<z.ZodObject<{
1321
+ dir: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
1322
+ }, "strict", z.ZodTypeAny, {
1323
+ dir?: string | undefined;
1324
+ }, {
1325
+ dir?: string | undefined;
1326
+ }>>;
1327
+ }, "strict", z.ZodTypeAny, {
1328
+ frontend?: {
1329
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1330
+ dir?: string | undefined;
1331
+ entry?: string | undefined;
1332
+ i18nDir?: string | undefined;
1333
+ nav?: {
1334
+ key: string;
1335
+ labelKey: string;
1336
+ path?: string | undefined;
1337
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1338
+ order?: number | undefined;
1339
+ }[] | undefined;
1340
+ config?: {
1341
+ schema: {
1342
+ type: "object";
1343
+ properties: Record<string, {
1344
+ type: "string" | "number" | "boolean" | "integer" | "array";
1345
+ minimum?: number | undefined;
1346
+ maximum?: number | undefined;
1347
+ minLength?: number | undefined;
1348
+ maxLength?: number | undefined;
1349
+ title?: string | undefined;
1350
+ description?: string | undefined;
1351
+ default?: unknown;
1352
+ enum?: (string | number)[] | undefined;
1353
+ pattern?: string | undefined;
1354
+ format?: "email" | "uri" | undefined;
1355
+ items?: {
1356
+ type: "string";
1357
+ enum?: string[] | undefined;
1358
+ } | undefined;
1359
+ maxItems?: number | undefined;
1360
+ }>;
1361
+ required?: string[] | undefined;
1362
+ additionalProperties?: false | undefined;
1363
+ };
1364
+ uiHints?: Record<string, {
1365
+ order?: number | undefined;
1366
+ label?: string | Record<string, string> | undefined;
1367
+ help?: string | Record<string, string> | undefined;
1368
+ placeholder?: string | Record<string, string> | undefined;
1369
+ advanced?: boolean | undefined;
1370
+ sensitive?: boolean | undefined;
1371
+ }> | undefined;
1372
+ } | undefined;
1373
+ } | undefined;
1374
+ backend?: {
1375
+ dir?: string | undefined;
1376
+ entry?: string | undefined;
1377
+ config?: {
1378
+ schema: {
1379
+ type: "object";
1380
+ properties: Record<string, {
1381
+ type: "string" | "number" | "boolean" | "integer" | "array";
1382
+ minimum?: number | undefined;
1383
+ maximum?: number | undefined;
1384
+ minLength?: number | undefined;
1385
+ maxLength?: number | undefined;
1386
+ title?: string | undefined;
1387
+ description?: string | undefined;
1388
+ default?: unknown;
1389
+ enum?: (string | number)[] | undefined;
1390
+ pattern?: string | undefined;
1391
+ format?: "email" | "uri" | undefined;
1392
+ items?: {
1393
+ type: "string";
1394
+ enum?: string[] | undefined;
1395
+ } | undefined;
1396
+ maxItems?: number | undefined;
1397
+ }>;
1398
+ required?: string[] | undefined;
1399
+ additionalProperties?: false | undefined;
1400
+ };
1401
+ uiHints?: Record<string, {
1402
+ order?: number | undefined;
1403
+ label?: string | Record<string, string> | undefined;
1404
+ help?: string | Record<string, string> | undefined;
1405
+ placeholder?: string | Record<string, string> | undefined;
1406
+ advanced?: boolean | undefined;
1407
+ sensitive?: boolean | undefined;
1408
+ }> | undefined;
1409
+ } | undefined;
1410
+ runtime?: "node" | "python" | undefined;
1411
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1412
+ egress?: string[] | undefined;
1413
+ migrationsDir?: string | undefined;
1414
+ compatibilityRepairs?: {
1415
+ table: string;
1416
+ id: string;
1417
+ sqlFile: string;
1418
+ column: string;
1419
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1420
+ }[] | undefined;
1421
+ healthPath?: string | undefined;
1422
+ limits?: {
1423
+ memoryMb?: number | undefined;
1424
+ cpuMs?: number | undefined;
1425
+ requestTimeoutMs?: number | undefined;
1426
+ } | undefined;
1427
+ publicRoutes?: {
1428
+ path: string;
1429
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1430
+ }[] | undefined;
1431
+ } | undefined;
1432
+ claw?: {
1433
+ dir?: string | undefined;
1434
+ hooks?: {
1435
+ allowPromptInjection?: boolean | undefined;
1436
+ allowConversationAccess?: boolean | undefined;
1437
+ } | undefined;
1438
+ } | undefined;
1439
+ publicFrontend?: {
1440
+ dir?: string | undefined;
1441
+ } | undefined;
1442
+ }, {
1443
+ frontend?: {
1444
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1445
+ dir?: string | undefined;
1446
+ entry?: string | undefined;
1447
+ i18nDir?: string | undefined;
1448
+ nav?: {
1449
+ key: string;
1450
+ labelKey: string;
1451
+ path?: string | undefined;
1452
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1453
+ order?: number | undefined;
1454
+ }[] | undefined;
1455
+ config?: {
1456
+ schema: {
1457
+ type: "object";
1458
+ properties: Record<string, {
1459
+ type: "string" | "number" | "boolean" | "integer" | "array";
1460
+ minimum?: number | undefined;
1461
+ maximum?: number | undefined;
1462
+ minLength?: number | undefined;
1463
+ maxLength?: number | undefined;
1464
+ title?: string | undefined;
1465
+ description?: string | undefined;
1466
+ default?: unknown;
1467
+ enum?: (string | number)[] | undefined;
1468
+ pattern?: string | undefined;
1469
+ format?: "email" | "uri" | undefined;
1470
+ items?: {
1471
+ type: "string";
1472
+ enum?: string[] | undefined;
1473
+ } | undefined;
1474
+ maxItems?: number | undefined;
1475
+ }>;
1476
+ required?: string[] | undefined;
1477
+ additionalProperties?: false | undefined;
1478
+ };
1479
+ uiHints?: Record<string, {
1480
+ order?: number | undefined;
1481
+ label?: string | Record<string, string> | undefined;
1482
+ help?: string | Record<string, string> | undefined;
1483
+ placeholder?: string | Record<string, string> | undefined;
1484
+ advanced?: boolean | undefined;
1485
+ sensitive?: boolean | undefined;
1486
+ }> | undefined;
1487
+ } | undefined;
1488
+ } | undefined;
1489
+ backend?: {
1490
+ dir?: string | undefined;
1491
+ entry?: string | undefined;
1492
+ config?: {
1493
+ schema: {
1494
+ type: "object";
1495
+ properties: Record<string, {
1496
+ type: "string" | "number" | "boolean" | "integer" | "array";
1497
+ minimum?: number | undefined;
1498
+ maximum?: number | undefined;
1499
+ minLength?: number | undefined;
1500
+ maxLength?: number | undefined;
1501
+ title?: string | undefined;
1502
+ description?: string | undefined;
1503
+ default?: unknown;
1504
+ enum?: (string | number)[] | undefined;
1505
+ pattern?: string | undefined;
1506
+ format?: "email" | "uri" | undefined;
1507
+ items?: {
1508
+ type: "string";
1509
+ enum?: string[] | undefined;
1510
+ } | undefined;
1511
+ maxItems?: number | undefined;
1512
+ }>;
1513
+ required?: string[] | undefined;
1514
+ additionalProperties?: false | undefined;
1515
+ };
1516
+ uiHints?: Record<string, {
1517
+ order?: number | undefined;
1518
+ label?: string | Record<string, string> | undefined;
1519
+ help?: string | Record<string, string> | undefined;
1520
+ placeholder?: string | Record<string, string> | undefined;
1521
+ advanced?: boolean | undefined;
1522
+ sensitive?: boolean | undefined;
1523
+ }> | undefined;
1524
+ } | undefined;
1525
+ runtime?: "node" | "python" | undefined;
1526
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1527
+ egress?: string[] | undefined;
1528
+ migrationsDir?: string | undefined;
1529
+ compatibilityRepairs?: {
1530
+ table: string;
1531
+ id: string;
1532
+ sqlFile: string;
1533
+ column: string;
1534
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1535
+ }[] | undefined;
1536
+ healthPath?: string | undefined;
1537
+ limits?: {
1538
+ memoryMb?: number | undefined;
1539
+ cpuMs?: number | undefined;
1540
+ requestTimeoutMs?: number | undefined;
1541
+ } | undefined;
1542
+ publicRoutes?: {
1543
+ path: string;
1544
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1545
+ }[] | undefined;
1546
+ } | undefined;
1547
+ claw?: {
1548
+ dir?: string | undefined;
1549
+ hooks?: {
1550
+ allowPromptInjection?: boolean | undefined;
1551
+ allowConversationAccess?: boolean | undefined;
1552
+ } | undefined;
1553
+ } | undefined;
1554
+ publicFrontend?: {
1555
+ dir?: string | undefined;
1556
+ } | undefined;
1557
+ }>, {
1558
+ frontend?: {
1559
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1560
+ dir?: string | undefined;
1561
+ entry?: string | undefined;
1562
+ i18nDir?: string | undefined;
1563
+ nav?: {
1564
+ key: string;
1565
+ labelKey: string;
1566
+ path?: string | undefined;
1567
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1568
+ order?: number | undefined;
1569
+ }[] | undefined;
1570
+ config?: {
1571
+ schema: {
1572
+ type: "object";
1573
+ properties: Record<string, {
1574
+ type: "string" | "number" | "boolean" | "integer" | "array";
1575
+ minimum?: number | undefined;
1576
+ maximum?: number | undefined;
1577
+ minLength?: number | undefined;
1578
+ maxLength?: number | undefined;
1579
+ title?: string | undefined;
1580
+ description?: string | undefined;
1581
+ default?: unknown;
1582
+ enum?: (string | number)[] | undefined;
1583
+ pattern?: string | undefined;
1584
+ format?: "email" | "uri" | undefined;
1585
+ items?: {
1586
+ type: "string";
1587
+ enum?: string[] | undefined;
1588
+ } | undefined;
1589
+ maxItems?: number | undefined;
1590
+ }>;
1591
+ required?: string[] | undefined;
1592
+ additionalProperties?: false | undefined;
1593
+ };
1594
+ uiHints?: Record<string, {
1595
+ order?: number | undefined;
1596
+ label?: string | Record<string, string> | undefined;
1597
+ help?: string | Record<string, string> | undefined;
1598
+ placeholder?: string | Record<string, string> | undefined;
1599
+ advanced?: boolean | undefined;
1600
+ sensitive?: boolean | undefined;
1601
+ }> | undefined;
1602
+ } | undefined;
1603
+ } | undefined;
1604
+ backend?: {
1605
+ dir?: string | undefined;
1606
+ entry?: string | undefined;
1607
+ config?: {
1608
+ schema: {
1609
+ type: "object";
1610
+ properties: Record<string, {
1611
+ type: "string" | "number" | "boolean" | "integer" | "array";
1612
+ minimum?: number | undefined;
1613
+ maximum?: number | undefined;
1614
+ minLength?: number | undefined;
1615
+ maxLength?: number | undefined;
1616
+ title?: string | undefined;
1617
+ description?: string | undefined;
1618
+ default?: unknown;
1619
+ enum?: (string | number)[] | undefined;
1620
+ pattern?: string | undefined;
1621
+ format?: "email" | "uri" | undefined;
1622
+ items?: {
1623
+ type: "string";
1624
+ enum?: string[] | undefined;
1625
+ } | undefined;
1626
+ maxItems?: number | undefined;
1627
+ }>;
1628
+ required?: string[] | undefined;
1629
+ additionalProperties?: false | undefined;
1630
+ };
1631
+ uiHints?: Record<string, {
1632
+ order?: number | undefined;
1633
+ label?: string | Record<string, string> | undefined;
1634
+ help?: string | Record<string, string> | undefined;
1635
+ placeholder?: string | Record<string, string> | undefined;
1636
+ advanced?: boolean | undefined;
1637
+ sensitive?: boolean | undefined;
1638
+ }> | undefined;
1639
+ } | undefined;
1640
+ runtime?: "node" | "python" | undefined;
1641
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1642
+ egress?: string[] | undefined;
1643
+ migrationsDir?: string | undefined;
1644
+ compatibilityRepairs?: {
1645
+ table: string;
1646
+ id: string;
1647
+ sqlFile: string;
1648
+ column: string;
1649
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1650
+ }[] | undefined;
1651
+ healthPath?: string | undefined;
1652
+ limits?: {
1653
+ memoryMb?: number | undefined;
1654
+ cpuMs?: number | undefined;
1655
+ requestTimeoutMs?: number | undefined;
1656
+ } | undefined;
1657
+ publicRoutes?: {
1658
+ path: string;
1659
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1660
+ }[] | undefined;
1661
+ } | undefined;
1662
+ claw?: {
1663
+ dir?: string | undefined;
1664
+ hooks?: {
1665
+ allowPromptInjection?: boolean | undefined;
1666
+ allowConversationAccess?: boolean | undefined;
1667
+ } | undefined;
1668
+ } | undefined;
1669
+ publicFrontend?: {
1670
+ dir?: string | undefined;
1671
+ } | undefined;
1672
+ }, {
1673
+ frontend?: {
1674
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1675
+ dir?: string | undefined;
1676
+ entry?: string | undefined;
1677
+ i18nDir?: string | undefined;
1678
+ nav?: {
1679
+ key: string;
1680
+ labelKey: string;
1681
+ path?: string | undefined;
1682
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1683
+ order?: number | undefined;
1684
+ }[] | undefined;
1685
+ config?: {
1686
+ schema: {
1687
+ type: "object";
1688
+ properties: Record<string, {
1689
+ type: "string" | "number" | "boolean" | "integer" | "array";
1690
+ minimum?: number | undefined;
1691
+ maximum?: number | undefined;
1692
+ minLength?: number | undefined;
1693
+ maxLength?: number | undefined;
1694
+ title?: string | undefined;
1695
+ description?: string | undefined;
1696
+ default?: unknown;
1697
+ enum?: (string | number)[] | undefined;
1698
+ pattern?: string | undefined;
1699
+ format?: "email" | "uri" | undefined;
1700
+ items?: {
1701
+ type: "string";
1702
+ enum?: string[] | undefined;
1703
+ } | undefined;
1704
+ maxItems?: number | undefined;
1705
+ }>;
1706
+ required?: string[] | undefined;
1707
+ additionalProperties?: false | undefined;
1708
+ };
1709
+ uiHints?: Record<string, {
1710
+ order?: number | undefined;
1711
+ label?: string | Record<string, string> | undefined;
1712
+ help?: string | Record<string, string> | undefined;
1713
+ placeholder?: string | Record<string, string> | undefined;
1714
+ advanced?: boolean | undefined;
1715
+ sensitive?: boolean | undefined;
1716
+ }> | undefined;
1717
+ } | undefined;
1718
+ } | undefined;
1719
+ backend?: {
1720
+ dir?: string | undefined;
1721
+ entry?: string | undefined;
1722
+ config?: {
1723
+ schema: {
1724
+ type: "object";
1725
+ properties: Record<string, {
1726
+ type: "string" | "number" | "boolean" | "integer" | "array";
1727
+ minimum?: number | undefined;
1728
+ maximum?: number | undefined;
1729
+ minLength?: number | undefined;
1730
+ maxLength?: number | undefined;
1731
+ title?: string | undefined;
1732
+ description?: string | undefined;
1733
+ default?: unknown;
1734
+ enum?: (string | number)[] | undefined;
1735
+ pattern?: string | undefined;
1736
+ format?: "email" | "uri" | undefined;
1737
+ items?: {
1738
+ type: "string";
1739
+ enum?: string[] | undefined;
1740
+ } | undefined;
1741
+ maxItems?: number | undefined;
1742
+ }>;
1743
+ required?: string[] | undefined;
1744
+ additionalProperties?: false | undefined;
1745
+ };
1746
+ uiHints?: Record<string, {
1747
+ order?: number | undefined;
1748
+ label?: string | Record<string, string> | undefined;
1749
+ help?: string | Record<string, string> | undefined;
1750
+ placeholder?: string | Record<string, string> | undefined;
1751
+ advanced?: boolean | undefined;
1752
+ sensitive?: boolean | undefined;
1753
+ }> | undefined;
1754
+ } | undefined;
1755
+ runtime?: "node" | "python" | undefined;
1756
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1757
+ egress?: string[] | undefined;
1758
+ migrationsDir?: string | undefined;
1759
+ compatibilityRepairs?: {
1760
+ table: string;
1761
+ id: string;
1762
+ sqlFile: string;
1763
+ column: string;
1764
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1765
+ }[] | undefined;
1766
+ healthPath?: string | undefined;
1767
+ limits?: {
1768
+ memoryMb?: number | undefined;
1769
+ cpuMs?: number | undefined;
1770
+ requestTimeoutMs?: number | undefined;
1771
+ } | undefined;
1772
+ publicRoutes?: {
1773
+ path: string;
1774
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1775
+ }[] | undefined;
1776
+ } | undefined;
1777
+ claw?: {
1778
+ dir?: string | undefined;
1779
+ hooks?: {
1780
+ allowPromptInjection?: boolean | undefined;
1781
+ allowConversationAccess?: boolean | undefined;
1782
+ } | undefined;
1783
+ } | undefined;
1784
+ publicFrontend?: {
1785
+ dir?: string | undefined;
1786
+ } | undefined;
1787
+ }>, {
1788
+ frontend?: {
1789
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1790
+ dir?: string | undefined;
1791
+ entry?: string | undefined;
1792
+ i18nDir?: string | undefined;
1793
+ nav?: {
1794
+ key: string;
1795
+ labelKey: string;
1796
+ path?: string | undefined;
1797
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1798
+ order?: number | undefined;
1799
+ }[] | undefined;
1800
+ config?: {
1801
+ schema: {
1802
+ type: "object";
1803
+ properties: Record<string, {
1804
+ type: "string" | "number" | "boolean" | "integer" | "array";
1805
+ minimum?: number | undefined;
1806
+ maximum?: number | undefined;
1807
+ minLength?: number | undefined;
1808
+ maxLength?: number | undefined;
1809
+ title?: string | undefined;
1810
+ description?: string | undefined;
1811
+ default?: unknown;
1812
+ enum?: (string | number)[] | undefined;
1813
+ pattern?: string | undefined;
1814
+ format?: "email" | "uri" | undefined;
1815
+ items?: {
1816
+ type: "string";
1817
+ enum?: string[] | undefined;
1818
+ } | undefined;
1819
+ maxItems?: number | undefined;
1820
+ }>;
1821
+ required?: string[] | undefined;
1822
+ additionalProperties?: false | undefined;
1823
+ };
1824
+ uiHints?: Record<string, {
1825
+ order?: number | undefined;
1826
+ label?: string | Record<string, string> | undefined;
1827
+ help?: string | Record<string, string> | undefined;
1828
+ placeholder?: string | Record<string, string> | undefined;
1829
+ advanced?: boolean | undefined;
1830
+ sensitive?: boolean | undefined;
1831
+ }> | undefined;
1832
+ } | undefined;
1833
+ } | undefined;
1834
+ backend?: {
1835
+ dir?: string | undefined;
1836
+ entry?: string | undefined;
1837
+ config?: {
1838
+ schema: {
1839
+ type: "object";
1840
+ properties: Record<string, {
1841
+ type: "string" | "number" | "boolean" | "integer" | "array";
1842
+ minimum?: number | undefined;
1843
+ maximum?: number | undefined;
1844
+ minLength?: number | undefined;
1845
+ maxLength?: number | undefined;
1846
+ title?: string | undefined;
1847
+ description?: string | undefined;
1848
+ default?: unknown;
1849
+ enum?: (string | number)[] | undefined;
1850
+ pattern?: string | undefined;
1851
+ format?: "email" | "uri" | undefined;
1852
+ items?: {
1853
+ type: "string";
1854
+ enum?: string[] | undefined;
1855
+ } | undefined;
1856
+ maxItems?: number | undefined;
1857
+ }>;
1858
+ required?: string[] | undefined;
1859
+ additionalProperties?: false | undefined;
1860
+ };
1861
+ uiHints?: Record<string, {
1862
+ order?: number | undefined;
1863
+ label?: string | Record<string, string> | undefined;
1864
+ help?: string | Record<string, string> | undefined;
1865
+ placeholder?: string | Record<string, string> | undefined;
1866
+ advanced?: boolean | undefined;
1867
+ sensitive?: boolean | undefined;
1868
+ }> | undefined;
1869
+ } | undefined;
1870
+ runtime?: "node" | "python" | undefined;
1871
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1872
+ egress?: string[] | undefined;
1873
+ migrationsDir?: string | undefined;
1874
+ compatibilityRepairs?: {
1875
+ table: string;
1876
+ id: string;
1877
+ sqlFile: string;
1878
+ column: string;
1879
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1880
+ }[] | undefined;
1881
+ healthPath?: string | undefined;
1882
+ limits?: {
1883
+ memoryMb?: number | undefined;
1884
+ cpuMs?: number | undefined;
1885
+ requestTimeoutMs?: number | undefined;
1886
+ } | undefined;
1887
+ publicRoutes?: {
1888
+ path: string;
1889
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1890
+ }[] | undefined;
1891
+ } | undefined;
1892
+ claw?: {
1893
+ dir?: string | undefined;
1894
+ hooks?: {
1895
+ allowPromptInjection?: boolean | undefined;
1896
+ allowConversationAccess?: boolean | undefined;
1897
+ } | undefined;
1898
+ } | undefined;
1899
+ publicFrontend?: {
1900
+ dir?: string | undefined;
1901
+ } | undefined;
1902
+ }, {
1903
+ frontend?: {
1904
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1905
+ dir?: string | undefined;
1906
+ entry?: string | undefined;
1907
+ i18nDir?: string | undefined;
1908
+ nav?: {
1909
+ key: string;
1910
+ labelKey: string;
1911
+ path?: string | undefined;
1912
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
1913
+ order?: number | undefined;
1914
+ }[] | undefined;
1915
+ config?: {
1916
+ schema: {
1917
+ type: "object";
1918
+ properties: Record<string, {
1919
+ type: "string" | "number" | "boolean" | "integer" | "array";
1920
+ minimum?: number | undefined;
1921
+ maximum?: number | undefined;
1922
+ minLength?: number | undefined;
1923
+ maxLength?: number | undefined;
1924
+ title?: string | undefined;
1925
+ description?: string | undefined;
1926
+ default?: unknown;
1927
+ enum?: (string | number)[] | undefined;
1928
+ pattern?: string | undefined;
1929
+ format?: "email" | "uri" | undefined;
1930
+ items?: {
1931
+ type: "string";
1932
+ enum?: string[] | undefined;
1933
+ } | undefined;
1934
+ maxItems?: number | undefined;
1935
+ }>;
1936
+ required?: string[] | undefined;
1937
+ additionalProperties?: false | undefined;
1938
+ };
1939
+ uiHints?: Record<string, {
1940
+ order?: number | undefined;
1941
+ label?: string | Record<string, string> | undefined;
1942
+ help?: string | Record<string, string> | undefined;
1943
+ placeholder?: string | Record<string, string> | undefined;
1944
+ advanced?: boolean | undefined;
1945
+ sensitive?: boolean | undefined;
1946
+ }> | undefined;
1947
+ } | undefined;
1948
+ } | undefined;
1949
+ backend?: {
1950
+ dir?: string | undefined;
1951
+ entry?: string | undefined;
1952
+ config?: {
1953
+ schema: {
1954
+ type: "object";
1955
+ properties: Record<string, {
1956
+ type: "string" | "number" | "boolean" | "integer" | "array";
1957
+ minimum?: number | undefined;
1958
+ maximum?: number | undefined;
1959
+ minLength?: number | undefined;
1960
+ maxLength?: number | undefined;
1961
+ title?: string | undefined;
1962
+ description?: string | undefined;
1963
+ default?: unknown;
1964
+ enum?: (string | number)[] | undefined;
1965
+ pattern?: string | undefined;
1966
+ format?: "email" | "uri" | undefined;
1967
+ items?: {
1968
+ type: "string";
1969
+ enum?: string[] | undefined;
1970
+ } | undefined;
1971
+ maxItems?: number | undefined;
1972
+ }>;
1973
+ required?: string[] | undefined;
1974
+ additionalProperties?: false | undefined;
1975
+ };
1976
+ uiHints?: Record<string, {
1977
+ order?: number | undefined;
1978
+ label?: string | Record<string, string> | undefined;
1979
+ help?: string | Record<string, string> | undefined;
1980
+ placeholder?: string | Record<string, string> | undefined;
1981
+ advanced?: boolean | undefined;
1982
+ sensitive?: boolean | undefined;
1983
+ }> | undefined;
1984
+ } | undefined;
1985
+ runtime?: "node" | "python" | undefined;
1986
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1987
+ egress?: string[] | undefined;
1988
+ migrationsDir?: string | undefined;
1989
+ compatibilityRepairs?: {
1990
+ table: string;
1991
+ id: string;
1992
+ sqlFile: string;
1993
+ column: string;
1994
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
1995
+ }[] | undefined;
1996
+ healthPath?: string | undefined;
1997
+ limits?: {
1998
+ memoryMb?: number | undefined;
1999
+ cpuMs?: number | undefined;
2000
+ requestTimeoutMs?: number | undefined;
2001
+ } | undefined;
2002
+ publicRoutes?: {
2003
+ path: string;
2004
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2005
+ }[] | undefined;
2006
+ } | undefined;
2007
+ claw?: {
2008
+ dir?: string | undefined;
2009
+ hooks?: {
2010
+ allowPromptInjection?: boolean | undefined;
2011
+ allowConversationAccess?: boolean | undefined;
2012
+ } | undefined;
2013
+ } | undefined;
2014
+ publicFrontend?: {
2015
+ dir?: string | undefined;
2016
+ } | undefined;
2017
+ }>;
2018
+ permissions: z.ZodOptional<z.ZodObject<{
2019
+ required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2020
+ }, "strict", z.ZodTypeAny, {
2021
+ required?: string[] | undefined;
2022
+ }, {
2023
+ required?: string[] | undefined;
2024
+ }>>;
2025
+ access: z.ZodOptional<z.ZodObject<{
2026
+ catalog: z.ZodEffects<z.ZodString, string, string>;
2027
+ }, "strict", z.ZodTypeAny, {
2028
+ catalog: string;
2029
+ }, {
2030
+ catalog: string;
2031
+ }>>;
2032
+ audit: z.ZodOptional<z.ZodObject<{
2033
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2034
+ category: z.ZodOptional<z.ZodEnum<["read", "write", "search", "browse", "exec", "knowledge", "memory", "message", "schedule", "delegate", "document", "plugin"]>>;
2035
+ title: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
2036
+ target: z.ZodOptional<z.ZodString>;
2037
+ risk: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>;
2038
+ dataClasses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2039
+ }, "strict", z.ZodTypeAny, {
2040
+ target?: string | undefined;
2041
+ title?: string | Record<string, string> | undefined;
2042
+ category?: "message" | "search" | "read" | "write" | "browse" | "exec" | "knowledge" | "memory" | "schedule" | "delegate" | "document" | "plugin" | undefined;
2043
+ risk?: "low" | "medium" | "high" | undefined;
2044
+ dataClasses?: string[] | undefined;
2045
+ }, {
2046
+ target?: string | undefined;
2047
+ title?: string | Record<string, string> | undefined;
2048
+ category?: "message" | "search" | "read" | "write" | "browse" | "exec" | "knowledge" | "memory" | "schedule" | "delegate" | "document" | "plugin" | undefined;
2049
+ risk?: "low" | "medium" | "high" | undefined;
2050
+ dataClasses?: string[] | undefined;
2051
+ }>>>;
2052
+ }, "strict", z.ZodTypeAny, {
2053
+ tools?: Record<string, {
2054
+ target?: string | undefined;
2055
+ title?: string | Record<string, string> | undefined;
2056
+ category?: "message" | "search" | "read" | "write" | "browse" | "exec" | "knowledge" | "memory" | "schedule" | "delegate" | "document" | "plugin" | undefined;
2057
+ risk?: "low" | "medium" | "high" | undefined;
2058
+ dataClasses?: string[] | undefined;
2059
+ }> | undefined;
2060
+ }, {
2061
+ tools?: Record<string, {
2062
+ target?: string | undefined;
2063
+ title?: string | Record<string, string> | undefined;
2064
+ category?: "message" | "search" | "read" | "write" | "browse" | "exec" | "knowledge" | "memory" | "schedule" | "delegate" | "document" | "plugin" | undefined;
2065
+ risk?: "low" | "medium" | "high" | undefined;
2066
+ dataClasses?: string[] | undefined;
2067
+ }> | undefined;
2068
+ }>>;
2069
+ agentTemplates: z.ZodOptional<z.ZodArray<z.ZodObject<{
2070
+ key: z.ZodString;
2071
+ entry: z.ZodEffects<z.ZodString, string, string>;
2072
+ icon: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
2073
+ }, "strict", z.ZodTypeAny, {
2074
+ key: string;
2075
+ entry: string;
2076
+ icon?: string | undefined;
2077
+ }, {
2078
+ key: string;
2079
+ entry: string;
2080
+ icon?: string | undefined;
2081
+ }>, "many">>;
2082
+ workDelegation: z.ZodOptional<z.ZodObject<{
2083
+ allowedAvatarRoles: z.ZodArray<z.ZodString, "many">;
2084
+ settingsRoute: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
2085
+ summary: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>, string | Record<string, string>, string | Record<string, string>>>;
2086
+ privacyPolicyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
2087
+ conversationCapture: z.ZodOptional<z.ZodBoolean>;
2088
+ }, "strict", z.ZodTypeAny, {
2089
+ allowedAvatarRoles: string[];
2090
+ settingsRoute?: string | undefined;
2091
+ summary?: string | Record<string, string> | undefined;
2092
+ privacyPolicyUrl?: string | undefined;
2093
+ conversationCapture?: boolean | undefined;
2094
+ }, {
2095
+ allowedAvatarRoles: string[];
2096
+ settingsRoute?: string | undefined;
2097
+ summary?: string | Record<string, string> | undefined;
2098
+ privacyPolicyUrl?: string | undefined;
2099
+ conversationCapture?: boolean | undefined;
2100
+ }>>;
2101
+ conversationRecordRoutes: z.ZodOptional<z.ZodArray<z.ZodObject<{
2102
+ entity: z.ZodString;
2103
+ path: z.ZodEffects<z.ZodString, string, string>;
2104
+ contextQuery: z.ZodOptional<z.ZodString>;
2105
+ labelFields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2106
+ }, "strict", z.ZodTypeAny, {
2107
+ path: string;
2108
+ entity: string;
2109
+ contextQuery?: string | undefined;
2110
+ labelFields?: string[] | undefined;
2111
+ }, {
2112
+ path: string;
2113
+ entity: string;
2114
+ contextQuery?: string | undefined;
2115
+ labelFields?: string[] | undefined;
2116
+ }>, "many">>;
2117
+ agentReadiness: z.ZodOptional<z.ZodObject<{
2118
+ path: z.ZodEffects<z.ZodString, string, string>;
2119
+ }, "strict", z.ZodTypeAny, {
2120
+ path: string;
2121
+ }, {
2122
+ path: string;
2123
+ }>>;
2124
+ }, "strict", z.ZodTypeAny, {
2125
+ id: string;
2126
+ manifestVersion: 1;
2127
+ version: string;
2128
+ displayName: string | Record<string, string>;
2129
+ scope: "avatar" | "tenant";
2130
+ parts: {
2131
+ frontend?: {
2132
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
2133
+ dir?: string | undefined;
2134
+ entry?: string | undefined;
2135
+ i18nDir?: string | undefined;
2136
+ nav?: {
2137
+ key: string;
2138
+ labelKey: string;
2139
+ path?: string | undefined;
2140
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
2141
+ order?: number | undefined;
2142
+ }[] | undefined;
2143
+ config?: {
2144
+ schema: {
2145
+ type: "object";
2146
+ properties: Record<string, {
2147
+ type: "string" | "number" | "boolean" | "integer" | "array";
2148
+ minimum?: number | undefined;
2149
+ maximum?: number | undefined;
2150
+ minLength?: number | undefined;
2151
+ maxLength?: number | undefined;
2152
+ title?: string | undefined;
2153
+ description?: string | undefined;
2154
+ default?: unknown;
2155
+ enum?: (string | number)[] | undefined;
2156
+ pattern?: string | undefined;
2157
+ format?: "email" | "uri" | undefined;
2158
+ items?: {
2159
+ type: "string";
2160
+ enum?: string[] | undefined;
2161
+ } | undefined;
2162
+ maxItems?: number | undefined;
2163
+ }>;
2164
+ required?: string[] | undefined;
2165
+ additionalProperties?: false | undefined;
2166
+ };
2167
+ uiHints?: Record<string, {
2168
+ order?: number | undefined;
2169
+ label?: string | Record<string, string> | undefined;
2170
+ help?: string | Record<string, string> | undefined;
2171
+ placeholder?: string | Record<string, string> | undefined;
2172
+ advanced?: boolean | undefined;
2173
+ sensitive?: boolean | undefined;
2174
+ }> | undefined;
2175
+ } | undefined;
2176
+ } | undefined;
2177
+ backend?: {
2178
+ dir?: string | undefined;
2179
+ entry?: string | undefined;
2180
+ config?: {
2181
+ schema: {
2182
+ type: "object";
2183
+ properties: Record<string, {
2184
+ type: "string" | "number" | "boolean" | "integer" | "array";
2185
+ minimum?: number | undefined;
2186
+ maximum?: number | undefined;
2187
+ minLength?: number | undefined;
2188
+ maxLength?: number | undefined;
2189
+ title?: string | undefined;
2190
+ description?: string | undefined;
2191
+ default?: unknown;
2192
+ enum?: (string | number)[] | undefined;
2193
+ pattern?: string | undefined;
2194
+ format?: "email" | "uri" | undefined;
2195
+ items?: {
2196
+ type: "string";
2197
+ enum?: string[] | undefined;
2198
+ } | undefined;
2199
+ maxItems?: number | undefined;
2200
+ }>;
2201
+ required?: string[] | undefined;
2202
+ additionalProperties?: false | undefined;
2203
+ };
2204
+ uiHints?: Record<string, {
2205
+ order?: number | undefined;
2206
+ label?: string | Record<string, string> | undefined;
2207
+ help?: string | Record<string, string> | undefined;
2208
+ placeholder?: string | Record<string, string> | undefined;
2209
+ advanced?: boolean | undefined;
2210
+ sensitive?: boolean | undefined;
2211
+ }> | undefined;
2212
+ } | undefined;
2213
+ runtime?: "node" | "python" | undefined;
2214
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
2215
+ egress?: string[] | undefined;
2216
+ migrationsDir?: string | undefined;
2217
+ compatibilityRepairs?: {
2218
+ table: string;
2219
+ id: string;
2220
+ sqlFile: string;
2221
+ column: string;
2222
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
2223
+ }[] | undefined;
2224
+ healthPath?: string | undefined;
2225
+ limits?: {
2226
+ memoryMb?: number | undefined;
2227
+ cpuMs?: number | undefined;
2228
+ requestTimeoutMs?: number | undefined;
2229
+ } | undefined;
2230
+ publicRoutes?: {
2231
+ path: string;
2232
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2233
+ }[] | undefined;
2234
+ } | undefined;
2235
+ claw?: {
2236
+ dir?: string | undefined;
2237
+ hooks?: {
2238
+ allowPromptInjection?: boolean | undefined;
2239
+ allowConversationAccess?: boolean | undefined;
2240
+ } | undefined;
2241
+ } | undefined;
2242
+ publicFrontend?: {
2243
+ dir?: string | undefined;
2244
+ } | undefined;
2245
+ };
2246
+ icon?: string | undefined;
2247
+ description?: string | Record<string, string> | undefined;
2248
+ author?: string | undefined;
2249
+ homepage?: string | undefined;
2250
+ category?: string | undefined;
2251
+ tags?: string[] | undefined;
2252
+ hostApiRange?: string | undefined;
2253
+ declares?: {
2254
+ database?: boolean | undefined;
2255
+ storage?: boolean | undefined;
2256
+ events?: boolean | undefined;
2257
+ notifications?: boolean | undefined;
2258
+ } | undefined;
2259
+ permissions?: {
2260
+ required?: string[] | undefined;
2261
+ } | undefined;
2262
+ access?: {
2263
+ catalog: string;
2264
+ } | undefined;
2265
+ audit?: {
2266
+ tools?: Record<string, {
2267
+ target?: string | undefined;
2268
+ title?: string | Record<string, string> | undefined;
2269
+ category?: "message" | "search" | "read" | "write" | "browse" | "exec" | "knowledge" | "memory" | "schedule" | "delegate" | "document" | "plugin" | undefined;
2270
+ risk?: "low" | "medium" | "high" | undefined;
2271
+ dataClasses?: string[] | undefined;
2272
+ }> | undefined;
2273
+ } | undefined;
2274
+ agentTemplates?: {
2275
+ key: string;
2276
+ entry: string;
2277
+ icon?: string | undefined;
2278
+ }[] | undefined;
2279
+ workDelegation?: {
2280
+ allowedAvatarRoles: string[];
2281
+ settingsRoute?: string | undefined;
2282
+ summary?: string | Record<string, string> | undefined;
2283
+ privacyPolicyUrl?: string | undefined;
2284
+ conversationCapture?: boolean | undefined;
2285
+ } | undefined;
2286
+ conversationRecordRoutes?: {
2287
+ path: string;
2288
+ entity: string;
2289
+ contextQuery?: string | undefined;
2290
+ labelFields?: string[] | undefined;
2291
+ }[] | undefined;
2292
+ agentReadiness?: {
2293
+ path: string;
2294
+ } | undefined;
2295
+ }, {
2296
+ id: string;
2297
+ manifestVersion: 1;
2298
+ version: string;
2299
+ displayName: string | Record<string, string>;
2300
+ scope: "avatar" | "tenant";
2301
+ parts: {
2302
+ frontend?: {
2303
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
2304
+ dir?: string | undefined;
2305
+ entry?: string | undefined;
2306
+ i18nDir?: string | undefined;
2307
+ nav?: {
2308
+ key: string;
2309
+ labelKey: string;
2310
+ path?: string | undefined;
2311
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
2312
+ order?: number | undefined;
2313
+ }[] | undefined;
2314
+ config?: {
2315
+ schema: {
2316
+ type: "object";
2317
+ properties: Record<string, {
2318
+ type: "string" | "number" | "boolean" | "integer" | "array";
2319
+ minimum?: number | undefined;
2320
+ maximum?: number | undefined;
2321
+ minLength?: number | undefined;
2322
+ maxLength?: number | undefined;
2323
+ title?: string | undefined;
2324
+ description?: string | undefined;
2325
+ default?: unknown;
2326
+ enum?: (string | number)[] | undefined;
2327
+ pattern?: string | undefined;
2328
+ format?: "email" | "uri" | undefined;
2329
+ items?: {
2330
+ type: "string";
2331
+ enum?: string[] | undefined;
2332
+ } | undefined;
2333
+ maxItems?: number | undefined;
2334
+ }>;
2335
+ required?: string[] | undefined;
2336
+ additionalProperties?: false | undefined;
2337
+ };
2338
+ uiHints?: Record<string, {
2339
+ order?: number | undefined;
2340
+ label?: string | Record<string, string> | undefined;
2341
+ help?: string | Record<string, string> | undefined;
2342
+ placeholder?: string | Record<string, string> | undefined;
2343
+ advanced?: boolean | undefined;
2344
+ sensitive?: boolean | undefined;
2345
+ }> | undefined;
2346
+ } | undefined;
2347
+ } | undefined;
2348
+ backend?: {
2349
+ dir?: string | undefined;
2350
+ entry?: string | undefined;
2351
+ config?: {
2352
+ schema: {
2353
+ type: "object";
2354
+ properties: Record<string, {
2355
+ type: "string" | "number" | "boolean" | "integer" | "array";
2356
+ minimum?: number | undefined;
2357
+ maximum?: number | undefined;
2358
+ minLength?: number | undefined;
2359
+ maxLength?: number | undefined;
2360
+ title?: string | undefined;
2361
+ description?: string | undefined;
2362
+ default?: unknown;
2363
+ enum?: (string | number)[] | undefined;
2364
+ pattern?: string | undefined;
2365
+ format?: "email" | "uri" | undefined;
2366
+ items?: {
2367
+ type: "string";
2368
+ enum?: string[] | undefined;
2369
+ } | undefined;
2370
+ maxItems?: number | undefined;
2371
+ }>;
2372
+ required?: string[] | undefined;
2373
+ additionalProperties?: false | undefined;
2374
+ };
2375
+ uiHints?: Record<string, {
2376
+ order?: number | undefined;
2377
+ label?: string | Record<string, string> | undefined;
2378
+ help?: string | Record<string, string> | undefined;
2379
+ placeholder?: string | Record<string, string> | undefined;
2380
+ advanced?: boolean | undefined;
2381
+ sensitive?: boolean | undefined;
2382
+ }> | undefined;
2383
+ } | undefined;
2384
+ runtime?: "node" | "python" | undefined;
2385
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
2386
+ egress?: string[] | undefined;
2387
+ migrationsDir?: string | undefined;
2388
+ compatibilityRepairs?: {
2389
+ table: string;
2390
+ id: string;
2391
+ sqlFile: string;
2392
+ column: string;
2393
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
2394
+ }[] | undefined;
2395
+ healthPath?: string | undefined;
2396
+ limits?: {
2397
+ memoryMb?: number | undefined;
2398
+ cpuMs?: number | undefined;
2399
+ requestTimeoutMs?: number | undefined;
2400
+ } | undefined;
2401
+ publicRoutes?: {
2402
+ path: string;
2403
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2404
+ }[] | undefined;
2405
+ } | undefined;
2406
+ claw?: {
2407
+ dir?: string | undefined;
2408
+ hooks?: {
2409
+ allowPromptInjection?: boolean | undefined;
2410
+ allowConversationAccess?: boolean | undefined;
2411
+ } | undefined;
2412
+ } | undefined;
2413
+ publicFrontend?: {
2414
+ dir?: string | undefined;
2415
+ } | undefined;
2416
+ };
2417
+ icon?: string | undefined;
2418
+ description?: string | Record<string, string> | undefined;
2419
+ author?: string | undefined;
2420
+ homepage?: string | undefined;
2421
+ category?: string | undefined;
2422
+ tags?: string[] | undefined;
2423
+ hostApiRange?: string | undefined;
2424
+ declares?: {
2425
+ database?: boolean | undefined;
2426
+ storage?: boolean | undefined;
2427
+ events?: boolean | undefined;
2428
+ notifications?: boolean | undefined;
2429
+ } | undefined;
2430
+ permissions?: {
2431
+ required?: string[] | undefined;
2432
+ } | undefined;
2433
+ access?: {
2434
+ catalog: string;
2435
+ } | undefined;
2436
+ audit?: {
2437
+ tools?: Record<string, {
2438
+ target?: string | undefined;
2439
+ title?: string | Record<string, string> | undefined;
2440
+ category?: "message" | "search" | "read" | "write" | "browse" | "exec" | "knowledge" | "memory" | "schedule" | "delegate" | "document" | "plugin" | undefined;
2441
+ risk?: "low" | "medium" | "high" | undefined;
2442
+ dataClasses?: string[] | undefined;
2443
+ }> | undefined;
2444
+ } | undefined;
2445
+ agentTemplates?: {
2446
+ key: string;
2447
+ entry: string;
2448
+ icon?: string | undefined;
2449
+ }[] | undefined;
2450
+ workDelegation?: {
2451
+ allowedAvatarRoles: string[];
2452
+ settingsRoute?: string | undefined;
2453
+ summary?: string | Record<string, string> | undefined;
2454
+ privacyPolicyUrl?: string | undefined;
2455
+ conversationCapture?: boolean | undefined;
2456
+ } | undefined;
2457
+ conversationRecordRoutes?: {
2458
+ path: string;
2459
+ entity: string;
2460
+ contextQuery?: string | undefined;
2461
+ labelFields?: string[] | undefined;
2462
+ }[] | undefined;
2463
+ agentReadiness?: {
2464
+ path: string;
2465
+ } | undefined;
2466
+ }>, {
2467
+ id: string;
2468
+ manifestVersion: 1;
2469
+ version: string;
2470
+ displayName: string | Record<string, string>;
2471
+ scope: "avatar" | "tenant";
2472
+ parts: {
2473
+ frontend?: {
2474
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
2475
+ dir?: string | undefined;
2476
+ entry?: string | undefined;
2477
+ i18nDir?: string | undefined;
2478
+ nav?: {
2479
+ key: string;
2480
+ labelKey: string;
2481
+ path?: string | undefined;
2482
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
2483
+ order?: number | undefined;
2484
+ }[] | undefined;
2485
+ config?: {
2486
+ schema: {
2487
+ type: "object";
2488
+ properties: Record<string, {
2489
+ type: "string" | "number" | "boolean" | "integer" | "array";
2490
+ minimum?: number | undefined;
2491
+ maximum?: number | undefined;
2492
+ minLength?: number | undefined;
2493
+ maxLength?: number | undefined;
2494
+ title?: string | undefined;
2495
+ description?: string | undefined;
2496
+ default?: unknown;
2497
+ enum?: (string | number)[] | undefined;
2498
+ pattern?: string | undefined;
2499
+ format?: "email" | "uri" | undefined;
2500
+ items?: {
2501
+ type: "string";
2502
+ enum?: string[] | undefined;
2503
+ } | undefined;
2504
+ maxItems?: number | undefined;
2505
+ }>;
2506
+ required?: string[] | undefined;
2507
+ additionalProperties?: false | undefined;
2508
+ };
2509
+ uiHints?: Record<string, {
2510
+ order?: number | undefined;
2511
+ label?: string | Record<string, string> | undefined;
2512
+ help?: string | Record<string, string> | undefined;
2513
+ placeholder?: string | Record<string, string> | undefined;
2514
+ advanced?: boolean | undefined;
2515
+ sensitive?: boolean | undefined;
2516
+ }> | undefined;
2517
+ } | undefined;
2518
+ } | undefined;
2519
+ backend?: {
2520
+ dir?: string | undefined;
2521
+ entry?: string | undefined;
2522
+ config?: {
2523
+ schema: {
2524
+ type: "object";
2525
+ properties: Record<string, {
2526
+ type: "string" | "number" | "boolean" | "integer" | "array";
2527
+ minimum?: number | undefined;
2528
+ maximum?: number | undefined;
2529
+ minLength?: number | undefined;
2530
+ maxLength?: number | undefined;
2531
+ title?: string | undefined;
2532
+ description?: string | undefined;
2533
+ default?: unknown;
2534
+ enum?: (string | number)[] | undefined;
2535
+ pattern?: string | undefined;
2536
+ format?: "email" | "uri" | undefined;
2537
+ items?: {
2538
+ type: "string";
2539
+ enum?: string[] | undefined;
2540
+ } | undefined;
2541
+ maxItems?: number | undefined;
2542
+ }>;
2543
+ required?: string[] | undefined;
2544
+ additionalProperties?: false | undefined;
2545
+ };
2546
+ uiHints?: Record<string, {
2547
+ order?: number | undefined;
2548
+ label?: string | Record<string, string> | undefined;
2549
+ help?: string | Record<string, string> | undefined;
2550
+ placeholder?: string | Record<string, string> | undefined;
2551
+ advanced?: boolean | undefined;
2552
+ sensitive?: boolean | undefined;
2553
+ }> | undefined;
2554
+ } | undefined;
2555
+ runtime?: "node" | "python" | undefined;
2556
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
2557
+ egress?: string[] | undefined;
2558
+ migrationsDir?: string | undefined;
2559
+ compatibilityRepairs?: {
2560
+ table: string;
2561
+ id: string;
2562
+ sqlFile: string;
2563
+ column: string;
2564
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
2565
+ }[] | undefined;
2566
+ healthPath?: string | undefined;
2567
+ limits?: {
2568
+ memoryMb?: number | undefined;
2569
+ cpuMs?: number | undefined;
2570
+ requestTimeoutMs?: number | undefined;
2571
+ } | undefined;
2572
+ publicRoutes?: {
2573
+ path: string;
2574
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2575
+ }[] | undefined;
2576
+ } | undefined;
2577
+ claw?: {
2578
+ dir?: string | undefined;
2579
+ hooks?: {
2580
+ allowPromptInjection?: boolean | undefined;
2581
+ allowConversationAccess?: boolean | undefined;
2582
+ } | undefined;
2583
+ } | undefined;
2584
+ publicFrontend?: {
2585
+ dir?: string | undefined;
2586
+ } | undefined;
2587
+ };
2588
+ icon?: string | undefined;
2589
+ description?: string | Record<string, string> | undefined;
2590
+ author?: string | undefined;
2591
+ homepage?: string | undefined;
2592
+ category?: string | undefined;
2593
+ tags?: string[] | undefined;
2594
+ hostApiRange?: string | undefined;
2595
+ declares?: {
2596
+ database?: boolean | undefined;
2597
+ storage?: boolean | undefined;
2598
+ events?: boolean | undefined;
2599
+ notifications?: boolean | undefined;
2600
+ } | undefined;
2601
+ permissions?: {
2602
+ required?: string[] | undefined;
2603
+ } | undefined;
2604
+ access?: {
2605
+ catalog: string;
2606
+ } | undefined;
2607
+ audit?: {
2608
+ tools?: Record<string, {
2609
+ target?: string | undefined;
2610
+ title?: string | Record<string, string> | undefined;
2611
+ category?: "message" | "search" | "read" | "write" | "browse" | "exec" | "knowledge" | "memory" | "schedule" | "delegate" | "document" | "plugin" | undefined;
2612
+ risk?: "low" | "medium" | "high" | undefined;
2613
+ dataClasses?: string[] | undefined;
2614
+ }> | undefined;
2615
+ } | undefined;
2616
+ agentTemplates?: {
2617
+ key: string;
2618
+ entry: string;
2619
+ icon?: string | undefined;
2620
+ }[] | undefined;
2621
+ workDelegation?: {
2622
+ allowedAvatarRoles: string[];
2623
+ settingsRoute?: string | undefined;
2624
+ summary?: string | Record<string, string> | undefined;
2625
+ privacyPolicyUrl?: string | undefined;
2626
+ conversationCapture?: boolean | undefined;
2627
+ } | undefined;
2628
+ conversationRecordRoutes?: {
2629
+ path: string;
2630
+ entity: string;
2631
+ contextQuery?: string | undefined;
2632
+ labelFields?: string[] | undefined;
2633
+ }[] | undefined;
2634
+ agentReadiness?: {
2635
+ path: string;
2636
+ } | undefined;
2637
+ }, {
2638
+ id: string;
2639
+ manifestVersion: 1;
2640
+ version: string;
2641
+ displayName: string | Record<string, string>;
2642
+ scope: "avatar" | "tenant";
2643
+ parts: {
2644
+ frontend?: {
2645
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
2646
+ dir?: string | undefined;
2647
+ entry?: string | undefined;
2648
+ i18nDir?: string | undefined;
2649
+ nav?: {
2650
+ key: string;
2651
+ labelKey: string;
2652
+ path?: string | undefined;
2653
+ icon?: "key" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "calendar" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "database" | "file-text" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "link" | "list-todo" | "mail" | "map-pin" | "message-square" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "search" | "settings" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "table" | "tag" | "target" | "trending-up" | "truck" | "users" | "wallet" | "workflow" | "wrench" | "zap" | undefined;
2654
+ order?: number | undefined;
2655
+ }[] | undefined;
2656
+ config?: {
2657
+ schema: {
2658
+ type: "object";
2659
+ properties: Record<string, {
2660
+ type: "string" | "number" | "boolean" | "integer" | "array";
2661
+ minimum?: number | undefined;
2662
+ maximum?: number | undefined;
2663
+ minLength?: number | undefined;
2664
+ maxLength?: number | undefined;
2665
+ title?: string | undefined;
2666
+ description?: string | undefined;
2667
+ default?: unknown;
2668
+ enum?: (string | number)[] | undefined;
2669
+ pattern?: string | undefined;
2670
+ format?: "email" | "uri" | undefined;
2671
+ items?: {
2672
+ type: "string";
2673
+ enum?: string[] | undefined;
2674
+ } | undefined;
2675
+ maxItems?: number | undefined;
2676
+ }>;
2677
+ required?: string[] | undefined;
2678
+ additionalProperties?: false | undefined;
2679
+ };
2680
+ uiHints?: Record<string, {
2681
+ order?: number | undefined;
2682
+ label?: string | Record<string, string> | undefined;
2683
+ help?: string | Record<string, string> | undefined;
2684
+ placeholder?: string | Record<string, string> | undefined;
2685
+ advanced?: boolean | undefined;
2686
+ sensitive?: boolean | undefined;
2687
+ }> | undefined;
2688
+ } | undefined;
2689
+ } | undefined;
2690
+ backend?: {
2691
+ dir?: string | undefined;
2692
+ entry?: string | undefined;
2693
+ config?: {
2694
+ schema: {
2695
+ type: "object";
2696
+ properties: Record<string, {
2697
+ type: "string" | "number" | "boolean" | "integer" | "array";
2698
+ minimum?: number | undefined;
2699
+ maximum?: number | undefined;
2700
+ minLength?: number | undefined;
2701
+ maxLength?: number | undefined;
2702
+ title?: string | undefined;
2703
+ description?: string | undefined;
2704
+ default?: unknown;
2705
+ enum?: (string | number)[] | undefined;
2706
+ pattern?: string | undefined;
2707
+ format?: "email" | "uri" | undefined;
2708
+ items?: {
2709
+ type: "string";
2710
+ enum?: string[] | undefined;
2711
+ } | undefined;
2712
+ maxItems?: number | undefined;
2713
+ }>;
2714
+ required?: string[] | undefined;
2715
+ additionalProperties?: false | undefined;
2716
+ };
2717
+ uiHints?: Record<string, {
2718
+ order?: number | undefined;
2719
+ label?: string | Record<string, string> | undefined;
2720
+ help?: string | Record<string, string> | undefined;
2721
+ placeholder?: string | Record<string, string> | undefined;
2722
+ advanced?: boolean | undefined;
2723
+ sensitive?: boolean | undefined;
2724
+ }> | undefined;
2725
+ } | undefined;
2726
+ runtime?: "node" | "python" | undefined;
2727
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
2728
+ egress?: string[] | undefined;
2729
+ migrationsDir?: string | undefined;
2730
+ compatibilityRepairs?: {
2731
+ table: string;
2732
+ id: string;
2733
+ sqlFile: string;
2734
+ column: string;
2735
+ postgresType: "bigint" | "boolean" | "integer" | "text" | "jsonb";
2736
+ }[] | undefined;
2737
+ healthPath?: string | undefined;
2738
+ limits?: {
2739
+ memoryMb?: number | undefined;
2740
+ cpuMs?: number | undefined;
2741
+ requestTimeoutMs?: number | undefined;
2742
+ } | undefined;
2743
+ publicRoutes?: {
2744
+ path: string;
2745
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2746
+ }[] | undefined;
2747
+ } | undefined;
2748
+ claw?: {
2749
+ dir?: string | undefined;
2750
+ hooks?: {
2751
+ allowPromptInjection?: boolean | undefined;
2752
+ allowConversationAccess?: boolean | undefined;
2753
+ } | undefined;
2754
+ } | undefined;
2755
+ publicFrontend?: {
2756
+ dir?: string | undefined;
2757
+ } | undefined;
2758
+ };
2759
+ icon?: string | undefined;
2760
+ description?: string | Record<string, string> | undefined;
2761
+ author?: string | undefined;
2762
+ homepage?: string | undefined;
2763
+ category?: string | undefined;
2764
+ tags?: string[] | undefined;
2765
+ hostApiRange?: string | undefined;
2766
+ declares?: {
2767
+ database?: boolean | undefined;
2768
+ storage?: boolean | undefined;
2769
+ events?: boolean | undefined;
2770
+ notifications?: boolean | undefined;
2771
+ } | undefined;
2772
+ permissions?: {
2773
+ required?: string[] | undefined;
2774
+ } | undefined;
2775
+ access?: {
2776
+ catalog: string;
2777
+ } | undefined;
2778
+ audit?: {
2779
+ tools?: Record<string, {
2780
+ target?: string | undefined;
2781
+ title?: string | Record<string, string> | undefined;
2782
+ category?: "message" | "search" | "read" | "write" | "browse" | "exec" | "knowledge" | "memory" | "schedule" | "delegate" | "document" | "plugin" | undefined;
2783
+ risk?: "low" | "medium" | "high" | undefined;
2784
+ dataClasses?: string[] | undefined;
2785
+ }> | undefined;
2786
+ } | undefined;
2787
+ agentTemplates?: {
2788
+ key: string;
2789
+ entry: string;
2790
+ icon?: string | undefined;
2791
+ }[] | undefined;
2792
+ workDelegation?: {
2793
+ allowedAvatarRoles: string[];
2794
+ settingsRoute?: string | undefined;
2795
+ summary?: string | Record<string, string> | undefined;
2796
+ privacyPolicyUrl?: string | undefined;
2797
+ conversationCapture?: boolean | undefined;
2798
+ } | undefined;
2799
+ conversationRecordRoutes?: {
2800
+ path: string;
2801
+ entity: string;
2802
+ contextQuery?: string | undefined;
2803
+ labelFields?: string[] | undefined;
2804
+ }[] | undefined;
2805
+ agentReadiness?: {
2806
+ path: string;
2807
+ } | undefined;
2808
+ }>;
2809
+ type ParsedTegoPluginManifest = z.infer<typeof tegoPluginManifestSchema>;
2810
+ interface PluginManifestParseResult {
2811
+ ok: boolean;
2812
+ manifest?: TegoPluginManifest;
2813
+ /** Human-readable `field: message` lines, ready to show in the upload UI. */
2814
+ errors: string[];
2815
+ }
2816
+ /**
2817
+ * Validate a parsed JSON value as a plugin manifest.
2818
+ *
2819
+ * Returns errors instead of throwing: the upload path shows every problem at
2820
+ * once, and a plugin author fixing five fields should not need five uploads.
2821
+ */
2822
+ declare function parseTegoPluginManifest(value: unknown): PluginManifestParseResult;
2823
+
2824
+ export { type LockedRequirement, PYTHON_LOCK_FILENAME, PYTHON_RUNNER_VERSION, PYTHON_WHEELS_DIR, type ParsedTegoPluginManifest, type ParsedWheelFilename, type PluginAccessCatalogResult, type PluginManifestParseResult, type VendoredWheel, checkPluginAccessCatalog, checkPythonVendoring, normalizePackageName, parseRequirementsLock, parseTegoPluginManifest, parseWheelFilename, tegoPluginManifestSchema };