) {
+ const configSchema = z.object({
+ model: z.string(),
+ apiKey: z.string(),
+ })
+
+ return configSchema.parse(config)
+}
+
+async function findApiKey({
+ scope,
+ name,
+}: {
+ scope: ProviderApiKeysRepository
+ name: string
+}) {
+ const apiKeyResult = await scope.findByName(name)
+ if (apiKeyResult.error) throw apiKeyResult.error
+
+ return apiKeyResult.value!
+}
diff --git a/packages/web-ui/src/ds/molecules/Chat/Message/index.tsx b/packages/web-ui/src/ds/molecules/Chat/Message/index.tsx
index a1030e7ae..700212c79 100644
--- a/packages/web-ui/src/ds/molecules/Chat/Message/index.tsx
+++ b/packages/web-ui/src/ds/molecules/Chat/Message/index.tsx
@@ -29,7 +29,7 @@ const MessageVariants = {
export type MessageProps = {
role: string
- content: MessageContent[]
+ content: MessageContent[] | string
className?: string
variant?: keyof typeof MessageVariants
animatePulse?: boolean
@@ -54,18 +54,35 @@ export function Message({
- {content.map((c, contentIndex) =>
- c.value.split('\n').map((line, lineIndex) => (
-
+ ) : (
+ content.map((c, idx) => (
+
- {line}
-
- )),
+ value={c.value}
+ />
+ ))
)}
)
}
+
+const ContentValue = ({
+ index = 0,
+ color,
+ value,
+}: {
+ index?: number
+ color: TextColor
+ value: string
+}) => {
+ return value.split('\n').map((line, lineIndex) => (
+
+ {line}
+
+ ))
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 97b516ff5..522546f2b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -54,15 +54,24 @@ importers:
'@hono/node-server':
specifier: ^1.12.0
version: 1.12.0
+ '@hono/zod-validator':
+ specifier: ^0.2.2
+ version: 0.2.2(hono@4.5.3)(zod@3.23.8)
'@latitude-data/core':
specifier: workspace:^
version: link:../../packages/core
'@latitude-data/env':
specifier: workspace:^
version: link:../../packages/env
+ '@t3-oss/env-core':
+ specifier: ^0.10.1
+ version: 0.10.1(typescript@5.5.4)(zod@3.23.8)
hono:
specifier: ^4.5.3
version: 4.5.3
+ zod:
+ specifier: ^3.23.8
+ version: 3.23.8
devDependencies:
'@latitude-data/eslint-config':
specifier: workspace:^
@@ -255,6 +264,9 @@ importers:
packages/core:
dependencies:
+ '@ai-sdk/openai':
+ specifier: ^0.0.40
+ version: 0.0.40(zod@3.23.8)
'@latitude-data/compiler':
specifier: workspace:^
version: link:../compiler
@@ -264,6 +276,9 @@ importers:
'@t3-oss/env-core':
specifier: ^0.10.1
version: 0.10.1(typescript@5.5.3)(zod@3.23.8)
+ ai:
+ specifier: ^3.2.42
+ version: 3.2.42(zod@3.23.8)
bcrypt:
specifier: ^5.1.1
version: 5.1.1
@@ -552,6 +567,120 @@ importers:
packages:
+ /@ai-sdk/openai@0.0.40(zod@3.23.8):
+ resolution: {integrity: sha512-9Iq1UaBHA5ZzNv6j3govuKGXrbrjuWvZIgWNJv4xzXlDMHu9P9hnqlBr/Aiay54WwCuTVNhTzAUTfFgnTs2kbQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ zod: ^3.0.0
+ dependencies:
+ '@ai-sdk/provider': 0.0.14
+ '@ai-sdk/provider-utils': 1.0.5(zod@3.23.8)
+ zod: 3.23.8
+ dev: false
+
+ /@ai-sdk/provider-utils@1.0.5(zod@3.23.8):
+ resolution: {integrity: sha512-XfOawxk95X3S43arn2iQIFyWGMi0DTxsf9ETc6t7bh91RPWOOPYN1tsmS5MTKD33OGJeaDQ/gnVRzXUCRBrckQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ zod: ^3.0.0
+ peerDependenciesMeta:
+ zod:
+ optional: true
+ dependencies:
+ '@ai-sdk/provider': 0.0.14
+ eventsource-parser: 1.1.2
+ nanoid: 3.3.6
+ secure-json-parse: 2.7.0
+ zod: 3.23.8
+ dev: false
+
+ /@ai-sdk/provider@0.0.14:
+ resolution: {integrity: sha512-gaQ5Y033nro9iX1YUjEDFDRhmMcEiCk56LJdIUbX5ozEiCNCfpiBpEqrjSp/Gp5RzBS2W0BVxfG7UGW6Ezcrzg==}
+ engines: {node: '>=18'}
+ dependencies:
+ json-schema: 0.4.0
+ dev: false
+
+ /@ai-sdk/react@0.0.33(zod@3.23.8):
+ resolution: {integrity: sha512-HUDRx5iKxdSnfx9RoqNCL4bzO7FMBBWndjOhH+N/PU4cid5Xx+LRlI+rJGakv85nDAl8Y0mVYel22vP1UZ031g==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ react: ^18 || ^19 || >=18.x
+ zod: ^3.0.0
+ peerDependenciesMeta:
+ react:
+ optional: true
+ zod:
+ optional: true
+ dependencies:
+ '@ai-sdk/provider-utils': 1.0.5(zod@3.23.8)
+ '@ai-sdk/ui-utils': 0.0.23(zod@3.23.8)
+ swr: 2.2.5
+ zod: 3.23.8
+ dev: false
+
+ /@ai-sdk/solid@0.0.26(zod@3.23.8):
+ resolution: {integrity: sha512-kY9CJXYaZS57qi5Yc1hjkBtGwgEubkfn7P1CXYbY/wMpTkvlUaHw5JY2twMgG9qdq+uNWp1omZUVlVEkqZMqbA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ solid-js: ^1.7.7
+ peerDependenciesMeta:
+ solid-js:
+ optional: true
+ dependencies:
+ '@ai-sdk/provider-utils': 1.0.5(zod@3.23.8)
+ '@ai-sdk/ui-utils': 0.0.23(zod@3.23.8)
+ transitivePeerDependencies:
+ - zod
+ dev: false
+
+ /@ai-sdk/svelte@0.0.28(zod@3.23.8):
+ resolution: {integrity: sha512-n5MOV7UF/3wQvtGMUccMnoV+Xk524fVWzmPF9C0h1ZcS1oskutNqVbfZzFFoB2otD0/DBj2IS+rmHH4Dqc6D0g==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ svelte: ^3.0.0 || ^4.0.0
+ peerDependenciesMeta:
+ svelte:
+ optional: true
+ dependencies:
+ '@ai-sdk/provider-utils': 1.0.5(zod@3.23.8)
+ '@ai-sdk/ui-utils': 0.0.23(zod@3.23.8)
+ sswr: 2.1.0
+ transitivePeerDependencies:
+ - zod
+ dev: false
+
+ /@ai-sdk/ui-utils@0.0.23(zod@3.23.8):
+ resolution: {integrity: sha512-9KONrxwnoV9VyW9I3m9+cEi5IANvADeLuCe+oB3JzOobNKASwYwcQZ4X7no28DckfiJUmHk4gmPnsC3yfRoU5Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ zod: ^3.0.0
+ peerDependenciesMeta:
+ zod:
+ optional: true
+ dependencies:
+ '@ai-sdk/provider': 0.0.14
+ '@ai-sdk/provider-utils': 1.0.5(zod@3.23.8)
+ secure-json-parse: 2.7.0
+ zod: 3.23.8
+ dev: false
+
+ /@ai-sdk/vue@0.0.27(zod@3.23.8):
+ resolution: {integrity: sha512-pYksYRUtMdAceZRKg9M6Rh1M4uSKJpa+cm0CC3Q2CMufE9Tgs3eEMB5ZqdSlP00uOifL3h36O14Y9vQwW4x7uw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ vue: ^3.3.4
+ peerDependenciesMeta:
+ vue:
+ optional: true
+ dependencies:
+ '@ai-sdk/provider-utils': 1.0.5(zod@3.23.8)
+ '@ai-sdk/ui-utils': 0.0.23(zod@3.23.8)
+ swrv: 1.0.4
+ transitivePeerDependencies:
+ - zod
+ dev: false
+
/@alloc/quick-lru@5.2.0:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
@@ -1584,6 +1713,16 @@ packages:
engines: {node: '>=18.14.1'}
dev: false
+ /@hono/zod-validator@0.2.2(hono@4.5.3)(zod@3.23.8):
+ resolution: {integrity: sha512-dSDxaPV70Py8wuIU2QNpoVEIOSzSXZ/6/B/h4xA7eOMz7+AarKTSGV8E6QwrdcCbBLkpqfJ4Q2TmBO0eP1tCBQ==}
+ peerDependencies:
+ hono: '>=3.9.0'
+ zod: ^3.19.1
+ dependencies:
+ hono: 4.5.3
+ zod: 3.23.8
+ dev: false
+
/@humanwhocodes/config-array@0.11.14:
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
@@ -3337,6 +3476,19 @@ packages:
zod: 3.23.8
dev: false
+ /@t3-oss/env-core@0.10.1(typescript@5.5.4)(zod@3.23.8):
+ resolution: {integrity: sha512-GcKZiCfWks5CTxhezn9k5zWX3sMDIYf6Kaxy2Gx9YEQftFcz8hDRN56hcbylyAO3t4jQnQ5ifLawINsNgCDpOg==}
+ peerDependencies:
+ typescript: '>=5.0.0'
+ zod: ^3.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ typescript: 5.5.4
+ zod: 3.23.8
+ dev: false
+
/@t3-oss/env-nextjs@0.10.1(typescript@5.5.3)(zod@3.23.8):
resolution: {integrity: sha512-iy2qqJLnFh1RjEWno2ZeyTu0ufomkXruUsOZludzDIroUabVvHsrSjtkHqwHp1/pgPUzN3yBRHMILW162X7x2Q==}
peerDependencies:
@@ -3442,6 +3594,10 @@ packages:
'@types/node': 20.14.10
dev: true
+ /@types/diff-match-patch@1.0.36:
+ resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==}
+ dev: false
+
/@types/estree@1.0.5:
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
@@ -4124,6 +4280,47 @@ packages:
humanize-ms: 1.2.1
dev: true
+ /ai@3.2.42(zod@3.23.8):
+ resolution: {integrity: sha512-7tQels82AgIq8aj9Oj88RBMH/md7dOvZqoz2+08Q5WMlBt3atE6HdUTlhg5OdRH6YWfzDxplN/zjxKEYdtwqlg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ openai: ^4.42.0
+ react: ^18 || ^19 || >=18.x
+ sswr: ^2.1.0
+ svelte: ^3.0.0 || ^4.0.0
+ zod: ^3.0.0
+ peerDependenciesMeta:
+ openai:
+ optional: true
+ react:
+ optional: true
+ sswr:
+ optional: true
+ svelte:
+ optional: true
+ zod:
+ optional: true
+ dependencies:
+ '@ai-sdk/provider': 0.0.14
+ '@ai-sdk/provider-utils': 1.0.5(zod@3.23.8)
+ '@ai-sdk/react': 0.0.33(zod@3.23.8)
+ '@ai-sdk/solid': 0.0.26(zod@3.23.8)
+ '@ai-sdk/svelte': 0.0.28(zod@3.23.8)
+ '@ai-sdk/ui-utils': 0.0.23(zod@3.23.8)
+ '@ai-sdk/vue': 0.0.27(zod@3.23.8)
+ '@opentelemetry/api': 1.9.0
+ eventsource-parser: 1.1.2
+ json-schema: 0.4.0
+ jsondiffpatch: 0.6.0
+ nanoid: 3.3.6
+ secure-json-parse: 2.7.0
+ zod: 3.23.8
+ zod-to-json-schema: 3.22.5(zod@3.23.8)
+ transitivePeerDependencies:
+ - solid-js
+ - vue
+ dev: false
+
/ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
@@ -4144,6 +4341,7 @@ packages:
/ansi-styles@3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
+ requiresBuild: true
dependencies:
color-convert: 1.9.3
dev: true
@@ -4531,6 +4729,11 @@ packages:
supports-color: 7.2.0
dev: true
+ /chalk@5.3.0:
+ resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ dev: false
+
/check-error@1.0.3:
resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
dependencies:
@@ -4610,6 +4813,7 @@ packages:
/color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ requiresBuild: true
dependencies:
color-name: 1.1.3
dev: true
@@ -4622,6 +4826,7 @@ packages:
/color-name@1.1.3:
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+ requiresBuild: true
dev: true
/color-name@1.1.4:
@@ -4904,6 +5109,10 @@ packages:
/didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ /diff-match-patch@1.0.5:
+ resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==}
+ dev: false
+
/diff-sequences@29.6.3:
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5854,6 +6063,11 @@ packages:
engines: {node: '>=6'}
dev: true
+ /eventsource-parser@1.1.2:
+ resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==}
+ engines: {node: '>=14.18'}
+ dev: false
+
/execa@8.0.1:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
@@ -6237,6 +6451,7 @@ packages:
/has-flag@3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
+ requiresBuild: true
dev: true
/has-flag@4.0.0:
@@ -6757,6 +6972,10 @@ packages:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
+ /json-schema@0.4.0:
+ resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+ dev: false
+
/json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
@@ -6774,6 +6993,16 @@ packages:
hasBin: true
dev: true
+ /jsondiffpatch@0.6.0:
+ resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ dependencies:
+ '@types/diff-match-patch': 1.0.36
+ chalk: 5.3.0
+ diff-match-patch: 1.0.5
+ dev: false
+
/jsx-ast-utils@3.3.5:
resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
engines: {node: '>=4.0'}
@@ -7118,6 +7347,12 @@ packages:
object-assign: 4.1.1
thenify-all: 1.6.0
+ /nanoid@3.3.6:
+ resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: false
+
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -8378,6 +8613,14 @@ packages:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'}
+ /sswr@2.1.0:
+ resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==}
+ peerDependencies:
+ svelte: ^4.0.0 || ^5.0.0-next.0
+ dependencies:
+ swrev: 4.0.0
+ dev: false
+
/stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
dev: true
@@ -8580,6 +8823,7 @@ packages:
/supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
+ requiresBuild: true
dependencies:
has-flag: 3.0.0
dev: true
@@ -8595,6 +8839,15 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ /swr@2.2.5:
+ resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==}
+ peerDependencies:
+ react: ^16.11.0 || ^17.0.0 || ^18.0.0 || >=18.x
+ dependencies:
+ client-only: 0.0.1
+ use-sync-external-store: 1.2.2
+ dev: false
+
/swr@2.2.5(react@19.0.0-rc-378b305958-20240710):
resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==}
peerDependencies:
@@ -8605,6 +8858,16 @@ packages:
use-sync-external-store: 1.2.2(react@19.0.0-rc-378b305958-20240710)
dev: false
+ /swrev@4.0.0:
+ resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==}
+ dev: false
+
+ /swrv@1.0.4:
+ resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==}
+ peerDependencies:
+ vue: '>=3.2.26 < 4'
+ dev: false
+
/symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
dev: true
@@ -8948,7 +9211,6 @@ packages:
resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
engines: {node: '>=14.17'}
hasBin: true
- dev: true
/ufo@1.5.3:
resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==}
@@ -9092,6 +9354,12 @@ packages:
react: 18.3.0
dev: false
+ /use-sync-external-store@1.2.2:
+ resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=18.x
+ dev: false
+
/use-sync-external-store@1.2.2(react@19.0.0-rc-378b305958-20240710):
resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
peerDependencies:
@@ -9685,6 +9953,14 @@ packages:
engines: {node: '>=12.20'}
dev: true
+ /zod-to-json-schema@3.22.5(zod@3.23.8):
+ resolution: {integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q==}
+ peerDependencies:
+ zod: ^3.22.4
+ dependencies:
+ zod: 3.23.8
+ dev: false
+
/zod@3.23.8:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
dev: false
diff --git a/tools/typescript/base.json b/tools/typescript/base.json
index 9699f3b37..0208bda24 100644
--- a/tools/typescript/base.json
+++ b/tools/typescript/base.json
@@ -2,24 +2,24 @@
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Default",
"compilerOptions": {
+ "allowJs": true,
"declaration": false,
"declarationMap": false,
- "forceConsistentCasingInFileNames": true,
- "allowJs": true,
- "noEmit": true,
"esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
"incremental": false,
"isolatedModules": true,
"lib": ["es2022", "DOM", "DOM.Iterable", "esnext.asynciterable"],
- "moduleDetection": "force",
"module": "ESNext",
+ "moduleDetection": "force",
"moduleResolution": "node",
- "noUncheckedIndexedAccess": true,
+ "noEmit": true,
"noFallthroughCasesInSwitch": true,
+ "noUncheckedIndexedAccess": true,
+ "noUnusedLocals": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": true,
- "noUnusedLocals": true,
"target": "ES2022"
}
}