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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
+ storage?: boolean | undefined;
113
+ database?: boolean | undefined;
114
+ events?: boolean | undefined;
115
+ notifications?: boolean | undefined;
116
+ }, {
117
+ storage?: boolean | undefined;
118
+ database?: 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
+ order?: number | undefined;
139
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
140
+ }, {
141
+ key: string;
142
+ labelKey: string;
143
+ path?: string | undefined;
144
+ order?: number | undefined;
145
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | 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
+ description?: string | undefined;
176
+ minimum?: number | undefined;
177
+ maximum?: number | undefined;
178
+ title?: string | undefined;
179
+ default?: unknown;
180
+ minLength?: number | undefined;
181
+ maxLength?: number | undefined;
182
+ pattern?: string | undefined;
183
+ format?: "email" | "uri" | undefined;
184
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
193
+ minimum?: number | undefined;
194
+ maximum?: number | undefined;
195
+ title?: string | undefined;
196
+ default?: unknown;
197
+ minLength?: number | undefined;
198
+ maxLength?: number | undefined;
199
+ pattern?: string | undefined;
200
+ format?: "email" | "uri" | undefined;
201
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
210
+ minimum?: number | undefined;
211
+ maximum?: number | undefined;
212
+ title?: string | undefined;
213
+ default?: unknown;
214
+ minLength?: number | undefined;
215
+ maxLength?: number | undefined;
216
+ pattern?: string | undefined;
217
+ format?: "email" | "uri" | undefined;
218
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
227
+ minimum?: number | undefined;
228
+ maximum?: number | undefined;
229
+ title?: string | undefined;
230
+ default?: unknown;
231
+ minLength?: number | undefined;
232
+ maxLength?: number | undefined;
233
+ pattern?: string | undefined;
234
+ format?: "email" | "uri" | undefined;
235
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
249
+ minimum?: number | undefined;
250
+ maximum?: number | undefined;
251
+ title?: string | undefined;
252
+ default?: unknown;
253
+ minLength?: number | undefined;
254
+ maxLength?: number | undefined;
255
+ pattern?: string | undefined;
256
+ format?: "email" | "uri" | undefined;
257
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
271
+ minimum?: number | undefined;
272
+ maximum?: number | undefined;
273
+ title?: string | undefined;
274
+ default?: unknown;
275
+ minLength?: number | undefined;
276
+ maxLength?: number | undefined;
277
+ pattern?: string | undefined;
278
+ format?: "email" | "uri" | undefined;
279
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
298
+ placeholder?: string | Record<string, string> | undefined;
299
+ order?: number | undefined;
300
+ help?: string | Record<string, string> | undefined;
301
+ advanced?: boolean | undefined;
302
+ sensitive?: boolean | undefined;
303
+ }, {
304
+ label?: string | Record<string, string> | undefined;
305
+ placeholder?: string | Record<string, string> | undefined;
306
+ order?: number | undefined;
307
+ help?: 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
+ description?: string | undefined;
317
+ minimum?: number | undefined;
318
+ maximum?: number | undefined;
319
+ title?: string | undefined;
320
+ default?: unknown;
321
+ minLength?: number | undefined;
322
+ maxLength?: number | undefined;
323
+ pattern?: string | undefined;
324
+ format?: "email" | "uri" | undefined;
325
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
337
+ placeholder?: string | Record<string, string> | undefined;
338
+ order?: number | undefined;
339
+ help?: 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
+ description?: string | undefined;
349
+ minimum?: number | undefined;
350
+ maximum?: number | undefined;
351
+ title?: string | undefined;
352
+ default?: unknown;
353
+ minLength?: number | undefined;
354
+ maxLength?: number | undefined;
355
+ pattern?: string | undefined;
356
+ format?: "email" | "uri" | undefined;
357
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
369
+ placeholder?: string | Record<string, string> | undefined;
370
+ order?: number | undefined;
371
+ help?: 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
+ description?: string | undefined;
381
+ minimum?: number | undefined;
382
+ maximum?: number | undefined;
383
+ title?: string | undefined;
384
+ default?: unknown;
385
+ minLength?: number | undefined;
386
+ maxLength?: number | undefined;
387
+ pattern?: string | undefined;
388
+ format?: "email" | "uri" | undefined;
389
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
401
+ placeholder?: string | Record<string, string> | undefined;
402
+ order?: number | undefined;
403
+ help?: 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
+ description?: string | undefined;
413
+ minimum?: number | undefined;
414
+ maximum?: number | undefined;
415
+ title?: string | undefined;
416
+ default?: unknown;
417
+ minLength?: number | undefined;
418
+ maxLength?: number | undefined;
419
+ pattern?: string | undefined;
420
+ format?: "email" | "uri" | undefined;
421
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
433
+ placeholder?: string | Record<string, string> | undefined;
434
+ order?: number | undefined;
435
+ help?: string | Record<string, string> | undefined;
436
+ advanced?: boolean | undefined;
437
+ sensitive?: boolean | undefined;
438
+ }> | undefined;
439
+ }>>;
440
+ }, "strict", z.ZodTypeAny, {
441
+ config?: {
442
+ schema: {
443
+ type: "object";
444
+ properties: Record<string, {
445
+ type: "string" | "number" | "boolean" | "integer" | "array";
446
+ description?: string | undefined;
447
+ minimum?: number | undefined;
448
+ maximum?: number | undefined;
449
+ title?: string | undefined;
450
+ default?: unknown;
451
+ minLength?: number | undefined;
452
+ maxLength?: number | undefined;
453
+ pattern?: string | undefined;
454
+ format?: "email" | "uri" | undefined;
455
+ enum?: (string | number)[] | undefined;
456
+ items?: {
457
+ type: "string";
458
+ enum?: string[] | undefined;
459
+ } | undefined;
460
+ maxItems?: number | undefined;
461
+ }>;
462
+ required?: string[] | undefined;
463
+ additionalProperties?: false | undefined;
464
+ };
465
+ uiHints?: Record<string, {
466
+ label?: string | Record<string, string> | undefined;
467
+ placeholder?: string | Record<string, string> | undefined;
468
+ order?: number | undefined;
469
+ help?: string | Record<string, string> | undefined;
470
+ advanced?: boolean | undefined;
471
+ sensitive?: boolean | undefined;
472
+ }> | undefined;
473
+ } | undefined;
474
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
475
+ entry?: string | undefined;
476
+ dir?: string | undefined;
477
+ i18nDir?: string | undefined;
478
+ nav?: {
479
+ key: string;
480
+ labelKey: string;
481
+ path?: string | undefined;
482
+ order?: number | undefined;
483
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
484
+ }[] | undefined;
485
+ }, {
486
+ config?: {
487
+ schema: {
488
+ type: "object";
489
+ properties: Record<string, {
490
+ type: "string" | "number" | "boolean" | "integer" | "array";
491
+ description?: string | undefined;
492
+ minimum?: number | undefined;
493
+ maximum?: number | undefined;
494
+ title?: string | undefined;
495
+ default?: unknown;
496
+ minLength?: number | undefined;
497
+ maxLength?: number | undefined;
498
+ pattern?: string | undefined;
499
+ format?: "email" | "uri" | undefined;
500
+ enum?: (string | number)[] | undefined;
501
+ items?: {
502
+ type: "string";
503
+ enum?: string[] | undefined;
504
+ } | undefined;
505
+ maxItems?: number | undefined;
506
+ }>;
507
+ required?: string[] | undefined;
508
+ additionalProperties?: false | undefined;
509
+ };
510
+ uiHints?: Record<string, {
511
+ label?: string | Record<string, string> | undefined;
512
+ placeholder?: string | Record<string, string> | undefined;
513
+ order?: number | undefined;
514
+ help?: string | Record<string, string> | undefined;
515
+ advanced?: boolean | undefined;
516
+ sensitive?: boolean | undefined;
517
+ }> | undefined;
518
+ } | undefined;
519
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
520
+ entry?: string | undefined;
521
+ dir?: string | undefined;
522
+ i18nDir?: string | undefined;
523
+ nav?: {
524
+ key: string;
525
+ labelKey: string;
526
+ path?: string | undefined;
527
+ order?: number | undefined;
528
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
529
+ }[] | undefined;
530
+ }>, {
531
+ config?: {
532
+ schema: {
533
+ type: "object";
534
+ properties: Record<string, {
535
+ type: "string" | "number" | "boolean" | "integer" | "array";
536
+ description?: string | undefined;
537
+ minimum?: number | undefined;
538
+ maximum?: number | undefined;
539
+ title?: string | undefined;
540
+ default?: unknown;
541
+ minLength?: number | undefined;
542
+ maxLength?: number | undefined;
543
+ pattern?: string | undefined;
544
+ format?: "email" | "uri" | undefined;
545
+ enum?: (string | number)[] | undefined;
546
+ items?: {
547
+ type: "string";
548
+ enum?: string[] | undefined;
549
+ } | undefined;
550
+ maxItems?: number | undefined;
551
+ }>;
552
+ required?: string[] | undefined;
553
+ additionalProperties?: false | undefined;
554
+ };
555
+ uiHints?: Record<string, {
556
+ label?: string | Record<string, string> | undefined;
557
+ placeholder?: string | Record<string, string> | undefined;
558
+ order?: number | undefined;
559
+ help?: string | Record<string, string> | undefined;
560
+ advanced?: boolean | undefined;
561
+ sensitive?: boolean | undefined;
562
+ }> | undefined;
563
+ } | undefined;
564
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
565
+ entry?: string | undefined;
566
+ dir?: string | undefined;
567
+ i18nDir?: string | undefined;
568
+ nav?: {
569
+ key: string;
570
+ labelKey: string;
571
+ path?: string | undefined;
572
+ order?: number | undefined;
573
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
574
+ }[] | undefined;
575
+ }, {
576
+ config?: {
577
+ schema: {
578
+ type: "object";
579
+ properties: Record<string, {
580
+ type: "string" | "number" | "boolean" | "integer" | "array";
581
+ description?: string | undefined;
582
+ minimum?: number | undefined;
583
+ maximum?: number | undefined;
584
+ title?: string | undefined;
585
+ default?: unknown;
586
+ minLength?: number | undefined;
587
+ maxLength?: number | undefined;
588
+ pattern?: string | undefined;
589
+ format?: "email" | "uri" | undefined;
590
+ enum?: (string | number)[] | undefined;
591
+ items?: {
592
+ type: "string";
593
+ enum?: string[] | undefined;
594
+ } | undefined;
595
+ maxItems?: number | undefined;
596
+ }>;
597
+ required?: string[] | undefined;
598
+ additionalProperties?: false | undefined;
599
+ };
600
+ uiHints?: Record<string, {
601
+ label?: string | Record<string, string> | undefined;
602
+ placeholder?: string | Record<string, string> | undefined;
603
+ order?: number | undefined;
604
+ help?: string | Record<string, string> | undefined;
605
+ advanced?: boolean | undefined;
606
+ sensitive?: boolean | undefined;
607
+ }> | undefined;
608
+ } | undefined;
609
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
610
+ entry?: string | undefined;
611
+ dir?: string | undefined;
612
+ i18nDir?: string | undefined;
613
+ nav?: {
614
+ key: string;
615
+ labelKey: string;
616
+ path?: string | undefined;
617
+ order?: number | undefined;
618
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
619
+ }[] | undefined;
620
+ }>, {
621
+ config?: {
622
+ schema: {
623
+ type: "object";
624
+ properties: Record<string, {
625
+ type: "string" | "number" | "boolean" | "integer" | "array";
626
+ description?: string | undefined;
627
+ minimum?: number | undefined;
628
+ maximum?: number | undefined;
629
+ title?: string | undefined;
630
+ default?: unknown;
631
+ minLength?: number | undefined;
632
+ maxLength?: number | undefined;
633
+ pattern?: string | undefined;
634
+ format?: "email" | "uri" | undefined;
635
+ enum?: (string | number)[] | undefined;
636
+ items?: {
637
+ type: "string";
638
+ enum?: string[] | undefined;
639
+ } | undefined;
640
+ maxItems?: number | undefined;
641
+ }>;
642
+ required?: string[] | undefined;
643
+ additionalProperties?: false | undefined;
644
+ };
645
+ uiHints?: Record<string, {
646
+ label?: string | Record<string, string> | undefined;
647
+ placeholder?: string | Record<string, string> | undefined;
648
+ order?: number | undefined;
649
+ help?: string | Record<string, string> | undefined;
650
+ advanced?: boolean | undefined;
651
+ sensitive?: boolean | undefined;
652
+ }> | undefined;
653
+ } | undefined;
654
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
655
+ entry?: string | undefined;
656
+ dir?: string | undefined;
657
+ i18nDir?: string | undefined;
658
+ nav?: {
659
+ key: string;
660
+ labelKey: string;
661
+ path?: string | undefined;
662
+ order?: number | undefined;
663
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
664
+ }[] | undefined;
665
+ }, {
666
+ config?: {
667
+ schema: {
668
+ type: "object";
669
+ properties: Record<string, {
670
+ type: "string" | "number" | "boolean" | "integer" | "array";
671
+ description?: string | undefined;
672
+ minimum?: number | undefined;
673
+ maximum?: number | undefined;
674
+ title?: string | undefined;
675
+ default?: unknown;
676
+ minLength?: number | undefined;
677
+ maxLength?: number | undefined;
678
+ pattern?: string | undefined;
679
+ format?: "email" | "uri" | undefined;
680
+ enum?: (string | number)[] | undefined;
681
+ items?: {
682
+ type: "string";
683
+ enum?: string[] | undefined;
684
+ } | undefined;
685
+ maxItems?: number | undefined;
686
+ }>;
687
+ required?: string[] | undefined;
688
+ additionalProperties?: false | undefined;
689
+ };
690
+ uiHints?: Record<string, {
691
+ label?: string | Record<string, string> | undefined;
692
+ placeholder?: string | Record<string, string> | undefined;
693
+ order?: number | undefined;
694
+ help?: string | Record<string, string> | undefined;
695
+ advanced?: boolean | undefined;
696
+ sensitive?: boolean | undefined;
697
+ }> | undefined;
698
+ } | undefined;
699
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
700
+ entry?: string | undefined;
701
+ dir?: string | undefined;
702
+ i18nDir?: string | undefined;
703
+ nav?: {
704
+ key: string;
705
+ labelKey: string;
706
+ path?: string | undefined;
707
+ order?: number | undefined;
708
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | 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
+ id: string;
726
+ table: string;
727
+ column: string;
728
+ sqlFile: string;
729
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
730
+ }, {
731
+ id: string;
732
+ table: string;
733
+ column: string;
734
+ sqlFile: string;
735
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
736
+ }>, "many">, {
737
+ id: string;
738
+ table: string;
739
+ column: string;
740
+ sqlFile: string;
741
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
742
+ }[], {
743
+ id: string;
744
+ table: string;
745
+ column: string;
746
+ sqlFile: string;
747
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
769
+ }, {
770
+ path: string;
771
+ method: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
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
+ description?: string | undefined;
802
+ minimum?: number | undefined;
803
+ maximum?: number | undefined;
804
+ title?: string | undefined;
805
+ default?: unknown;
806
+ minLength?: number | undefined;
807
+ maxLength?: number | undefined;
808
+ pattern?: string | undefined;
809
+ format?: "email" | "uri" | undefined;
810
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
819
+ minimum?: number | undefined;
820
+ maximum?: number | undefined;
821
+ title?: string | undefined;
822
+ default?: unknown;
823
+ minLength?: number | undefined;
824
+ maxLength?: number | undefined;
825
+ pattern?: string | undefined;
826
+ format?: "email" | "uri" | undefined;
827
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
836
+ minimum?: number | undefined;
837
+ maximum?: number | undefined;
838
+ title?: string | undefined;
839
+ default?: unknown;
840
+ minLength?: number | undefined;
841
+ maxLength?: number | undefined;
842
+ pattern?: string | undefined;
843
+ format?: "email" | "uri" | undefined;
844
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
853
+ minimum?: number | undefined;
854
+ maximum?: number | undefined;
855
+ title?: string | undefined;
856
+ default?: unknown;
857
+ minLength?: number | undefined;
858
+ maxLength?: number | undefined;
859
+ pattern?: string | undefined;
860
+ format?: "email" | "uri" | undefined;
861
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
875
+ minimum?: number | undefined;
876
+ maximum?: number | undefined;
877
+ title?: string | undefined;
878
+ default?: unknown;
879
+ minLength?: number | undefined;
880
+ maxLength?: number | undefined;
881
+ pattern?: string | undefined;
882
+ format?: "email" | "uri" | undefined;
883
+ enum?: (string | number)[] | 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
+ description?: string | undefined;
897
+ minimum?: number | undefined;
898
+ maximum?: number | undefined;
899
+ title?: string | undefined;
900
+ default?: unknown;
901
+ minLength?: number | undefined;
902
+ maxLength?: number | undefined;
903
+ pattern?: string | undefined;
904
+ format?: "email" | "uri" | undefined;
905
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
924
+ placeholder?: string | Record<string, string> | undefined;
925
+ order?: number | undefined;
926
+ help?: string | Record<string, string> | undefined;
927
+ advanced?: boolean | undefined;
928
+ sensitive?: boolean | undefined;
929
+ }, {
930
+ label?: string | Record<string, string> | undefined;
931
+ placeholder?: string | Record<string, string> | undefined;
932
+ order?: number | undefined;
933
+ help?: 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
+ description?: string | undefined;
943
+ minimum?: number | undefined;
944
+ maximum?: number | undefined;
945
+ title?: string | undefined;
946
+ default?: unknown;
947
+ minLength?: number | undefined;
948
+ maxLength?: number | undefined;
949
+ pattern?: string | undefined;
950
+ format?: "email" | "uri" | undefined;
951
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
963
+ placeholder?: string | Record<string, string> | undefined;
964
+ order?: number | undefined;
965
+ help?: 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
+ description?: string | undefined;
975
+ minimum?: number | undefined;
976
+ maximum?: number | undefined;
977
+ title?: string | undefined;
978
+ default?: unknown;
979
+ minLength?: number | undefined;
980
+ maxLength?: number | undefined;
981
+ pattern?: string | undefined;
982
+ format?: "email" | "uri" | undefined;
983
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
995
+ placeholder?: string | Record<string, string> | undefined;
996
+ order?: number | undefined;
997
+ help?: 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
+ description?: string | undefined;
1007
+ minimum?: number | undefined;
1008
+ maximum?: number | undefined;
1009
+ title?: string | undefined;
1010
+ default?: unknown;
1011
+ minLength?: number | undefined;
1012
+ maxLength?: number | undefined;
1013
+ pattern?: string | undefined;
1014
+ format?: "email" | "uri" | undefined;
1015
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
1027
+ placeholder?: string | Record<string, string> | undefined;
1028
+ order?: number | undefined;
1029
+ help?: 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
+ description?: string | undefined;
1039
+ minimum?: number | undefined;
1040
+ maximum?: number | undefined;
1041
+ title?: string | undefined;
1042
+ default?: unknown;
1043
+ minLength?: number | undefined;
1044
+ maxLength?: number | undefined;
1045
+ pattern?: string | undefined;
1046
+ format?: "email" | "uri" | undefined;
1047
+ enum?: (string | number)[] | 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
+ label?: string | Record<string, string> | undefined;
1059
+ placeholder?: string | Record<string, string> | undefined;
1060
+ order?: number | undefined;
1061
+ help?: string | Record<string, string> | undefined;
1062
+ advanced?: boolean | undefined;
1063
+ sensitive?: boolean | undefined;
1064
+ }> | undefined;
1065
+ }>>;
1066
+ }, "strict", z.ZodTypeAny, {
1067
+ config?: {
1068
+ schema: {
1069
+ type: "object";
1070
+ properties: Record<string, {
1071
+ type: "string" | "number" | "boolean" | "integer" | "array";
1072
+ description?: string | undefined;
1073
+ minimum?: number | undefined;
1074
+ maximum?: number | undefined;
1075
+ title?: string | undefined;
1076
+ default?: unknown;
1077
+ minLength?: number | undefined;
1078
+ maxLength?: number | undefined;
1079
+ pattern?: string | undefined;
1080
+ format?: "email" | "uri" | undefined;
1081
+ enum?: (string | number)[] | undefined;
1082
+ items?: {
1083
+ type: "string";
1084
+ enum?: string[] | undefined;
1085
+ } | undefined;
1086
+ maxItems?: number | undefined;
1087
+ }>;
1088
+ required?: string[] | undefined;
1089
+ additionalProperties?: false | undefined;
1090
+ };
1091
+ uiHints?: Record<string, {
1092
+ label?: string | Record<string, string> | undefined;
1093
+ placeholder?: string | Record<string, string> | undefined;
1094
+ order?: number | undefined;
1095
+ help?: string | Record<string, string> | undefined;
1096
+ advanced?: boolean | undefined;
1097
+ sensitive?: boolean | undefined;
1098
+ }> | undefined;
1099
+ } | undefined;
1100
+ entry?: string | undefined;
1101
+ compatibilityRepairs?: {
1102
+ id: string;
1103
+ table: string;
1104
+ column: string;
1105
+ sqlFile: string;
1106
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1107
+ }[] | undefined;
1108
+ dir?: string | undefined;
1109
+ runtime?: "python" | "node" | undefined;
1110
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1111
+ egress?: string[] | undefined;
1112
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
1122
+ }[] | undefined;
1123
+ }, {
1124
+ config?: {
1125
+ schema: {
1126
+ type: "object";
1127
+ properties: Record<string, {
1128
+ type: "string" | "number" | "boolean" | "integer" | "array";
1129
+ description?: string | undefined;
1130
+ minimum?: number | undefined;
1131
+ maximum?: number | undefined;
1132
+ title?: string | undefined;
1133
+ default?: unknown;
1134
+ minLength?: number | undefined;
1135
+ maxLength?: number | undefined;
1136
+ pattern?: string | undefined;
1137
+ format?: "email" | "uri" | undefined;
1138
+ enum?: (string | number)[] | undefined;
1139
+ items?: {
1140
+ type: "string";
1141
+ enum?: string[] | undefined;
1142
+ } | undefined;
1143
+ maxItems?: number | undefined;
1144
+ }>;
1145
+ required?: string[] | undefined;
1146
+ additionalProperties?: false | undefined;
1147
+ };
1148
+ uiHints?: Record<string, {
1149
+ label?: string | Record<string, string> | undefined;
1150
+ placeholder?: string | Record<string, string> | undefined;
1151
+ order?: number | undefined;
1152
+ help?: string | Record<string, string> | undefined;
1153
+ advanced?: boolean | undefined;
1154
+ sensitive?: boolean | undefined;
1155
+ }> | undefined;
1156
+ } | undefined;
1157
+ entry?: string | undefined;
1158
+ compatibilityRepairs?: {
1159
+ id: string;
1160
+ table: string;
1161
+ column: string;
1162
+ sqlFile: string;
1163
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1164
+ }[] | undefined;
1165
+ dir?: string | undefined;
1166
+ runtime?: "python" | "node" | undefined;
1167
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1168
+ egress?: string[] | undefined;
1169
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
1179
+ }[] | undefined;
1180
+ }>, {
1181
+ config?: {
1182
+ schema: {
1183
+ type: "object";
1184
+ properties: Record<string, {
1185
+ type: "string" | "number" | "boolean" | "integer" | "array";
1186
+ description?: string | undefined;
1187
+ minimum?: number | undefined;
1188
+ maximum?: number | undefined;
1189
+ title?: string | undefined;
1190
+ default?: unknown;
1191
+ minLength?: number | undefined;
1192
+ maxLength?: number | undefined;
1193
+ pattern?: string | undefined;
1194
+ format?: "email" | "uri" | undefined;
1195
+ enum?: (string | number)[] | undefined;
1196
+ items?: {
1197
+ type: "string";
1198
+ enum?: string[] | undefined;
1199
+ } | undefined;
1200
+ maxItems?: number | undefined;
1201
+ }>;
1202
+ required?: string[] | undefined;
1203
+ additionalProperties?: false | undefined;
1204
+ };
1205
+ uiHints?: Record<string, {
1206
+ label?: string | Record<string, string> | undefined;
1207
+ placeholder?: string | Record<string, string> | undefined;
1208
+ order?: number | undefined;
1209
+ help?: string | Record<string, string> | undefined;
1210
+ advanced?: boolean | undefined;
1211
+ sensitive?: boolean | undefined;
1212
+ }> | undefined;
1213
+ } | undefined;
1214
+ entry?: string | undefined;
1215
+ compatibilityRepairs?: {
1216
+ id: string;
1217
+ table: string;
1218
+ column: string;
1219
+ sqlFile: string;
1220
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1221
+ }[] | undefined;
1222
+ dir?: string | undefined;
1223
+ runtime?: "python" | "node" | undefined;
1224
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1225
+ egress?: string[] | undefined;
1226
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
1236
+ }[] | undefined;
1237
+ }, {
1238
+ config?: {
1239
+ schema: {
1240
+ type: "object";
1241
+ properties: Record<string, {
1242
+ type: "string" | "number" | "boolean" | "integer" | "array";
1243
+ description?: string | undefined;
1244
+ minimum?: number | undefined;
1245
+ maximum?: number | undefined;
1246
+ title?: string | undefined;
1247
+ default?: unknown;
1248
+ minLength?: number | undefined;
1249
+ maxLength?: number | undefined;
1250
+ pattern?: string | undefined;
1251
+ format?: "email" | "uri" | undefined;
1252
+ enum?: (string | number)[] | undefined;
1253
+ items?: {
1254
+ type: "string";
1255
+ enum?: string[] | undefined;
1256
+ } | undefined;
1257
+ maxItems?: number | undefined;
1258
+ }>;
1259
+ required?: string[] | undefined;
1260
+ additionalProperties?: false | undefined;
1261
+ };
1262
+ uiHints?: Record<string, {
1263
+ label?: string | Record<string, string> | undefined;
1264
+ placeholder?: string | Record<string, string> | undefined;
1265
+ order?: number | undefined;
1266
+ help?: string | Record<string, string> | undefined;
1267
+ advanced?: boolean | undefined;
1268
+ sensitive?: boolean | undefined;
1269
+ }> | undefined;
1270
+ } | undefined;
1271
+ entry?: string | undefined;
1272
+ compatibilityRepairs?: {
1273
+ id: string;
1274
+ table: string;
1275
+ column: string;
1276
+ sqlFile: string;
1277
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1278
+ }[] | undefined;
1279
+ dir?: string | undefined;
1280
+ runtime?: "python" | "node" | undefined;
1281
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1282
+ egress?: string[] | undefined;
1283
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
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
+ hooks?: {
1309
+ allowPromptInjection?: boolean | undefined;
1310
+ allowConversationAccess?: boolean | undefined;
1311
+ } | undefined;
1312
+ dir?: string | undefined;
1313
+ }, {
1314
+ hooks?: {
1315
+ allowPromptInjection?: boolean | undefined;
1316
+ allowConversationAccess?: boolean | undefined;
1317
+ } | undefined;
1318
+ dir?: string | 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
+ config?: {
1330
+ schema: {
1331
+ type: "object";
1332
+ properties: Record<string, {
1333
+ type: "string" | "number" | "boolean" | "integer" | "array";
1334
+ description?: string | undefined;
1335
+ minimum?: number | undefined;
1336
+ maximum?: number | undefined;
1337
+ title?: string | undefined;
1338
+ default?: unknown;
1339
+ minLength?: number | undefined;
1340
+ maxLength?: number | undefined;
1341
+ pattern?: string | undefined;
1342
+ format?: "email" | "uri" | undefined;
1343
+ enum?: (string | number)[] | undefined;
1344
+ items?: {
1345
+ type: "string";
1346
+ enum?: string[] | undefined;
1347
+ } | undefined;
1348
+ maxItems?: number | undefined;
1349
+ }>;
1350
+ required?: string[] | undefined;
1351
+ additionalProperties?: false | undefined;
1352
+ };
1353
+ uiHints?: Record<string, {
1354
+ label?: string | Record<string, string> | undefined;
1355
+ placeholder?: string | Record<string, string> | undefined;
1356
+ order?: number | undefined;
1357
+ help?: string | Record<string, string> | undefined;
1358
+ advanced?: boolean | undefined;
1359
+ sensitive?: boolean | undefined;
1360
+ }> | undefined;
1361
+ } | undefined;
1362
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1363
+ entry?: string | undefined;
1364
+ dir?: string | undefined;
1365
+ i18nDir?: string | undefined;
1366
+ nav?: {
1367
+ key: string;
1368
+ labelKey: string;
1369
+ path?: string | undefined;
1370
+ order?: number | undefined;
1371
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1372
+ }[] | undefined;
1373
+ } | undefined;
1374
+ backend?: {
1375
+ config?: {
1376
+ schema: {
1377
+ type: "object";
1378
+ properties: Record<string, {
1379
+ type: "string" | "number" | "boolean" | "integer" | "array";
1380
+ description?: string | undefined;
1381
+ minimum?: number | undefined;
1382
+ maximum?: number | undefined;
1383
+ title?: string | undefined;
1384
+ default?: unknown;
1385
+ minLength?: number | undefined;
1386
+ maxLength?: number | undefined;
1387
+ pattern?: string | undefined;
1388
+ format?: "email" | "uri" | undefined;
1389
+ enum?: (string | number)[] | undefined;
1390
+ items?: {
1391
+ type: "string";
1392
+ enum?: string[] | undefined;
1393
+ } | undefined;
1394
+ maxItems?: number | undefined;
1395
+ }>;
1396
+ required?: string[] | undefined;
1397
+ additionalProperties?: false | undefined;
1398
+ };
1399
+ uiHints?: Record<string, {
1400
+ label?: string | Record<string, string> | undefined;
1401
+ placeholder?: string | Record<string, string> | undefined;
1402
+ order?: number | undefined;
1403
+ help?: string | Record<string, string> | undefined;
1404
+ advanced?: boolean | undefined;
1405
+ sensitive?: boolean | undefined;
1406
+ }> | undefined;
1407
+ } | undefined;
1408
+ entry?: string | undefined;
1409
+ compatibilityRepairs?: {
1410
+ id: string;
1411
+ table: string;
1412
+ column: string;
1413
+ sqlFile: string;
1414
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1415
+ }[] | undefined;
1416
+ dir?: string | undefined;
1417
+ runtime?: "python" | "node" | undefined;
1418
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1419
+ egress?: string[] | undefined;
1420
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
1430
+ }[] | undefined;
1431
+ } | undefined;
1432
+ claw?: {
1433
+ hooks?: {
1434
+ allowPromptInjection?: boolean | undefined;
1435
+ allowConversationAccess?: boolean | undefined;
1436
+ } | undefined;
1437
+ dir?: string | undefined;
1438
+ } | undefined;
1439
+ publicFrontend?: {
1440
+ dir?: string | undefined;
1441
+ } | undefined;
1442
+ }, {
1443
+ frontend?: {
1444
+ config?: {
1445
+ schema: {
1446
+ type: "object";
1447
+ properties: Record<string, {
1448
+ type: "string" | "number" | "boolean" | "integer" | "array";
1449
+ description?: string | undefined;
1450
+ minimum?: number | undefined;
1451
+ maximum?: number | undefined;
1452
+ title?: string | undefined;
1453
+ default?: unknown;
1454
+ minLength?: number | undefined;
1455
+ maxLength?: number | undefined;
1456
+ pattern?: string | undefined;
1457
+ format?: "email" | "uri" | undefined;
1458
+ enum?: (string | number)[] | undefined;
1459
+ items?: {
1460
+ type: "string";
1461
+ enum?: string[] | undefined;
1462
+ } | undefined;
1463
+ maxItems?: number | undefined;
1464
+ }>;
1465
+ required?: string[] | undefined;
1466
+ additionalProperties?: false | undefined;
1467
+ };
1468
+ uiHints?: Record<string, {
1469
+ label?: string | Record<string, string> | undefined;
1470
+ placeholder?: string | Record<string, string> | undefined;
1471
+ order?: number | undefined;
1472
+ help?: string | Record<string, string> | undefined;
1473
+ advanced?: boolean | undefined;
1474
+ sensitive?: boolean | undefined;
1475
+ }> | undefined;
1476
+ } | undefined;
1477
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1478
+ entry?: string | undefined;
1479
+ dir?: string | undefined;
1480
+ i18nDir?: string | undefined;
1481
+ nav?: {
1482
+ key: string;
1483
+ labelKey: string;
1484
+ path?: string | undefined;
1485
+ order?: number | undefined;
1486
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1487
+ }[] | undefined;
1488
+ } | undefined;
1489
+ backend?: {
1490
+ config?: {
1491
+ schema: {
1492
+ type: "object";
1493
+ properties: Record<string, {
1494
+ type: "string" | "number" | "boolean" | "integer" | "array";
1495
+ description?: string | undefined;
1496
+ minimum?: number | undefined;
1497
+ maximum?: number | undefined;
1498
+ title?: string | undefined;
1499
+ default?: unknown;
1500
+ minLength?: number | undefined;
1501
+ maxLength?: number | undefined;
1502
+ pattern?: string | undefined;
1503
+ format?: "email" | "uri" | undefined;
1504
+ enum?: (string | number)[] | undefined;
1505
+ items?: {
1506
+ type: "string";
1507
+ enum?: string[] | undefined;
1508
+ } | undefined;
1509
+ maxItems?: number | undefined;
1510
+ }>;
1511
+ required?: string[] | undefined;
1512
+ additionalProperties?: false | undefined;
1513
+ };
1514
+ uiHints?: Record<string, {
1515
+ label?: string | Record<string, string> | undefined;
1516
+ placeholder?: string | Record<string, string> | undefined;
1517
+ order?: number | undefined;
1518
+ help?: string | Record<string, string> | undefined;
1519
+ advanced?: boolean | undefined;
1520
+ sensitive?: boolean | undefined;
1521
+ }> | undefined;
1522
+ } | undefined;
1523
+ entry?: string | undefined;
1524
+ compatibilityRepairs?: {
1525
+ id: string;
1526
+ table: string;
1527
+ column: string;
1528
+ sqlFile: string;
1529
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1530
+ }[] | undefined;
1531
+ dir?: string | undefined;
1532
+ runtime?: "python" | "node" | undefined;
1533
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1534
+ egress?: string[] | undefined;
1535
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
1545
+ }[] | undefined;
1546
+ } | undefined;
1547
+ claw?: {
1548
+ hooks?: {
1549
+ allowPromptInjection?: boolean | undefined;
1550
+ allowConversationAccess?: boolean | undefined;
1551
+ } | undefined;
1552
+ dir?: string | undefined;
1553
+ } | undefined;
1554
+ publicFrontend?: {
1555
+ dir?: string | undefined;
1556
+ } | undefined;
1557
+ }>, {
1558
+ frontend?: {
1559
+ config?: {
1560
+ schema: {
1561
+ type: "object";
1562
+ properties: Record<string, {
1563
+ type: "string" | "number" | "boolean" | "integer" | "array";
1564
+ description?: string | undefined;
1565
+ minimum?: number | undefined;
1566
+ maximum?: number | undefined;
1567
+ title?: string | undefined;
1568
+ default?: unknown;
1569
+ minLength?: number | undefined;
1570
+ maxLength?: number | undefined;
1571
+ pattern?: string | undefined;
1572
+ format?: "email" | "uri" | undefined;
1573
+ enum?: (string | number)[] | undefined;
1574
+ items?: {
1575
+ type: "string";
1576
+ enum?: string[] | undefined;
1577
+ } | undefined;
1578
+ maxItems?: number | undefined;
1579
+ }>;
1580
+ required?: string[] | undefined;
1581
+ additionalProperties?: false | undefined;
1582
+ };
1583
+ uiHints?: Record<string, {
1584
+ label?: string | Record<string, string> | undefined;
1585
+ placeholder?: string | Record<string, string> | undefined;
1586
+ order?: number | undefined;
1587
+ help?: string | Record<string, string> | undefined;
1588
+ advanced?: boolean | undefined;
1589
+ sensitive?: boolean | undefined;
1590
+ }> | undefined;
1591
+ } | undefined;
1592
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1593
+ entry?: string | undefined;
1594
+ dir?: string | undefined;
1595
+ i18nDir?: string | undefined;
1596
+ nav?: {
1597
+ key: string;
1598
+ labelKey: string;
1599
+ path?: string | undefined;
1600
+ order?: number | undefined;
1601
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1602
+ }[] | undefined;
1603
+ } | undefined;
1604
+ backend?: {
1605
+ config?: {
1606
+ schema: {
1607
+ type: "object";
1608
+ properties: Record<string, {
1609
+ type: "string" | "number" | "boolean" | "integer" | "array";
1610
+ description?: string | undefined;
1611
+ minimum?: number | undefined;
1612
+ maximum?: number | undefined;
1613
+ title?: string | undefined;
1614
+ default?: unknown;
1615
+ minLength?: number | undefined;
1616
+ maxLength?: number | undefined;
1617
+ pattern?: string | undefined;
1618
+ format?: "email" | "uri" | undefined;
1619
+ enum?: (string | number)[] | undefined;
1620
+ items?: {
1621
+ type: "string";
1622
+ enum?: string[] | undefined;
1623
+ } | undefined;
1624
+ maxItems?: number | undefined;
1625
+ }>;
1626
+ required?: string[] | undefined;
1627
+ additionalProperties?: false | undefined;
1628
+ };
1629
+ uiHints?: Record<string, {
1630
+ label?: string | Record<string, string> | undefined;
1631
+ placeholder?: string | Record<string, string> | undefined;
1632
+ order?: number | undefined;
1633
+ help?: string | Record<string, string> | undefined;
1634
+ advanced?: boolean | undefined;
1635
+ sensitive?: boolean | undefined;
1636
+ }> | undefined;
1637
+ } | undefined;
1638
+ entry?: string | undefined;
1639
+ compatibilityRepairs?: {
1640
+ id: string;
1641
+ table: string;
1642
+ column: string;
1643
+ sqlFile: string;
1644
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1645
+ }[] | undefined;
1646
+ dir?: string | undefined;
1647
+ runtime?: "python" | "node" | undefined;
1648
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1649
+ egress?: string[] | undefined;
1650
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
1660
+ }[] | undefined;
1661
+ } | undefined;
1662
+ claw?: {
1663
+ hooks?: {
1664
+ allowPromptInjection?: boolean | undefined;
1665
+ allowConversationAccess?: boolean | undefined;
1666
+ } | undefined;
1667
+ dir?: string | undefined;
1668
+ } | undefined;
1669
+ publicFrontend?: {
1670
+ dir?: string | undefined;
1671
+ } | undefined;
1672
+ }, {
1673
+ frontend?: {
1674
+ config?: {
1675
+ schema: {
1676
+ type: "object";
1677
+ properties: Record<string, {
1678
+ type: "string" | "number" | "boolean" | "integer" | "array";
1679
+ description?: string | undefined;
1680
+ minimum?: number | undefined;
1681
+ maximum?: number | undefined;
1682
+ title?: string | undefined;
1683
+ default?: unknown;
1684
+ minLength?: number | undefined;
1685
+ maxLength?: number | undefined;
1686
+ pattern?: string | undefined;
1687
+ format?: "email" | "uri" | undefined;
1688
+ enum?: (string | number)[] | undefined;
1689
+ items?: {
1690
+ type: "string";
1691
+ enum?: string[] | undefined;
1692
+ } | undefined;
1693
+ maxItems?: number | undefined;
1694
+ }>;
1695
+ required?: string[] | undefined;
1696
+ additionalProperties?: false | undefined;
1697
+ };
1698
+ uiHints?: Record<string, {
1699
+ label?: string | Record<string, string> | undefined;
1700
+ placeholder?: string | Record<string, string> | undefined;
1701
+ order?: number | undefined;
1702
+ help?: string | Record<string, string> | undefined;
1703
+ advanced?: boolean | undefined;
1704
+ sensitive?: boolean | undefined;
1705
+ }> | undefined;
1706
+ } | undefined;
1707
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1708
+ entry?: string | undefined;
1709
+ dir?: string | undefined;
1710
+ i18nDir?: string | undefined;
1711
+ nav?: {
1712
+ key: string;
1713
+ labelKey: string;
1714
+ path?: string | undefined;
1715
+ order?: number | undefined;
1716
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1717
+ }[] | undefined;
1718
+ } | undefined;
1719
+ backend?: {
1720
+ config?: {
1721
+ schema: {
1722
+ type: "object";
1723
+ properties: Record<string, {
1724
+ type: "string" | "number" | "boolean" | "integer" | "array";
1725
+ description?: string | undefined;
1726
+ minimum?: number | undefined;
1727
+ maximum?: number | undefined;
1728
+ title?: string | undefined;
1729
+ default?: unknown;
1730
+ minLength?: number | undefined;
1731
+ maxLength?: number | undefined;
1732
+ pattern?: string | undefined;
1733
+ format?: "email" | "uri" | undefined;
1734
+ enum?: (string | number)[] | undefined;
1735
+ items?: {
1736
+ type: "string";
1737
+ enum?: string[] | undefined;
1738
+ } | undefined;
1739
+ maxItems?: number | undefined;
1740
+ }>;
1741
+ required?: string[] | undefined;
1742
+ additionalProperties?: false | undefined;
1743
+ };
1744
+ uiHints?: Record<string, {
1745
+ label?: string | Record<string, string> | undefined;
1746
+ placeholder?: string | Record<string, string> | undefined;
1747
+ order?: number | undefined;
1748
+ help?: string | Record<string, string> | undefined;
1749
+ advanced?: boolean | undefined;
1750
+ sensitive?: boolean | undefined;
1751
+ }> | undefined;
1752
+ } | undefined;
1753
+ entry?: string | undefined;
1754
+ compatibilityRepairs?: {
1755
+ id: string;
1756
+ table: string;
1757
+ column: string;
1758
+ sqlFile: string;
1759
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1760
+ }[] | undefined;
1761
+ dir?: string | undefined;
1762
+ runtime?: "python" | "node" | undefined;
1763
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1764
+ egress?: string[] | undefined;
1765
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
1775
+ }[] | undefined;
1776
+ } | undefined;
1777
+ claw?: {
1778
+ hooks?: {
1779
+ allowPromptInjection?: boolean | undefined;
1780
+ allowConversationAccess?: boolean | undefined;
1781
+ } | undefined;
1782
+ dir?: string | undefined;
1783
+ } | undefined;
1784
+ publicFrontend?: {
1785
+ dir?: string | undefined;
1786
+ } | undefined;
1787
+ }>, {
1788
+ frontend?: {
1789
+ config?: {
1790
+ schema: {
1791
+ type: "object";
1792
+ properties: Record<string, {
1793
+ type: "string" | "number" | "boolean" | "integer" | "array";
1794
+ description?: string | undefined;
1795
+ minimum?: number | undefined;
1796
+ maximum?: number | undefined;
1797
+ title?: string | undefined;
1798
+ default?: unknown;
1799
+ minLength?: number | undefined;
1800
+ maxLength?: number | undefined;
1801
+ pattern?: string | undefined;
1802
+ format?: "email" | "uri" | undefined;
1803
+ enum?: (string | number)[] | undefined;
1804
+ items?: {
1805
+ type: "string";
1806
+ enum?: string[] | undefined;
1807
+ } | undefined;
1808
+ maxItems?: number | undefined;
1809
+ }>;
1810
+ required?: string[] | undefined;
1811
+ additionalProperties?: false | undefined;
1812
+ };
1813
+ uiHints?: Record<string, {
1814
+ label?: string | Record<string, string> | undefined;
1815
+ placeholder?: string | Record<string, string> | undefined;
1816
+ order?: number | undefined;
1817
+ help?: string | Record<string, string> | undefined;
1818
+ advanced?: boolean | undefined;
1819
+ sensitive?: boolean | undefined;
1820
+ }> | undefined;
1821
+ } | undefined;
1822
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1823
+ entry?: string | undefined;
1824
+ dir?: string | undefined;
1825
+ i18nDir?: string | undefined;
1826
+ nav?: {
1827
+ key: string;
1828
+ labelKey: string;
1829
+ path?: string | undefined;
1830
+ order?: number | undefined;
1831
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1832
+ }[] | undefined;
1833
+ } | undefined;
1834
+ backend?: {
1835
+ config?: {
1836
+ schema: {
1837
+ type: "object";
1838
+ properties: Record<string, {
1839
+ type: "string" | "number" | "boolean" | "integer" | "array";
1840
+ description?: string | undefined;
1841
+ minimum?: number | undefined;
1842
+ maximum?: number | undefined;
1843
+ title?: string | undefined;
1844
+ default?: unknown;
1845
+ minLength?: number | undefined;
1846
+ maxLength?: number | undefined;
1847
+ pattern?: string | undefined;
1848
+ format?: "email" | "uri" | undefined;
1849
+ enum?: (string | number)[] | undefined;
1850
+ items?: {
1851
+ type: "string";
1852
+ enum?: string[] | undefined;
1853
+ } | undefined;
1854
+ maxItems?: number | undefined;
1855
+ }>;
1856
+ required?: string[] | undefined;
1857
+ additionalProperties?: false | undefined;
1858
+ };
1859
+ uiHints?: Record<string, {
1860
+ label?: string | Record<string, string> | undefined;
1861
+ placeholder?: string | Record<string, string> | undefined;
1862
+ order?: number | undefined;
1863
+ help?: string | Record<string, string> | undefined;
1864
+ advanced?: boolean | undefined;
1865
+ sensitive?: boolean | undefined;
1866
+ }> | undefined;
1867
+ } | undefined;
1868
+ entry?: string | undefined;
1869
+ compatibilityRepairs?: {
1870
+ id: string;
1871
+ table: string;
1872
+ column: string;
1873
+ sqlFile: string;
1874
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1875
+ }[] | undefined;
1876
+ dir?: string | undefined;
1877
+ runtime?: "python" | "node" | undefined;
1878
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1879
+ egress?: string[] | undefined;
1880
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
1890
+ }[] | undefined;
1891
+ } | undefined;
1892
+ claw?: {
1893
+ hooks?: {
1894
+ allowPromptInjection?: boolean | undefined;
1895
+ allowConversationAccess?: boolean | undefined;
1896
+ } | undefined;
1897
+ dir?: string | undefined;
1898
+ } | undefined;
1899
+ publicFrontend?: {
1900
+ dir?: string | undefined;
1901
+ } | undefined;
1902
+ }, {
1903
+ frontend?: {
1904
+ config?: {
1905
+ schema: {
1906
+ type: "object";
1907
+ properties: Record<string, {
1908
+ type: "string" | "number" | "boolean" | "integer" | "array";
1909
+ description?: string | undefined;
1910
+ minimum?: number | undefined;
1911
+ maximum?: number | undefined;
1912
+ title?: string | undefined;
1913
+ default?: unknown;
1914
+ minLength?: number | undefined;
1915
+ maxLength?: number | undefined;
1916
+ pattern?: string | undefined;
1917
+ format?: "email" | "uri" | undefined;
1918
+ enum?: (string | number)[] | undefined;
1919
+ items?: {
1920
+ type: "string";
1921
+ enum?: string[] | undefined;
1922
+ } | undefined;
1923
+ maxItems?: number | undefined;
1924
+ }>;
1925
+ required?: string[] | undefined;
1926
+ additionalProperties?: false | undefined;
1927
+ };
1928
+ uiHints?: Record<string, {
1929
+ label?: string | Record<string, string> | undefined;
1930
+ placeholder?: string | Record<string, string> | undefined;
1931
+ order?: number | undefined;
1932
+ help?: string | Record<string, string> | undefined;
1933
+ advanced?: boolean | undefined;
1934
+ sensitive?: boolean | undefined;
1935
+ }> | undefined;
1936
+ } | undefined;
1937
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1938
+ entry?: string | undefined;
1939
+ dir?: string | undefined;
1940
+ i18nDir?: string | undefined;
1941
+ nav?: {
1942
+ key: string;
1943
+ labelKey: string;
1944
+ path?: string | undefined;
1945
+ order?: number | undefined;
1946
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
1947
+ }[] | undefined;
1948
+ } | undefined;
1949
+ backend?: {
1950
+ config?: {
1951
+ schema: {
1952
+ type: "object";
1953
+ properties: Record<string, {
1954
+ type: "string" | "number" | "boolean" | "integer" | "array";
1955
+ description?: string | undefined;
1956
+ minimum?: number | undefined;
1957
+ maximum?: number | undefined;
1958
+ title?: string | undefined;
1959
+ default?: unknown;
1960
+ minLength?: number | undefined;
1961
+ maxLength?: number | undefined;
1962
+ pattern?: string | undefined;
1963
+ format?: "email" | "uri" | undefined;
1964
+ enum?: (string | number)[] | undefined;
1965
+ items?: {
1966
+ type: "string";
1967
+ enum?: string[] | undefined;
1968
+ } | undefined;
1969
+ maxItems?: number | undefined;
1970
+ }>;
1971
+ required?: string[] | undefined;
1972
+ additionalProperties?: false | undefined;
1973
+ };
1974
+ uiHints?: Record<string, {
1975
+ label?: string | Record<string, string> | undefined;
1976
+ placeholder?: string | Record<string, string> | undefined;
1977
+ order?: number | undefined;
1978
+ help?: string | Record<string, string> | undefined;
1979
+ advanced?: boolean | undefined;
1980
+ sensitive?: boolean | undefined;
1981
+ }> | undefined;
1982
+ } | undefined;
1983
+ entry?: string | undefined;
1984
+ compatibilityRepairs?: {
1985
+ id: string;
1986
+ table: string;
1987
+ column: string;
1988
+ sqlFile: string;
1989
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
1990
+ }[] | undefined;
1991
+ dir?: string | undefined;
1992
+ runtime?: "python" | "node" | undefined;
1993
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
1994
+ egress?: string[] | undefined;
1995
+ migrationsDir?: string | 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: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
2005
+ }[] | undefined;
2006
+ } | undefined;
2007
+ claw?: {
2008
+ hooks?: {
2009
+ allowPromptInjection?: boolean | undefined;
2010
+ allowConversationAccess?: boolean | undefined;
2011
+ } | undefined;
2012
+ dir?: string | 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
+ title?: string | Record<string, string> | undefined;
2041
+ category?: "plugin" | "message" | "search" | "memory" | "document" | "read" | "write" | "knowledge" | "browse" | "exec" | "schedule" | "delegate" | undefined;
2042
+ target?: string | undefined;
2043
+ risk?: "low" | "medium" | "high" | undefined;
2044
+ dataClasses?: string[] | undefined;
2045
+ }, {
2046
+ title?: string | Record<string, string> | undefined;
2047
+ category?: "plugin" | "message" | "search" | "memory" | "document" | "read" | "write" | "knowledge" | "browse" | "exec" | "schedule" | "delegate" | undefined;
2048
+ target?: string | undefined;
2049
+ risk?: "low" | "medium" | "high" | undefined;
2050
+ dataClasses?: string[] | undefined;
2051
+ }>>>;
2052
+ }, "strict", z.ZodTypeAny, {
2053
+ tools?: Record<string, {
2054
+ title?: string | Record<string, string> | undefined;
2055
+ category?: "plugin" | "message" | "search" | "memory" | "document" | "read" | "write" | "knowledge" | "browse" | "exec" | "schedule" | "delegate" | undefined;
2056
+ target?: string | undefined;
2057
+ risk?: "low" | "medium" | "high" | undefined;
2058
+ dataClasses?: string[] | undefined;
2059
+ }> | undefined;
2060
+ }, {
2061
+ tools?: Record<string, {
2062
+ title?: string | Record<string, string> | undefined;
2063
+ category?: "plugin" | "message" | "search" | "memory" | "document" | "read" | "write" | "knowledge" | "browse" | "exec" | "schedule" | "delegate" | undefined;
2064
+ target?: string | 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
+ summary?: string | Record<string, string> | undefined;
2091
+ settingsRoute?: string | undefined;
2092
+ privacyPolicyUrl?: string | undefined;
2093
+ conversationCapture?: boolean | undefined;
2094
+ }, {
2095
+ allowedAvatarRoles: string[];
2096
+ summary?: string | Record<string, string> | undefined;
2097
+ settingsRoute?: 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
+ version: string;
2127
+ parts: {
2128
+ frontend?: {
2129
+ config?: {
2130
+ schema: {
2131
+ type: "object";
2132
+ properties: Record<string, {
2133
+ type: "string" | "number" | "boolean" | "integer" | "array";
2134
+ description?: string | undefined;
2135
+ minimum?: number | undefined;
2136
+ maximum?: number | undefined;
2137
+ title?: string | undefined;
2138
+ default?: unknown;
2139
+ minLength?: number | undefined;
2140
+ maxLength?: number | undefined;
2141
+ pattern?: string | undefined;
2142
+ format?: "email" | "uri" | undefined;
2143
+ enum?: (string | number)[] | undefined;
2144
+ items?: {
2145
+ type: "string";
2146
+ enum?: string[] | undefined;
2147
+ } | undefined;
2148
+ maxItems?: number | undefined;
2149
+ }>;
2150
+ required?: string[] | undefined;
2151
+ additionalProperties?: false | undefined;
2152
+ };
2153
+ uiHints?: Record<string, {
2154
+ label?: string | Record<string, string> | undefined;
2155
+ placeholder?: string | Record<string, string> | undefined;
2156
+ order?: number | undefined;
2157
+ help?: string | Record<string, string> | undefined;
2158
+ advanced?: boolean | undefined;
2159
+ sensitive?: boolean | undefined;
2160
+ }> | undefined;
2161
+ } | undefined;
2162
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
2163
+ entry?: string | undefined;
2164
+ dir?: string | undefined;
2165
+ i18nDir?: string | undefined;
2166
+ nav?: {
2167
+ key: string;
2168
+ labelKey: string;
2169
+ path?: string | undefined;
2170
+ order?: number | undefined;
2171
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
2172
+ }[] | undefined;
2173
+ } | undefined;
2174
+ backend?: {
2175
+ config?: {
2176
+ schema: {
2177
+ type: "object";
2178
+ properties: Record<string, {
2179
+ type: "string" | "number" | "boolean" | "integer" | "array";
2180
+ description?: string | undefined;
2181
+ minimum?: number | undefined;
2182
+ maximum?: number | undefined;
2183
+ title?: string | undefined;
2184
+ default?: unknown;
2185
+ minLength?: number | undefined;
2186
+ maxLength?: number | undefined;
2187
+ pattern?: string | undefined;
2188
+ format?: "email" | "uri" | undefined;
2189
+ enum?: (string | number)[] | undefined;
2190
+ items?: {
2191
+ type: "string";
2192
+ enum?: string[] | undefined;
2193
+ } | undefined;
2194
+ maxItems?: number | undefined;
2195
+ }>;
2196
+ required?: string[] | undefined;
2197
+ additionalProperties?: false | undefined;
2198
+ };
2199
+ uiHints?: Record<string, {
2200
+ label?: string | Record<string, string> | undefined;
2201
+ placeholder?: string | Record<string, string> | undefined;
2202
+ order?: number | undefined;
2203
+ help?: string | Record<string, string> | undefined;
2204
+ advanced?: boolean | undefined;
2205
+ sensitive?: boolean | undefined;
2206
+ }> | undefined;
2207
+ } | undefined;
2208
+ entry?: string | undefined;
2209
+ compatibilityRepairs?: {
2210
+ id: string;
2211
+ table: string;
2212
+ column: string;
2213
+ sqlFile: string;
2214
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
2215
+ }[] | undefined;
2216
+ dir?: string | undefined;
2217
+ runtime?: "python" | "node" | undefined;
2218
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
2219
+ egress?: string[] | undefined;
2220
+ migrationsDir?: string | undefined;
2221
+ healthPath?: string | undefined;
2222
+ limits?: {
2223
+ memoryMb?: number | undefined;
2224
+ cpuMs?: number | undefined;
2225
+ requestTimeoutMs?: number | undefined;
2226
+ } | undefined;
2227
+ publicRoutes?: {
2228
+ path: string;
2229
+ method: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
2230
+ }[] | undefined;
2231
+ } | undefined;
2232
+ claw?: {
2233
+ hooks?: {
2234
+ allowPromptInjection?: boolean | undefined;
2235
+ allowConversationAccess?: boolean | undefined;
2236
+ } | undefined;
2237
+ dir?: string | undefined;
2238
+ } | undefined;
2239
+ publicFrontend?: {
2240
+ dir?: string | undefined;
2241
+ } | undefined;
2242
+ };
2243
+ displayName: string | Record<string, string>;
2244
+ manifestVersion: 1;
2245
+ scope: "avatar" | "tenant";
2246
+ description?: string | Record<string, string> | undefined;
2247
+ author?: string | undefined;
2248
+ category?: string | undefined;
2249
+ tags?: string[] | undefined;
2250
+ homepage?: string | undefined;
2251
+ permissions?: {
2252
+ required?: string[] | undefined;
2253
+ } | undefined;
2254
+ icon?: string | undefined;
2255
+ hostApiRange?: string | undefined;
2256
+ declares?: {
2257
+ storage?: boolean | undefined;
2258
+ database?: boolean | undefined;
2259
+ events?: boolean | undefined;
2260
+ notifications?: boolean | undefined;
2261
+ } | undefined;
2262
+ access?: {
2263
+ catalog: string;
2264
+ } | undefined;
2265
+ audit?: {
2266
+ tools?: Record<string, {
2267
+ title?: string | Record<string, string> | undefined;
2268
+ category?: "plugin" | "message" | "search" | "memory" | "document" | "read" | "write" | "knowledge" | "browse" | "exec" | "schedule" | "delegate" | undefined;
2269
+ target?: string | 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
+ summary?: string | Record<string, string> | undefined;
2282
+ settingsRoute?: 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
+ version: string;
2298
+ parts: {
2299
+ frontend?: {
2300
+ config?: {
2301
+ schema: {
2302
+ type: "object";
2303
+ properties: Record<string, {
2304
+ type: "string" | "number" | "boolean" | "integer" | "array";
2305
+ description?: string | undefined;
2306
+ minimum?: number | undefined;
2307
+ maximum?: number | undefined;
2308
+ title?: string | undefined;
2309
+ default?: unknown;
2310
+ minLength?: number | undefined;
2311
+ maxLength?: number | undefined;
2312
+ pattern?: string | undefined;
2313
+ format?: "email" | "uri" | undefined;
2314
+ enum?: (string | number)[] | undefined;
2315
+ items?: {
2316
+ type: "string";
2317
+ enum?: string[] | undefined;
2318
+ } | undefined;
2319
+ maxItems?: number | undefined;
2320
+ }>;
2321
+ required?: string[] | undefined;
2322
+ additionalProperties?: false | undefined;
2323
+ };
2324
+ uiHints?: Record<string, {
2325
+ label?: string | Record<string, string> | undefined;
2326
+ placeholder?: string | Record<string, string> | undefined;
2327
+ order?: number | undefined;
2328
+ help?: string | Record<string, string> | undefined;
2329
+ advanced?: boolean | undefined;
2330
+ sensitive?: boolean | undefined;
2331
+ }> | undefined;
2332
+ } | undefined;
2333
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
2334
+ entry?: string | undefined;
2335
+ dir?: string | undefined;
2336
+ i18nDir?: string | undefined;
2337
+ nav?: {
2338
+ key: string;
2339
+ labelKey: string;
2340
+ path?: string | undefined;
2341
+ order?: number | undefined;
2342
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
2343
+ }[] | undefined;
2344
+ } | undefined;
2345
+ backend?: {
2346
+ config?: {
2347
+ schema: {
2348
+ type: "object";
2349
+ properties: Record<string, {
2350
+ type: "string" | "number" | "boolean" | "integer" | "array";
2351
+ description?: string | undefined;
2352
+ minimum?: number | undefined;
2353
+ maximum?: number | undefined;
2354
+ title?: string | undefined;
2355
+ default?: unknown;
2356
+ minLength?: number | undefined;
2357
+ maxLength?: number | undefined;
2358
+ pattern?: string | undefined;
2359
+ format?: "email" | "uri" | undefined;
2360
+ enum?: (string | number)[] | undefined;
2361
+ items?: {
2362
+ type: "string";
2363
+ enum?: string[] | undefined;
2364
+ } | undefined;
2365
+ maxItems?: number | undefined;
2366
+ }>;
2367
+ required?: string[] | undefined;
2368
+ additionalProperties?: false | undefined;
2369
+ };
2370
+ uiHints?: Record<string, {
2371
+ label?: string | Record<string, string> | undefined;
2372
+ placeholder?: string | Record<string, string> | undefined;
2373
+ order?: number | undefined;
2374
+ help?: string | Record<string, string> | undefined;
2375
+ advanced?: boolean | undefined;
2376
+ sensitive?: boolean | undefined;
2377
+ }> | undefined;
2378
+ } | undefined;
2379
+ entry?: string | undefined;
2380
+ compatibilityRepairs?: {
2381
+ id: string;
2382
+ table: string;
2383
+ column: string;
2384
+ sqlFile: string;
2385
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
2386
+ }[] | undefined;
2387
+ dir?: string | undefined;
2388
+ runtime?: "python" | "node" | undefined;
2389
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
2390
+ egress?: string[] | undefined;
2391
+ migrationsDir?: string | undefined;
2392
+ healthPath?: string | undefined;
2393
+ limits?: {
2394
+ memoryMb?: number | undefined;
2395
+ cpuMs?: number | undefined;
2396
+ requestTimeoutMs?: number | undefined;
2397
+ } | undefined;
2398
+ publicRoutes?: {
2399
+ path: string;
2400
+ method: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
2401
+ }[] | undefined;
2402
+ } | undefined;
2403
+ claw?: {
2404
+ hooks?: {
2405
+ allowPromptInjection?: boolean | undefined;
2406
+ allowConversationAccess?: boolean | undefined;
2407
+ } | undefined;
2408
+ dir?: string | undefined;
2409
+ } | undefined;
2410
+ publicFrontend?: {
2411
+ dir?: string | undefined;
2412
+ } | undefined;
2413
+ };
2414
+ displayName: string | Record<string, string>;
2415
+ manifestVersion: 1;
2416
+ scope: "avatar" | "tenant";
2417
+ description?: string | Record<string, string> | undefined;
2418
+ author?: string | undefined;
2419
+ category?: string | undefined;
2420
+ tags?: string[] | undefined;
2421
+ homepage?: string | undefined;
2422
+ permissions?: {
2423
+ required?: string[] | undefined;
2424
+ } | undefined;
2425
+ icon?: string | undefined;
2426
+ hostApiRange?: string | undefined;
2427
+ declares?: {
2428
+ storage?: boolean | undefined;
2429
+ database?: boolean | undefined;
2430
+ events?: boolean | undefined;
2431
+ notifications?: boolean | undefined;
2432
+ } | undefined;
2433
+ access?: {
2434
+ catalog: string;
2435
+ } | undefined;
2436
+ audit?: {
2437
+ tools?: Record<string, {
2438
+ title?: string | Record<string, string> | undefined;
2439
+ category?: "plugin" | "message" | "search" | "memory" | "document" | "read" | "write" | "knowledge" | "browse" | "exec" | "schedule" | "delegate" | undefined;
2440
+ target?: string | 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
+ summary?: string | Record<string, string> | undefined;
2453
+ settingsRoute?: 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
+ version: string;
2469
+ parts: {
2470
+ frontend?: {
2471
+ config?: {
2472
+ schema: {
2473
+ type: "object";
2474
+ properties: Record<string, {
2475
+ type: "string" | "number" | "boolean" | "integer" | "array";
2476
+ description?: string | undefined;
2477
+ minimum?: number | undefined;
2478
+ maximum?: number | undefined;
2479
+ title?: string | undefined;
2480
+ default?: unknown;
2481
+ minLength?: number | undefined;
2482
+ maxLength?: number | undefined;
2483
+ pattern?: string | undefined;
2484
+ format?: "email" | "uri" | undefined;
2485
+ enum?: (string | number)[] | undefined;
2486
+ items?: {
2487
+ type: "string";
2488
+ enum?: string[] | undefined;
2489
+ } | undefined;
2490
+ maxItems?: number | undefined;
2491
+ }>;
2492
+ required?: string[] | undefined;
2493
+ additionalProperties?: false | undefined;
2494
+ };
2495
+ uiHints?: Record<string, {
2496
+ label?: string | Record<string, string> | undefined;
2497
+ placeholder?: string | Record<string, string> | undefined;
2498
+ order?: number | undefined;
2499
+ help?: string | Record<string, string> | undefined;
2500
+ advanced?: boolean | undefined;
2501
+ sensitive?: boolean | undefined;
2502
+ }> | undefined;
2503
+ } | undefined;
2504
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
2505
+ entry?: string | undefined;
2506
+ dir?: string | undefined;
2507
+ i18nDir?: string | undefined;
2508
+ nav?: {
2509
+ key: string;
2510
+ labelKey: string;
2511
+ path?: string | undefined;
2512
+ order?: number | undefined;
2513
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
2514
+ }[] | undefined;
2515
+ } | undefined;
2516
+ backend?: {
2517
+ config?: {
2518
+ schema: {
2519
+ type: "object";
2520
+ properties: Record<string, {
2521
+ type: "string" | "number" | "boolean" | "integer" | "array";
2522
+ description?: string | undefined;
2523
+ minimum?: number | undefined;
2524
+ maximum?: number | undefined;
2525
+ title?: string | undefined;
2526
+ default?: unknown;
2527
+ minLength?: number | undefined;
2528
+ maxLength?: number | undefined;
2529
+ pattern?: string | undefined;
2530
+ format?: "email" | "uri" | undefined;
2531
+ enum?: (string | number)[] | undefined;
2532
+ items?: {
2533
+ type: "string";
2534
+ enum?: string[] | undefined;
2535
+ } | undefined;
2536
+ maxItems?: number | undefined;
2537
+ }>;
2538
+ required?: string[] | undefined;
2539
+ additionalProperties?: false | undefined;
2540
+ };
2541
+ uiHints?: Record<string, {
2542
+ label?: string | Record<string, string> | undefined;
2543
+ placeholder?: string | Record<string, string> | undefined;
2544
+ order?: number | undefined;
2545
+ help?: string | Record<string, string> | undefined;
2546
+ advanced?: boolean | undefined;
2547
+ sensitive?: boolean | undefined;
2548
+ }> | undefined;
2549
+ } | undefined;
2550
+ entry?: string | undefined;
2551
+ compatibilityRepairs?: {
2552
+ id: string;
2553
+ table: string;
2554
+ column: string;
2555
+ sqlFile: string;
2556
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
2557
+ }[] | undefined;
2558
+ dir?: string | undefined;
2559
+ runtime?: "python" | "node" | undefined;
2560
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
2561
+ egress?: string[] | undefined;
2562
+ migrationsDir?: string | undefined;
2563
+ healthPath?: string | undefined;
2564
+ limits?: {
2565
+ memoryMb?: number | undefined;
2566
+ cpuMs?: number | undefined;
2567
+ requestTimeoutMs?: number | undefined;
2568
+ } | undefined;
2569
+ publicRoutes?: {
2570
+ path: string;
2571
+ method: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
2572
+ }[] | undefined;
2573
+ } | undefined;
2574
+ claw?: {
2575
+ hooks?: {
2576
+ allowPromptInjection?: boolean | undefined;
2577
+ allowConversationAccess?: boolean | undefined;
2578
+ } | undefined;
2579
+ dir?: string | undefined;
2580
+ } | undefined;
2581
+ publicFrontend?: {
2582
+ dir?: string | undefined;
2583
+ } | undefined;
2584
+ };
2585
+ displayName: string | Record<string, string>;
2586
+ manifestVersion: 1;
2587
+ scope: "avatar" | "tenant";
2588
+ description?: string | Record<string, string> | undefined;
2589
+ author?: string | undefined;
2590
+ category?: string | undefined;
2591
+ tags?: string[] | undefined;
2592
+ homepage?: string | undefined;
2593
+ permissions?: {
2594
+ required?: string[] | undefined;
2595
+ } | undefined;
2596
+ icon?: string | undefined;
2597
+ hostApiRange?: string | undefined;
2598
+ declares?: {
2599
+ storage?: boolean | undefined;
2600
+ database?: boolean | undefined;
2601
+ events?: boolean | undefined;
2602
+ notifications?: boolean | undefined;
2603
+ } | undefined;
2604
+ access?: {
2605
+ catalog: string;
2606
+ } | undefined;
2607
+ audit?: {
2608
+ tools?: Record<string, {
2609
+ title?: string | Record<string, string> | undefined;
2610
+ category?: "plugin" | "message" | "search" | "memory" | "document" | "read" | "write" | "knowledge" | "browse" | "exec" | "schedule" | "delegate" | undefined;
2611
+ target?: string | 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
+ summary?: string | Record<string, string> | undefined;
2624
+ settingsRoute?: 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
+ version: string;
2640
+ parts: {
2641
+ frontend?: {
2642
+ config?: {
2643
+ schema: {
2644
+ type: "object";
2645
+ properties: Record<string, {
2646
+ type: "string" | "number" | "boolean" | "integer" | "array";
2647
+ description?: string | undefined;
2648
+ minimum?: number | undefined;
2649
+ maximum?: number | undefined;
2650
+ title?: string | undefined;
2651
+ default?: unknown;
2652
+ minLength?: number | undefined;
2653
+ maxLength?: number | undefined;
2654
+ pattern?: string | undefined;
2655
+ format?: "email" | "uri" | undefined;
2656
+ enum?: (string | number)[] | undefined;
2657
+ items?: {
2658
+ type: "string";
2659
+ enum?: string[] | undefined;
2660
+ } | undefined;
2661
+ maxItems?: number | undefined;
2662
+ }>;
2663
+ required?: string[] | undefined;
2664
+ additionalProperties?: false | undefined;
2665
+ };
2666
+ uiHints?: Record<string, {
2667
+ label?: string | Record<string, string> | undefined;
2668
+ placeholder?: string | Record<string, string> | undefined;
2669
+ order?: number | undefined;
2670
+ help?: string | Record<string, string> | undefined;
2671
+ advanced?: boolean | undefined;
2672
+ sensitive?: boolean | undefined;
2673
+ }> | undefined;
2674
+ } | undefined;
2675
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
2676
+ entry?: string | undefined;
2677
+ dir?: string | undefined;
2678
+ i18nDir?: string | undefined;
2679
+ nav?: {
2680
+ key: string;
2681
+ labelKey: string;
2682
+ path?: string | undefined;
2683
+ order?: number | undefined;
2684
+ icon?: "table" | "link" | "search" | "database" | "target" | "key" | "tag" | "zap" | "file-text" | "message-square" | "trending-up" | "settings" | "calendar" | "bar-chart" | "bell" | "bookmark" | "book-open" | "bot" | "briefcase" | "building" | "chart-pie" | "clipboard-list" | "clock" | "contact" | "credit-card" | "folder" | "globe" | "handshake" | "inbox" | "layers" | "layout-dashboard" | "library" | "list-todo" | "mail" | "map-pin" | "mic" | "package" | "phone" | "puzzle" | "receipt" | "shield" | "shopping-cart" | "sliders" | "sparkles" | "star" | "truck" | "users" | "wallet" | "workflow" | "wrench" | undefined;
2685
+ }[] | undefined;
2686
+ } | undefined;
2687
+ backend?: {
2688
+ config?: {
2689
+ schema: {
2690
+ type: "object";
2691
+ properties: Record<string, {
2692
+ type: "string" | "number" | "boolean" | "integer" | "array";
2693
+ description?: string | undefined;
2694
+ minimum?: number | undefined;
2695
+ maximum?: number | undefined;
2696
+ title?: string | undefined;
2697
+ default?: unknown;
2698
+ minLength?: number | undefined;
2699
+ maxLength?: number | undefined;
2700
+ pattern?: string | undefined;
2701
+ format?: "email" | "uri" | undefined;
2702
+ enum?: (string | number)[] | undefined;
2703
+ items?: {
2704
+ type: "string";
2705
+ enum?: string[] | undefined;
2706
+ } | undefined;
2707
+ maxItems?: number | undefined;
2708
+ }>;
2709
+ required?: string[] | undefined;
2710
+ additionalProperties?: false | undefined;
2711
+ };
2712
+ uiHints?: Record<string, {
2713
+ label?: string | Record<string, string> | undefined;
2714
+ placeholder?: string | Record<string, string> | undefined;
2715
+ order?: number | undefined;
2716
+ help?: string | Record<string, string> | undefined;
2717
+ advanced?: boolean | undefined;
2718
+ sensitive?: boolean | undefined;
2719
+ }> | undefined;
2720
+ } | undefined;
2721
+ entry?: string | undefined;
2722
+ compatibilityRepairs?: {
2723
+ id: string;
2724
+ table: string;
2725
+ column: string;
2726
+ sqlFile: string;
2727
+ postgresType: "bigint" | "boolean" | "text" | "integer" | "jsonb";
2728
+ }[] | undefined;
2729
+ dir?: string | undefined;
2730
+ runtime?: "python" | "node" | undefined;
2731
+ platforms?: ("linux/amd64" | "linux/arm64")[] | undefined;
2732
+ egress?: string[] | undefined;
2733
+ migrationsDir?: string | undefined;
2734
+ healthPath?: string | undefined;
2735
+ limits?: {
2736
+ memoryMb?: number | undefined;
2737
+ cpuMs?: number | undefined;
2738
+ requestTimeoutMs?: number | undefined;
2739
+ } | undefined;
2740
+ publicRoutes?: {
2741
+ path: string;
2742
+ method: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
2743
+ }[] | undefined;
2744
+ } | undefined;
2745
+ claw?: {
2746
+ hooks?: {
2747
+ allowPromptInjection?: boolean | undefined;
2748
+ allowConversationAccess?: boolean | undefined;
2749
+ } | undefined;
2750
+ dir?: string | undefined;
2751
+ } | undefined;
2752
+ publicFrontend?: {
2753
+ dir?: string | undefined;
2754
+ } | undefined;
2755
+ };
2756
+ displayName: string | Record<string, string>;
2757
+ manifestVersion: 1;
2758
+ scope: "avatar" | "tenant";
2759
+ description?: string | Record<string, string> | undefined;
2760
+ author?: string | undefined;
2761
+ category?: string | undefined;
2762
+ tags?: string[] | undefined;
2763
+ homepage?: string | undefined;
2764
+ permissions?: {
2765
+ required?: string[] | undefined;
2766
+ } | undefined;
2767
+ icon?: string | undefined;
2768
+ hostApiRange?: string | undefined;
2769
+ declares?: {
2770
+ storage?: boolean | undefined;
2771
+ database?: boolean | undefined;
2772
+ events?: boolean | undefined;
2773
+ notifications?: boolean | undefined;
2774
+ } | undefined;
2775
+ access?: {
2776
+ catalog: string;
2777
+ } | undefined;
2778
+ audit?: {
2779
+ tools?: Record<string, {
2780
+ title?: string | Record<string, string> | undefined;
2781
+ category?: "plugin" | "message" | "search" | "memory" | "document" | "read" | "write" | "knowledge" | "browse" | "exec" | "schedule" | "delegate" | undefined;
2782
+ target?: string | 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
+ summary?: string | Record<string, string> | undefined;
2795
+ settingsRoute?: 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 };