diff --git a/apps/web/package.json b/apps/web/package.json index 6c33317fc9..d7a746f9b9 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -111,6 +111,7 @@ "jotai": "2.13.1", "jsdom": "26.1.0", "json5": "2.2.3", + "jsonrepair": "3.13.0", "linkify-react": "4.3.2", "linkifyjs": "4.3.2", "lodash": "4.17.21", @@ -177,7 +178,7 @@ "cross-env": "7.0.3", "dotenv": "17.2.1", "postcss": "8.5.6", - "prisma": "6.15.0", + "prisma": "6.6.0", "serwist": "9.2.0", "tailwindcss": "3.4.17", "tsconfig": "workspace:*", diff --git a/apps/web/utils/ai/choose-rule/ai-choose-rule.ts b/apps/web/utils/ai/choose-rule/ai-choose-rule.ts index 6451798d38..44be194ae5 100644 --- a/apps/web/utils/ai/choose-rule/ai-choose-rule.ts +++ b/apps/web/utils/ai/choose-rule/ai-choose-rule.ts @@ -64,7 +64,14 @@ ${ ` } -Respond with a valid JSON object.`; +Respond with a valid JSON object: + +Example response format: +{ + "reason": "This email is a newsletter subscription", + "ruleName": "Newsletter", + "noMatchFound": false +}`; const prompt = `Select a rule to apply to this email that was sent to me: diff --git a/apps/web/utils/ai/rule/prompt-to-rules.ts b/apps/web/utils/ai/rule/prompt-to-rules.ts index 1742984c54..d438fa8711 100644 --- a/apps/web/utils/ai/rule/prompt-to-rules.ts +++ b/apps/web/utils/ai/rule/prompt-to-rules.ts @@ -82,39 +82,43 @@ You can use multiple conditions in a rule, but aim for simplicity. In most cases, you should use the "aiInstructions" and sometimes you will use other fields in addition. If a rule can be handled fully with static conditions, do so, but this is rarely possible. +IMPORTANT: You must return a JSON object. + When I get a newsletter, archive it and label it as "Newsletter" - [{ - "name": "Label Newsletters", - "condition": { - "aiInstructions": "Apply this rule to newsletters" - ${ - hasSmartCategories - ? `, - "categories": { - "categoryFilterType": "INCLUDE", - "categoryFilters": ["Newsletters"] - }, - "conditionalOperator": "OR"` - : "" - } - }, - "actions": [ - { - "type": "ARCHIVE" + { + "rules": [{ + "name": "Label Newsletters", + "condition": { + "aiInstructions": "Apply this rule to newsletters" + ${ + hasSmartCategories + ? `, + "categories": { + "categoryFilterType": "INCLUDE", + "categoryFilters": ["Newsletters"] + }, + "conditionalOperator": "OR"` + : "" + } }, - { - "type": "LABEL", - "fields": { - "label": "Newsletter" + "actions": [ + { + "type": "ARCHIVE" + }, + { + "type": "LABEL", + "fields": { + "label": "Newsletter" + } } - } - ] - }] + ] + }] + } @@ -123,26 +127,28 @@ If a rule can be handled fully with static conditions, do so, but this is rarely When someone mentions system outages or critical issues, forward to urgent-support@company.com and label as Urgent-Support - [{ - "name": "Forward Urgent Emails", - "condition": { - "aiInstructions": "Apply this rule to emails mentioning system outages or critical issues" - }, - "actions": [ - { - "type": "FORWARD", - "fields": { - "to": "urgent-support@company.com" - } + { + "rules": [{ + "name": "Forward Urgent Emails", + "condition": { + "aiInstructions": "Apply this rule to emails mentioning system outages or critical issues" }, - { - "type": "LABEL", - "fields": { - "label": "Urgent-Support" + "actions": [ + { + "type": "FORWARD", + "fields": { + "to": "urgent-support@company.com" + } + }, + { + "type": "LABEL", + "fields": { + "label": "Urgent-Support" + } } - } - ] - }] + ] + }] + } @@ -151,24 +157,26 @@ If a rule can be handled fully with static conditions, do so, but this is rarely Label all urgent emails from company.com as "Urgent" - [{ - "name": "Matt Urgent Emails", - "condition": { - "conditionalOperator": "AND", - "aiInstructions": "Apply this rule to urgent emails", - "static": { - "from": "@company.com" - } - }, - "actions": [ - { - "type": "LABEL", - "fields": { - "label": "Urgent" + { + "rules": [{ + "name": "Matt Urgent Emails", + "condition": { + "conditionalOperator": "AND", + "aiInstructions": "Apply this rule to urgent emails", + "static": { + "from": "@company.com" + } + }, + "actions": [ + { + "type": "LABEL", + "fields": { + "label": "Urgent" + } } - } - ] - }] + ] + }] + } @@ -184,20 +192,22 @@ If a rule can be handled fully with static conditions, do so, but this is rarely """ - [{ - "name": "Reply to Call Requests", - "condition": { - "aiInstructions": "Apply this rule to emails from people asking to set up a call" - }, - "actions": [ - { - "type": "REPLY", - "fields": { - "content": "Hi {{name}},\nThank you for your message.\nI'll respond within 2 hours.\nBest,\nAlice" + { + "rules": [{ + "name": "Reply to Call Requests", + "condition": { + "aiInstructions": "Apply this rule to emails from people asking to set up a call" + }, + "actions": [ + { + "type": "REPLY", + "fields": { + "content": "Hi {{name}},\nThank you for your message.\nI'll respond within 2 hours.\nBest,\nAlice" + } } - } - ] - }] + ] + }] + } diff --git a/apps/web/utils/llms/index.ts b/apps/web/utils/llms/index.ts index b30e9cbfce..02875e6316 100644 --- a/apps/web/utils/llms/index.ts +++ b/apps/web/utils/llms/index.ts @@ -12,6 +12,7 @@ import { type StreamTextOnFinishCallback, type StreamTextOnStepFinishCallback, } from "ai"; +import { jsonrepair } from "jsonrepair"; import type { LanguageModelV2 } from "@ai-sdk/provider"; import { saveAiUsage } from "@/utils/usage"; import type { UserAIFields } from "@/utils/llms/types"; @@ -134,8 +135,21 @@ export function createGenerateObject({ prompt: options.prompt?.slice(0, MAX_LOG_LENGTH), }); + if ( + !options.system?.includes("JSON") && + typeof options.prompt === "string" && + !options.prompt?.includes("JSON") + ) { + logger.warn("Missing JSON in prompt", { label }); + } + const result = await generateObject( { + experimental_repairText: async ({ text }) => { + logger.info("Repairing text", { label }); + const fixed = jsonrepair(text); + return fixed; + }, ...options, ...commonOptions, }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6ed3ce6181..9b435b90ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -198,7 +198,7 @@ importers: version: 4.0.2(react@19.1.1) '@prisma/client': specifier: 6.6.0 - version: 6.6.0(prisma@6.15.0(typescript@5.9.2))(typescript@5.9.2) + version: 6.6.0(prisma@6.6.0(typescript@5.9.2))(typescript@5.9.2) '@radix-ui/react-alert-dialog': specifier: 1.1.15 version: 1.1.15(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -403,6 +403,9 @@ importers: json5: specifier: 2.2.3 version: 2.2.3 + jsonrepair: + specifier: 3.13.0 + version: 3.13.0 linkify-react: specifier: 4.3.2 version: 4.3.2(linkifyjs@4.3.2)(react@19.1.1) @@ -597,8 +600,8 @@ importers: specifier: 8.5.6 version: 8.5.6 prisma: - specifier: 6.15.0 - version: 6.15.0(typescript@5.9.2) + specifier: 6.6.0 + version: 6.6.0(typescript@5.9.2) serwist: specifier: 9.2.0 version: 9.2.0(typescript@5.9.2) @@ -2795,23 +2798,23 @@ packages: typescript: optional: true - '@prisma/config@6.15.0': - resolution: {integrity: sha512-KMEoec9b2u6zX0EbSEx/dRpx1oNLjqJEBZYyK0S3TTIbZ7GEGoVyGyFRk4C72+A38cuPLbfQGQvgOD+gBErKlA==} + '@prisma/config@6.6.0': + resolution: {integrity: sha512-d8FlXRHsx72RbN8nA2QCRORNv5AcUnPXgtPvwhXmYkQSMF/j9cKaJg+9VcUzBRXGy9QBckNzEQDEJZdEOZ+ubA==} - '@prisma/debug@6.15.0': - resolution: {integrity: sha512-y7cSeLuQmyt+A3hstAs6tsuAiVXSnw9T55ra77z0nbNkA8Lcq9rNcQg6PI00by/+WnE/aMRJ/W7sZWn2cgIy1g==} + '@prisma/debug@6.6.0': + resolution: {integrity: sha512-DL6n4IKlW5k2LEXzpN60SQ1kP/F6fqaCgU/McgaYsxSf43GZ8lwtmXLke9efS+L1uGmrhtBUP4npV/QKF8s2ZQ==} - '@prisma/engines-version@6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb': - resolution: {integrity: sha512-a/46aK5j6L3ePwilZYEgYDPrhBQ/n4gYjLxT5YncUTJJNRnTCVjPF86QdzUOLRdYjCLfhtZp9aum90W0J+trrg==} + '@prisma/engines-version@6.6.0-53.f676762280b54cd07c770017ed3711ddde35f37a': + resolution: {integrity: sha512-JzRaQ5Em1fuEcbR3nUsMNYaIYrOT1iMheenjCvzZblJcjv/3JIuxXN7RCNT5i6lRkLodW5ojCGhR7n5yvnNKrw==} - '@prisma/engines@6.15.0': - resolution: {integrity: sha512-opITiR5ddFJ1N2iqa7mkRlohCZqVSsHhRcc29QXeldMljOf4FSellLT0J5goVb64EzRTKcIDeIsJBgmilNcKxA==} + '@prisma/engines@6.6.0': + resolution: {integrity: sha512-nC0IV4NHh7500cozD1fBoTwTD1ydJERndreIjpZr/S3mno3P6tm8qnXmIND5SwUkibNeSJMpgl4gAnlqJ/gVlg==} - '@prisma/fetch-engine@6.15.0': - resolution: {integrity: sha512-xcT5f6b+OWBq6vTUnRCc7qL+Im570CtwvgSj+0MTSGA1o9UDSKZ/WANvwtiRXdbYWECpyC3CukoG3A04VTAPHw==} + '@prisma/fetch-engine@6.6.0': + resolution: {integrity: sha512-Ohfo8gKp05LFLZaBlPUApM0M7k43a0jmo86YY35u1/4t+vuQH9mRGU7jGwVzGFY3v+9edeb/cowb1oG4buM1yw==} - '@prisma/get-platform@6.15.0': - resolution: {integrity: sha512-Jbb+Xbxyp05NSR1x2epabetHiXvpO8tdN2YNoWoA/ZsbYyxxu/CO/ROBauIFuMXs3Ti+W7N7SJtWsHGaWte9Rg==} + '@prisma/get-platform@6.6.0': + resolution: {integrity: sha512-3qCwmnT4Jh5WCGUrkWcc6VZaw0JY7eWN175/pcb5Z6FiLZZ3ygY93UX0WuV41bG51a6JN/oBH0uywJ90Y+V5eA==} '@prisma/instrumentation@6.14.0': resolution: {integrity: sha512-Po/Hry5bAeunRDq0yAQueKookW3glpP+qjjvvyOfm6dI2KG5/Y6Bgg3ahyWd7B0u2E+Wf9xRk2rtdda7ySgK1A==} @@ -5452,14 +5455,6 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - c12@3.1.0: - resolution: {integrity: sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==} - peerDependencies: - magicast: ^0.3.5 - peerDependenciesMeta: - magicast: - optional: true - cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -6208,10 +6203,6 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - deepmerge-ts@7.1.5: - resolution: {integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==} - engines: {node: '>=16.0.0'} - deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -6260,9 +6251,6 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destr@2.0.5: - resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -6345,10 +6333,6 @@ packages: resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} - dotenv@16.6.1: - resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} - engines: {node: '>=12'} - dotenv@17.2.1: resolution: {integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==} engines: {node: '>=12'} @@ -6378,9 +6362,6 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - effect@3.16.12: - resolution: {integrity: sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==} - ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} @@ -6420,10 +6401,6 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - empathic@2.0.0: - resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} - engines: {node: '>=14'} - encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -6666,10 +6643,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - fast-check@3.23.2: - resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} - engines: {node: '>=8.0.0'} - fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} @@ -6982,10 +6955,6 @@ packages: resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} engines: {node: '>= 14'} - giget@2.0.0: - resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} - hasBin: true - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -7700,6 +7669,10 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonrepair@3.13.0: + resolution: {integrity: sha512-5YRzlAQ7tuzV1nAJu3LvDlrKtBFIALHN2+a+I1MGJCt3ldRDBF/bZuvIPzae8Epot6KBXd0awRZZcuoeAsZ/mw==} + hasBin: true + jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} @@ -8472,9 +8445,6 @@ packages: engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead - node-fetch-native@1.6.7: - resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -8592,9 +8562,6 @@ packages: peerDependencies: rxjs: ^6.5 || ^7 - ohash@2.0.11: - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - ollama-ai-provider@1.2.0: resolution: {integrity: sha512-jTNFruwe3O/ruJeppI/quoOUxG7NA6blG3ZyQj3lei4+NnJo7bi3eIRWqlVpRlu/mbzbFXeJSBuYQWF6pzGKww==} engines: {node: '>=18'} @@ -8871,9 +8838,6 @@ packages: pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} @@ -9106,8 +9070,8 @@ packages: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} - prisma@6.15.0: - resolution: {integrity: sha512-E6RCgOt+kUVtjtZgLQDBJ6md2tDItLJNExwI0XJeBc1FKL+Vwb+ovxXxuok9r8oBgsOXBA33fGDuE/0qDdCWqQ==} + prisma@6.6.0: + resolution: {integrity: sha512-SYCUykz+1cnl6Ugd8VUvtTQq5+j1Q7C0CtzKPjQ8JyA2ALh0EEJkMCS+KgdnvKW1lrxjtjCyJSHOOT236mENYg==} engines: {node: '>=18.18'} hasBin: true peerDependencies: @@ -9243,9 +9207,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - pvtsutils@1.3.6: resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} @@ -9299,9 +9260,6 @@ packages: resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} engines: {node: '>= 0.8'} - rc9@2.1.2: - resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -13718,40 +13676,38 @@ snapshots: '@posthog/core@1.0.2': {} - '@prisma/client@6.6.0(prisma@6.15.0(typescript@5.9.2))(typescript@5.9.2)': + '@prisma/client@6.6.0(prisma@6.6.0(typescript@5.9.2))(typescript@5.9.2)': optionalDependencies: - prisma: 6.15.0(typescript@5.9.2) + prisma: 6.6.0(typescript@5.9.2) typescript: 5.9.2 - '@prisma/config@6.15.0': + '@prisma/config@6.6.0': dependencies: - c12: 3.1.0 - deepmerge-ts: 7.1.5 - effect: 3.16.12 - empathic: 2.0.0 + esbuild: 0.25.9 + esbuild-register: 3.6.0(esbuild@0.25.9) transitivePeerDependencies: - - magicast + - supports-color - '@prisma/debug@6.15.0': {} + '@prisma/debug@6.6.0': {} - '@prisma/engines-version@6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb': {} + '@prisma/engines-version@6.6.0-53.f676762280b54cd07c770017ed3711ddde35f37a': {} - '@prisma/engines@6.15.0': + '@prisma/engines@6.6.0': dependencies: - '@prisma/debug': 6.15.0 - '@prisma/engines-version': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb - '@prisma/fetch-engine': 6.15.0 - '@prisma/get-platform': 6.15.0 + '@prisma/debug': 6.6.0 + '@prisma/engines-version': 6.6.0-53.f676762280b54cd07c770017ed3711ddde35f37a + '@prisma/fetch-engine': 6.6.0 + '@prisma/get-platform': 6.6.0 - '@prisma/fetch-engine@6.15.0': + '@prisma/fetch-engine@6.6.0': dependencies: - '@prisma/debug': 6.15.0 - '@prisma/engines-version': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb - '@prisma/get-platform': 6.15.0 + '@prisma/debug': 6.6.0 + '@prisma/engines-version': 6.6.0-53.f676762280b54cd07c770017ed3711ddde35f37a + '@prisma/get-platform': 6.6.0 - '@prisma/get-platform@6.15.0': + '@prisma/get-platform@6.6.0': dependencies: - '@prisma/debug': 6.15.0 + '@prisma/debug': 6.6.0 '@prisma/instrumentation@6.14.0(@opentelemetry/api@1.9.0)': dependencies: @@ -16891,21 +16847,6 @@ snapshots: bytes@3.1.2: {} - c12@3.1.0: - dependencies: - chokidar: 4.0.3 - confbox: 0.2.2 - defu: 6.1.4 - dotenv: 16.6.1 - exsolve: 1.0.7 - giget: 2.0.0 - jiti: 2.4.2 - ohash: 2.0.11 - pathe: 2.0.3 - perfect-debounce: 1.0.0 - pkg-types: 2.3.0 - rc9: 2.1.2 - cac@6.7.14: {} call-bind-apply-helpers@1.0.2: @@ -17681,8 +17622,6 @@ snapshots: deep-extend@0.6.0: {} - deepmerge-ts@7.1.5: {} - deepmerge@4.3.1: {} defaults@1.0.4: @@ -17730,8 +17669,6 @@ snapshots: dequal@2.0.3: {} - destr@2.0.5: {} - destroy@1.2.0: {} detect-libc@2.0.4: @@ -17805,8 +17742,6 @@ snapshots: dotenv@16.5.0: {} - dotenv@16.6.1: {} - dotenv@17.2.1: {} dub@0.66.1: @@ -17849,11 +17784,6 @@ snapshots: ee-first@1.1.1: {} - effect@3.16.12: - dependencies: - '@standard-schema/spec': 1.0.0 - fast-check: 3.23.2 - ejs@3.1.10: dependencies: jake: 10.9.4 @@ -17880,8 +17810,6 @@ snapshots: emoji-regex@9.2.2: {} - empathic@2.0.0: {} - encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -18217,10 +18145,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - fast-check@3.23.2: - dependencies: - pure-rand: 6.1.0 - fast-decode-uri-component@1.0.1: {} fast-deep-equal@2.0.1: {} @@ -18572,15 +18496,6 @@ snapshots: transitivePeerDependencies: - supports-color - giget@2.0.0: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - defu: 6.1.4 - node-fetch-native: 1.6.7 - nypm: 0.6.1 - pathe: 2.0.3 - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -19419,6 +19334,8 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonrepair@3.13.0: {} + jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 @@ -20450,8 +20367,6 @@ snapshots: node-domexception@1.0.0: {} - node-fetch-native@1.6.7: {} - node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -20568,8 +20483,6 @@ snapshots: dependencies: rxjs: 7.8.2 - ohash@2.0.11: {} - ollama-ai-provider@1.2.0(zod@3.25.46): dependencies: '@ai-sdk/provider': 1.1.3 @@ -20860,8 +20773,6 @@ snapshots: pend@1.2.0: {} - perfect-debounce@1.0.0: {} - performance-now@2.1.0: {} pg-int8@1.0.1: {} @@ -21076,14 +20987,15 @@ snapshots: dependencies: parse-ms: 2.1.0 - prisma@6.15.0(typescript@5.9.2): + prisma@6.6.0(typescript@5.9.2): dependencies: - '@prisma/config': 6.15.0 - '@prisma/engines': 6.15.0 + '@prisma/config': 6.6.0 + '@prisma/engines': 6.6.0 optionalDependencies: + fsevents: 2.3.3 typescript: 5.9.2 transitivePeerDependencies: - - magicast + - supports-color prismjs@1.27.0: {} @@ -21263,8 +21175,6 @@ snapshots: punycode@2.3.1: {} - pure-rand@6.1.0: {} - pvtsutils@1.3.6: dependencies: tslib: 2.8.1 @@ -21315,11 +21225,6 @@ snapshots: iconv-lite: 0.6.3 unpipe: 1.0.0 - rc9@2.1.2: - dependencies: - defu: 6.1.4 - destr: 2.0.5 - rc@1.2.8: dependencies: deep-extend: 0.6.0 diff --git a/version.txt b/version.txt index 356db83e0b..22cafc9ffc 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -v2.9.17 +v2.9.18